mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-27 04:13:11 +03:00
;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
|
||||
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
|
||||
|
||||
-- | Generate a compound balance report from a list of CBCSubreportSpec. This
|
||||
@ -280,21 +280,8 @@ calculateColSpans ropts reportspan days =
|
||||
matchedspan = dbg "matchedspan" $ daysSpan days
|
||||
|
||||
|
||||
-- | Calculate account balance changes in each column.
|
||||
--
|
||||
-- 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
|
||||
-- | Gather the account balance changes into a regular matrix
|
||||
-- including the accounts from all columns.
|
||||
calculateAccountChanges :: ReportOpts -> Query -> [DateSpan]
|
||||
-> Map DateSpan [Posting]
|
||||
-> HashMap ClippedAccountName (Map DateSpan Account)
|
||||
@ -310,6 +297,20 @@ calculateAccountChanges ropts q colspans colps
|
||||
|
||||
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.
|
||||
--
|
||||
-- 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]
|
||||
|
||||
|
||||
-- | 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
|
||||
-- from the columns.
|
||||
generateMultiBalanceReport :: ReportOpts -> Query -> Journal -> PriceOracle
|
||||
|
Loading…
Reference in New Issue
Block a user