From 82317abb92f19f4b941c459aaeed8d20fed822e1 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 2 Jun 2016 23:58:02 +0200 Subject: [PATCH] Add hooks for l10n_ch_sepa (pain.001.001.03.ch.02) Move code of account_banking_pain_base/models/banking_export_pain.py to account_banking_pain_base/models/account_payment_order.py Allow cancel when payment order is in "File Generated" state Add postal address in party block --- .../models/account_payment_order.py | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/account_banking_sepa_credit_transfer/models/account_payment_order.py b/account_banking_sepa_credit_transfer/models/account_payment_order.py index 29c746b1c..5f6579a3a 100644 --- a/account_banking_sepa_credit_transfer/models/account_payment_order.py +++ b/account_banking_sepa_credit_transfer/models/account_payment_order.py @@ -23,11 +23,14 @@ class AccountPaymentOrder(models.Model): pain_flavor = self.payment_mode_id.payment_method_id.pain_version if not pain_flavor: pain_flavor = 'pain.001.001.03' - if pain_flavor == 'pain.001.001.02': + # We use pain_flavor.startswith('pain.001.001.xx') + # to support country-specific extensions such as + # pain.001.001.03.ch.02 (cf l10n_ch_sepa) + if pain_flavor.startswith('pain.001.001.02'): bic_xml_tag = 'BIC' name_maxsize = 70 root_xml_tag = 'pain.001.001.02' - elif pain_flavor == 'pain.001.001.03': + elif pain_flavor.startswith('pain.001.001.03'): bic_xml_tag = 'BIC' # size 70 -> 140 for with pain.001.001.03 # BUT the European Payment Council, in the document @@ -39,11 +42,11 @@ class AccountPaymentOrder(models.Model): # and we put 70 and not 140 name_maxsize = 70 root_xml_tag = 'CstmrCdtTrfInitn' - elif pain_flavor == 'pain.001.001.04': + elif pain_flavor.startswith('pain.001.001.04'): bic_xml_tag = 'BICFI' name_maxsize = 140 root_xml_tag = 'CstmrCdtTrfInitn' - elif pain_flavor == 'pain.001.001.05': + elif pain_flavor.startswith('pain.001.001.05'): bic_xml_tag = 'BICFI' name_maxsize = 140 root_xml_tag = 'CstmrCdtTrfInitn' @@ -68,19 +71,10 @@ class AccountPaymentOrder(models.Model): 'pain_flavor': pain_flavor, 'pain_xsd_file': xsd_file, } - # TODO: make it inheritable - pain_ns = { - 'xsi': 'http://www.w3.org/2001/XMLSchema-instance', - None: 'urn:iso:std:iso:20022:tech:xsd:%s' % pain_flavor, - } - xml_root = etree.Element('Document', nsmap=pain_ns) + nsmap = self.generate_pain_nsmap() + attrib = self.generate_pain_attrib() + xml_root = etree.Element('Document', nsmap=nsmap, attrib=attrib) pain_root = etree.SubElement(xml_root, root_xml_tag) - pain_03_to_05 = [ - 'pain.001.001.03', - 'pain.001.001.04', - 'pain.001.001.05', - 'pain.001.003.03' - ] # A. Group header group_header_1_0, nb_of_transactions_1_6, control_sum_1_7 = \ self.generate_group_header_block(pain_root, gen_args) @@ -156,10 +150,10 @@ class AccountPaymentOrder(models.Model): 'C', line.partner_bank_id, gen_args) self.generate_remittance_info_block( credit_transfer_transaction_info_2_27, line, gen_args) - if pain_flavor in pain_03_to_05: + if not pain_flavor.startswith('pain.001.001.02'): nb_of_transactions_2_4.text = unicode(transactions_count_2_4) control_sum_2_5.text = '%.2f' % amount_control_sum_2_5 - if pain_flavor in pain_03_to_05: + if not pain_flavor.startswith('pain.001.001.02'): nb_of_transactions_1_6.text = unicode(transactions_count_1_6) control_sum_1_7.text = '%.2f' % amount_control_sum_1_7 else: