allow --depth=0 in summarised register reports, to aggregate top-level accounts

This commit is contained in:
Simon Michael 2008-12-04 20:37:03 +00:00
parent ecd7575b5e
commit 63999d36fe
2 changed files with 18 additions and 22 deletions

View File

@ -78,11 +78,12 @@ summariseTransactionsInDateSpan (DateSpan b e) entryno depth showempty ts
| otherwise = filter (not . isZeroMixedAmount . amount) summaryts | otherwise = filter (not . isZeroMixedAmount . amount) summaryts
-- aggregate balances by account, like cacheLedger: -- aggregate balances by account, like cacheLedger:
anames = sort $ nub $ map account ts anames = sort $ nub $ map account ts
allnames = expandAccountNames anames allnames = expandAccountNames anames ++ [""]
-- from cacheLedger: -- from cacheLedger:
txnmap = Map.union (transactionsByAccount ts) (Map.fromList [(a,[]) | a <- allnames]) txnmap = Map.union (transactionsByAccount ts) (Map.fromList [(a,[]) | a <- allnames])
txnsof = (txnmap !) -- a's txns txnsof = (txnmap !) -- a's txns
subacctsof a = filter (a `isAccountNamePrefixOf`) anames -- a plus any subaccounts isunder a b = null a || a `isAccountNamePrefixOf` b
subacctsof a = filter (isunder a) anames -- a plus any subaccounts
subtxnsof a = concat [txnsof a | a <- [a] ++ subacctsof a] -- a's and subaccounts' txns subtxnsof a = concat [txnsof a | a <- [a] ++ subacctsof a] -- a's and subaccounts' txns
inclusivebalmap = Map.union -- subaccount-including balances for all accounts inclusivebalmap = Map.union -- subaccount-including balances for all accounts
(Map.fromList [(a,(sumTransactions $ subtxnsof a)) | a <- allnames]) (Map.fromList [(a,(sumTransactions $ subtxnsof a)) | a <- allnames])

View File

@ -194,36 +194,31 @@ misc_tests = TestList [
nulltxn{date=parsedate "2008/01/01",description="- 2008/12/31"} nulltxn{date=parsedate "2008/01/01",description="- 2008/12/31"}
] ]
("2008/01/01","2009/01/01",0,Nothing,False,[ let ts = [nulltxn{description="desc",account="expenses:food:groceries",amount=Mixed [dollars 1]}
nulltxn{description="desc",account="expenses:food:groceries",amount=Mixed [dollars 1]} ,nulltxn{description="desc",account="expenses:food:dining", amount=Mixed [dollars 2]}
,nulltxn{description="desc",account="expenses:food:dining", amount=Mixed [dollars 2]} ,nulltxn{description="desc",account="expenses:food", amount=Mixed [dollars 4]}
,nulltxn{description="desc",account="expenses:food", amount=Mixed [dollars 4]} ,nulltxn{description="desc",account="expenses:food:dining", amount=Mixed [dollars 8]}
,nulltxn{description="desc",account="expenses:food:dining", amount=Mixed [dollars 8]} ]
]) `gives` ("2008/01/01","2009/01/01",0,Nothing,False,ts) `gives`
[ [
nulltxn{date=parsedate "2008/01/01",description="- 2008/12/31",account="expenses:food", amount=Mixed [dollars 4]} nulltxn{date=parsedate "2008/01/01",description="- 2008/12/31",account="expenses:food", amount=Mixed [dollars 4]}
,nulltxn{date=parsedate "2008/01/01",description="- 2008/12/31",account="expenses:food:dining", amount=Mixed [dollars 10]} ,nulltxn{date=parsedate "2008/01/01",description="- 2008/12/31",account="expenses:food:dining", amount=Mixed [dollars 10]}
,nulltxn{date=parsedate "2008/01/01",description="- 2008/12/31",account="expenses:food:groceries",amount=Mixed [dollars 1]} ,nulltxn{date=parsedate "2008/01/01",description="- 2008/12/31",account="expenses:food:groceries",amount=Mixed [dollars 1]}
] ]
("2008/01/01","2009/01/01",0,Just 2,False,[ ("2008/01/01","2009/01/01",0,Just 2,False,ts) `gives`
nulltxn{description="desc",account="expenses:food:groceries",amount=Mixed [dollars 1]}
,nulltxn{description="desc",account="expenses:food:dining", amount=Mixed [dollars 2]}
,nulltxn{description="desc",account="expenses:food", amount=Mixed [dollars 4]}
,nulltxn{description="desc",account="expenses:food:dining", amount=Mixed [dollars 8]}
]) `gives`
[ [
nulltxn{date=parsedate "2008/01/01",description="- 2008/12/31",account="expenses:food", amount=Mixed [dollars 15]} nulltxn{date=parsedate "2008/01/01",description="- 2008/12/31",account="expenses:food",amount=Mixed [dollars 15]}
] ]
("2008/01/01","2009/01/01",0,Just 1,False,[ ("2008/01/01","2009/01/01",0,Just 1,False,ts) `gives`
nulltxn{description="desc",account="expenses:food:groceries",amount=Mixed [dollars 1]}
,nulltxn{description="desc",account="expenses:food:dining", amount=Mixed [dollars 2]}
,nulltxn{description="desc",account="expenses:food", amount=Mixed [dollars 4]}
,nulltxn{description="desc",account="expenses:food:dining", amount=Mixed [dollars 8]}
]) `gives`
[ [
nulltxn{date=parsedate "2008/01/01",description="- 2008/12/31",account="expenses", amount=Mixed [dollars 15]} nulltxn{date=parsedate "2008/01/01",description="- 2008/12/31",account="expenses",amount=Mixed [dollars 15]}
]
("2008/01/01","2009/01/01",0,Just 0,False,ts) `gives`
[
nulltxn{date=parsedate "2008/01/01",description="- 2008/12/31",account="",amount=Mixed [dollars 15]}
] ]
, ,
"ledgerentry" ~: do "ledgerentry" ~: do