From b6efaa602935c650af564a59d5b471e294e9193f Mon Sep 17 00:00:00 2001 From: Naglis Jonaitis Date: Tue, 25 Aug 2015 13:56:30 +0300 Subject: [PATCH] [ADD] Support pain.001.003.03 format, backport from 8.0 --- .../data/pain.001.003.03.xsd | 474 ++++++++++++++++++ .../data/payment_type_sepa_sct.xml | 9 + .../wizard/export_sepa.py | 21 +- 3 files changed, 499 insertions(+), 5 deletions(-) create mode 100644 account_banking_sepa_credit_transfer/data/pain.001.003.03.xsd diff --git a/account_banking_sepa_credit_transfer/data/pain.001.003.03.xsd b/account_banking_sepa_credit_transfer/data/pain.001.003.03.xsd new file mode 100644 index 000000000..0c3b51e32 --- /dev/null +++ b/account_banking_sepa_credit_transfer/data/pain.001.003.03.xsd @@ -0,0 +1,474 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If used, it is recommended to be used at ‘Payment Information’ level and not at ‘Credit Transfer Transaction Information’ level. + + + + + + It is recommended that this element be specified at ‘Payment Information’ level. + + + + + This data element may be present either at ‘Payment Information’ or at ‘Credit Transfer Transaction Information’ level. + + + + + + + + + + + + + + + + If a Creditor Reference contains a check digit, the receiving bank is not required to validate this. +If the receiving bank validates the check digit and if this validation fails, the bank may continue its processing and send the transaction to the next party in the chain. +RF Creditor Reference may be used (ISO 11649). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Either ‘BIC or BEI’ or one +occurrence of ‘Other’ is allowed. + + + + + Either ‘Date and Place of Birth’ or one occurrence of ‘Other’ is allowed. + + + + + + + + + + ‘Name’ is limited to 70 characters +in length. + + + + + + + + + + ‘Name’ is limited to 70 characters +in length. + + + + + + + + + + + + + + + + + + Only ‘TRF’ is allowed. + + + + + If present and contains ‘true’, batch booking is requested. If present and contains ‘false’, booking per transaction is requested. If element is not present, pre-agreed customer-to-bank conditions apply. + + + + + + + If used, it is recommended to be used only at ‘Payment Information’ level and not at Credit Transfer Transaction Information’ level. +When Instruction Priority is to be used, ‘Payment Type Information’ must be present at ‘Payment Information’ level. + + + + + + + + + This data element may be present either at ‘Payment Information’ or at ‘Credit Transfer Transaction Information’ level. + + + + + It is recommended that this element be specified at ‘Payment Information’ level. + + + + + + + + + + + + + + + If present, pre-agreed customer-to-bank conditions apply. + + + + + + Depending on the agreement between the Originator and the Originator Bank, ‘Category Purpose’ may be forwarded to the Beneficiary Bank. + + + + + + + + + + Depending on the agreement between the Originator and the Originator Bank, ‘Category Purpose’ may be forwarded to the Beneficiary Bank. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Only codes from the ISO 20022 ExternalPurposeCode list are allowed. + + + + + + + + + + + + + + + + + + + + + + When present, the receiving bank is not obliged to validate the the reference information. + + + + + + + + + + diff --git a/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml b/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml index f07ece146..e736b0ba5 100644 --- a/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml +++ b/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml @@ -36,6 +36,15 @@ + + SEPA Credit Transfer pain 001.003.03 (used in Germany) + pain.001.003.03 + payment + + + + diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa.py b/account_banking_sepa_credit_transfer/wizard/export_sepa.py index a39deb085..70b06380a 100644 --- a/account_banking_sepa_credit_transfer/wizard/export_sepa.py +++ b/account_banking_sepa_credit_transfer/wizard/export_sepa.py @@ -126,15 +126,22 @@ class banking_export_sepa_wizard(orm.TransientModel): bic_xml_tag = 'BICFI' name_maxsize = 140 root_xml_tag = 'CstmrCdtTrfInitn' - + # added pain.001.003.03 for German Banks + # it is not in the offical ISO 20022 documentations, but nearly all + # german banks are working with this instead 001.001.03 + elif pain_flavor == 'pain.001.003.03': + bic_xml_tag = 'BIC' + name_maxsize = 70 + root_xml_tag = 'CstmrCdtTrfInitn' else: raise orm.except_orm( _('Error:'), _("Payment Type Code '%s' is not supported. The only " "Payment Type Codes supported for SEPA Credit Transfers " "are 'pain.001.001.02', 'pain.001.001.03', " - "'pain.001.001.04' and 'pain.001.001.05'.") - % pain_flavor) + "'pain.001.001.04', 'pain.001.001.05'" + " and 'pain.001.003.03'.") % + pain_flavor) gen_args = { 'bic_xml_tag': bic_xml_tag, @@ -156,8 +163,12 @@ class banking_export_sepa_wizard(orm.TransientModel): xml_root = etree.Element('Document', nsmap=pain_ns) 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_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 = \