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 c1390f8c..637a3531 100644 --- a/pkg/converters/iif/iif_transaction_data_file_importer_test.go +++ b/pkg/converters/iif/iif_transaction_data_file_importer_test.go @@ -435,6 +435,29 @@ func TestIIFTransactionDataFileParseImportedData_ParseInvalidTime(t *testing.T) assert.EqualError(t, err, errs.ErrTransactionTimeInvalid.Message) } +func TestIIFTransactionDataFileParseImportedData_ParseAmountWithThousandsSeparator(t *testing.T) { + converter := IifTransactionDataFileImporter + context := core.NewNullContext() + + user := &models.User{ + Uid: 1234567890, + DefaultCurrency: "CNY", + } + + allNewTransactions, _, _, _, _, _, err := converter.ParseImportedData(context, user, []byte( + "!TRNS\tDATE\tACCNT\tAMOUNT\n"+ + "!SPL\tDATE\tACCNT\tAMOUNT\n"+ + "!ENDTRNS\t\t\t\n"+ + "TRNS\t9/01/2024\tTest Account\t123,456.78\n"+ + "SPL\t9/01/2024\tTest Account2\t-123,456.78\n"+ + "ENDTRNS\t\t\t\n"), 0, nil, nil, nil, nil, nil) + + assert.Nil(t, err) + + assert.Equal(t, 1, len(allNewTransactions)) + assert.Equal(t, int64(12345678), allNewTransactions[0].Amount) +} + func TestIIFTransactionDataFileParseImportedData_ParseInvalidAmount(t *testing.T) { converter := IifTransactionDataFileImporter context := core.NewNullContext() diff --git a/pkg/converters/iif/iif_transaction_data_table.go b/pkg/converters/iif/iif_transaction_data_table.go index ab27f215..43ff822b 100644 --- a/pkg/converters/iif/iif_transaction_data_table.go +++ b/pkg/converters/iif/iif_transaction_data_table.go @@ -201,13 +201,13 @@ func (t *iifTransactionDataRowIterator) parseTransaction(ctx core.Context, user accountName2, _ := dataset.getSplitDataItemValue(transactionData.splitData[0], iifTransactionAccountNameColumnName) amount1, _ := dataset.getTransactionDataItemValue(transactionData, iifTransactionAmountColumnName) amount2, _ := dataset.getSplitDataItemValue(transactionData.splitData[0], iifTransactionAmountColumnName) - amountNum1, err := utils.ParseAmount(amount1) + amountNum1, err := utils.ParseAmount(strings.ReplaceAll(amount1, ",", "")) if err != nil { return nil, errs.ErrAmountInvalid } - amountNum2, err := utils.ParseAmount(amount2) + amountNum2, err := utils.ParseAmount(strings.ReplaceAll(amount2, ",", "")) if err != nil { return nil, errs.ErrAmountInvalid