From 5cf763ea3ba2a89acfa5f24422cc71e0ff7fb35b Mon Sep 17 00:00:00 2001 From: Calvin Morrison Date: Sat, 27 Dec 2025 19:26:21 -0500 Subject: 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 --- cashflow.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'cashflow.h') diff --git a/cashflow.h b/cashflow.h index b75d62b..f76e11f 100644 --- a/cashflow.h +++ b/cashflow.h @@ -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 getAllTransactionsInRange(); - QList 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(); -- cgit v1.2.3