diff --git a/pkg/converters/ofx/ofx_transaction_data_file_importer_test.go b/pkg/converters/ofx/ofx_transaction_data_file_importer_test.go index e8b47df1..e92e4c2d 100644 --- a/pkg/converters/ofx/ofx_transaction_data_file_importer_test.go +++ b/pkg/converters/ofx/ofx_transaction_data_file_importer_test.go @@ -144,6 +144,89 @@ func TestOFXTransactionDataFileParseImportedData_MinimumValidData(t *testing.T) assert.Equal(t, "", allNewSubTransferCategories[0].Name) } +func TestOFXTransactionDataFileParseImportedData_ParseAccountTo(t *testing.T) { + converter := OFXTransactionDataImporter + context := core.NewNullContext() + + user := &models.User{ + Uid: 1234567890, + DefaultCurrency: "CNY", + } + + allNewTransactions, allNewAccounts, _, _, _, _, err := converter.ParseImportedData(context, user, []byte( + ""+ + " "+ + " "+ + " "+ + " CNY"+ + " "+ + " 123"+ + " "+ + " "+ + " "+ + " XFER"+ + " 20240901012345.000[+8:CST]"+ + " -123.45"+ + " "+ + " 456"+ + " "+ + " "+ + " "+ + " "+ + " "+ + " "+ + " "+ + " "+ + " "+ + " CNY"+ + " "+ + " 456"+ + " "+ + " "+ + " "+ + " XFER"+ + " 20240902012345.000[+8:CST]"+ + " -1.23"+ + " "+ + " 789"+ + " "+ + " "+ + " "+ + " "+ + " "+ + " "+ + ""), 0, nil, nil, nil, nil, nil) + + assert.Nil(t, err) + + assert.Equal(t, 2, len(allNewTransactions)) + assert.Equal(t, 3, len(allNewAccounts)) + + assert.Equal(t, int64(12345), allNewTransactions[0].Amount) + assert.Equal(t, "123", allNewTransactions[0].OriginalSourceAccountName) + assert.Equal(t, "CNY", allNewTransactions[0].OriginalSourceAccountCurrency) + assert.Equal(t, "456", allNewTransactions[0].OriginalDestinationAccountName) + assert.Equal(t, "CNY", allNewTransactions[0].OriginalDestinationAccountCurrency) + + assert.Equal(t, int64(123), allNewTransactions[1].Amount) + assert.Equal(t, "456", allNewTransactions[1].OriginalSourceAccountName) + assert.Equal(t, "CNY", allNewTransactions[1].OriginalSourceAccountCurrency) + assert.Equal(t, "789", allNewTransactions[1].OriginalDestinationAccountName) + assert.Equal(t, "CNY", allNewTransactions[1].OriginalDestinationAccountCurrency) + + assert.Equal(t, int64(1234567890), allNewAccounts[0].Uid) + assert.Equal(t, "123", allNewAccounts[0].Name) + assert.Equal(t, "CNY", allNewAccounts[0].Currency) + + assert.Equal(t, int64(1234567890), allNewAccounts[1].Uid) + assert.Equal(t, "456", allNewAccounts[1].Name) + assert.Equal(t, "CNY", allNewAccounts[1].Currency) + + assert.Equal(t, int64(1234567890), allNewAccounts[2].Uid) + assert.Equal(t, "789", allNewAccounts[2].Name) + assert.Equal(t, "CNY", allNewAccounts[2].Currency) +} + func TestOFXTransactionDataFileParseImportedData_ParseValidTransactionTime(t *testing.T) { converter := OFXTransactionDataImporter context := core.NewNullContext() diff --git a/pkg/converters/ofx/ofx_transaction_table.go b/pkg/converters/ofx/ofx_transaction_table.go index 6fea776c..c8c6d744 100644 --- a/pkg/converters/ofx/ofx_transaction_table.go +++ b/pkg/converters/ofx/ofx_transaction_table.go @@ -175,6 +175,7 @@ func (t *ofxTransactionDataRowIterator) parseTransaction(ctx core.Context, user } if data[datatable.TRANSACTION_DATA_TABLE_TRANSACTION_TYPE] == ofxTransactionTypeNameMapping[models.TRANSACTION_TYPE_TRANSFER] { + data[datatable.TRANSACTION_DATA_TABLE_RELATED_ACCOUNT_NAME] = ofxTransaction.ToAccountId data[datatable.TRANSACTION_DATA_TABLE_RELATED_ACCOUNT_CURRENCY] = data[datatable.TRANSACTION_DATA_TABLE_ACCOUNT_CURRENCY] data[datatable.TRANSACTION_DATA_TABLE_RELATED_AMOUNT] = data[datatable.TRANSACTION_DATA_TABLE_AMOUNT] }