diff --git a/pkg/converters/iif/iif_transaction_data_file_importer_test.go b/pkg/converters/iif/iif_transaction_data_file_importer_test.go index 637a3531..77ba1c75 100644 --- a/pkg/converters/iif/iif_transaction_data_file_importer_test.go +++ b/pkg/converters/iif/iif_transaction_data_file_importer_test.go @@ -183,7 +183,7 @@ func TestIIFTransactionDataFileParseImportedData_MultipleDataset(t *testing.T) { "!TRNS\tTRNSID\tTRNSTYPE\tDATE\tACCNT\tNAME\tCLASS\tAMOUNT\tDOCNUM\tMEMO\tCLEAR\tTOPRINT\tADDR5\tDUEDATE\tTERMS\n"+ "!SPL\tSPLID\tTRNSTYPE\tDATE\tACCNT\tNAME\tCLASS\tAMOUNT\tDOCNUM\tMEMO\tCLEAR\tQNTY\tREIMBEXP\tSERVICEDATE\tOTHER2\n"+ "!ENDTRNS\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n"+ - "TRNS\t\tTRANSFER\t09/04/2024\tTest Account3\tTest Category\tTest Class\t123.45\t\t\t\t\t\t\t\n"+ + "TRNS\t\tTRANSFER\t09/04/2024\tTest Account3\t\tTest Class\t123.45\t\t\t\t\t\t\t\n"+ "SPL\t\tTRANSFER\t09/04/2024\tTest Account4\t\t\t-123.45\t\t\t\t\t\t\t\n"+ "ENDTRNS\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n"+ "!CLASS\tNAME\tHIDDEN\n"+ @@ -235,7 +235,7 @@ func TestIIFTransactionDataFileParseImportedData_MultipleDataset(t *testing.T) { assert.Equal(t, int64(12345), allNewTransactions[3].Amount) assert.Equal(t, "Test Account4", allNewTransactions[3].OriginalSourceAccountName) assert.Equal(t, "Test Account3", allNewTransactions[3].OriginalDestinationAccountName) - assert.Equal(t, "Test Category", allNewTransactions[3].OriginalCategoryName) + assert.Equal(t, "", allNewTransactions[3].OriginalCategoryName) assert.Equal(t, int64(1234567890), allNewTransactions[4].Uid) assert.Equal(t, models.TRANSACTION_DB_TYPE_TRANSFER_OUT, allNewTransactions[4].Type) @@ -298,40 +298,6 @@ func TestIIFTransactionDataFileParseImportedData_ParseCategoryAndSubCategory(t * assert.Equal(t, "Test Category2", allNewSubExpenseCategories[0].Name) } -func TestIIFTransactionDataFileParseImportedData_ParseNameAsTransferCategory(t *testing.T) { - converter := IifTransactionDataFileImporter - context := core.NewNullContext() - - user := &models.User{ - Uid: 1234567890, - DefaultCurrency: "CNY", - } - - allNewTransactions, _, _, _, allNewSubTransferCategories, _, err := converter.ParseImportedData(context, user, []byte( - "!TRNS\tDATE\tACCNT\tNAME\tAMOUNT\n"+ - "!SPL\tDATE\tACCNT\tNAME\tAMOUNT\n"+ - "!ENDTRNS\t\t\t\t\n"+ - "TRNS\t09/01/2024\tTest Account\tTest Category\t-123.45\n"+ - "SPL\t09/01/2024\tTest Account2\t\t123.45\n"+ - "ENDTRNS\t\t\t\t\n"), 0, nil, nil, nil, nil, nil) - - assert.Nil(t, err) - - assert.Equal(t, 1, len(allNewTransactions)) - assert.Equal(t, 1, len(allNewSubTransferCategories)) - - assert.Equal(t, int64(1234567890), allNewTransactions[0].Uid) - assert.Equal(t, models.TRANSACTION_DB_TYPE_TRANSFER_OUT, allNewTransactions[0].Type) - assert.Equal(t, int64(1725148800), utils.GetUnixTimeFromTransactionTime(allNewTransactions[0].TransactionTime)) - assert.Equal(t, int64(12345), allNewTransactions[0].Amount) - assert.Equal(t, "Test Account", allNewTransactions[0].OriginalSourceAccountName) - assert.Equal(t, "Test Account2", allNewTransactions[0].OriginalDestinationAccountName) - assert.Equal(t, "Test Category", allNewTransactions[0].OriginalCategoryName) - - assert.Equal(t, int64(1234567890), allNewSubTransferCategories[0].Uid) - assert.Equal(t, "Test Category", allNewSubTransferCategories[0].Name) -} - func TestIIFTransactionDataFileParseImportedData_ParseYearMonthDayFormatTime(t *testing.T) { converter := IifTransactionDataFileImporter context := core.NewNullContext() @@ -496,16 +462,28 @@ func TestIIFTransactionDataFileParseImportedData_ParseDescription(t *testing.T) } allNewTransactions, _, _, _, _, _, err := converter.ParseImportedData(context, user, []byte( - "!TRNS\tDATE\tACCNT\tAMOUNT\tMEMO\n"+ - "!SPL\tDATE\tACCNT\tAMOUNT\tMEMO\n"+ - "!ENDTRNS\t\t\t\t\n"+ - "TRNS\t09/01/2024\tTest Account\t123.45\t\"foo bar\t#test\"\n"+ - "SPL\t09/01/2024\tTest Account2\t-123.45\t\n"+ - "ENDTRNS\t\t\t\t\n"), 0, nil, nil, nil, nil, nil) + "!TRNS\tDATE\tACCNT\tNAME\tAMOUNT\tMEMO\n"+ + "!SPL\tDATE\tACCNT\tNAME\tAMOUNT\tMEMO\n"+ + "!ENDTRNS\t\t\t\t\t\n"+ + "TRNS\t09/01/2024\tTest Account\t\"Test\"\t123.45\t\"foo bar\t#test\"\n"+ + "SPL\t09/01/2024\tTest Account2\t\t-123.45\t\n"+ + "ENDTRNS\t\t\t\t\t\n"), 0, nil, nil, nil, nil, nil) assert.Nil(t, err) assert.Equal(t, 1, len(allNewTransactions)) assert.Equal(t, "foo bar\t#test", allNewTransactions[0].Comment) + + allNewTransactions, _, _, _, _, _, err = converter.ParseImportedData(context, user, []byte( + "!TRNS\tDATE\tACCNT\tNAME\tAMOUNT\tMEMO\n"+ + "!SPL\tDATE\tACCNT\tNAME\tAMOUNT\tMEMO\n"+ + "!ENDTRNS\t\t\t\t\t\n"+ + "TRNS\t09/01/2024\tTest Account\tTest\t123.45\t\n"+ + "SPL\t09/01/2024\tTest Account2\t\t-123.45\t\n"+ + "ENDTRNS\t\t\t\t\t\n"), 0, nil, nil, nil, nil, nil) + + assert.Nil(t, err) + assert.Equal(t, 1, len(allNewTransactions)) + assert.Equal(t, "Test", allNewTransactions[0].Comment) } func TestIIFTransactionDataFileParseImportedData_NotSupportedToParseSplitTransaction(t *testing.T) { diff --git a/pkg/converters/iif/iif_transaction_data_table.go b/pkg/converters/iif/iif_transaction_data_table.go index 43ff822b..9e376ee2 100644 --- a/pkg/converters/iif/iif_transaction_data_table.go +++ b/pkg/converters/iif/iif_transaction_data_table.go @@ -213,8 +213,6 @@ func (t *iifTransactionDataRowIterator) parseTransaction(ctx core.Context, user return nil, errs.ErrAmountInvalid } - name, _ := dataset.getTransactionDataItemValue(transactionData, iifTransactionNameColumnName) - if transactionType == iifTransactionTypeBeginningBalance { // balance modification data[datatable.TRANSACTION_DATA_TABLE_TRANSACTION_TYPE] = iifTransactionTypeNameMapping[models.TRANSACTION_TYPE_MODIFY_BALANCE] data[datatable.TRANSACTION_DATA_TABLE_ACCOUNT_NAME] = accountName1 @@ -281,7 +279,7 @@ func (t *iifTransactionDataRowIterator) parseTransaction(ctx core.Context, user data[datatable.TRANSACTION_DATA_TABLE_AMOUNT] = utils.FormatAmount(-amountNum) } else { data[datatable.TRANSACTION_DATA_TABLE_TRANSACTION_TYPE] = iifTransactionTypeNameMapping[models.TRANSACTION_TYPE_TRANSFER] - data[datatable.TRANSACTION_DATA_TABLE_SUB_CATEGORY] = name + data[datatable.TRANSACTION_DATA_TABLE_SUB_CATEGORY] = "" if amountNum1 >= 0 { data[datatable.TRANSACTION_DATA_TABLE_ACCOUNT_NAME] = accountName2 @@ -296,8 +294,13 @@ func (t *iifTransactionDataRowIterator) parseTransaction(ctx core.Context, user } } - memo, _ := dataset.getTransactionDataItemValue(transactionData, iifTransactionMemoColumnName) - data[datatable.TRANSACTION_DATA_TABLE_DESCRIPTION] = memo + if memo, _ := dataset.getTransactionDataItemValue(transactionData, iifTransactionMemoColumnName); memo != "" { + data[datatable.TRANSACTION_DATA_TABLE_DESCRIPTION] = memo + } else if name, _ := dataset.getTransactionDataItemValue(transactionData, iifTransactionNameColumnName); name != "" { + data[datatable.TRANSACTION_DATA_TABLE_DESCRIPTION] = name + } else { + data[datatable.TRANSACTION_DATA_TABLE_DESCRIPTION] = "" + } return data, nil }