From 7597e525a3e44fa7cc36cd0298c375c05230771a Mon Sep 17 00:00:00 2001 From: Stephen Morgan Date: Fri, 5 Nov 2021 17:09:41 +1100 Subject: [PATCH] fix: balance: Balance reports should consider date: queries when calculating report span with --date2. (#1745) --- hledger-lib/Hledger/Query.hs | 2 +- hledger/test/balance/date2.test | 23 +++++++++++++++++++---- hledger/test/register/date2.test | 8 ++++++-- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/hledger-lib/Hledger/Query.hs b/hledger-lib/Hledger/Query.hs index eae5c329d..df5d284db 100644 --- a/hledger-lib/Hledger/Query.hs +++ b/hledger-lib/Hledger/Query.hs @@ -479,7 +479,7 @@ queryTermDateSpan _ = Nothing queryDateSpan :: Bool -> Query -> DateSpan queryDateSpan secondary (Or qs) = spansUnion $ map (queryDateSpan secondary) qs queryDateSpan secondary (And qs) = spansIntersect $ map (queryDateSpan secondary) qs -queryDateSpan False (Date span) = span +queryDateSpan _ (Date span) = span queryDateSpan True (Date2 span) = span queryDateSpan _ _ = nulldatespan diff --git a/hledger/test/balance/date2.test b/hledger/test/balance/date2.test index 309f15ae0..eff364d45 100644 --- a/hledger/test/balance/date2.test +++ b/hledger/test/balance/date2.test @@ -1,5 +1,4 @@ -hledger -f - balance -p 'in 2009' --date2 -N -<<< +< 2009/1/1 x a 1 b @@ -7,7 +6,23 @@ hledger -f - balance -p 'in 2009' --date2 -N 2009/1/1=2010/1/1 x a 10 b ->>> + +# 1. --date2 ignores postings with secondary dates outside the range +$ hledger -f - balance -p 'in 2009' --date2 -N 1 a -1 b ->>>=0 + +# 2. Above but with date: queries +$ hledger -f - balance date:2009 --date2 -N + 1 a + -1 b + +# 3. --date2 sees postings with secondary dates inside the range +$ hledger -f - balance -p 'in 2010' --date2 -N + 10 a + -10 b + +# 4. Above but with date: queries +$ hledger -f - balance date:2010 --date2 -N + 10 a + -10 b diff --git a/hledger/test/register/date2.test b/hledger/test/register/date2.test index 19ca00ba7..0eb508c6c 100644 --- a/hledger/test/register/date2.test +++ b/hledger/test/register/date2.test @@ -28,16 +28,20 @@ hledger -f- register -p 2014/1/2 --date2 2014-01-02 (a) 1 1 >>>=0 -# 3. --date2 causes date: to match the secondary date +# 3. --date2 causes date: to match the secondary date (or the primary date, if there is no secondary) hledger -f- register date:2014/1/2 --date2 <<< 2014/1/1=1/2 (a) 1 -2014/1/3 +2014/1/2 (b) 1 + +2014/1/2=1/3 + (C) 1 >>> 2014-01-02 (a) 1 1 +2014-01-02 (b) 1 2 >>>=0 # 4. date2: matches the secondary date (but does not necessarily display it)