## Summary Adds **catch-all budgets** — a budget flagged `is_catch_all` absorbs every expense-category transaction not already claimed by another (non-catch-all) budget, so out-of-budget spending is still tracked. ## Changes - Migration: `is_catch_all` boolean (default false) on `budgets`. - `Budget` model: fillable + boolean cast. - `BudgetTransactionService`: a catch-all budget matches expense transactions whose `category_id` is not claimed by any non-catch-all budget; period assignment mirrors the same rule. - `BudgetController`: supports the flag. ## Notes - Pre-existing WIP committed as-is; CI is the validation gate. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: Víctor Falcón <victoor89@gmail.com> |
||
|---|---|---|
| .. | ||
| factories | ||
| migrations | ||
| seeders | ||
| .gitignore | ||