Skip to content

Commit

Permalink
fix: Wrong payeeName used for CBC_CREGBEBB
Browse files Browse the repository at this point in the history
  • Loading branch information
MMichotte committed Sep 9, 2024
1 parent 41b1215 commit b5adf99
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/app-gocardless/bank-factory.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import BankinterBkbkesmm from './banks/bankinter-bkbkesmm.js';
import Belfius from './banks/belfius_gkccbebb.js';
import Berliner_Sparkasse_beladebexxx from './banks/berliner_sparkasse_beladebexxx.js';
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 Fortuneo from './banks/FORTUNEO_FTNOFRP1XXX.js';
Expand Down Expand Up @@ -32,6 +33,7 @@ export const banks = [
Belfius,
Berliner_Sparkasse_beladebexxx,
BnpBeGebabebb,
CBCcregbebb,
DanskeBankDabNO22,
EasybankBawaatww,
Fortuneo,
Expand Down
52 changes: 52 additions & 0 deletions src/app-gocardless/banks/cbc_cregbebb.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import Fallback from './integration-bank.js';

/**
* The remittance information contains creditorName, payments method, dates, etc.
* This function makes sure to only extract the creditorName based on the different indicators like "Paiement".
* f.e. ONKART FR Viry Paiement Maestro par Carte de débit CBC 05-09-2024 à 15.43 heures 6703 19XX XXXX X... -> ONKART FR Viry
*/
function extractPayeeName(remittanceInformationUnstructured) {
const indices = [
remittanceInformationUnstructured.lastIndexOf(' Paiement'),
remittanceInformationUnstructured.lastIndexOf(' Domiciliation'),
remittanceInformationUnstructured.lastIndexOf(' Transfert'),
remittanceInformationUnstructured.lastIndexOf(' Ordre permanent'),
];

const indexForRemoval = Math.max(...indices);

return indexForRemoval > -1
? remittanceInformationUnstructured.substring(0, indexForRemoval)
: remittanceInformationUnstructured;
}

/** @type {import('./bank.interface.js').IBank} */
export default {
...Fallback,

institutionIds: ['CBC_CREGBEBB'],

/**
* For negative amounts, the only payee information we have is returned in
* remittanceInformationUnstructured.
*/
normalizeTransaction(transaction, _booked) {
if (Number(transaction.transactionAmount.amount) > 0) {
return {
...transaction,
payeeName:
transaction.debtorName ||
transaction.remittanceInformationUnstructured,
date: transaction.bookingDate || transaction.valueDate,
};
}

return {
...transaction,
payeeName:
transaction.creditorName ||
extractPayeeName(transaction.remittanceInformationUnstructured),
date: transaction.bookingDate || transaction.valueDate,
};
},
};
36 changes: 36 additions & 0 deletions src/app-gocardless/banks/tests/cbc_cregbebb.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import CBCcregbebb from '../cbc_cregbebb.js';

describe('cbc_cregbebb', () => {
describe('#normalizeTransaction', () => {
it('returns the remittanceInformationUnstructured as payeeName when the amount is negative', () => {
const transaction = {
remittanceInformationUnstructured:
'ONKART FR Viry Paiement Maestro par Carte de débit CBC 05-09-2024 à 15.43 heures 6703 19XX XXXX X201 5 JOHN DOE',
transactionAmount: { amount: '-45.00', currency: 'EUR' },
};
const normalizedTransaction = CBCcregbebb.normalizeTransaction(
transaction,
true,
);
expect(normalizedTransaction.payeeName).toEqual(

Check failure on line 15 in src/app-gocardless/banks/tests/cbc_cregbebb.spec.js

View workflow job for this annotation

GitHub Actions / lint

Replace `⏎········'ONKART·FR·Viry',⏎······` with `'ONKART·FR·Viry'`
'ONKART FR Viry',
);
});

it('returns the debtorName as payeeName when the amount is positive', () => {
const transaction = {
debtorName: 'ONKART FR Viry',
remittanceInformationUnstructured:
'ONKART FR Viry Paiement Maestro par Carte de débit CBC 05-09-2024 à 15.43 heures 6703 19XX XXXX X201 5 JOHN DOE',
transactionAmount: { amount: '10.99', currency: 'EUR' },
};
const normalizedTransaction = CBCcregbebb.normalizeTransaction(
transaction,
true,
);
expect(normalizedTransaction.payeeName).toEqual(

Check failure on line 31 in src/app-gocardless/banks/tests/cbc_cregbebb.spec.js

View workflow job for this annotation

GitHub Actions / lint

Replace `⏎········'ONKART·FR·Viry',⏎······` with `'ONKART·FR·Viry'`
'ONKART FR Viry',
);
});
});
});

0 comments on commit b5adf99

Please sign in to comment.