fix balance accumulation across assertions (#195)

A sequence of balance assertions asserting first one commodity, then
another, then the first again, was not working.
This commit is contained in:
Simon Michael 2015-01-10 22:15:21 -08:00
parent 6543f44d82
commit 257ce57383
2 changed files with 18 additions and 6 deletions

View File

@ -446,10 +446,9 @@ checkBalanceAssertion :: ([String],MixedAmount) -> [Posting] -> ([String],MixedA
checkBalanceAssertion (errs,startbal) ps
| null ps = (errs,startbal)
| isNothing assertion = (errs,startbal)
|
-- bal' /= assertedbal -- MixedAmount's Eq instance currently gets confused by different precisions
not $ isReallyZeroMixedAmount (bal - assertedbal) = (errs++[err], bal)
| otherwise = (errs,bal)
| -- bal' /= assertedbal -- MixedAmount's Eq instance currently gets confused by different precisions
not $ isReallyZeroMixedAmount (bal - assertedbal) = (errs++[err], fullbal)
| otherwise = (errs,fullbal)
where
p = last ps
assertion = pbalanceassertion p
@ -473,7 +472,7 @@ checkBalanceAssertion (errs,startbal) ps
-- assertion are discarded.
splitAssertions :: [Posting] -> [[Posting]]
splitAssertions ps
| null rest = [[]]
| null rest = []
| otherwise = (ps'++[head rest]):splitAssertions (tail rest)
where
(ps',rest) = break (isJust . pbalanceassertion) ps

View File

@ -101,7 +101,20 @@ hledgerdev -f - stats
>>>2
>>>=0
# 7. what should happen here ? Currently,
# 7. balances should accumulate (#195)
hledgerdev -f - stats
<<<
1/1
(a) 1F = 1F
(a) 2G = 2G
1/2
(a) 3F = 4F
>>> !/assertion failed/
>>>2
>>>=0
# 8. what should happen here ? Currently,
# in a, 3.4 EUR @@ $5.6 and -3.4 EUR cancel out (wrong ?)
# in b,
#