refactor compoundBalanceCommandMultiColumnReport etc.
This commit is contained in:
parent
9d1ef30ecb
commit
f49756231a
@ -185,10 +185,10 @@ compoundBalanceCommandSingleColumnReport
|
|||||||
-> String
|
-> String
|
||||||
-> (Journal -> Query)
|
-> (Journal -> Query)
|
||||||
-> ([String], Sum MixedAmount)
|
-> ([String], Sum MixedAmount)
|
||||||
compoundBalanceCommandSingleColumnReport ropts userq j subreporttitle subreportq =
|
compoundBalanceCommandSingleColumnReport ropts userq j subreporttitle subreportqfn =
|
||||||
([subreportstr], Sum total)
|
([subreportstr], Sum total)
|
||||||
where
|
where
|
||||||
q = And [subreportq j, userq]
|
q = And [subreportqfn j, userq]
|
||||||
r@(_,total)
|
r@(_,total)
|
||||||
-- XXX For --historical/--cumulative, we must use singleBalanceReport;
|
-- XXX For --historical/--cumulative, we must use singleBalanceReport;
|
||||||
-- otherwise we use balanceReport -- because it supports eliding boring parents.
|
-- otherwise we use balanceReport -- because it supports eliding boring parents.
|
||||||
@ -198,7 +198,7 @@ compoundBalanceCommandSingleColumnReport ropts userq j subreporttitle subreportq
|
|||||||
subreportstr = intercalate "\n" [subreporttitle <> ":", balanceReportAsText ropts r]
|
subreportstr = intercalate "\n" [subreporttitle <> ":", balanceReportAsText ropts r]
|
||||||
|
|
||||||
-- | Run one subreport for a compound balance command in multi-column mode.
|
-- | Run one subreport for a compound balance command in multi-column mode.
|
||||||
-- Currently this returns the table of rendered balance amounts, including the
|
-- Currently this returns a table of rendered balance amounts, including the
|
||||||
-- totals row; the totals row again, as mixedamounts; and the grand total.
|
-- totals row; the totals row again, as mixedamounts; and the grand total.
|
||||||
-- The first two are wrapped in a list and the third in a Sum, for easy
|
-- The first two are wrapped in a list and the third in a Sum, for easy
|
||||||
-- monoidal combining.
|
-- monoidal combining.
|
||||||
@ -209,16 +209,18 @@ compoundBalanceCommandMultiColumnReport
|
|||||||
-> String
|
-> String
|
||||||
-> (Journal -> Query)
|
-> (Journal -> Query)
|
||||||
-> ([Table String String MixedAmount], [[MixedAmount]], Sum MixedAmount)
|
-> ([Table String String MixedAmount], [[MixedAmount]], Sum MixedAmount)
|
||||||
compoundBalanceCommandMultiColumnReport ropts userq j subreporttitle subreportq =
|
compoundBalanceCommandMultiColumnReport ropts userq j subreporttitle subreportqfn =
|
||||||
([tabl], [coltotals], Sum tot)
|
([tabl], [coltotals], Sum tot)
|
||||||
where
|
where
|
||||||
|
-- disable totals row if there's just one section and --no-total
|
||||||
|
-- force --empty to ensure same columns in all sections, or something
|
||||||
ropts' = ropts { no_total_ = singlesection && no_total_ ropts, empty_ = True }
|
ropts' = ropts { no_total_ = singlesection && no_total_ ropts, empty_ = True }
|
||||||
where
|
where
|
||||||
singlesection = "Cash" `isPrefixOf` subreporttitle -- TODO temp
|
singlesection = "Cash" `isPrefixOf` subreporttitle -- TODO temp
|
||||||
q = And [subreportq j, userq]
|
|
||||||
-- run the report
|
-- run the report
|
||||||
|
q = And [subreportqfn j, userq]
|
||||||
MultiBalanceReport (dates, rows, (coltotals,tot,avg)) = multiBalanceReport ropts' q j
|
MultiBalanceReport (dates, rows, (coltotals,tot,avg)) = multiBalanceReport ropts' q j
|
||||||
-- maybe filter all-zero rows from the report
|
-- if user didn't specify --empty, now remove the all-zero rows
|
||||||
r = MultiBalanceReport (dates, rows', (coltotals, tot, avg))
|
r = MultiBalanceReport (dates, rows', (coltotals, tot, avg))
|
||||||
where
|
where
|
||||||
rows' | empty_ ropts = rows
|
rows' | empty_ ropts = rows
|
||||||
@ -226,6 +228,6 @@ compoundBalanceCommandMultiColumnReport ropts userq j subreporttitle subreportq
|
|||||||
where
|
where
|
||||||
emptyRow (_,_,_,amts,_,_) = all isZeroMixedAmount amts
|
emptyRow (_,_,_,amts,_,_) = all isZeroMixedAmount amts
|
||||||
-- convert to a table for rendering
|
-- convert to a table for rendering
|
||||||
Table hLeft hTop dat = balanceReportAsTable ropts' r
|
Table lefthdrs tophdrs cells = balanceReportAsTable ropts' r
|
||||||
-- tweak the table layout
|
-- tweak the table layout
|
||||||
tabl = Table (T.Group SingleLine [Header subreporttitle, hLeft]) hTop ([]:dat)
|
tabl = Table (T.Group SingleLine [Header subreporttitle, lefthdrs]) tophdrs ([]:cells)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user