From fa2e680b2ea75a03d7401166c65143d52d15d8b5 Mon Sep 17 00:00:00 2001 From: Mykola Orliuk Date: Sun, 3 Dec 2017 04:40:11 +0100 Subject: [PATCH] lib: fix styles after cost application Fixes simonmichael/hledger#509 --- hledger-lib/Hledger/Data/Journal.hs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/hledger-lib/Hledger/Data/Journal.hs b/hledger-lib/Hledger/Data/Journal.hs index 520ee942b..2e830053e 100644 --- a/hledger-lib/Hledger/Data/Journal.hs +++ b/hledger-lib/Hledger/Data/Journal.hs @@ -732,8 +732,11 @@ journalApplyCommodityStyles j@Journal{jtxns=ts, jmarketprices=mps} = j'' -- from the posting amounts (or in some cases, price amounts) in this -- commodity if any, otherwise the default style. journalCommodityStyle :: Journal -> CommoditySymbol -> AmountStyle -journalCommodityStyle j c = - headDef amountstyle{asprecision=2} $ +journalCommodityStyle j = fromMaybe amountstyle{asprecision=2} . journalCommodityStyleLookup j + +journalCommodityStyleLookup :: Journal -> CommoditySymbol -> Maybe AmountStyle +journalCommodityStyleLookup j c = + listToMaybe $ catMaybes [ M.lookup c (jcommodities j) >>= cformat ,M.lookup c $ jinferredcommodities j @@ -802,7 +805,10 @@ journalConvertAmountsToCost j@Journal{jtxns=ts} = j{jtxns=map fixtransaction ts} fixtransaction t@Transaction{tpostings=ps} = t{tpostings=map fixposting ps} fixposting p@Posting{pamount=a} = p{pamount=fixmixedamount a} fixmixedamount (Mixed as) = Mixed $ map fixamount as - fixamount = canonicaliseAmount (jinferredcommodities j) . costOfAmount + fixamount = applyJournalStyle . costOfAmount + applyJournalStyle a + | Just s <- journalCommodityStyleLookup j (acommodity a) = a{astyle=s} + | otherwise = a -- -- | Get this journal's unique, display-preference-canonicalised commodities, by symbol. -- journalCanonicalCommodities :: Journal -> M.Map String CommoditySymbol