diff --git a/hledger-lib/Hledger/Data/Journal.hs b/hledger-lib/Hledger/Data/Journal.hs index 6ccaf4f19..cff074771 100644 --- a/hledger-lib/Hledger/Data/Journal.hs +++ b/hledger-lib/Hledger/Data/Journal.hs @@ -929,6 +929,10 @@ abspat pat = if isnegativepat pat then drop (length negateprefix) pat else pat -- expenses:supplies $1 -- assets:cash -- +-- 2008/10/01 take a loan +-- assets:bank:checking $1 +-- liabilities:debts $-1 +-- -- 2008/12/31 * pay off -- liabilities:debts $1 -- assets:bank:checking @@ -1003,6 +1007,22 @@ Right samplejournal = journalBalanceTransactions False $ ], tpreceding_comment_lines="" } + , + txnTieKnot $ Transaction { + tindex=0, + tsourcepos=nullsourcepos, + tdate=parsedate "2008/10/01", + tdate2=Nothing, + tstatus=Unmarked, + tcode="", + tdescription="take a loan", + tcomment="", + ttags=[], + tpostings=["assets:bank:checking" `post` usd 1 + ,"liabilities:debts" `post` usd (-1) + ], + tpreceding_comment_lines="" + } , txnTieKnot $ Transaction { tindex=0, diff --git a/hledger-lib/Hledger/Data/Ledger.hs b/hledger-lib/Hledger/Data/Ledger.hs index 7149dca86..10d9d0c45 100644 --- a/hledger-lib/Hledger/Data/Ledger.hs +++ b/hledger-lib/Hledger/Data/Ledger.hs @@ -93,8 +93,8 @@ ledgerCommodities = M.keys . jinferredcommodities . ljournal tests_ledgerFromJournal = [ "ledgerFromJournal" ~: do assertEqual "" (0) (length $ ledgerPostings $ ledgerFromJournal Any nulljournal) - assertEqual "" (11) (length $ ledgerPostings $ ledgerFromJournal Any samplejournal) - assertEqual "" (6) (length $ ledgerPostings $ ledgerFromJournal (Depth 2) samplejournal) + assertEqual "" (13) (length $ ledgerPostings $ ledgerFromJournal Any samplejournal) + assertEqual "" (7) (length $ ledgerPostings $ ledgerFromJournal (Depth 2) samplejournal) ] tests_Hledger_Data_Ledger = TestList $ diff --git a/hledger-lib/Hledger/Reports/BalanceReport.hs b/hledger-lib/Hledger/Reports/BalanceReport.hs index c4e2fea72..1e8f6db97 100644 --- a/hledger-lib/Hledger/Reports/BalanceReport.hs +++ b/hledger-lib/Hledger/Reports/BalanceReport.hs @@ -213,8 +213,10 @@ tests_balanceReport = ,"balanceReport with no args on sample journal" ~: do (defreportopts, samplejournal) `gives` ([ - ("assets","assets",0, mamountp' "$-1.00") - ,("assets:bank:saving","bank:saving",1, mamountp' "$1.00") + ("assets","assets",0, mamountp' "$0.00") + ,("assets:bank","bank",1, mamountp' "$2.00") + ,("assets:bank:checking","checking",2, mamountp' "$1.00") + ,("assets:bank:saving","saving",2, mamountp' "$1.00") ,("assets:cash","cash",1, mamountp' "$-2.00") ,("expenses","expenses",0, mamountp' "$2.00") ,("expenses:food","food",1, mamountp' "$1.00") @@ -222,27 +224,22 @@ tests_balanceReport = ,("income","income",0, mamountp' "$-2.00") ,("income:gifts","gifts",1, mamountp' "$-1.00") ,("income:salary","salary",1, mamountp' "$-1.00") - ,("liabilities:debts","liabilities:debts",0, mamountp' "$1.00") ], Mixed [usd0]) ,"balanceReport with --depth=N" ~: do (defreportopts{depth_=Just 1}, samplejournal) `gives` ([ - ("assets", "assets", 0, mamountp' "$-1.00") - ,("expenses", "expenses", 0, mamountp' "$2.00") + ("expenses", "expenses", 0, mamountp' "$2.00") ,("income", "income", 0, mamountp' "$-2.00") - ,("liabilities", "liabilities", 0, mamountp' "$1.00") ], Mixed [usd0]) ,"balanceReport with depth:N" ~: do (defreportopts{query_="depth:1"}, samplejournal) `gives` ([ - ("assets", "assets", 0, mamountp' "$-1.00") - ,("expenses", "expenses", 0, mamountp' "$2.00") + ("expenses", "expenses", 0, mamountp' "$2.00") ,("income", "income", 0, mamountp' "$-2.00") - ,("liabilities", "liabilities", 0, mamountp' "$1.00") ], Mixed [usd0]) @@ -268,16 +265,13 @@ tests_balanceReport = ,"balanceReport with not:desc:" ~: do (defreportopts{query_="not:desc:income"}, samplejournal) `gives` ([ - ("assets","assets",0, mamountp' "$-2.00") - ,("assets:bank","bank",1, Mixed [usd0]) - ,("assets:bank:checking","checking",2,mamountp' "$-1.00") - ,("assets:bank:saving","saving",2, mamountp' "$1.00") + ("assets","assets",0, mamountp' "$-1.00") + ,("assets:bank:saving","bank:saving",1, mamountp' "$1.00") ,("assets:cash","cash",1, mamountp' "$-2.00") ,("expenses","expenses",0, mamountp' "$2.00") ,("expenses:food","food",1, mamountp' "$1.00") ,("expenses:supplies","supplies",1, mamountp' "$1.00") ,("income:gifts","income:gifts",0, mamountp' "$-1.00") - ,("liabilities:debts","liabilities:debts",0, mamountp' "$1.00") ], Mixed [usd0]) diff --git a/hledger-lib/Hledger/Reports/PostingsReport.hs b/hledger-lib/Hledger/Reports/PostingsReport.hs index 4a1d20c04..cd480fcb0 100644 --- a/hledger-lib/Hledger/Reports/PostingsReport.hs +++ b/hledger-lib/Hledger/Reports/PostingsReport.hs @@ -263,17 +263,17 @@ tests_postingsReport = [ -- with the query specified explicitly let (query, journal) `gives` n = (length $ snd $ postingsReport defreportopts query journal) `is` n (Any, nulljournal) `gives` 0 - (Any, samplejournal) `gives` 11 + (Any, samplejournal) `gives` 13 -- register --depth just clips account names - (Depth 2, samplejournal) `gives` 11 + (Depth 2, samplejournal) `gives` 13 (And [Depth 1, StatusQ Cleared, Acct "expenses"], samplejournal) `gives` 2 (And [And [Depth 1, StatusQ Cleared], Acct "expenses"], samplejournal) `gives` 2 -- with query and/or command-line options - assertEqual "" 11 (length $ snd $ postingsReport defreportopts Any samplejournal) - assertEqual "" 9 (length $ snd $ postingsReport defreportopts{interval_=Months 1} Any samplejournal) - assertEqual "" 19 (length $ snd $ postingsReport defreportopts{interval_=Months 1, empty_=True} Any samplejournal) - assertEqual "" 4 (length $ snd $ postingsReport defreportopts (Acct "assets:bank:checking") samplejournal) + assertEqual "" 13 (length $ snd $ postingsReport defreportopts Any samplejournal) + assertEqual "" 11 (length $ snd $ postingsReport defreportopts{interval_=Months 1} Any samplejournal) + assertEqual "" 20 (length $ snd $ postingsReport defreportopts{interval_=Months 1, empty_=True} Any samplejournal) + assertEqual "" 5 (length $ snd $ postingsReport defreportopts (Acct "assets:bank:checking") samplejournal) -- (defreportopts, And [Acct "a a", Acct "'b"], samplejournal2) `gives` 0 -- [(Just (parsedate "2008-01-01","income"),assets:bank:checking $1,$1) diff --git a/hledger-lib/doc/hledger_journal.5.m4.md b/hledger-lib/doc/hledger_journal.5.m4.md index 38f989ed0..e47e87a5b 100644 --- a/hledger-lib/doc/hledger_journal.5.m4.md +++ b/hledger-lib/doc/hledger_journal.5.m4.md @@ -55,6 +55,10 @@ Here's an example: expenses:supplies $1 ; <- this transaction debits two expense accounts assets:cash ; <- $-2 inferred +2008/10/01 take a loan + assets:bank:checking $1 + liabilities:debts $-1 + 2008/12/31 * pay off ; <- an optional * or ! after the date means "cleared" (or anything you want) liabilities:debts $1 assets:bank:checking