From d1467d4766102917905961ca9b8e1994804715f3 Mon Sep 17 00:00:00 2001 From: Stephen Morgan Date: Fri, 16 Apr 2021 10:53:52 +1000 Subject: [PATCH] lib: When inferring total prices, use the precision of toamount, rather than NaturalPrecision. --- hledger-lib/Hledger/Data/Transaction.hs | 4 ++-- hledger/test/journal/auto-postings.test | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/hledger-lib/Hledger/Data/Transaction.hs b/hledger-lib/Hledger/Data/Transaction.hs index ff39178fa..16f0b9fe6 100644 --- a/hledger-lib/Hledger/Data/Transaction.hs +++ b/hledger-lib/Hledger/Data/Transaction.hs @@ -584,7 +584,7 @@ priceInferrerFor t pt = maybe id inferprice inferFromAndTo -- If only one Amount in the posting list matches fromamount we can use TotalPrice. -- Otherwise divide the conversion equally among the Amounts by using a unit price. conversionprice = case filter (== acommodity fromamount) pcommodities of - [_] -> TotalPrice $ negate toamount `withPrecision` NaturalPrecision + [_] -> TotalPrice $ negate toamount _ -> UnitPrice $ negate unitprice `withPrecision` unitprecision unitprice = aquantity fromamount `divideAmount` toamount @@ -918,7 +918,7 @@ tests_Transaction = [ posting {paccount = "a", pamount = mixedAmount (usd 1.35)} , posting {paccount = "b", pamount = mixedAmount (eur (-1))} ])) @?= - Right (mixedAmount $ usd 1.35 @@ (eur 1 `withPrecision` NaturalPrecision)) + Right (mixedAmount $ usd 1.35 @@ eur 1) ,test "balanceTransaction balances based on cost if there are unit prices" $ assertRight $ balanceTransaction diff --git a/hledger/test/journal/auto-postings.test b/hledger/test/journal/auto-postings.test index f8cb27aaf..000bfccfe 100644 --- a/hledger/test/journal/auto-postings.test +++ b/hledger/test/journal/auto-postings.test @@ -230,11 +230,11 @@ $ hledger -f- print --auto # 12. $ hledger -f- print --auto 2018-01-01 ; modified: - Expenses:Joint:Widgets $100.00 - Expenses:Joint $-100.00 @@ £50 ; generated-posting: = ^Expenses:Joint - Liabilities:Joint:Bob $50.00 @@ £25 ; generated-posting: = ^Expenses:Joint - Liabilities:Joint:Bill $50.00 @@ £25 ; generated-posting: = ^Expenses:Joint - Assets:Joint:Bank £-50.00 + Expenses:Joint:Widgets $100.00 + Expenses:Joint $-100.00 @@ £50.00 ; generated-posting: = ^Expenses:Joint + Liabilities:Joint:Bob $50.00 @@ £25.00 ; generated-posting: = ^Expenses:Joint + Liabilities:Joint:Bill $50.00 @@ £25.00 ; generated-posting: = ^Expenses:Joint + Assets:Joint:Bank £-50.00 >=0