From 7a1b27927fc8d9931e8af97c7011287b5187420a Mon Sep 17 00:00:00 2001 From: MaysWind Date: Thu, 13 Feb 2025 23:30:43 +0800 Subject: [PATCH] support two digits year --- ...iif_transaction_data_file_importer_test.go | 37 +++++++++++++++++-- .../iif/iif_transaction_data_table.go | 5 +++ 2 files changed, 39 insertions(+), 3 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 77ba1c75..dab4115a 100644 --- a/pkg/converters/iif/iif_transaction_data_file_importer_test.go +++ b/pkg/converters/iif/iif_transaction_data_file_importer_test.go @@ -333,7 +333,7 @@ func TestIIFTransactionDataFileParseImportedData_ParseYearMonthDayFormatTime(t * assert.Equal(t, int64(1725408000), utils.GetUnixTimeFromTransactionTime(allNewTransactions[3].TransactionTime)) } -func TestIIFTransactionDataFileParseImportedData_ParseShortMonthDayFormatTime(t *testing.T) { +func TestIIFTransactionDataFileParseImportedData_ParseShortMonthDayYearFormatTime(t *testing.T) { converter := IifTransactionDataFileImporter context := core.NewNullContext() @@ -364,6 +364,37 @@ func TestIIFTransactionDataFileParseImportedData_ParseShortMonthDayFormatTime(t assert.Equal(t, int64(1725321600), utils.GetUnixTimeFromTransactionTime(allNewTransactions[2].TransactionTime)) } +func TestIIFTransactionDataFileParseImportedData_ParseShortMonthDayTwoDigitsYearFormatTime(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/24\tTest Account\t123.45\n"+ + "SPL\t9/01/24\tTest Account2\t-123.45\n"+ + "ENDTRNS\t\t\t\n"+ + "TRNS\t09/2/24\tTest Account\t123.45\n"+ + "SPL\t09/2/24\tTest Account2\t-123.45\n"+ + "ENDTRNS\t\t\t\n"+ + "TRNS\t9/3/24\tTest Account\t123.45\n"+ + "SPL\t9/3/24\tTest Account2\t-123.45\n"+ + "ENDTRNS\t\t\t\n"), 0, nil, nil, nil, nil, nil) + + assert.Nil(t, err) + + assert.Equal(t, 3, 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)) +} + func TestIIFTransactionDataFileParseImportedData_ParseInvalidTime(t *testing.T) { converter := IifTransactionDataFileImporter context := core.NewNullContext() @@ -377,8 +408,8 @@ func TestIIFTransactionDataFileParseImportedData_ParseInvalidTime(t *testing.T) "!TRNS\tDATE\tACCNT\tAMOUNT\n"+ "!SPL\tDATE\tACCNT\tAMOUNT\n"+ "!ENDTRNS\t\t\t\n"+ - "TRNS\t9/1/24\tTest Account\t123.45\n"+ - "SPL\t9/1/24\tTest Account2\t-123.45\n"+ + "TRNS\t09-01-2024\tTest Account\t123.45\n"+ + "SPL\t09-01-2024\tTest Account2\t-123.45\n"+ "ENDTRNS\t\t\t\n"), 0, nil, nil, nil, nil, nil) assert.EqualError(t, err, errs.ErrTransactionTimeInvalid.Message) diff --git a/pkg/converters/iif/iif_transaction_data_table.go b/pkg/converters/iif/iif_transaction_data_table.go index b7cf1c87..c3d885a0 100644 --- a/pkg/converters/iif/iif_transaction_data_table.go +++ b/pkg/converters/iif/iif_transaction_data_table.go @@ -3,6 +3,7 @@ package iif import ( "fmt" "strings" + "time" "github.com/mayswind/ezbookkeeping/pkg/converters/datatable" "github.com/mayswind/ezbookkeeping/pkg/core" @@ -316,6 +317,10 @@ func (t *iifTransactionDataRowIterator) parseTransactionTime(dataset *iifTransac day = dateParts[2] } + if len(year) == 2 { + year = utils.IntToString(time.Now().Year()/100) + year + } + if len(month) < 2 { month = "0" + month }