diff --git a/hledger-lib/Hledger/Reports/BalanceReport.hs b/hledger-lib/Hledger/Reports/BalanceReport.hs index 5e1a592e7..0d0a44ee6 100644 --- a/hledger-lib/Hledger/Reports/BalanceReport.hs +++ b/hledger-lib/Hledger/Reports/BalanceReport.hs @@ -71,16 +71,11 @@ balanceReport ropts@ReportOpts{..} q j = -- dbg1 = const id -- exclude from debug output dbg1 s = let p = "balanceReport" in Hledger.Utils.dbg1 (p++" "++s) -- add prefix in debug output - today = fromMaybe (error' "balanceReport: ReportOpts today_ is unset so could not satisfy --value=now") today_ + today = fromMaybe (error' "balanceReport: ReportOpts today_ is unset so could not satisfy --value=now") today_ - -- For --value-at=transaction, convert all postings to value before summing them. - -- The report might not use them all but laziness probably helps here. - j' -- | mvalueat==Just AtTransaction = mapJournalPostings (\p -> postingValueAtDate j (postingDate p) p) j - | otherwise = j - -- Get all the summed accounts & balances, according to the query, as an account tree. -- If doing cost valuation, amounts will be converted to cost first. - accttree = ledgerRootAccount $ ledgerFromJournal q $ journalSelectingAmountFromOpts ropts j' + accttree = ledgerRootAccount $ ledgerFromJournal q $ journalSelectingAmountFromOpts ropts j -- For other kinds of valuation, convert the summed amounts to value. valuedaccttree = mapAccounts valueaccount accttree @@ -95,10 +90,10 @@ balanceReport ropts@ReportOpts{..} q j = where -- prices are in parse order - sort into date then parse order, -- & reversed for quick lookup of the latest price. - prices = reverse $ sortOn mpdate $ jmarketprices j' + prices = reverse $ sortOn mpdate $ jmarketprices j periodlastday = fromMaybe (error' "balanceReport: expected a non-empty journal") $ -- XXX shouldn't happen - reportPeriodOrJournalLastDay ropts j' + reportPeriodOrJournalLastDay ropts j -- Modify this tree for display - depth limit, boring parents, zeroes - and convert to a list. displayaccts :: [Account] @@ -143,7 +138,7 @@ balanceReport ropts@ReportOpts{..} q j = where anamesandrows = [(first4 r, r) | r <- rows] anames = map fst anamesandrows - sortedanames = sortAccountNamesByDeclaration j' (tree_ ropts) anames + sortedanames = sortAccountNamesByDeclaration j (tree_ ropts) anames sortedrows = sortAccountItemsLike sortedanames anamesandrows -- Calculate the grand total. diff --git a/hledger-lib/Hledger/Reports/EntriesReport.hs b/hledger-lib/Hledger/Reports/EntriesReport.hs index 31224a719..11d60b7fc 100644 --- a/hledger-lib/Hledger/Reports/EntriesReport.hs +++ b/hledger-lib/Hledger/Reports/EntriesReport.hs @@ -44,9 +44,9 @@ entriesReport ropts@ReportOpts{..} q j@Journal{..} = Just (AtCost _mc) -> postingToCost (journalCommodityStyles j) p Just (AtEnd _mc) -> postingValue jmarketprices (fromMaybe (postingDate p) -- XXX shouldn't happen mperiodorjournallastday) p - Just (AtNow _mc) -> postingValue jmarketprices (case today_ of - Just d -> d - Nothing -> error' "erValue: ReportOpts today_ is unset so could not satisfy --value-at=now") p + Just (AtNow _mc) -> postingValue jmarketprices ( + case today_ of Just d -> d + Nothing -> error' "erValue: ReportOpts today_ is unset so could not satisfy --value=now") p Just (AtDate d _mc) -> postingValue jmarketprices d p where mperiodorjournallastday = mperiodlastday <|> journalEndDate False j diff --git a/hledger-lib/Hledger/Reports/PostingsReport.hs b/hledger-lib/Hledger/Reports/PostingsReport.hs index 372c022e6..d7298b64b 100644 --- a/hledger-lib/Hledger/Reports/PostingsReport.hs +++ b/hledger-lib/Hledger/Reports/PostingsReport.hs @@ -71,7 +71,7 @@ postingsReport ropts@ReportOpts{..} q j@Journal{..} = -- postings to be included in the report, and similarly-matched postings before the report start date (precedingps, reportps) = matchedPostingsBeforeAndDuring ropts q j reportspan - -- We may be converting amounts to value, according to --value-at. + -- We may be converting amounts to value. -- Currently this is done as follows (keep synced with hledger_options.m4.md): -- register -M --value -- cost: value each posting at cost, then summarise ; value -H starting balance at cost @@ -85,7 +85,7 @@ postingsReport ropts@ReportOpts{..} q j@Journal{..} = -- In all cases, the running total/average is calculated from the above numbers. -- "Day before report start" is a bit arbitrary. - today = fromMaybe (error' "postingsReport: ReportOpts today_ is unset so could not satisfy --value-at=now") today_ + today = fromMaybe (error' "postingsReport: ReportOpts today_ is unset so could not satisfy --value=now") today_ -- Postings or summary pseudo postings to be displayed. displayps = @@ -95,11 +95,7 @@ postingsReport ropts@ReportOpts{..} q j@Journal{..} = if multiperiod then let showempty = empty_ || average_ - -- for --value-at=transaction, need to value the postings before summarising them - maybevaluedreportps - -- | value_==Just AtTransaction = [postingValue jmarketprices (postingDate p) p | p <- reportps] - | otherwise = reportps - summaryps = summarisePostingsByInterval interval_ whichdate depth showempty reportspan maybevaluedreportps + summaryps = summarisePostingsByInterval interval_ whichdate depth showempty reportspan reportps in case value_ of Just (AtEnd _mc) -> [(postingValue jmarketprices periodlastday p , periodend) | (p,periodend) <- summaryps ,let periodlastday = maybe @@ -131,10 +127,7 @@ postingsReport ropts@ReportOpts{..} q j@Journal{..} = | otherwise = divideMixedAmount (fromIntegral $ length precedingps) precedingsum startbal | average_ = if historical then precedingavg else 0 | otherwise = if historical then precedingsum else 0 - -- For --value-at: convert the initial running total/average to value. - -- For --value-at=transaction, we don't bother valuing each - -- preceding posting at posting date - how useful would that - -- be ? Just value the initial sum/average at report start date. + -- For --value=end/now/DATE, convert the initial running total/average to value. valuedstartbal = case value_ of Nothing -> startbal Just (AtCost _mc) -> startbal -- conversion to cost was done earlier