diff --git a/account_banking_pain_base/models/account_payment_order.py b/account_banking_pain_base/models/account_payment_order.py index 29bae459b..dbd8ac634 100644 --- a/account_banking_pain_base/models/account_payment_order.py +++ b/account_banking_pain_base/models/account_payment_order.py @@ -340,6 +340,28 @@ class AccountPaymentOrder(models.Model): % self.company_id.name) return True + @api.model + def has_fininst_postal_address(self, gen_args): + pain_flavor = gen_args.get('pain_flavor') + return ( + pain_flavor.startswith("pain.001.001.03") + or pain_flavor.startswith("pain.001.001.04") + or pain_flavor.startswith("pain.001.001.05") + or pain_flavor.startswith("pain.008.001.02") + or pain_flavor.startswith("pain.008.001.03") + or pain_flavor.startswith("pain.008.001.04") + ) + + @api.model + def generate_fininst_postal_address(self, parent_node, bank): + if not (bank.country or bank.city): + return + postal_address = etree.SubElement(parent_node, 'PstlAdr') + if bank.city: + etree.SubElement(postal_address, 'TwnNm').text = bank.city + if bank.country: + etree.SubElement(postal_address, 'Ctry').text = bank.country.code + @api.model def generate_party_agent( self, parent_node, party_type, order, partner_bank, gen_args, @@ -360,6 +382,9 @@ class AccountPaymentOrder(models.Model): party_agent_bic = etree.SubElement( party_agent_institution, gen_args.get('bic_xml_tag')) party_agent_bic.text = partner_bank.bank_bic + if self.has_fininst_postal_address(gen_args): + self.generate_fininst_postal_address( + party_agent_institution, partner_bank.bank_id) else: if order == 'B' or ( order == 'C' and gen_args['payment_method'] == 'DD'): @@ -367,6 +392,9 @@ class AccountPaymentOrder(models.Model): parent_node, '%sAgt' % party_type) party_agent_institution = etree.SubElement( party_agent, 'FinInstnId') + if self.has_fininst_postal_address(gen_args): + self.generate_fininst_postal_address( + party_agent_institution, partner_bank.bank_id) party_agent_other = etree.SubElement( party_agent_institution, 'Othr') party_agent_other_identification = etree.SubElement(