1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-08-05 05:25:24 +02:00

Budgeting V1 (#1609)

* Budgeting V1

* Basic UI template

* Fully scaffolded budgeting v1

* Basic working budget

* Finalize donut chart for budgets

* Allow categorization of loan payments for budget

* Include loan payments in incomes_and_expenses scope

* Add budget allocations progress

* Empty states

* Clean up budget methods

* Category aggregation queries

* Handle overage scenarios in form

* Finalize budget donut chart controller

* Passing tests

* Fix allocation naming

* Add income category migration

* Native support for uncategorized budget category

* Formatting

* Fix subcategory sort order, padding

* Fix calculation for category rollups in budget
This commit is contained in:
Zach Gollwitzer 2025-01-16 14:36:37 -05:00 committed by GitHub
parent 413ec6cbed
commit 195ec85d96
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
61 changed files with 2044 additions and 140 deletions

View file

@ -0,0 +1,15 @@
class CreateBudgets < ActiveRecord::Migration[7.2]
def change
create_table :budgets, id: :uuid do |t|
t.references :family, null: false, foreign_key: true, type: :uuid
t.date :start_date, null: false
t.date :end_date, null: false
t.decimal :budgeted_spending, precision: 19, scale: 4
t.decimal :expected_income, precision: 19, scale: 4
t.string :currency, null: false
t.timestamps
end
add_index :budgets, %i[family_id start_date end_date], unique: true
end
end

View file

@ -0,0 +1,13 @@
class CreateBudgetCategories < ActiveRecord::Migration[7.2]
def change
create_table :budget_categories, id: :uuid do |t|
t.references :budget, null: false, foreign_key: true, type: :uuid
t.references :category, null: false, foreign_key: true, type: :uuid
t.decimal :budgeted_spending, null: false, precision: 19, scale: 4
t.string :currency, null: false
t.timestamps
end
add_index :budget_categories, %i[budget_id category_id], unique: true
end
end

View file

@ -0,0 +1,17 @@
class CategoryClassification < ActiveRecord::Migration[7.2]
def change
add_column :categories, :classification, :string, null: false, default: "expense"
add_column :categories, :lucide_icon, :string
# Attempt to update existing user categories that are likely to be income
reversible do |dir|
dir.up do
execute <<-SQL
UPDATE categories
SET classification = 'income'
WHERE lower(name) in ('income', 'incomes', 'other income', 'other incomes');
SQL
end
end
end
end