csv: accept a balance field assignment instead of an amount (#1000)
This commit is contained in:
parent
72377a54c4
commit
61e8ccbf88
@ -452,13 +452,19 @@ validateRules :: CsvRules -> ExceptT String IO CsvRules
|
||||
validateRules rules = do
|
||||
unless (isAssigned "date") $ ExceptT $ return $ Left "Please specify (at top level) the date field. Eg: date %1\n"
|
||||
unless ((amount && not (amountin || amountout)) ||
|
||||
(not amount && (amountin && amountout)))
|
||||
$ ExceptT $ return $ Left "Please specify (at top level) either the amount field, or both the amount-in and amount-out fields. Eg: amount %2\n"
|
||||
(not amount && (amountin && amountout)) ||
|
||||
balance)
|
||||
$ ExceptT $ return $ Left $ unlines [
|
||||
"Please specify (as a top level CSV rule) either the amount field,"
|
||||
,"both the amount-in and amount-out fields, or the balance field. Eg:"
|
||||
,"amount %2\n"
|
||||
]
|
||||
ExceptT $ return $ Right rules
|
||||
where
|
||||
amount = isAssigned "amount"
|
||||
amountin = isAssigned "amount-in"
|
||||
amount = isAssigned "amount"
|
||||
amountin = isAssigned "amount-in"
|
||||
amountout = isAssigned "amount-out"
|
||||
balance = isAssigned "balance" || isAssigned "balance1" || isAssigned "balance2"
|
||||
isAssigned f = isJust $ getEffectiveAssignment rules [] f
|
||||
|
||||
-- parsers
|
||||
|
||||
@ -35,7 +35,9 @@ You can override this with the `--rules-file` option.
|
||||
If the rules file does not exist, hledger will auto-create one with
|
||||
some example rules, which you'll need to adjust.
|
||||
|
||||
At minimum, the rules file must identify the `date` and `amount` fields.
|
||||
At minimum, the rules file must identify the date (`date`) and
|
||||
amount (`amount`, or `amount-in` and `amount-out`, or one of `balance`/`balance1`/`balance2`)
|
||||
fields.
|
||||
It may also be necessary to specify the date format, and the number of header lines to skip. Eg:
|
||||
```
|
||||
fields date, _, _, amount
|
||||
|
||||
Loading…
Reference in New Issue
Block a user