From 36a58ea647a21af81a77a243ddc33bc09400f3df Mon Sep 17 00:00:00 2001 From: Luc De Meyer Date: Tue, 6 Dec 2022 17:18:17 +0100 Subject: [PATCH 1/3] [FIX]generate pain address block that is supported by german banks --- .../models/account_payment_order.py | 47 ++++++++++--------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/account_banking_pain_base/models/account_payment_order.py b/account_banking_pain_base/models/account_payment_order.py index fd8cc402a..f75bc99da 100644 --- a/account_banking_pain_base/models/account_payment_order.py +++ b/account_banking_pain_base/models/account_payment_order.py @@ -502,27 +502,6 @@ class AccountPaymentOrder(models.Model): """Generate the piece of the XML corresponding to PstlAdr""" if partner.country_id: postal_address = etree.SubElement(parent_node, "PstlAdr") - if gen_args.get("pain_flavor").startswith("pain.001.001.") or gen_args.get( - "pain_flavor" - ).startswith("pain.008.001."): - if partner.zip: - pstcd = etree.SubElement(postal_address, "PstCd") - pstcd.text = self._prepare_field( - "Postal Code", - "partner.zip", - {"partner": partner}, - 16, - gen_args=gen_args, - ) - if partner.city: - twnnm = etree.SubElement(postal_address, "TwnNm") - twnnm.text = self._prepare_field( - "Town Name", - "partner.city", - {"partner": partner}, - 35, - gen_args=gen_args, - ) country = etree.SubElement(postal_address, "Ctry") country.text = self._prepare_field( "Country", @@ -540,7 +519,31 @@ class AccountPaymentOrder(models.Model): 70, gen_args=gen_args, ) - + if ( + gen_args.get("pain_flavor").startswith("pain.001.001.") + or gen_args.get("pain_flavor").startswith("pain.008.001.") + and (partner.zip or partner.city) + ): + adrline2 = etree.SubElement(postal_address, "AdrLine") + if partner.zip: + val = self._prepare_field( + "zip", + "partner.zip", + {"partner": partner}, + 70, + gen_args=gen_args, + ) + else: + val = "" + if partner.city: + val += " " + self._prepare_field( + "city", + "partner.city", + {"partner": partner}, + 70, + gen_args=gen_args, + ) + adrline2.text = val return True @api.model From e2b6a4d0a9304eb663b3451f8dd329c9a557abcb Mon Sep 17 00:00:00 2001 From: Luc De Meyer Date: Wed, 7 Dec 2022 08:04:38 +0100 Subject: [PATCH 2/3] remove (credit transfer in Germany) since german banks are switching to pain.001.001.03 --- .../models/account_payment_method.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/account_banking_sepa_credit_transfer/models/account_payment_method.py b/account_banking_sepa_credit_transfer/models/account_payment_method.py index c8ac49d13..e4dc11377 100644 --- a/account_banking_sepa_credit_transfer/models/account_payment_method.py +++ b/account_banking_sepa_credit_transfer/models/account_payment_method.py @@ -10,10 +10,10 @@ class AccountPaymentMethod(models.Model): pain_version = fields.Selection( selection_add=[ ("pain.001.001.02", "pain.001.001.02"), - ("pain.001.001.03", "pain.001.001.03 " "(recommended for credit transfer)"), + ("pain.001.001.03", "pain.001.001.03 (recommended for credit transfer)"), ("pain.001.001.04", "pain.001.001.04"), ("pain.001.001.05", "pain.001.001.05"), - ("pain.001.003.03", "pain.001.003.03 (credit transfer in Germany)"), + ("pain.001.003.03", "pain.001.003.03"), ], ondelete={ "pain.001.001.02": "set null", From 161ddfa0eaa075c2d3ba01ce9e392bbdc792d314 Mon Sep 17 00:00:00 2001 From: Luc De Meyer Date: Tue, 13 Dec 2022 10:25:57 +0100 Subject: [PATCH 3/3] pain - prevent leading space in address block when no zip --- .../models/account_payment_order.py | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/account_banking_pain_base/models/account_payment_order.py b/account_banking_pain_base/models/account_payment_order.py index f75bc99da..820d2fe7e 100644 --- a/account_banking_pain_base/models/account_payment_order.py +++ b/account_banking_pain_base/models/account_payment_order.py @@ -525,25 +525,28 @@ class AccountPaymentOrder(models.Model): and (partner.zip or partner.city) ): adrline2 = etree.SubElement(postal_address, "AdrLine") + val = [] if partner.zip: - val = self._prepare_field( - "zip", - "partner.zip", - {"partner": partner}, - 70, - gen_args=gen_args, + val.append( + self._prepare_field( + "zip", + "partner.zip", + {"partner": partner}, + 70, + gen_args=gen_args, + ) ) - else: - val = "" if partner.city: - val += " " + self._prepare_field( - "city", - "partner.city", - {"partner": partner}, - 70, - gen_args=gen_args, + val.append( + self._prepare_field( + "city", + "partner.city", + {"partner": partner}, + 70, + gen_args=gen_args, + ) ) - adrline2.text = val + adrline2.text = " ".join(val) return True @api.model