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
-- aggregate balances by account, like cacheLedger:
anames = sort $ nub $ map account ts
allnames = expandAccountNames anames
allnames = expandAccountNames anames ++ [""]
-- from cacheLedger:
txnmap = Map.union (transactionsByAccount ts) (Map.fromList [(a,[]) | a <- allnames])
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
inclusivebalmap = Map.union -- subaccount-including balances for all accounts
(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"}
]
("2008/01/01","2009/01/01",0,Nothing,False,[
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`
let ts = [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]}
]
("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:dining", amount=Mixed [dollars 10]}
,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,[
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`
("2008/01/01","2009/01/01",0,Just 2,False,ts) `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,[
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`
("2008/01/01","2009/01/01",0,Just 1,False,ts) `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