1
0
mirror of https://github.com/aclindsa/moneygo.git synced 2024-12-26 23:42:29 -05:00

Move RemoteId from transactions to splits

This is the more sensible location for it, since we import things on a
per-account basis - so there can be more than one remote ID associated
with a transaction, and the splits are the per-account portion of
transactions anyway.
This commit is contained in:
Aaron Lindsay 2017-06-09 05:37:42 -04:00
parent 2deaf8ccb5
commit 905e30d87b
2 changed files with 9 additions and 6 deletions

7
ofx.go
View File

@ -44,8 +44,7 @@ func (i *OFXImport) AddTransaction(tran *ofxgo.Transaction, account *Account) er
var t Transaction var t Transaction
t.Date = tran.DtPosted.UTC() t.Date = tran.DtPosted.UTC()
t.RemoteId = tran.FiTID.String()
// TODO CorrectFiTID/CorrectAction?
// Construct the description from whichever of the descriptive OFX fields are present // Construct the description from whichever of the descriptive OFX fields are present
if len(tran.Name) > 0 { if len(tran.Name) > 0 {
t.Description = string(tran.Name) t.Description = string(tran.Name)
@ -80,6 +79,10 @@ func (i *OFXImport) AddTransaction(tran *ofxgo.Transaction, account *Account) er
if account.SecurityId < 1 || account.SecurityId > int64(len(i.Securities)) { if account.SecurityId < 1 || account.SecurityId > int64(len(i.Securities)) {
return errors.New("Internal error: security index not found in OFX import\n") return errors.New("Internal error: security index not found in OFX import\n")
} }
s1.RemoteId = tran.FiTID.String()
// TODO CorrectFiTID/CorrectAction?
security := i.Securities[account.SecurityId-1] security := i.Securities[account.SecurityId-1]
s1.Amount = amt.FloatString(security.Precision) s1.Amount = amt.FloatString(security.Precision)
s2.Amount = amt.Neg(amt).FloatString(security.Precision) s2.Amount = amt.Neg(amt).FloatString(security.Precision)

View File

@ -34,9 +34,10 @@ type Split struct {
AccountId int64 AccountId int64
SecurityId int64 SecurityId int64
Number string // Check or reference number RemoteId string // unique ID from server, for detecting duplicates
Memo string Number string // Check or reference number
Amount string // String representation of decimal, suitable for passing to big.Rat.SetString() Memo string
Amount string // String representation of decimal, suitable for passing to big.Rat.SetString()
} }
func GetBigAmount(amt string) (*big.Rat, error) { func GetBigAmount(amt string) (*big.Rat, error) {
@ -63,7 +64,6 @@ func (s *Split) Valid() bool {
type Transaction struct { type Transaction struct {
TransactionId int64 TransactionId int64
UserId int64 UserId int64
RemoteId string // unique ID from server, for detecting duplicates
Description string Description string
Date time.Time Date time.Time
Splits []*Split `db:"-"` Splits []*Split `db:"-"`