From 115e42d71a0d7ac183d9f326cab05e38655f0bb2 Mon Sep 17 00:00:00 2001 From: Dima Date: Tue, 13 Jan 2026 17:14:02 +0100 Subject: [PATCH] fix debtor postal address in non batch mode --- sepaxml/transfer.py | 8 ++-- tests/transfer/test_non_batch.py | 82 ++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 4 deletions(-) diff --git a/sepaxml/transfer.py b/sepaxml/transfer.py index 669632f..cfa5c7a 100644 --- a/sepaxml/transfer.py +++ b/sepaxml/transfer.py @@ -117,13 +117,13 @@ def add_payment(self, payment): del PmtInf_nodes['ReqdExctnDtNode'] PmtInf_nodes['Nm_Dbtr_Node'].text = self._config['name'] - if payment.get('address', {}): + if self._config.get('address', {}): for d, n in ADDRESS_MAPPING: if self._config['address'].get(d): n = ET.Element(n) n.text = self._config['address'][d] PmtInf_nodes['PstlAdr_Dbtr_Node'].append(n) - for line in self._config.get('lines', []): + for line in self._config['address'].get('lines', []): n = ET.Element('AdrLine') n.text = line PmtInf_nodes['PstlAdr_Dbtr_Node'].append(n) @@ -294,8 +294,8 @@ def _add_non_batch(self, TX_nodes, PmtInf_nodes): PmtInf_nodes['ReqdExctnDtNode'].append(PmtInf_nodes['ReqdExctnDt_Dt_Node']) PmtInf_nodes['DbtrNode'].append(PmtInf_nodes['Nm_Dbtr_Node']) - if "PstlAdr_Dbtr_Node" in TX_nodes: - PmtInf_nodes['DbtrNode'].append(TX_nodes['PstlAdr_Dbtr_Node']) + if len(PmtInf_nodes['PstlAdr_Dbtr_Node']) > 0: + PmtInf_nodes['DbtrNode'].append(PmtInf_nodes['PstlAdr_Dbtr_Node']) PmtInf_nodes['PmtInfNode'].append(PmtInf_nodes['DbtrNode']) PmtInf_nodes['Id_DbtrAcct_Node'].append(PmtInf_nodes['IBAN_DbtrAcct_Node']) diff --git a/tests/transfer/test_non_batch.py b/tests/transfer/test_non_batch.py index 72473a4..f2b8c69 100644 --- a/tests/transfer/test_non_batch.py +++ b/tests/transfer/test_non_batch.py @@ -164,6 +164,84 @@ def test_two_debits(strf): assert clean_ids(xmlpretty.strip()) == clean_ids(SAMPLE_RESULT.strip()) +SAMPLE_RESULT_WITH_ADDRESS = b""" + + + + 20260113041500-135e7321ab20 + 2026-01-13T16:15:00 + 1 + 10.12 + + TestCreditor + + + + TestCreditor-5c372d141200 + TRF + false + 1 + 10.12 + + + SEPA + + + 2026-01-13 + + TestCreditor + + DE + Line 1 + Line 2 + + + + + NL50BANK1234567890 + + + + + BANKNL2A + + + SLEV + + + ebd75e7e649375d91b33dc11ae44c0e1 + + + 10.12 + + + + BANKNL2A + + + + Test von Testenstein + + DE + Line 1 + Line 2 + + + + + NL50BANK1234567890 + + + + Test transaction1 + + + + + +""" + + def test_sepa_address(strf): config = { "name": "TestCreditor", @@ -191,3 +269,7 @@ def test_sepa_address(strf): } strf = SepaTransfer(config) strf.add_payment(payment1) + xmlout = strf.export() + xmlpretty = validate_xml(xmlout, "pain.001.001.03") + print(xmlpretty.decode()) + assert clean_ids(xmlpretty.strip()) == clean_ids(SAMPLE_RESULT_WITH_ADDRESS.strip())