From eeb48c86d15e4df207a89e690013936424a6dc3a Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Thu, 24 Apr 2014 14:44:30 -0700 Subject: [PATCH] default report dates come from secondary dates with --date2 --- hledger-lib/Hledger/Data/Journal.hs | 16 ++++++++-------- .../Hledger/Reports/MultiBalanceReports.hs | 2 +- hledger-lib/Hledger/Reports/PostingsReport.hs | 2 +- hledger/Hledger/Cli/Histogram.hs | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/hledger-lib/Hledger/Data/Journal.hs b/hledger-lib/Hledger/Data/Journal.hs index 95ec7e589..961a5276c 100644 --- a/hledger-lib/Hledger/Data/Journal.hs +++ b/hledger-lib/Hledger/Data/Journal.hs @@ -545,32 +545,32 @@ journalMixedAmounts = map pamount . journalPostings journalAmounts :: Journal -> [Amount] journalAmounts = concatMap flatten . journalMixedAmounts where flatten (Mixed as) = as --- | The fully specified date span enclosing the primary dates of all --- this journal's transactions and postings, or DateSpan Nothing Nothing +-- | The fully specified date span enclosing the dates (primary or secondary) +-- of all this journal's transactions and postings, or DateSpan Nothing Nothing -- if there are none. -journalDateSpan :: Journal -> DateSpan -journalDateSpan j +journalDateSpan :: Bool -> Journal -> DateSpan +journalDateSpan secondary j | null ts = DateSpan Nothing Nothing | otherwise = DateSpan (Just earliest) (Just $ addDays 1 latest) where earliest = minimum dates latest = maximum dates dates = pdates ++ tdates - tdates = map tdate ts - pdates = concatMap (catMaybes . map pdate . tpostings) ts + tdates = map (if secondary then transactionDate2 else tdate) ts + pdates = concatMap (catMaybes . map (if secondary then (Just . postingDate2) else pdate) . tpostings) ts ts = jtxns j -- #ifdef TESTS test_journalDateSpan = do "journalDateSpan" ~: do assertEqual "" (DateSpan (Just $ fromGregorian 2014 1 10) (Just $ fromGregorian 2014 10 11)) - (journalDateSpan j) + (journalDateSpan True j) where j = nulljournal{jtxns = [nulltransaction{tdate = parsedate "2014/02/01" ,tpostings = [posting{pdate=Just (parsedate "2014/01/10")}] } ,nulltransaction{tdate = parsedate "2014/09/01" - ,tpostings = [posting{pdate=Just (parsedate "2014/10/10")}] + ,tpostings = [posting{pdate2=Just (parsedate "2014/10/10")}] } ]} -- #endif diff --git a/hledger-lib/Hledger/Reports/MultiBalanceReports.hs b/hledger-lib/Hledger/Reports/MultiBalanceReports.hs index e5ec14bbe..fc294c62f 100644 --- a/hledger-lib/Hledger/Reports/MultiBalanceReports.hs +++ b/hledger-lib/Hledger/Reports/MultiBalanceReports.hs @@ -74,7 +74,7 @@ multiBalanceReport opts q j = MultiBalanceReport (displayspans, items, totals) datelessq = dbg "datelessq" $ filterQuery (not . queryIsDate) q precedingq = dbg "precedingq" $ And [datelessq, Date $ DateSpan Nothing (spanStart reportspan)] requestedspan = dbg "requestedspan" $ queryDateSpan (date2_ opts) q -- span specified by -b/-e/-p options and query args - requestedspan' = dbg "requestedspan'" $ requestedspan `spanDefaultsFrom` journalDateSpan j -- if open-ended, close it using the journal's end dates + requestedspan' = dbg "requestedspan'" $ requestedspan `spanDefaultsFrom` journalDateSpan (date2_ opts) j -- if open-ended, close it using the journal's end dates intervalspans = dbg "intervalspans" $ splitSpan (intervalFromOpts opts) requestedspan' -- interval spans enclosing it reportspan = dbg "reportspan" $ DateSpan (maybe Nothing spanStart $ headMay intervalspans) -- the requested span enlarged to a whole number of intervals (maybe Nothing spanEnd $ lastMay intervalspans) diff --git a/hledger-lib/Hledger/Reports/PostingsReport.hs b/hledger-lib/Hledger/Reports/PostingsReport.hs index 07d89f695..e460dad9b 100644 --- a/hledger-lib/Hledger/Reports/PostingsReport.hs +++ b/hledger-lib/Hledger/Reports/PostingsReport.hs @@ -56,7 +56,7 @@ postingsReport opts q j = (totallabel, items) dateless = filterQuery (not . queryIsDate) -- precedingq = dbg "precedingq" $ And [datelessq, Date $ DateSpan Nothing (spanStart reportspan)] requestedspan = dbg "requestedspan" $ queryDateSpan (date2_ opts) q -- span specified by -b/-e/-p options and query args - requestedspan' = dbg "requestedspan'" $ requestedspan `spanDefaultsFrom` journalDateSpan j -- if open-ended, close it using the journal's end dates + requestedspan' = dbg "requestedspan'" $ requestedspan `spanDefaultsFrom` journalDateSpan (date2_ opts) j -- if open-ended, close it using the journal's end dates intervalspans = dbg "intervalspans" $ splitSpan (intervalFromOpts opts) requestedspan' -- interval spans enclosing it reportspan = dbg "reportspan" $ DateSpan (maybe Nothing spanStart $ headMay intervalspans) -- the requested span enlarged to a whole number of intervals (maybe Nothing spanEnd $ lastMay intervalspans) diff --git a/hledger/Hledger/Cli/Histogram.hs b/hledger/Hledger/Cli/Histogram.hs index 48fb515c7..b7efce478 100644 --- a/hledger/Hledger/Cli/Histogram.hs +++ b/hledger/Hledger/Cli/Histogram.hs @@ -45,7 +45,7 @@ showHistogram opts q j = concatMap (printDayWith countBar) spanps i = intervalFromOpts opts interval | i == NoInterval = Days 1 | otherwise = i - span = queryDateSpan (date2_ opts) q `spanDefaultsFrom` journalDateSpan j + span = queryDateSpan (date2_ opts) q `spanDefaultsFrom` journalDateSpan (date2_ opts) j spans = filter (DateSpan Nothing Nothing /=) $ splitSpan interval span spanps = [(s, filter (isPostingInDateSpan s) ps) | s <- spans] -- same as Register