lib: more history awareness for account transactions report #392
The account transactions report (and eg hledger-ui's register screen) no longer aborts showing historical balances when -E/--empty/nonzero mode or cur: are in effect.
This commit is contained in:
parent
974b1e3be0
commit
156922e419
@ -26,6 +26,7 @@ module Hledger.Query (
|
||||
queryIsSym,
|
||||
queryIsReal,
|
||||
queryIsStatus,
|
||||
queryIsEmpty,
|
||||
queryStartDate,
|
||||
queryEndDate,
|
||||
queryDateSpan,
|
||||
@ -480,6 +481,10 @@ queryIsStatus :: Query -> Bool
|
||||
queryIsStatus (Status _) = True
|
||||
queryIsStatus _ = False
|
||||
|
||||
queryIsEmpty :: Query -> Bool
|
||||
queryIsEmpty (Empty _) = True
|
||||
queryIsEmpty _ = False
|
||||
|
||||
-- | Does this query specify a start date and nothing else (that would
|
||||
-- filter postings prior to the date) ?
|
||||
-- When the flag is true, look for a starting secondary date instead.
|
||||
|
||||
@ -149,9 +149,9 @@ accountTransactionsReport opts j reportq thisacctq = (label, items)
|
||||
|
||||
-- starting balance: if we are filtering by a start date and nothing else,
|
||||
-- this is the sum of the (possibly realness or status-filtered) postings
|
||||
-- to this account before that date; otherwise zero.
|
||||
-- to this account before that date; otherwise start from zero.
|
||||
(startbal,label) | queryIsNull q = (nullmixedamt, balancelabel)
|
||||
| queryIsStartDateOnly (date2_ opts) q = (sumPostings priorps, balancelabel)
|
||||
| queryIsStartBalancePreserving opts q = (sumPostings priorps, balancelabel)
|
||||
| otherwise = (nullmixedamt, totallabel)
|
||||
where
|
||||
priorps = -- ltrace "priorps" $
|
||||
@ -165,6 +165,20 @@ accountTransactionsReport opts j reportq thisacctq = (label, items)
|
||||
items = reverse $ -- see also registerChartHtml
|
||||
accountTransactionsReportItems q thisacctq startbal negate ts
|
||||
|
||||
-- Assuming this query specifies a start date, if we switch that to
|
||||
-- an end date, will the resulting query calculate an accurate
|
||||
-- starting balance ?
|
||||
-- XXX WIP, probably misses many balance-preserving cases,
|
||||
-- not sure how this should work.
|
||||
queryIsStartBalancePreserving :: ReportOpts -> Query -> Bool
|
||||
queryIsStartBalancePreserving opts q =
|
||||
queryIsStartDateOnly (date2_ opts) $
|
||||
filterQuery (\q -> not (
|
||||
queryIsEmpty q
|
||||
|| queryIsSym q
|
||||
-- || queryIsReal q))
|
||||
)) q
|
||||
|
||||
totallabel = "Running Total"
|
||||
balancelabel = "Historical Balance"
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user