From cf00ab76b9002b23825b39026efe221a0176fc76 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Wed, 10 Sep 2014 12:48:09 +0200 Subject: [PATCH] Migration and enhancement of all modules involved in SEPA --- .../__init__.py | 24 + .../__openerp__.py | 59 ++ .../account_banking_sepa.py | 90 ++ .../account_banking_sepa_view.xml | 77 ++ .../data/pain.001.001.02.xsd | 784 ++++++++++++++ .../data/pain.001.001.03.xsd | 921 +++++++++++++++++ .../data/pain.001.001.04.xsd | 968 ++++++++++++++++++ .../data/pain.001.001.05.xsd | 931 +++++++++++++++++ .../data/payment_type_sepa_sct.xml | 45 + .../demo/sepa_credit_transfer_demo.xml | 15 + .../account_banking_sepa_credit_transfer.pot | 207 ++++ .../i18n/fr.po | 365 +++++++ .../i18n/nl.po | 356 +++++++ .../models/__init__.py | 23 + .../models/account_banking_sepa.py | 76 ++ .../security/ir.model.access.csv | 2 + .../sepa_credit_transfer_demo.xml | 15 + .../static/description/icon.svg | 92 ++ .../static/src/img/icon.png | Bin 0 -> 6936 bytes .../views/account_banking_sepa_view.xml | 77 ++ .../wizard/__init__.py | 23 + .../wizard/export_sepa.py | 279 +++++ .../wizard/export_sepa_view.xml | 37 + 23 files changed, 5466 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/pain.001.001.05.xsd create mode 100644 account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml create mode 100644 account_banking_sepa_credit_transfer/demo/sepa_credit_transfer_demo.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/i18n/nl.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/security/ir.model.access.csv create mode 100644 account_banking_sepa_credit_transfer/sepa_credit_transfer_demo.xml create mode 100644 account_banking_sepa_credit_transfer/static/description/icon.svg create mode 100644 account_banking_sepa_credit_transfer/static/src/img/icon.png create mode 100644 account_banking_sepa_credit_transfer/views/account_banking_sepa_view.xml 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 000000000..c30bd487e --- /dev/null +++ b/account_banking_sepa_credit_transfer/__init__.py @@ -0,0 +1,24 @@ +# -*- 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 wizard +from . import models diff --git a/account_banking_sepa_credit_transfer/__openerp__.py b/account_banking_sepa_credit_transfer/__openerp__.py new file mode 100644 index 000000000..89b56c189 --- /dev/null +++ b/account_banking_sepa_credit_transfer/__openerp__.py @@ -0,0 +1,59 @@ +# -*- 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 . +# +############################################################################## +{ + 'name': 'Account Banking SEPA Credit Transfer', + 'summary': 'Create SEPA XML files for Credit Transfers', + 'version': '0.2', + 'license': 'AGPL-3', + 'author': 'Akretion', + 'website': 'http://www.akretion.com', + 'contributors': ['Pedro M. Baeza '], + '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' + ], + '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. + +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. + ''', + '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 000000000..99d5b022b --- /dev/null +++ b/account_banking_sepa_credit_transfer/account_banking_sepa.py @@ -0,0 +1,90 @@ +# -*- 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/account_banking_sepa_view.xml b/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml new file mode 100644 index 000000000..a5896c757 --- /dev/null +++ b/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml @@ -0,0 +1,77 @@ + + + + + + + account.banking.export.sepa.form + banking.export.sepa + +
+
+ +
+ + + + + + + + + + + + + + + + +
+
+
+ + + + account.banking.export.sepa.tree + banking.export.sepa + + + + + + + + + + + + + SEPA Credit Transfer 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 000000000..43529da1b --- /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 000000000..864977991 --- /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 000000000..813c7fe29 --- /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/pain.001.001.05.xsd b/account_banking_sepa_credit_transfer/data/pain.001.001.05.xsd new file mode 100644 index 000000000..18bd0cc7c --- /dev/null +++ b/account_banking_sepa_credit_transfer/data/pain.001.001.05.xsd @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 000000000..31d851edb --- /dev/null +++ b/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml @@ -0,0 +1,45 @@ + + + + + + + + SEPA Credit Transfer v05 + pain.001.001.05 + payment + + + + + + SEPA Credit Transfer v04 + pain.001.001.04 + payment + + + + + + SEPA Credit Transfer v03 (recommended) + pain.001.001.03 + payment + + + + + + SEPA Credit Transfer v02 + pain.001.001.02 + payment + + + + + + + diff --git a/account_banking_sepa_credit_transfer/demo/sepa_credit_transfer_demo.xml b/account_banking_sepa_credit_transfer/demo/sepa_credit_transfer_demo.xml new file mode 100644 index 000000000..77abf1b34 --- /dev/null +++ b/account_banking_sepa_credit_transfer/demo/sepa_credit_transfer_demo.xml @@ -0,0 +1,15 @@ + + + + + + + SEPA Credit Transfer La Banque Postale + + + + + + + + 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 000000000..38feaadd4 --- /dev/null +++ b/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot @@ -0,0 +1,207 @@ +# 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 7.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" +"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 +#: selection:banking.export.sepa.wizard,state:0 +msgid "Create" +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 +#: field:banking.export.sepa,filename:0 +#: field:banking.export.sepa.wizard,filename:0 +msgid "Filename" +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 +#: 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 +#: 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,batch_booking:0 +#: field:banking.export.sepa.wizard,batch_booking:0 +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 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 +#: 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 +#: 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.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 +#: 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 +#: 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 "" + +#. 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 +#: 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 +#: view:banking.export.sepa.wizard:0 +msgid "SEPA File Generation" +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:246 +#, 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" +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: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 +#: 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" +msgstr "" + +#. 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 "" + +#. 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 +#: 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 +#: field:banking.export.sepa,create_date:0 +msgid "Generation Date" +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 000000000..b4bb7235f --- /dev/null +++ b/account_banking_sepa_credit_transfer/i18n/fr.po @@ -0,0 +1,365 @@ +# 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 7.0\n" +"Report-Msgid-Bugs-To: \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: 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 +msgid "Create" +msgstr "Créer" + +#. 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 +#: 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 +#: 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 +#: 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 +#: 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,batch_booking:0 +#: field:banking.export.sepa.wizard,batch_booking:0 +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 File" +msgstr "Exporte le fichier de virement SEPA" + +#. 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 +#: 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 +#: 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.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 +#: 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 +#: 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 :" + +#. 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 +#: 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 +#: view:banking.export.sepa.wizard:0 +msgid "SEPA File Generation" +msgstr "Génération du fichier SEPA" + +#. 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: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')." + +#. 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 +#: 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: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'." + +#. 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 +#: view:banking.export.sepa:0 +msgid "General Information" +msgstr "Informations générales" + +#. 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 "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 +#: 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 +#: field:banking.export.sepa,create_date:0 +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 new file mode 100644 index 000000000..541366292 --- /dev/null +++ b/account_banking_sepa_credit_transfer/i18n/nl.po @@ -0,0 +1,356 @@ +# 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 7.0\n" +"Report-Msgid-Bugs-To: \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: 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 +msgid "Create" +msgstr "Aanmaken" + +#. 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 "Aantal transacties" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa,filename:0 +#: field:banking.export.sepa.wizard,filename:0 +msgid "Filename" +msgstr "Bestandsnaam" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa,state:0 +#: field:banking.export.sepa.wizard,state:0 +msgid "State" +msgstr "Status" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa,state:0 +msgid "Draft" +msgstr "Concept" + +#. 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 "" +"Volg service level: Transactie kosten worden toegepast volgens de " +"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. 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 +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Shared" +msgstr "Gedeeld" + +#. 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 "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 File" +msgstr "Exporteer SEPA Credit Transfer bestand" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa:0 +msgid "SEPA Credit Transfer" +msgstr "SEPA overschrijving" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,state:0 +msgid "Finish" +msgstr "Gereed" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa,state:0 +msgid "Reconciled" +msgstr "Afgeletterd" + +#. 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 "Volg service level" + +#. 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 "Op rekening van schuldeiser" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:0 +msgid "Validate" +msgstr "Bevestig" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:0 +msgid "Generate" +msgstr "Genereer" + +#. 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 "Op rekening van schuldenaar" + +#. 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:" +msgstr "Fout:" + +#. 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 "Totaalbedrag" + +#. 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 "Kostenverdeling" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:0 +msgid "SEPA File Generation" +msgstr "SEPA bestand genereren" + +#. 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:246 +#, python-format +msgid "" +"Missing Bank Account on invoice '%s' (payment order line reference '%s')." +msgstr "" +"Ontbrekende bankrekening op factuur '%s' (betaalregel referentie '%s')" + +#. 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 "SEPA XML bestand" + +#. 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 "" +"Volg service level: Transactie kosten worden toegepast volgens de " +"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. 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: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 "" +"Betaal type code '%s' wordt niet ondersteund. De enige betaal type codes " +"voor SEPA credit boekingen zijn 'pain.001.001.02', 'pain.001.001.03' en " +"'pain.001.001.04'." + +#. 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 "Betaalopdrachten" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa:0 +msgid "General Information" +msgstr "Algemene informatie" + +#. 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 "SEPA Credit Transfer bestanden" + +#. 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 "" +"Indien aangevinkt zal het bankafschrift maar één debet regel weergeven voor " +"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 +#: field:banking.export.sepa.wizard,file:0 +msgid "File" +msgstr "Bestand" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:0 +msgid "Cancel" +msgstr "Annuleren" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa,create_date:0 +msgid "Generation Date" +msgstr "Aangemaakt op" + +#~ msgid "SEPA XML file" +#~ msgstr "SEPA XML bestand" + +#~ msgid "Number of transactions" +#~ msgstr "Aantal transacties" + +#~ msgid "" +#~ "This is the message identification of the entire SEPA XML file. 35 " +#~ "characters max." +#~ msgstr "" +#~ "Dit is een bericht identificatie van het gehele SEPA XML bestand. Maximaal " +#~ "35 karakters." + +#~ msgid "Prefered execution date" +#~ msgstr "Voorkeurs uitvoerdatum" + +#~ msgid "Generation date" +#~ msgstr "Aanmaakdatum" + +#~ msgid "Export SEPA Credit Transfer XML file" +#~ msgstr "Exporteer SEPA XML overschrijvingsbestand" + +#~ msgid "Message identification" +#~ msgstr "Bericht identificatie" + +#~ msgid "Total amount" +#~ msgstr "Totaal bedrag" + +#~ msgid "Borne by creditor" +#~ msgstr "Rekening van schuldeiser" + +#~ msgid "Payment orders" +#~ msgstr "Betaalopdrachten" + +#~ msgid "Generated SEPA Credit Transfer files" +#~ msgstr "Gegenereerde SEPA overschrijfbestanden" + +#~ msgid "SEPA XML file generation" +#~ msgstr "SEPA XML bestand generatie" + +#~ msgid "Reference for further communication" +#~ msgstr "Referentie voor verdere communicatie" + +#~ msgid "Processing details" +#~ msgstr "Verwerkings details" + +#~ msgid "Borne by debtor" +#~ msgstr "Rekening van schuldenaar" + +#~ msgid "Payment order" +#~ msgstr "Betaalopdracht" + +#~ msgid "Following service level" +#~ msgstr "Volg service level" + +#~ msgid "Charge bearer" +#~ msgstr "Kostenverdeling" + +#~ 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 "" +#~ "Gedeeld : De transactiekosten aan de verzender kant zijn voor de " +#~ "schuldeiser, transactiekosten aan de ontvanger kant zijn voor de schuldenaar " +#~ "(deze keuze wordt het meest gebruikt). 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. " +#~ "Volg service level: Transactie kosten worden toegepast volgens de " +#~ "afgesporken regels in het service level en/of schema." + +#~ msgid "Batch booking" +#~ msgstr "Batch boeking" + +#~ 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\"" 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 000000000..90e481210 --- /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 000000000..69b7d20ae --- /dev/null +++ b/account_banking_sepa_credit_transfer/models/account_banking_sepa.py @@ -0,0 +1,76 @@ +# -*- 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 +from unidecode import unidecode + + +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/security/ir.model.access.csv b/account_banking_sepa_credit_transfer/security/ir.model.access.csv new file mode 100644 index 000000000..96fda5eec --- /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/sepa_credit_transfer_demo.xml b/account_banking_sepa_credit_transfer/sepa_credit_transfer_demo.xml new file mode 100644 index 000000000..77abf1b34 --- /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/static/description/icon.svg b/account_banking_sepa_credit_transfer/static/description/icon.svg new file mode 100644 index 000000000..266ef8442 --- /dev/null +++ b/account_banking_sepa_credit_transfer/static/description/icon.svg @@ -0,0 +1,92 @@ + + + +image/svg+xmlCREDITTRANSFER + \ 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 new file mode 100644 index 0000000000000000000000000000000000000000..12ecf91ce177d6d36997bb6769f34ddd287a4465 GIT binary patch literal 6936 zcmV+z8|UPSP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*$` z7BD0^OCF&B02-J{L_t(|+RdAJcvbba_dk1|dCG9k$;rt)5C{em0)e0r5J9a|t@G5@ zYHy3RzP7!+-qyGJ`n2`-7WLk?)@rG(+S=P{2en#3D}tcN5HbS^gv|4JPR=~-v-kVQ ziGi4b;MDtj9-b#>+WgjcueE;P^<8TVe8OvOSypy=S=OdByJfLiugf>+)%iNDDkUys z6i|!+3PMmN5)4P;u5d)^34|gYqb~o+`o_LJhno8PKFR$FpTtFPyu5V7iqfoWEJj_G z-D)fw8ue>iJIBQSArHPl6j2nA6%Yjh1qA^CS&BN0Gz)oI$>e3FhC`89gWD56 z*x1zn;>&Lx+xNc~fOVz0DeKl1Zpm;a-H_q1tU6TRE7lzwK&??zT9U3B^S9UPSzKUa zO=)&lQ_H}QfBKt!PkpKYY`LXk>9XRi$Fnn%H@)!pCei6k;no}1V$f^&v{r3n4}X5? zFc+U+B&*cI?&{jEd!GOMk>j5@0N?yd)fcK(6+YV0GwwXl(8pb0zJLs8@~2{Sb!``w z75P)I<8hf6UaFy|XN=1?E*?5^V(6Rywe6ihpUpK@XY=JB+MK{VzH0GDGR7Z>5{^PRA`^{DXfz^%Fuy~3ykSyPjJPL) zpa_^vI!4F*WH^&qciv)N-q9rHW~5YYKEEi>6+F3Pa1i+;hrq^-sBgIF>gSzlmTUj` zYLj@^S2tp}n$ODEKu83&9hJroq8UMD!fZ)KrBZ>SpeQmP&jhmMM~?eZBsWUjg;^g% z6cg9*`6Ilw_c%FODXcEfo4WSFnoiDLT`=|fch4WdX3}6W>;C%ko>y<#vj^!T0r2DR zUi$2^V&`qo|Gi24`d2Spu**kd5En8Lb-AQia}h-m1qD!0WO?#$rT|bBW%8w*cn|RV z#)t&E(F!9NbaC7hK{Of_C)-De#^O}2$|o3#U^43H>2r~rZ3Wx*b%J={6qDMbe4*2ff z8*g5-BIl9qds0#Y9h^n|NGiXvE8eCkVh7Z$6iI zYrEBD=VU&1+chheEEs^&b8;S+WW^CxM3$YCHNWw)8g0rZ(lS=f$l`%OfDIS;;vc^pSZ(K$xr=J3G56EXZSQY#hD8fS|Gw4ozS-Dx{|+ zp;n3HWLdGM8Ug6;b&=^z#v2HeWYiQC<=gu9*LK&>=>eNJ7dT3nrr+Oua)hdLi{>>x zE^9D3F2d$XOuTx`9HF3DU zivx!{h{fWJjClb#|J=nKJvl0tmt@|*v0}-z7*(JCVtrZB-42^MyKB%V7UrkTX}m0h zF7*OT7AJ}-pBV?@xrE6z8RvUneHT>Fn{cxG)u; zKa3|-z?)IVl4eN8izNfbJhcf`!Se~C!n3wwH=C%>mpTA^&_M|T*Ikf;; znMt%P77L)@@ubZFATBF7(j3#jpJd^wUq4Gr%L%T#?kev3`nPFrPSiA2>)zo=!@em1 zIy$;&Y&^=p-0^t;I=i}QZfT{mawQ#oB8&0`%9dplmlZtT5M?FVQ~ys+mX)JTy<$~iI82)#IpN)+fHoIsM|EL)n1N|lK8Wu-X`_l;#=a$eroYHK?l znFc_HBl)_au>hsZa_6bX1uTyB3nDgd_e{aYYE7B(o<^f#ZDj?~NQ8IxzQ?lCa}zgY z{iS4NIC=B+zp~@?ot$^>YMjpWsT|qde1hugI;yMd09aXGidug?v9KGBT4HF}i`N$> zKi5W*C80v)W?Sj%92T?Eldc0EnM#5;TvocFAltgy69|hL8S|93+B{5_j58NH{s7@n z_>2kg>1Uo}X-NgER&QY2ub$y2Klw4ojvVC5D?Wo(t7UL-h?oBM8gKk#HyhShP5bR1 zo_~?=KX@~Hjq2gQn&1#{kggZ(PZ$<8SkmKFIlcUDl8#J|qYPFh<}CXTO3o-fM^n>KAg ztyV3#7I?pI=;-W1tJR`R3a5%96PM%IZB_&U#>QRPZ8o%875)7K!~^wc)Dn^;laZc` zR(mQTN|MasgRQb_BJh*@A9>^7MSv8uzRKkZvSjhxcUMt4FeNz`L{w&T|CE#@)N1t^ zBrk>Warcb(4SEBym^3Zv%Cd|os?h88WM^g2+t*J=XAcM>alt-$Oo~&i@D!UAF(v6m zi$zxjAg(RT%68bzW#OnS&R6Vc%|#1lYA%;+X8bRJ{SA+d;PZL$dZ$xmlgWtPZY4J- zn^-IcKyq?2vK&9<+GZnKtp-655Y%?!@q`bBqp_KJN2|qYvy@kyljjsG%5pa)S@c@t zJjN@EfH}En!N$i=+t~Ye)@rq#S@8))P!K*)C_!>^5-OF5*XzSzFwoxK$*o_wli`t3 z0Lm*i6A4F=V$!66Mq;vIinBzc)AwVuTF`1$`qitP7l{t1Wf6ecq@U;LOGcwLE(n0} zao3ERK&4V)v(4@Skw}E0p<#M@`VxjK3c+A#*02f&LnJ3#IB=+z3pP}dpO*u`D=+;P zwMLCbdzvUKSQ22UMS`Kov}-vW7GiOQEJsqIXx3>90o0ng<5OeISg`xM-R?7H|LGnx zK`0bLuh(I>+ek@G#^>|TS_!(`6O4_yXl_2iy7Skb3K6r3hK8g3`*(hLT18h%>u{g=|kRP=sWkJTvvW$CTVnOjgHa5B>joMrh1gjtj=;zV&MYUx?0E~=`%y55MmT@>{))n{N z_aNovWgI%No5P3p(AwHgW~P&${p3G+{1;Er(0GJMB+B;fZ!$PI%+`k=M52;1)jya~&jp#!Zk_z71wTIf;dNy5n0Y!xctga~MjxXQM z^0F$n@7PIOdk2+kR`R_Ee#FsZEi75Qi1BeZwRMd+GaU5v^x;TP5KD?2q&t#0a;%@+ z94k&o5^k4|lgImq#CTi|p03!;P6VU{#Q*4wB1utX91h2Vyhp3k5|77;#UxZJ6$ZU7 zQSx^8uxwev&7)BXwMspW)g?McVf2&Vk4bUVYBiBalrguD{5%_4tr~+~LsmvI1B0F^ zQ6sJ>ele~n!S`9yoIF4Zekk^roSckWy|C~x8Vop{=}55{Qanx|6sG!c9lq08VIUB| zY)<5(U@(NqlsM|5ktlH~PD8^n78T~8R;zKlJvi-VmMn6RIoZ1u1c7K&n$#v_;*uN` zL2-$Idm=FR@h15`)cJ3Y*+eWR;r05l zSj@b(V<-3B|0A-pG7=%Fyuar#A1pn5fhc-|W)jRW2)M*hDAuD^i-bbax%EHEGw;TI zK0o1bcn1Bo+2#fy!2m~ax!hCyJ`#zb$O_?b2$d?a(fqtzPMmDRJ>kJ%G@w$c$j!~d z7w}`ZS^3ACZ*#$h^DvoBq}grs^$#Y%PtoG@M~O|6pm&)%+DnrkJH~jNM3FZu5lOH*%=6e zz{$2wM1m|`oK8(cH?8d>)HQWeRFH->#e^&;l5`{-ZC4MEcuoTNymQC7TJR8y22rVJ zuNTI~#%E!F(~rN22@iMNu?2ujF8v%MBco(wr1R9apL6rAU&ib8v0_Cj4{!ZGLqo&- zpL@PTUT!uL8tzxM9k$C4#Q)Ymt0`Q-`OYum4$=12eWAXi;=ITfqQ(P}kxbaZj;HJ?RRWHxWU zAVFP?Mqd5f|8U2bZsqYOenTu4}8 zrlx5i6farKMHgR5U3~*9%9ba@%#|zn;X@D8)OeItD_7u1OXE;=Eg4QH&%f{@x88gm z;c%FpZ|!Au>(BV&7j7Uu-9c?#BWo&F@VTo#!#BQpKiA#(6$S@~&P&rK#Je}<&n4ns%BF%2YWHMni8L`C>gXQF?Ha}x)PtY~MM14rBZva= zc$|1#Mv65ke-r)OUhtKb)yStac;Sm-W6;6FmqtOrw1u=-781*8f<9^yZ$FSSXXeYZwiUO^z z{rG(0>Yx1TogYl=3-tC)yjYZHUp?450_8J%10}`INp(meEpIcTD9))0gECn+Osc}N zjL+vMuEa4K^iw*Y$z+_N3eUG{Ya6LpwF1TIAQDUPmg?#{Dl1pg($Y#nRvg15`-w#* zBq@%`sGa)#fy3<-WTnV8P5pnF(Hz}b-Lq|Y%-5Hnl_DQG)<4gY=*Bf%eby~)i^WWG zQW6@?ho2>kPl9c+n6X(?Cp{v;U|r(_XoVr<$=>*)f;5T>r`I8_5f5Hpq-R%k_ittZ zP+QyK?dWp<)^0V@($dF#H$({?!Q<}apS65`KO-Y!rxI>7gc$Ed6k*??c4`}X5-QU0 zsRX^}-4iS+u*uy$uBQ(jYV*$89zRsu@%YHNucxdyU4HBB=D8Ij5hCur1bxH*6aYLE zUdF~7{6NDpD*Bgggo}6<&;PrRg#u}RkA4*Bm zjniUR3&3u(5*7~k@xiRqSCcQkO` zsvNogXx~Ez4)nR^9g+F3U%m58Ysc7IRV#Dl7hXIx6;rdS#p);#_fCAC-cQ~5SR_cq zS3`zFBpjBgYwV%6p_>VB2(K?um>CQj-rawaY`aNr?{dBI)8Fj-?Sf{6Y8txk@pwZ+ z7giR?e|@EPe!WnXh`4t#I#{=$O#X4KKwuOi%^0;IGMy>t^=g)vWKo!(hFUF74Mz+P zdFbvQ!EQAU>~HM)*9FZ80W=;T9?#EB?OVDi?OLxlD4y&bXYnG(yg5N7594w7fhrZP z&WJL3et&RGZt6h(5HmvE-CbDpqof!Hu$a`eca750I!v0~LT|r|MFnYz9AMVt4@7wG zkMD8Wh9%JhHCmY$QIwYEHW<$Ki~f_5~&|KJ2A#hJ9W50jmlib1czV9*i> zM0o6%ySVwvQn{z!we5Rb-?(?){hle_BvsoRX-V13sw(o9)--er1H-;~!{Jmv5Hz9> zmE6a~_;G^%5yC+qv1piZL_()GOfxzd3=;5-5)KRz@U|239K|5^px5}&s1Yws zktCVYk}T3}W{gHHeFGB-01R5jTz($kwws%;ES0Y9IId_fOPR8*k8 z;iAiaUA{c)w*7V8;^0`2JMY*qrOKY|l4S*dP(o3}#1OSCVbF^+Cc8eknvV68?nuI9 z)Y9GOVp(wpK3^D%MNe&G4?EsyHrE-6ay-&fQ9wXIL=e*A2%sXE(D z9IWd;rd6}UXw(&7vVL)a2+EVszAHpy5{nAbK9ql%($!c+qv<&dhzE*nrT%1#6XLD7N?DI$ZPIinw{bu!v zUsPB3yFSYPKQ@1@s3=U@T$%f|+|1Jw{je82v*YR01q1u(7%5#(bz;dB6WoVvG&0+Pg_mx(4P7e ey#t@*{{BDaJT*%o#VE@F0000 + + + + + + account.banking.export.sepa.form + banking.export.sepa + +
+
+ +
+ + + + + + + + + + + + + + + + +
+
+
+ + + + account.banking.export.sepa.tree + banking.export.sepa + + + + + + + + + + + + + SEPA Credit Transfer Files + banking.export.sepa + form + tree,form + + + + + + + +
+
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 000000000..05230383b --- /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 . +# +############################################################################## + +from . 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 000000000..7b2c94ef9 --- /dev/null +++ b/account_banking_sepa_credit_transfer/wizard/export_sepa.py @@ -0,0 +1,279 @@ +# -*- 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.tools.translate import _ +from openerp import netsvc +from lxml import etree + + +class banking_export_sepa_wizard(orm.TransientModel): + _name = 'banking.export.sepa.wizard' + _inherit = ['banking.export.pain'] + _description = 'Export SEPA Credit Transfer File' + + _columns = { + 'state': fields.selection([ + ('create', 'Create'), + ('finish', 'Finish'), + ], '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."), + '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."), + '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 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!""" + if context is None: + context = {} + sepa_export = self.browse(cr, uid, ids[0], context=context) + pain_flavor = sepa_export.payment_order_ids[0].mode.type.code + convert_to_ascii = \ + sepa_export.payment_order_ids[0].mode.convert_to_ascii + 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' + elif pain_flavor == 'pain.001.001.05': + bic_xml_tag = 'BICFI' + name_maxsize = 140 + root_xml_tag = 'CstmrCdtTrfInitn' + else: + raise orm.except_orm( + _('Error:'), + _("Payment Type Code '%s' is not supported. The only " + "Payment Type Codes supported for SEPA Credit Transfers " + "are 'pain.001.001.02', 'pain.001.001.03', " + "'pain.001.001.04' and 'pain.001.001.05'.") % + pain_flavor) + 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, + } + 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'] + # A. Group header + 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_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: + total_amount = total_amount + payment_order.total + for line in payment_order.line_ids: + priority = line.priority + if payment_order.date_prefered == 'due': + requested_date = line.ml_maturity_date or today + elif payment_order.date_prefered == 'fixed': + requested_date = payment_order.date_scheduled or today + else: + requested_date = today + key = (requested_date, priority) + if key in lines_per_group: + lines_per_group[key].append(line) + else: + 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_date}, context=context) + for (requested_date, priority), lines in lines_per_group.items(): + # B. Payment info + 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}, + gen_args, context=context) + charge_bearer_2_24 = etree.SubElement(payment_info_2_0, 'ChrgBr') + charge_bearer_2_24.text = sepa_export.charge_bearer + transactions_count_2_4 = 0 + amount_control_sum_2_5 = 0.0 + for line in lines: + transactions_count_1_6 += 1 + transactions_count_2_4 += 1 + # C. Credit Transfer Transaction Info + credit_transfer_transaction_info_2_27 = etree.SubElement( + payment_info_2_0, 'CdtTrfTxInf') + payment_identification_2_28 = etree.SubElement( + credit_transfer_transaction_info_2_27, 'PmtId') + end2end_identification_2_30 = etree.SubElement( + payment_identification_2_28, 'EndToEndId') + end2end_identification_2_30.text = self._prepare_field( + cr, uid, 'End to End Identification', 'line.name', + {'line': line}, 35, gen_args=gen_args, + context=context) + currency_name = self._prepare_field( + cr, uid, 'Currency Code', 'line.currency.name', + {'line': line}, 3, gen_args=gen_args, + context=context) + amount_2_42 = etree.SubElement( + credit_transfer_transaction_info_2_27, 'Amt') + instructed_amount_2_43 = etree.SubElement( + amount_2_42, 'InstdAmt', Ccy=currency_name) + 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 + if not line.bank_id: + raise orm.except_orm( + _('Error:'), + _("Missing Bank Account on invoice '%s' (payment " + "order line reference '%s').") + % (line.ml_inv_ref.number, line.name)) + 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) + 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 + if pain_flavor in pain_03_to_05: + nb_of_transactions_1_6.text = str(transactions_count_1_6) + control_sum_1_7.text = '%.2f' % amount_control_sum_1_7 + else: + nb_of_transactions_1_6.text = str(transactions_count_1_6) + control_sum_1_7.text = '%.2f' % amount_control_sum_1_7 + 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 file: just drop the file""" + sepa_export = self.browse(cr, uid, ids[0], context=context) + self.pool['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 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 + reconciliation. + """ + sepa_export = self.browse(cr, uid, ids[0], context=context) + self.pool['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, 'done', cr) + return {'type': 'ir.actions.act_window_close'} 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 000000000..c85acf454 --- /dev/null +++ b/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml @@ -0,0 +1,37 @@ + + + + + + + banking.export.sepa.wizard.view + banking.export.sepa.wizard + +
+ + + + + + + + + + + + + +
+
+ +
+