From 89199eed8b621562434a5e172b2f95337f73c7d0 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Fri, 20 Mar 2026 23:41:17 +0800 Subject: [PATCH] support importing WeChat statements with the latest format that includes thousand separators (#534) --- ...transaction_data_csv_file_importer_test.go | 23 +++++++++++++++++++ .../wechat_pay_transaction_data_row_parser.go | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/pkg/converters/wechat/wechat_pay_transaction_data_csv_file_importer_test.go b/pkg/converters/wechat/wechat_pay_transaction_data_csv_file_importer_test.go index fa52ed2c..c7c7b3e8 100644 --- a/pkg/converters/wechat/wechat_pay_transaction_data_csv_file_importer_test.go +++ b/pkg/converters/wechat/wechat_pay_transaction_data_csv_file_importer_test.go @@ -170,6 +170,29 @@ func TestWeChatPayCsvFileImporterParseImportedData_ParseInvalidType(t *testing.T assert.EqualError(t, err, errs.ErrNotFoundTransactionDataInFile.Message) } +func TestWeChatPayCsvFileImporterParseImportedData_ParseAmountWithThousandSeparator(t *testing.T) { + importer := WeChatPayTransactionDataCsvFileImporter + context := core.NewNullContext() + + user := &models.User{ + Uid: 1234567890, + DefaultCurrency: "CNY", + } + + data1 := "微信支付账单明细,,,,\n" + + "微信昵称:[xxx],,,,\n" + + "起始时间:[2024-01-01 00:00:00] 终止时间:[2024-09-01 23:59:59],,,,\n" + + ",,,,\n" + + "----------------------微信支付账单明细列表--------------------,,,,\n" + + "交易时间,交易类型,收/支,金额(元),支付方式,当前状态\n" + + "2024-09-01 01:23:45,二维码收款,收入,\"¥1,234.56\",/,已收钱\n" + allNewTransactions, _, _, _, _, _, err := importer.ParseImportedData(context, user, []byte(data1), time.UTC, converter.DefaultImporterOptions, nil, nil, nil, nil, nil) + assert.Nil(t, err) + + assert.Equal(t, 1, len(allNewTransactions)) + assert.Equal(t, int64(123456), allNewTransactions[0].Amount) +} + func TestWeChatPayCsvFileImporterParseImportedData_ParseInvalidAmount(t *testing.T) { importer := WeChatPayTransactionDataCsvFileImporter context := core.NewNullContext() diff --git a/pkg/converters/wechat/wechat_pay_transaction_data_row_parser.go b/pkg/converters/wechat/wechat_pay_transaction_data_row_parser.go index 31acf9d4..7f6c8d86 100644 --- a/pkg/converters/wechat/wechat_pay_transaction_data_row_parser.go +++ b/pkg/converters/wechat/wechat_pay_transaction_data_row_parser.go @@ -71,7 +71,7 @@ func (p *weChatPayTransactionDataRowParser) Parse(ctx core.Context, user *models } if p.hasOriginalColumn(wechatPayTransactionAmountColumnName) { - amount, success := utils.ParseFirstConsecutiveNumber(dataRow.GetData(wechatPayTransactionAmountColumnName)) + amount, success := utils.ParseFirstConsecutiveNumber(strings.ReplaceAll(dataRow.GetData(wechatPayTransactionAmountColumnName), ",", "")) if !success { log.Errorf(ctx, "[wechat_pay_transaction_data_row_parser.Parse] cannot parse amount \"%s\" of transaction in row \"%s\"", dataRow.GetData(wechatPayTransactionAmountColumnName), rowId)