;lib: cleanups
This commit is contained in:
parent
eeb178f86a
commit
d738ca8c60
@ -115,7 +115,7 @@ multiBalanceReportWith ropts q j priceoracle = report
|
|||||||
colps = dbg'' "colps" $ getPostingsByColumn ropts reportq j reportspan
|
colps = dbg'' "colps" $ getPostingsByColumn ropts reportq j reportspan
|
||||||
colspans = dbg "colspans" $ M.keys colps
|
colspans = dbg "colspans" $ M.keys colps
|
||||||
|
|
||||||
-- Postprocess the report, negating balances and taking percentages if needed
|
-- Generate and postprocess the report, negating balances and taking percentages if needed
|
||||||
report = dbg' "report" $ generateMultiBalanceReport ropts reportq j priceoracle reportspan colspans colps
|
report = dbg' "report" $ generateMultiBalanceReport ropts reportq j priceoracle reportspan colspans colps
|
||||||
|
|
||||||
-- | Generate a compound balance report from a list of CBCSubreportSpec. This
|
-- | Generate a compound balance report from a list of CBCSubreportSpec. This
|
||||||
@ -280,21 +280,8 @@ calculateColSpans ropts reportspan days =
|
|||||||
matchedspan = dbg "matchedspan" $ daysSpan days
|
matchedspan = dbg "matchedspan" $ daysSpan days
|
||||||
|
|
||||||
|
|
||||||
-- | Calculate account balance changes in each column.
|
-- | Gather the account balance changes into a regular matrix
|
||||||
--
|
-- including the accounts from all columns.
|
||||||
-- In each column, gather the accounts that have postings and their change amount.
|
|
||||||
acctChangesFromPostings :: ReportOpts -> Query -> [Posting] -> HashMap ClippedAccountName Account
|
|
||||||
acctChangesFromPostings ropts q ps = HM.fromList [(aname a, a) | a <- as]
|
|
||||||
where
|
|
||||||
as = filterAccounts . drop 1 $ accountsFromPostings ps
|
|
||||||
filterAccounts = case accountlistmode_ ropts of
|
|
||||||
ALTree -> filter ((depthq `matchesAccount`) . aname) -- exclude deeper balances
|
|
||||||
ALFlat -> clipAccountsAndAggregate (queryDepth depthq) . -- aggregate deeper balances at the depth limit.
|
|
||||||
filter ((0<) . anumpostings)
|
|
||||||
depthq = dbg "depthq" $ filterQuery queryIsDepth q
|
|
||||||
|
|
||||||
-- | Gather the account balance changes into a regular matrix including the accounts
|
|
||||||
-- from all columns
|
|
||||||
calculateAccountChanges :: ReportOpts -> Query -> [DateSpan]
|
calculateAccountChanges :: ReportOpts -> Query -> [DateSpan]
|
||||||
-> Map DateSpan [Posting]
|
-> Map DateSpan [Posting]
|
||||||
-> HashMap ClippedAccountName (Map DateSpan Account)
|
-> HashMap ClippedAccountName (Map DateSpan Account)
|
||||||
@ -310,6 +297,20 @@ calculateAccountChanges ropts q colspans colps
|
|||||||
|
|
||||||
elided = HM.singleton "..." $ M.fromList [(span, nullacct) | span <- colspans]
|
elided = HM.singleton "..." $ M.fromList [(span, nullacct) | span <- colspans]
|
||||||
|
|
||||||
|
-- | Given a set of postings, eg for a single report column, gather
|
||||||
|
-- the accounts that have postings and calculate the change amount for
|
||||||
|
-- each. Accounts and amounts will be depth-clipped appropriately if
|
||||||
|
-- a depth limit is in effect.
|
||||||
|
acctChangesFromPostings :: ReportOpts -> Query -> [Posting] -> HashMap ClippedAccountName Account
|
||||||
|
acctChangesFromPostings ropts q ps = HM.fromList [(aname a, a) | a <- as]
|
||||||
|
where
|
||||||
|
as = filterAccounts . drop 1 $ accountsFromPostings ps
|
||||||
|
filterAccounts = case accountlistmode_ ropts of
|
||||||
|
ALTree -> filter ((depthq `matchesAccount`) . aname) -- exclude deeper balances
|
||||||
|
ALFlat -> clipAccountsAndAggregate (queryDepth depthq) . -- aggregate deeper balances at the depth limit.
|
||||||
|
filter ((0<) . anumpostings)
|
||||||
|
depthq = dbg "depthq" $ filterQuery queryIsDepth q
|
||||||
|
|
||||||
-- | Accumulate and value amounts, as specified by the report options.
|
-- | Accumulate and value amounts, as specified by the report options.
|
||||||
--
|
--
|
||||||
-- Makes sure all report columns have an entry.
|
-- Makes sure all report columns have an entry.
|
||||||
@ -358,7 +359,7 @@ accumValueAmounts ropts j priceoracle colspans startbals acctchanges =
|
|||||||
zeros = M.fromList [(span, nullacct) | span <- colspans]
|
zeros = M.fromList [(span, nullacct) | span <- colspans]
|
||||||
|
|
||||||
|
|
||||||
-- | Group a date-separated list of postings into a regular matrix with rows
|
-- | Lay out a set of postings grouped by date span into a regular matrix with rows
|
||||||
-- given by AccountName and columns by DateSpan, then generate a MultiBalanceReport
|
-- given by AccountName and columns by DateSpan, then generate a MultiBalanceReport
|
||||||
-- from the columns.
|
-- from the columns.
|
||||||
generateMultiBalanceReport :: ReportOpts -> Query -> Journal -> PriceOracle
|
generateMultiBalanceReport :: ReportOpts -> Query -> Journal -> PriceOracle
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user