From 76f5f125638c409744d7a6feca8e7594fa99c3a3 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Sun, 27 Oct 2024 17:15:59 +0800 Subject: [PATCH] support year/month/day format date --- ...iif_transaction_data_file_importer_test.go | 44 +++++++++++++++---- .../iif/iif_transaction_data_table.go | 6 +++ 2 files changed, 41 insertions(+), 9 deletions(-) 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 73137a28..c1390f8c 100644 --- a/pkg/converters/iif/iif_transaction_data_file_importer_test.go +++ b/pkg/converters/iif/iif_transaction_data_file_importer_test.go @@ -332,6 +332,41 @@ func TestIIFTransactionDataFileParseImportedData_ParseNameAsTransferCategory(t * assert.Equal(t, "Test Category", allNewSubTransferCategories[0].Name) } +func TestIIFTransactionDataFileParseImportedData_ParseYearMonthDayFormatTime(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\t2024/09/01\tTest Account\t123.45\n"+ + "SPL\t2024/09/01\tTest Account2\t-123.45\n"+ + "ENDTRNS\t\t\t\n"+ + "TRNS\t2024/09/2\tTest Account\t123.45\n"+ + "SPL\t2024/09/2\tTest Account2\t-123.45\n"+ + "ENDTRNS\t\t\t\n"+ + "TRNS\t2024/9/03\tTest Account\t123.45\n"+ + "SPL\t2024/9/03\tTest Account2\t-123.45\n"+ + "ENDTRNS\t\t\t\n"+ + "TRNS\t2024/9/4\tTest Account\t123.45\n"+ + "SPL\t2024/9/4\tTest Account2\t-123.45\n"+ + "ENDTRNS\t\t\t\n"), 0, nil, nil, nil, nil, nil) + + assert.Nil(t, err) + + assert.Equal(t, 4, len(allNewTransactions)) + assert.Equal(t, int64(1725148800), utils.GetUnixTimeFromTransactionTime(allNewTransactions[0].TransactionTime)) + assert.Equal(t, int64(1725235200), utils.GetUnixTimeFromTransactionTime(allNewTransactions[1].TransactionTime)) + assert.Equal(t, int64(1725321600), utils.GetUnixTimeFromTransactionTime(allNewTransactions[2].TransactionTime)) + assert.Equal(t, int64(1725408000), utils.GetUnixTimeFromTransactionTime(allNewTransactions[3].TransactionTime)) +} + func TestIIFTransactionDataFileParseImportedData_ParseShortMonthDayFormatTime(t *testing.T) { converter := IifTransactionDataFileImporter context := core.NewNullContext() @@ -373,15 +408,6 @@ func TestIIFTransactionDataFileParseImportedData_ParseInvalidTime(t *testing.T) } _, _, _, _, _, _, err := converter.ParseImportedData(context, user, []byte( - "!TRNS\tDATE\tACCNT\tAMOUNT\n"+ - "!SPL\tDATE\tACCNT\tAMOUNT\n"+ - "!ENDTRNS\t\t\t\n"+ - "TRNS\t2024/09/01\tTest Account\t123.45\n"+ - "SPL\t2024/09/01\tTest Account2\t-123.45\n"+ - "ENDTRNS\t\t\t\n"), 0, nil, nil, nil, nil, nil) - assert.EqualError(t, err, errs.ErrTransactionTimeInvalid.Message) - - _, _, _, _, _, _, err = converter.ParseImportedData(context, user, []byte( "!TRNS\tDATE\tACCNT\tAMOUNT\n"+ "!SPL\tDATE\tACCNT\tAMOUNT\n"+ "!ENDTRNS\t\t\t\n"+ diff --git a/pkg/converters/iif/iif_transaction_data_table.go b/pkg/converters/iif/iif_transaction_data_table.go index e36f380a..ab27f215 100644 --- a/pkg/converters/iif/iif_transaction_data_table.go +++ b/pkg/converters/iif/iif_transaction_data_table.go @@ -314,6 +314,12 @@ func (t *iifTransactionDataRowIterator) parseTransactionTime(dataset *iifTransac day := dateParts[1] year := dateParts[2] + if utils.IsValidYearMonthDayLongOrShortDateFormat(date) { + year = dateParts[0] + month = dateParts[1] + day = dateParts[2] + } + if len(month) < 2 { month = "0" + month }