mirror of
https://github.com/actualbudget/actual.git
synced 2026-04-30 10:14:53 -05:00
Add GoCardless integration for ENTERCARD_SWEDNOKK (#506)
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
This commit is contained in:
committed by
GitHub
parent
0d06bc1f7e
commit
70f6afbda6
@@ -9,6 +9,7 @@ import BnpBeGebabebb from './banks/bnp-be-gebabebb.js';
|
|||||||
import CBCcregbebb from './banks/cbc_cregbebb.js';
|
import CBCcregbebb from './banks/cbc_cregbebb.js';
|
||||||
import DanskeBankDabNO22 from './banks/danskebank-dabno22.js';
|
import DanskeBankDabNO22 from './banks/danskebank-dabno22.js';
|
||||||
import EasybankBawaatww from './banks/easybank-bawaatww.js';
|
import EasybankBawaatww from './banks/easybank-bawaatww.js';
|
||||||
|
import EntercardSwednokk from './banks/entercard-swednokk.js';
|
||||||
import Fortuneo from './banks/FORTUNEO_FTNOFRP1XXX.js';
|
import Fortuneo from './banks/FORTUNEO_FTNOFRP1XXX.js';
|
||||||
import HanseaticBank from './banks/HANSEATIC_HSTBDEHH.js';
|
import HanseaticBank from './banks/HANSEATIC_HSTBDEHH.js';
|
||||||
import Hype_HYEEIT22 from './banks/hype_hyeeit22.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 NbgEthngraaxxx from './banks/nbg_ethngraaxxx.js';
|
||||||
import NorwegianXxNorwnok1 from './banks/norwegian-xx-norwnok1.js';
|
import NorwegianXxNorwnok1 from './banks/norwegian-xx-norwnok1.js';
|
||||||
import RevolutRevolt21 from './banks/revolut_revolt21.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 SEBKortBankAB from './banks/seb-kort-bank-ab.js';
|
||||||
import SEBPrivat from './banks/seb-privat.js';
|
import SEBPrivat from './banks/seb-privat.js';
|
||||||
|
import SandboxfinanceSfin0000 from './banks/sandboxfinance-sfin0000.js';
|
||||||
import SparNordSpNoDK22 from './banks/sparnord-spnodk22.js';
|
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';
|
||||||
@@ -45,6 +46,7 @@ export const banks = [
|
|||||||
CBCcregbebb,
|
CBCcregbebb,
|
||||||
DanskeBankDabNO22,
|
DanskeBankDabNO22,
|
||||||
EasybankBawaatww,
|
EasybankBawaatww,
|
||||||
|
EntercardSwednokk,
|
||||||
Fortuneo,
|
Fortuneo,
|
||||||
HanseaticBank,
|
HanseaticBank,
|
||||||
Hype_HYEEIT22,
|
Hype_HYEEIT22,
|
||||||
@@ -58,9 +60,9 @@ export const banks = [
|
|||||||
NbgEthngraaxxx,
|
NbgEthngraaxxx,
|
||||||
NorwegianXxNorwnok1,
|
NorwegianXxNorwnok1,
|
||||||
RevolutRevolt21,
|
RevolutRevolt21,
|
||||||
SandboxfinanceSfin0000,
|
|
||||||
SEBKortBankAB,
|
SEBKortBankAB,
|
||||||
SEBPrivat,
|
SEBPrivat,
|
||||||
|
SandboxfinanceSfin0000,
|
||||||
SparNordSpNoDK22,
|
SparNordSpNoDK22,
|
||||||
SpkKarlsruhekarsde66,
|
SpkKarlsruhekarsde66,
|
||||||
SpkMarburgBiedenkopfHeladef1mar,
|
SpkMarburgBiedenkopfHeladef1mar,
|
||||||
|
|||||||
59
src/app-gocardless/banks/entercard-swednokk.js
Normal file
59
src/app-gocardless/banks/entercard-swednokk.js
Normal 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));
|
||||||
|
},
|
||||||
|
};
|
||||||
6
upcoming-release-notes/506.md
Normal file
6
upcoming-release-notes/506.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
category: Enhancements
|
||||||
|
authors: [kyrias]
|
||||||
|
---
|
||||||
|
|
||||||
|
Add GoCardless integration for ENTERCARD_SWEDNOKK
|
||||||
Reference in New Issue
Block a user