Added account-field to Convert.hs

This commit is contained in:
Dmitry Astapov 2011-01-22 09:37:25 +00:00
parent e37d3a522d
commit c78fe9dd5d
2 changed files with 19 additions and 3 deletions

View File

@ -561,9 +561,13 @@ Notes:
- Definitions must come first, one per line, all in one
paragraph. Each is a name and a value separated by whitespace.
Supported names are: base-account, date-field, date-format, status-field,
code-field, description-field, amount-field, currency-field,
code-field, description-field, amount-field, currency-field, account-field,
currency. All are optional and will use defaults if not specified.
- If your file contains data corresponding to several accounts (for example - bulk
export from other accounting software), you can use account-field to override
value of base-account. When account-field value is empty, base-account will be used.
- The date-format field contains the expected format for the input dates:
this is the same as that accepted by the Haskell
[formatTime](http://hackage.haskell.org/packages/archive/time/latest/doc/html/Data-Time-Format.html#v:formatTime)

View File

@ -42,6 +42,7 @@ data CsvRules = CsvRules {
amountField :: Maybe FieldPosition,
currencyField :: Maybe FieldPosition,
baseCurrency :: Maybe String,
accountField :: Maybe FieldPosition,
baseAccount :: AccountName,
accountRules :: [AccountRule]
} deriving (Show, Eq)
@ -55,6 +56,7 @@ nullrules = CsvRules {
amountField=Nothing,
currencyField=Nothing,
baseCurrency=Nothing,
accountField=Nothing,
baseAccount="unknown",
accountRules=[]
}
@ -174,6 +176,7 @@ definitions = do
,descriptionfield
,amountfield
,currencyfield
,accountfield
,basecurrency
,baseaccount
,commentline
@ -229,6 +232,14 @@ currencyfield = do
r <- getState
setState r{currencyField=readMay v}
accountfield = do
string "account-field"
many1 spacenonewline
v <- restofline
r <- getState
setState r{accountField=readMay v}
basecurrency = do
string "currency"
many1 spacenonewline
@ -288,6 +299,7 @@ transactionFromCsvRecord rules fields =
desc = maybe "" (atDef "" fields) (descriptionField rules)
comment = ""
precomment = ""
baseacc = maybe (baseAccount rules) (atDef "" fields) (accountField rules)
amountstr = maybe "" (atDef "" fields) (amountField rules)
amountstr' = strnegate amountstr where strnegate ('-':s) = s
strnegate s = '-':s
@ -322,7 +334,7 @@ transactionFromCsvRecord rules fields =
},
Posting {
pstatus=False,
paccount=baseAccount rules,
paccount=baseacc,
pamount=(-baseamount),
pcomment="",
ptype=RegularPosting,