31b1f0c6eb
Implement budget management with CRUD operations and a Budget vs Actual financial report that supports both Profit & Loss and Balance Sheet budget types. Budget CRUD: - Budgets and BudgetEntries models with Objection.js - Create, edit, delete, activate, close, bulk-delete operations - Budget validators (date range, account existence, status transitions) - Event-driven architecture with lifecycle hooks - CASL permission guards and Swagger API docs Budget vs Actual Report: - Dual-mode report driven by budget.budgetType (P&L or BS) - Reuses existing P&L and Balance Sheet schemas via import - Computes budget, actual, variance, and variance percentage per account - Supports date period breakdowns (monthly, quarterly, annual) - P&L mode: period activity actuals from accounts_transactions - BS mode: cumulative closing balance actuals - Follows FinancialStatements mixin architecture (FinancialSheet, FinancialSheetStructure, FinancialEvaluateEquation, etc.) - Fully typed with no @ts-nocheck directives - Named exports only (no default exports)