mirror of
https://github.com/simonmichael/hledger.git
synced 2024-09-19 10:17:35 +03:00
close: fix some inappropriate rounding, ensure the txn balances (#1164)
This commit is contained in:
parent
64546cd54a
commit
69bc8f803b
@ -50,7 +50,7 @@ close CliOpts{rawopts_=rawopts, reportopts_=ropts} j = do
|
||||
openingdate = fromMaybe today $ queryEndDate False q
|
||||
closingdate = addDays (-1) openingdate
|
||||
(acctbals,_) = balanceReportFromMultiBalanceReport ropts_ q j
|
||||
balancingamt = sum $ map (\(_,_,_,b) -> normaliseMixedAmount b) acctbals
|
||||
totalbalancingamt = sum $ map (\(_,_,_,b) -> normaliseMixedAmount b) acctbals
|
||||
|
||||
-- since balance assertion amounts are required to be exact, the
|
||||
-- amounts in opening/closing transactions should be too (#941, #1137)
|
||||
@ -69,7 +69,7 @@ close CliOpts{rawopts_=rawopts, reportopts_=ropts} j = do
|
||||
if interleaved then
|
||||
-- a corresponding posting transferring the above balance to equity
|
||||
[posting{paccount = closingacct
|
||||
,pamount = Mixed [b]
|
||||
,pamount = Mixed [setprec b]
|
||||
}
|
||||
]
|
||||
else []
|
||||
@ -87,7 +87,7 @@ close CliOpts{rawopts_=rawopts, reportopts_=ropts} j = do
|
||||
-- a final posting transferring all the balances to equity
|
||||
-- (print will show it as multiple single-commodity postings)
|
||||
[posting{paccount = closingacct
|
||||
,pamount = balancingamt
|
||||
,pamount = mapMixedAmount setprec totalbalancingamt
|
||||
}
|
||||
]
|
||||
|
||||
@ -102,7 +102,7 @@ close CliOpts{rawopts_=rawopts, reportopts_=ropts} j = do
|
||||
if interleaved then
|
||||
-- a corresponding posting transferring the above balance from equity
|
||||
[posting{paccount = openingacct
|
||||
,pamount = Mixed [negate b]
|
||||
,pamount = Mixed [setprec $ negate b]
|
||||
}
|
||||
]
|
||||
else []
|
||||
@ -121,7 +121,7 @@ close CliOpts{rawopts_=rawopts, reportopts_=ropts} j = do
|
||||
-- a final posting transferring all the balances from equity
|
||||
-- (print will show it as multiple single-commodity postings)
|
||||
[posting{paccount = openingacct
|
||||
,pamount = negate balancingamt
|
||||
,pamount = mapMixedAmount setprec $ negate totalbalancingamt
|
||||
}
|
||||
]
|
||||
|
||||
|
@ -267,3 +267,36 @@ $ hledger -f- close -p 2016 assets liabilities --interleaved
|
||||
|
||||
>=0
|
||||
|
||||
# 10. A tricky case where a closing posting was rounded and failed to balance (#1164)
|
||||
<
|
||||
commodity $0.00
|
||||
commodity AAA 0.00000000
|
||||
|
||||
2019-01-01 opening balance
|
||||
(assets:usd) $49.50
|
||||
|
||||
2019-01-02 buy some AAA
|
||||
assets:usd -$49.2619200
|
||||
assets:aaa AAA 510
|
||||
assets:usd -$0.1280810
|
||||
expenses:banking $0.1280810
|
||||
|
||||
$ hledger -f- close -p 2019 assets
|
||||
2019-12-31 closing balances
|
||||
assets:aaa AAA -510.00000000 = AAA 0.00000000
|
||||
assets:usd $-49.50
|
||||
assets:usd $49.390001 @ AAA 10.3528242505 = $0.00
|
||||
equity:closing balances $49.50
|
||||
equity:closing balances $-49.390001 @ AAA 10.3528242505
|
||||
equity:closing balances AAA 510.00000000
|
||||
|
||||
2020-01-01 opening balances
|
||||
assets:aaa AAA 510.00000000 = AAA 510.00000000
|
||||
assets:usd $49.50
|
||||
assets:usd $-49.390001 @ AAA 10.3528242505 = $0.109999
|
||||
equity:opening balances $-49.50
|
||||
equity:opening balances $49.390001 @ AAA 10.3528242505
|
||||
equity:opening balances AAA -510.00000000
|
||||
|
||||
>=0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user