From cc792b9c0f61751f5fe06ba8e404d622a4728ed0 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Sat, 4 Oct 2025 12:44:43 +0800 Subject: [PATCH] import credit card repayment transactions from wechat pay statement file (#279) --- ...y_transaction_data_csv_file_importer_test.go | 17 +++++++++++++++++ .../wechat_pay_transaction_data_row_parser.go | 4 ++++ 2 files changed, 21 insertions(+) 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 f8913ca6..9aa48e9c 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 @@ -261,6 +261,23 @@ func TestWeChatPayCsvFileImporterParseImportedData_ParseAccountName(t *testing.T assert.Equal(t, 1, len(allNewTransactions)) assert.Equal(t, "Wallet", allNewTransactions[0].OriginalSourceAccountName) assert.Equal(t, "test", allNewTransactions[0].OriginalDestinationAccountName) + + // transfer from wechat wallet + data5 := "微信支付账单明细,,,,\n" + + "微信昵称:[xxx],,,,\n" + + "起始时间:[2024-01-01 00:00:00] 终止时间:[2024-09-01 23:59:59],,,,\n" + + ",,,,\n" + + "----------------------微信支付账单明细列表--------------------,,,,\n" + + "交易时间,交易类型,收/支,金额(元),支付方式,当前状态\n" + + "2024-09-03 23:59:59,信用卡还款,/,¥0.01,零钱,支付成功\n" + assert.Nil(t, err) + + allNewTransactions, _, _, _, _, _, err = converter.ParseImportedData(context, user, []byte(data5), 0, nil, nil, nil, nil, nil) + assert.Nil(t, err) + + assert.Equal(t, 1, len(allNewTransactions)) + assert.Equal(t, "零钱", allNewTransactions[0].OriginalSourceAccountName) + assert.Equal(t, "", allNewTransactions[0].OriginalDestinationAccountName) } func TestWeChatPayCsvFileImporterParseImportedData_ParseDescription(t *testing.T) { 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 5d85ee1d..31acf9d4 100644 --- a/pkg/converters/wechat/wechat_pay_transaction_data_row_parser.go +++ b/pkg/converters/wechat/wechat_pay_transaction_data_row_parser.go @@ -26,6 +26,7 @@ const wechatPayTransactionDescriptionColumnName = "备注" const wechatPayTransactionDataCategoryTransferToWeChatWallet = "零钱充值" const wechatPayTransactionDataCategoryTransferFromWeChatWallet = "零钱提现" +const wechatPayTransactionDataCategoryCreditCardRepayment = "信用卡还款" const wechatPayTransactionDataStatusRefundName = "退款" @@ -125,6 +126,9 @@ func (p *weChatPayTransactionDataRowParser) Parse(ctx core.Context, user *models } else if data[datatable.TRANSACTION_DATA_TABLE_SUB_CATEGORY] == wechatPayTransactionDataCategoryTransferFromWeChatWallet { data[datatable.TRANSACTION_DATA_TABLE_ACCOUNT_NAME] = localeTextItems.DataConverterTextItems.WeChatWallet data[datatable.TRANSACTION_DATA_TABLE_RELATED_ACCOUNT_NAME] = relatedAccountName + } else if data[datatable.TRANSACTION_DATA_TABLE_SUB_CATEGORY] == wechatPayTransactionDataCategoryCreditCardRepayment { + data[datatable.TRANSACTION_DATA_TABLE_ACCOUNT_NAME] = relatedAccountName + data[datatable.TRANSACTION_DATA_TABLE_RELATED_ACCOUNT_NAME] = "" } else { log.Warnf(ctx, "[wechat_pay_transaction_data_row_parser.Parse] skip parsing transaction in row \"%s\", because unknown transfer transaction category \"%s\"", rowId, data[datatable.TRANSACTION_DATA_TABLE_SUB_CATEGORY]) return nil, false, nil