From 44c70c15bc13af65488b68380eb2154d5ed20549 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 30d943393..a31de558b 100644 --- a/account_banking_pain_base/models/account_payment_order.py +++ b/account_banking_pain_base/models/account_payment_order.py @@ -442,27 +442,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", @@ -480,7 +459,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 49568cbe1dcdcc4ac6f40725db7f5ea62144ab5c 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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 54179902e..f8b7f7f2f 100644 --- a/account_banking_sepa_credit_transfer/models/account_payment_method.py +++ b/account_banking_sepa_credit_transfer/models/account_payment_method.py @@ -13,7 +13,7 @@ class AccountPaymentMethod(models.Model): ("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"), ] ) From 71a775733f4741ebb87fa4661bc6fd930dff5d07 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 a31de558b..964ca414f 100644 --- a/account_banking_pain_base/models/account_payment_order.py +++ b/account_banking_pain_base/models/account_payment_order.py @@ -465,25 +465,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