Fix parsing of blank/empty balances + testcases (#539)
This commit is contained in:
parent
451f9d7307
commit
c4c4be5fad
@ -664,9 +664,10 @@ transactionFromCsvRecord sourcepos rules record = t
|
|||||||
_ -> "expenses:unknown"
|
_ -> "expenses:unknown"
|
||||||
account1 = T.pack $ maybe "" render (mfieldtemplate "account1") `or` defaccount1
|
account1 = T.pack $ maybe "" render (mfieldtemplate "account1") `or` defaccount1
|
||||||
account2 = T.pack $ maybe "" render (mfieldtemplate "account2") `or` defaccount2
|
account2 = T.pack $ maybe "" render (mfieldtemplate "account2") `or` defaccount2
|
||||||
balance = maybe Nothing parsebalance $ mfieldtemplate "balance"
|
balance = maybe Nothing (parsebalance.render) $ mfieldtemplate "balance"
|
||||||
parsebalance "" = Nothing
|
parsebalance str
|
||||||
parsebalance str = Just $ either (balanceerror str) id $ runParser (evalStateT (amountp <* eof) mempty) "" $ T.pack $ (currency++) $ negateIfParenthesised $ render str
|
| all isSpace str = Nothing
|
||||||
|
| otherwise = Just $ either (balanceerror str) id $ runParser (evalStateT (amountp <* eof) mempty) "" $ T.pack $ (currency++) $ negateIfParenthesised str
|
||||||
balanceerror str err = error' $ unlines
|
balanceerror str err = error' $ unlines
|
||||||
["error: could not parse \""++str++"\" as balance amount"
|
["error: could not parse \""++str++"\" as balance amount"
|
||||||
,showRecord record
|
,showRecord record
|
||||||
|
|||||||
@ -67,4 +67,29 @@
|
|||||||
|
|
||||||
>>>2 /using conversion rules file.*t.rules/
|
>>>2 /using conversion rules file.*t.rules/
|
||||||
>>>=0
|
>>>=0
|
||||||
|
# 7. read CSV with blank balance field
|
||||||
|
rm -rf t.rules$$; printf 'fields date, description, amount, balance\ndate-format %%d/%%Y/%%m\ncurrency $\naccount1 assets:myacct\n' >t.rules$$; echo '10/2009/09,Flubber Co,50,123\n11/2009/09,Blubber Co,60,' | hledger -f- print --rules-file t.rules$$; rm -rf t.rules$$
|
||||||
|
>>>
|
||||||
|
2009/09/10 Flubber Co
|
||||||
|
income:unknown $-50
|
||||||
|
assets:myacct $50 = $123
|
||||||
|
|
||||||
|
2009/09/11 Blubber Co
|
||||||
|
income:unknown $-60
|
||||||
|
assets:myacct $60
|
||||||
|
|
||||||
|
>>>2 /using conversion rules file.*t.rules/
|
||||||
|
>>>=0
|
||||||
|
# 8. read CSV with empty balance field
|
||||||
|
rm -rf t.rules$$; printf 'fields date, description, amount, balance\ndate-format %%d/%%Y/%%m\ncurrency $\naccount1 assets:myacct\n' >t.rules$$; echo '10/2009/09,Flubber Co,50,123\n11/2009/09,Blubber Co,60, ' | hledger -f- print --rules-file t.rules$$; rm -rf t.rules$$
|
||||||
|
>>>
|
||||||
|
2009/09/10 Flubber Co
|
||||||
|
income:unknown $-50
|
||||||
|
assets:myacct $50 = $123
|
||||||
|
|
||||||
|
2009/09/11 Blubber Co
|
||||||
|
income:unknown $-60
|
||||||
|
assets:myacct $60
|
||||||
|
|
||||||
|
>>>2 /using conversion rules file.*t.rules/
|
||||||
|
>>>=0
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user