balance: support --date2 in multicolumn reports (cf #174)

This commit is contained in:
Simon Michael 2014-04-13 15:14:07 -07:00
parent d4993092fb
commit a761ae5b86
3 changed files with 31 additions and 2 deletions

View File

@ -28,6 +28,7 @@ module Hledger.Data.Posting (
isPostingInDateSpan, isPostingInDateSpan,
isPostingInDateSpan', isPostingInDateSpan',
postingsDateSpan, postingsDateSpan,
postingsDateSpan',
-- * account name operations -- * account name operations
accountNamesFromPostings, accountNamesFromPostings,
accountNamePostingType, accountNamePostingType,
@ -176,6 +177,14 @@ postingsDateSpan [] = DateSpan Nothing Nothing
postingsDateSpan ps = DateSpan (Just $ postingDate $ head ps') (Just $ addDays 1 $ postingDate $ last ps') postingsDateSpan ps = DateSpan (Just $ postingDate $ head ps') (Just $ addDays 1 $ postingDate $ last ps')
where ps' = sortBy (comparing postingDate) ps where ps' = sortBy (comparing postingDate) ps
-- --date2-sensitive version, as above.
postingsDateSpan' :: WhichDate -> [Posting] -> DateSpan
postingsDateSpan' wd [] = DateSpan Nothing Nothing
postingsDateSpan' wd ps = DateSpan (Just $ postingdate $ head ps') (Just $ addDays 1 $ postingdate $ last ps')
where
ps' = sortBy (comparing postingdate) ps
postingdate = if wd == PrimaryDate then postingDate else postingDate2
-- AccountName stuff that depends on PostingType -- AccountName stuff that depends on PostingType
accountNamePostingType :: AccountName -> PostingType accountNamePostingType :: AccountName -> PostingType

View File

@ -89,7 +89,7 @@ multiBalanceReport opts q j = MultiBalanceReport (spans, items, totals)
where where
requestedspan = queryDateSpan (date2_ opts) q -- based on -b/-e/-p opts and query args IIRC requestedspan = queryDateSpan (date2_ opts) q -- based on -b/-e/-p opts and query args IIRC
journalspan = journalDateSpan j journalspan = journalDateSpan j
matchedspan = postingsDateSpan ps matchedspan = postingsDateSpan' (whichDateFromOpts opts) ps
spans :: [DateSpan] = spans :: [DateSpan] =
dbg "spans" $ dbg "spans" $
splitSpan (intervalFromOpts opts) reportspan splitSpan (intervalFromOpts opts) reportspan
@ -97,7 +97,7 @@ multiBalanceReport opts q j = MultiBalanceReport (spans, items, totals)
psPerSpan :: [[Posting]] = psPerSpan :: [[Posting]] =
dbg "psPerSpan" $ dbg "psPerSpan" $
[filter (isPostingInDateSpan s) ps | s <- spans] [filter (isPostingInDateSpan' (whichDateFromOpts opts) s) ps | s <- spans]
postedAcctBalChangesPerSpan :: [[(ClippedAccountName, MixedAmount)]] = postedAcctBalChangesPerSpan :: [[(ClippedAccountName, MixedAmount)]] =
dbg "postedAcctBalChangesPerSpan" $ dbg "postedAcctBalChangesPerSpan" $

View File

@ -237,3 +237,23 @@ Ending balance (historical):
>>>=0 >>>=0
# 17. --date2 should work
hledgerdev -f- balance --monthly --date2
<<<
2014/1/1
(a) 1
2014/2/1=2014/1/31
(b) 1
>>>
Change of balance (flow):
|| 2014/01/01-2014/01/31
===++========================
a || 1
b || 1
---++------------------------
|| 2
>>>=0