From 5a9a54fb79b07b6cc792fb027876ae42ac0df339 Mon Sep 17 00:00:00 2001 From: Patrick Tombez Date: Wed, 20 Mar 2019 14:46:47 +0100 Subject: [PATCH] [10.0] account_banking_pain_base: Allow override of address block --- account_banking_pain_base/__manifest__.py | 2 +- .../models/account_payment_order.py | 65 +++++++++++-------- 2 files changed, 38 insertions(+), 29 deletions(-) diff --git a/account_banking_pain_base/__manifest__.py b/account_banking_pain_base/__manifest__.py index ae9af95f4..b2e2fdc8c 100644 --- a/account_banking_pain_base/__manifest__.py +++ b/account_banking_pain_base/__manifest__.py @@ -7,7 +7,7 @@ { 'name': 'Account Banking PAIN Base Module', 'summary': 'Base module for PAIN file generation', - 'version': '10.0.1.1.1', + 'version': '10.0.1.1.2', 'license': 'AGPL-3', 'author': "Akretion, " "Noviat, " diff --git a/account_banking_pain_base/models/account_payment_order.py b/account_banking_pain_base/models/account_payment_order.py index c53330f24..243100eb5 100644 --- a/account_banking_pain_base/models/account_payment_order.py +++ b/account_banking_pain_base/models/account_payment_order.py @@ -424,35 +424,11 @@ class AccountPaymentOrder(models.Model): return True @api.model - def generate_party_block( - self, parent_node, party_type, order, partner_bank, gen_args, - bank_line=None): - """Generate the piece of the XML file corresponding to Name+IBAN+BIC - This code is mutualized between TRF and DD - In some localization (l10n_ch_sepa for example), they need the - bank_line argument""" - assert order in ('B', 'C'), "Order can be 'B' or 'C'" - if party_type == 'Cdtr': - party_type_label = 'Creditor' - elif party_type == 'Dbtr': - party_type_label = 'Debtor' - name = 'partner_bank.partner_id.name' - eval_ctx = {'partner_bank': partner_bank} - party_name = self._prepare_field( - '%s Name' % party_type_label, name, eval_ctx, - gen_args.get('name_maxsize'), gen_args=gen_args) - # At C level, the order is : BIC, Name, IBAN - # At B level, the order is : Name, IBAN, BIC - if order == 'C': - self.generate_party_agent( - parent_node, party_type, order, partner_bank, gen_args, - bank_line=bank_line) - party = etree.SubElement(parent_node, party_type) - party_nm = etree.SubElement(party, 'Nm') - party_nm.text = party_name - partner = partner_bank.partner_id + def generate_address_block( + self, parent_node, partner, gen_args): + """Generate the piece of the XML corresponding to PstlAdr""" if partner.country_id: - postal_address = etree.SubElement(party, 'PstlAdr') + 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.'): @@ -481,6 +457,39 @@ class AccountPaymentOrder(models.Model): 'Address Line2', 'partner.street2', {'partner': partner}, 70, gen_args=gen_args) + return True + + @api.model + def generate_party_block( + self, parent_node, party_type, order, partner_bank, gen_args, + bank_line=None): + """Generate the piece of the XML file corresponding to Name+IBAN+BIC + This code is mutualized between TRF and DD + In some localization (l10n_ch_sepa for example), they need the + bank_line argument""" + assert order in ('B', 'C'), "Order can be 'B' or 'C'" + if party_type == 'Cdtr': + party_type_label = 'Creditor' + elif party_type == 'Dbtr': + party_type_label = 'Debtor' + name = 'partner_bank.partner_id.name' + eval_ctx = {'partner_bank': partner_bank} + party_name = self._prepare_field( + '%s Name' % party_type_label, name, eval_ctx, + gen_args.get('name_maxsize'), gen_args=gen_args) + # At C level, the order is : BIC, Name, IBAN + # At B level, the order is : Name, IBAN, BIC + if order == 'C': + self.generate_party_agent( + parent_node, party_type, order, partner_bank, gen_args, + bank_line=bank_line) + party = etree.SubElement(parent_node, party_type) + party_nm = etree.SubElement(party, 'Nm') + party_nm.text = party_name + partner = partner_bank.partner_id + + self.generate_address_block(party, partner, gen_args) + self.generate_party_id(party, party_type, partner) self.generate_party_acc_number(