diff --git a/RegisterCommand.hs b/RegisterCommand.hs index 9624dd33c..3c40ea401 100644 --- a/RegisterCommand.hs +++ b/RegisterCommand.hs @@ -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]) diff --git a/Tests.hs b/Tests.hs index 970885e25..b76a1a4fc 100644 --- a/Tests.hs +++ b/Tests.hs @@ -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