timeclock: print shows timeclock amounts with just 2 decimals, like pre-1.21 (#1527)
This commit is contained in:
parent
25322e489e
commit
f5121129ec
@ -357,7 +357,7 @@ amountSetFullPrecision a = amountSetPrecision p a
|
|||||||
-- Rounding is done with Data.Decimal's default roundTo function:
|
-- Rounding is done with Data.Decimal's default roundTo function:
|
||||||
-- "If the value ends in 5 then it is rounded to the nearest even value (Banker's Rounding)".
|
-- "If the value ends in 5 then it is rounded to the nearest even value (Banker's Rounding)".
|
||||||
-- Does not change the amount's display precision.
|
-- Does not change the amount's display precision.
|
||||||
-- Intended only for internal use, eg when comparing amounts in tests.
|
-- Intended mainly for internal use, eg when comparing amounts in tests.
|
||||||
setAmountInternalPrecision :: Word8 -> Amount -> Amount
|
setAmountInternalPrecision :: Word8 -> Amount -> Amount
|
||||||
setAmountInternalPrecision p a@Amount{ aquantity=q, astyle=s } = a{
|
setAmountInternalPrecision p a@Amount{ aquantity=q, astyle=s } = a{
|
||||||
astyle=s{asprecision=Precision p}
|
astyle=s{asprecision=Precision p}
|
||||||
@ -365,7 +365,7 @@ setAmountInternalPrecision p a@Amount{ aquantity=q, astyle=s } = a{
|
|||||||
}
|
}
|
||||||
|
|
||||||
-- | Set an amount's internal precision, flipped.
|
-- | Set an amount's internal precision, flipped.
|
||||||
-- Intended only for internal use, eg when comparing amounts in tests.
|
-- Intended mainly for internal use, eg when comparing amounts in tests.
|
||||||
withInternalPrecision :: Amount -> Word8 -> Amount
|
withInternalPrecision :: Amount -> Word8 -> Amount
|
||||||
withInternalPrecision = flip setAmountInternalPrecision
|
withInternalPrecision = flip setAmountInternalPrecision
|
||||||
|
|
||||||
|
|||||||
@ -121,7 +121,11 @@ entryFromTimeclockInOut i o
|
|||||||
showtime = take 5 . show
|
showtime = take 5 . show
|
||||||
hours = elapsedSeconds (toutc otime) (toutc itime) / 3600 where toutc = localTimeToUTC utc
|
hours = elapsedSeconds (toutc otime) (toutc itime) / 3600 where toutc = localTimeToUTC utc
|
||||||
acctname = tlaccount i
|
acctname = tlaccount i
|
||||||
amount = mixedAmount $ hrs hours
|
-- Generate an hours amount. Unusually, we also round the internal Decimal value,
|
||||||
|
-- since otherwise it will often have large recurring decimal parts which (since 1.21)
|
||||||
|
-- print would display all 255 digits of. timeclock amounts have one second resolution,
|
||||||
|
-- so two decimal places is precise enough (#1527).
|
||||||
|
amount = mixedAmount $ setAmountInternalPrecision 2 $ hrs hours
|
||||||
ps = [posting{paccount=acctname, pamount=amount, ptype=VirtualPosting, ptransaction=Just t}]
|
ps = [posting{paccount=acctname, pamount=amount, ptype=VirtualPosting, ptransaction=Just t}]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -65,6 +65,17 @@ $ hledger -f timeclock:- balance
|
|||||||
>2 /line 2: expected timeclock code o/
|
>2 /line 2: expected timeclock code o/
|
||||||
>= !0
|
>= !0
|
||||||
|
|
||||||
|
# Timeclock amounts are always rounded to two decimal places,
|
||||||
|
# even when displayed by print (#1527).
|
||||||
|
<
|
||||||
|
i 2020-01-30 08:38:35 a
|
||||||
|
o 2020-01-30 09:03:35
|
||||||
|
$ hledger -f timeclock:- print
|
||||||
|
2020-01-30 * 08:38-09:03
|
||||||
|
(a) 0.42h
|
||||||
|
|
||||||
|
>=
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
## multi-day sessions get a new transaction for each day
|
## multi-day sessions get a new transaction for each day
|
||||||
#hledger -ftimeclock:- print
|
#hledger -ftimeclock:- print
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user