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:
parent
413ec6cbed
commit
195ec85d96
61 changed files with 2044 additions and 140 deletions
15
db/migrate/20250108182147_create_budgets.rb
Normal file
15
db/migrate/20250108182147_create_budgets.rb
Normal 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
|
13
db/migrate/20250108200055_create_budget_categories.rb
Normal file
13
db/migrate/20250108200055_create_budget_categories.rb
Normal 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
|
17
db/migrate/20250110012347_category_classification.rb
Normal file
17
db/migrate/20250110012347_category_classification.rb
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue