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
|
openingdate = fromMaybe today $ queryEndDate False q
|
||||||
closingdate = addDays (-1) openingdate
|
closingdate = addDays (-1) openingdate
|
||||||
(acctbals,_) = balanceReportFromMultiBalanceReport ropts_ q j
|
(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
|
-- since balance assertion amounts are required to be exact, the
|
||||||
-- amounts in opening/closing transactions should be too (#941, #1137)
|
-- 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
|
if interleaved then
|
||||||
-- a corresponding posting transferring the above balance to equity
|
-- a corresponding posting transferring the above balance to equity
|
||||||
[posting{paccount = closingacct
|
[posting{paccount = closingacct
|
||||||
,pamount = Mixed [b]
|
,pamount = Mixed [setprec b]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
else []
|
else []
|
||||||
@ -87,7 +87,7 @@ close CliOpts{rawopts_=rawopts, reportopts_=ropts} j = do
|
|||||||
-- a final posting transferring all the balances to equity
|
-- a final posting transferring all the balances to equity
|
||||||
-- (print will show it as multiple single-commodity postings)
|
-- (print will show it as multiple single-commodity postings)
|
||||||
[posting{paccount = closingacct
|
[posting{paccount = closingacct
|
||||||
,pamount = balancingamt
|
,pamount = mapMixedAmount setprec totalbalancingamt
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ close CliOpts{rawopts_=rawopts, reportopts_=ropts} j = do
|
|||||||
if interleaved then
|
if interleaved then
|
||||||
-- a corresponding posting transferring the above balance from equity
|
-- a corresponding posting transferring the above balance from equity
|
||||||
[posting{paccount = openingacct
|
[posting{paccount = openingacct
|
||||||
,pamount = Mixed [negate b]
|
,pamount = Mixed [setprec $ negate b]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
else []
|
else []
|
||||||
@ -121,7 +121,7 @@ close CliOpts{rawopts_=rawopts, reportopts_=ropts} j = do
|
|||||||
-- a final posting transferring all the balances from equity
|
-- a final posting transferring all the balances from equity
|
||||||
-- (print will show it as multiple single-commodity postings)
|
-- (print will show it as multiple single-commodity postings)
|
||||||
[posting{paccount = openingacct
|
[posting{paccount = openingacct
|
||||||
,pamount = negate balancingamt
|
,pamount = mapMixedAmount setprec $ negate totalbalancingamt
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@ -267,3 +267,36 @@ $ hledger -f- close -p 2016 assets liabilities --interleaved
|
|||||||
|
|
||||||
>=0
|
>=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