mirror of
https://github.com/actualbudget/actual.git
synced 2026-04-30 18:20:24 -05:00
Add support for SWEDBANK_HABALV22 transaction date (#490)
This commit is contained in:
@@ -26,6 +26,7 @@ import SparNordSpNoDK22 from './banks/sparnord-spnodk22.js';
|
|||||||
import SpkKarlsruhekarsde66 from './banks/spk-karlsruhe-karsde66.js';
|
import SpkKarlsruhekarsde66 from './banks/spk-karlsruhe-karsde66.js';
|
||||||
import SpkMarburgBiedenkopfHeladef1mar from './banks/spk-marburg-biedenkopf-heladef1mar.js';
|
import SpkMarburgBiedenkopfHeladef1mar from './banks/spk-marburg-biedenkopf-heladef1mar.js';
|
||||||
import SpkWormsAlzeyRiedMalade51wor from './banks/spk-worms-alzey-ried-malade51wor.js';
|
import SpkWormsAlzeyRiedMalade51wor from './banks/spk-worms-alzey-ried-malade51wor.js';
|
||||||
|
import SwedbankHabaLV22 from './banks/swedbank-habalv22.js';
|
||||||
import VirginNrnbgb22 from './banks/virgin_nrnbgb22.js';
|
import VirginNrnbgb22 from './banks/virgin_nrnbgb22.js';
|
||||||
|
|
||||||
export const banks = [
|
export const banks = [
|
||||||
@@ -56,6 +57,7 @@ export const banks = [
|
|||||||
SpkKarlsruhekarsde66,
|
SpkKarlsruhekarsde66,
|
||||||
SpkMarburgBiedenkopfHeladef1mar,
|
SpkMarburgBiedenkopfHeladef1mar,
|
||||||
SpkWormsAlzeyRiedMalade51wor,
|
SpkWormsAlzeyRiedMalade51wor,
|
||||||
|
SwedbankHabaLV22,
|
||||||
VirginNrnbgb22,
|
VirginNrnbgb22,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
32
src/app-gocardless/banks/swedbank-habalv22.js
Normal file
32
src/app-gocardless/banks/swedbank-habalv22.js
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
import d from 'date-fns';
|
||||||
|
|
||||||
|
import Fallback from './integration-bank.js';
|
||||||
|
|
||||||
|
/** @type {import('./bank.interface.js').IBank} */
|
||||||
|
export default {
|
||||||
|
...Fallback,
|
||||||
|
|
||||||
|
institutionIds: ['SWEDBANK_HABALV22'],
|
||||||
|
|
||||||
|
accessValidForDays: 90,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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})/,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (dateMatch) {
|
||||||
|
const extractedDate = d.parse(dateMatch[1], 'dd.MM.yyyy', new Date());
|
||||||
|
|
||||||
|
return Fallback.normalizeTransaction(
|
||||||
|
{ ...transaction, bookingDate: d.format(extractedDate, 'yyyy-MM-dd') },
|
||||||
|
booked,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Fallback.normalizeTransaction(transaction, booked);
|
||||||
|
},
|
||||||
|
};
|
||||||
43
src/app-gocardless/banks/tests/swedbank-habalv22.spec.js
Normal file
43
src/app-gocardless/banks/tests/swedbank-habalv22.spec.js
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
import SwedbankHabaLV22 from '../swedbank-habalv22.js';
|
||||||
|
|
||||||
|
describe('#normalizeTransaction', () => {
|
||||||
|
const cardTransaction = {
|
||||||
|
transactionId: '2024102900000000-1',
|
||||||
|
bookingDate: '2024-10-29',
|
||||||
|
valueDate: '2024-10-29',
|
||||||
|
transactionAmount: {
|
||||||
|
amount: '-22.99',
|
||||||
|
currency: 'EUR',
|
||||||
|
},
|
||||||
|
creditorName: 'SOME CREDITOR NAME',
|
||||||
|
remittanceInformationUnstructured:
|
||||||
|
'PIRKUMS 424242******4242 28.10.2024 22.99 EUR (111111) SOME CREDITOR NAME',
|
||||||
|
bankTransactionCode: 'PMNT-CCRD-POSD',
|
||||||
|
internalTransactionId: 'fa000f86afb2cc7678bcff0000000000',
|
||||||
|
};
|
||||||
|
|
||||||
|
it('extracts card transaction date', () => {
|
||||||
|
expect(
|
||||||
|
SwedbankHabaLV22.normalizeTransaction(cardTransaction, true).bookingDate,
|
||||||
|
).toEqual('2024-10-28');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
SwedbankHabaLV22.normalizeTransaction(cardTransaction, true).date,
|
||||||
|
).toEqual('2024-10-28');
|
||||||
|
});
|
||||||
|
|
||||||
|
it.each([
|
||||||
|
['regular text', 'Some info'],
|
||||||
|
['partial card text', 'PIRKUMS xxx'],
|
||||||
|
['null value', null],
|
||||||
|
])('normalizes non-card transaction with %s', (_, remittanceInfo) => {
|
||||||
|
const transaction = {
|
||||||
|
...cardTransaction,
|
||||||
|
remittanceInformationUnstructured: remittanceInfo,
|
||||||
|
};
|
||||||
|
const normalized = SwedbankHabaLV22.normalizeTransaction(transaction, true);
|
||||||
|
|
||||||
|
expect(normalized.bookingDate).toEqual('2024-10-29');
|
||||||
|
expect(normalized.date).toEqual('2024-10-29');
|
||||||
|
});
|
||||||
|
});
|
||||||
6
upcoming-release-notes/490.md
Normal file
6
upcoming-release-notes/490.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
category: Enhancements
|
||||||
|
authors: [dmednis]
|
||||||
|
---
|
||||||
|
|
||||||
|
Add support for "SWEDBANK_HABALV22" transaction date
|
||||||
Reference in New Issue
Block a user