diff --git a/hledger-lib/Hledger/Reports/MultiBalanceReport.hs b/hledger-lib/Hledger/Reports/MultiBalanceReport.hs index 1ab60700d..77092ce7f 100644 --- a/hledger-lib/Hledger/Reports/MultiBalanceReport.hs +++ b/hledger-lib/Hledger/Reports/MultiBalanceReport.hs @@ -50,7 +50,7 @@ import Data.Semigroup ((<>)) #endif import Data.Semigroup (sconcat) import Data.Time.Calendar (Day, addDays, fromGregorian) -import Safe (headMay, lastDef, lastMay, minimumMay) +import Safe (headMay, lastDef, lastMay) import Hledger.Data import Hledger.Query @@ -317,14 +317,13 @@ calculateReportMatrix rspec@ReportSpec{rsOpts=ropts} j priceoracle startbals col CumulativeChange -> cumulative HistoricalBalance -> historical where - historical = cumulativeSum avalue startingBalance changes - cumulative | changingValuation ropts = fmap (`subtractAcct` valuedStart) historical - | otherwise = cumulativeSum avalue nullacct changes - changeamts | changingValuation ropts = periodChanges valuedStart historical - | otherwise = changes + historical = cumulativeSum avalue startingBalance changes + cumulative = cumulativeSum avalue nullacct changes + changeamts = if changingValuation ropts + then periodChanges nullacct cumulative + else changes startingBalance = HM.lookupDefault nullacct name startbals - valuedStart = avalue (DateSpan Nothing historicalDate) startingBalance -- Transpose to get each account's balance changes across all columns, then -- pad with zeros @@ -335,7 +334,6 @@ calculateReportMatrix rspec@ReportSpec{rsOpts=ropts} j priceoracle startbals col (pvalue, avalue) = postingAndAccountValuations rspec j priceoracle addElided = if queryDepth (rsQuery rspec) == Just 0 then HM.insert "..." zeros else id - historicalDate = minimumMay $ mapMaybe spanStart colspans zeros = M.fromList [(span, nullacct) | span <- colspans] colspans = M.keys colps diff --git a/hledger/test/journal/valuation.test b/hledger/test/journal/valuation.test index b065c0c60..198840951 100644 --- a/hledger/test/journal/valuation.test +++ b/hledger/test/journal/valuation.test @@ -219,7 +219,7 @@ $ hledger -f- reg --value=cost 2000-01-01 (a) 6 B 6 B 2000-02-01 (a) 7 B 13 B 2000-03-01 (a) 8 B 21 B - + # 16. register report valued at posting dates $ hledger -f- reg --value=then 2000-01-01 (a) 1 B 1 B