From cf94ae8373d9256920f843f679d55b7c4ea6f808 Mon Sep 17 00:00:00 2001
From: unknown
Date: Fri, 28 Jun 2013 21:24:03 +0200
Subject: [PATCH 01/79] account_banking_sepa_credit_transfer implementing SEPA
SCT pain
---
.../__init__.py | 25 +
.../__openerp__.py | 50 +
.../account_banking_sepa.py | 80 ++
.../account_banking_sepa_view.xml | 85 ++
.../data/pain.001.001.02.xsd | 784 ++++++++++++++
.../data/pain.001.001.03.xsd | 921 +++++++++++++++++
.../data/pain.001.001.04.xsd | 968 ++++++++++++++++++
.../data/payment_type_sepa_sct.xml | 33 +
.../account_banking_sepa_credit_transfer.pot | 251 +++++
.../i18n/fr.po | 251 +++++
.../security/ir.model.access.csv | 2 +
.../wizard/__init__.py | 23 +
.../wizard/export_sepa.py | 341 ++++++
.../wizard/export_sepa_view.xml | 48 +
14 files changed, 3862 insertions(+)
create mode 100644 account_banking_sepa_credit_transfer/__init__.py
create mode 100644 account_banking_sepa_credit_transfer/__openerp__.py
create mode 100644 account_banking_sepa_credit_transfer/account_banking_sepa.py
create mode 100644 account_banking_sepa_credit_transfer/account_banking_sepa_view.xml
create mode 100644 account_banking_sepa_credit_transfer/data/pain.001.001.02.xsd
create mode 100644 account_banking_sepa_credit_transfer/data/pain.001.001.03.xsd
create mode 100644 account_banking_sepa_credit_transfer/data/pain.001.001.04.xsd
create mode 100644 account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml
create mode 100644 account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot
create mode 100644 account_banking_sepa_credit_transfer/i18n/fr.po
create mode 100644 account_banking_sepa_credit_transfer/security/ir.model.access.csv
create mode 100644 account_banking_sepa_credit_transfer/wizard/__init__.py
create mode 100644 account_banking_sepa_credit_transfer/wizard/export_sepa.py
create mode 100644 account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml
diff --git a/account_banking_sepa_credit_transfer/__init__.py b/account_banking_sepa_credit_transfer/__init__.py
new file mode 100644
index 00000000000..f0e7fcb0bf8
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/__init__.py
@@ -0,0 +1,25 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# SEPA Credit Transfer module for OpenERP
+# Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+# @author: Alexis de Lattre
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import wizard
+import account_banking_sepa
+
diff --git a/account_banking_sepa_credit_transfer/__openerp__.py b/account_banking_sepa_credit_transfer/__openerp__.py
new file mode 100644
index 00000000000..67abd8d385c
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/__openerp__.py
@@ -0,0 +1,50 @@
+##############################################################################
+#
+# SEPA Credit Transfer module for OpenERP
+# Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+# @author: Alexis de Lattre
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+{
+ 'name': 'Account Banking SEPA Credit Transfer',
+ 'version': '0.1',
+ 'license': 'AGPL-3',
+ 'author': 'Akretion',
+ 'website': 'http://www.akretion.com',
+ 'category': 'Banking addons',
+ 'depends': ['account_banking'],
+ 'init_xml': [],
+ 'update_xml': [
+ 'account_banking_sepa_view.xml',
+ 'wizard/export_sepa_view.xml',
+ 'data/payment_type_sepa_sct.xml',
+ 'security/ir.model.access.csv',
+ ],
+ 'demo_xml': [],
+ 'description': '''
+Module to export payment orders in SEPA XML file format.
+
+SEPA PAIN (PAyment INitiation) is the new european standard for Customer-to-Bank payment instructions. This module implements SEPA Credit Transfer (SCT), more specifically PAIN versions 001.001.02, 001.001.03 and 001.001.04. It is part of the ISO 20022 standard, available on http://www.iso20022.org.
+
+The Implementation Guidelines for SEPA Credit Transfer published by the 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.
+
+This module uses the framework provided by the banking addons, cf https://launchpad.net/banking-addons
+
+Please contact Alexis de Lattre from Akretion for any help or question about this module.
+ ''',
+ 'active': False,
+ 'installable': True,
+}
diff --git a/account_banking_sepa_credit_transfer/account_banking_sepa.py b/account_banking_sepa_credit_transfer/account_banking_sepa.py
new file mode 100644
index 00000000000..bb242eea1e6
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/account_banking_sepa.py
@@ -0,0 +1,80 @@
+##############################################################################
+#
+# SEPA Credit Transfer module for OpenERP
+# Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+# @author: Alexis de Lattre
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from osv import osv, fields
+import time
+from tools.translate import _
+import decimal_precision as dp
+
+
+class banking_export_sepa(osv.osv):
+ '''SEPA export'''
+ _name = 'banking.export.sepa'
+ _description = __doc__
+ _rec_name = 'msg_identification'
+
+ def _generate_filename(self, cr, uid, ids, name, arg, context=None):
+ res = {}
+ for sepa_file in self.browse(cr, uid, ids, context=context):
+ res[sepa_file.id] = 'sepa_' + (sepa_file.msg_identification or '') + '.xml'
+ return res
+
+ _columns = {
+ 'payment_order_ids': fields.many2many(
+ 'payment.order',
+ 'account_payment_order_sepa_rel',
+ 'banking_export_sepa_id', 'account_order_id',
+ 'Payment orders',
+ readonly=True),
+ 'prefered_exec_date': fields.date('Prefered execution date', readonly=True),
+ 'nb_transactions': fields.integer('Number of transactions', readonly=True),
+ 'total_amount': fields.float('Total amount',
+ digits_compute=dp.get_precision('Account'), readonly=True),
+ 'msg_identification': fields.char('Message identification', size=35,
+ readonly=True),
+ 'batch_booking': fields.boolean('Batch booking', readonly=True,
+ help="If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."),
+ 'charge_bearer': fields.selection([
+ ('SHAR', 'Shared'),
+ ('CRED', 'Borne by creditor'),
+ ('DEBT', 'Borne by debtor'),
+ ('SLEV', 'Following service level'),
+ ], 'Charge bearer', readonly=True,
+ help='Shared : transaction charges on the sender side are to be borne by the debtor, transaction charges on the receiver side are to be borne by the creditor (most transfers use this). Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor. Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme.'),
+ 'generation_date': fields.datetime('Generation date',
+ readonly=True),
+ 'file': fields.binary('SEPA XML file', readonly=True),
+ 'filename': fields.function(_generate_filename, type='char', size=256,
+ method=True, string='Filename', readonly=True),
+ 'state': fields.selection([
+ ('draft', 'Draft'),
+ ('sent', 'Sent'),
+ ('done', 'Reconciled'),
+ ], 'State', readonly=True),
+ }
+
+ _defaults = {
+ 'generation_date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
+ 'state': 'draft',
+ }
+
+banking_export_sepa()
+
diff --git a/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml b/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml
new file mode 100644
index 00000000000..cd09a554a71
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+ account.banking.export.sepa.form
+ banking.export.sepa
+ form
+
+
+
+
+
+
+
+ account.banking.export.sepa.tree
+ banking.export.sepa
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+ Generated SEPA XML files
+ banking.export.sepa
+ form
+ tree,form
+
+
+
+
+
+
+
+
+
diff --git a/account_banking_sepa_credit_transfer/data/pain.001.001.02.xsd b/account_banking_sepa_credit_transfer/data/pain.001.001.02.xsd
new file mode 100644
index 00000000000..43529da1b6e
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/data/pain.001.001.02.xsd
@@ -0,0 +1,784 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/account_banking_sepa_credit_transfer/data/pain.001.001.03.xsd b/account_banking_sepa_credit_transfer/data/pain.001.001.03.xsd
new file mode 100644
index 00000000000..8649779919c
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/data/pain.001.001.03.xsd
@@ -0,0 +1,921 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/account_banking_sepa_credit_transfer/data/pain.001.001.04.xsd b/account_banking_sepa_credit_transfer/data/pain.001.001.04.xsd
new file mode 100644
index 00000000000..813c7fe29c0
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/data/pain.001.001.04.xsd
@@ -0,0 +1,968 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
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
new file mode 100644
index 00000000000..fce8213d052
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+ SEPA Credit Transfer v04
+ pain.001.001.04
+
+
+ payment
+
+
+
+ SEPA Credit Transfer v03
+ pain.001.001.03
+
+
+ payment
+
+
+
+ SEPA Credit Transfer v02
+ pain.001.001.02
+
+
+ payment
+
+
+
+
+
diff --git a/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot b/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot
new file mode 100644
index 00000000000..1e9276babdd
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot
@@ -0,0 +1,251 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * account_banking_sepa_credit_transfer
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-06-06 08:01+0000\n"
+"PO-Revision-Date: 2013-06-06 08:01+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,file:0
+#: field:banking.export.sepa.wizard,file_id:0
+msgid "SEPA XML file"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+msgid "Payment order"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa.wizard,state:0
+msgid "Create"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa.wizard,msg_identification:0
+msgid "This is the message identification of the entire SEPA XML file. 35 characters max."
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,filename:0
+#: field:banking.export.sepa.wizard,filename:0
+msgid "Filename"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+msgid "General information"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,state:0
+#: field:banking.export.sepa.wizard,state:0
+msgid "State"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,prefered_exec_date:0
+#: field:banking.export.sepa.wizard,prefered_exec_date:0
+msgid "Prefered execution date"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Shared"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,generation_date:0
+msgid "Generation date"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa_wizard
+msgid "Export SEPA Credit Transfer XML file"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+msgid "SEPA Credit Transfer"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa.wizard,state:0
+msgid "Finish"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Reconciled"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order
+msgid "Generated SEPA files"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa
+#: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa
+msgid "Generated SEPA XML files"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Sent"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Validate"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Generate"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,msg_identification:0
+#: field:banking.export.sepa.wizard,msg_identification:0
+msgid "Message identification"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:284
+#, python-format
+msgid "The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,total_amount:0
+#: field:banking.export.sepa.wizard,total_amount:0
+msgid "Total amount"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa,charge_bearer:0
+#: help:banking.export.sepa.wizard,charge_bearer:0
+msgid "Shared : transaction charges on the sender side are to be borne by the debtor, transaction charges on the receiver side are to be borne by the creditor (most transfers use this). Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor. Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme."
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Borne by creditor"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+#: field:banking.export.sepa,payment_order_ids:0
+#: field:banking.export.sepa.wizard,payment_order_ids:0
+msgid "Payment orders"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90
+#, python-format
+msgid "This IBAN is not valid : %s"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "SEPA XML file generation"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Reference for further communication"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Processing details"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa
+msgid "SEPA export"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Borne by debtor"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,nb_transactions:0
+#: field:banking.export.sepa.wizard,nb_transactions:0
+msgid "Number of transactions"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Following service level"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,charge_bearer:0
+#: field:banking.export.sepa.wizard,charge_bearer:0
+msgid "Charge bearer"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa,batch_booking:0
+#: help:banking.export.sepa.wizard,batch_booking:0
+msgid "If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa.wizard,prefered_exec_date:0
+msgid "This is the date on which the file should be processed by the bank. Please keep in mind that banks only execute on working days and typically use a delay of two days between execution date and effective transfer date."
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa.wizard,file:0
+msgid "File"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Cancel"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:135
+#, python-format
+msgid "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' and 'pain.001.001.04'."
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:135
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:284
+#, python-format
+msgid "Error :"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,batch_booking:0
+#: field:banking.export.sepa.wizard,batch_booking:0
+msgid "Batch booking"
+msgstr ""
+
diff --git a/account_banking_sepa_credit_transfer/i18n/fr.po b/account_banking_sepa_credit_transfer/i18n/fr.po
new file mode 100644
index 00000000000..bf39e5eb0d8
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/i18n/fr.po
@@ -0,0 +1,251 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * account_banking_sepa_credit_transfer
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-06-06 08:01+0000\n"
+"PO-Revision-Date: 2013-06-06 08:01+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,file:0
+#: field:banking.export.sepa.wizard,file_id:0
+msgid "SEPA XML file"
+msgstr "Fichier SEPA XML"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+msgid "Payment order"
+msgstr "Ordre de paiement"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa.wizard,state:0
+msgid "Create"
+msgstr "Créer"
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa.wizard,msg_identification:0
+msgid "This is the message identification of the entire SEPA XML file. 35 characters max."
+msgstr "Ceci est le libellé d'identification du fichier SEPA XML. 35 caractères maximum."
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,filename:0
+#: field:banking.export.sepa.wizard,filename:0
+msgid "Filename"
+msgstr "Nom du fichier"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+msgid "General information"
+msgstr "Informations générales"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,state:0
+#: field:banking.export.sepa.wizard,state:0
+msgid "State"
+msgstr "État"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Draft"
+msgstr "Brouillon"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,prefered_exec_date:0
+#: field:banking.export.sepa.wizard,prefered_exec_date:0
+msgid "Prefered execution date"
+msgstr "Date d'exécution demandée"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Shared"
+msgstr "Partagé"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,generation_date:0
+msgid "Generation date"
+msgstr "Date de génération"
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa_wizard
+msgid "Export SEPA Credit Transfer XML file"
+msgstr "Exporte the fichier de virement SEPA XML"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+msgid "SEPA Credit Transfer"
+msgstr "Virement SEPA"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa.wizard,state:0
+msgid "Finish"
+msgstr "Finir"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Reconciled"
+msgstr "Réconcilié"
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order
+msgid "Generated SEPA files"
+msgstr "Fichiers SEPA générés"
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa
+#: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa
+msgid "Generated SEPA XML files"
+msgstr "Fichiers SEPA XML générés"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Sent"
+msgstr "Envoyé"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Validate"
+msgstr "Valider"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Generate"
+msgstr "Générer"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,msg_identification:0
+#: field:banking.export.sepa.wizard,msg_identification:0
+msgid "Message identification"
+msgstr "Libellé d'identification"
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:284
+#, python-format
+msgid "The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s"
+msgstr "Le fichier XML généré n'est pas valide par rapport à la Définition du Schéma XML officiel. Le fichier XML généré et le message d'erreur complet ont été écrits dans les logs du serveur. Voici l'erreur, qui vous donnera peut-être une idée sur la cause du problème : %s"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,total_amount:0
+#: field:banking.export.sepa.wizard,total_amount:0
+msgid "Total amount"
+msgstr "Montant total"
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa,charge_bearer:0
+#: help:banking.export.sepa.wizard,charge_bearer:0
+msgid "Shared : transaction charges on the sender side are to be borne by the debtor, transaction charges on the receiver side are to be borne by the creditor (most transfers use this). Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor. Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme."
+msgstr "Partagés : les frais bancaires côté émetteur sont à la charge de l'émetteur et les frais bancaires côté destinataire sont à la charge du destinataire (la plupart des virements utilisent cette répartition). Supportés par le destinataire : tous les frais bancaires sont à la charge du destinataire. Supportés par l'émetteur : tous les frais bancaires sont à la charge de l'émetteur. Suivant le niveau de service : la répartition des frais bancaires suit les règles pré-établies dans le contrat avec la banque."
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Borne by creditor"
+msgstr "Supportés par le destinataire"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:0
+#: field:banking.export.sepa,payment_order_ids:0
+#: field:banking.export.sepa.wizard,payment_order_ids:0
+msgid "Payment orders"
+msgstr "Ordres de paiement"
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90
+#, python-format
+msgid "This IBAN is not valid : %s"
+msgstr "Cet IBAN n'est pas valide : %s"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "SEPA XML file generation"
+msgstr "Génération du fichier SEPA XML"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Reference for further communication"
+msgstr "Référence pour communication ultérieure"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Processing details"
+msgstr "Paramètres"
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa
+msgid "SEPA export"
+msgstr "Export SEPA"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Borne by debtor"
+msgstr "Supportés par l'émetteur"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,nb_transactions:0
+#: field:banking.export.sepa.wizard,nb_transactions:0
+msgid "Number of transactions"
+msgstr "Nombre de transactions"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Following service level"
+msgstr "Suivant le niveau de service"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,charge_bearer:0
+#: field:banking.export.sepa.wizard,charge_bearer:0
+msgid "Charge bearer"
+msgstr "Répartition des frais"
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa,batch_booking:0
+#: help:banking.export.sepa.wizard,batch_booking:0
+msgid "If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."
+msgstr "Si coché, le relevé de compte ne comportera qu'une ligne de débit pour tous les virements du fichier SEPA XML ; si non coché, le relevé de compte comportera une ligne de débit pour chaque virement du fichier SEPA XML."
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa.wizard,prefered_exec_date:0
+msgid "This is the date on which the file should be processed by the bank. Please keep in mind that banks only execute on working days and typically use a delay of two days between execution date and effective transfer date."
+msgstr "C'est la date à laquelle le fichier doit être traité par la banque. Gardez en tête que les banques réalisent des traitements seulement les jours ouvrés et ont habituellement un délai de 2 jours entre la date de traitement et la date du transfert effectif."
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa.wizard,file:0
+msgid "File"
+msgstr "Fichier"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:0
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:135
+#, python-format
+msgid "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' and 'pain.001.001.04'."
+msgstr "Le code '%s' pour le Type de Paiment n'est pas supporté. Les seuls codes de Types de Paiement supportés pour les virements SEPA sont 'pain.001.001.02', 'pain.001.001.03' et 'pain.001.001.04'."
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:135
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:284
+#, python-format
+msgid "Error :"
+msgstr "Erreur :"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,batch_booking:0
+#: field:banking.export.sepa.wizard,batch_booking:0
+msgid "Batch booking"
+msgstr "Débit groupé"
+
diff --git a/account_banking_sepa_credit_transfer/security/ir.model.access.csv b/account_banking_sepa_credit_transfer/security/ir.model.access.csv
new file mode 100644
index 00000000000..96fda5eec0d
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/security/ir.model.access.csv
@@ -0,0 +1,2 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_banking_export_sepa","Full access on banking.export.sepa","model_banking_export_sepa","account_payment.group_account_payment",1,1,1,1
diff --git a/account_banking_sepa_credit_transfer/wizard/__init__.py b/account_banking_sepa_credit_transfer/wizard/__init__.py
new file mode 100644
index 00000000000..239513358b2
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/wizard/__init__.py
@@ -0,0 +1,23 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# SEPA Credit Transfer module for OpenERP
+# Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+# @author: Alexis de Lattre
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+import export_sepa
diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa.py b/account_banking_sepa_credit_transfer/wizard/export_sepa.py
new file mode 100644
index 00000000000..eef04b79f56
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/wizard/export_sepa.py
@@ -0,0 +1,341 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# SEPA Credit Transfer module for OpenERP
+# Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+# @author: Alexis de Lattre
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+
+from osv import osv, fields
+import base64
+from datetime import datetime, timedelta
+from tools.translate import _
+import tools
+from lxml import etree
+import logging
+import netsvc
+
+_logger = logging.getLogger(__name__)
+
+
+class banking_export_sepa_wizard(osv.osv_memory):
+ _name = 'banking.export.sepa.wizard'
+ _description = 'Export SEPA Credit Transfer XML file'
+ _columns = {
+ 'state': fields.selection([('create', 'Create'), ('finish', 'Finish')],
+ 'State', readonly=True),
+ 'msg_identification': fields.char('Message identification', size=35,
+ # Can't set required=True on the field because it blocks
+ # the launch of the wizard -> I set it as required in the view
+ help='This is the message identification of the entire SEPA XML file. 35 characters max.'),
+ 'batch_booking': fields.boolean('Batch booking',
+ help="If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."),
+ 'prefered_exec_date': fields.date('Prefered execution date',
+ help='This is the date on which the file should be processed by the bank. Please keep in mind that banks only execute on working days and typically use a delay of two days between execution date and effective transfer date.'),
+ 'charge_bearer': fields.selection([
+ ('SHAR', 'Shared'),
+ ('CRED', 'Borne by creditor'),
+ ('DEBT', 'Borne by debtor'),
+ ('SLEV', 'Following service level'),
+ ], 'Charge bearer', required=True,
+ help='Shared : transaction charges on the sender side are to be borne by the debtor, transaction charges on the receiver side are to be borne by the creditor (most transfers use this). Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor. Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme.'),
+ 'nb_transactions': fields.related('file_id', 'nb_transactions',
+ type='integer', string='Number of transactions', readonly=True),
+ 'total_amount': fields.related('file_id', 'total_amount', type='float',
+ string='Total amount', readonly=True),
+ 'file_id': fields.many2one('banking.export.sepa', 'SEPA XML file', readonly=True),
+ 'file': fields.related('file_id', 'file', string="File", type='binary',
+ readonly=True),
+ 'filename': fields.related('file_id', 'filename', string="Filename",
+ type='char', size=256, readonly=True),
+ 'payment_order_ids': fields.many2many('payment.order',
+ 'wiz_sepa_payorders_rel', 'wizard_id', 'payment_order_id',
+ 'Payment orders', readonly=True),
+ }
+
+ _defaults = {
+ 'charge_bearer': 'SLEV',
+ 'state': 'create',
+ }
+
+
+ def _limit_size(self, cr, uid, field, max_size, context=None):
+ '''Limit size of strings to respect the PAIN standard'''
+ max_size = int(max_size)
+ return field[0:max_size]
+
+
+ def _validate_iban(self, cr, uid, iban, context=None):
+ '''if IBAN is valid, returns IBAN
+ if IBAN is NOT valid, raises an error message'''
+ partner_bank_obj = self.pool.get('res.partner.bank')
+ if partner_bank_obj.is_iban_valid(cr, uid, iban, context=context):
+ return iban.replace(' ', '')
+ else:
+ raise osv.except_osv(_('Error :'), _("This IBAN is not valid : %s") % iban)
+
+ def create(self, cr, uid, vals, context=None):
+ payment_order_ids = context.get('active_ids', [])
+ vals.update({
+ 'payment_order_ids': [[6, 0, payment_order_ids]],
+ })
+ return super(banking_export_sepa_wizard, self).create(cr, uid,
+ vals, context=context)
+
+
+ def create_sepa(self, cr, uid, ids, context=None):
+ '''
+ Creates the SEPA Credit Transfer file. That's the important code !
+ '''
+ payment_order_obj = self.pool.get('payment.order')
+
+ sepa_export = self.browse(cr, uid, ids[0], context=context)
+
+ my_company_name = sepa_export.payment_order_ids[0].mode.bank_id.partner_id.name
+ my_company_iban = self._validate_iban(cr, uid, sepa_export.payment_order_ids[0].mode.bank_id.iban, context=context)
+ my_company_bic = sepa_export.payment_order_ids[0].mode.bank_id.bank.bic
+ #my_company_country_code = sepa_export.payment_order_ids[0].mode.bank_id.partner_id.address[0].country_id.code
+ #my_company_city = sepa_export.payment_order_ids[0].mode.bank_id.partner_id.address[0].city
+ #my_company_street1 = sepa_export.payment_order_ids[0].mode.bank_id.partner_id.address[0].street
+ pain_flavor = sepa_export.payment_order_ids[0].mode.type.code
+ if pain_flavor == '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':
+ bic_xml_tag = 'BIC'
+ # size 70 -> 140 for with pain.001.001.03
+ # BUT the European Payment Council, in the document
+ # "SEPA Credit Transfer Scheme Customer-to-bank Implementation guidelines" v6.0
+ # available on http://www.europeanpaymentscouncil.eu/knowledge_bank.cfm
+ # says that 'Nm' should be limited to 70
+ # so we follow the "European Payment Council" and we put 70 and not 140
+ name_maxsize = 70
+ root_xml_tag = 'CstmrCdtTrfInitn'
+ elif pain_flavor == 'pain.001.001.04':
+ bic_xml_tag = 'BICFI'
+ name_maxsize = 140
+ root_xml_tag = 'CstmrCdtTrfInitn'
+ else:
+ raise osv.except_osv(_('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' and 'pain.001.001.04'.") % pain_flavor)
+ if sepa_export.batch_booking:
+ my_batch_booking = 'true'
+ else:
+ my_batch_booking = 'false'
+ my_msg_identification = sepa_export.msg_identification
+ if sepa_export.prefered_exec_date:
+ my_requested_exec_date = sepa_export.prefered_exec_date
+ else:
+ my_requested_exec_date = datetime.strftime(datetime.today() + timedelta(days=1), '%Y-%m-%d')
+
+ pain_ns = {
+ 'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
+ None: 'urn:iso:std:iso:20022:tech:xsd:%s' % pain_flavor,
+ }
+
+ root = etree.Element('Document', nsmap=pain_ns)
+ pain_root = etree.SubElement(root, root_xml_tag)
+ # A. Group header
+ group_header = etree.SubElement(pain_root, 'GrpHdr')
+ message_identification = etree.SubElement(group_header, 'MsgId')
+ message_identification.text = self._limit_size(cr, uid, my_msg_identification, 35, context=context)
+ creation_date_time = etree.SubElement(group_header, 'CreDtTm')
+ creation_date_time.text = datetime.strftime(datetime.today(), '%Y-%m-%dT%H:%M:%S')
+ if pain_flavor == 'pain.001.001.02':
+ # batch_booking is in "Group header" with pain.001.001.02
+ # and in "Payment info" in pain.001.001.03/04
+ batch_booking = etree.SubElement(group_header, 'BtchBookg')
+ batch_booking.text = my_batch_booking
+ nb_of_transactions_grphdr = etree.SubElement(group_header, 'NbOfTxs')
+ control_sum_grphdr = etree.SubElement(group_header, 'CtrlSum')
+ # Grpg removed in pain.001.001.03
+ if pain_flavor == 'pain.001.001.02':
+ grouping = etree.SubElement(group_header, 'Grpg')
+ grouping.text = 'GRPD'
+ initiating_party = etree.SubElement(group_header, 'InitgPty')
+ initiating_party_name = etree.SubElement(initiating_party, 'Nm')
+ initiating_party_name.text = self._limit_size(cr, uid, my_company_name, name_maxsize, context=context)
+ # B. Payment info
+ payment_info = etree.SubElement(pain_root, 'PmtInf')
+ payment_info_identification = etree.SubElement(payment_info, 'PmtInfId')
+ payment_info_identification.text = self._limit_size(cr, uid, my_msg_identification, 35, context=context)
+ payment_method = etree.SubElement(payment_info, 'PmtMtd')
+ payment_method.text = 'TRF'
+ if pain_flavor in ['pain.001.001.03', 'pain.001.001.04']:
+ # batch_booking is in "Group header" with pain.001.001.02
+ # and in "Payment info" in pain.001.001.03/04
+ batch_booking = etree.SubElement(payment_info, 'BtchBookg')
+ batch_booking.text = my_batch_booking
+ # It may seem surprising, but the
+ # "SEPA Credit Transfer Scheme Customer-to-bank Implementation guidelines"
+ # v6.0 says that control sum and nb_of_transactions should be present
+ # at both "group header" level and "payment info" level
+ # This seems to be confirmed by the tests carried out at
+ # BNP Paribas in PAIN v001.001.03
+ if pain_flavor in ['pain.001.001.03', 'pain.001.001.04']:
+ nb_of_transactions_pmtinf = etree.SubElement(payment_info, 'NbOfTxs')
+ control_sum_pmtinf = etree.SubElement(payment_info, 'CtrlSum')
+ payment_type_info = etree.SubElement(payment_info, 'PmtTpInf')
+ service_level = etree.SubElement(payment_type_info, 'SvcLvl')
+ service_level_code = etree.SubElement(service_level, 'Cd')
+ service_level_code.text = 'SEPA'
+ requested_exec_date = etree.SubElement(payment_info, 'ReqdExctnDt')
+ requested_exec_date.text = my_requested_exec_date
+ debtor = etree.SubElement(payment_info, 'Dbtr')
+ debtor_name = etree.SubElement(debtor, 'Nm')
+ debtor_name.text = self._limit_size(cr, uid, my_company_name, name_maxsize, context=context)
+# debtor_address = etree.SubElement(debtor, 'PstlAdr')
+# debtor_street = etree.SubElement(debtor_address, 'AdrLine')
+# debtor_street.text = my_company_street1
+# debtor_city = etree.SubElement(debtor_address, 'AdrLine')
+# debtor_city.text = my_company_city
+# debtor_country = etree.SubElement(debtor_address, 'Ctry')
+# debtor_country.text = my_company_country_code
+ debtor_account = etree.SubElement(payment_info, 'DbtrAcct')
+ debtor_account_id = etree.SubElement(debtor_account, 'Id')
+ debtor_account_iban = etree.SubElement(debtor_account_id, 'IBAN')
+ debtor_account_iban.text = my_company_iban
+ debtor_agent = etree.SubElement(payment_info, 'DbtrAgt')
+ debtor_agent_institution = etree.SubElement(debtor_agent, 'FinInstnId')
+ debtor_agent_bic = etree.SubElement(debtor_agent_institution, bic_xml_tag)
+ debtor_agent_bic.text = my_company_bic
+ charge_bearer = etree.SubElement(payment_info, 'ChrgBr')
+ charge_bearer.text = sepa_export.charge_bearer
+
+ transactions_count = 0
+ total_amount = 0.0
+ amount_control_sum = 0.0
+ # Iterate on payment orders
+ for payment_order in sepa_export.payment_order_ids:
+ total_amount = total_amount + payment_order.total
+ # Iterate each payment lines
+ for line in payment_order.line_ids:
+ transactions_count += 1
+ # C. Credit Transfer Transaction Info
+ credit_transfer_transaction_info = etree.SubElement(payment_info, 'CdtTrfTxInf')
+ payment_identification = etree.SubElement(credit_transfer_transaction_info, 'PmtId')
+ instruction_identification = etree.SubElement(payment_identification, 'InstrId')
+ instruction_identification.text = self._limit_size(cr, uid, line.communication, 35, context=context) #otherwise, we can reach the invoice fields via ml_inv_ref
+ end2end_identification = etree.SubElement(payment_identification, 'EndToEndId')
+ end2end_identification.text = self._limit_size(cr, uid, line.communication, 35, context=context)
+ amount = etree.SubElement(credit_transfer_transaction_info, 'Amt')
+ instructed_amount = etree.SubElement(amount, 'InstdAmt', Ccy=line.currency.name)
+ instructed_amount.text = '%.2f' % line.amount_currency
+ amount_control_sum += line.amount_currency
+ creditor_agent = etree.SubElement(credit_transfer_transaction_info, 'CdtrAgt')
+ creditor_agent_institution = etree.SubElement(creditor_agent, 'FinInstnId')
+ creditor_agent_bic = etree.SubElement(creditor_agent_institution, bic_xml_tag)
+ creditor_agent_bic.text = line.bank_id.bank.bic
+ creditor = etree.SubElement(credit_transfer_transaction_info, 'Cdtr')
+ creditor_name = etree.SubElement(creditor, 'Nm')
+ creditor_name.text = self._limit_size(cr, uid, line.partner_id.name, name_maxsize, context=context)
+# I don't think they want it
+# If they want it, we need to implement full spec p26 appendix
+# creditor_address = etree.SubElement(creditor, 'PstlAdr')
+# creditor_street = etree.SubElement(creditor_address, 'AdrLine')
+# creditor_street.text = line.partner_id.address[0].street
+# creditor_city = etree.SubElement(creditor_address, 'AdrLine')
+# creditor_city.text = line.partner_id.address[0].city
+# creditor_country = etree.SubElement(creditor_address, 'Ctry')
+# creditor_country.text = line.partner_id.address[0].country_id.code
+ creditor_account = etree.SubElement(credit_transfer_transaction_info, 'CdtrAcct')
+ creditor_account_id = etree.SubElement(creditor_account, 'Id')
+ creditor_account_iban = etree.SubElement(creditor_account_id, 'IBAN')
+ creditor_account_iban.text = self._validate_iban(cr, uid, line.bank_id.iban, context=context)
+ remittance_info = etree.SubElement(credit_transfer_transaction_info, 'RmtInf')
+ # switch to Structured (Strdr) ? If we do it, beware that the format is not the same between pain 02 and pain 03
+ remittance_info_unstructured = etree.SubElement(remittance_info, 'Ustrd')
+ remittance_info_unstructured.text = self._limit_size(cr, uid, line.communication, 140, context=context)
+
+ if pain_flavor in ['pain.001.001.03', 'pain.001.001.04']:
+ nb_of_transactions_grphdr.text = nb_of_transactions_pmtinf.text = str(transactions_count)
+ control_sum_grphdr.text = control_sum_pmtinf.text = '%.2f' % amount_control_sum
+ else:
+ nb_of_transactions_grphdr.text = str(transactions_count)
+ control_sum_grphdr.text = '%.2f' % amount_control_sum
+
+
+ xml_string = etree.tostring(root, pretty_print=True, encoding='UTF-8', xml_declaration=True)
+ _logger.debug("Generated SEPA XML file below")
+ _logger.debug(xml_string)
+ official_pain_schema = etree.XMLSchema(etree.parse(tools.file_open('account_banking_sepa_credit_transfer/data/%s.xsd' % pain_flavor)))
+
+ try:
+ official_pain_schema.validate(root)
+ except Exception, e:
+ _logger.warning("The XML file is invalid against the XML Schema Definition")
+ _logger.warning(xml_string)
+ _logger.warning(e)
+ raise osv.except_osv(_('Error :'), _('The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s') % str(e))
+
+ # CREATE the banking.export.sepa record
+ file_id = self.pool.get('banking.export.sepa').create(cr, uid,
+ {
+ 'msg_identification': my_msg_identification,
+ 'batch_booking': sepa_export.batch_booking,
+ 'charge_bearer': sepa_export.charge_bearer,
+ 'prefered_exec_date': sepa_export.prefered_exec_date,
+ 'total_amount': total_amount,
+ 'nb_transactions': transactions_count,
+ 'file': base64.encodestring(xml_string),
+ 'payment_order_ids': [
+ (6, 0, [x.id for x in sepa_export.payment_order_ids])
+ ],
+ }, context=context)
+
+ self.write(cr, uid, ids, {
+ 'file_id': file_id,
+ 'state': 'finish',
+ }, context=context)
+
+ action = {
+ 'name': 'SEPA XML',
+ 'type': 'ir.actions.act_window',
+ 'view_type': 'form',
+ 'view_mode': 'form,tree',
+ 'res_model': self._name,
+ 'res_id': ids[0],
+ 'target': 'new',
+ }
+ return action
+
+
+ def cancel_sepa(self, cr, uid, ids, context=None):
+ '''
+ Cancel the SEPA PAIN: just drop the file
+ '''
+ sepa_export = self.browse(cr, uid, ids[0], context=context)
+ self.pool.get('banking.export.sepa').unlink(cr, uid, sepa_export.file_id.id, context=context)
+ return {'type': 'ir.actions.act_window_close'}
+
+
+ def save_sepa(self, cr, uid, ids, context=None):
+ '''
+ Save the SEPA PAIN: mark all payments in the file as 'sent'.
+ '''
+ sepa_export = self.browse(cr, uid, ids[0], context=context)
+ sepa_file = self.pool.get('banking.export.sepa').write(cr, uid,
+ sepa_export.file_id.id, {'state': 'sent'}, context=context)
+ wf_service = netsvc.LocalService('workflow')
+ for order in sepa_export.payment_order_ids:
+ wf_service.trg_validate(uid, 'payment.order', order.id, 'sent', cr)
+ return {'type': 'ir.actions.act_window_close'}
+
+
+banking_export_sepa_wizard()
+
diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml b/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml
new file mode 100644
index 00000000000..3893f777158
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+ banking.export.sepa.wizard.view
+ banking.export.sepa.wizard
+ form
+
+
+
+
+
+
+
From 40a8ea5d3fac25dc6dc0254b1251b602e58fda7f Mon Sep 17 00:00:00 2001
From: Stefan Rijnhart
Date: Fri, 28 Jun 2013 21:39:37 +0200
Subject: [PATCH 02/79] [IMP] account_banking_sepa_credit_transfer: 3 things
* Small API changes
* Updated two additional imports to new API
* A payment mode type needs a suitable bank type
---
.../__openerp__.py | 6 ++----
.../account_banking_sepa.py | 13 +++++--------
.../account_banking_sepa_view.xml | 2 --
.../data/payment_type_sepa_sct.xml | 11 +++++++----
.../wizard/export_sepa.py | 19 +++++++------------
.../wizard/export_sepa_view.xml | 1 -
6 files changed, 21 insertions(+), 31 deletions(-)
diff --git a/account_banking_sepa_credit_transfer/__openerp__.py b/account_banking_sepa_credit_transfer/__openerp__.py
index 67abd8d385c..c104789088b 100644
--- a/account_banking_sepa_credit_transfer/__openerp__.py
+++ b/account_banking_sepa_credit_transfer/__openerp__.py
@@ -25,15 +25,13 @@
'author': 'Akretion',
'website': 'http://www.akretion.com',
'category': 'Banking addons',
- 'depends': ['account_banking'],
- 'init_xml': [],
- 'update_xml': [
+ 'depends': ['account_banking_payment'],
+ 'data': [
'account_banking_sepa_view.xml',
'wizard/export_sepa_view.xml',
'data/payment_type_sepa_sct.xml',
'security/ir.model.access.csv',
],
- 'demo_xml': [],
'description': '''
Module to export payment orders in SEPA XML file format.
diff --git a/account_banking_sepa_credit_transfer/account_banking_sepa.py b/account_banking_sepa_credit_transfer/account_banking_sepa.py
index bb242eea1e6..decb6a5320a 100644
--- a/account_banking_sepa_credit_transfer/account_banking_sepa.py
+++ b/account_banking_sepa_credit_transfer/account_banking_sepa.py
@@ -19,13 +19,13 @@
#
##############################################################################
-from osv import osv, fields
+from openerp.osv import orm, fields
import time
-from tools.translate import _
-import decimal_precision as dp
+from openerp.tools.translate import _
+from openerp.addons.decimal_precision import decimal_precision as dp
-class banking_export_sepa(osv.osv):
+class banking_export_sepa(orm.Model):
'''SEPA export'''
_name = 'banking.export.sepa'
_description = __doc__
@@ -72,9 +72,6 @@ def _generate_filename(self, cr, uid, ids, name, arg, context=None):
}
_defaults = {
- 'generation_date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
+ 'generation_date': fields.date.context_today,
'state': 'draft',
}
-
-banking_export_sepa()
-
diff --git a/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml b/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml
index cd09a554a71..8aabd04b9cc 100644
--- a/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml
+++ b/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml
@@ -10,7 +10,6 @@
account.banking.export.sepa.formbanking.export.sepa
- form
diff --git a/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot b/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot
index ba9f9fb70e5..38feaadd469 100644
--- a/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot
+++ b/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-13 09:13+0000\n"
-"PO-Revision-Date: 2013-11-13 09:13+0000\n"
+"POT-Creation-Date: 2013-12-23 22:49+0000\n"
+"PO-Revision-Date: 2013-12-23 22:49+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -15,12 +15,6 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
-#. module: account_banking_sepa_credit_transfer
-#: field:banking.export.sepa,prefered_exec_date:0
-#: field:banking.export.sepa.wizard,prefered_exec_date:0
-msgid "Prefered Execution Date"
-msgstr ""
-
#. module: account_banking_sepa_credit_transfer
#: selection:banking.export.sepa.wizard,state:0
msgid "Create"
@@ -54,12 +48,6 @@ msgstr ""
msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor."
msgstr ""
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:117
-#, python-format
-msgid "Cannot compute the '%s' of the Payment Line with Invoice Reference '%s'."
-msgstr ""
-
#. module: account_banking_sepa_credit_transfer
#: selection:banking.export.sepa,charge_bearer:0
#: selection:banking.export.sepa.wizard,charge_bearer:0
@@ -72,9 +60,14 @@ msgstr ""
msgid "Batch Booking"
msgstr ""
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Sent"
+msgstr ""
+
#. module: account_banking_sepa_credit_transfer
#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa_wizard
-msgid "Export SEPA Credit Transfer XML file"
+msgid "Export SEPA Credit Transfer File"
msgstr ""
#. module: account_banking_sepa_credit_transfer
@@ -104,23 +97,6 @@ msgstr ""
msgid "Borne by Creditor"
msgstr ""
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:122
-#, python-format
-msgid "Cannot compute the '%s'."
-msgstr ""
-
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:126
-#, python-format
-msgid "The type of the field '%s' is %s. It should be a string or unicode."
-msgstr ""
-
-#. module: account_banking_sepa_credit_transfer
-#: selection:banking.export.sepa,state:0
-msgid "Sent"
-msgstr ""
-
#. module: account_banking_sepa_credit_transfer
#: view:banking.export.sepa.wizard:0
msgid "Validate"
@@ -131,12 +107,6 @@ msgstr ""
msgid "Generate"
msgstr ""
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:169
-#, python-format
-msgid "The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s"
-msgstr ""
-
#. module: account_banking_sepa_credit_transfer
#: selection:banking.export.sepa,charge_bearer:0
#: selection:banking.export.sepa.wizard,charge_bearer:0
@@ -144,13 +114,8 @@ msgid "Borne by Debtor"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:116
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:121
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:130
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:168
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:206
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:350
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:128
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:245
#, python-format
msgid "Error:"
msgstr ""
@@ -172,19 +137,13 @@ msgstr ""
msgid "SEPA File Generation"
msgstr ""
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:125
-#, python-format
-msgid "Field type error:"
-msgstr ""
-
#. module: account_banking_sepa_credit_transfer
#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa
msgid "SEPA export"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:351
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:246
#, python-format
msgid "Missing Bank Account on invoice '%s' (payment order line reference '%s')."
msgstr ""
@@ -195,29 +154,17 @@ msgstr ""
msgid "SEPA XML File"
msgstr ""
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:131
-#, python-format
-msgid "The '%s' is empty or 0. It should have a non-null value."
-msgstr ""
-
#. module: account_banking_sepa_credit_transfer
#: help:banking.export.sepa,charge_bearer:0
msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor."
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:207
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:129
#, python-format
msgid "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'."
msgstr ""
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90
-#, python-format
-msgid "This IBAN is not valid : %s"
-msgstr ""
-
#. module: account_banking_sepa_credit_transfer
#: view:banking.export.sepa:0
#: field:banking.export.sepa,payment_order_ids:0
@@ -243,11 +190,6 @@ msgstr ""
msgid "If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."
msgstr ""
-#. module: account_banking_sepa_credit_transfer
-#: help:banking.export.sepa.wizard,prefered_exec_date:0
-msgid "This is the date on which the file should be processed by the bank. Please keep in mind that banks only execute on working days and typically use a delay of two days between execution date and effective transfer date."
-msgstr ""
-
#. module: account_banking_sepa_credit_transfer
#: field:banking.export.sepa.wizard,file:0
msgid "File"
diff --git a/account_banking_sepa_credit_transfer/i18n/fr.po b/account_banking_sepa_credit_transfer/i18n/fr.po
index 6b415fc5b93..098e87ea3ea 100644
--- a/account_banking_sepa_credit_transfer/i18n/fr.po
+++ b/account_banking_sepa_credit_transfer/i18n/fr.po
@@ -6,21 +6,14 @@ msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-13 09:13+0000\n"
-"PO-Revision-Date: 2013-12-02 16:36+0000\n"
-"Last-Translator: Alexis de Lattre \n"
+"POT-Creation-Date: 2013-12-23 22:52+0000\n"
+"PO-Revision-Date: 2013-12-23 22:52+0000\n"
+"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-12-03 06:20+0000\n"
-"X-Generator: Launchpad (build 16856)\n"
-
-#. module: account_banking_sepa_credit_transfer
-#: field:banking.export.sepa,prefered_exec_date:0
-#: field:banking.export.sepa.wizard,prefered_exec_date:0
-msgid "Prefered Execution Date"
-msgstr "Date d'exécution demandée"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
#. module: account_banking_sepa_credit_transfer
#: selection:banking.export.sepa.wizard,state:0
@@ -52,31 +45,8 @@ msgstr "Brouillon"
#. module: account_banking_sepa_credit_transfer
#: help:banking.export.sepa.wizard,charge_bearer:0
-msgid ""
-"Following service level : transaction charges are to be applied following "
-"the rules agreed in the service level and/or scheme (SEPA Core messages must "
-"use this). Shared : transaction charges on the debtor side are to be borne "
-"by the debtor, transaction charges on the creditor side are to be borne by "
-"the creditor. Borne by creditor : all transaction charges are to be borne by "
-"the creditor. Borne by debtor : all transaction charges are to be borne by "
-"the debtor."
-msgstr ""
-"Suivant le niveau de service : la répartition des frais bancaires suit les "
-"règles pré-établies dans le schema ou dans le contrat avec la banque (les "
-"messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais "
-"bancaires côté débiteur sont à la charge du débiteur, les frais bancaires "
-"côté créancier sont à la charge du créancier. Supportés par le créancier : "
-"tous les frais bancaires sont à la charge du créancier. Supportés par le "
-"débiteur : tous les frais bancaires sont à la charge du débiteur."
-
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:117
-#, python-format
-msgid ""
-"Cannot compute the '%s' of the Payment Line with Invoice Reference '%s'."
-msgstr ""
-"Impossible de générer le '%s' de la ligne de paiement ayant la référence de "
-"facture '%s'."
+msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor."
+msgstr "Suivant le niveau de service : la répartition des frais bancaires suit les règles pré-établies dans le schema ou dans le contrat avec la banque (les messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais bancaires côté débiteur sont à la charge du débiteur, les frais bancaires côté créancier sont à la charge du créancier. Supportés par le créancier : tous les frais bancaires sont à la charge du créancier. Supportés par le débiteur : tous les frais bancaires sont à la charge du débiteur."
#. module: account_banking_sepa_credit_transfer
#: selection:banking.export.sepa,charge_bearer:0
@@ -90,10 +60,15 @@ msgstr "Partagé"
msgid "Batch Booking"
msgstr "Débit groupé"
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Sent"
+msgstr "Envoyé"
+
#. module: account_banking_sepa_credit_transfer
#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa_wizard
-msgid "Export SEPA Credit Transfer XML file"
-msgstr "Exporte the fichier de virement SEPA XML"
+msgid "Export SEPA Credit Transfer File"
+msgstr "Exporte le fichier de virement SEPA"
#. module: account_banking_sepa_credit_transfer
#: view:banking.export.sepa:0
@@ -122,24 +97,6 @@ msgstr "Suivant le niveau de service"
msgid "Borne by Creditor"
msgstr "Supportés par le destinataire"
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:122
-#, python-format
-msgid "Cannot compute the '%s'."
-msgstr "Impossible de générer le '%s'."
-
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:126
-#, python-format
-msgid "The type of the field '%s' is %s. It should be a string or unicode."
-msgstr ""
-"Le champ '%s' est de type %s. Le type devrait être string ou unicode."
-
-#. module: account_banking_sepa_credit_transfer
-#: selection:banking.export.sepa,state:0
-msgid "Sent"
-msgstr "Envoyé"
-
#. module: account_banking_sepa_credit_transfer
#: view:banking.export.sepa.wizard:0
msgid "Validate"
@@ -150,20 +107,6 @@ msgstr "Valider"
msgid "Generate"
msgstr "Générer"
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:169
-#, python-format
-msgid ""
-"The generated XML file is not valid against the official XML Schema "
-"Definition. The generated XML file and the full error have been written in "
-"the server logs. Here is the error, which may give you an idea on the cause "
-"of the problem : %s"
-msgstr ""
-"Le fichier XML généré n'est pas valide par rapport à la Définition du Schéma "
-"XML officiel. Le fichier XML généré et le message d'erreur complet ont été "
-"écrits dans les logs du serveur. Voici l'erreur, qui vous donnera peut-être "
-"une idée sur la cause du problème : %s"
-
#. module: account_banking_sepa_credit_transfer
#: selection:banking.export.sepa,charge_bearer:0
#: selection:banking.export.sepa.wizard,charge_bearer:0
@@ -171,13 +114,8 @@ msgid "Borne by Debtor"
msgstr "Supportés par l'émetteur"
#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:116
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:121
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:130
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:168
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:206
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:350
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:128
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:245
#, python-format
msgid "Error:"
msgstr "Erreur :"
@@ -199,25 +137,16 @@ msgstr "Répartition des frais"
msgid "SEPA File Generation"
msgstr "Génération du fichier SEPA"
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:125
-#, python-format
-msgid "Field type error:"
-msgstr "Erreur dans le type de champ:"
-
#. module: account_banking_sepa_credit_transfer
#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa
msgid "SEPA export"
msgstr "Export SEPA"
#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:351
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:246
#, python-format
-msgid ""
-"Missing Bank Account on invoice '%s' (payment order line reference '%s')."
-msgstr ""
-"Compte bancaire manquant sur la facture '%s' (référence de la ligne de "
-"paiement : '%s')."
+msgid "Missing Bank Account on invoice '%s' (payment order line reference '%s')."
+msgstr "Compte bancaire manquant sur la facture '%s' (référence de la ligne de paiement : '%s')."
#. module: account_banking_sepa_credit_transfer
#: field:banking.export.sepa,file:0
@@ -225,48 +154,16 @@ msgstr ""
msgid "SEPA XML File"
msgstr "Fichier SEPA XML"
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:131
-#, python-format
-msgid "The '%s' is empty or 0. It should have a non-null value."
-msgstr "Le '%s' est vide ou égal à 0. La valeur devrait être non nulle."
-
#. module: account_banking_sepa_credit_transfer
#: help:banking.export.sepa,charge_bearer:0
-msgid ""
-"Following service level : transaction charges are to be applied following "
-"the rules agreed in the service level and/or scheme (SEPA Core messages must "
-"use this). Shared : transaction charges on the creditor side are to be borne "
-"by the creditor, transaction charges on the debtor side are to be borne by "
-"the debtor. Borne by creditor : all transaction charges are to be borne by "
-"the creditor. Borne by debtor : all transaction charges are to be borne by "
-"the debtor."
-msgstr ""
-"Suivant le niveau de service : la répartition des frais bancaires suit les "
-"règles pré-établies dans le schema ou dans le contrat avec la banque (les "
-"messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais "
-"bancaires côté débiteur sont à la charge du débiteur, les frais bancaires "
-"côté créancier sont à la charge du créancier. Supportés par le créancier : "
-"tous les frais bancaires sont à la charge du créancier. Supportés par le "
-"débiteur : tous les frais bancaires sont à la charge du débiteur."
-
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:207
-#, python-format
-msgid ""
-"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'."
-msgstr ""
-"Le code du Type de paiement '%s' n'est pas supporté. Les seuls codes de Type "
-"de paiement supportés pour les virements SEPA sont 'pain.001.001.02', "
-"'pain.001.001.03', 'pain.001.001.04' et 'pain.001.001.05'."
+msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor."
+msgstr "Suivant le niveau de service : la répartition des frais bancaires suit les règles pré-établies dans le schema ou dans le contrat avec la banque (les messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais bancaires côté débiteur sont à la charge du débiteur, les frais bancaires côté créancier sont à la charge du créancier. Supportés par le créancier : tous les frais bancaires sont à la charge du créancier. Supportés par le débiteur : tous les frais bancaires sont à la charge du débiteur."
#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:129
#, python-format
-msgid "This IBAN is not valid : %s"
-msgstr "Cet IBAN n'est pas valide : %s"
+msgid "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'."
+msgstr "Le code du Type de paiement '%s' n'est pas supporté. Les seuls codes de Type de paiement supportés pour les virements SEPA sont 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04' et 'pain.001.001.05'."
#. module: account_banking_sepa_credit_transfer
#: view:banking.export.sepa:0
@@ -290,26 +187,8 @@ msgstr "Fichiers de virement SEPA"
#. module: account_banking_sepa_credit_transfer
#: help:banking.export.sepa,batch_booking:0
#: help:banking.export.sepa.wizard,batch_booking:0
-msgid ""
-"If true, the bank statement will display only one debit line for all the "
-"wire transfers of the SEPA XML file ; if false, the bank statement will "
-"display one debit line per wire transfer of the SEPA XML file."
-msgstr ""
-"Si coché, le relevé de compte ne comportera qu'une ligne de débit pour tous "
-"les virements du fichier SEPA XML ; si non coché, le relevé de compte "
-"comportera une ligne de débit pour chaque virement du fichier SEPA XML."
-
-#. module: account_banking_sepa_credit_transfer
-#: help:banking.export.sepa.wizard,prefered_exec_date:0
-msgid ""
-"This is the date on which the file should be processed by the bank. Please "
-"keep in mind that banks only execute on working days and typically use a "
-"delay of two days between execution date and effective transfer date."
-msgstr ""
-"C'est la date à laquelle le fichier doit être traité par la banque. Gardez "
-"en tête que les banques réalisent des traitements seulement les jours ouvrés "
-"et ont habituellement un délai de 2 jours entre la date de traitement et la "
-"date du transfert effectif."
+msgid "If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."
+msgstr "Si coché, le relevé de compte ne comportera qu'une ligne de débit pour tous les virements du fichier SEPA XML ; si non coché, le relevé de compte comportera une ligne de débit pour chaque virement du fichier SEPA XML."
#. module: account_banking_sepa_credit_transfer
#: field:banking.export.sepa.wizard,file:0
@@ -326,88 +205,3 @@ msgstr "Annuler"
msgid "Generation Date"
msgstr "Date de génération"
-#~ msgid "SEPA XML file"
-#~ msgstr "Fichier SEPA XML"
-
-#~ msgid "Payment order"
-#~ msgstr "Ordre de paiement"
-
-#~ msgid ""
-#~ "This is the message identification of the entire SEPA XML file. 35 "
-#~ "characters max."
-#~ msgstr ""
-#~ "Ceci est le libellé d'identification du fichier SEPA XML. 35 caractères "
-#~ "maximum."
-
-#~ msgid "Prefered execution date"
-#~ msgstr "Date d'exécution demandée"
-
-#~ msgid "Generation date"
-#~ msgstr "Date de génération"
-
-#~ msgid "Message identification"
-#~ msgstr "Libellé d'identification"
-
-#~ msgid "Total amount"
-#~ msgstr "Montant total"
-
-#~ msgid ""
-#~ "Shared : transaction charges on the sender side are to be borne by the "
-#~ "debtor, transaction charges on the receiver side are to be borne by the "
-#~ "creditor (most transfers use this). Borne by creditor : all transaction "
-#~ "charges are to be borne by the creditor. Borne by debtor : all transaction "
-#~ "charges are to be borne by the debtor. Following service level : transaction "
-#~ "charges are to be applied following the rules agreed in the service level "
-#~ "and/or scheme."
-#~ msgstr ""
-#~ "Partagés : les frais bancaires côté émetteur sont à la charge de l'émetteur "
-#~ "et les frais bancaires côté destinataire sont à la charge du destinataire "
-#~ "(la plupart des virements utilisent cette répartition). Supportés par le "
-#~ "destinataire : tous les frais bancaires sont à la charge du destinataire. "
-#~ "Supportés par l'émetteur : tous les frais bancaires sont à la charge de "
-#~ "l'émetteur. Suivant le niveau de service : la répartition des frais "
-#~ "bancaires suit les règles pré-établies dans le contrat avec la banque."
-
-#~ msgid "Borne by creditor"
-#~ msgstr "Supportés par le destinataire"
-
-#~ msgid "Payment orders"
-#~ msgstr "Ordres de paiement"
-
-#~ msgid "SEPA XML file generation"
-#~ msgstr "Génération du fichier SEPA XML"
-
-#~ msgid "Reference for further communication"
-#~ msgstr "Référence pour communication ultérieure"
-
-#~ msgid "Processing details"
-#~ msgstr "Paramètres"
-
-#~ msgid "Borne by debtor"
-#~ msgstr "Supportés par l'émetteur"
-
-#~ msgid "Number of transactions"
-#~ msgstr "Nombre de transactions"
-
-#~ msgid "Following service level"
-#~ msgstr "Suivant le niveau de service"
-
-#~ msgid "Charge bearer"
-#~ msgstr "Répartition des frais"
-
-#, python-format
-#~ msgid ""
-#~ "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' "
-#~ "and 'pain.001.001.04'."
-#~ msgstr ""
-#~ "Le code '%s' pour le Type de Paiment n'est pas supporté. Les seuls codes de "
-#~ "Types de Paiement supportés pour les virements SEPA sont 'pain.001.001.02', "
-#~ "'pain.001.001.03' et 'pain.001.001.04'."
-
-#, python-format
-#~ msgid "Error :"
-#~ msgstr "Erreur :"
-
-#~ msgid "Batch booking"
-#~ msgstr "Débit groupé"
diff --git a/account_banking_sepa_credit_transfer/sepa_credit_transfer_demo.xml b/account_banking_sepa_credit_transfer/sepa_credit_transfer_demo.xml
new file mode 100644
index 00000000000..77abf1b3405
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/sepa_credit_transfer_demo.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+ SEPA Credit Transfer La Banque Postale
+
+
+
+
+
+
+
+
diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa.py b/account_banking_sepa_credit_transfer/wizard/export_sepa.py
index b21c57a996d..eb2461ad89e 100644
--- a/account_banking_sepa_credit_transfer/wizard/export_sepa.py
+++ b/account_banking_sepa_credit_transfer/wizard/export_sepa.py
@@ -22,20 +22,14 @@
from openerp.osv import orm, fields
-import base64
-from datetime import datetime
from openerp.tools.translate import _
-from openerp.tools.safe_eval import safe_eval
-from openerp import tools, netsvc
+from openerp import netsvc
from lxml import etree
-import logging
-from unidecode import unidecode
-
-_logger = logging.getLogger(__name__)
class banking_export_sepa_wizard(orm.TransientModel):
_name = 'banking.export.sepa.wizard'
+ _inherit = ['banking.export.pain']
_description = 'Export SEPA Credit Transfer File'
_columns = {
@@ -45,14 +39,24 @@ class banking_export_sepa_wizard(orm.TransientModel):
], 'State', readonly=True),
'batch_booking': fields.boolean(
'Batch Booking',
- help="If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."),
+ help="If true, the bank statement will display only one debit "
+ "line for all the wire transfers of the SEPA XML file ; if "
+ "false, the bank statement will display one debit line per wire "
+ "transfer of the SEPA XML file."),
'charge_bearer': fields.selection([
('SLEV', 'Following Service Level'),
('SHAR', 'Shared'),
('CRED', 'Borne by Creditor'),
('DEBT', 'Borne by Debtor'),
], 'Charge Bearer', required=True,
- help='Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor.'),
+ help="Following service level : transaction charges are to be "
+ "applied following the rules agreed in the service level and/or "
+ "scheme (SEPA Core messages must use this). Shared : transaction "
+ "charges on the debtor side are to be borne by the debtor, "
+ "transaction charges on the creditor side are to be borne by "
+ "the creditor. Borne by creditor : all transaction charges are "
+ "to be borne by the creditor. Borne by debtor : all transaction "
+ "charges are to be borne by the debtor."),
'nb_transactions': fields.related(
'file_id', 'nb_transactions', type='integer',
string='Number of Transactions', readonly=True),
@@ -76,16 +80,6 @@ class banking_export_sepa_wizard(orm.TransientModel):
'state': 'create',
}
- def _validate_iban(self, cr, uid, iban, context=None):
- '''if IBAN is valid, returns IBAN
- if IBAN is NOT valid, raises an error message'''
- partner_bank_obj = self.pool.get('res.partner.bank')
- if partner_bank_obj.is_iban_valid(cr, uid, iban, context=context):
- return iban.replace(' ', '')
- else:
- raise orm.except_orm(
- _('Error:'), _("This IBAN is not valid : %s") % iban)
-
def create(self, cr, uid, vals, context=None):
payment_order_ids = context.get('active_ids', [])
vals.update({
@@ -94,81 +88,6 @@ def create(self, cr, uid, vals, context=None):
return super(banking_export_sepa_wizard, self).create(
cr, uid, vals, context=context)
- def _prepare_field(
- self, cr, uid, field_name, field_value, eval_ctx, max_size=0,
- convert_to_ascii=False, context=None):
- '''This function is designed to be inherited !'''
- assert isinstance(eval_ctx, dict), 'eval_ctx must contain a dict'
- try:
- value = safe_eval(field_value, eval_ctx)
- # SEPA uses XML ; XML = UTF-8 ; UTF-8 = support for all characters
- # But we are dealing with banks...
- # and many banks don't want non-ASCCI characters !
- # cf section 1.4 "Character set" of the SEPA Credit Transfer
- # Scheme Customer-to-bank guidelines
- if convert_to_ascii:
- value = unidecode(value)
- except:
- line = eval_ctx.get('line')
- if line:
- raise orm.except_orm(
- _('Error:'),
- _("Cannot compute the '%s' of the Payment Line with Invoice Reference '%s'.")
- % (field_name, self.pool['account.invoice'].name_get(
- cr, uid, [line.ml_inv_ref.id], context=context)[0][1]))
- else:
- raise orm.except_orm(
- _('Error:'),
- _("Cannot compute the '%s'.") % field_name)
- if not isinstance(value, (str, unicode)):
- raise orm.except_orm(
- _('Field type error:'),
- _("The type of the field '%s' is %s. It should be a string or unicode.")
- % (field_name, type(value)))
- if not value:
- raise orm.except_orm(
- _('Error:'),
- _("The '%s' is empty or 0. It should have a non-null value.")
- % field_name)
- if max_size and len(value) > max_size:
- value = value[0:max_size]
- return value
-
- def _prepare_export_sepa(
- self, cr, uid, sepa_export, total_amount, transactions_count,
- xml_string, context=None):
- return {
- 'batch_booking': sepa_export.batch_booking,
- 'charge_bearer': sepa_export.charge_bearer,
- 'total_amount': total_amount,
- 'nb_transactions': transactions_count,
- 'file': base64.encodestring(xml_string),
- 'payment_order_ids': [
- (6, 0, [x.id for x in sepa_export.payment_order_ids])
- ],
- }
-
- def _validate_xml(self, cr, uid, xml_string, pain_flavor):
- xsd_etree_obj = etree.parse(
- tools.file_open(
- 'account_banking_sepa_credit_transfer/data/%s.xsd'
- % pain_flavor))
- official_pain_schema = etree.XMLSchema(xsd_etree_obj)
-
- try:
- root_to_validate = etree.fromstring(xml_string)
- official_pain_schema.assertValid(root_to_validate)
- except Exception, e:
- _logger.warning(
- "The XML file is invalid against the XML Schema Definition")
- _logger.warning(xml_string)
- _logger.warning(e)
- raise orm.except_orm(
- _('Error:'),
- _('The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s')
- % str(e))
- return True
-
def create_sepa(self, cr, uid, ids, context=None):
'''
Creates the SEPA Credit Transfer file. That's the important code !
@@ -207,73 +126,45 @@ def create_sepa(self, cr, uid, ids, context=None):
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'.")
+ _("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)
+ gen_args = {
+ 'bic_xml_tag': bic_xml_tag,
+ 'name_maxsize': name_maxsize,
+ 'convert_to_ascii': convert_to_ascii,
+ 'payment_method': 'TRF',
+ 'pain_flavor': pain_flavor,
+ 'sepa_export': sepa_export,
+ 'file_obj': self.pool['banking.export.sepa'],
+ 'pain_xsd_file':
+ 'account_banking_sepa_credit_transfer/data/%s.xsd'
+ % pain_flavor,
+ }
+
pain_ns = {
'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
None: 'urn:iso:std:iso:20022:tech:xsd:%s' % pain_flavor,
}
- root = etree.Element('Document', nsmap=pain_ns)
- pain_root = etree.SubElement(root, root_xml_tag)
+ 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']
- my_company_name = self._prepare_field(
- cr, uid, 'Company Name',
- 'sepa_export.payment_order_ids[0].mode.bank_id.partner_id.name',
- {'sepa_export': sepa_export}, name_maxsize,
- convert_to_ascii=convert_to_ascii, context=context)
-
# A. Group header
- group_header_1_0 = etree.SubElement(pain_root, 'GrpHdr')
- message_identification_1_1 = etree.SubElement(
- group_header_1_0, 'MsgId')
- message_identification_1_1.text = self._prepare_field(
- cr, uid, 'Message Identification',
- 'sepa_export.payment_order_ids[0].reference',
- {'sepa_export': sepa_export}, 35,
- convert_to_ascii=convert_to_ascii, context=context)
- creation_date_time_1_2 = etree.SubElement(group_header_1_0, 'CreDtTm')
- creation_date_time_1_2.text = datetime.strftime(
- datetime.today(), '%Y-%m-%dT%H:%M:%S')
- if pain_flavor == 'pain.001.001.02':
- # batch_booking is in "Group header" with pain.001.001.02
- # and in "Payment info" in pain.001.001.03/04
- batch_booking = etree.SubElement(group_header_1_0, 'BtchBookg')
- batch_booking.text = str(sepa_export.batch_booking).lower()
- nb_of_transactions_1_6 = etree.SubElement(
- group_header_1_0, 'NbOfTxs')
- control_sum_1_7 = etree.SubElement(group_header_1_0, 'CtrlSum')
- # Grpg removed in pain.001.001.03
- if pain_flavor == 'pain.001.001.02':
- grouping = etree.SubElement(group_header_1_0, 'Grpg')
- grouping.text = 'GRPD'
- initiating_party_1_8 = etree.SubElement(group_header_1_0, 'InitgPty')
- initiating_party_name = etree.SubElement(initiating_party_1_8, 'Nm')
- initiating_party_name.text = my_company_name
- initiating_party_identifier = self.pool['res.company'].\
- _get_initiating_party_identifier(
- cr, uid, sepa_export.payment_order_ids[0].company_id.id,
- context=context)
- initiating_party_issuer = \
- sepa_export.payment_order_ids[0].company_id.initiating_party_issuer
- if initiating_party_identifier and initiating_party_issuer:
- iniparty_id = etree.SubElement(initiating_party_1_8, 'Id')
- iniparty_org_id = etree.SubElement(iniparty_id, 'OrgId')
- iniparty_org_other = etree.SubElement(iniparty_org_id, 'Othr')
- iniparty_org_other_id = etree.SubElement(iniparty_org_other, 'Id')
- iniparty_org_other_id.text = initiating_party_identifier
- iniparty_org_other_issuer = etree.SubElement(
- iniparty_org_other, 'Issr')
- iniparty_org_other_issuer.text = initiating_party_issuer
+ group_header_1_0, nb_of_transactions_1_6, control_sum_1_7 = \
+ self.generate_group_header_block(
+ cr, uid, pain_root, gen_args, context=context)
transactions_count_1_6 = 0
total_amount = 0.0
amount_control_sum_1_7 = 0.0
lines_per_group = {}
- # key = (requested_exec_date, priority)
+ # key = (requested_date, priority)
# values = list of lines as object
today = fields.date.context_today(self, cr, uid, context=context)
for payment_order in sepa_export.payment_order_ids:
@@ -281,91 +172,44 @@ def create_sepa(self, cr, uid, ids, context=None):
for line in payment_order.line_ids:
priority = line.priority
if payment_order.date_prefered == 'due':
- requested_exec_date = line.ml_maturity_date or today
+ requested_date = line.ml_maturity_date or today
elif payment_order.date_prefered == 'fixed':
- requested_exec_date = payment_order.date_scheduled or today
+ requested_date = payment_order.date_scheduled or today
else:
- requested_exec_date = today
- if (requested_exec_date, priority) in lines_per_group:
- lines_per_group[(requested_exec_date, priority)].append(line)
+ requested_date = today
+ key = (requested_date, priority)
+ if key in lines_per_group:
+ lines_per_group[key].append(line)
else:
- lines_per_group[(requested_exec_date, priority)] = [line]
- # Write requested_exec_date on 'Payment date' of the pay line
- if requested_exec_date != line.date:
+ lines_per_group[key] = [line]
+ # Write requested_date on 'Payment date' of the pay line
+ if requested_date != line.date:
self.pool['payment.line'].write(
cr, uid, line.id,
- {'date': requested_exec_date}, context=context)
+ {'date': requested_date}, context=context)
- for (requested_exec_date, priority), lines in lines_per_group.items():
+ for (requested_date, priority), lines in lines_per_group.items():
# B. Payment info
- payment_info_2_0 = etree.SubElement(pain_root, 'PmtInf')
- payment_info_identification_2_1 = etree.SubElement(
- payment_info_2_0, 'PmtInfId')
- payment_info_identification_2_1.text = self._prepare_field(
- cr, uid, 'Payment Information Identification',
- "sepa_export.payment_order_ids[0].reference + '-' + requested_exec_date.replace('-', '') + '-' + priority", {
- 'sepa_export': sepa_export,
- 'priority': priority,
- 'requested_exec_date': requested_exec_date
- }, 35, convert_to_ascii=convert_to_ascii, context=context)
- payment_method_2_2 = etree.SubElement(payment_info_2_0, 'PmtMtd')
- payment_method_2_2.text = 'TRF'
- if pain_flavor in pain_03_to_05:
- # batch_booking is in "Group header" with pain.001.001.02
- # and in "Payment info" in pain.001.001.03/04
- batch_booking_2_3 = etree.SubElement(
- payment_info_2_0, 'BtchBookg')
- batch_booking_2_3.text = str(sepa_export.batch_booking).lower()
- # It may seem surprising, but the
- # "SEPA Credit Transfer Scheme Customer-to-bank Implementation
- # guidelines" v6.0 says that control sum and nb_of_transactions
- # should be present at both "group header" level and "payment info"
- # level. This seems to be confirmed by the tests carried out at
- # BNP Paribas in PAIN v001.001.03
- if pain_flavor in pain_03_to_05:
- nb_of_transactions_2_4 = etree.SubElement(
- payment_info_2_0, 'NbOfTxs')
- control_sum_2_5 = etree.SubElement(payment_info_2_0, 'CtrlSum')
- payment_type_info_2_6 = etree.SubElement(
- payment_info_2_0, 'PmtTpInf')
- if priority:
- instruction_priority_2_7 = etree.SubElement(
- payment_type_info_2_6, 'InstrPrty')
- instruction_priority_2_7.text = priority
- service_level_2_8 = etree.SubElement(
- payment_type_info_2_6, 'SvcLvl')
- service_level_code_2_9 = etree.SubElement(service_level_2_8, 'Cd')
- service_level_code_2_9.text = 'SEPA'
- requested_exec_date_2_17 = etree.SubElement(
- payment_info_2_0, 'ReqdExctnDt')
- requested_exec_date_2_17.text = requested_exec_date
- debtor_2_19 = etree.SubElement(payment_info_2_0, 'Dbtr')
- debtor_name = etree.SubElement(debtor_2_19, 'Nm')
- debtor_name.text = my_company_name
- debtor_account_2_20 = etree.SubElement(
- payment_info_2_0, 'DbtrAcct')
- debtor_account_id = etree.SubElement(debtor_account_2_20, 'Id')
- debtor_account_iban = etree.SubElement(debtor_account_id, 'IBAN')
- debtor_account_iban.text = self._validate_iban(
- cr, uid, self._prepare_field(
- cr, uid, 'Company IBAN',
- 'sepa_export.payment_order_ids[0].mode.bank_id.acc_number',
- {'sepa_export': sepa_export},
- convert_to_ascii=convert_to_ascii, context=context),
- context=context)
- debtor_agent_2_21 = etree.SubElement(payment_info_2_0, 'DbtrAgt')
- debtor_agent_institution = etree.SubElement(
- debtor_agent_2_21, 'FinInstnId')
- debtor_agent_bic = etree.SubElement(
- debtor_agent_institution, bic_xml_tag)
- # TODO validate BIC with pattern
- # [A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}
- # because OpenERP doesn't have a constraint on BIC
- debtor_agent_bic.text = self._prepare_field(
- cr, uid, 'Company BIC',
+ payment_info_2_0, nb_of_transactions_2_4, control_sum_2_5 = \
+ self.generate_start_payment_info_block(
+ cr, uid, pain_root,
+ "sepa_export.payment_order_ids[0].reference + '-' "
+ "+ requested_date.replace('-', '') + '-' + priority",
+ priority, False, False, requested_date, {
+ 'sepa_export': sepa_export,
+ 'priority': priority,
+ 'requested_date': requested_date,
+ }, gen_args, context=context)
+
+ self.generate_party_block(
+ cr, uid, payment_info_2_0, 'Dbtr', 'B',
+ 'sepa_export.payment_order_ids[0].mode.bank_id.partner_id.'
+ 'name',
+ 'sepa_export.payment_order_ids[0].mode.bank_id.acc_number',
'sepa_export.payment_order_ids[0].mode.bank_id.bank.bic',
{'sepa_export': sepa_export},
- convert_to_ascii=convert_to_ascii, context=context)
+ gen_args, context=context)
+
charge_bearer_2_24 = etree.SubElement(payment_info_2_0, 'ChrgBr')
charge_bearer_2_24.text = sepa_export.charge_bearer
@@ -383,11 +227,11 @@ def create_sepa(self, cr, uid, ids, context=None):
payment_identification_2_28, 'EndToEndId')
end2end_identification_2_30.text = self._prepare_field(
cr, uid, 'End to End Identification', 'line.name',
- {'line': line}, 35, convert_to_ascii=convert_to_ascii,
+ {'line': line}, 35, gen_args=gen_args,
context=context)
currency_name = self._prepare_field(
cr, uid, 'Currency Code', 'line.currency.name',
- {'line': line}, 3, convert_to_ascii=convert_to_ascii,
+ {'line': line}, 3, gen_args=gen_args,
context=context)
amount_2_42 = etree.SubElement(
credit_transfer_transaction_info_2_27, 'Amt')
@@ -396,91 +240,23 @@ def create_sepa(self, cr, uid, ids, context=None):
instructed_amount_2_43.text = '%.2f' % line.amount_currency
amount_control_sum_1_7 += line.amount_currency
amount_control_sum_2_5 += line.amount_currency
- creditor_agent_2_77 = etree.SubElement(
- credit_transfer_transaction_info_2_27, 'CdtrAgt')
- creditor_agent_institution = etree.SubElement(
- creditor_agent_2_77, 'FinInstnId')
+
if not line.bank_id:
raise orm.except_orm(
_('Error:'),
- _("Missing Bank Account on invoice '%s' (payment order line reference '%s').")
+ _("Missing Bank Account on invoice '%s' (payment "
+ "order line reference '%s').")
% (line.ml_inv_ref.number, line.name))
- creditor_agent_bic = etree.SubElement(
- creditor_agent_institution, bic_xml_tag)
- creditor_agent_bic.text = self._prepare_field(
- cr, uid, 'Creditor BIC', 'line.bank_id.bank.bic',
- {'line': line}, convert_to_ascii=convert_to_ascii,
+ self.generate_party_block(
+ cr, uid, credit_transfer_transaction_info_2_27, 'Cdtr',
+ 'C', 'line.partner_id.name', 'line.bank_id.acc_number',
+ 'line.bank_id.bank.bic', {'line': line}, gen_args,
context=context)
- creditor_2_79 = etree.SubElement(
- credit_transfer_transaction_info_2_27, 'Cdtr')
- creditor_name = etree.SubElement(creditor_2_79, 'Nm')
- creditor_name.text = self._prepare_field(
- cr, uid, 'Creditor Name', 'line.partner_id.name',
- {'line': line}, name_maxsize,
- convert_to_ascii=convert_to_ascii, context=context)
- creditor_account_2_80 = etree.SubElement(
- credit_transfer_transaction_info_2_27, 'CdtrAcct')
- creditor_account_id = etree.SubElement(
- creditor_account_2_80, 'Id')
- creditor_account_iban = etree.SubElement(
- creditor_account_id, 'IBAN')
- creditor_account_iban.text = self._validate_iban(
- cr, uid, self._prepare_field(
- cr, uid, 'Creditor IBAN',
- 'line.bank_id.acc_number', {'line': line},
- convert_to_ascii=convert_to_ascii, context=context),
- context=context)
- remittance_info_2_91 = etree.SubElement(
- credit_transfer_transaction_info_2_27, 'RmtInf')
- if line.state == 'normal':
- remittance_info_unstructured_2_99 = etree.SubElement(
- remittance_info_2_91, 'Ustrd')
- remittance_info_unstructured_2_99.text = \
- self._prepare_field(
- cr, uid, 'Remittance Unstructured Information',
- 'line.communication', {'line': line}, 140,
- convert_to_ascii=convert_to_ascii,
- context=context)
- else:
- if not line.struct_communication_type:
- raise orm.except_orm(
- _('Error:'),
- _("Missing 'Structured Communication Type' on payment line with your reference '%s'.")
- % (line.name))
- remittance_info_unstructured_2_100 = etree.SubElement(
- remittance_info_2_91, 'Strd')
- creditor_ref_information_2_120 = etree.SubElement(
- remittance_info_unstructured_2_100, 'CdtrRefInf')
- if pain_flavor in pain_03_to_05:
- creditor_ref_info_type_2_121 = etree.SubElement(
- creditor_ref_information_2_120, 'Tp')
- creditor_ref_info_type_or_2_122 = etree.SubElement(
- creditor_ref_info_type_2_121, 'CdOrPrtry')
- creditor_ref_info_type_code_2_123 = etree.SubElement(
- creditor_ref_info_type_or_2_122, 'Cd')
- creditor_ref_info_type_issuer_2_125 = etree.SubElement(
- creditor_ref_info_type_2_121, 'Issr')
- creditor_reference_2_126 = etree.SubElement(
- creditor_ref_information_2_120, 'Ref')
- else:
- creditor_ref_info_type_2_121 = etree.SubElement(
- creditor_ref_information_2_120, 'CdtrRefTp')
- creditor_ref_info_type_code_2_123 = etree.SubElement(
- creditor_ref_info_type_2_121, 'Cd')
- creditor_ref_info_type_issuer_2_125 = etree.SubElement(
- creditor_ref_info_type_2_121, 'Issr')
- creditor_reference_2_126 = etree.SubElement(
- creditor_ref_information_2_120, 'CdtrRef')
- creditor_ref_info_type_code_2_123.text = 'SCOR'
- creditor_ref_info_type_issuer_2_125.text = \
- line.struct_communication_type
- creditor_reference_2_126.text = \
- self._prepare_field(
- cr, uid, 'Creditor Structured Reference',
- 'line.communication', {'line': line}, 35,
- convert_to_ascii=convert_to_ascii,
- context=context)
+ self.generate_remittance_info_block(
+ cr, uid, credit_transfer_transaction_info_2_27,
+ line, gen_args, context=context)
+
if pain_flavor in pain_03_to_05:
nb_of_transactions_2_4.text = str(transactions_count_2_4)
control_sum_2_5.text = '%.2f' % amount_control_sum_2_5
@@ -492,41 +268,13 @@ def create_sepa(self, cr, uid, ids, context=None):
nb_of_transactions_1_6.text = str(transactions_count_1_6)
control_sum_1_7.text = '%.2f' % amount_control_sum_1_7
- xml_string = etree.tostring(
- root, pretty_print=True, encoding='UTF-8', xml_declaration=True)
- _logger.debug(
- "Generated SEPA Credit Transfer XML file in format %s below"
- % pain_flavor)
- _logger.debug(xml_string)
- self._validate_xml(cr, uid, xml_string, pain_flavor)
-
- # CREATE the banking.export.sepa record
- file_id = self.pool.get('banking.export.sepa').create(
- cr, uid, self._prepare_export_sepa(
- cr, uid, sepa_export, total_amount, transactions_count_1_6,
- xml_string, context=context),
- context=context)
-
- self.write(
- cr, uid, ids, {
- 'file_id': file_id,
- 'state': 'finish',
- }, context=context)
-
- action = {
- 'name': 'SEPA Credit Transfer File',
- 'type': 'ir.actions.act_window',
- 'view_type': 'form',
- 'view_mode': 'form,tree',
- 'res_model': self._name,
- 'res_id': ids[0],
- 'target': 'new',
- }
- return action
+ return self.finalize_sepa_file_creation(
+ cr, uid, ids, xml_root, total_amount, transactions_count_1_6,
+ gen_args, context=context)
def cancel_sepa(self, cr, uid, ids, context=None):
'''
- Cancel the SEPA PAIN: just drop the file
+ Cancel the SEPA file: just drop the file
'''
sepa_export = self.browse(cr, uid, ids[0], context=context)
self.pool.get('banking.export.sepa').unlink(
@@ -535,7 +283,7 @@ def cancel_sepa(self, cr, uid, ids, context=None):
def save_sepa(self, cr, uid, ids, context=None):
'''
- Save the SEPA PAIN: send the done signal to all payment
+ Save the SEPA file: send the done signal to all payment
orders in the file. With the default workflow, they will
transition to 'done', while with the advanced workflow in
account_banking_payment they will transition to 'sent' waiting
From 961c16bd4ef279b30697a6136f5cd8bff64c3c2f Mon Sep 17 00:00:00 2001
From: Launchpad Translations on behalf of banking-addons-team
Date: Sat, 1 Feb 2014 06:56:49 +0000
Subject: [PATCH 13/79] Launchpad automatic translations update.
---
.../i18n/fr.po | 188 ++++++++++++++++--
.../i18n/nl.po | 155 +++++----------
2 files changed, 226 insertions(+), 117 deletions(-)
diff --git a/account_banking_sepa_credit_transfer/i18n/fr.po b/account_banking_sepa_credit_transfer/i18n/fr.po
index 098e87ea3ea..b4bb7235ff6 100644
--- a/account_banking_sepa_credit_transfer/i18n/fr.po
+++ b/account_banking_sepa_credit_transfer/i18n/fr.po
@@ -6,14 +6,15 @@ msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-12-23 22:52+0000\n"
-"PO-Revision-Date: 2013-12-23 22:52+0000\n"
-"Last-Translator: <>\n"
+"POT-Creation-Date: 2013-12-23 22:49+0000\n"
+"PO-Revision-Date: 2014-02-01 04:49+0000\n"
+"Last-Translator: Alexis de Lattre \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: \n"
-"Plural-Forms: \n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n"
+"X-Generator: Launchpad (build 17031)\n"
#. module: account_banking_sepa_credit_transfer
#: selection:banking.export.sepa.wizard,state:0
@@ -45,8 +46,22 @@ msgstr "Brouillon"
#. module: account_banking_sepa_credit_transfer
#: help:banking.export.sepa.wizard,charge_bearer:0
-msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor."
-msgstr "Suivant le niveau de service : la répartition des frais bancaires suit les règles pré-établies dans le schema ou dans le contrat avec la banque (les messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais bancaires côté débiteur sont à la charge du débiteur, les frais bancaires côté créancier sont à la charge du créancier. Supportés par le créancier : tous les frais bancaires sont à la charge du créancier. Supportés par le débiteur : tous les frais bancaires sont à la charge du débiteur."
+msgid ""
+"Following service level : transaction charges are to be applied following "
+"the rules agreed in the service level and/or scheme (SEPA Core messages must "
+"use this). Shared : transaction charges on the debtor side are to be borne "
+"by the debtor, transaction charges on the creditor side are to be borne by "
+"the creditor. Borne by creditor : all transaction charges are to be borne by "
+"the creditor. Borne by debtor : all transaction charges are to be borne by "
+"the debtor."
+msgstr ""
+"Suivant le niveau de service : la répartition des frais bancaires suit les "
+"règles pré-établies dans le schema ou dans le contrat avec la banque (les "
+"messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais "
+"bancaires côté débiteur sont à la charge du débiteur, les frais bancaires "
+"côté créancier sont à la charge du créancier. Supportés par le créancier : "
+"tous les frais bancaires sont à la charge du créancier. Supportés par le "
+"débiteur : tous les frais bancaires sont à la charge du débiteur."
#. module: account_banking_sepa_credit_transfer
#: selection:banking.export.sepa,charge_bearer:0
@@ -145,8 +160,11 @@ msgstr "Export SEPA"
#. module: account_banking_sepa_credit_transfer
#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:246
#, python-format
-msgid "Missing Bank Account on invoice '%s' (payment order line reference '%s')."
-msgstr "Compte bancaire manquant sur la facture '%s' (référence de la ligne de paiement : '%s')."
+msgid ""
+"Missing Bank Account on invoice '%s' (payment order line reference '%s')."
+msgstr ""
+"Compte bancaire manquant sur la facture '%s' (référence de la ligne de "
+"paiement : '%s')."
#. module: account_banking_sepa_credit_transfer
#: field:banking.export.sepa,file:0
@@ -156,14 +174,34 @@ msgstr "Fichier SEPA XML"
#. module: account_banking_sepa_credit_transfer
#: help:banking.export.sepa,charge_bearer:0
-msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor."
-msgstr "Suivant le niveau de service : la répartition des frais bancaires suit les règles pré-établies dans le schema ou dans le contrat avec la banque (les messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais bancaires côté débiteur sont à la charge du débiteur, les frais bancaires côté créancier sont à la charge du créancier. Supportés par le créancier : tous les frais bancaires sont à la charge du créancier. Supportés par le débiteur : tous les frais bancaires sont à la charge du débiteur."
+msgid ""
+"Following service level : transaction charges are to be applied following "
+"the rules agreed in the service level and/or scheme (SEPA Core messages must "
+"use this). Shared : transaction charges on the creditor side are to be borne "
+"by the creditor, transaction charges on the debtor side are to be borne by "
+"the debtor. Borne by creditor : all transaction charges are to be borne by "
+"the creditor. Borne by debtor : all transaction charges are to be borne by "
+"the debtor."
+msgstr ""
+"Suivant le niveau de service : la répartition des frais bancaires suit les "
+"règles pré-établies dans le schema ou dans le contrat avec la banque (les "
+"messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais "
+"bancaires côté débiteur sont à la charge du débiteur, les frais bancaires "
+"côté créancier sont à la charge du créancier. Supportés par le créancier : "
+"tous les frais bancaires sont à la charge du créancier. Supportés par le "
+"débiteur : tous les frais bancaires sont à la charge du débiteur."
#. module: account_banking_sepa_credit_transfer
#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:129
#, python-format
-msgid "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'."
-msgstr "Le code du Type de paiement '%s' n'est pas supporté. Les seuls codes de Type de paiement supportés pour les virements SEPA sont 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04' et 'pain.001.001.05'."
+msgid ""
+"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'."
+msgstr ""
+"Le code du Type de paiement '%s' n'est pas supporté. Les seuls codes de Type "
+"de paiement supportés pour les virements SEPA sont 'pain.001.001.02', "
+"'pain.001.001.03', 'pain.001.001.04' et 'pain.001.001.05'."
#. module: account_banking_sepa_credit_transfer
#: view:banking.export.sepa:0
@@ -187,8 +225,14 @@ msgstr "Fichiers de virement SEPA"
#. module: account_banking_sepa_credit_transfer
#: help:banking.export.sepa,batch_booking:0
#: help:banking.export.sepa.wizard,batch_booking:0
-msgid "If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."
-msgstr "Si coché, le relevé de compte ne comportera qu'une ligne de débit pour tous les virements du fichier SEPA XML ; si non coché, le relevé de compte comportera une ligne de débit pour chaque virement du fichier SEPA XML."
+msgid ""
+"If true, the bank statement will display only one debit line for all the "
+"wire transfers of the SEPA XML file ; if false, the bank statement will "
+"display one debit line per wire transfer of the SEPA XML file."
+msgstr ""
+"Si coché, le relevé de compte ne comportera qu'une ligne de débit pour tous "
+"les virements du fichier SEPA XML ; si non coché, le relevé de compte "
+"comportera une ligne de débit pour chaque virement du fichier SEPA XML."
#. module: account_banking_sepa_credit_transfer
#: field:banking.export.sepa.wizard,file:0
@@ -205,3 +249,117 @@ msgstr "Annuler"
msgid "Generation Date"
msgstr "Date de génération"
+#~ msgid "SEPA XML file"
+#~ msgstr "Fichier SEPA XML"
+
+#~ msgid "Payment order"
+#~ msgstr "Ordre de paiement"
+
+#~ msgid ""
+#~ "This is the message identification of the entire SEPA XML file. 35 "
+#~ "characters max."
+#~ msgstr ""
+#~ "Ceci est le libellé d'identification du fichier SEPA XML. 35 caractères "
+#~ "maximum."
+
+#~ msgid "Prefered execution date"
+#~ msgstr "Date d'exécution demandée"
+
+#~ msgid "Generation date"
+#~ msgstr "Date de génération"
+
+#~ msgid "Export SEPA Credit Transfer XML file"
+#~ msgstr "Exporte the fichier de virement SEPA XML"
+
+#~ msgid "Message identification"
+#~ msgstr "Libellé d'identification"
+
+#, python-format
+#~ msgid ""
+#~ "The generated XML file is not valid against the official XML Schema "
+#~ "Definition. The generated XML file and the full error have been written in "
+#~ "the server logs. Here is the error, which may give you an idea on the cause "
+#~ "of the problem : %s"
+#~ msgstr ""
+#~ "Le fichier XML généré n'est pas valide par rapport à la Définition du Schéma "
+#~ "XML officiel. Le fichier XML généré et le message d'erreur complet ont été "
+#~ "écrits dans les logs du serveur. Voici l'erreur, qui vous donnera peut-être "
+#~ "une idée sur la cause du problème : %s"
+
+#~ msgid "Total amount"
+#~ msgstr "Montant total"
+
+#~ msgid ""
+#~ "Shared : transaction charges on the sender side are to be borne by the "
+#~ "debtor, transaction charges on the receiver side are to be borne by the "
+#~ "creditor (most transfers use this). Borne by creditor : all transaction "
+#~ "charges are to be borne by the creditor. Borne by debtor : all transaction "
+#~ "charges are to be borne by the debtor. Following service level : transaction "
+#~ "charges are to be applied following the rules agreed in the service level "
+#~ "and/or scheme."
+#~ msgstr ""
+#~ "Partagés : les frais bancaires côté émetteur sont à la charge de l'émetteur "
+#~ "et les frais bancaires côté destinataire sont à la charge du destinataire "
+#~ "(la plupart des virements utilisent cette répartition). Supportés par le "
+#~ "destinataire : tous les frais bancaires sont à la charge du destinataire. "
+#~ "Supportés par l'émetteur : tous les frais bancaires sont à la charge de "
+#~ "l'émetteur. Suivant le niveau de service : la répartition des frais "
+#~ "bancaires suit les règles pré-établies dans le contrat avec la banque."
+
+#~ msgid "Borne by creditor"
+#~ msgstr "Supportés par le destinataire"
+
+#~ msgid "Payment orders"
+#~ msgstr "Ordres de paiement"
+
+#, python-format
+#~ msgid "This IBAN is not valid : %s"
+#~ msgstr "Cet IBAN n'est pas valide : %s"
+
+#~ msgid "SEPA XML file generation"
+#~ msgstr "Génération du fichier SEPA XML"
+
+#~ msgid "Reference for further communication"
+#~ msgstr "Référence pour communication ultérieure"
+
+#~ msgid "Processing details"
+#~ msgstr "Paramètres"
+
+#~ msgid "Borne by debtor"
+#~ msgstr "Supportés par l'émetteur"
+
+#~ msgid "Number of transactions"
+#~ msgstr "Nombre de transactions"
+
+#~ msgid "Following service level"
+#~ msgstr "Suivant le niveau de service"
+
+#~ msgid "Charge bearer"
+#~ msgstr "Répartition des frais"
+
+#~ msgid ""
+#~ "This is the date on which the file should be processed by the bank. Please "
+#~ "keep in mind that banks only execute on working days and typically use a "
+#~ "delay of two days between execution date and effective transfer date."
+#~ msgstr ""
+#~ "C'est la date à laquelle le fichier doit être traité par la banque. Gardez "
+#~ "en tête que les banques réalisent des traitements seulement les jours ouvrés "
+#~ "et ont habituellement un délai de 2 jours entre la date de traitement et la "
+#~ "date du transfert effectif."
+
+#, python-format
+#~ msgid ""
+#~ "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' "
+#~ "and 'pain.001.001.04'."
+#~ msgstr ""
+#~ "Le code '%s' pour le Type de Paiment n'est pas supporté. Les seuls codes de "
+#~ "Types de Paiement supportés pour les virements SEPA sont 'pain.001.001.02', "
+#~ "'pain.001.001.03' et 'pain.001.001.04'."
+
+#, python-format
+#~ msgid "Error :"
+#~ msgstr "Erreur :"
+
+#~ msgid "Batch booking"
+#~ msgstr "Débit groupé"
diff --git a/account_banking_sepa_credit_transfer/i18n/nl.po b/account_banking_sepa_credit_transfer/i18n/nl.po
index 4a22dce975a..54136629273 100644
--- a/account_banking_sepa_credit_transfer/i18n/nl.po
+++ b/account_banking_sepa_credit_transfer/i18n/nl.po
@@ -6,21 +6,15 @@ msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-13 09:13+0000\n"
-"PO-Revision-Date: 2013-12-03 11:49+0000\n"
-"Last-Translator: Jan Jurkus (GCE CAD-Service) \n"
+"POT-Creation-Date: 2013-12-23 22:49+0000\n"
+"PO-Revision-Date: 2014-04-24 10:34+0000\n"
+"Last-Translator: Erwin van der Ploeg (BAS Solutions) \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-12-04 05:59+0000\n"
-"X-Generator: Launchpad (build 16861)\n"
-
-#. module: account_banking_sepa_credit_transfer
-#: field:banking.export.sepa,prefered_exec_date:0
-#: field:banking.export.sepa.wizard,prefered_exec_date:0
-msgid "Prefered Execution Date"
-msgstr "Voorkeurs uitvoerdatum"
+"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n"
+"X-Generator: Launchpad (build 17031)\n"
#. module: account_banking_sepa_credit_transfer
#: selection:banking.export.sepa.wizard,state:0
@@ -65,18 +59,9 @@ msgstr ""
"afgesproken regels in het service level en/of schema (Voor SEPA berichten "
"deze gebruiken). Gedeeld : De transactiekosten aan de debiteur zijde zijn "
"voor de schuldeiser, transactiekosten aan de crediteur kant zijn voor de "
-"schuldenaar. Rekening van de schuldenaar: Alle transactie kosten zijn voor "
-"rekening van de schuldenaar. Rekening van de schuldeiser: Alle transactie "
-"kosten zijn voor rekening van de schuldeiser."
-
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:117
-#, python-format
-msgid ""
-"Cannot compute the '%s' of the Payment Line with Invoice Reference '%s'."
-msgstr ""
-"Niet mogelijk de '%s' van de betaalregel te berekenen met factuurreferentie "
-"'%s'."
+"schuldenaar. Op rekening van de schuldenaar: Alle transactie kosten zijn "
+"voor rekening van de schuldenaar. Op rekening van de schuldeiser: Alle "
+"transactie kosten zijn voor rekening van de schuldeiser."
#. module: account_banking_sepa_credit_transfer
#: selection:banking.export.sepa,charge_bearer:0
@@ -90,10 +75,15 @@ msgstr "Gedeeld"
msgid "Batch Booking"
msgstr "Bach verwerking"
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Sent"
+msgstr "Verzonden"
+
#. module: account_banking_sepa_credit_transfer
#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa_wizard
-msgid "Export SEPA Credit Transfer XML file"
-msgstr "Exporteer SEPA XML overschrijvingsbestand"
+msgid "Export SEPA Credit Transfer File"
+msgstr "Exporteer SEPA Credit Transfer bestand"
#. module: account_banking_sepa_credit_transfer
#: view:banking.export.sepa:0
@@ -120,26 +110,7 @@ msgstr "Volg service level"
#: selection:banking.export.sepa,charge_bearer:0
#: selection:banking.export.sepa.wizard,charge_bearer:0
msgid "Borne by Creditor"
-msgstr "Rekening van schuldeiser"
-
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:122
-#, python-format
-msgid "Cannot compute the '%s'."
-msgstr "Niet mogelijk de '%s' te berekenen."
-
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:126
-#, python-format
-msgid "The type of the field '%s' is %s. It should be a string or unicode."
-msgstr ""
-"Het veldsoort van het veld '%s' is %s. Het moet een string of unicode soort "
-"zijn."
-
-#. module: account_banking_sepa_credit_transfer
-#: selection:banking.export.sepa,state:0
-msgid "Sent"
-msgstr "Verzonden"
+msgstr "Op rekening van schuldeiser"
#. module: account_banking_sepa_credit_transfer
#: view:banking.export.sepa.wizard:0
@@ -151,34 +122,15 @@ msgstr "Bevestig"
msgid "Generate"
msgstr "Genereer"
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:169
-#, python-format
-msgid ""
-"The generated XML file is not valid against the official XML Schema "
-"Definition. The generated XML file and the full error have been written in "
-"the server logs. Here is the error, which may give you an idea on the cause "
-"of the problem : %s"
-msgstr ""
-"Het gegenereerde XML bestand is niet geldig volgens de officiële XML schema "
-"definities. Het gegenereerde XML bestand en de volledige fout zijn "
-"weggeschreven in de server log bestanden. Hier is de fout, wat u een idee "
-"kunt geven over de oorzaak van het probleem: %s\""
-
#. module: account_banking_sepa_credit_transfer
#: selection:banking.export.sepa,charge_bearer:0
#: selection:banking.export.sepa.wizard,charge_bearer:0
msgid "Borne by Debtor"
-msgstr "Rekening van schuldenaar"
+msgstr "Op rekening van schuldenaar"
#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:116
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:121
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:130
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:168
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:206
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:350
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:128
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:245
#, python-format
msgid "Error:"
msgstr "Fout:"
@@ -200,19 +152,13 @@ msgstr "Kostenverdeling"
msgid "SEPA File Generation"
msgstr "SEPA bestand genereren"
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:125
-#, python-format
-msgid "Field type error:"
-msgstr "Veldsoort fout:"
-
#. module: account_banking_sepa_credit_transfer
#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa
msgid "SEPA export"
msgstr "SEPA export"
#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:351
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:246
#, python-format
msgid ""
"Missing Bank Account on invoice '%s' (payment order line reference '%s')."
@@ -225,12 +171,6 @@ msgstr ""
msgid "SEPA XML File"
msgstr "SEPA XML bestand"
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:131
-#, python-format
-msgid "The '%s' is empty or 0. It should have a non-null value."
-msgstr "De '%s' is leeg of 0. Het mag geen lege of nul waarde hebben."
-
#. module: account_banking_sepa_credit_transfer
#: help:banking.export.sepa,charge_bearer:0
msgid ""
@@ -246,12 +186,12 @@ msgstr ""
"afgesproken regels in het service level en/of schema (Voor SEPA berichten "
"deze gebruiken). Gedeeld : De transactiekosten aan de crediteur zijde zijn "
"voor de schuldenaar, transactiekosten aan de debiteur kant zijn voor de "
-"schuldeiser. Rekening van de schuldenaar: Alle transactie kosten zijn voor "
-"rekening van de schuldenaar. Rekening van de schuldeiser: Alle transactie "
-"kosten zijn voor rekening van de schuldeiser."
+"schuldeiser. Op rekening van de schuldenaar: Alle transactie kosten zijn "
+"voor rekening van de schuldenaar. Op rekening van de schuldeiser: Alle "
+"transactie kosten zijn voor rekening van de schuldeiser."
#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:207
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:129
#, python-format
msgid ""
"Payment Type Code '%s' is not supported. The only Payment Type Codes "
@@ -262,12 +202,6 @@ msgstr ""
"voor SEPA credit boekingen zijn 'pain.001.001.02', 'pain.001.001.03' en "
"'pain.001.001.04'."
-#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90
-#, python-format
-msgid "This IBAN is not valid : %s"
-msgstr "Deze IBAN is niet geldig : %s"
-
#. module: account_banking_sepa_credit_transfer
#: view:banking.export.sepa:0
#: field:banking.export.sepa,payment_order_ids:0
@@ -299,18 +233,6 @@ msgstr ""
"alle overschrijvingen van het SEPA XML bestand. Indien uitgevinkt, zal het "
"bankafschrift een debet regel weergeven per SEPA XML bestand."
-#. module: account_banking_sepa_credit_transfer
-#: help:banking.export.sepa.wizard,prefered_exec_date:0
-msgid ""
-"This is the date on which the file should be processed by the bank. Please "
-"keep in mind that banks only execute on working days and typically use a "
-"delay of two days between execution date and effective transfer date."
-msgstr ""
-"Dit is de datum waarop het bestand zou moeten worden verwerkt door de bank. "
-"Houdt u er rekening mee dat banken alleen op werkdagen de bestanden "
-"verwerken en veelal een vertraging hebben van twee dagen tussen de "
-"verwerkingsdatum en de effectieve overschrijfdatum."
-
#. module: account_banking_sepa_credit_transfer
#: field:banking.export.sepa.wizard,file:0
msgid "File"
@@ -345,6 +267,9 @@ msgstr "Aangemaakt op"
#~ msgid "Generation date"
#~ msgstr "Aanmaakdatum"
+#~ msgid "Export SEPA Credit Transfer XML file"
+#~ msgstr "Exporteer SEPA XML overschrijvingsbestand"
+
#~ msgid "Message identification"
#~ msgstr "Bericht identificatie"
@@ -403,3 +328,29 @@ msgstr "Aangemaakt op"
#~ msgid "Generated SEPA Credit Transfer XML files"
#~ msgstr "Gengenereerde SEPA XML overschrijf bestanden"
+
+#, python-format
+#~ msgid "This IBAN is not valid : %s"
+#~ msgstr "Deze IBAN is niet geldig : %s"
+
+#~ msgid ""
+#~ "This is the date on which the file should be processed by the bank. Please "
+#~ "keep in mind that banks only execute on working days and typically use a "
+#~ "delay of two days between execution date and effective transfer date."
+#~ msgstr ""
+#~ "Dit is de datum waarop het bestand zou moeten worden verwerkt door de bank. "
+#~ "Houdt u er rekening mee dat banken alleen op werkdagen de bestanden "
+#~ "verwerken en veelal een vertraging hebben van twee dagen tussen de "
+#~ "verwerkingsdatum en de effectieve overschrijfdatum."
+
+#, python-format
+#~ msgid ""
+#~ "The generated XML file is not valid against the official XML Schema "
+#~ "Definition. The generated XML file and the full error have been written in "
+#~ "the server logs. Here is the error, which may give you an idea on the cause "
+#~ "of the problem : %s"
+#~ msgstr ""
+#~ "Het gegenereerde XML bestand is niet geldig volgens de officiële XML schema "
+#~ "definities. Het gegenereerde XML bestand en de volledige fout zijn "
+#~ "weggeschreven in de server log bestanden. Hier is de fout, wat u een idee "
+#~ "kunt geven over de oorzaak van het probleem: %s\""
From 982e986fc6dacc5df73d3989706ebd33a7eeea95 Mon Sep 17 00:00:00 2001
From: "Pedro M. Baeza"
Date: Wed, 10 Sep 2014 12:19:20 +0200
Subject: [PATCH 14/79] [MIG] account_banking_sepa_credit_transfer: Migration
to v8
---
.../__init__.py | 2 +-
.../__openerp__.py | 36 ++-
.../account_banking_sepa.py | 90 -------
.../data/payment_type_sepa_sct.xml | 4 +
.../{ => demo}/sepa_credit_transfer_demo.xml | 1 +
.../account_banking_sepa_credit_transfer.pot | 186 ++++++++------
.../i18n/es.po | 231 ++++++++++++++++++
.../models/__init__.py | 23 ++
.../models/account_banking_sepa.py | 80 ++++++
.../static/description/icon.png | Bin 0 -> 8373 bytes
.../static/description/icon.svg | 92 +++++++
.../static/src/img/icon.png | Bin 6936 -> 0 bytes
.../{ => views}/account_banking_sepa_view.xml | 0
.../wizard/export_sepa.py | 88 +++----
14 files changed, 586 insertions(+), 247 deletions(-)
delete mode 100644 account_banking_sepa_credit_transfer/account_banking_sepa.py
rename account_banking_sepa_credit_transfer/{ => demo}/sepa_credit_transfer_demo.xml (92%)
create mode 100644 account_banking_sepa_credit_transfer/i18n/es.po
create mode 100644 account_banking_sepa_credit_transfer/models/__init__.py
create mode 100644 account_banking_sepa_credit_transfer/models/account_banking_sepa.py
create mode 100644 account_banking_sepa_credit_transfer/static/description/icon.png
create mode 100644 account_banking_sepa_credit_transfer/static/description/icon.svg
delete mode 100644 account_banking_sepa_credit_transfer/static/src/img/icon.png
rename account_banking_sepa_credit_transfer/{ => views}/account_banking_sepa_view.xml (100%)
diff --git a/account_banking_sepa_credit_transfer/__init__.py b/account_banking_sepa_credit_transfer/__init__.py
index 207f87a2171..c30bd487e76 100644
--- a/account_banking_sepa_credit_transfer/__init__.py
+++ b/account_banking_sepa_credit_transfer/__init__.py
@@ -21,4 +21,4 @@
##############################################################################
from . import wizard
-from . import account_banking_sepa
+from . import models
diff --git a/account_banking_sepa_credit_transfer/__openerp__.py b/account_banking_sepa_credit_transfer/__openerp__.py
index fa2aa04e62c..b7c3ff00e7d 100644
--- a/account_banking_sepa_credit_transfer/__openerp__.py
+++ b/account_banking_sepa_credit_transfer/__openerp__.py
@@ -22,43 +22,39 @@
{
'name': 'Account Banking SEPA Credit Transfer',
'summary': 'Create SEPA XML files for Credit Transfers',
- 'version': '0.2',
+ 'version': '8.0.0.3.0',
'license': 'AGPL-3',
- 'author': 'Akretion',
- 'website': 'http://www.akretion.com',
+ 'author': "Akretion, "
+ "Serv. Tecnol. Avanzados - Pedro M. Baeza, "
+ "Odoo Community Association (OCA)",
+ 'website': 'https://github.com/OCA/bank-payment',
'category': 'Banking addons',
'depends': ['account_banking_pain_base'],
'external_dependencies': {
'python': ['unidecode', 'lxml'],
},
'data': [
- 'account_banking_sepa_view.xml',
+ 'views/account_banking_sepa_view.xml',
'wizard/export_sepa_view.xml',
'data/payment_type_sepa_sct.xml',
'security/ir.model.access.csv',
],
- 'demo': ['sepa_credit_transfer_demo.xml'],
+ 'demo': [
+ 'demo/sepa_credit_transfer_demo.xml'
+ ],
'description': '''
Module to export payment orders in SEPA XML file format.
SEPA PAIN (PAyment INitiation) is the new european standard for
-Customer-to-Bank payment instructions.
-
-This module implements SEPA Credit Transfer (SCT), more specifically PAIN
-versions 001.001.02, 001.001.03, 001.001.04 and 001.001.05.
-It is part of the ISO 20022 standard, available on http://www.iso20022.org.
+Customer-to-Bank payment instructions. This module implements SEPA Credit
+Transfer (SCT), more specifically PAIN versions 001.001.02, 001.001.03,
+001.001.04 and 001.001.05. It is part of the ISO 20022 standard, available on
+http://www.iso20022.org.
The Implementation Guidelines for SEPA Credit Transfer published by the
-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.
-
-This module uses the framework provided by the banking addons,
-cf https://www.github.com/OCA/banking-addons
-
-Please contact Alexis de Lattre from Akretion
-for any help or question about this module.
+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.
''',
- 'active': False,
'installable': True,
}
diff --git a/account_banking_sepa_credit_transfer/account_banking_sepa.py b/account_banking_sepa_credit_transfer/account_banking_sepa.py
deleted file mode 100644
index 99d5b022bd3..00000000000
--- a/account_banking_sepa_credit_transfer/account_banking_sepa.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#
-# SEPA Credit Transfer module for OpenERP
-# Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
-# @author: Alexis de Lattre
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-from openerp.osv import orm, fields
-from openerp.addons.decimal_precision import decimal_precision as dp
-from unidecode import unidecode
-
-
-class banking_export_sepa(orm.Model):
- '''SEPA export'''
- _name = 'banking.export.sepa'
- _description = __doc__
- _rec_name = 'filename'
-
- def _generate_filename(self, cr, uid, ids, name, arg, context=None):
- res = {}
- for sepa_file in self.browse(cr, uid, ids, context=context):
- ref = sepa_file.payment_order_ids[0].reference
- if ref:
- label = unidecode(ref.replace('/', '-'))
- else:
- label = 'error'
- res[sepa_file.id] = 'sct_%s.xml' % label
- return res
-
- _columns = {
- 'payment_order_ids': fields.many2many(
- 'payment.order',
- 'account_payment_order_sepa_rel',
- 'banking_export_sepa_id', 'account_order_id',
- 'Payment Orders',
- readonly=True),
- 'nb_transactions': fields.integer(
- 'Number of Transactions', readonly=True),
- 'total_amount': fields.float(
- 'Total Amount', digits_compute=dp.get_precision('Account'),
- readonly=True),
- 'batch_booking': fields.boolean(
- 'Batch Booking', readonly=True,
- help="If true, the bank statement will display only one debit "
- "line for all the wire transfers of the SEPA XML file ; "
- "if false, the bank statement will display one debit line "
- "per wire transfer of the SEPA XML file."),
- 'charge_bearer': fields.selection([
- ('SLEV', 'Following Service Level'),
- ('SHAR', 'Shared'),
- ('CRED', 'Borne by Creditor'),
- ('DEBT', 'Borne by Debtor'),
- ], 'Charge Bearer', readonly=True,
- help="Following service level : transaction charges are to be "
- "applied following the rules agreed in the service level and/or "
- "scheme (SEPA Core messages must use this). Shared : "
- "transaction charges on the creditor side are to be borne by "
- "the creditor, transaction charges on the debtor side are to "
- "be borne by the debtor. Borne by creditor : all transaction "
- "charges are to be borne by the creditor. Borne by debtor : "
- "all transaction charges are to be borne by the debtor."),
- 'create_date': fields.datetime('Generation Date', readonly=True),
- 'file': fields.binary('SEPA XML File', readonly=True),
- 'filename': fields.function(
- _generate_filename, type='char', size=256, string='Filename',
- readonly=True),
- 'state': fields.selection([
- ('draft', 'Draft'),
- ('sent', 'Sent'),
- ], 'State', readonly=True),
- }
-
- _defaults = {
- 'state': 'draft',
- }
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 f07ece1464e..31d851edb96 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
@@ -7,6 +7,7 @@
SEPA Credit Transfer v05pain.001.001.05
+ payment
@@ -15,6 +16,7 @@
SEPA Credit Transfer v04pain.001.001.04
+ payment
@@ -23,6 +25,7 @@
SEPA Credit Transfer v03 (recommended)pain.001.001.03
+ payment
@@ -31,6 +34,7 @@
SEPA Credit Transfer v02pain.001.001.02
+ payment
diff --git a/account_banking_sepa_credit_transfer/sepa_credit_transfer_demo.xml b/account_banking_sepa_credit_transfer/demo/sepa_credit_transfer_demo.xml
similarity index 92%
rename from account_banking_sepa_credit_transfer/sepa_credit_transfer_demo.xml
rename to account_banking_sepa_credit_transfer/demo/sepa_credit_transfer_demo.xml
index 77abf1b3405..48e69a780d7 100644
--- a/account_banking_sepa_credit_transfer/sepa_credit_transfer_demo.xml
+++ b/account_banking_sepa_credit_transfer/demo/sepa_credit_transfer_demo.xml
@@ -9,6 +9,7 @@
+
diff --git a/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot b/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot
index 38feaadd469..ae9645ceb62 100644
--- a/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot
+++ b/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot
@@ -1,13 +1,13 @@
-# Translation of OpenERP Server.
+# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_banking_sepa_credit_transfer
#
msgid ""
msgstr ""
-"Project-Id-Version: OpenERP Server 7.0\n"
+"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-12-23 22:49+0000\n"
-"PO-Revision-Date: 2013-12-23 22:49+0000\n"
+"POT-Creation-Date: 2014-10-31 22:52+0000\n"
+"PO-Revision-Date: 2014-10-31 22:52+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,53 +16,60 @@ msgstr ""
"Plural-Forms: \n"
#. module: account_banking_sepa_credit_transfer
-#: selection:banking.export.sepa.wizard,state:0
-msgid "Create"
+#: field:banking.export.sepa,batch_booking:0
+#: field:banking.export.sepa.wizard,batch_booking:0
+msgid "Batch Booking"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: field:banking.export.sepa,nb_transactions:0
-#: field:banking.export.sepa.wizard,nb_transactions:0
-msgid "Number of Transactions"
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Borne by Creditor"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: field:banking.export.sepa,filename:0
-#: field:banking.export.sepa.wizard,filename:0
-msgid "Filename"
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Borne by Debtor"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: field:banking.export.sepa,state:0
-#: field:banking.export.sepa.wizard,state:0
-msgid "State"
+#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view
+msgid "Cancel"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: selection:banking.export.sepa,state:0
-msgid "Draft"
+#: field:banking.export.sepa,charge_bearer:0
+#: field:banking.export.sepa.wizard,charge_bearer:0
+msgid "Charge Bearer"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: help:banking.export.sepa.wizard,charge_bearer:0
-msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor."
+#: selection:banking.export.sepa.wizard,state:0
+msgid "Create"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: selection:banking.export.sepa,charge_bearer:0
-#: selection:banking.export.sepa.wizard,charge_bearer:0
-msgid "Shared"
+#: field:banking.export.sepa,create_uid:0
+#: field:banking.export.sepa.wizard,create_uid:0
+msgid "Created by"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: field:banking.export.sepa,batch_booking:0
-#: field:banking.export.sepa.wizard,batch_booking:0
-msgid "Batch Booking"
+#: field:banking.export.sepa.wizard,create_date:0
+msgid "Created on"
msgstr ""
#. module: account_banking_sepa_credit_transfer
#: selection:banking.export.sepa,state:0
-msgid "Sent"
+msgid "Draft"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:124
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:232
+#, python-format
+msgid "Error:"
msgstr ""
#. module: account_banking_sepa_credit_transfer
@@ -71,18 +78,18 @@ msgid "Export SEPA Credit Transfer File"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: view:banking.export.sepa:0
-msgid "SEPA Credit Transfer"
+#: field:banking.export.sepa.wizard,file:0
+msgid "File"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: selection:banking.export.sepa.wizard,state:0
-msgid "Finish"
+#: field:banking.export.sepa.wizard,filename:0
+msgid "Filename"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: selection:banking.export.sepa,state:0
-msgid "Reconciled"
+#: selection:banking.export.sepa.wizard,state:0
+msgid "Finish"
msgstr ""
#. module: account_banking_sepa_credit_transfer
@@ -92,89 +99,83 @@ msgid "Following Service Level"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: selection:banking.export.sepa,charge_bearer:0
-#: selection:banking.export.sepa.wizard,charge_bearer:0
-msgid "Borne by Creditor"
+#: help:banking.export.sepa,charge_bearer:0
+msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor."
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: view:banking.export.sepa.wizard:0
-msgid "Validate"
+#: help:banking.export.sepa.wizard,charge_bearer:0
+msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor."
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: view:banking.export.sepa.wizard:0
-msgid "Generate"
+#: view:banking.export.sepa:account_banking_sepa_credit_transfer.view_banking_export_sepa_form
+msgid "General Information"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: selection:banking.export.sepa,charge_bearer:0
-#: selection:banking.export.sepa.wizard,charge_bearer:0
-msgid "Borne by Debtor"
+#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view
+msgid "Generate"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:128
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:245
-#, python-format
-msgid "Error:"
+#: field:banking.export.sepa,create_date:0
+msgid "Generation Date"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: field:banking.export.sepa,total_amount:0
-#: field:banking.export.sepa.wizard,total_amount:0
-msgid "Total Amount"
+#: field:banking.export.sepa,id:0
+#: field:banking.export.sepa.wizard,id:0
+msgid "ID"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: field:banking.export.sepa,charge_bearer:0
-#: field:banking.export.sepa.wizard,charge_bearer:0
-msgid "Charge Bearer"
+#: help:banking.export.sepa,batch_booking:0
+#: help:banking.export.sepa.wizard,batch_booking:0
+msgid "If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: view:banking.export.sepa.wizard:0
-msgid "SEPA File Generation"
+#: field:banking.export.sepa,write_uid:0
+#: field:banking.export.sepa.wizard,write_uid:0
+msgid "Last Updated by"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa
-msgid "SEPA export"
+#: field:banking.export.sepa,write_date:0
+#: field:banking.export.sepa.wizard,write_date:0
+msgid "Last Updated on"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:246
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:233
#, python-format
msgid "Missing Bank Account on invoice '%s' (payment order line reference '%s')."
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: field:banking.export.sepa,file:0
-#: field:banking.export.sepa.wizard,file_id:0
-msgid "SEPA XML File"
+#: field:banking.export.sepa,nb_transactions:0
+#: field:banking.export.sepa.wizard,nb_transactions:0
+msgid "Number of Transactions"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: help:banking.export.sepa,charge_bearer:0
-msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor."
+#: view:banking.export.sepa:account_banking_sepa_credit_transfer.view_banking_export_sepa_form
+#: field:banking.export.sepa,payment_order_ids:0
+#: field:banking.export.sepa.wizard,payment_order_ids:0
+msgid "Payment Orders"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:129
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:125
#, python-format
msgid "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'."
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: view:banking.export.sepa:0
-#: field:banking.export.sepa,payment_order_ids:0
-#: field:banking.export.sepa.wizard,payment_order_ids:0
-msgid "Payment Orders"
-msgstr ""
-
-#. module: account_banking_sepa_credit_transfer
-#: view:banking.export.sepa:0
-msgid "General Information"
+#: view:banking.export.sepa:account_banking_sepa_credit_transfer.view_banking_export_sepa_form
+#: view:banking.export.sepa:account_banking_sepa_credit_transfer.view_banking_export_sepa_tree
+msgid "SEPA Credit Transfer"
msgstr ""
#. module: account_banking_sepa_credit_transfer
@@ -185,23 +186,46 @@ msgid "SEPA Credit Transfer Files"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: help:banking.export.sepa,batch_booking:0
-#: help:banking.export.sepa.wizard,batch_booking:0
-msgid "If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."
+#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view
+msgid "SEPA File Generation"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: field:banking.export.sepa.wizard,file:0
-msgid "File"
+#: field:banking.export.sepa,file:0
+#: field:banking.export.sepa.wizard,file_id:0
+msgid "SEPA XML File"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: view:banking.export.sepa.wizard:0
-msgid "Cancel"
+#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa
+msgid "SEPA export"
msgstr ""
#. module: account_banking_sepa_credit_transfer
-#: field:banking.export.sepa,create_date:0
-msgid "Generation Date"
+#: selection:banking.export.sepa,state:0
+msgid "Sent"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Shared"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,state:0
+#: field:banking.export.sepa.wizard,state:0
+msgid "State"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,total_amount:0
+#: field:banking.export.sepa.wizard,total_amount:0
+msgid "Total Amount"
+msgstr ""
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view
+msgid "Validate"
msgstr ""
diff --git a/account_banking_sepa_credit_transfer/i18n/es.po b/account_banking_sepa_credit_transfer/i18n/es.po
new file mode 100644
index 00000000000..5d7b1057b0f
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/i18n/es.po
@@ -0,0 +1,231 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_banking_sepa_credit_transfer
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 8.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-10-31 22:52+0000\n"
+"PO-Revision-Date: 2014-10-31 22:52+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,batch_booking:0
+#: field:banking.export.sepa.wizard,batch_booking:0
+msgid "Batch Booking"
+msgstr "Registro en lote"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Borne by Creditor"
+msgstr "A cargo del acreedor"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Borne by Debtor"
+msgstr "A cargo del deudor"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view
+msgid "Cancel"
+msgstr "Cancelar"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,charge_bearer:0
+#: field:banking.export.sepa.wizard,charge_bearer:0
+msgid "Charge Bearer"
+msgstr "A cargo del portador"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa.wizard,state:0
+msgid "Create"
+msgstr "Crear"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,create_uid:0
+#: field:banking.export.sepa.wizard,create_uid:0
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa.wizard,create_date:0
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Draft"
+msgstr "Borrador"
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:124
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:232
+#, python-format
+msgid "Error:"
+msgstr "Error:"
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa_wizard
+msgid "Export SEPA Credit Transfer File"
+msgstr "Exportar archivo de transferencia SEPA"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa.wizard,file:0
+msgid "File"
+msgstr "Archivo"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa.wizard,filename:0
+msgid "Filename"
+msgstr "Nombre de archivo"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa.wizard,state:0
+msgid "Finish"
+msgstr "Finalizar"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Following Service Level"
+msgstr "Según el acuerdo de servicio"
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa,charge_bearer:0
+msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor."
+msgstr "Según el acuerdo de servicio: los costes de la transacción se aplicarán siguiendo las reglas acordadas en el nivel de servicio y/o en el esquema (las remesas SEPA Core deben usar esta opción). Compartidos: los costes de la transacción en la parte del acreedor están a cargo del acreedor, y los costes de la transacción del lado del deudor estarán a cargo del deudor. A cargo del acreedor: todos los costes de la transacción estarán a cargo del acreedor. A cargo del deudor: Todos los costes de la transacción estarán a cargo del deudor."
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa.wizard,charge_bearer:0
+msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor."
+msgstr "Según el acuerdo de servicio: los costes de la transacción se aplicarán siguiendo las reglas acordadas en el nivel de servicio y/o en el esquema (las remesas SEPA Core deben usar esta opción). Compartidos: los costes de la transacción en la parte del acreedor están a cargo del acreedor, y los costes de la transacción del lado del deudor estarán a cargo del deudor. A cargo del acreedor: todos los costes de la transacción estarán a cargo del acreedor. A cargo del deudor: Todos los costes de la transacción estarán a cargo del deudor."
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:account_banking_sepa_credit_transfer.view_banking_export_sepa_form
+msgid "General Information"
+msgstr "Información general"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view
+msgid "Generate"
+msgstr "Generar"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,create_date:0
+msgid "Generation Date"
+msgstr "Fecha de generación"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,id:0
+#: field:banking.export.sepa.wizard,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: account_banking_sepa_credit_transfer
+#: help:banking.export.sepa,batch_booking:0
+#: help:banking.export.sepa.wizard,batch_booking:0
+msgid "If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."
+msgstr "Si está marcado, el extracto bancario mostrará sólo una línea del haber para todos los adeudos directos del archivo SEPA; si no está marcado, entonces el extracto bancario mostrará una línea por cada adeudo directo del archivo SEPA."
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,write_uid:0
+#: field:banking.export.sepa.wizard,write_uid:0
+msgid "Last Updated by"
+msgstr "Última actualización por"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,write_date:0
+#: field:banking.export.sepa.wizard,write_date:0
+msgid "Last Updated on"
+msgstr "Última actualización en"
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:233
+#, python-format
+msgid "Missing Bank Account on invoice '%s' (payment order line reference '%s')."
+msgstr "Falta la cuenta bancaria en la factura '%s' (línea de pago con referencia '%s')."
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,nb_transactions:0
+#: field:banking.export.sepa.wizard,nb_transactions:0
+msgid "Number of Transactions"
+msgstr "Nº de transacciones"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:account_banking_sepa_credit_transfer.view_banking_export_sepa_form
+#: field:banking.export.sepa,payment_order_ids:0
+#: field:banking.export.sepa.wizard,payment_order_ids:0
+msgid "Payment Orders"
+msgstr "Órdenes de pago"
+
+#. module: account_banking_sepa_credit_transfer
+#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:125
+#, python-format
+msgid "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'."
+msgstr "El código de tipo de pago '%s' no está soportado. Los únicos código de tipo de pago soportados por las transferencias SEPA son 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04' y 'pain.001.001.05'."
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa:account_banking_sepa_credit_transfer.view_banking_export_sepa_form
+#: view:banking.export.sepa:account_banking_sepa_credit_transfer.view_banking_export_sepa_tree
+msgid "SEPA Credit Transfer"
+msgstr "Transferencia SEPA"
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order
+#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa
+#: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa
+msgid "SEPA Credit Transfer Files"
+msgstr "Archivos de transferencias SEPA"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view
+msgid "SEPA File Generation"
+msgstr "Generación de archivo SEPA"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,file:0
+#: field:banking.export.sepa.wizard,file_id:0
+msgid "SEPA XML File"
+msgstr "Archivo SEPA XML"
+
+#. module: account_banking_sepa_credit_transfer
+#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa
+msgid "SEPA export"
+msgstr "Exportación de SEPA"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,state:0
+msgid "Sent"
+msgstr "Enviado"
+
+#. module: account_banking_sepa_credit_transfer
+#: selection:banking.export.sepa,charge_bearer:0
+#: selection:banking.export.sepa.wizard,charge_bearer:0
+msgid "Shared"
+msgstr "Compartidos"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,state:0
+#: field:banking.export.sepa.wizard,state:0
+msgid "State"
+msgstr "Estado"
+
+#. module: account_banking_sepa_credit_transfer
+#: field:banking.export.sepa,total_amount:0
+#: field:banking.export.sepa.wizard,total_amount:0
+msgid "Total Amount"
+msgstr "Importe total"
+
+#. module: account_banking_sepa_credit_transfer
+#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view
+msgid "Validate"
+msgstr "Validar"
+
diff --git a/account_banking_sepa_credit_transfer/models/__init__.py b/account_banking_sepa_credit_transfer/models/__init__.py
new file mode 100644
index 00000000000..90e4812104a
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/models/__init__.py
@@ -0,0 +1,23 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# SEPA Credit Transfer module for OpenERP
+# Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+# @author: Alexis de Lattre
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from . import account_banking_sepa
diff --git a/account_banking_sepa_credit_transfer/models/account_banking_sepa.py b/account_banking_sepa_credit_transfer/models/account_banking_sepa.py
new file mode 100644
index 00000000000..77213c29f11
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/models/account_banking_sepa.py
@@ -0,0 +1,80 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# SEPA Credit Transfer module for OpenERP
+# Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+# @author: Alexis de Lattre
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from openerp import models, fields, api
+from openerp.addons.decimal_precision import decimal_precision as dp
+
+try:
+ from unidecode import unidecode
+except ImportError:
+ unidecode = None
+
+
+class BankingExportSepa(models.Model):
+ """SEPA export"""
+ _name = 'banking.export.sepa'
+ _description = __doc__
+ _rec_name = 'filename'
+
+ @api.one
+ def _generate_filename(self):
+ ref = self.payment_order_ids[0].reference
+ if ref:
+ label = unidecode(ref.replace('/', '-'))
+ else:
+ label = 'error'
+ self.filename = 'sct_%s.xml' % label
+
+ payment_order_ids = fields.Many2many(
+ comodel_name='payment.order', column1='banking_export_sepa_id',
+ column2='account_order_id', relation='account_payment_order_sepa_rel',
+ string='Payment Orders', readonly=True)
+ nb_transactions = fields.Integer(string='Number of Transactions',
+ readonly=True)
+ total_amount = fields.Float(string='Total Amount',
+ digits_compute=dp.get_precision('Account'),
+ readonly=True)
+ batch_booking = fields.Boolean(
+ 'Batch Booking', readonly=True,
+ help="If true, the bank statement will display only one debit line "
+ "for all the wire transfers of the SEPA XML file ; if false, "
+ "the bank statement will display one debit line per wire "
+ "transfer of the SEPA XML file.")
+ charge_bearer = fields.Selection(
+ [('SLEV', 'Following Service Level'),
+ ('SHAR', 'Shared'),
+ ('CRED', 'Borne by Creditor'),
+ ('DEBT', 'Borne by Debtor')], string='Charge Bearer', readonly=True,
+ help="Following service level : transaction charges are to be applied "
+ "following the rules agreed in the service level and/or scheme "
+ "(SEPA Core messages must use this). Shared : transaction "
+ "charges on the creditor side are to be borne by the creditor, "
+ "transaction charges on the debtor side are to be borne by the "
+ "debtor. Borne by creditor : all transaction charges are to be "
+ "borne by the creditor. Borne by debtor : all transaction "
+ "charges are to be borne by the debtor.")
+ create_date = fields.Datetime('Generation Date', readonly=True)
+ file = fields.Binary('SEPA XML File', readonly=True)
+ filename = fields.Char(string='Filename', size=256, readonly=True,
+ compute=_generate_filename)
+ state = fields.Selection([('draft', 'Draft'), ('sent', 'Sent')],
+ string='State', readonly=True, default='draft')
diff --git a/account_banking_sepa_credit_transfer/static/description/icon.png b/account_banking_sepa_credit_transfer/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..e1485aabdd1bb71edc4867a3b83650e68bfda282
GIT binary patch
literal 8373
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
literal 0
HcmV?d00001
diff --git a/account_banking_sepa_credit_transfer/static/description/icon.svg b/account_banking_sepa_credit_transfer/static/description/icon.svg
new file mode 100644
index 00000000000..266ef844233
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/static/description/icon.svg
@@ -0,0 +1,92 @@
+
+
+
+
\ No newline at end of file
diff --git a/account_banking_sepa_credit_transfer/static/src/img/icon.png b/account_banking_sepa_credit_transfer/static/src/img/icon.png
deleted file mode 100644
index 12ecf91ce177d6d36997bb6769f34ddd287a4465..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 6936
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
ey#t@*{{BDaJT*%o#VE@F0000
Date: Wed, 28 Jan 2015 09:53:38 +0100
Subject: [PATCH 15/79] Fix an error when no payment_order_ids
---
.../models/account_banking_sepa.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/account_banking_sepa_credit_transfer/models/account_banking_sepa.py b/account_banking_sepa_credit_transfer/models/account_banking_sepa.py
index 77213c29f11..f463a505021 100644
--- a/account_banking_sepa_credit_transfer/models/account_banking_sepa.py
+++ b/account_banking_sepa_credit_transfer/models/account_banking_sepa.py
@@ -37,7 +37,7 @@ class BankingExportSepa(models.Model):
@api.one
def _generate_filename(self):
- ref = self.payment_order_ids[0].reference
+ ref = self.payment_order_ids.reference
if ref:
label = unidecode(ref.replace('/', '-'))
else:
From 24a7584c2c45271142f125fd3e3ff9dbe57a0a58 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Bidoul?=
Date: Wed, 10 Dec 2014 16:51:48 +0100
Subject: [PATCH 16/79] sepa credit tfr: get BIC from bank account if not
available on bank
Since the bank is optional on bank accounts and the BIC can be set
on the bank account if there is no bank, we allow the system to
get the BIC from the bank account in case it is not on the bank.
We give priority to the BIC indicated on the bank, keeping
the same behaviour with existing data where the bank BIC is
available.
---
account_banking_sepa_credit_transfer/wizard/export_sepa.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa.py b/account_banking_sepa_credit_transfer/wizard/export_sepa.py
index 94b2004a3ec..c9e941e542b 100644
--- a/account_banking_sepa_credit_transfer/wizard/export_sepa.py
+++ b/account_banking_sepa_credit_transfer/wizard/export_sepa.py
@@ -195,7 +195,8 @@ def create_sepa(self, cr, uid, ids, context=None):
'sepa_export.payment_order_ids[0].mode.bank_id.partner_id.'
'name',
'sepa_export.payment_order_ids[0].mode.bank_id.acc_number',
- 'sepa_export.payment_order_ids[0].mode.bank_id.bank.bic',
+ 'sepa_export.payment_order_ids[0].mode.bank_id.bank.bic or '
+ 'sepa_export.payment_order_ids[0].mode.bank_id.bank_bic',
{'sepa_export': sepa_export},
gen_args, context=context)
charge_bearer_2_24 = etree.SubElement(payment_info_2_0, 'ChrgBr')
@@ -236,7 +237,8 @@ def create_sepa(self, cr, uid, ids, context=None):
self.generate_party_block(
cr, uid, credit_transfer_transaction_info_2_27, 'Cdtr',
'C', 'line.partner_id.name', 'line.bank_id.acc_number',
- 'line.bank_id.bank.bic', {'line': line}, gen_args,
+ 'line.bank_id.bank.bic or '
+ 'line.bank_id.bank_bic', {'line': line}, gen_args,
context=context)
self.generate_remittance_info_block(
cr, uid, credit_transfer_transaction_info_2_27,
From c20fd5501455646c37a430ff3a2fed9342459f75 Mon Sep 17 00:00:00 2001
From: Alexis de Lattre
Date: Thu, 29 Jan 2015 16:30:02 +0100
Subject: [PATCH 17/79] Use attachments instead of creating a specific object
for each kind of payment order
---
.../__init__.py | 1 -
.../__openerp__.py | 9 +--
.../migrations/8.0.0.3/post-migration.py | 50 ++++++++++++
.../8.0.0.3/pre-migration.py} | 17 +++-
.../models/account_banking_sepa.py | 80 -------------------
.../security/ir.model.access.csv | 2 -
.../views/account_banking_sepa_view.xml | 77 ------------------
.../wizard/export_sepa.py | 44 +++++-----
.../wizard/export_sepa_view.xml | 7 +-
9 files changed, 86 insertions(+), 201 deletions(-)
create mode 100644 account_banking_sepa_credit_transfer/migrations/8.0.0.3/post-migration.py
rename account_banking_sepa_credit_transfer/{models/__init__.py => migrations/8.0.0.3/pre-migration.py} (70%)
delete mode 100644 account_banking_sepa_credit_transfer/models/account_banking_sepa.py
delete mode 100644 account_banking_sepa_credit_transfer/security/ir.model.access.csv
delete mode 100644 account_banking_sepa_credit_transfer/views/account_banking_sepa_view.xml
diff --git a/account_banking_sepa_credit_transfer/__init__.py b/account_banking_sepa_credit_transfer/__init__.py
index c30bd487e76..73b1281b2e7 100644
--- a/account_banking_sepa_credit_transfer/__init__.py
+++ b/account_banking_sepa_credit_transfer/__init__.py
@@ -21,4 +21,3 @@
##############################################################################
from . import wizard
-from . import models
diff --git a/account_banking_sepa_credit_transfer/__openerp__.py b/account_banking_sepa_credit_transfer/__openerp__.py
index b7c3ff00e7d..0b9ccd55281 100644
--- a/account_banking_sepa_credit_transfer/__openerp__.py
+++ b/account_banking_sepa_credit_transfer/__openerp__.py
@@ -1,8 +1,8 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
-# SEPA Credit Transfer module for OpenERP
-# Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+# SEPA Credit Transfer module for Odoo
+# Copyright (C) 2010-2015 Akretion (http://www.akretion.com)
# @author: Alexis de Lattre
#
# This program is free software: you can redistribute it and/or modify
@@ -30,14 +30,9 @@
'website': 'https://github.com/OCA/bank-payment',
'category': 'Banking addons',
'depends': ['account_banking_pain_base'],
- 'external_dependencies': {
- 'python': ['unidecode', 'lxml'],
- },
'data': [
- 'views/account_banking_sepa_view.xml',
'wizard/export_sepa_view.xml',
'data/payment_type_sepa_sct.xml',
- 'security/ir.model.access.csv',
],
'demo': [
'demo/sepa_credit_transfer_demo.xml'
diff --git a/account_banking_sepa_credit_transfer/migrations/8.0.0.3/post-migration.py b/account_banking_sepa_credit_transfer/migrations/8.0.0.3/post-migration.py
new file mode 100644
index 00000000000..58c5831f039
--- /dev/null
+++ b/account_banking_sepa_credit_transfer/migrations/8.0.0.3/post-migration.py
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Copyright (C) 2015 Akretion (http://www.akretion.com/)
+# @author: Alexis de Lattre
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from openerp import pooler, SUPERUSER_ID
+
+
+def migrate(cr, version):
+ if not version:
+ return
+
+ pool = pooler.get_pool(cr.dbname)
+ cr.execute('''
+ SELECT
+ old_sepa.file,
+ rel.account_order_id AS payment_order_id,
+ payment_order.reference
+ FROM migration_banking_export_sepa old_sepa
+ LEFT JOIN migration_account_payment_order_sepa_rel rel
+ ON old_sepa.id=rel.banking_export_sepa_id
+ LEFT JOIN payment_order ON payment_order.id=rel.account_order_id
+ ''')
+
+ for sepa_file in cr.dictfetchall():
+ filename = 'sct_%s.xml' % sepa_file['reference'].replace('/', '-')
+ pool['ir.attachment'].create(
+ cr, SUPERUSER_ID, {
+ 'name': filename,
+ 'res_id': sepa_file['payment_order_id'],
+ 'res_model': 'payment.order',
+ 'datas': str(sepa_file['file']),
+ })
+ return
diff --git a/account_banking_sepa_credit_transfer/models/__init__.py b/account_banking_sepa_credit_transfer/migrations/8.0.0.3/pre-migration.py
similarity index 70%
rename from account_banking_sepa_credit_transfer/models/__init__.py
rename to account_banking_sepa_credit_transfer/migrations/8.0.0.3/pre-migration.py
index 90e4812104a..f1f5f7b0fcd 100644
--- a/account_banking_sepa_credit_transfer/models/__init__.py
+++ b/account_banking_sepa_credit_transfer/migrations/8.0.0.3/pre-migration.py
@@ -1,8 +1,7 @@
-# -*- encoding: utf-8 -*-
+# -*- coding: utf-8 -*-
##############################################################################
#
-# SEPA Credit Transfer module for OpenERP
-# Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
+# Copyright (C) 2015 Akretion (http://www.akretion.com/)
# @author: Alexis de Lattre
#
# This program is free software: you can redistribute it and/or modify
@@ -20,4 +19,14 @@
#
##############################################################################
-from . import account_banking_sepa
+
+def migrate(cr, version):
+ if not version:
+ return
+
+ cr.execute(
+ 'ALTER TABLE banking_export_sepa '
+ 'RENAME TO migration_banking_export_sepa')
+ cr.execute(
+ 'ALTER TABLE account_payment_order_sepa_rel '
+ 'RENAME TO migration_account_payment_order_sepa_rel')
diff --git a/account_banking_sepa_credit_transfer/models/account_banking_sepa.py b/account_banking_sepa_credit_transfer/models/account_banking_sepa.py
deleted file mode 100644
index f463a505021..00000000000
--- a/account_banking_sepa_credit_transfer/models/account_banking_sepa.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#
-# SEPA Credit Transfer module for OpenERP
-# Copyright (C) 2010-2013 Akretion (http://www.akretion.com)
-# @author: Alexis de Lattre
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-from openerp import models, fields, api
-from openerp.addons.decimal_precision import decimal_precision as dp
-
-try:
- from unidecode import unidecode
-except ImportError:
- unidecode = None
-
-
-class BankingExportSepa(models.Model):
- """SEPA export"""
- _name = 'banking.export.sepa'
- _description = __doc__
- _rec_name = 'filename'
-
- @api.one
- def _generate_filename(self):
- ref = self.payment_order_ids.reference
- if ref:
- label = unidecode(ref.replace('/', '-'))
- else:
- label = 'error'
- self.filename = 'sct_%s.xml' % label
-
- payment_order_ids = fields.Many2many(
- comodel_name='payment.order', column1='banking_export_sepa_id',
- column2='account_order_id', relation='account_payment_order_sepa_rel',
- string='Payment Orders', readonly=True)
- nb_transactions = fields.Integer(string='Number of Transactions',
- readonly=True)
- total_amount = fields.Float(string='Total Amount',
- digits_compute=dp.get_precision('Account'),
- readonly=True)
- batch_booking = fields.Boolean(
- 'Batch Booking', readonly=True,
- help="If true, the bank statement will display only one debit line "
- "for all the wire transfers of the SEPA XML file ; if false, "
- "the bank statement will display one debit line per wire "
- "transfer of the SEPA XML file.")
- charge_bearer = fields.Selection(
- [('SLEV', 'Following Service Level'),
- ('SHAR', 'Shared'),
- ('CRED', 'Borne by Creditor'),
- ('DEBT', 'Borne by Debtor')], string='Charge Bearer', readonly=True,
- help="Following service level : transaction charges are to be applied "
- "following the rules agreed in the service level and/or scheme "
- "(SEPA Core messages must use this). Shared : transaction "
- "charges on the creditor side are to be borne by the creditor, "
- "transaction charges on the debtor side are to be borne by the "
- "debtor. Borne by creditor : all transaction charges are to be "
- "borne by the creditor. Borne by debtor : all transaction "
- "charges are to be borne by the debtor.")
- create_date = fields.Datetime('Generation Date', readonly=True)
- file = fields.Binary('SEPA XML File', readonly=True)
- filename = fields.Char(string='Filename', size=256, readonly=True,
- compute=_generate_filename)
- state = fields.Selection([('draft', 'Draft'), ('sent', 'Sent')],
- string='State', readonly=True, default='draft')
diff --git a/account_banking_sepa_credit_transfer/security/ir.model.access.csv b/account_banking_sepa_credit_transfer/security/ir.model.access.csv
deleted file mode 100644
index 96fda5eec0d..00000000000
--- a/account_banking_sepa_credit_transfer/security/ir.model.access.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_banking_export_sepa","Full access on banking.export.sepa","model_banking_export_sepa","account_payment.group_account_payment",1,1,1,1
diff --git a/account_banking_sepa_credit_transfer/views/account_banking_sepa_view.xml b/account_banking_sepa_credit_transfer/views/account_banking_sepa_view.xml
deleted file mode 100644
index a5896c75706..00000000000
--- a/account_banking_sepa_credit_transfer/views/account_banking_sepa_view.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
- account.banking.export.sepa.form
- banking.export.sepa
-
-
Module to export payment orders in SEPA XML file format.
+
SEPA PAIN (PAyment INitiation) is the new european standard for
+Customer-to-Bank payment instructions. This module implements SEPA Credit
+Transfer (SCT), more specifically PAIN versions 001.001.02, 001.001.03,
+001.001.04 and 001.001.05. It is part of the ISO 20022 standard, available on
+https://www.iso20022.org.
+
The Implementation Guidelines for SEPA Credit Transfer published by the
+European Payments Council (https://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/
In the menu Invoicing/Accounting > Payments > Payment Order, create a new
+payment order and select the Payment Mode dedicated to SEPA Credit
+Transfer that you created during the configuration step.
Bugs are tracked on GitHub Issues.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+feedback.
+
Do not contact contributors directly about support or help with technical issues.
OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
Module to export payment orders in SEPA XML file format.
SEPA PAIN (PAyment INitiation) is the new european standard for
Customer-to-Bank payment instructions. This module implements SEPA Credit
@@ -422,7 +422,7 @@
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-feedback.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.