mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-27 12:24:43 +03:00
fix: print: don't round in implicit conversions (fix #2079)
This commit is contained in:
parent
fd97c40266
commit
4bd0dd7ab0
@ -793,13 +793,14 @@ journalModifyTransactions verbosetags d j =
|
|||||||
Left err -> Left err
|
Left err -> Left err
|
||||||
|
|
||||||
-- | Choose and apply a consistent display style to the posting
|
-- | Choose and apply a consistent display style to the posting
|
||||||
-- amounts in each commodity (see journalCommodityStyles).
|
-- amounts in each commodity (see journalCommodityStyles),
|
||||||
|
-- keeping all display precisions unchanged.
|
||||||
-- Can return an error message eg if inconsistent number formats are found.
|
-- Can return an error message eg if inconsistent number formats are found.
|
||||||
journalApplyCommodityStyles :: Journal -> Either String Journal
|
journalApplyCommodityStyles :: Journal -> Either String Journal
|
||||||
journalApplyCommodityStyles = fmap fixjournal . journalInferCommodityStyles
|
journalApplyCommodityStyles = fmap fixjournal . journalInferCommodityStyles
|
||||||
where
|
where
|
||||||
fixjournal j@Journal{jpricedirectives=pds} =
|
fixjournal j@Journal{jpricedirectives=pds} =
|
||||||
journalMapPostings (postingApplyCommodityStyles styles) j{jpricedirectives=map fixpricedirective pds}
|
journalMapPostings (postingApplyCommodityStylesExceptPrecision styles) j{jpricedirectives=map fixpricedirective pds}
|
||||||
where
|
where
|
||||||
styles = journalCommodityStyles j
|
styles = journalCommodityStyles j
|
||||||
fixpricedirective pd@PriceDirective{pdamount=a} = pd{pdamount=amountSetStylesExceptPrecision styles a}
|
fixpricedirective pd@PriceDirective{pdamount=a} = pd{pdamount=amountSetStylesExceptPrecision styles a}
|
||||||
|
@ -74,7 +74,7 @@ printEntries opts@CliOpts{reportspec_=rspec} j =
|
|||||||
styleAmounts styles $
|
styleAmounts styles $
|
||||||
entriesReport rspec j
|
entriesReport rspec j
|
||||||
where
|
where
|
||||||
styles = journalCommodityStyles j
|
styles = M.map amountStyleUnsetPrecision $ journalCommodityStyles j -- keep all precisions unchanged
|
||||||
fmt = outputFormatFromOpts opts
|
fmt = outputFormatFromOpts opts
|
||||||
render | fmt=="txt" = entriesReportAsText opts
|
render | fmt=="txt" = entriesReportAsText opts
|
||||||
| fmt=="csv" = printCSV . entriesReportAsCsv
|
| fmt=="csv" = printCSV . entriesReportAsCsv
|
||||||
|
75
hledger/test/print/print-style.test
Normal file
75
hledger/test/print/print-style.test
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# print amount styling tests
|
||||||
|
#
|
||||||
|
# The amounts are:
|
||||||
|
# amt - the posting amount
|
||||||
|
# cost - the posting amount's cost
|
||||||
|
# bal - the balance assertion amount
|
||||||
|
# balcost - the balance assertion amount's cost
|
||||||
|
#
|
||||||
|
# Styling includes:
|
||||||
|
# basic - everything except precision
|
||||||
|
# prec - precision (number of decimal places)
|
||||||
|
#
|
||||||
|
# Historical behaviour:
|
||||||
|
# | hledger | amt basic | cost basic | bal basic | balcost basic | amt prec | cost prec | bal prec | balcost prec |
|
||||||
|
# | 1.14 | Y | N | N | N | Y | N | N | N |
|
||||||
|
# | 1.22 | Y | N | Y | N | N | N | N | N |
|
||||||
|
# | 1.30 | Y | Y | Y | N | N | N | N | N |
|
||||||
|
# | 1.31 | Y | Y | Y | Y | N | N | N | N |
|
||||||
|
#
|
||||||
|
# In the following,
|
||||||
|
# basic styling will move the commodity symbol to the left
|
||||||
|
# precision styling will hide the decimal place
|
||||||
|
|
||||||
|
# 1. print styles all amounts, but leaves all precisions unchanged, even with -c.
|
||||||
|
<
|
||||||
|
commodity A 1000.
|
||||||
|
commodity B 1000.
|
||||||
|
|
||||||
|
2023-01-01
|
||||||
|
(a) 1.2 A @ 3.4 B = 1.2 A @ 3.4 B
|
||||||
|
|
||||||
|
$ hledger -f- print -c A1000.00 -c B1000.00
|
||||||
|
2023-01-01
|
||||||
|
(a) A1.2 @ B3.4 = A1.2 @ B3.4
|
||||||
|
|
||||||
|
>=
|
||||||
|
|
||||||
|
# 2. Precisions are also preserved when there's an implicit conversion (#2079).
|
||||||
|
<
|
||||||
|
commodity A 1000.
|
||||||
|
|
||||||
|
2023-01-01
|
||||||
|
f A 1.5
|
||||||
|
g A 1.5
|
||||||
|
c B -3
|
||||||
|
|
||||||
|
$ hledger -f- print
|
||||||
|
2023-01-01
|
||||||
|
f A 1.5
|
||||||
|
g A 1.5
|
||||||
|
c B -3
|
||||||
|
|
||||||
|
>=
|
||||||
|
|
||||||
|
|
||||||
|
# Maybe later:
|
||||||
|
|
||||||
|
# # 0. With print, -c has extra power: it can increase all amount precisions.
|
||||||
|
# $ hledger -f- print -c A1000.00 -c B1000.00
|
||||||
|
# 2023-01-01
|
||||||
|
# (a) A1.20 @ B3.40 = A1.20 @ B3.40
|
||||||
|
#
|
||||||
|
# >=
|
||||||
|
#
|
||||||
|
# # 0. And -c can decrease trailing decimal zeros. But not significant decimal digits
|
||||||
|
# (because that would change transactions).
|
||||||
|
# <
|
||||||
|
# 2023-01-01
|
||||||
|
# (a) 1.2340 A @ 3.4560 B = 1.234 A @ 3.456 B
|
||||||
|
#
|
||||||
|
# $ hledger -f- print -c A1000. -c B1000.
|
||||||
|
# 2023-01-01
|
||||||
|
# (a) A1.234 @ B3.456 = A1.234 @ B3.456
|
||||||
|
#
|
||||||
|
# >=
|
Loading…
Reference in New Issue
Block a user