diff --git a/src/banks.ts b/src/banks.ts index c5b6b9d..a6dd152 100644 --- a/src/banks.ts +++ b/src/banks.ts @@ -1,7 +1,9 @@ +import {BelfiusBe} from './banks/belfius-be'; import {SparkasseGerman} from './banks/sparkasse-german'; import {ZkbGerman} from './banks/zkb-german'; export const supportedBanks = { 'sparkasse-german': SparkasseGerman, 'zkb-german': ZkbGerman, + 'belfius-be': BelfiusBe, }; diff --git a/src/banks/belfius-be.ts b/src/banks/belfius-be.ts new file mode 100644 index 0000000..eb7a27c --- /dev/null +++ b/src/banks/belfius-be.ts @@ -0,0 +1,38 @@ +import * as moment from 'moment'; + +import {Bank} from './base'; + +export class BelfiusBe extends Bank { + static description = 'Belfius (Belgium)'; + + static requiredHeaders = [ + 'transactie', 'boekingsdatum', 'bedrag', + ]; + + static transformTransactions(transactions) { + return transactions + // Remove (epmpty) transactions without a date + .filter(transaction => transaction.boekingsdatum) + .map(obj => { + // Calculate amount + const amount = parseFloat(obj.bedrag.replace(',', '.')) * 100; + const reference = obj.transactie.match(/(REF)(?!.*\1)\. : (.*) VAL\. \d{2}-\d{2}/)[2].trim(); + let payee = obj['naam-tegenpartij-bevat'].trim(); + if (!payee) { + payee = obj.mededelingen; + } + // Read date as utc (w/out timezone) and convert to js date + const date = moment.utc(obj.boekingsdatum, 'DD/MM/YYYY').toDate(); + + return { + imported_id: reference, + imported_payee: obj.transactie, + notes: obj.mededelingen, + date, + amount, + payee, + }; + }); + } + +}