diff options
| author | Calvin Morrison <calvin@pobox.com> | 2025-12-27 19:26:21 -0500 |
|---|---|---|
| committer | Calvin Morrison <calvin@pobox.com> | 2025-12-27 19:26:21 -0500 |
| commit | 5cf763ea3ba2a89acfa5f24422cc71e0ff7fb35b (patch) | |
| tree | ef3541cf3650eb14a46b2a54f1b63b1351c08082 /cashflow.h | |
| parent | 5e9b299dfe95a7f99f029802089c047a392eee3a (diff) | |
Add reconciliation system with checkpoints and adjustments
- Add Reconciliation transaction type that appears as visible rows
- Reconciliation checkpoints show expected vs calculated balance
- Red background if out of balance, green if balanced
- Description shows balance status (Balanced or Out of balance by .XX)
- Create Adjustment button appears when reconciliation is out of balance
- Adjustment transactions automatically created to match bank balance
- Reconciliations always sort last on their date
- Auto-recalculate all reconciliations when any transaction changes
- Persistent projection months setting (1-24 months, default 3)
- Persistent date range between sessions
- Fix projection regeneration to start from rule start date
- Fix duplicate projections when converting to actuals
- Grey out irrelevant fields when Reconciliation type selected
Diffstat (limited to 'cashflow.h')
| -rw-r--r-- | cashflow.h | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -36,6 +36,7 @@ private slots: void onPreferences(); void onRecurringRuleChanged(); void onTransactionDateChanged(); + void onCreateAdjustment(); private: Ui::CashFlow *ui; @@ -46,7 +47,6 @@ private: QFont currentAmountFont; int weekStartDay; QString currentFilePath; - Transaction currentProjectedTransaction; // For converting projections to actuals enum PeriodType { Daily, @@ -61,7 +61,6 @@ private: void refreshRecurringTable(); void calculateAndDisplayBalance(); QList<Transaction> getAllTransactionsInRange(); - QList<Transaction> generateProjectedTransactions(); void clearTransactionEntry(); void loadTransactionToEntry(const Transaction &t); void clearRecurringEntry(); @@ -73,6 +72,8 @@ private: void updateAmountColors(); void loadSettings(); QString formatCurrency(double amount) const; + double calculateBalanceUpTo(const QDate &date, const QString &account); + void recalculateAllReconciliations(); bool openDatabase(const QString &filePath); void populateRecurringRulesCombo(); void updateOccurrenceKey(); |
