Add account balance anchors

This commit is contained in:
Lars Nolden
2026-09-14 13:32:18 +02:00
parent 83bb86bc93
commit 71e95917da
15 changed files with 440 additions and 23 deletions
+14 -1
View File
@@ -649,7 +649,20 @@ exists to be compared with the figures a bank or broker shows on its own screen.
A cash balance equals the real balance only when the journal holds that
account's complete history. A broker export does; a date-windowed bank statement
does not.
does not. A connected cash account closes that gap with a balance anchor: after
its first successful sync, the bank's booked (CLBD) balance is captured once,
verbatim, with the day it was true, and stored on the account (anchor_balance,
anchor_date in accounts.finance). The start balance - the money from before the
recorded rows - is derived as the anchor less every movement booked through the
anchor day, and reads as the first line of the account's flow breakdown. Because
the bank's figure is stored rather than the derivation, importing older history
later corrects the start balance by itself. An available or expected balance is
never anchored: it includes pending amounts with no booked fact to subtract. The
anchor is set once and never moved by later syncs; clear it in the account's
edit form and the next successful sync captures a fresh one. Running-balance
checks are only judged after the anchor day, where the balance is observable.
Anchors are refused on investment accounts, whose broker exports carry their
complete history.
Checks that fail mean the journal disagrees with itself: row arithmetic, cash
never negative, holdings never negative. A negative holding means a position was