mirror of
https://github.com/aclindsa/ofxgo.git
synced 2024-11-25 04:20:05 -05:00
92 lines
4.0 KiB
Go
92 lines
4.0 KiB
Go
package ofxgo
|
|
|
|
import (
|
|
"github.com/aclindsa/xml"
|
|
)
|
|
|
|
// CCStatementRequest represents a request for a credit card statement. It is
|
|
// used to request balances and/or transactions. See StatementRequest for the
|
|
// analog for all other bank accounts.
|
|
type CCStatementRequest struct {
|
|
XMLName xml.Name `xml:"CCSTMTTRNRQ"`
|
|
TrnUID UID `xml:"TRNUID"`
|
|
CltCookie String `xml:"CLTCOOKIE,omitempty"`
|
|
TAN String `xml:"TAN,omitempty"`
|
|
// TODO OFXEXTENSION
|
|
CCAcctFrom CCAcct `xml:"CCSTMTRQ>CCACCTFROM"`
|
|
DtStart *Date `xml:"CCSTMTRQ>INCTRAN>DTSTART,omitempty"`
|
|
DtEnd *Date `xml:"CCSTMTRQ>INCTRAN>DTEND,omitempty"`
|
|
Include Boolean `xml:"CCSTMTRQ>INCTRAN>INCLUDE"` // Include transactions (instead of just balance)
|
|
IncludePending Boolean `xml:"CCSTMTRQ>INCLUDEPENDING,omitempty"` // Include pending transactions
|
|
IncTranImg Boolean `xml:"CCSTMTRQ>INCTRANIMG,omitempty"` // Include transaction images
|
|
}
|
|
|
|
// Name returns the name of the top-level transaction XML/SGML element
|
|
func (r *CCStatementRequest) Name() string {
|
|
return "CCSTMTTRNRQ"
|
|
}
|
|
|
|
// Valid returns (true, nil) if this struct would be valid OFX if marshalled
|
|
// into XML/SGML
|
|
func (r *CCStatementRequest) Valid(version ofxVersion) (bool, error) {
|
|
if ok, err := r.TrnUID.Valid(); !ok {
|
|
return false, err
|
|
}
|
|
// TODO implement
|
|
return true, nil
|
|
}
|
|
|
|
// Type returns which message set this message belongs to (which Request
|
|
// element of type []Message it should appended to)
|
|
func (r *CCStatementRequest) Type() messageType {
|
|
return CreditCardRq
|
|
}
|
|
|
|
// CCStatementResponse represents a credit card statement, including its
|
|
// balances and possibly transactions. It is a response to CCStatementRequest,
|
|
// or sometimes provided as part of an OFX file downloaded manually from an FI.
|
|
type CCStatementResponse struct {
|
|
XMLName xml.Name `xml:"CCSTMTTRNRS"`
|
|
TrnUID UID `xml:"TRNUID"`
|
|
Status Status `xml:"STATUS"`
|
|
CltCookie String `xml:"CLTCOOKIE,omitempty"`
|
|
// TODO `xml:"OFXEXTENSION,omitempty"`
|
|
CurDef CurrSymbol `xml:"CCSTMTRS>CURDEF"`
|
|
CCAcctFrom CCAcct `xml:"CCSTMTRS>CCACCTFROM"`
|
|
BankTranList *TransactionList `xml:"CCSTMTRS>BANKTRANLIST,omitempty"`
|
|
//BANKTRANLISTP
|
|
BalAmt Amount `xml:"CCSTMTRS>LEDGERBAL>BALAMT"`
|
|
DtAsOf Date `xml:"CCSTMTRS>LEDGERBAL>DTASOF"`
|
|
AvailBalAmt *Amount `xml:"CCSTMTRS>AVAILBAL>BALAMT,omitempty"`
|
|
AvailDtAsOf *Date `xml:"CCSTMTRS>AVAILBAL>DTASOF,omitempty"`
|
|
CashAdvBalAmt Amount `xml:"CCSTMTRS>CASHADVBALAMT,omitempty"` // Only for CREDITLINE accounts, available balance for cash advances
|
|
IntRatePurch Amount `xml:"CCSTMTRS>INTRATEPURCH,omitempty"` // Current interest rate for purchases
|
|
IntRateCash Amount `xml:"CCSTMTRS>INTRATECASH,omitempty"` // Current interest rate for cash advances
|
|
IntRateXfer Amount `xml:"CCSTMTRS>INTRATEXFER,omitempty"` // Current interest rate for cash advances
|
|
RewardName String `xml:"CCSTMTRS>REWARDINFO>NAME,omitempty"` // Name of the reward program referred to by the next two elements
|
|
RewardBal Amount `xml:"CCSTMTRS>REWARDINFO>REWARDBAL,omitempty"` // Current balance of the reward program
|
|
RewardEarned Amount `xml:"CCSTMTRS>REWARDINFO>REWARDEARNED,omitempty"` // Reward amount earned YTD
|
|
BalList []Balance `xml:"CCSTMTRS>BALLIST>BAL,omitempty"`
|
|
MktgInfo String `xml:"CCSTMTRS>MKTGINFO,omitempty"` // Marketing information
|
|
}
|
|
|
|
// Name returns the name of the top-level transaction XML/SGML element
|
|
func (sr *CCStatementResponse) Name() string {
|
|
return "CCSTMTTRNRS"
|
|
}
|
|
|
|
// Valid returns (true, nil) if this struct was valid OFX when unmarshalled
|
|
func (sr *CCStatementResponse) Valid(version ofxVersion) (bool, error) {
|
|
if ok, err := sr.TrnUID.Valid(); !ok {
|
|
return false, err
|
|
}
|
|
//TODO implement
|
|
return true, nil
|
|
}
|
|
|
|
// Type returns which message set this message belongs to (which Response
|
|
// element of type []Message it belongs to)
|
|
func (sr *CCStatementResponse) Type() messageType {
|
|
return CreditCardRs
|
|
}
|