Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SSK_DUSSELDORF_DUSSDEDDXXX: remove non-booked transactions from import #553

Merged
merged 10 commits into from
Jan 27, 2025
22 changes: 18 additions & 4 deletions src/app-gocardless/banks/ssk_dusseldorf_dussdeddxxx.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,31 @@ export default {
institutionIds: ['SSK_DUSSELDORF_DUSSDEDDXXX'],

normalizeTransaction(transaction, _booked) {
// If the transaction is not booked yet by the bank, don't import it.
// Reason being that the transaction doesn't have the information yet
// to make the payee and notes field be of any use. It's filled with
// a placeholder text and wouldn't be corrected on the next sync.
if (!_booked) {
console.debug(
'Skipping unbooked transaction:',
transaction.transactionId,
);
return null;
}

// Prioritize unstructured information, falling back to structured formats
let remittanceInformationUnstructured =
transaction.remittanceInformationUnstructured ??
transaction.remittanceInformationStructured ??
transaction.remittanceInformationStructuredArray?.join(' ');

if (transaction.additionalInformation)
remittanceInformationUnstructured =
(remittanceInformationUnstructured ?? '') +
' ' +
transaction.additionalInformation;
remittanceInformationUnstructured = [
remittanceInformationUnstructured,
transaction.additionalInformation,
]
.filter(Boolean)
.join(' ');

const usefulCreditorName =
transaction.ultimateCreditor ||
Expand Down
72 changes: 72 additions & 0 deletions src/app-gocardless/banks/tests/ssk_dusseldorf_dussdeddxxx.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import SskDusseldorfDussdeddxxx from '../ssk_dusseldorf_dussdeddxxx.js';

describe('#normalizeTransaction', () => {
const bookedTransactionOne = {
transactionId: '2024102900000000-1',
bookingDate: '2024-10-29',
valueDate: '2024-10-29',
transactionAmount: {
amount: '-99.99',
currency: 'EUR',
},
creditorName: 'a useful creditor name',
remittanceInformationStructured: 'structured information',
remittanceInformationUnstructured: 'unstructured information',
additionalInformation: 'some aditional information',
};

const bookedTransactionTwo = {
transactionId: '2024102900000000-2',
bookingDate: '2024-10-29',
valueDate: '2024-10-29',
transactionAmount: {
amount: '-99.99',
currency: 'EUR',
},
creditorName: 'a useful creditor name',
ultimateCreditor: 'ultimate creditor',
remittanceInformationStructured: 'structured information',
additionalInformation: 'some aditional information',
};

it('properly combines remittance information', () => {
expect(
SskDusseldorfDussdeddxxx.normalizeTransaction(bookedTransactionOne, true)
.remittanceInformationUnstructured,
).toEqual('unstructured information some aditional information');

expect(
SskDusseldorfDussdeddxxx.normalizeTransaction(bookedTransactionTwo, true)
.remittanceInformationUnstructured,
).toEqual('structured information some aditional information');
});

it('prioritizes creditor names correctly', () => {
expect(
SskDusseldorfDussdeddxxx.normalizeTransaction(bookedTransactionOne, true)
.payeeName,
).toEqual('A Useful Creditor Name');

expect(
SskDusseldorfDussdeddxxx.normalizeTransaction(bookedTransactionTwo, true)
.payeeName,
).toEqual('Ultimate Creditor');
});

const unbookedTransaction = {
transactionId: '2024102900000000-1',
valueDate: '2024-10-29',
transactionAmount: {
amount: '-99.99',
currency: 'EUR',
},
creditorName: 'some nonsensical creditor',
remittanceInformationUnstructured: 'some nonsensical information',
};

it('returns null for unbooked transactions', () => {
expect(
SskDusseldorfDussdeddxxx.normalizeTransaction(unbookedTransaction, false),
).toBeNull;
});
matt-fidd marked this conversation as resolved.
Show resolved Hide resolved
});
6 changes: 6 additions & 0 deletions upcoming-release-notes/553.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
category: Enhancements
authors: [DennaGherlyn]
---

Remove non-booked transactions from import of SSK_DUSSELDORF_DUSSDEDDXXX due to placeholder text in the payee and notes field
Loading