mirror of
https://github.com/aclindsa/ofxgo.git
synced 2024-11-22 03:30:04 -05:00
Bank Transactions: Use Currency structs, not CurrSymbol directly
This commit is contained in:
parent
a3e42fc903
commit
8712be5a9d
8
bank.go
8
bank.go
@ -124,8 +124,8 @@ type Transaction struct {
|
|||||||
CCAcctTo *CCAcct `xml:"CCACCTTO,omitempty"` // If the transfer was to a credit card account we have the account information for
|
CCAcctTo *CCAcct `xml:"CCACCTTO,omitempty"` // If the transfer was to a credit card account we have the account information for
|
||||||
Memo String `xml:"MEMO,omitempty"` // Extra information (not in NAME)
|
Memo String `xml:"MEMO,omitempty"` // Extra information (not in NAME)
|
||||||
ImageData []ImageData `xml:"IMAGEDATA,omitempty"`
|
ImageData []ImageData `xml:"IMAGEDATA,omitempty"`
|
||||||
Currency CurrSymbol `xml:"CURRENCY,omitempty"` // If different from CURDEF in STMTTRS
|
Currency Currency `xml:"CURRENCY,omitempty"` // If different from CURDEF in STMTTRS
|
||||||
OrigCurrency CurrSymbol `xml:"ORIGCURRENCY,omitempty"` // If different from CURDEF in STMTTRS
|
OrigCurrency Currency `xml:"ORIGCURRENCY,omitempty"` // If different from CURDEF in STMTTRS
|
||||||
Inv401kSource inv401kSource `xml:"INV401KSOURCE,omitempty"` // One of PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST (Default if not present is OTHERNONVEST. The following cash source types are subject to vesting: MATCH, PROFITSHARING, and OTHERVEST.)
|
Inv401kSource inv401kSource `xml:"INV401KSOURCE,omitempty"` // One of PRETAX, AFTERTAX, MATCH, PROFITSHARING, ROLLOVER, OTHERVEST, OTHERNONVEST (Default if not present is OTHERNONVEST. The following cash source types are subject to vesting: MATCH, PROFITSHARING, and OTHERVEST.)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,8 +212,8 @@ type PendingTransaction struct {
|
|||||||
ExtdName String `xml:"EXTDNAME,omitempty"` // Extended name of payee or transaction description
|
ExtdName String `xml:"EXTDNAME,omitempty"` // Extended name of payee or transaction description
|
||||||
Memo String `xml:"MEMO,omitempty"` // Extra information (not in NAME)
|
Memo String `xml:"MEMO,omitempty"` // Extra information (not in NAME)
|
||||||
ImageData []ImageData `xml:"IMAGEDATA,omitempty"`
|
ImageData []ImageData `xml:"IMAGEDATA,omitempty"`
|
||||||
Currency CurrSymbol `xml:"CURRENCY,omitempty"` // If different from CURDEF in STMTTRS
|
Currency Currency `xml:"CURRENCY,omitempty"` // If different from CURDEF in STMTTRS
|
||||||
OrigCurrency CurrSymbol `xml:"ORIGCURRENCY,omitempty"` // If different from CURDEF in STMTTRS
|
OrigCurrency Currency `xml:"ORIGCURRENCY,omitempty"` // If different from CURDEF in STMTTRS
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valid returns (true, nil) if this struct is valid OFX
|
// Valid returns (true, nil) if this struct is valid OFX
|
||||||
|
@ -78,9 +78,9 @@ func bankTransactions() {
|
|||||||
func printTransaction(defCurrency ofxgo.CurrSymbol, tran *ofxgo.Transaction) {
|
func printTransaction(defCurrency ofxgo.CurrSymbol, tran *ofxgo.Transaction) {
|
||||||
currency := defCurrency
|
currency := defCurrency
|
||||||
if ok, _ := tran.Currency.Valid(); ok {
|
if ok, _ := tran.Currency.Valid(); ok {
|
||||||
currency = tran.Currency
|
currency = tran.Currency.CurSym
|
||||||
} else if ok, _ := tran.OrigCurrency.Valid(); ok {
|
} else if ok, _ := tran.OrigCurrency.Valid(); ok {
|
||||||
currency = tran.OrigCurrency
|
currency = tran.OrigCurrency.CurSym
|
||||||
}
|
}
|
||||||
|
|
||||||
var name string
|
var name string
|
||||||
|
@ -61,9 +61,9 @@ func ccTransactions() {
|
|||||||
for _, tran := range stmt.BankTranList.Transactions {
|
for _, tran := range stmt.BankTranList.Transactions {
|
||||||
currency := stmt.CurDef
|
currency := stmt.CurDef
|
||||||
if ok, _ := tran.Currency.Valid(); ok {
|
if ok, _ := tran.Currency.Valid(); ok {
|
||||||
currency = tran.Currency
|
currency = tran.Currency.CurSym
|
||||||
} else if ok, _ := tran.OrigCurrency.Valid(); ok {
|
} else if ok, _ := tran.OrigCurrency.Valid(); ok {
|
||||||
currency = tran.OrigCurrency
|
currency = tran.OrigCurrency.CurSym
|
||||||
}
|
}
|
||||||
|
|
||||||
var name string
|
var name string
|
||||||
|
10
common.go
10
common.go
@ -316,3 +316,13 @@ type Currency struct {
|
|||||||
CurRate Amount `xml:"CURRATE"` // Ratio of <CURDEF> currency to <CURSYM> currency
|
CurRate Amount `xml:"CURRATE"` // Ratio of <CURDEF> currency to <CURSYM> currency
|
||||||
CurSym CurrSymbol `xml:"CURSYM"` // ISO-4217 3-character currency identifier
|
CurSym CurrSymbol `xml:"CURSYM"` // ISO-4217 3-character currency identifier
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Valid returns whether the Currency is valid according to the OFX spec
|
||||||
|
func (c Currency) Valid() (bool, error) {
|
||||||
|
if c.CurRate.IsInt() && c.CurRate.Num().Int64() == 0 {
|
||||||
|
return false, errors.New("CurRate may not be zero")
|
||||||
|
} else if ok, err := c.CurSym.Valid(); !ok {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user