diff --git a/account_banking_sepa_credit_transfer/README.rst b/account_banking_sepa_credit_transfer/README.rst
index a07eff7ef..af0817638 100644
--- a/account_banking_sepa_credit_transfer/README.rst
+++ b/account_banking_sepa_credit_transfer/README.rst
@@ -17,6 +17,10 @@ European Payments Council (http://http://www.europeanpaymentscouncil.eu) use
PAIN version 001.001.03, so it's probably the version of PAIN that you should
try first.
+It also includes pain.001.003.03 which is used in Germany instead of 001.001.03.
+You can read more about this here (only in german language):
+http://www.ebics.de/startseite/
+
Installation
============
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 31d851edb..dac1fffa7 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
@@ -40,6 +40,14 @@
+
+ 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 8ea02de2f..09768ca5c 100644
--- a/account_banking_sepa_credit_transfer/wizard/export_sepa.py
+++ b/account_banking_sepa_credit_transfer/wizard/export_sepa.py
@@ -104,12 +104,20 @@ class BankingExportSepaWizard(models.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 Warning(
_("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.001.001.04', 'pain.001.001.05'"
+ " and 'pain.001.003.03'.") %
pain_flavor)
gen_args = {
'bic_xml_tag': bic_xml_tag,
@@ -128,8 +136,12 @@ class BankingExportSepaWizard(models.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 = \
self.generate_group_header_block(pain_root, gen_args)