Add GoCardless integration for ENTERCARD_SWEDNOKK (#506)

Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
This commit is contained in:
Johannes Löthberg
2024-12-16 21:12:13 +01:00
committed by GitHub
parent 0d06bc1f7e
commit 70f6afbda6
3 changed files with 69 additions and 2 deletions

View File

@@ -9,6 +9,7 @@ import BnpBeGebabebb from './banks/bnp-be-gebabebb.js';
import CBCcregbebb from './banks/cbc_cregbebb.js';
import DanskeBankDabNO22 from './banks/danskebank-dabno22.js';
import EasybankBawaatww from './banks/easybank-bawaatww.js';
import EntercardSwednokk from './banks/entercard-swednokk.js';
import Fortuneo from './banks/FORTUNEO_FTNOFRP1XXX.js';
import HanseaticBank from './banks/HANSEATIC_HSTBDEHH.js';
import Hype_HYEEIT22 from './banks/hype_hyeeit22.js';
@@ -23,9 +24,9 @@ import NationwideNaiaGB21 from './banks/nationwide-naiagb21.js';
import NbgEthngraaxxx from './banks/nbg_ethngraaxxx.js';
import NorwegianXxNorwnok1 from './banks/norwegian-xx-norwnok1.js';
import RevolutRevolt21 from './banks/revolut_revolt21.js';
import SandboxfinanceSfin0000 from './banks/sandboxfinance-sfin0000.js';
import SEBKortBankAB from './banks/seb-kort-bank-ab.js';
import SEBPrivat from './banks/seb-privat.js';
import SandboxfinanceSfin0000 from './banks/sandboxfinance-sfin0000.js';
import SparNordSpNoDK22 from './banks/sparnord-spnodk22.js';
import SpkKarlsruhekarsde66 from './banks/spk-karlsruhe-karsde66.js';
import SpkMarburgBiedenkopfHeladef1mar from './banks/spk-marburg-biedenkopf-heladef1mar.js';
@@ -45,6 +46,7 @@ export const banks = [
CBCcregbebb,
DanskeBankDabNO22,
EasybankBawaatww,
EntercardSwednokk,
Fortuneo,
HanseaticBank,
Hype_HYEEIT22,
@@ -58,9 +60,9 @@ export const banks = [
NbgEthngraaxxx,
NorwegianXxNorwnok1,
RevolutRevolt21,
SandboxfinanceSfin0000,
SEBKortBankAB,
SEBPrivat,
SandboxfinanceSfin0000,
SparNordSpNoDK22,
SpkKarlsruhekarsde66,
SpkMarburgBiedenkopfHeladef1mar,

View File

@@ -0,0 +1,59 @@
import * as d from 'date-fns';
import {
amountToInteger,
printIban,
sortByBookingDateOrValueDate,
} from '../utils.js';
import { formatPayeeName } from '../../util/payee-name.js';
/** @type {import('./bank.interface.js').IBank} */
export default {
institutionIds: ['ENTERCARD_SWEDNOKK'],
accessValidForDays: 180,
normalizeAccount(account) {
return {
account_id: account.id,
institution: account.institution,
mask: (account?.iban || '0000').slice(-4),
iban: account?.iban || null,
name: [account.name, printIban(account), account.currency]
.filter(Boolean)
.join(' '),
official_name: `integration-${account.institution_id}`,
type: 'checking',
};
},
normalizeTransaction(transaction, _booked) {
// GoCardless's Entercard integration returns forex transactions with the
// foreign amount in `transactionAmount`, but at least the amount actually
// billed to the account is now available in
// `remittanceInformationUnstructured`.
const remittanceInformationUnstructured =
transaction.remittanceInformationUnstructured;
if (remittanceInformationUnstructured.startsWith('billingAmount: ')) {
transaction.transactionAmount = {
amount: remittanceInformationUnstructured.substring(15),
currency: 'SEK',
};
}
return {
...transaction,
payeeName: formatPayeeName(transaction),
date: d.format(d.parseISO(transaction.valueDate), 'yyyy-MM-dd'),
};
},
sortTransactions(transactions = []) {
return sortByBookingDateOrValueDate(transactions);
},
calculateStartingBalance(sortedTransactions = [], balances = []) {
return sortedTransactions.reduce((total, trans) => {
return total - amountToInteger(trans.transactionAmount.amount);
}, amountToInteger(balances[0]?.balanceAmount?.amount || 0));
},
};

View File

@@ -0,0 +1,6 @@
---
category: Enhancements
authors: [kyrias]
---
Add GoCardless integration for ENTERCARD_SWEDNOKK