94: fix 0.19 regression showing wrong total balance with balance --flat
and distinguish better between account depth and item indent level
This commit is contained in:
parent
00b4efffc9
commit
f54e3299b9
@ -531,7 +531,7 @@ type AccountsReport = ([AccountsReportItem] -- line items, one per account
|
||||
)
|
||||
type AccountsReportItem = (AccountName -- full account name
|
||||
,AccountName -- short account name for display (the leaf name, prefixed by any boring parents immediately above)
|
||||
,Int -- how many steps to indent this account (0-based account depth excluding boring parents)
|
||||
,Int -- how many steps to indent this account (0 with --flat, otherwise the 0-based account depth excluding boring parents)
|
||||
,MixedAmount) -- account balance, includes subs unless --flat is present
|
||||
|
||||
-- | Select accounts, and get their balances at the end of the selected
|
||||
@ -552,7 +552,7 @@ accountsReport opts q j = (items, total)
|
||||
markboring | no_elide_ opts = id
|
||||
| otherwise = markBoringParentAccounts
|
||||
items = map (accountsReportItem opts) accts'
|
||||
total = sum [amt | (_,_,depth,amt) <- items, depth==0]
|
||||
total = sum [amt | (a,_,_,amt) <- items, accountNameLevel a == 1]
|
||||
|
||||
-- | In an account tree with zero-balance leaves removed, mark the
|
||||
-- elidable parent accounts (those with one subaccount and no balance
|
||||
@ -565,12 +565,12 @@ markBoringParentAccounts = tieAccountParents . mapAccounts mark
|
||||
|
||||
accountsReportItem :: ReportOpts -> Account -> AccountsReportItem
|
||||
accountsReportItem opts a@Account{aname=name, aibalance=ibal}
|
||||
| flat_ opts = (name, name, 0, ibal)
|
||||
| otherwise = (name, elidedname, depth, ibal)
|
||||
| flat_ opts = (name, name, 0, ibal)
|
||||
| otherwise = (name, elidedname, indent, ibal)
|
||||
where
|
||||
elidedname = accountNameFromComponents (adjacentboringparentnames ++ [accountLeafName name])
|
||||
adjacentboringparentnames = reverse $ map (accountLeafName.aname) $ takeWhile aboring $ parents
|
||||
depth = length $ filter (not.aboring) parents
|
||||
indent = length $ filter (not.aboring) parents
|
||||
parents = init $ parentAccounts a
|
||||
|
||||
|
||||
|
||||
31
tests/94.test
Normal file
31
tests/94.test
Normal file
@ -0,0 +1,31 @@
|
||||
# issue 94: total balance should be that of top-level accounts, with and without --flat
|
||||
# 1.
|
||||
hledgerdev -f - balance
|
||||
<<<
|
||||
1/1
|
||||
(a) 1
|
||||
|
||||
1/1
|
||||
(a:aa) 1
|
||||
>>>
|
||||
2 a
|
||||
1 aa
|
||||
--------------------
|
||||
2
|
||||
>>>= 0
|
||||
|
||||
# 2.
|
||||
hledgerdev -f - balance --flat
|
||||
<<<
|
||||
1/1
|
||||
(a) 1
|
||||
|
||||
1/1
|
||||
(a:aa) 1
|
||||
>>>
|
||||
2 a
|
||||
1 a:aa
|
||||
--------------------
|
||||
2
|
||||
>>>= 0
|
||||
|
||||
Loading…
Reference in New Issue
Block a user