Enrich pending transaction creditor info for SWEDBANK_HABALV22 (#497)

This commit is contained in:
Dāvis
2024-11-08 23:05:51 +01:00
committed by GitHub
parent ed098c4a69
commit 635ef27696
3 changed files with 56 additions and 12 deletions

View File

@@ -14,17 +14,36 @@ export default {
* The actual transaction date for card transactions is only available in the remittanceInformationUnstructured field when the transaction is booked.
*/
normalizeTransaction(transaction, booked) {
const dateMatch = transaction.remittanceInformationUnstructured?.match(
/PIRKUMS [\d*]+ (\d{2}.\d{2}.\d{4})/,
);
const isCardTransaction =
transaction.remittanceInformationUnstructured?.startsWith('PIRKUMS');
if (dateMatch) {
const extractedDate = d.parse(dateMatch[1], 'dd.MM.yyyy', new Date());
if (isCardTransaction) {
if (!booked && !transaction.creditorName) {
const creditorNameMatch =
transaction.remittanceInformationUnstructured?.match(
/PIRKUMS [\d*]+ \d{2}\.\d{2}\.\d{2} \d{2}:\d{2} [\d.]+ \w{3} \(\d+\) (.+)/,
);
return Fallback.normalizeTransaction(
{ ...transaction, bookingDate: d.format(extractedDate, 'yyyy-MM-dd') },
booked,
if (creditorNameMatch) {
transaction = {
...transaction,
creditorName: creditorNameMatch[1],
};
}
}
const dateMatch = transaction.remittanceInformationUnstructured?.match(
/PIRKUMS [\d*]+ (\d{2}\.\d{2}\.\d{4})/,
);
if (dateMatch) {
const extractedDate = d.parse(dateMatch[1], 'dd.MM.yyyy', new Date());
transaction = {
...transaction,
bookingDate: d.format(extractedDate, 'yyyy-MM-dd'),
};
}
}
return Fallback.normalizeTransaction(transaction, booked);

View File

@@ -1,7 +1,7 @@
import SwedbankHabaLV22 from '../swedbank-habalv22.js';
describe('#normalizeTransaction', () => {
const cardTransaction = {
const bookedCardTransaction = {
transactionId: '2024102900000000-1',
bookingDate: '2024-10-29',
valueDate: '2024-10-29',
@@ -18,11 +18,12 @@ describe('#normalizeTransaction', () => {
it('extracts card transaction date', () => {
expect(
SwedbankHabaLV22.normalizeTransaction(cardTransaction, true).bookingDate,
SwedbankHabaLV22.normalizeTransaction(bookedCardTransaction, true)
.bookingDate,
).toEqual('2024-10-28');
expect(
SwedbankHabaLV22.normalizeTransaction(cardTransaction, true).date,
SwedbankHabaLV22.normalizeTransaction(bookedCardTransaction, true).date,
).toEqual('2024-10-28');
});
@@ -32,7 +33,7 @@ describe('#normalizeTransaction', () => {
['null value', null],
])('normalizes non-card transaction with %s', (_, remittanceInfo) => {
const transaction = {
...cardTransaction,
...bookedCardTransaction,
remittanceInformationUnstructured: remittanceInfo,
};
const normalized = SwedbankHabaLV22.normalizeTransaction(transaction, true);
@@ -40,4 +41,22 @@ describe('#normalizeTransaction', () => {
expect(normalized.bookingDate).toEqual('2024-10-29');
expect(normalized.date).toEqual('2024-10-29');
});
const pendingCardTransaction = {
transactionId: '2024102900000000-1',
valueDate: '2024-10-29',
transactionAmount: {
amount: '-22.99',
currency: 'EUR',
},
remittanceInformationUnstructured:
'PIRKUMS 424242******4242 28.10.24 13:37 22.99 EUR (111111) SOME CREDITOR NAME',
};
it('extracts pending card transaction creditor name', () => {
expect(
SwedbankHabaLV22.normalizeTransaction(pendingCardTransaction, false)
.creditorName,
).toEqual('SOME CREDITOR NAME');
});
});

View File

@@ -0,0 +1,6 @@
---
category: Enhancements
authors: [dmednis]
---
Improve support for "SWEDBANK_HABALV22" transaction date & enrich creditor name for pending transactions