lib: support generation of (un)balanced virtual postings in csv reader
This commit is contained in:
parent
d8bf72ae73
commit
aa051a05cf
@ -752,7 +752,12 @@ transactionFromCsvRecord sourcepos rules record = t
|
|||||||
case account of
|
case account of
|
||||||
Nothing -> Nothing
|
Nothing -> Nothing
|
||||||
Just account ->
|
Just account ->
|
||||||
Just $ (number, posting {paccount=account, pamount=fromMaybe missingmixedamt amount, ptransaction=Just t, pbalanceassertion=toAssertion <$> balance, pcomment = comment})
|
Just $ (number, posting {paccount=accountNameWithoutPostingType account
|
||||||
|
, pamount=fromMaybe missingmixedamt amount
|
||||||
|
, ptransaction=Just t
|
||||||
|
, pbalanceassertion=toAssertion <$> balance
|
||||||
|
, pcomment = comment
|
||||||
|
, ptype = accountNamePostingType account})
|
||||||
|
|
||||||
parsePosting number =
|
parsePosting number =
|
||||||
parsePosting' number
|
parsePosting' number
|
||||||
@ -794,9 +799,12 @@ transactionFromCsvRecord sourcepos rules record = t
|
|||||||
postings =
|
postings =
|
||||||
case postings' of
|
case postings' of
|
||||||
-- To be compatible with the behavior of the old code which allowed two postings only, we enforce
|
-- To be compatible with the behavior of the old code which allowed two postings only, we enforce
|
||||||
-- second posting when rules generated just first of them.
|
-- second posting when rules generated just first of them, and posting is of type that should be balanced.
|
||||||
-- When we have srictly first and second posting, but second posting does not have amount, we fill it in.
|
-- When we have srictly first and second posting, but second posting does not have amount, we fill it in.
|
||||||
[("1",posting1)] ->
|
[("1",posting1)] ->
|
||||||
|
case ptype posting1 of
|
||||||
|
VirtualPosting -> [posting1]
|
||||||
|
_ ->
|
||||||
[posting1,improveUnknownAccountName (posting{paccount="expenses:unknown", pamount=costOfMixedAmount(-(pamount posting1)), ptransaction=Just t})]
|
[posting1,improveUnknownAccountName (posting{paccount="expenses:unknown", pamount=costOfMixedAmount(-(pamount posting1)), ptransaction=Just t})]
|
||||||
[("1",posting1),("2",posting2)] ->
|
[("1",posting1),("2",posting2)] ->
|
||||||
case (pamount posting1 == missingmixedamt , pamount posting2 == missingmixedamt) of
|
case (pamount posting1 == missingmixedamt , pamount posting2 == missingmixedamt) of
|
||||||
|
|||||||
@ -493,6 +493,40 @@ $ ./hledger-csv
|
|||||||
|
|
||||||
>=0
|
>=0
|
||||||
|
|
||||||
|
# 23. create unbalanced virtual posting
|
||||||
|
<
|
||||||
|
10/2009/09,Flubber Co,50,123
|
||||||
|
|
||||||
|
RULES
|
||||||
|
fields date, description, amount, balance
|
||||||
|
date-format %d/%Y/%m
|
||||||
|
currency $
|
||||||
|
account1 (assets:myacct)
|
||||||
|
|
||||||
|
$ ./hledger-csv
|
||||||
|
2009/09/10 Flubber Co
|
||||||
|
(assets:myacct) $50 = $123
|
||||||
|
|
||||||
|
>=0
|
||||||
|
|
||||||
|
# 24. create balanced virtual posting
|
||||||
|
<
|
||||||
|
10/2009/09,Flubber Co,50,-50
|
||||||
|
|
||||||
|
RULES
|
||||||
|
fields date, description, amount1, amount2
|
||||||
|
date-format %d/%Y/%m
|
||||||
|
currency $
|
||||||
|
account1 [assets:myacct]
|
||||||
|
account2 [assets:another-acct]
|
||||||
|
|
||||||
|
$ ./hledger-csv
|
||||||
|
2009/09/10 Flubber Co
|
||||||
|
[assets:myacct] $50
|
||||||
|
[assets:another-acct] $-50
|
||||||
|
|
||||||
|
>=0
|
||||||
|
|
||||||
|
|
||||||
# . TODO: without --separator gives obscure error
|
# . TODO: without --separator gives obscure error
|
||||||
# |
|
# |
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user