From fcf5ceb1e37f9e3e57f772570d6f03f8365243f7 Mon Sep 17 00:00:00 2001
From: Alexis de Lattre
Date: Sat, 3 Aug 2013 01:12:36 +0200
Subject: [PATCH 001/118] Add module account_banking_sepa_direct_debit that
implements pain.008.001.02, pain.008.001.03 and pain.008.001.04. This module
is not ready yet : the management of mandates is still missing. I am
currently trying to get more information about these mandates to decide what
is the best implemtation of the data model of the mandates (O2M on
res.partner ? O2M os res.partner.bank ?).
---
account_banking_sepa_direct_debit/__init__.py | 26 +
.../__openerp__.py | 50 +
.../account_banking_sdd.py | 77 ++
.../account_banking_sdd_view.xml | 83 ++
account_banking_sepa_direct_debit/company.py | 75 ++
.../company_view.xml | 22 +
.../data/pain.008.001.02.xsd | 879 +++++++++++++++++
.../data/pain.008.001.03.xsd | 925 ++++++++++++++++++
.../data/pain.008.001.04.xsd | 892 +++++++++++++++++
.../data/payment_type_sdd.xml | 37 +
.../security/ir.model.access.csv | 2 +
.../wizard/__init__.py | 23 +
.../wizard/export_sdd.py | 391 ++++++++
.../wizard/export_sdd_view.xml | 41 +
14 files changed, 3523 insertions(+)
create mode 100644 account_banking_sepa_direct_debit/__init__.py
create mode 100644 account_banking_sepa_direct_debit/__openerp__.py
create mode 100644 account_banking_sepa_direct_debit/account_banking_sdd.py
create mode 100644 account_banking_sepa_direct_debit/account_banking_sdd_view.xml
create mode 100644 account_banking_sepa_direct_debit/company.py
create mode 100644 account_banking_sepa_direct_debit/company_view.xml
create mode 100644 account_banking_sepa_direct_debit/data/pain.008.001.02.xsd
create mode 100644 account_banking_sepa_direct_debit/data/pain.008.001.03.xsd
create mode 100644 account_banking_sepa_direct_debit/data/pain.008.001.04.xsd
create mode 100644 account_banking_sepa_direct_debit/data/payment_type_sdd.xml
create mode 100644 account_banking_sepa_direct_debit/security/ir.model.access.csv
create mode 100644 account_banking_sepa_direct_debit/wizard/__init__.py
create mode 100644 account_banking_sepa_direct_debit/wizard/export_sdd.py
create mode 100644 account_banking_sepa_direct_debit/wizard/export_sdd_view.xml
diff --git a/account_banking_sepa_direct_debit/__init__.py b/account_banking_sepa_direct_debit/__init__.py
new file mode 100644
index 000000000..bda7501b7
--- /dev/null
+++ b/account_banking_sepa_direct_debit/__init__.py
@@ -0,0 +1,26 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# SEPA Direct Debit module for OpenERP
+# Copyright (C) 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 company
+import wizard
+import account_banking_sdd
+
diff --git a/account_banking_sepa_direct_debit/__openerp__.py b/account_banking_sepa_direct_debit/__openerp__.py
new file mode 100644
index 000000000..fc329a073
--- /dev/null
+++ b/account_banking_sepa_direct_debit/__openerp__.py
@@ -0,0 +1,50 @@
+##############################################################################
+#
+# SEPA Direct Debit module for OpenERP
+# Copyright (C) 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 Direct Debit',
+ 'summary': 'Create SEPA XML files for Direct Debit',
+ 'version': '0.1',
+ 'license': 'AGPL-3',
+ 'author': 'Akretion',
+ 'website': 'http://www.akretion.com',
+ 'category': 'Banking addons',
+ 'depends': ['account_direct_debit'],
+ 'data': [
+ 'account_banking_sdd_view.xml',
+ 'company_view.xml',
+ 'wizard/export_sdd_view.xml',
+ 'data/payment_type_sdd.xml',
+ 'security/ir.model.access.csv',
+ ],
+ 'description': '''
+Module to export direct debit 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 Direct Debit (SDD), more specifically PAIN versions 008.001.02, 008.001.03 and 008.001.04. It is part of the ISO 20022 standard, available on http://www.iso20022.org.
+
+The Implementation Guidelines for SEPA Direct Debit published by the European Payments Council (http://http://www.europeanpaymentscouncil.eu) use PAIN version 008.001.02. So if you don't know which version your bank supports, you should try version 008.001.02 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_direct_debit/account_banking_sdd.py b/account_banking_sepa_direct_debit/account_banking_sdd.py
new file mode 100644
index 000000000..aa08918a2
--- /dev/null
+++ b/account_banking_sepa_direct_debit/account_banking_sdd.py
@@ -0,0 +1,77 @@
+##############################################################################
+#
+# SEPA Direct Debit module for OpenERP
+# Copyright (C) 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
+import time
+from openerp.tools.translate import _
+from openerp.addons.decimal_precision import decimal_precision as dp
+
+
+class banking_export_sdd(orm.Model):
+ '''SEPA Direct Debit export'''
+ _name = 'banking.export.sdd'
+ _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] = 'sdd_' + (sepa_file.msg_identification or '') + '.xml'
+ return res
+
+ _columns = {
+ 'payment_order_ids': fields.many2many(
+ 'payment.order',
+ 'account_payment_order_sdd_rel',
+ 'banking_export_sepa_id', 'account_order_id',
+ 'Payment orders',
+ readonly=True),
+ 'requested_collec_date': fields.date('Requested collection 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 credit line for all the direct debits of the SEPA XML file ; if false, the bank statement will display one credit line per direct debit 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': fields.date.context_today,
+ 'state': 'draft',
+ }
diff --git a/account_banking_sepa_direct_debit/account_banking_sdd_view.xml b/account_banking_sepa_direct_debit/account_banking_sdd_view.xml
new file mode 100644
index 000000000..6dcfb903f
--- /dev/null
+++ b/account_banking_sepa_direct_debit/account_banking_sdd_view.xml
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+ account.banking.export.sdd.form
+ banking.export.sdd
+
+
+
+
+
+
+
+ account.banking.export.sdd.tree
+ banking.export.sdd
+
+
+
+
+
+
+
+
+
+
+
+
+ Generated SEPA Direct Debit XML files
+ banking.export.sdd
+ form
+ tree,form
+
+
+
+
+
+
+
+
+
diff --git a/account_banking_sepa_direct_debit/company.py b/account_banking_sepa_direct_debit/company.py
new file mode 100644
index 000000000..d85fc6fd7
--- /dev/null
+++ b/account_banking_sepa_direct_debit/company.py
@@ -0,0 +1,75 @@
+##############################################################################
+#
+# SEPA Direct Debit module for OpenERP
+# Copyright (C) 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
+import logging
+
+logger = logging.getLogger(__name__)
+
+class res_company(orm.Model):
+ _inherit = 'res.company'
+
+ _columns = {
+ 'sepa_creditor_identifier': fields.char('SEPA Creditor Identifier', size=35,
+ help="Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n- your country ISO code (2 letters)\n- a 2-digits checkum\n- a 3-letters business code\n- a country-specific identifier"),
+ }
+
+
+ def is_sepa_creditor_identifier_valid(self, cr, uid, sepa_creditor_identifier, context=None):
+ """Check if SEPA Creditor Identifier is valid
+ @param sepa_creditor_identifier: SEPA Creditor Identifier as str or unicode
+ @return: True if valid, False otherwise
+ """
+ if not isinstance(sepa_creditor_identifier, (str, unicode)):
+ return False
+ try:
+ sci_str = str(sepa_creditor_identifier)
+ except:
+ logger.warning("SEPA Creditor ID should contain only ASCII caracters.")
+ return False
+ sci = sci_str.lower()
+ if len(sci) < 9:
+ return False
+ before_replacement = sci[7:] + sci[0:2] + '00'
+ logger.debug("SEPA ID check before_replacement = %s" % before_replacement)
+ after_replacement = ''
+ for char in before_replacement:
+ if char.isalpha():
+ after_replacement += str(ord(char)-87)
+ else:
+ after_replacement += char
+ logger.debug("SEPA ID check after_replacement = %s" % after_replacement)
+ if int(sci[2:4]) == (98 - (int(after_replacement) % 97)):
+ return True
+ else:
+ return False
+
+
+ def _check_sepa_creditor_identifier(self, cr, uid, ids):
+ for company in self.browse(cr, uid, ids):
+ if company.sepa_creditor_identifier:
+ if not self.is_sepa_creditor_identifier_valid(cr, uid, company.sepa_creditor_identifier):
+ return False
+ return True
+
+ _constraints = [
+ (_check_sepa_creditor_identifier, "Invalid SEPA Creditor Identifier.", ['sepa_creditor_identifier']),
+ ]
diff --git a/account_banking_sepa_direct_debit/company_view.xml b/account_banking_sepa_direct_debit/company_view.xml
new file mode 100644
index 000000000..7691844c1
--- /dev/null
+++ b/account_banking_sepa_direct_debit/company_view.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ sepa_direct_debit.res.company.form
+ res.company
+
+
+
+
+
+
+
+
+
+
diff --git a/account_banking_sepa_direct_debit/data/pain.008.001.02.xsd b/account_banking_sepa_direct_debit/data/pain.008.001.02.xsd
new file mode 100644
index 000000000..633597256
--- /dev/null
+++ b/account_banking_sepa_direct_debit/data/pain.008.001.02.xsd
@@ -0,0 +1,879 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/account_banking_sepa_direct_debit/data/pain.008.001.03.xsd b/account_banking_sepa_direct_debit/data/pain.008.001.03.xsd
new file mode 100644
index 000000000..73d894379
--- /dev/null
+++ b/account_banking_sepa_direct_debit/data/pain.008.001.03.xsd
@@ -0,0 +1,925 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/account_banking_sepa_direct_debit/data/pain.008.001.04.xsd b/account_banking_sepa_direct_debit/data/pain.008.001.04.xsd
new file mode 100644
index 000000000..93806815a
--- /dev/null
+++ b/account_banking_sepa_direct_debit/data/pain.008.001.04.xsd
@@ -0,0 +1,892 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/account_banking_sepa_direct_debit/data/payment_type_sdd.xml b/account_banking_sepa_direct_debit/data/payment_type_sdd.xml
new file mode 100644
index 000000000..5ce4b5b1b
--- /dev/null
+++ b/account_banking_sepa_direct_debit/data/payment_type_sdd.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+ SEPA Direct Debit v02
+ pain.008.001.02
+
+
+ payment
+
+
+
+ SEPA Direct Debit v03
+ pain.008.001.03
+
+
+ payment
+
+
+
+ SEPA Direct Debit v04
+ pain.008.001.04
+
+
+ payment
+
+
+
+
+
+
diff --git a/account_banking_sepa_direct_debit/security/ir.model.access.csv b/account_banking_sepa_direct_debit/security/ir.model.access.csv
new file mode 100644
index 000000000..0cd579511
--- /dev/null
+++ b/account_banking_sepa_direct_debit/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_sdd","Full access on banking.export.sdd","model_banking_export_sdd","account_payment.group_account_payment",1,1,1,1
diff --git a/account_banking_sepa_direct_debit/wizard/__init__.py b/account_banking_sepa_direct_debit/wizard/__init__.py
new file mode 100644
index 000000000..169d0b13d
--- /dev/null
+++ b/account_banking_sepa_direct_debit/wizard/__init__.py
@@ -0,0 +1,23 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# SEPA Direct Debit module for OpenERP
+# Copyright (C) 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_sdd
diff --git a/account_banking_sepa_direct_debit/wizard/export_sdd.py b/account_banking_sepa_direct_debit/wizard/export_sdd.py
new file mode 100644
index 000000000..60456ab1a
--- /dev/null
+++ b/account_banking_sepa_direct_debit/wizard/export_sdd.py
@@ -0,0 +1,391 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# SEPA Direct Debit module for OpenERP
+# Copyright (C) 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
+import base64
+from datetime import datetime, timedelta
+from openerp.tools.translate import _
+from openerp import tools, netsvc
+from lxml import etree
+import logging
+
+_logger = logging.getLogger(__name__)
+
+
+class banking_export_sdd_wizard(orm.TransientModel):
+ _name = 'banking.export.sdd.wizard'
+ _description = 'Export SEPA Direct Debit 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."),
+ 'requested_collec_date': fields.date('Requested collection date',
+ help='This is the date on which the collection should be made by the bank. Please keep in mind that banks only execute on working days.'),
+ '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.sdd', 'SDD 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_sdd_payorders_rel', 'wizard_id', 'payment_order_id',
+ 'Payment orders', readonly=True),
+ }
+
+ _defaults = {
+ 'charge_bearer': 'SLEV',
+ 'state': 'create',
+ }
+
+
+ def _check_msg_identification(self, cr, uid, ids):
+ '''Check that the msg_identification is unique'''
+ for export_sdd in self.browse(cr, uid, ids):
+ res = self.pool.get('banking.export.sdd').search(cr, uid,
+ [('msg_identification', '=', export_sdd.msg_identification)])
+ if len(res) > 1:
+ return False
+ return True
+
+
+ _constraints = [
+ (_check_msg_identification, "The field 'Message Identification' should be uniue. Another SEPA Direct Debit file already exists with the same 'Message Identification'.", ['msg_identification'])
+ ]
+
+
+ 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({
+ 'payment_order_ids': [[6, 0, payment_order_ids]],
+ })
+ return super(banking_export_sdd_wizard, self).create(cr, uid,
+ vals, context=context)
+
+
+ def _prepare_field(self, cr, uid, field_name, field_value, max_size=0, sepa_export=False, line=False, context=None):
+ try:
+ value = eval(field_value)
+ except:
+ 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 '%s' is a(n) %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 create_sepa(self, cr, uid, ids, context=None):
+ '''
+ Creates the SEPA Direct Debit file. That's the important code !
+ '''
+ payment_order_obj = self.pool.get('payment.order')
+
+ sepa_export = self.browse(cr, uid, ids[0], context=context)
+
+ pain_flavor = sepa_export.payment_order_ids[0].mode.type.code
+ if pain_flavor == 'pain.008.001.02':
+ bic_xml_tag = 'BIC'
+ name_maxsize = 70
+ root_xml_tag = 'CstmrDrctDbtInitn'
+ elif pain_flavor == 'pain.008.001.03':
+ bic_xml_tag = 'BICFI'
+ name_maxsize = 140
+ root_xml_tag = 'CstmrDrctDbtInitn'
+ elif pain_flavor == 'pain.008.001.04':
+ bic_xml_tag = 'BICFI'
+ name_maxsize = 140
+ root_xml_tag = 'CstmrDrctDbtInitn'
+ else:
+ raise orm.except_orm(_('Error :'), _("Payment Type Code '%s' is not supported. The only Payment Type Code supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and 'pain.008.001.04'.") % pain_flavor)
+ if sepa_export.requested_collec_date:
+ my_requested_collec_date = sepa_export.requested_collec_date
+ else:
+ my_requested_collec_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)
+
+ my_company_name = self._prepare_field(cr, uid, 'Company Name',
+ 'sepa_export.payment_order_ids[0].company_id.name',
+ name_maxsize, sepa_export, 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 = sepa_export.msg_identification
+ 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')
+ nb_of_transactions_1_6 = etree.SubElement(group_header_1_0, 'NbOfTxs')
+ control_sum_1_7 = etree.SubElement(group_header_1_0, 'CtrlSum')
+ 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
+
+ # 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 = sepa_export.msg_identification
+ payment_method_2_2 = etree.SubElement(payment_info_2_0, 'PmtMtd')
+ payment_method_2_2.text = 'DD'
+ if pain_flavor in ['pain.008.001.02', 'pain.008.001.03', 'pain.008.001.04']:
+ # batch_booking is in "Payment Info" with pain.008.001.02/03
+ 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 Core Direct Debit 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
+ if pain_flavor in ['pain.008.001.02', 'pain.008.001.03', 'pain.008.001.04']:
+ 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')
+ 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'
+ local_instrument_2_11 = etree.SubElement(payment_type_info_2_6, 'LclInstrm')
+ local_instr_code_2_12 = etree.SubElement(local_instrument_2_11, 'Cd')
+ local_instr_code_2_12.text = 'CORE'
+ # TODO : 2.14 Sequence Type MANDATORY => I set it in section C (2.40)
+ # not B (2.14) so that we can have several different Sequence Types
+ # in the same XML file
+ # the Sample XML files show Seq type at C level
+ # BUT it may not be possible,
+ # 1. extract from CIC documentation :
+ # "Attention, les remises présentées devront être scindées par le créancier
+ # par type de séquence"
+ # In the guidelines, they only talk about B level
+ # If ‘Amendment Indicator’ is ‘true’,
+ # and ‘Original Debtor Agent’ is set to ‘SMNDA’,
+ # this message element must indicate ‘FRST
+ # 'FRST' = First ; 'OOFF' = One Off ; 'RCUR' : Recurring
+ # 'FNAL' = Final
+ requested_collec_date_2_18 = etree.SubElement(payment_info_2_0, 'ReqdColltnDt')
+ requested_collec_date_2_18.text = my_requested_collec_date
+ creditor_2_19 = etree.SubElement(payment_info_2_0, 'Cdtr')
+ creditor_name = etree.SubElement(creditor_2_19, 'Nm')
+ creditor_name.text = my_company_name
+ creditor_account_2_20 = etree.SubElement(payment_info_2_0, 'CdtrAcct')
+ creditor_account_id = etree.SubElement(creditor_account_2_20, 'Id')
+ creditor_account_iban = etree.SubElement(creditor_account_id, 'IBAN')
+ creditor_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, context=context),
+ context=context)
+
+ creditor_agent_2_21 = etree.SubElement(payment_info_2_0, 'CdtrAgt')
+ creditor_agent_institution = etree.SubElement(creditor_agent_2_21, 'FinInstnId')
+ creditor_agent_bic = etree.SubElement(creditor_agent_institution, bic_xml_tag)
+ creditor_agent_bic.text = self._prepare_field(cr, uid, 'Company BIC',
+ 'sepa_export.payment_order_ids[0].mode.bank_id.bank.bic',
+ sepa_export=sepa_export, context=context)
+
+ charge_bearer_2_24 = etree.SubElement(payment_info_2_0, 'ChrgBr')
+ charge_bearer_2_24.text = sepa_export.charge_bearer
+
+ creditor_scheme_identification_2_27 = etree.SubElement(payment_info_2_0, 'CdtrSchmeId')
+ csi_id = etree.SubElement(creditor_scheme_identification_2_27, 'Id')
+ csi_orgid = csi_id = etree.SubElement(csi_id, 'OrgId')
+ csi_other = etree.SubElement(csi_orgid, 'Othr')
+ csi_other_id = etree.SubElement(csi_other, 'Id')
+ csi_other_id.text = self._prepare_field(cr, uid,
+ 'SEPA Creditor Identifier',
+ 'sepa_export.payment_order_ids[0].company_id.sepa_creditor_identifier',
+ sepa_export=sepa_export, context=context)
+ csi_scheme_name = etree.SubElement(csi_other, 'SchmeNm')
+ csi_scheme_name_proprietary = etree.SubElement(csi_scheme_name, 'Prtry')
+ csi_scheme_name_proprietary.text = 'SEPA'
+
+ 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. Direct Debit Transaction Info
+ dd_transaction_info_2_28 = etree.SubElement(payment_info_2_0, 'DrctDbtTxInf')
+ payment_identification_2_29 = etree.SubElement(dd_transaction_info_2_28, 'PmtId')
+ # Instruction identification (2.30) is not mandatory, so we don't use it
+ end2end_identification_2_31 = etree.SubElement(payment_identification_2_29, 'EndToEndId')
+ end2end_identification_2_31.text = self._prepare_field(cr, uid,
+ 'End to End Identification', 'line.communication', 35,
+ line=line, context=context)
+ payment_type_2_32 = etree.SubElement(dd_transaction_info_2_28, 'PmtTpInf')
+ # Sequence Type : do we have to set it at Payment Info level ?
+ #sequence_type_2_40 = etree.SubElement(payment_type_2_32, 'SeqTp')
+ #sequence_type_2_40.text = 'FRST' # TODO
+ currency_name = self._prepare_field(cr, uid, 'Currency Code',
+ 'line.currency.name', 3, line=line, context=context)
+ instructed_amount_2_44 = etree.SubElement(dd_transaction_info_2_28, 'InstdAmt', Ccy=currency_name)
+ instructed_amount_2_44.text = '%.2f' % line.amount_currency
+ amount_control_sum += line.amount_currency
+ dd_transaction_2_46 = etree.SubElement(dd_transaction_info_2_28, 'DrctDbtTx')
+ mandate_related_info_2_47 = etree.SubElement(dd_transaction_2_46, 'MndtRltdInf')
+ mandate_identification_2_48 = etree.SubElement(mandate_related_info_2_47, 'MndtId')
+ mandate_identification_2_48.text = 'RUM1242' # TODO
+ mandate_signature_date_2_49 = etree.SubElement(mandate_related_info_2_47, 'DtOfSgntr')
+ mandate_signature_date_2_49.text = '2013-02-20' # TODO
+ # TODO look at 2.50 "Amendment Indicator
+ debtor_agent_2_70 = etree.SubElement(dd_transaction_info_2_28, 'DbtrAgt')
+ debtor_agent_institution = etree.SubElement(debtor_agent_2_70, 'FinInstnId')
+ debtor_agent_bic = etree.SubElement(debtor_agent_institution, bic_xml_tag)
+ debtor_agent_bic.text = self._prepare_field(cr, uid,
+ 'Customer BIC', 'line.bank_id.bank.bic',
+ line=line, context=context)
+ debtor_2_72 = etree.SubElement(dd_transaction_info_2_28, 'Dbtr')
+ debtor_name = etree.SubElement(debtor_2_72, 'Nm')
+ debtor_name.text = self._prepare_field(cr, uid,
+ 'Customer Name', 'line.partner_id.name',
+ name_maxsize, line=line, context=context)
+ debtor_account_2_73 = etree.SubElement(dd_transaction_info_2_28, 'DbtrAcct')
+ debtor_account_id = etree.SubElement(debtor_account_2_73, 'Id')
+ debtor_account_iban = etree.SubElement(debtor_account_id, 'IBAN')
+ debtor_account_iban.text = self._validate_iban(cr, uid,
+ self._prepare_field(cr, uid, 'Customer IBAN',
+ 'line.bank_id.acc_number', line=line,
+ context=context),
+ context=context)
+ remittance_info_2_88 = etree.SubElement(dd_transaction_info_2_28, '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_2_89 = etree.SubElement(remittance_info_2_88, 'Ustrd')
+ remittance_info_unstructured_2_89.text = self._prepare_field(cr, uid,
+ 'Remittance Information', 'line.communication',
+ 140, line=line, context=context)
+
+ if pain_flavor in ['pain.008.001.02', 'pain.008.001.03', 'pain.008.001.04']:
+ nb_of_transactions_1_6.text = nb_of_transactions_2_4.text = str(transactions_count)
+ control_sum_1_7.text = control_sum_2_5.text = '%.2f' % amount_control_sum
+
+
+ xml_string = etree.tostring(root, pretty_print=True, encoding='UTF-8', xml_declaration=True)
+ _logger.debug("Generated SDD XML file in format %s below" % pain_flavor)
+ _logger.debug(xml_string)
+ xsd_etree_obj = etree.parse(tools.file_open('account_banking_sepa_direct_debit/data/%s.xsd' % pain_flavor))
+ official_pain_schema = etree.XMLSchema(xsd_etree_obj)
+ _logger.debug("Printing %s XML Schema definition:" % pain_flavor)
+ _logger.debug(etree.tostring(xsd_etree_obj, pretty_print=True, encoding='UTF-8', xml_declaration=True))
+
+ try:
+ # If I do official_pain_schema.assertValid(root), then I get this
+ # error msg in the exception :
+ # 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 : Element 'Document': No matching global declaration available for the validation root.
+ # So I re-import the SEPA XML from the string, and give this
+ # so validation
+ # If you know how I can avoid that, please tell me -- Alexis
+ 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))
+
+ # CREATE the banking.export.sepa record
+ file_id = self.pool.get('banking.export.sdd').create(cr, uid,
+ {
+ 'msg_identification': sepa_export.msg_identification,
+ 'batch_booking': sepa_export.batch_booking,
+ 'charge_bearer': sepa_export.charge_bearer,
+ 'requested_collec_date': sepa_export.requested_collec_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 Direct Debit 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 Direct Debit file: just drop the file
+ '''
+ sepa_export = self.browse(cr, uid, ids[0], context=context)
+ self.pool.get('banking.export.sdd').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 Direct Debit file: 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.sdd').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'}
diff --git a/account_banking_sepa_direct_debit/wizard/export_sdd_view.xml b/account_banking_sepa_direct_debit/wizard/export_sdd_view.xml
new file mode 100644
index 000000000..8357e3f5d
--- /dev/null
+++ b/account_banking_sepa_direct_debit/wizard/export_sdd_view.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ banking.export.sdd.wizard.view
+ banking.export.sdd.wizard
+
+
+
+
+
+
+
From 2eb4892f3f005d1919a6314c8ccb625ab426ab04 Mon Sep 17 00:00:00 2001
From: Alexis de Lattre
Date: Tue, 15 Oct 2013 23:29:28 +0200
Subject: [PATCH 002/118] First implementation of mandates, but I still have a
lot of hesitation about the data model so it may change. Manage different
sequence types in the same file ; we just have to separate them in different
payment info blocks.
---
account_banking_sepa_direct_debit/__init__.py | 6 +-
.../__openerp__.py | 2 +
.../account_banking_sdd.py | 85 ++++++
.../account_banking_sdd_view.xml | 102 +++++++
.../account_payment_view.xml | 26 ++
account_banking_sepa_direct_debit/company.py | 6 +-
.../data/mandate_reference_sequence.xml | 21 ++
.../security/ir.model.access.csv | 2 +
.../wizard/__init__.py | 2 +-
.../wizard/export_sdd.py | 256 +++++++++++-------
10 files changed, 407 insertions(+), 101 deletions(-)
create mode 100644 account_banking_sepa_direct_debit/account_payment_view.xml
create mode 100644 account_banking_sepa_direct_debit/data/mandate_reference_sequence.xml
diff --git a/account_banking_sepa_direct_debit/__init__.py b/account_banking_sepa_direct_debit/__init__.py
index bda7501b7..ce46fda33 100644
--- a/account_banking_sepa_direct_debit/__init__.py
+++ b/account_banking_sepa_direct_debit/__init__.py
@@ -20,7 +20,7 @@
#
##############################################################################
-import company
-import wizard
-import account_banking_sdd
+from . import company
+from . import wizard
+from . import account_banking_sdd
diff --git a/account_banking_sepa_direct_debit/__openerp__.py b/account_banking_sepa_direct_debit/__openerp__.py
index fc329a073..2a44e1c06 100644
--- a/account_banking_sepa_direct_debit/__openerp__.py
+++ b/account_banking_sepa_direct_debit/__openerp__.py
@@ -29,9 +29,11 @@
'depends': ['account_direct_debit'],
'data': [
'account_banking_sdd_view.xml',
+ 'account_payment_view.xml',
'company_view.xml',
'wizard/export_sdd_view.xml',
'data/payment_type_sdd.xml',
+ 'data/mandate_reference_sequence.xml',
'security/ir.model.access.csv',
],
'description': '''
diff --git a/account_banking_sepa_direct_debit/account_banking_sdd.py b/account_banking_sepa_direct_debit/account_banking_sdd.py
index aa08918a2..7e5a5d0f3 100644
--- a/account_banking_sepa_direct_debit/account_banking_sdd.py
+++ b/account_banking_sepa_direct_debit/account_banking_sdd.py
@@ -75,3 +75,88 @@ class banking_export_sdd(orm.Model):
'generation_date': fields.date.context_today,
'state': 'draft',
}
+
+
+class sdd_mandate(orm.Model):
+ '''SEPA Direct Debit Mandate'''
+ _name = 'sdd.mandate'
+ _description = __doc__
+ _rec_name = 'unique_mandate_reference'
+ _order = 'signature_date desc'
+
+ _columns = {
+ 'partner_bank_id': fields.many2one('res.partner.bank', 'Bank Account'),
+ 'partner_id': fields.related(
+ 'partner_bank_id', 'partner_id', type='many2one',
+ relation='res.partner', string='Partner', readonly=True),
+ 'company_id': fields.many2one('res.company', 'Company', required=True),
+ 'unique_mandate_reference': fields.char(
+ 'Unique Mandate Reference', size=35, readonly=True),
+ 'type': fields.selection([
+ ('recurrent', 'Recurrent'),
+ ('oneoff', 'One-Off'),
+ ], 'Type of Mandate', required=True),
+ 'signature_date': fields.date('Date of Signature of the Mandate'),
+ 'scan': fields.binary('Scan of the mandate'),
+ 'last_debit_date': fields.date('Date of the Last Debit',
+ help="For recurrent mandates, this field is used to know if the SDD will be of type 'First' or 'Recurring'. For one-off mandates, this field is used to know if the SDD has already been used or not."),
+ 'state': fields.selection([
+ ('valid', 'Valid'),
+ ('expired', 'Expired'),
+ ], 'Mandate Status',
+ help="For a recurrent mandate, this field indicate if the mandate is still valid or if it has expired (a recurrent mandate expires if it's not used during 36 months). For a one-off mandate, it expires after its first use."),
+ }
+
+ _sql_constraints = [(
+ 'mandate_ref_company_uniq',
+ 'unique(unique_mandate_reference, company_id)',
+ 'A Mandate with the same reference already exists for this company !'
+ )]
+
+ _defaults = {
+ 'company_id': lambda self, cr, uid, context: \
+ self.pool['res.users'].browse(cr, uid, uid, context=context).\
+ company_id.id,
+ 'unique_mandate_reference': lambda self, cr, uid, context: \
+ self.pool['ir.sequence'].get(cr, uid, 'sdd.mandate.reference'),
+ 'state': 'valid',
+ }
+
+
+class res_partner_bank(orm.Model):
+ _inherit = 'res.partner.bank'
+
+ _columns = {
+ 'sdd_mandate_ids': fields.one2many(
+ 'sdd.mandate', 'partner_bank_id', 'SEPA Direct Debit Mandates'),
+ }
+
+
+class payment_line(orm.Model):
+ _inherit = 'payment.line'
+
+ _columns = {
+ 'sdd_mandate_id': fields.many2one(
+ 'sdd.mandate', 'SEPA Direct Debit Mandate'),
+ }
+
+ def _check_sdd_mandate(self, cr, uid, ids):
+ for payline in self.browse(cr, uid, ids):
+ if payline.sdd_mandate_id and not payline.bank_id:
+ raise orm.except_orm(
+ _('Error :'),
+ _("Missing bank account on the payment line with SEPA\
+ Direct Debit Mandate '%s'."
+ % payline.sdd_mandate_id.unique_mandate_reference))
+ elif payline.sdd_mandate_id and payline.bank_id and payline.sdd_mandate_id.partner_bank_id != payline.bank_id.id:
+ raise orm.except_orm(
+ _('Error :'),
+ _("The SEPA Direct Debit Mandate '%s' is not related??"))
+
+ return True
+
+# _constraints = [
+# (_check_sdd_mandate, "Mandate must be attached to bank account", ['bank_id', 'sdd_mandate_id']),
+# ]
+
+ # TODO inherit create to select the first mandate ??
diff --git a/account_banking_sepa_direct_debit/account_banking_sdd_view.xml b/account_banking_sepa_direct_debit/account_banking_sdd_view.xml
index 6dcfb903f..32a289081 100644
--- a/account_banking_sepa_direct_debit/account_banking_sdd_view.xml
+++ b/account_banking_sepa_direct_debit/account_banking_sdd_view.xml
@@ -79,5 +79,107 @@
view_mode="tree,form"
/>
+
+ sdd.mandate.form
+ sdd.mandate
+
+
+
+
+
+
+ sdd.mandate.tree
+ sdd.mandate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SEPA Direct Debit Mandate
+ sdd.mandate
+ form
+ tree,form
+ {'sdd_mandate_main_view': True}
+
+
+ Click to create a new SEPA Direct Debit Mandate.
+
+ The SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.
+
+
+
+
+
+
+
+ sdd.mandate.res.partner.bank.form
+ res.partner.bank
+
+
+
+
+
+
+
+
+
+
+
+ sdd.mandate.res.partner.bank.tree
+ res.partner.bank
+
+
+
+
+
+
+
+
+
+
+ sdd.mandate.partner.form
+ res.partner
+
+
+
+
+
+
+
+
diff --git a/account_banking_sepa_direct_debit/account_payment_view.xml b/account_banking_sepa_direct_debit/account_payment_view.xml
new file mode 100644
index 000000000..795f30222
--- /dev/null
+++ b/account_banking_sepa_direct_debit/account_payment_view.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+ sdd.payment.order.form
+ payment.order
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/account_banking_sepa_direct_debit/company.py b/account_banking_sepa_direct_debit/company.py
index d85fc6fd7..aed40f64b 100644
--- a/account_banking_sepa_direct_debit/company.py
+++ b/account_banking_sepa_direct_debit/company.py
@@ -24,15 +24,16 @@ import logging
logger = logging.getLogger(__name__)
+
class res_company(orm.Model):
_inherit = 'res.company'
_columns = {
- 'sepa_creditor_identifier': fields.char('SEPA Creditor Identifier', size=35,
+ 'sepa_creditor_identifier': fields.char(
+ 'SEPA Creditor Identifier', size=35,
help="Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n- your country ISO code (2 letters)\n- a 2-digits checkum\n- a 3-letters business code\n- a country-specific identifier"),
}
-
def is_sepa_creditor_identifier_valid(self, cr, uid, sepa_creditor_identifier, context=None):
"""Check if SEPA Creditor Identifier is valid
@param sepa_creditor_identifier: SEPA Creditor Identifier as str or unicode
@@ -62,7 +63,6 @@ class res_company(orm.Model):
else:
return False
-
def _check_sepa_creditor_identifier(self, cr, uid, ids):
for company in self.browse(cr, uid, ids):
if company.sepa_creditor_identifier:
diff --git a/account_banking_sepa_direct_debit/data/mandate_reference_sequence.xml b/account_banking_sepa_direct_debit/data/mandate_reference_sequence.xml
new file mode 100644
index 000000000..6a3143cca
--- /dev/null
+++ b/account_banking_sepa_direct_debit/data/mandate_reference_sequence.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+ SDD Mandate Reference
+ sdd.mandate.reference
+
+
+
+ SDD Mandate Reference
+ sdd.mandate.reference
+ RUM
+
+
+
+
+
+
+
diff --git a/account_banking_sepa_direct_debit/security/ir.model.access.csv b/account_banking_sepa_direct_debit/security/ir.model.access.csv
index 0cd579511..cf78ffb59 100644
--- a/account_banking_sepa_direct_debit/security/ir.model.access.csv
+++ b/account_banking_sepa_direct_debit/security/ir.model.access.csv
@@ -1,2 +1,4 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_banking_export_sdd","Full access on banking.export.sdd","model_banking_export_sdd","account_payment.group_account_payment",1,1,1,1
+"access_sdd_mandate","Full access on sdd.mandate","model_sdd_mandate","account_payment.group_account_payment",1,1,1,1
+"access_sdd_mandate_read","Read access on sdd.mandate","model_sdd_mandate","base.group_user",1,0,0,0
diff --git a/account_banking_sepa_direct_debit/wizard/__init__.py b/account_banking_sepa_direct_debit/wizard/__init__.py
index 169d0b13d..3830e36d9 100644
--- a/account_banking_sepa_direct_debit/wizard/__init__.py
+++ b/account_banking_sepa_direct_debit/wizard/__init__.py
@@ -20,4 +20,4 @@
#
##############################################################################
-import export_sdd
+from . import export_sdd
diff --git a/account_banking_sepa_direct_debit/wizard/export_sdd.py b/account_banking_sepa_direct_debit/wizard/export_sdd.py
index 60456ab1a..3cc06e845 100644
--- a/account_banking_sepa_direct_debit/wizard/export_sdd.py
+++ b/account_banking_sepa_direct_debit/wizard/export_sdd.py
@@ -22,10 +22,10 @@
from openerp.osv import orm, fields
-import base64
-from datetime import datetime, timedelta
from openerp.tools.translate import _
from openerp import tools, netsvc
+import base64
+from datetime import datetime, timedelta
from lxml import etree
import logging
@@ -115,7 +115,7 @@ class banking_export_sdd_wizard(orm.TransientModel):
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 '%s' is a(n) %s. It should be a string or unicode.") % (field_name, type(value)))
+ 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:
@@ -175,90 +175,140 @@ class banking_export_sdd_wizard(orm.TransientModel):
initiating_party_name = etree.SubElement(initiating_party_1_8, 'Nm')
initiating_party_name.text = my_company_name
- # 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 = sepa_export.msg_identification
- payment_method_2_2 = etree.SubElement(payment_info_2_0, 'PmtMtd')
- payment_method_2_2.text = 'DD'
- if pain_flavor in ['pain.008.001.02', 'pain.008.001.03', 'pain.008.001.04']:
- # batch_booking is in "Payment Info" with pain.008.001.02/03
- 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 Core Direct Debit 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
- if pain_flavor in ['pain.008.001.02', 'pain.008.001.03', 'pain.008.001.04']:
- 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')
- 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'
- local_instrument_2_11 = etree.SubElement(payment_type_info_2_6, 'LclInstrm')
- local_instr_code_2_12 = etree.SubElement(local_instrument_2_11, 'Cd')
- local_instr_code_2_12.text = 'CORE'
- # TODO : 2.14 Sequence Type MANDATORY => I set it in section C (2.40)
- # not B (2.14) so that we can have several different Sequence Types
- # in the same XML file
- # the Sample XML files show Seq type at C level
- # BUT it may not be possible,
- # 1. extract from CIC documentation :
- # "Attention, les remises présentées devront être scindées par le créancier
- # par type de séquence"
- # In the guidelines, they only talk about B level
- # If ‘Amendment Indicator’ is ‘true’,
- # and ‘Original Debtor Agent’ is set to ‘SMNDA’,
- # this message element must indicate ‘FRST
- # 'FRST' = First ; 'OOFF' = One Off ; 'RCUR' : Recurring
- # 'FNAL' = Final
- requested_collec_date_2_18 = etree.SubElement(payment_info_2_0, 'ReqdColltnDt')
- requested_collec_date_2_18.text = my_requested_collec_date
- creditor_2_19 = etree.SubElement(payment_info_2_0, 'Cdtr')
- creditor_name = etree.SubElement(creditor_2_19, 'Nm')
- creditor_name.text = my_company_name
- creditor_account_2_20 = etree.SubElement(payment_info_2_0, 'CdtrAcct')
- creditor_account_id = etree.SubElement(creditor_account_2_20, 'Id')
- creditor_account_iban = etree.SubElement(creditor_account_id, 'IBAN')
- creditor_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, context=context),
- context=context)
-
- creditor_agent_2_21 = etree.SubElement(payment_info_2_0, 'CdtrAgt')
- creditor_agent_institution = etree.SubElement(creditor_agent_2_21, 'FinInstnId')
- creditor_agent_bic = etree.SubElement(creditor_agent_institution, bic_xml_tag)
- creditor_agent_bic.text = self._prepare_field(cr, uid, 'Company BIC',
- 'sepa_export.payment_order_ids[0].mode.bank_id.bank.bic',
- sepa_export=sepa_export, context=context)
-
- charge_bearer_2_24 = etree.SubElement(payment_info_2_0, 'ChrgBr')
- charge_bearer_2_24.text = sepa_export.charge_bearer
-
- creditor_scheme_identification_2_27 = etree.SubElement(payment_info_2_0, 'CdtrSchmeId')
- csi_id = etree.SubElement(creditor_scheme_identification_2_27, 'Id')
- csi_orgid = csi_id = etree.SubElement(csi_id, 'OrgId')
- csi_other = etree.SubElement(csi_orgid, 'Othr')
- csi_other_id = etree.SubElement(csi_other, 'Id')
- csi_other_id.text = self._prepare_field(cr, uid,
- 'SEPA Creditor Identifier',
- 'sepa_export.payment_order_ids[0].company_id.sepa_creditor_identifier',
- sepa_export=sepa_export, context=context)
- csi_scheme_name = etree.SubElement(csi_other, 'SchmeNm')
- csi_scheme_name_proprietary = etree.SubElement(csi_scheme_name, 'Prtry')
- csi_scheme_name_proprietary.text = 'SEPA'
-
- transactions_count = 0
+ transactions_count_1_6 = 0
total_amount = 0.0
- amount_control_sum = 0.0
+ amount_control_sum_1_7 = 0.0
+ first_recur_lines = {}
+ # key = sequence type ; value = list of lines as objects
# 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
+ transactions_count_1_6 += 1
+ if not line.sdd_mandate_id:
+ raise orm.except_orm(
+ _('Error:'),
+ _("Missing SEPA Direct Debit mandate on the payment line with partner '%s' and Invoice ref '%s'.")
+ % (line.partner_id.name,
+ line.ml_inv_ref.number))
+ if line.sdd_mandate_id.state != 'valid':
+ raise orm.except_orm(
+ _('Error:'),
+ _("The SEPA Direct Debit mandate with reference '%s' for partner '%s' has expired.")
+ % (line.sdd_mandate_id.unique_mandate_reference,
+ line.sdd_mandate_id.partner_id.name))
+
+ if not line.sdd_mandate_id.signature_date:
+ raise orm.except_orm(
+ _('Error:'),
+ _("Missing signature date on SEPA Direct Debit mandate with reference '%s' for partner '%s'.")
+ % (line.sdd_mandate_id.unique_mandate_reference,
+ line.sdd_mandate_id.partner_id.name))
+ elif line.sdd_mandate_id.signature_date > datetime.today().strftime('%Y-%m-%d'):
+ raise orm.except_orm(
+ _('Error:'),
+ _("The signature date on SEPA Direct Debit mandate with reference '%s' for partner '%s' is '%s', which is in the future !")
+ % (line.sdd_mandate_id.unique_mandate_reference,
+ line.sdd_mandate_id.partner_id.name,
+ line.sdd_mandate_id.signature_date))
+
+ if line.sdd_mandate_id.type == 'oneoff':
+ if not line.sdd_mandate_id.last_debit_date:
+ if first_recur_lines.get('OOFF'):
+ first_recur_lines['OOFF'].append(line)
+ else:
+ first_recur_lines['OOFF'] = [line]
+ else:
+ raise orm.except_orm(
+ _('Error :'),
+ _("The mandate with reference '%s' for partner '%s' has type set to 'One-Off' and it has a last debit date set to '%s', so we can't use it.")
+ % (line.sdd_mandate_id.unique_mandate_reference,
+ line.sdd_mandate_id.partner_id.name,
+ line.sdd_mandate_id.last_debit_date))
+ elif line.sdd_mandate_id.type == 'recurrent':
+ if line.sdd_mandate_id.last_debit_date:
+ if first_recur_lines.get('RCUR'):
+ first_recur_lines['RCUR'].append(line)
+ else:
+ first_recur_lines['RCUR'] = [line]
+ else:
+ if first_recur_lines.get('FRST'):
+ first_recur_lines['FRST'].append(line)
+ else:
+ first_recur_lines['FRST'] = [line]
+
+ for sequence_type, lines in first_recur_lines.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 = sepa_export.msg_identification
+ payment_method_2_2 = etree.SubElement(payment_info_2_0, 'PmtMtd')
+ payment_method_2_2.text = 'DD'
+ # batch_booking is in "Payment Info" with pain.008.001.02/03
+ batch_booking_2_3 = etree.SubElement(payment_info_2_0, 'BtchBookg')
+ batch_booking_2_3.text = str(sepa_export.batch_booking).lower()
+ # The "SEPA Core Direct Debit 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
+ 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')
+ 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'
+ local_instrument_2_11 = etree.SubElement(payment_type_info_2_6, 'LclInstrm')
+ local_instr_code_2_12 = etree.SubElement(local_instrument_2_11, 'Cd')
+ local_instr_code_2_12.text = 'CORE'
+ # 2.14 Sequence Type MANDATORY
+ # this message element must indicate ‘FRST
+ # 'FRST' = First ; 'OOFF' = One Off ; 'RCUR' : Recurring
+ # 'FNAL' = Final
+ sequence_type_2_14 = etree.SubElement(payment_type_info_2_6, 'SeqTp')
+ sequence_type_2_14.text = sequence_type
+
+ requested_collec_date_2_18 = etree.SubElement(payment_info_2_0, 'ReqdColltnDt')
+ requested_collec_date_2_18.text = my_requested_collec_date
+ creditor_2_19 = etree.SubElement(payment_info_2_0, 'Cdtr')
+ creditor_name = etree.SubElement(creditor_2_19, 'Nm')
+ creditor_name.text = my_company_name
+ creditor_account_2_20 = etree.SubElement(payment_info_2_0, 'CdtrAcct')
+ creditor_account_id = etree.SubElement(creditor_account_2_20, 'Id')
+ creditor_account_iban = etree.SubElement(creditor_account_id, 'IBAN')
+ creditor_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, context=context),
+ context=context)
+
+ creditor_agent_2_21 = etree.SubElement(payment_info_2_0, 'CdtrAgt')
+ creditor_agent_institution = etree.SubElement(creditor_agent_2_21, 'FinInstnId')
+ creditor_agent_bic = etree.SubElement(creditor_agent_institution, bic_xml_tag)
+ creditor_agent_bic.text = self._prepare_field(cr, uid, 'Company BIC',
+ 'sepa_export.payment_order_ids[0].mode.bank_id.bank.bic',
+ sepa_export=sepa_export, context=context)
+
+ charge_bearer_2_24 = etree.SubElement(payment_info_2_0, 'ChrgBr')
+ charge_bearer_2_24.text = sepa_export.charge_bearer
+
+ creditor_scheme_identification_2_27 = etree.SubElement(payment_info_2_0, 'CdtrSchmeId')
+ csi_id = etree.SubElement(creditor_scheme_identification_2_27, 'Id')
+ csi_orgid = csi_id = etree.SubElement(csi_id, 'OrgId')
+ csi_other = etree.SubElement(csi_orgid, 'Othr')
+ csi_other_id = etree.SubElement(csi_other, 'Id')
+ csi_other_id.text = self._prepare_field(cr, uid,
+ 'SEPA Creditor Identifier',
+ 'sepa_export.payment_order_ids[0].company_id.sepa_creditor_identifier',
+ sepa_export=sepa_export, context=context)
+ csi_scheme_name = etree.SubElement(csi_other, 'SchmeNm')
+ csi_scheme_name_proprietary = etree.SubElement(csi_scheme_name, 'Prtry')
+ csi_scheme_name_proprietary.text = 'SEPA'
+
+ transactions_count_2_4 = 0
+ amount_control_sum_2_5 = 0.0
+ for line in lines:
+ transactions_count_2_4 += 1
# C. Direct Debit Transaction Info
dd_transaction_info_2_28 = etree.SubElement(payment_info_2_0, 'DrctDbtTxInf')
payment_identification_2_29 = etree.SubElement(dd_transaction_info_2_28, 'PmtId')
@@ -268,20 +318,26 @@ class banking_export_sdd_wizard(orm.TransientModel):
'End to End Identification', 'line.communication', 35,
line=line, context=context)
payment_type_2_32 = etree.SubElement(dd_transaction_info_2_28, 'PmtTpInf')
- # Sequence Type : do we have to set it at Payment Info level ?
- #sequence_type_2_40 = etree.SubElement(payment_type_2_32, 'SeqTp')
- #sequence_type_2_40.text = 'FRST' # TODO
currency_name = self._prepare_field(cr, uid, 'Currency Code',
'line.currency.name', 3, line=line, context=context)
instructed_amount_2_44 = etree.SubElement(dd_transaction_info_2_28, 'InstdAmt', Ccy=currency_name)
instructed_amount_2_44.text = '%.2f' % line.amount_currency
- amount_control_sum += line.amount_currency
+ amount_control_sum_1_7 += line.amount_currency
+ amount_control_sum_2_5 += line.amount_currency
dd_transaction_2_46 = etree.SubElement(dd_transaction_info_2_28, 'DrctDbtTx')
mandate_related_info_2_47 = etree.SubElement(dd_transaction_2_46, 'MndtRltdInf')
mandate_identification_2_48 = etree.SubElement(mandate_related_info_2_47, 'MndtId')
- mandate_identification_2_48.text = 'RUM1242' # TODO
- mandate_signature_date_2_49 = etree.SubElement(mandate_related_info_2_47, 'DtOfSgntr')
- mandate_signature_date_2_49.text = '2013-02-20' # TODO
+ mandate_identification_2_48.text = self._prepare_field(
+ cr, uid, 'Unique Mandate Reference',
+ 'line.sdd_mandate_id.unique_mandate_reference',
+ 35, line=line, context=context)
+ mandate_signature_date_2_49 = etree.SubElement(
+ mandate_related_info_2_47, 'DtOfSgntr')
+ mandate_signature_date_2_49.text = self._prepare_field(
+ cr, uid, 'Mandate Signature Date',
+ 'line.sdd_mandate_id.signature_date', 10,
+ line=line, context=context)
+
# TODO look at 2.50 "Amendment Indicator
debtor_agent_2_70 = etree.SubElement(dd_transaction_info_2_28, 'DbtrAgt')
debtor_agent_institution = etree.SubElement(debtor_agent_2_70, 'FinInstnId')
@@ -308,10 +364,10 @@ class banking_export_sdd_wizard(orm.TransientModel):
remittance_info_unstructured_2_89.text = self._prepare_field(cr, uid,
'Remittance Information', 'line.communication',
140, line=line, context=context)
-
- if pain_flavor in ['pain.008.001.02', 'pain.008.001.03', 'pain.008.001.04']:
- nb_of_transactions_1_6.text = nb_of_transactions_2_4.text = str(transactions_count)
- control_sum_1_7.text = control_sum_2_5.text = '%.2f' % amount_control_sum
+ nb_of_transactions_2_4.text = str(transactions_count_2_4)
+ control_sum_2_5.text = '%.2f' % amount_control_sum_2_5
+ 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)
@@ -345,7 +401,7 @@ class banking_export_sdd_wizard(orm.TransientModel):
'charge_bearer': sepa_export.charge_bearer,
'requested_collec_date': sepa_export.requested_collec_date,
'total_amount': total_amount,
- 'nb_transactions': transactions_count,
+ 'nb_transactions': transactions_count_1_6,
'file': base64.encodestring(xml_string),
'payment_order_ids': [
(6, 0, [x.id for x in sepa_export.payment_order_ids])
@@ -374,13 +430,15 @@ class banking_export_sdd_wizard(orm.TransientModel):
Cancel the SEPA Direct Debit file: just drop the file
'''
sepa_export = self.browse(cr, uid, ids[0], context=context)
- self.pool.get('banking.export.sdd').unlink(cr, uid, sepa_export.file_id.id, context=context)
+ self.pool.get('banking.export.sdd').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 Direct Debit file: mark all payments in the file as 'sent'.
+ Write 'last debit date' on mandate and set oneoff mandate to expired
'''
sepa_export = self.browse(cr, uid, ids[0], context=context)
sepa_file = self.pool.get('banking.export.sdd').write(cr, uid,
@@ -388,4 +446,14 @@ class banking_export_sdd_wizard(orm.TransientModel):
wf_service = netsvc.LocalService('workflow')
for order in sepa_export.payment_order_ids:
wf_service.trg_validate(uid, 'payment.order', order.id, 'sent', cr)
+ mandate_ids = [line.sdd_mandate_id.id for line in order.line_ids]
+ self.pool['sdd.mandate'].write(
+ cr, uid, mandate_ids, {
+ 'last_debit_date': datetime.today().strftime('%Y-%m-%d')
+ },
+ context=context)
+ oneoff_mandate_ids = [line.sdd_mandate_id.id for line in order.line_ids if line.sdd_mandate_id.type == 'oneoff']
+ self.pool['sdd.mandate'].write(
+ cr, uid, oneoff_mandate_ids, {'state': 'expired'},
+ context=context)
return {'type': 'ir.actions.act_window_close'}
From 67ef15a5ce2f02e71c9682e97baa8a9c02ec9764 Mon Sep 17 00:00:00 2001
From: Alexis de Lattre
Date: Sat, 19 Oct 2013 17:29:17 +0200
Subject: [PATCH 003/118] correct parent menu entry Remove unused variables
---
account_banking_sepa_direct_debit/account_banking_sdd.py | 1 -
.../account_banking_sdd_view.xml | 2 +-
account_banking_sepa_direct_debit/wizard/export_sdd.py | 6 ++----
3 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/account_banking_sepa_direct_debit/account_banking_sdd.py b/account_banking_sepa_direct_debit/account_banking_sdd.py
index 7e5a5d0f3..55c5921fd 100644
--- a/account_banking_sepa_direct_debit/account_banking_sdd.py
+++ b/account_banking_sepa_direct_debit/account_banking_sdd.py
@@ -20,7 +20,6 @@
##############################################################################
from openerp.osv import orm, fields
-import time
from openerp.tools.translate import _
from openerp.addons.decimal_precision import decimal_precision as dp
diff --git a/account_banking_sepa_direct_debit/account_banking_sdd_view.xml b/account_banking_sepa_direct_debit/account_banking_sdd_view.xml
index 32a289081..2f0d64c9d 100644
--- a/account_banking_sepa_direct_debit/account_banking_sdd_view.xml
+++ b/account_banking_sepa_direct_debit/account_banking_sdd_view.xml
@@ -65,7 +65,7 @@
diff --git a/account_banking_sepa_direct_debit/wizard/export_sdd.py b/account_banking_sepa_direct_debit/wizard/export_sdd.py
index 3cc06e845..66e478188 100644
--- a/account_banking_sepa_direct_debit/wizard/export_sdd.py
+++ b/account_banking_sepa_direct_debit/wizard/export_sdd.py
@@ -127,8 +127,6 @@ class banking_export_sdd_wizard(orm.TransientModel):
'''
Creates the SEPA Direct Debit file. That's the important code !
'''
- payment_order_obj = self.pool.get('payment.order')
-
sepa_export = self.browse(cr, uid, ids[0], context=context)
pain_flavor = sepa_export.payment_order_ids[0].mode.type.code
@@ -441,11 +439,11 @@ class banking_export_sdd_wizard(orm.TransientModel):
Write 'last debit date' on mandate and set oneoff mandate to expired
'''
sepa_export = self.browse(cr, uid, ids[0], context=context)
- sepa_file = self.pool.get('banking.export.sdd').write(cr, uid,
+ self.pool.get('banking.export.sdd').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)
+ wf_service.trg_validate(uid, 'payment.order', order.id, 'done', cr)
mandate_ids = [line.sdd_mandate_id.id for line in order.line_ids]
self.pool['sdd.mandate'].write(
cr, uid, mandate_ids, {
From 2d5c618c0a0789453297465c91f84bac2f227d23 Mon Sep 17 00:00:00 2001
From: Alexis de Lattre
Date: Wed, 23 Oct 2013 00:25:06 +0200
Subject: [PATCH 004/118] 2 modifications following a real-life SDD with a
French bank: - convert accented chars to ascii chars (via the unidecode lib)
- use "PrvtId" instead of "OrgId" in the XML Use the sequence of
payment.order as the "Message identification" of the XML file (advantages :
it is unique, users can easily customize the sequence and users can easily
find the payment corresponding to the "Message Identification" in OpenERP).
It is also used as the Payment Identification, combined with the sequence
type. Use the sequence of payment.line in the "EndtoEnd Identification"
field. Reduce flake8 warnings.
---
account_banking_sepa_direct_debit/__init__.py | 1 -
.../account_banking_sdd.py | 50 +-
.../account_banking_sdd_view.xml | 3 +-
account_banking_sepa_direct_debit/company.py | 22 +-
.../data/mandate_reference_sequence.xml | 2 +-
.../account_banking_sepa_direct_debit.pot | 494 ++++++++++++++++++
.../wizard/export_sdd.py | 73 ++-
.../wizard/export_sdd_view.xml | 2 -
8 files changed, 567 insertions(+), 80 deletions(-)
create mode 100644 account_banking_sepa_direct_debit/i18n/account_banking_sepa_direct_debit.pot
diff --git a/account_banking_sepa_direct_debit/__init__.py b/account_banking_sepa_direct_debit/__init__.py
index ce46fda33..f852fb7bd 100644
--- a/account_banking_sepa_direct_debit/__init__.py
+++ b/account_banking_sepa_direct_debit/__init__.py
@@ -23,4 +23,3 @@
from . import company
from . import wizard
from . import account_banking_sdd
-
diff --git a/account_banking_sepa_direct_debit/account_banking_sdd.py b/account_banking_sepa_direct_debit/account_banking_sdd.py
index 55c5921fd..0a57ee839 100644
--- a/account_banking_sepa_direct_debit/account_banking_sdd.py
+++ b/account_banking_sepa_direct_debit/account_banking_sdd.py
@@ -22,18 +22,19 @@
from openerp.osv import orm, fields
from openerp.tools.translate import _
from openerp.addons.decimal_precision import decimal_precision as dp
+from unidecode import unidecode
class banking_export_sdd(orm.Model):
'''SEPA Direct Debit export'''
_name = 'banking.export.sdd'
_description = __doc__
- _rec_name = 'msg_identification'
+ _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):
- res[sepa_file.id] = 'sdd_' + (sepa_file.msg_identification or '') + '.xml'
+ res[sepa_file.id] = 'sdd_%s.xml' % (sepa_file.payment_order_ids[0].reference and unidecode(sepa_file.payment_order_ids[0].reference.replace('/', '-')) or 'error')
return res
_columns = {
@@ -43,13 +44,15 @@ class banking_export_sdd(orm.Model):
'banking_export_sepa_id', 'account_order_id',
'Payment orders',
readonly=True),
- 'requested_collec_date': fields.date('Requested collection 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,
+ 'requested_collec_date': fields.date(
+ 'Requested collection 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),
- 'batch_booking': fields.boolean('Batch booking', readonly=True,
+ 'batch_booking': fields.boolean(
+ 'Batch booking', readonly=True,
help="If true, the bank statement will display only one credit line for all the direct debits of the SEPA XML file ; if false, the bank statement will display one credit line per direct debit of the SEPA XML file."),
'charge_bearer': fields.selection([
('SHAR', 'Shared'),
@@ -58,15 +61,15 @@ class banking_export_sdd(orm.Model):
('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),
+ '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),
+ 'filename': fields.function(
+ _generate_filename, type='char', size=256,
+ string='Filename', readonly=True, store=True),
'state': fields.selection([
- ('draft', 'Draft'),
- ('sent', 'Sent'),
- ('done', 'Reconciled'),
+ ('draft', 'Draft'),
+ ('sent', 'Sent'),
+ ('done', 'Reconciled'),
], 'State', readonly=True),
}
@@ -97,7 +100,8 @@ class sdd_mandate(orm.Model):
], 'Type of Mandate', required=True),
'signature_date': fields.date('Date of Signature of the Mandate'),
'scan': fields.binary('Scan of the mandate'),
- 'last_debit_date': fields.date('Date of the Last Debit',
+ 'last_debit_date': fields.date(
+ 'Date of the Last Debit',
help="For recurrent mandates, this field is used to know if the SDD will be of type 'First' or 'Recurring'. For one-off mandates, this field is used to know if the SDD has already been used or not."),
'state': fields.selection([
('valid', 'Valid'),
@@ -113,10 +117,10 @@ class sdd_mandate(orm.Model):
)]
_defaults = {
- 'company_id': lambda self, cr, uid, context: \
+ 'company_id': lambda self, cr, uid, context:
self.pool['res.users'].browse(cr, uid, uid, context=context).\
company_id.id,
- 'unique_mandate_reference': lambda self, cr, uid, context: \
+ 'unique_mandate_reference': lambda self, cr, uid, context:
self.pool['ir.sequence'].get(cr, uid, 'sdd.mandate.reference'),
'state': 'valid',
}
@@ -143,15 +147,13 @@ class payment_line(orm.Model):
for payline in self.browse(cr, uid, ids):
if payline.sdd_mandate_id and not payline.bank_id:
raise orm.except_orm(
- _('Error :'),
- _("Missing bank account on the payment line with SEPA\
- Direct Debit Mandate '%s'."
- % payline.sdd_mandate_id.unique_mandate_reference))
+ _('Error:'),
+ _("Missing bank account on the payment line with SEPA Direct Debit Mandate '%s'.")
+ % payline.sdd_mandate_id.unique_mandate_reference)
elif payline.sdd_mandate_id and payline.bank_id and payline.sdd_mandate_id.partner_bank_id != payline.bank_id.id:
raise orm.except_orm(
- _('Error :'),
+ _('Error:'),
_("The SEPA Direct Debit Mandate '%s' is not related??"))
-
return True
# _constraints = [
diff --git a/account_banking_sepa_direct_debit/account_banking_sdd_view.xml b/account_banking_sepa_direct_debit/account_banking_sdd_view.xml
index 2f0d64c9d..8249da13e 100644
--- a/account_banking_sepa_direct_debit/account_banking_sdd_view.xml
+++ b/account_banking_sepa_direct_debit/account_banking_sdd_view.xml
@@ -14,7 +14,6 @@
\n"
+" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n"
+"
\n"
+" "
msgstr "
\n"
-" Pulse para crear un nuevo mandato de adeudo directo SEPA.\n"
-"
\n"
-" Un mandato de adeudo directo SEPA es un documento firmado por su cliente que le autoriza a realizar uno o más cobros directos en su cuenta bancaria, también conocidas como domiciliaciones.\n"
-"
\n"
-" "
+" Pulse para crear un nuevo mandato bancario.\n"
+"
\n"
+" Un mandato bancario es un documento firmado por su cliente que le da la autorización para hacer una o varias operaciones en su cuenta bancaria.\n"
+"
By signing this mandate form, you authorise (A)
+ to send instructions to your bank to debit your account and (B) your bank to
+ debit your account in accordance with the instructions from .
+
+
+
+
+
+
+ This mandate is only intended for business-to-business transactions.
+ You are not entitled to a refund from your bank after your account has
+ been debited, but you are entitled to request your bank
+ not to debit your account up until the day on which the payment is due.
+
+
+ As part of your rights, you are entitled to a refund from
+ your bank under the terms and conditions of your agreement
+ with your bank.
+ A refund must be claimed within 8 weeks starting from the date on which your account was debited.
+
+
+
+
+
+
+ To be completed by the debtor
+
+
Debtor's Name:
+
Address of the Debtor:
+
Postal Code - City - Town:
+
+ -
+ -
+
+
+
Country of the debtor:
+
Swift BIC (up to 8 or 11 characteres):
+
Account Number - IBAN:
+
Type of payment:
+
+ Recurrent
+ One-Off
+
+
Date - Location:
+
+
Signature of the debtor:
+
+
+
+
+
+
+
+
ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.
+
ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.
+ NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.
+ THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From 04cd3899763beea8b4fb5561c77a4a2a150ccc65 Mon Sep 17 00:00:00 2001
From: sergio-incaser
Date: Tue, 5 Apr 2016 23:11:50 +0200
Subject: [PATCH 073/118] account_banking_sepa_direct_debit: Use api.multi
instead
---
account_banking_sepa_direct_debit/README.rst | 1 +
.../models/account_banking_mandate.py | 108 ++++++++----------
.../models/payment_mode.py | 15 +--
.../models/res_company.py | 15 +--
.../views/account_banking_mandate_view.xml | 9 +-
.../report_sepa_direct_debit_mandate.xml | 4 +-
6 files changed, 75 insertions(+), 77 deletions(-)
diff --git a/account_banking_sepa_direct_debit/README.rst b/account_banking_sepa_direct_debit/README.rst
index 10eb9754d..04d40f4c3 100644
--- a/account_banking_sepa_direct_debit/README.rst
+++ b/account_banking_sepa_direct_debit/README.rst
@@ -71,6 +71,7 @@ Contributors
* Raphaël Valyi
* Sandy Carter
* Antonio Espinosa
+* Sergio Teruel
Maintainer
diff --git a/account_banking_sepa_direct_debit/models/account_banking_mandate.py b/account_banking_sepa_direct_debit/models/account_banking_mandate.py
index 4219cee81..f3ac6d38d 100644
--- a/account_banking_sepa_direct_debit/models/account_banking_mandate.py
+++ b/account_banking_sepa_direct_debit/models/account_banking_mandate.py
@@ -37,7 +37,7 @@ class AccountBankingMandate(models.Model):
)
type = fields.Selection([('recurrent', 'Recurrent'),
('oneoff', 'One-Off')],
- string='Type of Mandate', required=True,
+ string='Type of Mandate',
track_visibility='always')
recurrent_sequence_type = fields.Selection(
[('first', 'First'),
@@ -63,69 +63,61 @@ class AccountBankingMandate(models.Model):
"Direct Debit file.")
scheme = fields.Selection([('CORE', 'Basic (CORE)'),
('B2B', 'Enterprise (B2B)')],
- string='Scheme', required=True, default="CORE")
+ string='Scheme', default="CORE")
unique_mandate_reference = fields.Char(size=35) # cf ISO 20022
- @api.one
+ @api.multi
@api.constrains('type', 'recurrent_sequence_type')
def _check_recurring_type(self):
- if (self.type == 'recurrent' and
- not self.recurrent_sequence_type):
- raise exceptions.Warning(
- _("The recurrent mandate '%s' must have a sequence type.")
- % self.unique_mandate_reference)
-
- @api.one
- @api.constrains('type', 'recurrent_sequence_type', 'sepa_migrated')
- def _check_migrated_to_sepa(self):
- if (self.type == 'recurrent' and not self.sepa_migrated and
- self.recurrent_sequence_type != 'first'):
- raise exceptions.Warning(
- _("The recurrent mandate '%s' which is not marked as "
- "'Migrated to SEPA' must have its recurrent sequence type "
- "set to 'First'.") % self.unique_mandate_reference)
-
- @api.one
- @api.constrains('type', 'original_mandate_identification', 'sepa_migrated')
- def _check_original_mandate_identification(self):
- if (self.type == 'recurrent' and not self.sepa_migrated and
- not self.original_mandate_identification):
- raise exceptions.Warning(
- _("You must set the 'Original Mandate Identification' on the "
- "recurrent mandate '%s' which is not marked as 'Migrated to "
- "SEPA'.") % self.unique_mandate_reference)
-
- @api.model
- def _get_mandate_format(self):
- res = super(AccountBankingMandate, self)._get_mandate_format()
- res.append(('sepa', _('Sepa Mandate')))
- return res
-
-
- @api.model
- def _default_mandate_format(self):
- res = super(AccountBankingMandate, self).default_mandate_format()
- return 'sepa'
-
- @api.one
- @api.onchange('partner_bank_id')
- def mandate_partner_bank_change(self):
- super(AccountBankingMandate, self).mandate_partner_bank_change()
- res = {}
- if (self.state == 'valid' and
- self.partner_bank_id and
- self.type == 'recurrent' and
- self.recurrent_sequence_type != 'first'):
- self.recurrent_sequence_type = 'first'
- res['warning'] = {
- 'title': _('Mandate update'),
- 'message': _("As you changed the bank account attached to "
- "this mandate, the 'Sequence Type' has been set "
- "back to 'First'."),
- }
- return res
+ for mandate in self:
+ if (mandate.type == 'recurrent' and
+ not mandate.recurrent_sequence_type):
+ raise exceptions.Warning(
+ _("The recurrent mandate '%s' must have a sequence type.")
+ % mandate.unique_mandate_reference)
@api.multi
+ @api.constrains('type', 'recurrent_sequence_type', 'sepa_migrated')
+ def _check_migrated_to_sepa(self):
+ for mandate in self:
+ if (mandate.type == 'recurrent' and not mandate.sepa_migrated and
+ mandate.recurrent_sequence_type != 'first'):
+ raise exceptions.Warning(
+ _("The recurrent mandate '%s' which is not marked as "
+ "'Migrated to SEPA' must have its recurrent sequence type "
+ "set to 'First'.") % mandate.unique_mandate_reference)
+
+ @api.multi
+ @api.constrains('type', 'original_mandate_identification', 'sepa_migrated')
+ def _check_original_mandate_identification(self):
+ for mandate in self:
+ if (mandate.type == 'recurrent' and not mandate.sepa_migrated and
+ not mandate.original_mandate_identification):
+ raise exceptions.Warning(
+ _("You must set the 'Original Mandate Identification' on the "
+ "recurrent mandate '%s' which is not marked as 'Migrated to "
+ "SEPA'.") % mandate.unique_mandate_reference)
+
+ @api.multi
+ @api.onchange('partner_bank_id')
+ def mandate_partner_bank_change(self):
+ for mandate in self:
+ super(AccountBankingMandate, self).mandate_partner_bank_change()
+ res = {}
+ if (mandate.state == 'valid' and
+ mandate.partner_bank_id and
+ mandate.type == 'recurrent' and
+ mandate.recurrent_sequence_type != 'first'):
+ mandate.recurrent_sequence_type = 'first'
+ res['warning'] = {
+ 'title': _('Mandate update'),
+ 'message': _("As you changed the bank account attached to "
+ "this mandate, the 'Sequence Type' has been set "
+ "back to 'First'."),
+ }
+ return res
+
+ @api.model
def _sdd_mandate_set_state_to_expired(self):
logger.info('Searching for SDD Mandates that must be set to Expired')
expire_limit_date = datetime.today() + \
diff --git a/account_banking_sepa_direct_debit/models/payment_mode.py b/account_banking_sepa_direct_debit/models/payment_mode.py
index 9753ac319..f3c1ac1b6 100644
--- a/account_banking_sepa_direct_debit/models/payment_mode.py
+++ b/account_banking_sepa_direct_debit/models/payment_mode.py
@@ -31,12 +31,13 @@ class PaymentMode(models.Model):
res = 'sepa_direct_debit'
return res
- @api.one
+ @api.multi
@api.constrains('sepa_creditor_identifier')
def _check_sepa_creditor_identifier(self):
- if self.sepa_creditor_identifier:
- if not is_sepa_creditor_identifier_valid(
- self.sepa_creditor_identifier):
- raise exceptions.Warning(
- _('Error'),
- _("Invalid SEPA Creditor Identifier."))
+ for payment_mode in self:
+ if payment_mode.sepa_creditor_identifier:
+ if not is_sepa_creditor_identifier_valid(
+ payment_mode.sepa_creditor_identifier):
+ raise exceptions.Warning(
+ _('Error'),
+ _("Invalid SEPA Creditor Identifier."))
diff --git a/account_banking_sepa_direct_debit/models/res_company.py b/account_banking_sepa_direct_debit/models/res_company.py
index 8b76a9678..c57dc8b04 100644
--- a/account_banking_sepa_direct_debit/models/res_company.py
+++ b/account_banking_sepa_direct_debit/models/res_company.py
@@ -21,12 +21,13 @@ class ResCompany(models.Model):
original_creditor_identifier = fields.Char(
string='Original Creditor Identifier', size=70)
- @api.one
+ @api.multi
@api.constrains('sepa_creditor_identifier')
def _check_sepa_creditor_identifier(self):
- if self.sepa_creditor_identifier:
- if not is_sepa_creditor_identifier_valid(
- self.sepa_creditor_identifier):
- raise exceptions.Warning(
- _('Error'),
- _("Invalid SEPA Creditor Identifier."))
+ for company in self:
+ if company.sepa_creditor_identifier:
+ if not is_sepa_creditor_identifier_valid(
+ company.sepa_creditor_identifier):
+ raise exceptions.Warning(
+ _('Error'),
+ _("Invalid SEPA Creditor Identifier."))
diff --git a/account_banking_sepa_direct_debit/views/account_banking_mandate_view.xml b/account_banking_sepa_direct_debit/views/account_banking_mandate_view.xml
index 0728c8616..667cedb54 100644
--- a/account_banking_sepa_direct_debit/views/account_banking_mandate_view.xml
+++ b/account_banking_sepa_direct_debit/views/account_banking_mandate_view.xml
@@ -17,10 +17,13 @@
-
+
-
+ attrs="{'invisible': ['|', ('type', '=', 'oneoff'), ('format', '!=', 'sepa')],
+ 'required': [('type', '=', 'recurrent')]}"/>
+
diff --git a/account_banking_sepa_direct_debit/views/report_sepa_direct_debit_mandate.xml b/account_banking_sepa_direct_debit/views/report_sepa_direct_debit_mandate.xml
index 7d5b312c3..42705e28a 100644
--- a/account_banking_sepa_direct_debit/views/report_sepa_direct_debit_mandate.xml
+++ b/account_banking_sepa_direct_debit/views/report_sepa_direct_debit_mandate.xml
@@ -46,9 +46,9 @@
-
By signing this mandate form, you authorise (A)
+
By signing this mandate form, you authorise (A)
to send instructions to your bank to debit your account and (B) your bank to
- debit your account in accordance with the instructions from .
+ debit your account in accordance with the instructions from .
\n"
" Click to create a new SEPA Direct Debit Mandate.\n"
"
\n"
-" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n"
+" A SEPA Direct Debit Mandate is a document signed by your customer "
+"that gives you the autorization to do one or several direct debits on his "
+"bank account.\n"
"
\n"
" "
-msgstr "
\n"
+msgstr ""
+"
\n"
" Pulse para crear un nuevo mandato bancario.\n"
"
\n"
-" Un mandato bancario es un documento firmado por su cliente que le da la autorización para hacer una o varias operaciones en su cuenta bancaria.\n"
+" Un mandato bancario es un documento firmado por su cliente que le da "
+"la autorización para hacer una o varias operaciones en su cuenta bancaria.\n"
"
\n"
" "
@@ -36,10 +42,70 @@ msgid "A generic banking mandate"
msgstr "Un mandato bancario genérico"
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:106
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO "
+"CREDITOR FOR STORAGE."
+msgstr ""
+"TODOS LOS CAMPOS HAN DE SER CUMPLIMENTADOS OBLIGATORIAMENTE. UNA VEZ FIRMADA "
+"ESTA ORDEN DE DOMICILIACIÓN DEBE SER ENVIADA AL ACREEDOR PARA SU CUSTODIA."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO "
+"CREDITOR FOR STORAGE.\n"
+" NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S "
+"AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n"
+" THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED "
+"AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK."
+msgstr ""
+"TODOS LOS CAMPOS HAN DE SER CUMPLIMENTADOS OBLIGATORIAMENTE. UNA VEZ FIRMADA "
+"ESTA ORDEN DE DOMICILIACIÓN DEBE SER ENVIADA AL ACREEDOR PARA SU CUSTODIA.LA "
+"ENTIDAD DE DEUDOR REQUIERE AUTORIZACIÓN DE ÉSTE PREVIA AL CARGO EN CUENTA DE "
+"LOS ADEUDOS DIRECTOS B2B.EL DEUDOR PODRÁ GESTIONAR DICHA AUTORIZACIÓN CON "
+"LOS MEDIOS QUE SU ENTIDAD PONGA A SU DISPOSICIÓN."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Account Number - IBAN:"
+msgstr "Número de cuenta - IBAN:"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Address of the Debtor:"
+msgstr "Dirección del deudor:"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Address:"
+msgstr "Dirección:"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"As part of your rights, you are entitled to a refund from\n"
+" your bank under the terms and conditions of your "
+"agreement\n"
+" with your bank.\n"
+" A refund must be claimed within 8 weeks starting "
+"from the date on which your account was debited."
+msgstr ""
+"Como parte de sus derechos, el deudor está legitimado al reembolso por su "
+"entidad en los términos y condiciones del contrato suscrito con la misma. La "
+"solicitud de reembolso deberá efectuarse dentro de las ocho semanas que "
+"siguen a la fecha de adeudo en cuenta. Puede obtener información adicional "
+"sobre sus derechos en su entidad financiera."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:110
#, python-format
-msgid "As you changed the bank account attached to this mandate, the 'Sequence Type' has been set back to 'First'."
-msgstr "Puesto que ha cambiado la cuenta bancaria relacionada con este mandato, el 'Tipo de secuencia' se ha vuelto a 'Inicial'."
+msgid ""
+"As you changed the bank account attached to this mandate, the 'Sequence "
+"Type' has been set back to 'First'."
+msgstr ""
+"Puesto que ha cambiado la cuenta bancaria relacionada con este mandato, el "
+"'Tipo de secuencia' se ha vuelto a 'Inicial'."
#. module: account_banking_sepa_direct_debit
#: model:ir.model,name:account_banking_sepa_direct_debit.model_bank_payment_line
@@ -66,6 +132,12 @@ msgstr "A cargo del acreedor"
msgid "Borne by Debtor"
msgstr "A cargo del deudor"
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "By signing this mandate form, you authorise (A)"
+msgstr ""
+"Mediante la firma de esta orden de domiciliación, el deudor autoriza (A) "
+
#. module: account_banking_sepa_direct_debit
#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
msgid "Cancel"
@@ -81,6 +153,16 @@ msgstr "A cargo del portador"
msgid "Companies"
msgstr "Compañías"
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Country of the debtor:"
+msgstr "País del deudor:"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Country:"
+msgstr "País:"
+
#. module: account_banking_sepa_direct_debit
#: selection:banking.export.sdd.wizard,state:0
msgid "Create"
@@ -97,13 +179,53 @@ msgid "Created on"
msgstr "Creado en"
#. module: account_banking_sepa_direct_debit
-#: help:res.company,sepa_creditor_identifier:0
-msgid "Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n"
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Creditor's Name:"
+msgstr "Nombre del acreedor:"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Date - Location:"
+msgstr "Fecha - Localidad:"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Debtor's Name:"
+msgstr "Nombre del deudor:"
+
+#. module: account_banking_sepa_direct_debit
+#: help:payment.mode,sepa_creditor_identifier:0
+msgid ""
+"Enter the Creditor Identifier that has been attributed to your company to "
+"make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from "
+"company will be used.\n"
+"This identifier is composed of :\n"
"- your country ISO code (2 letters)\n"
"- a 2-digits checkum\n"
"- a 3-letters business code\n"
"- a country-specific identifier"
-msgstr "Introduzca el identificador de acreedor que se le ha atribuido a su compañía para realizar adeudos directos SEPA. Su banco suele poseer esta información. Este identificador se compone de:\n"
+msgstr ""
+"Introduzca el identificador de acreedor que se le ha atribuido a su compañía "
+"para realizar adeudos directos SEPA. Su banco suele poseer esta información. "
+"Este identificador se compone de:\n"
+"- el código ISO de 2 letras de su país\n"
+"- dos dígitos de comprobación\n"
+"- tres letras de código de negocio\n"
+"- un identificador específico de país (en España, el NIF)"
+
+#. module: account_banking_sepa_direct_debit
+#: help:res.company,sepa_creditor_identifier:0
+msgid ""
+"Enter the Creditor Identifier that has been attributed to your company to "
+"make SEPA Direct Debits. This identifier is composed of :\n"
+"- your country ISO code (2 letters)\n"
+"- a 2-digits checkum\n"
+"- a 3-letters business code\n"
+"- a country-specific identifier"
+msgstr ""
+"Introduzca el identificador de acreedor que se le ha atribuido a su compañía "
+"para realizar adeudos directos SEPA. Su banco suele poseer esta información. "
+"Este identificador se compone de:\n"
"- el código ISO de 2 letras de su país\n"
"- dos dígitos de comprobación\n"
"- tres letras de código de negocio\n"
@@ -115,7 +237,8 @@ msgid "Enterprise (B2B)"
msgstr "Empresa (B2B)"
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:62
+#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:41
+#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:31
#, python-format
msgid "Error"
msgstr "Error"
@@ -157,8 +280,23 @@ msgstr "Según el acuerdo de servicio"
#. module: account_banking_sepa_direct_debit
#: help:banking.export.sdd.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 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."
+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_direct_debit
#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
@@ -170,18 +308,48 @@ msgstr "Generar"
msgid "ID"
msgstr "ID"
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Identifier:"
+msgstr "Identificador:"
+
+#. module: account_banking_sepa_direct_debit
+#: help:payment.mode,original_creditor_identifier:0
+msgid "If not defined, Original Creditor Identifier from company will be used."
+msgstr ""
+
#. module: account_banking_sepa_direct_debit
#: help:account.banking.mandate,sepa_migrated:0
-msgid "If this field is not active, the mandate section of the next direct debit file that include this mandate will contain the 'Original Mandate Identification' and the 'Original Creditor Scheme Identification'. This is required in a few countries (Belgium for instance), but not in all countries. If this is not required in your country, you should keep this field always active."
-msgstr "Si este campo no está marcado, la sección 'mandato' del próximo archivo de adeudo directo que lo incluya contendrá el valor de los campos 'Identificación del mandato original' y 'Identificación del esquema original del acreedor'. Esto se requiere en algunos países (Bélgica por ejemplo), pero no en todos ellos. Si no es un requisito en su país, este campo siempre debe estar marcado."
+msgid ""
+"If this field is not active, the mandate section of the next direct debit "
+"file that include this mandate will contain the 'Original Mandate "
+"Identification' and the 'Original Creditor Scheme Identification'. This is "
+"required in a few countries (Belgium for instance), but not in all "
+"countries. If this is not required in your country, you should keep this "
+"field always active."
+msgstr ""
+"Si este campo no está marcado, la sección 'mandato' del próximo archivo de "
+"adeudo directo que lo incluya contendrá el valor de los campos "
+"'Identificación del mandato original' y 'Identificación del esquema original "
+"del acreedor'. Esto se requiere en algunos países (Bélgica por ejemplo), "
+"pero no en todos ellos. Si no es un requisito en su país, este campo siempre "
+"debe estar marcado."
#. module: account_banking_sepa_direct_debit
#: help:banking.export.sdd.wizard,batch_booking:0
-msgid "If true, the bank statement will display only one credit line for all the direct debits of the SEPA file ; if false, the bank statement will display one credit line per direct debit of the SEPA 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."
+msgid ""
+"If true, the bank statement will display only one credit line for all the "
+"direct debits of the SEPA file ; if false, the bank statement will display "
+"one credit line per direct debit of the SEPA 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_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:63
+#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:42
+#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:32
#, python-format
msgid "Invalid SEPA Creditor Identifier."
msgstr "Identificador de acreedor SEPA no válido."
@@ -197,7 +365,12 @@ msgid "Last Updated on"
msgstr "Última actualización en"
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:105
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Mandate Reference:"
+msgstr "Referencia del mandato:"
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:109
#, python-format
msgid "Mandate update"
msgstr "Actualizacion de mandato"
@@ -210,8 +383,12 @@ msgstr "Migrado a SEPA"
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:159
#, python-format
-msgid "Missing SEPA Direct Debit mandate on the bank payment line with partner '%s' (reference '%s')."
-msgstr "Falta el mandato de adeudo directo SEPA en la linea de pago bancario con la empresa '%s' (referencia '%s')."
+msgid ""
+"Missing SEPA Direct Debit mandate on the bank payment line with partner "
+"'%s' (reference '%s')."
+msgstr ""
+"Falta el mandato de adeudo directo SEPA en la linea de pago bancario con la "
+"empresa '%s' (referencia '%s')."
#. module: account_banking_sepa_direct_debit
#: field:banking.export.sdd.wizard,nb_transactions:0
@@ -221,10 +398,12 @@ msgstr "Nº de transacciones"
#. module: account_banking_sepa_direct_debit
#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
#: selection:account.banking.mandate,type:0
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "One-Off"
msgstr "Único"
#. module: account_banking_sepa_direct_debit
+#: field:payment.mode,original_creditor_identifier:0
#: field:res.company,original_creditor_identifier:0
msgid "Original Creditor Identifier"
msgstr "Identificador del acreedor original"
@@ -239,6 +418,11 @@ msgstr "Identificación del mandato original"
msgid "Original Mandate Required (SEPA)"
msgstr "Mandato original requerido (SEPA)"
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_mode
+msgid "Payment Mode"
+msgstr "Modo de pago"
+
#. module: account_banking_sepa_direct_debit
#: field:banking.export.sdd.wizard,payment_order_ids:0
msgid "Payment Orders"
@@ -247,12 +431,24 @@ msgstr "Órdenes de pago"
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:117
#, python-format
-msgid "Payment Type Code '%s' is not supported. The only Payment Type Code supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and 'pain.008.001.04'."
-msgstr "El código de tipo de pago '%s' no está soportado. Los únicos códigos de tipo de pago soportados para los adedudos directos SEPA son 'pain.008.001.02', 'pain.008.001.03' y 'pain.008.001.04'."
+msgid ""
+"Payment Type Code '%s' is not supported. The only Payment Type Code "
+"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and "
+"'pain.008.001.04'."
+msgstr ""
+"El código de tipo de pago '%s' no está soportado. Los únicos códigos de tipo "
+"de pago soportados para los adedudos directos SEPA son 'pain.008.001.02', "
+"'pain.008.001.03' y 'pain.008.001.04'."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Postal Code - City - Town:"
+msgstr "Código postal - Población - Provincia:"
#. module: account_banking_sepa_direct_debit
#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
#: selection:account.banking.mandate,type:0
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Recurrent"
msgstr "Recurrente"
@@ -268,6 +464,7 @@ msgid "SDD Mandates"
msgstr "Mandatos SDD"
#. module: account_banking_sepa_direct_debit
+#: field:payment.mode,sepa_creditor_identifier:0
#: field:res.company,sepa_creditor_identifier:0
msgid "SEPA Creditor Identifier"
msgstr "Identificador de acreedor SEPA"
@@ -288,6 +485,23 @@ msgstr "Generación del archivo XML de adeudo directo SEPA"
msgid "Scheme"
msgstr "Esquema"
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Sepa Business-To-Business Direct debit Mandate"
+msgstr "Orden de domiciliación de adeudo directo SEPA B2B"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Sepa Direct Debit Mandate"
+msgstr "Mandatos de adeudos directos SEPA"
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:35
+#: model:ir.actions.report.xml,name:account_banking_sepa_direct_debit.report_sepa_direct_debit_mandate
+#, python-format
+msgid "Sepa Mandate"
+msgstr "Mandato SEPA"
+
#. module: account_banking_sepa_direct_debit
#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree
@@ -322,40 +536,91 @@ msgstr "Tipo de secuencia establecida a 'Recurrente'"
msgid "Shared"
msgstr "Compartidos"
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Signature of the debtor:"
+msgstr "Firma del deudor:"
+
#. module: account_banking_sepa_direct_debit
#: field:banking.export.sdd.wizard,state:0
msgid "State"
msgstr "Estado"
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Swift BIC (up to 8 or 11 characteres):"
+msgstr "Swift BIC (puede contener 8 u 11 posiciones):"
+
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:166
#, python-format
-msgid "The SEPA Direct Debit mandate with reference '%s' for partner '%s' has expired."
-msgstr "El mandato de adeudo directo SEPA con referencia '%s' para la empresa '%s' ha expirado."
+msgid ""
+"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has "
+"expired."
+msgstr ""
+"El mandato de adeudo directo SEPA con referencia '%s' para la empresa '%s' "
+"ha expirado."
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:174
#, python-format
-msgid "The mandate with reference '%s' for partner '%s' has type set to 'One-Off' and it has a last debit date set to '%s', so we can't use it."
-msgstr "El mandato con referencia '%s' para la empresa '%s' tipo como 'Único', ya tiene como fecha de último cobro '%s', por lo que no se puede usar."
+msgid ""
+"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' "
+"and it has a last debit date set to '%s', so we can't use it."
+msgstr ""
+"El mandato con referencia '%s' para la empresa '%s' tipo como 'Único', ya "
+"tiene como fecha de último cobro '%s', por lo que no se puede usar."
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:71
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:75
#, python-format
msgid "The recurrent mandate '%s' must have a sequence type."
msgstr "El mandato periódico '%s' debe tener un tipo de secuencia."
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:80
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:84
#, python-format
-msgid "The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must have its recurrent sequence type set to 'First'."
-msgstr "El mandato periódico '%s', que no está marcado como 'Migrado a SEPA', debe establecer su tipo de secuencia a 'Inicial'."
+msgid ""
+"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must "
+"have its recurrent sequence type set to 'First'."
+msgstr ""
+"El mandato periódico '%s', que no está marcado como 'Migrado a SEPA', debe "
+"establecer su tipo de secuencia a 'Inicial'."
#. module: account_banking_sepa_direct_debit
#: help:account.banking.mandate,recurrent_sequence_type:0
-msgid "This field is only used for Recurrent mandates, not for One-Off mandates."
+msgid ""
+"This field is only used for Recurrent mandates, not for One-Off mandates."
msgstr "Este campo se utiliza sólo para mandatos periódicos, no para únicos."
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"This mandate is only intended for business-to-business transactions.\n"
+" You are not entitled to a refund from your bank "
+"after your account has\n"
+" been debited, but you are entitled to request your "
+"bank\n"
+" not to debit your account up until the day on which "
+"the payment is due."
+msgstr ""
+"Esta orden de domiciliación está prevista para operaciones exclusivamente "
+"entre empresas y/o autónomos. El deudor no tiene derecho a que su entidad le "
+"reembolse una vez que se haya realizado el cargo en cuenta, pero puede "
+"solicitar a su entidad que no efectúe el adeudo en la cuenta hasta la fecha "
+"debida. Podrá obtener información detallada del procedimiento en su entidad "
+"financiera."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "To be completed by the creditor"
+msgstr "A cumplimentar por el acreedor"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "To be completed by the debtor"
+msgstr "A cumplimentar por el deudor"
+
#. module: account_banking_sepa_direct_debit
#: field:banking.export.sdd.wizard,total_amount:0
msgid "Total Amount"
@@ -372,6 +637,11 @@ msgstr "Tipo"
msgid "Type of Mandate"
msgstr "Tipo de mandato"
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Type of payment:"
+msgstr "Tipo de pago"
+
#. module: account_banking_sepa_direct_debit
#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
msgid "Validate"
@@ -379,12 +649,31 @@ msgstr "Validar"
#. module: account_banking_sepa_direct_debit
#: help:account.banking.mandate,original_mandate_identification:0
-msgid "When the field 'Migrated to SEPA' is not active, this field will be used as the Original Mandate Identification in the Direct Debit file."
-msgstr "Cuando el campo 'Migrado a SEPA' no está marcado, este campo se usa como identificación del mandato original en el archivo de adeudo directo."
+msgid ""
+"When the field 'Migrated to SEPA' is not active, this field will be used as "
+"the Original Mandate Identification in the Direct Debit file."
+msgstr ""
+"Cuando el campo 'Migrado a SEPA' no está marcado, este campo se usa como "
+"identificación del mandato original en el archivo de adeudo directo."
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:90
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:94
#, python-format
-msgid "You must set the 'Original Mandate Identification' on the recurrent mandate '%s' which is not marked as 'Migrated to SEPA'."
-msgstr "Debe establecer el campo 'Identificación de mandato original en el mandato periódico '%s', que no está marcado como 'Migrado a SEPA'."
+msgid ""
+"You must set the 'Original Mandate Identification' on the recurrent mandate "
+"'%s' which is not marked as 'Migrated to SEPA'."
+msgstr ""
+"Debe establecer el campo 'Identificación de mandato original en el mandato "
+"periódico '%s', que no está marcado como 'Migrado a SEPA'."
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"to send instructions to your bank to debit your account and (B) your bank "
+"to\n"
+" debit your account in accordance with the "
+"instructions from"
+msgstr ""
+"a enviar instrucciones a la entidad del deudor para adeudar su cuenta y (B) "
+"a la entidad para efectuar los adeudos en su cuenta siguiendo las "
+"instrucciones del acreedor "
From 417ef1e9654f6b5cea5fbfd9076e5897e3cee04e Mon Sep 17 00:00:00 2001
From: Sergio Incaser
Date: Thu, 7 Apr 2016 16:24:02 +0200
Subject: [PATCH 077/118] account_banking_sepa_direct_debit: Report font size
smallest
---
.../views/report_sepa_direct_debit_mandate.xml | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/account_banking_sepa_direct_debit/views/report_sepa_direct_debit_mandate.xml b/account_banking_sepa_direct_debit/views/report_sepa_direct_debit_mandate.xml
index 42705e28a..eb850815b 100644
--- a/account_banking_sepa_direct_debit/views/report_sepa_direct_debit_mandate.xml
+++ b/account_banking_sepa_direct_debit/views/report_sepa_direct_debit_mandate.xml
@@ -14,6 +14,9 @@
.panel-default{
border:2px solid;
}
+ p{
+ font-size: 8px;
+ }
@@ -27,7 +30,7 @@
- To be completed by the creditor
+ To be completed by the creditor
Mandate Reference:
Identifier:
@@ -44,7 +47,7 @@
-
+
By signing this mandate form, you authorise (A)
to send instructions to your bank to debit your account and (B) your bank to
@@ -52,7 +55,7 @@
-
+
This mandate is only intended for business-to-business transactions.
@@ -71,7 +74,7 @@
- To be completed by the debtor
+ To be completed by the debtor
Debtor's Name:
Address of the Debtor:
@@ -98,7 +101,7 @@
-
+
ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.
ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.
NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.
From a99a1348a38d9bcbc129b7dbc12e47e7b5908e2f Mon Sep 17 00:00:00 2001
From: OCA Transbot
Date: Sat, 9 Apr 2016 02:15:34 -0400
Subject: [PATCH 078/118] OCA Transbot updated translations from Transifex
---
account_banking_sepa_direct_debit/i18n/en.po | 588 +++++++++
account_banking_sepa_direct_debit/i18n/es.po | 221 +---
account_banking_sepa_direct_debit/i18n/fr.po | 1155 +++++++---------
account_banking_sepa_direct_debit/i18n/nl.po | 1165 +++++++----------
.../i18n/pt_BR.po | 588 +++++++++
account_banking_sepa_direct_debit/i18n/sl.po | 589 +++++++++
6 files changed, 2827 insertions(+), 1479 deletions(-)
create mode 100644 account_banking_sepa_direct_debit/i18n/en.po
create mode 100644 account_banking_sepa_direct_debit/i18n/pt_BR.po
create mode 100644 account_banking_sepa_direct_debit/i18n/sl.po
diff --git a/account_banking_sepa_direct_debit/i18n/en.po b/account_banking_sepa_direct_debit/i18n/en.po
new file mode 100644
index 000000000..ee6d51576
--- /dev/null
+++ b/account_banking_sepa_direct_debit/i18n/en.po
@@ -0,0 +1,588 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_banking_sepa_direct_debit
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: bank-payment (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-04-08 00:46+0000\n"
+"PO-Revision-Date: 2016-04-07 16:04+0000\n"
+"Last-Translator: OCA Transbot \n"
+"Language-Team: English (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/en/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: en\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.mandate_action
+msgid ""
+"
\n"
+" Click to create a new SEPA Direct Debit Mandate.\n"
+"
\n"
+" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n"
+"
\n"
+" "
+msgstr "
\n Click to create a new SEPA Direct Debit Mandate.\n
\n A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n
\n "
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_banking_mandate
+msgid "A generic banking mandate"
+msgstr "A generic banking mandate"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO "
+"CREDITOR FOR STORAGE."
+msgstr "ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.\n"
+" NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n"
+" THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK."
+msgstr "ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.\n NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Account Number - IBAN:"
+msgstr "Account Number - IBAN:"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Address of the Debtor:"
+msgstr "Address of the Debtor:"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Address:"
+msgstr "Address:"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"As part of your rights, you are entitled to a refund from\n"
+" your bank under the terms and conditions of your agreement\n"
+" with your bank.\n"
+" A refund must be claimed within 8 weeks starting from the date on which your account was debited."
+msgstr "As part of your rights, you are entitled to a refund from\n your bank under the terms and conditions of your agreement\n with your bank.\n A refund must be claimed within 8 weeks starting from the date on which your account was debited."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:116
+#, python-format
+msgid ""
+"As you changed the bank account attached to this mandate, the 'Sequence "
+"Type' has been set back to 'First'."
+msgstr "As you changed the bank account attached to this mandate, the 'Sequence Type' has been set back to 'First'."
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_bank_payment_line
+msgid "Bank Payment Lines"
+msgstr "Bank Payment Lines"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,scheme:0
+msgid "Basic (CORE)"
+msgstr "Basic (CORE)"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,batch_booking:0
+msgid "Batch Booking"
+msgstr "Batch Booking"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Borne by Creditor"
+msgstr "Borne by Creditor"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Borne by Debtor"
+msgstr "Borne by Debtor"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "By signing this mandate form, you authorise (A)"
+msgstr "By signing this mandate form, you authorise (A)"
+
+#. module: account_banking_sepa_direct_debit
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "Cancel"
+msgstr "Cancel"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,charge_bearer:0
+msgid "Charge Bearer"
+msgstr "Charge Bearer"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company
+msgid "Companies"
+msgstr "Companies"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Country of the debtor:"
+msgstr "Country of the debtor:"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Country:"
+msgstr "Country:"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,state:0
+msgid "Create"
+msgstr "Create"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,create_uid:0
+msgid "Created by"
+msgstr "Created by"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,create_date:0
+msgid "Created on"
+msgstr "Created on"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Creditor's Name:"
+msgstr "Creditor's Name:"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Date - Location:"
+msgstr "Date - Location:"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Debtor's Name:"
+msgstr "Debtor's Name:"
+
+#. module: account_banking_sepa_direct_debit
+#: help:payment.mode,sepa_creditor_identifier:0
+msgid ""
+"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from company will be used.\n"
+"This identifier is composed of :\n"
+"- your country ISO code (2 letters)\n"
+"- a 2-digits checkum\n"
+"- a 3-letters business code\n"
+"- a country-specific identifier"
+msgstr "Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from company will be used.\nThis identifier is composed of :\n- your country ISO code (2 letters)\n- a 2-digits checkum\n- a 3-letters business code\n- a country-specific identifier"
+
+#. module: account_banking_sepa_direct_debit
+#: help:res.company,sepa_creditor_identifier:0
+msgid ""
+"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n"
+"- your country ISO code (2 letters)\n"
+"- a 2-digits checkum\n"
+"- a 3-letters business code\n"
+"- a country-specific identifier"
+msgstr "Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n- your country ISO code (2 letters)\n- a 2-digits checkum\n- a 3-letters business code\n- a country-specific identifier"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,scheme:0
+msgid "Enterprise (B2B)"
+msgstr "Enterprise (B2B)"
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:42
+#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:32
+#, python-format
+msgid "Error"
+msgstr "Error"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard
+msgid "Export SEPA Direct Debit File"
+msgstr "Export SEPA Direct Debit File"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,file:0
+msgid "File"
+msgstr "File"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,filename:0
+msgid "Filename"
+msgstr "Filename"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,recurrent_sequence_type:0
+msgid "Final"
+msgstr "Final"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,state:0
+msgid "Finish"
+msgstr "Finish"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,recurrent_sequence_type:0
+msgid "First"
+msgstr "First"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Following Service Level"
+msgstr "Following Service Level"
+
+#. module: account_banking_sepa_direct_debit
+#: help:banking.export.sdd.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 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 "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."
+
+#. module: account_banking_sepa_direct_debit
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "Generate"
+msgstr "Generate"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Identifier:"
+msgstr "Identifier:"
+
+#. module: account_banking_sepa_direct_debit
+#: help:payment.mode,original_creditor_identifier:0
+msgid ""
+"If not defined, Original Creditor Identifier from company will be used."
+msgstr "If not defined, Original Creditor Identifier from company will be used."
+
+#. module: account_banking_sepa_direct_debit
+#: help:account.banking.mandate,sepa_migrated:0
+msgid ""
+"If this field is not active, the mandate section of the next direct debit "
+"file that include this mandate will contain the 'Original Mandate "
+"Identification' and the 'Original Creditor Scheme Identification'. This is "
+"required in a few countries (Belgium for instance), but not in all "
+"countries. If this is not required in your country, you should keep this "
+"field always active."
+msgstr "If this field is not active, the mandate section of the next direct debit file that include this mandate will contain the 'Original Mandate Identification' and the 'Original Creditor Scheme Identification'. This is required in a few countries (Belgium for instance), but not in all countries. If this is not required in your country, you should keep this field always active."
+
+#. module: account_banking_sepa_direct_debit
+#: help:banking.export.sdd.wizard,batch_booking:0
+msgid ""
+"If true, the bank statement will display only one credit line for all the "
+"direct debits of the SEPA file ; if false, the bank statement will display "
+"one credit line per direct debit of the SEPA file."
+msgstr "If true, the bank statement will display only one credit line for all the direct debits of the SEPA file ; if false, the bank statement will display one credit line per direct debit of the SEPA file."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:43
+#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:33
+#, python-format
+msgid "Invalid SEPA Creditor Identifier."
+msgstr "Invalid SEPA Creditor Identifier."
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,write_uid:0
+msgid "Last Updated by"
+msgstr "Last Updated by"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,write_date:0
+msgid "Last Updated on"
+msgstr "Last Updated on"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Mandate Reference:"
+msgstr "Mandate Reference:"
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:115
+#, python-format
+msgid "Mandate update"
+msgstr "Mandate update"
+
+#. module: account_banking_sepa_direct_debit
+#: field:account.banking.mandate,sepa_migrated:0
+msgid "Migrated to SEPA"
+msgstr "Migrated to SEPA"
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:159
+#, python-format
+msgid ""
+"Missing SEPA Direct Debit mandate on the bank payment line with partner '%s'"
+" (reference '%s')."
+msgstr "Missing SEPA Direct Debit mandate on the bank payment line with partner '%s' (reference '%s')."
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,nb_transactions:0
+msgid "Number of Transactions"
+msgstr "Number of Transactions"
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: selection:account.banking.mandate,type:0
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "One-Off"
+msgstr "One-Off"
+
+#. module: account_banking_sepa_direct_debit
+#: field:payment.mode,original_creditor_identifier:0
+#: field:res.company,original_creditor_identifier:0
+msgid "Original Creditor Identifier"
+msgstr "Original Creditor Identifier"
+
+#. module: account_banking_sepa_direct_debit
+#: field:account.banking.mandate,original_mandate_identification:0
+msgid "Original Mandate Identification"
+msgstr "Original Mandate Identification"
+
+#. module: account_banking_sepa_direct_debit
+#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required
+msgid "Original Mandate Required (SEPA)"
+msgstr "Original Mandate Required (SEPA)"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_mode
+msgid "Payment Mode"
+msgstr "Payment Mode"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,payment_order_ids:0
+msgid "Payment Orders"
+msgstr "Payment Orders"
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:117
+#, python-format
+msgid ""
+"Payment Type Code '%s' is not supported. The only Payment Type Code "
+"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and"
+" 'pain.008.001.04'."
+msgstr "Payment Type Code '%s' is not supported. The only Payment Type Code supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and 'pain.008.001.04'."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Postal Code - City - Town:"
+msgstr "Postal Code - City - Town:"
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: selection:account.banking.mandate,type:0
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Recurrent"
+msgstr "Recurrent"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,recurrent_sequence_type:0
+msgid "Recurring"
+msgstr "Recurring"
+
+#. module: account_banking_sepa_direct_debit
+#: view:res.partner:account_banking_sepa_direct_debit.sdd_mandate_partner_form
+#: view:res.partner.bank:account_banking_sepa_direct_debit.sdd_mandate_partner_bank_tree
+msgid "SDD Mandates"
+msgstr "SDD Mandates"
+
+#. module: account_banking_sepa_direct_debit
+#: field:payment.mode,sepa_creditor_identifier:0
+#: field:res.company,sepa_creditor_identifier:0
+msgid "SEPA Creditor Identifier"
+msgstr "SEPA Creditor Identifier"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.mandate_action
+msgid "SEPA Direct Debit Mandates"
+msgstr "SEPA Direct Debit Mandates"
+
+#. module: account_banking_sepa_direct_debit
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "SEPA Direct Debit XML file generation"
+msgstr "SEPA Direct Debit XML file generation"
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: field:account.banking.mandate,scheme:0
+msgid "Scheme"
+msgstr "Scheme"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Sepa Business-To-Business Direct debit Mandate"
+msgstr "Sepa Business-To-Business Direct debit Mandate"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Sepa Direct Debit Mandate"
+msgstr "Sepa Direct Debit Mandate"
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:35
+#: model:ir.actions.report.xml,name:account_banking_sepa_direct_debit.report_sepa_direct_debit_mandate
+#, python-format
+msgid "Sepa Mandate"
+msgstr "Sepa Mandate"
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree
+msgid "Sequence Type"
+msgstr "Sequence Type"
+
+#. module: account_banking_sepa_direct_debit
+#: field:account.banking.mandate,recurrent_sequence_type:0
+msgid "Sequence Type for Next Debit"
+msgstr "Sequence Type for Next Debit"
+
+#. module: account_banking_sepa_direct_debit
+#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_final
+#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_final
+msgid "Sequence Type set to Final"
+msgstr "Sequence Type set to Final"
+
+#. module: account_banking_sepa_direct_debit
+#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_first
+#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_first
+msgid "Sequence Type set to First"
+msgstr "Sequence Type set to First"
+
+#. module: account_banking_sepa_direct_debit
+#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
+#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
+msgid "Sequence Type set to Recurring"
+msgstr "Sequence Type set to Recurring"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Shared"
+msgstr "Shared"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Signature of the debtor:"
+msgstr "Signature of the debtor:"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,state:0
+msgid "State"
+msgstr "State"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Swift BIC (up to 8 or 11 characteres):"
+msgstr "Swift BIC (up to 8 or 11 characteres):"
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:166
+#, python-format
+msgid ""
+"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has "
+"expired."
+msgstr "The SEPA Direct Debit mandate with reference '%s' for partner '%s' has expired."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:174
+#, python-format
+msgid ""
+"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' "
+"and it has a last debit date set to '%s', so we can't use it."
+msgstr "The mandate with reference '%s' for partner '%s' has type set to 'One-Off' and it has a last debit date set to '%s', so we can't use it."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:76
+#, python-format
+msgid "The recurrent mandate '%s' must have a sequence type."
+msgstr "The recurrent mandate '%s' must have a sequence type."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:86
+#, python-format
+msgid ""
+"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must "
+"have its recurrent sequence type set to 'First'."
+msgstr "The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must have its recurrent sequence type set to 'First'."
+
+#. module: account_banking_sepa_direct_debit
+#: help:account.banking.mandate,recurrent_sequence_type:0
+msgid ""
+"This field is only used for Recurrent mandates, not for One-Off mandates."
+msgstr "This field is only used for Recurrent mandates, not for One-Off mandates."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"This mandate is only intended for business-to-business transactions.\n"
+" You are not entitled to a refund from your bank after your account has\n"
+" been debited, but you are entitled to request your bank\n"
+" not to debit your account up until the day on which the payment is due."
+msgstr "This mandate is only intended for business-to-business transactions.\n You are not entitled to a refund from your bank after your account has\n been debited, but you are entitled to request your bank\n not to debit your account up until the day on which the payment is due."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "To be completed by the creditor"
+msgstr "To be completed by the creditor"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "To be completed by the debtor"
+msgstr "To be completed by the debtor"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,total_amount:0
+msgid "Total Amount"
+msgstr "Total Amount"
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree
+msgid "Type"
+msgstr "Type"
+
+#. module: account_banking_sepa_direct_debit
+#: field:account.banking.mandate,type:0
+msgid "Type of Mandate"
+msgstr "Type of Mandate"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Type of payment:"
+msgstr "Type of payment:"
+
+#. module: account_banking_sepa_direct_debit
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "Validate"
+msgstr "Validate"
+
+#. module: account_banking_sepa_direct_debit
+#: help:account.banking.mandate,original_mandate_identification:0
+msgid ""
+"When the field 'Migrated to SEPA' is not active, this field will be used as "
+"the Original Mandate Identification in the Direct Debit file."
+msgstr "When the field 'Migrated to SEPA' is not active, this field will be used as the Original Mandate Identification in the Direct Debit file."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:98
+#, python-format
+msgid ""
+"You must set the 'Original Mandate Identification' on the recurrent mandate "
+"'%s' which is not marked as 'Migrated to SEPA'."
+msgstr "You must set the 'Original Mandate Identification' on the recurrent mandate '%s' which is not marked as 'Migrated to SEPA'."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"to send instructions to your bank to debit your account and (B) your bank to\n"
+" debit your account in accordance with the instructions from"
+msgstr "to send instructions to your bank to debit your account and (B) your bank to\n debit your account in accordance with the instructions from"
diff --git a/account_banking_sepa_direct_debit/i18n/es.po b/account_banking_sepa_direct_debit/i18n/es.po
index ce10768cd..8f64295d1 100644
--- a/account_banking_sepa_direct_debit/i18n/es.po
+++ b/account_banking_sepa_direct_debit/i18n/es.po
@@ -1,20 +1,21 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * account_banking_sepa_direct_debit
-#
+# * account_banking_sepa_direct_debit
+#
+# Translators:
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 8.0\n"
+"Project-Id-Version: bank-payment (8.0)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-04-05 20:32+0000\n"
-"PO-Revision-Date: 2016-04-05 23:01+0100\n"
-"Last-Translator: Sergio Teruel \n"
-"Language-Team: \n"
-"Language: es_ES\n"
+"POT-Creation-Date: 2016-04-08 00:46+0000\n"
+"PO-Revision-Date: 2016-04-07 16:04+0000\n"
+"Last-Translator: OCA Transbot \n"
+"Language-Team: Spanish (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.5.4\n"
+"Content-Transfer-Encoding: \n"
+"Language: es\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: account_banking_sepa_direct_debit
#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.mandate_action
@@ -22,19 +23,10 @@ msgid ""
"
\n"
" Click to create a new SEPA Direct Debit Mandate.\n"
"
\n"
-" A SEPA Direct Debit Mandate is a document signed by your customer "
-"that gives you the autorization to do one or several direct debits on his "
-"bank account.\n"
-"
\n"
-" "
-msgstr ""
-"
\n"
-" Pulse para crear un nuevo mandato bancario.\n"
-"
\n"
-" Un mandato bancario es un documento firmado por su cliente que le da "
-"la autorización para hacer una o varias operaciones en su cuenta bancaria.\n"
+" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n"
"
\n"
" "
+msgstr "
\n Pulse para crear un nuevo mandato bancario.\n
\n Un mandato bancario es un documento firmado por su cliente que le da la autorización para hacer una o varias operaciones en su cuenta bancaria.\n
\n "
#. module: account_banking_sepa_direct_debit
#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_banking_mandate
@@ -46,25 +38,15 @@ msgstr "Un mandato bancario genérico"
msgid ""
"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO "
"CREDITOR FOR STORAGE."
-msgstr ""
-"TODOS LOS CAMPOS HAN DE SER CUMPLIMENTADOS OBLIGATORIAMENTE. UNA VEZ FIRMADA "
-"ESTA ORDEN DE DOMICILIACIÓN DEBE SER ENVIADA AL ACREEDOR PARA SU CUSTODIA."
+msgstr "TODOS LOS CAMPOS HAN DE SER CUMPLIMENTADOS OBLIGATORIAMENTE. UNA VEZ FIRMADA ESTA ORDEN DE DOMICILIACIÓN DEBE SER ENVIADA AL ACREEDOR PARA SU CUSTODIA."
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid ""
-"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO "
-"CREDITOR FOR STORAGE.\n"
-" NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S "
-"AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n"
-" THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED "
-"AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK."
-msgstr ""
-"TODOS LOS CAMPOS HAN DE SER CUMPLIMENTADOS OBLIGATORIAMENTE. UNA VEZ FIRMADA "
-"ESTA ORDEN DE DOMICILIACIÓN DEBE SER ENVIADA AL ACREEDOR PARA SU CUSTODIA.LA "
-"ENTIDAD DE DEUDOR REQUIERE AUTORIZACIÓN DE ÉSTE PREVIA AL CARGO EN CUENTA DE "
-"LOS ADEUDOS DIRECTOS B2B.EL DEUDOR PODRÁ GESTIONAR DICHA AUTORIZACIÓN CON "
-"LOS MEDIOS QUE SU ENTIDAD PONGA A SU DISPOSICIÓN."
+"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.\n"
+" NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n"
+" THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK."
+msgstr "TODOS LOS CAMPOS HAN DE SER CUMPLIMENTADOS OBLIGATORIAMENTE. UNA VEZ FIRMADA ESTA ORDEN DE DOMICILIACIÓN DEBE SER ENVIADA AL ACREEDOR PARA SU CUSTODIA.LA ENTIDAD DE DEUDOR REQUIERE AUTORIZACIÓN DE ÉSTE PREVIA AL CARGO EN CUENTA DE LOS ADEUDOS DIRECTOS B2B.EL DEUDOR PODRÁ GESTIONAR DICHA AUTORIZACIÓN CON LOS MEDIOS QUE SU ENTIDAD PONGA A SU DISPOSICIÓN."
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
@@ -85,27 +67,18 @@ msgstr "Dirección:"
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid ""
"As part of your rights, you are entitled to a refund from\n"
-" your bank under the terms and conditions of your "
-"agreement\n"
+" your bank under the terms and conditions of your agreement\n"
" with your bank.\n"
-" A refund must be claimed within 8 weeks starting "
-"from the date on which your account was debited."
-msgstr ""
-"Como parte de sus derechos, el deudor está legitimado al reembolso por su "
-"entidad en los términos y condiciones del contrato suscrito con la misma. La "
-"solicitud de reembolso deberá efectuarse dentro de las ocho semanas que "
-"siguen a la fecha de adeudo en cuenta. Puede obtener información adicional "
-"sobre sus derechos en su entidad financiera."
+" A refund must be claimed within 8 weeks starting from the date on which your account was debited."
+msgstr "Como parte de sus derechos, el deudor está legitimado al reembolso por su entidad en los términos y condiciones del contrato suscrito con la misma. La solicitud de reembolso deberá efectuarse dentro de las ocho semanas que siguen a la fecha de adeudo en cuenta. Puede obtener información adicional sobre sus derechos en su entidad financiera."
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:110
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:116
#, python-format
msgid ""
"As you changed the bank account attached to this mandate, the 'Sequence "
"Type' has been set back to 'First'."
-msgstr ""
-"Puesto que ha cambiado la cuenta bancaria relacionada con este mandato, el "
-"'Tipo de secuencia' se ha vuelto a 'Inicial'."
+msgstr "Puesto que ha cambiado la cuenta bancaria relacionada con este mandato, el 'Tipo de secuencia' se ha vuelto a 'Inicial'."
#. module: account_banking_sepa_direct_debit
#: model:ir.model,name:account_banking_sepa_direct_debit.model_bank_payment_line
@@ -135,8 +108,7 @@ msgstr "A cargo del deudor"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "By signing this mandate form, you authorise (A)"
-msgstr ""
-"Mediante la firma de esta orden de domiciliación, el deudor autoriza (A) "
+msgstr "Mediante la firma de esta orden de domiciliación, el deudor autoriza (A) "
#. module: account_banking_sepa_direct_debit
#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
@@ -196,40 +168,23 @@ msgstr "Nombre del deudor:"
#. module: account_banking_sepa_direct_debit
#: help:payment.mode,sepa_creditor_identifier:0
msgid ""
-"Enter the Creditor Identifier that has been attributed to your company to "
-"make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from "
-"company will be used.\n"
+"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from company will be used.\n"
"This identifier is composed of :\n"
"- your country ISO code (2 letters)\n"
"- a 2-digits checkum\n"
"- a 3-letters business code\n"
"- a country-specific identifier"
-msgstr ""
-"Introduzca el identificador de acreedor que se le ha atribuido a su compañía "
-"para realizar adeudos directos SEPA. Su banco suele poseer esta información. "
-"Este identificador se compone de:\n"
-"- el código ISO de 2 letras de su país\n"
-"- dos dígitos de comprobación\n"
-"- tres letras de código de negocio\n"
-"- un identificador específico de país (en España, el NIF)"
+msgstr "Introduzca el identificador de acreedor que se le ha atribuido a su compañía para realizar adeudos directos SEPA. Su banco suele poseer esta información. Este identificador se compone de:\n- el código ISO de 2 letras de su país\n- dos dígitos de comprobación\n- tres letras de código de negocio\n- un identificador específico de país (en España, el NIF)"
#. module: account_banking_sepa_direct_debit
#: help:res.company,sepa_creditor_identifier:0
msgid ""
-"Enter the Creditor Identifier that has been attributed to your company to "
-"make SEPA Direct Debits. This identifier is composed of :\n"
+"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n"
"- your country ISO code (2 letters)\n"
"- a 2-digits checkum\n"
"- a 3-letters business code\n"
"- a country-specific identifier"
-msgstr ""
-"Introduzca el identificador de acreedor que se le ha atribuido a su compañía "
-"para realizar adeudos directos SEPA. Su banco suele poseer esta información. "
-"Este identificador se compone de:\n"
-"- el código ISO de 2 letras de su país\n"
-"- dos dígitos de comprobación\n"
-"- tres letras de código de negocio\n"
-"- un identificador específico de país (en España, el NIF)"
+msgstr "Introduzca el identificador de acreedor que se le ha atribuido a su compañía para realizar adeudos directos SEPA. Su banco suele poseer esta información. Este identificador se compone de:\n- el código ISO de 2 letras de su país\n- dos dígitos de comprobación\n- tres letras de código de negocio\n- un identificador específico de país (en España, el NIF)"
#. module: account_banking_sepa_direct_debit
#: selection:account.banking.mandate,scheme:0
@@ -237,8 +192,8 @@ msgid "Enterprise (B2B)"
msgstr "Empresa (B2B)"
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:41
-#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:31
+#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:42
+#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:32
#, python-format
msgid "Error"
msgstr "Error"
@@ -282,21 +237,13 @@ msgstr "Según el acuerdo de servicio"
#: help:banking.export.sdd.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 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."
+"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_direct_debit
#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
@@ -315,7 +262,8 @@ msgstr "Identificador:"
#. module: account_banking_sepa_direct_debit
#: help:payment.mode,original_creditor_identifier:0
-msgid "If not defined, Original Creditor Identifier from company will be used."
+msgid ""
+"If not defined, Original Creditor Identifier from company will be used."
msgstr ""
#. module: account_banking_sepa_direct_debit
@@ -327,13 +275,7 @@ msgid ""
"required in a few countries (Belgium for instance), but not in all "
"countries. If this is not required in your country, you should keep this "
"field always active."
-msgstr ""
-"Si este campo no está marcado, la sección 'mandato' del próximo archivo de "
-"adeudo directo que lo incluya contendrá el valor de los campos "
-"'Identificación del mandato original' y 'Identificación del esquema original "
-"del acreedor'. Esto se requiere en algunos países (Bélgica por ejemplo), "
-"pero no en todos ellos. Si no es un requisito en su país, este campo siempre "
-"debe estar marcado."
+msgstr "Si este campo no está marcado, la sección 'mandato' del próximo archivo de adeudo directo que lo incluya contendrá el valor de los campos 'Identificación del mandato original' y 'Identificación del esquema original del acreedor'. Esto se requiere en algunos países (Bélgica por ejemplo), pero no en todos ellos. Si no es un requisito en su país, este campo siempre debe estar marcado."
#. module: account_banking_sepa_direct_debit
#: help:banking.export.sdd.wizard,batch_booking:0
@@ -341,15 +283,11 @@ msgid ""
"If true, the bank statement will display only one credit line for all the "
"direct debits of the SEPA file ; if false, the bank statement will display "
"one credit line per direct debit of the SEPA 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."
+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_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:42
-#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:32
+#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:43
+#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:33
#, python-format
msgid "Invalid SEPA Creditor Identifier."
msgstr "Identificador de acreedor SEPA no válido."
@@ -370,7 +308,7 @@ msgid "Mandate Reference:"
msgstr "Referencia del mandato:"
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:109
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:115
#, python-format
msgid "Mandate update"
msgstr "Actualizacion de mandato"
@@ -384,11 +322,9 @@ msgstr "Migrado a SEPA"
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:159
#, python-format
msgid ""
-"Missing SEPA Direct Debit mandate on the bank payment line with partner "
-"'%s' (reference '%s')."
-msgstr ""
-"Falta el mandato de adeudo directo SEPA en la linea de pago bancario con la "
-"empresa '%s' (referencia '%s')."
+"Missing SEPA Direct Debit mandate on the bank payment line with partner '%s'"
+" (reference '%s')."
+msgstr "Falta el mandato de adeudo directo SEPA en la linea de pago bancario con la empresa '%s' (referencia '%s')."
#. module: account_banking_sepa_direct_debit
#: field:banking.export.sdd.wizard,nb_transactions:0
@@ -433,12 +369,9 @@ msgstr "Órdenes de pago"
#, python-format
msgid ""
"Payment Type Code '%s' is not supported. The only Payment Type Code "
-"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and "
-"'pain.008.001.04'."
-msgstr ""
-"El código de tipo de pago '%s' no está soportado. Los únicos códigos de tipo "
-"de pago soportados para los adedudos directos SEPA son 'pain.008.001.02', "
-"'pain.008.001.03' y 'pain.008.001.04'."
+"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and"
+" 'pain.008.001.04'."
+msgstr "El código de tipo de pago '%s' no está soportado. Los únicos códigos de tipo de pago soportados para los adedudos directos SEPA son 'pain.008.001.02', 'pain.008.001.03' y 'pain.008.001.04'."
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
@@ -557,9 +490,7 @@ msgstr "Swift BIC (puede contener 8 u 11 posiciones):"
msgid ""
"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has "
"expired."
-msgstr ""
-"El mandato de adeudo directo SEPA con referencia '%s' para la empresa '%s' "
-"ha expirado."
+msgstr "El mandato de adeudo directo SEPA con referencia '%s' para la empresa '%s' ha expirado."
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:174
@@ -567,25 +498,21 @@ msgstr ""
msgid ""
"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' "
"and it has a last debit date set to '%s', so we can't use it."
-msgstr ""
-"El mandato con referencia '%s' para la empresa '%s' tipo como 'Único', ya "
-"tiene como fecha de último cobro '%s', por lo que no se puede usar."
+msgstr "El mandato con referencia '%s' para la empresa '%s' tipo como 'Único', ya tiene como fecha de último cobro '%s', por lo que no se puede usar."
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:75
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:76
#, python-format
msgid "The recurrent mandate '%s' must have a sequence type."
msgstr "El mandato periódico '%s' debe tener un tipo de secuencia."
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:84
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:86
#, python-format
msgid ""
"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must "
"have its recurrent sequence type set to 'First'."
-msgstr ""
-"El mandato periódico '%s', que no está marcado como 'Migrado a SEPA', debe "
-"establecer su tipo de secuencia a 'Inicial'."
+msgstr "El mandato periódico '%s', que no está marcado como 'Migrado a SEPA', debe establecer su tipo de secuencia a 'Inicial'."
#. module: account_banking_sepa_direct_debit
#: help:account.banking.mandate,recurrent_sequence_type:0
@@ -597,19 +524,10 @@ msgstr "Este campo se utiliza sólo para mandatos periódicos, no para únicos."
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid ""
"This mandate is only intended for business-to-business transactions.\n"
-" You are not entitled to a refund from your bank "
-"after your account has\n"
-" been debited, but you are entitled to request your "
-"bank\n"
-" not to debit your account up until the day on which "
-"the payment is due."
-msgstr ""
-"Esta orden de domiciliación está prevista para operaciones exclusivamente "
-"entre empresas y/o autónomos. El deudor no tiene derecho a que su entidad le "
-"reembolse una vez que se haya realizado el cargo en cuenta, pero puede "
-"solicitar a su entidad que no efectúe el adeudo en la cuenta hasta la fecha "
-"debida. Podrá obtener información detallada del procedimiento en su entidad "
-"financiera."
+" You are not entitled to a refund from your bank after your account has\n"
+" been debited, but you are entitled to request your bank\n"
+" not to debit your account up until the day on which the payment is due."
+msgstr "Esta orden de domiciliación está prevista para operaciones exclusivamente entre empresas y/o autónomos. El deudor no tiene derecho a que su entidad le reembolse una vez que se haya realizado el cargo en cuenta, pero puede solicitar a su entidad que no efectúe el adeudo en la cuenta hasta la fecha debida. Podrá obtener información detallada del procedimiento en su entidad financiera."
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
@@ -652,28 +570,19 @@ msgstr "Validar"
msgid ""
"When the field 'Migrated to SEPA' is not active, this field will be used as "
"the Original Mandate Identification in the Direct Debit file."
-msgstr ""
-"Cuando el campo 'Migrado a SEPA' no está marcado, este campo se usa como "
-"identificación del mandato original en el archivo de adeudo directo."
+msgstr "Cuando el campo 'Migrado a SEPA' no está marcado, este campo se usa como identificación del mandato original en el archivo de adeudo directo."
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:94
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:98
#, python-format
msgid ""
"You must set the 'Original Mandate Identification' on the recurrent mandate "
"'%s' which is not marked as 'Migrated to SEPA'."
-msgstr ""
-"Debe establecer el campo 'Identificación de mandato original en el mandato "
-"periódico '%s', que no está marcado como 'Migrado a SEPA'."
+msgstr "Debe establecer el campo 'Identificación de mandato original en el mandato periódico '%s', que no está marcado como 'Migrado a SEPA'."
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid ""
-"to send instructions to your bank to debit your account and (B) your bank "
-"to\n"
-" debit your account in accordance with the "
-"instructions from"
-msgstr ""
-"a enviar instrucciones a la entidad del deudor para adeudar su cuenta y (B) "
-"a la entidad para efectuar los adeudos en su cuenta siguiendo las "
-"instrucciones del acreedor "
+"to send instructions to your bank to debit your account and (B) your bank to\n"
+" debit your account in accordance with the instructions from"
+msgstr "a enviar instrucciones a la entidad del deudor para adeudar su cuenta y (B) a la entidad para efectuar los adeudos en su cuenta siguiendo las instrucciones del acreedor "
diff --git a/account_banking_sepa_direct_debit/i18n/fr.po b/account_banking_sepa_direct_debit/i18n/fr.po
index 3744da850..75cc33f0f 100644
--- a/account_banking_sepa_direct_debit/i18n/fr.po
+++ b/account_banking_sepa_direct_debit/i18n/fr.po
@@ -1,50 +1,220 @@
-# Translation of OpenERP Server.
+# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * account_banking_sepa_direct_debit
-#
+# * account_banking_sepa_direct_debit
+#
+# Translators:
msgid ""
msgstr ""
-"Project-Id-Version: OpenERP Server 7.0\n"
+"Project-Id-Version: bank-payment (8.0)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-12-23 22:24+0000\n"
-"PO-Revision-Date: 2014-02-01 04:49+0000\n"
-"Last-Translator: Alexis de Lattre \n"
-"Language-Team: \n"
+"POT-Creation-Date: 2016-04-08 00:46+0000\n"
+"PO-Revision-Date: 2016-04-07 16:04+0000\n"
+"Last-Translator: OCA Transbot \n"
+"Language-Team: French (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/fr/)\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"
+"Content-Transfer-Encoding: \n"
+"Language: fr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: account_banking_sepa_direct_debit
-#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_valid
-msgid "SEPA Direct Debit Mandate Validated"
-msgstr "Mandat de prélèvement SEPA validé"
+#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.mandate_action
+msgid ""
+"
\n"
+" Click to create a new SEPA Direct Debit Mandate.\n"
+"
\n"
+" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n"
+"
\n"
+" "
+msgstr "
\n Cliquez pour créer un mandat de prélèvement SEPA.\n
\n Un mandat de prélèvement SEPA est un document signé par votre client qui vous donne l'autorisation de réaliser un ou plusieurs prélèvements sur son compte bancaire.\n
\n "
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_banking_mandate
+msgid "A generic banking mandate"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO "
+"CREDITOR FOR STORAGE."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.\n"
+" NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n"
+" THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Account Number - IBAN:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Address of the Debtor:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Address:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"As part of your rights, you are entitled to a refund from\n"
+" your bank under the terms and conditions of your agreement\n"
+" with your bank.\n"
+" A refund must be claimed within 8 weeks starting from the date on which your account was debited."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:116
+#, python-format
+msgid ""
+"As you changed the bank account attached to this mandate, the 'Sequence "
+"Type' has been set back to 'First'."
+msgstr "Etant donné que vous avez changé le compte bancaire associé à ce mandat, le 'Type de séquence' a été remis à 'First'."
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_bank_payment_line
+msgid "Bank Payment Lines"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,scheme:0
+msgid "Basic (CORE)"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,batch_booking:0
+msgid "Batch Booking"
+msgstr "Crédit groupé"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Borne by Creditor"
+msgstr "Supportés par le créancier"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Borne by Debtor"
+msgstr "Supportés par le débiteur"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "By signing this mandate form, you authorise (A)"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,charge_bearer:0
+msgid "Charge Bearer"
+msgstr "Répartition des frais"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company
+msgid "Companies"
+msgstr "Sociétés"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Country of the debtor:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Country:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,state:0
+msgid "Create"
+msgstr "Créer"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,create_uid:0
+msgid "Created by"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,create_date:0
+msgid "Created on"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Creditor's Name:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Date - Location:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Debtor's Name:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:payment.mode,sepa_creditor_identifier:0
+msgid ""
+"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from company will be used.\n"
+"This identifier is composed of :\n"
+"- your country ISO code (2 letters)\n"
+"- a 2-digits checkum\n"
+"- a 3-letters business code\n"
+"- a country-specific identifier"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:res.company,sepa_creditor_identifier:0
+msgid ""
+"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n"
+"- your country ISO code (2 letters)\n"
+"- a 2-digits checkum\n"
+"- a 3-letters business code\n"
+"- a country-specific identifier"
+msgstr "Entrez l'Identifiant créancier qui a été attribué à votre société pour réaliser des prélèvements SEPA. Cet identifiant est composé de :\n- du code ISO de votre pays (2 lettres)\n- un code de contrôle à 2 chiffres\n- un code d'activité à 3 lettres\n- un identifiant national"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,scheme:0
+msgid "Enterprise (B2B)"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:42
+#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:32
+#, python-format
+msgid "Error"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard
+msgid "Export SEPA Direct Debit File"
+msgstr "Export du fichier de prélèvement SEPA"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,file:0
+msgid "File"
+msgstr "Fichier"
#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,filename:0
#: field:banking.export.sdd.wizard,filename:0
msgid "Filename"
msgstr "Nom du fichier"
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:200
-#, python-format
-msgid ""
-"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has "
-"expired."
-msgstr ""
-"Le mandat de prélèvement SEPA portant la référence '%s' pour le partenaire "
-"'%s' a expiré."
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:219
-#, python-format
-msgid "Cannot validate the mandate '%s' without a date of signature."
-msgstr "Impossible de valider le mandat '%s' sans date de signature."
-
-#. module: account_banking_sepa_direct_debit
-#: selection:sdd.mandate,recurrent_sequence_type:0
+#: selection:account.banking.mandate,recurrent_sequence_type:0
msgid "Final"
msgstr "Final"
@@ -54,359 +224,50 @@ msgid "Finish"
msgstr "Finir"
#. module: account_banking_sepa_direct_debit
-#: view:res.partner:0
-#: view:res.partner.bank:0
-msgid "SDD Mandates"
-msgstr "Mandats SEPA"
-
-#. module: account_banking_sepa_direct_debit
-#: constraint:payment.line:0
-#: constraint:sdd.mandate:0
-msgid "Error msg in raise"
-msgstr "Error msg in raise"
-
-#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd,state:0
-msgid "Reconciled"
-msgstr "Réconcilié"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,recurrent_sequence_type:0
-msgid "Sequence Type for Next Debit"
-msgstr "Type de séquence pour le prochain prélèvement"
-
-#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd,charge_bearer:0
-#: selection:banking.export.sdd.wizard,charge_bearer:0
-msgid "Borne by Creditor"
-msgstr "Supportés par le créancier"
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.sdd_mandate_action
-#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.sdd_mandate_menu
-#: view:res.partner.bank:0
-#: field:res.partner.bank,sdd_mandate_ids:0
-msgid "SEPA Direct Debit Mandates"
-msgstr "Mandats de prélèvement SEPA"
-
-#. module: account_banking_sepa_direct_debit
-#: view:banking.export.sdd.wizard:0
-#: view:sdd.mandate:0
-msgid "Validate"
-msgstr "Valider"
-
-#. module: account_banking_sepa_direct_debit
-#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
-#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
-msgid "Sequence Type set to Recurring"
-msgstr "Type de séquence mis à Recurring"
-
-#. module: account_banking_sepa_direct_debit
-#: view:banking.export.sdd.wizard:0
-msgid "Generate"
-msgstr "Générer"
-
-#. module: account_banking_sepa_direct_debit
-#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_cancel
-msgid "SEPA Direct Debit Mandate Cancelled"
-msgstr "Mandat de prélèvement SEPA annulé"
-
-#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd,charge_bearer:0
-#: selection:banking.export.sdd.wizard,charge_bearer:0
-msgid "Borne by Debtor"
-msgstr "Supportés par le débiteur"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:212
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:218
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:224
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:232
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:239
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:245
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:253
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:395
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:140
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:192
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:199
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:209
-#, python-format
-msgid "Error:"
-msgstr "Erreur :"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,message_ids:0
-msgid "Messages"
-msgstr "Messages"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,unique_mandate_reference:0
-msgid "Unique Mandate Reference"
-msgstr "Référence unique de mandat"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-#: selection:sdd.mandate,state:0
-msgid "Cancelled"
-msgstr "Annulé"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:141
-#, python-format
-msgid ""
-"Payment Type Code '%s' is not supported. The only Payment Type Code "
-"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and "
-"'pain.008.001.04'."
-msgstr ""
-"Le code du Type de paiement '%s' n'est pas supporté. Les seuls codes de Type "
-"de paiement supportés pour les prélèvements SEPA sont 'pain.008.001.02', "
-"'pain.008.001.03' et 'pain.008.001.04'."
-
-#. module: account_banking_sepa_direct_debit
-#: help:sdd.mandate,message_unread:0
-msgid "If checked new messages require your attention."
-msgstr "If checked new messages require your attention."
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd.wizard,file_id:0
-msgid "SDD File"
-msgstr "Fichier de prélèvement SEPA"
-
-#. module: account_banking_sepa_direct_debit
-#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_expired
-msgid "SEPA Direct Debit Mandate has Expired"
-msgstr "Le mandat de prélèvement SEPA a expiré"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:246
-#, python-format
-msgid ""
-"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must "
-"have its recurrent sequence type set to 'First'."
-msgstr ""
-"Le mandat récurrent '%s' dont l'option 'Migré à SEPA' n'est pas activée doit "
-"avec sa séquence mise à 'First'."
-
-#. module: account_banking_sepa_direct_debit
-#: help:banking.export.sdd,charge_bearer:0
-#: help:banking.export.sdd.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 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_direct_debit
-#: view:sdd.mandate:0
-msgid "Reference"
-msgstr "Référence"
-
-#. module: account_banking_sepa_direct_debit
-#: view:banking.export.sdd:0
-msgid "SEPA Direct Debit"
-msgstr "Prélèvement SEPA"
-
-#. module: account_banking_sepa_direct_debit
-#: view:banking.export.sdd.wizard:0
-msgid "SEPA Direct Debit XML file generation"
-msgstr "Génération de fichiers de prélèvement SEPA XML"
-
-#. module: account_banking_sepa_direct_debit
-#: help:sdd.mandate,message_summary:0
-msgid ""
-"Holds the Chatter summary (number of messages, ...). This summary is "
-"directly in html format in order to be inserted in kanban views."
-msgstr ""
-"Holds the Chatter summary (number of messages, ...). This summary is "
-"directly in html format in order to be inserted in kanban views."
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_line
-msgid "Payment Line"
-msgstr "Ligne de paiement"
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,create_date:0
-msgid "Generation Date"
-msgstr "Date de génération"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:396
-#, python-format
-msgid ""
-"The payment line with reference '%s' has the bank account '%s' which is not "
-"attached to the mandate '%s' (this mandate is attached to the bank account "
-"'%s')."
-msgstr ""
-"La ligne de paiement portant la référence '%s' est configurée avec le compte "
-"bancaire '%s' qui n'est pas rattaché au mandat '%s' (ce mandat est rattaché "
-"au compte bancaire '%s')."
-
-#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd.wizard,state:0
-msgid "Create"
-msgstr "Créer"
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,nb_transactions:0
-#: field:banking.export.sdd.wizard,nb_transactions:0
-msgid "Number of Transactions"
-msgstr "Nombre de transactions"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-#: selection:sdd.mandate,type:0
-msgid "One-Off"
-msgstr "One-Off"
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,state:0
-#: field:banking.export.sdd.wizard,state:0
-msgid "State"
-msgstr "État"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:240
-#, python-format
-msgid "The recurrent mandate '%s' must have a sequence type."
-msgstr "Le mandat récurrent '%s' doit avoir un type de séquence."
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,message_follower_ids:0
-msgid "Followers"
-msgstr "Followers"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,message_unread:0
-msgid "Unread Messages"
-msgstr "Unread Messages"
-
-#. module: account_banking_sepa_direct_debit
-#: view:banking.export.sdd:0
-#: field:banking.export.sdd,payment_order_ids:0
-#: field:banking.export.sdd.wizard,payment_order_ids:0
-msgid "Payment Orders"
-msgstr "Ordres de paiement"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-msgid "Type"
-msgstr "Type"
-
-#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd,state:0
-msgid "Sent"
-msgstr "Envoyé"
-
-#. module: account_banking_sepa_direct_debit
-#: field:res.company,original_creditor_identifier:0
-msgid "Original Creditor Identifier"
-msgstr "Ancien Identifiant Créancier"
-
-#. module: account_banking_sepa_direct_debit
-#: selection:sdd.mandate,recurrent_sequence_type:0
-msgid "Recurring"
-msgstr "Recurring"
-
-#. module: account_banking_sepa_direct_debit
-#: help:res.company,sepa_creditor_identifier:0
-msgid ""
-"Enter the Creditor Identifier that has been attributed to your company to "
-"make SEPA Direct Debits. This identifier is composed of :\n"
-"- your country ISO code (2 letters)\n"
-"- a 2-digits checkum\n"
-"- a 3-letters business code\n"
-"- a country-specific identifier"
-msgstr ""
-"Entrez l'Identifiant créancier qui a été attribué à votre société pour "
-"réaliser des prélèvements SEPA. Cet identifiant est composé de :\n"
-"- du code ISO de votre pays (2 lettres)\n"
-"- un code de contrôle à 2 chiffres\n"
-"- un code d'activité à 3 lettres\n"
-"- un identifiant national"
-
-#. module: account_banking_sepa_direct_debit
-#: sql_constraint:sdd.mandate:0
-msgid "A Mandate with the same reference already exists for this company !"
-msgstr "Un mandat avec la même référence existe déjà pour cette société !"
-
-#. module: account_banking_sepa_direct_debit
-#: help:sdd.mandate,state:0
-msgid ""
-"Only valid mandates can be used in a payment line. A cancelled mandate is a "
-"mandate that has been cancelled by the customer. A one-off mandate expires "
-"after its first use. A recurrent mandate expires after it's final use or if "
-"it hasn't been used for 36 months."
-msgstr ""
-"Seuls des mandats valides peuvent être utilisés dans une ligne de paiement. "
-"Un mandate annulé est un mandat qui a été annulé par le client. Un mandat "
-"One-Off expire à l'issue de sa première utilisation. Un mandate récurrent "
-"expire après sa dernière utilisation ou si il n'a pas été utilisé pendant 36 "
-"mois."
-
-#. module: account_banking_sepa_direct_debit
-#: help:sdd.mandate,recurrent_sequence_type:0
-msgid ""
-"This field is only used for Recurrent mandates, not for One-Off mandates."
-msgstr ""
-"Ce champ n'est utilisé que pour les mandats récurrents, pas pour les mandats "
-"One-Off."
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:213
-#, python-format
-msgid "The date of signature of mandate '%s' is in the future !"
-msgstr "La date de signature du mandat '%s' est dans le futur !"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-msgid "Signature Date"
-msgstr "Date de signature"
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,charge_bearer:0
-#: field:banking.export.sdd.wizard,charge_bearer:0
-msgid "Charge Bearer"
-msgstr "Répartition des frais"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,partner_id:0
-msgid "Partner"
-msgstr "Partenaire"
-
-#. module: account_banking_sepa_direct_debit
-#: selection:sdd.mandate,recurrent_sequence_type:0
+#: selection:account.banking.mandate,recurrent_sequence_type:0
msgid "First"
msgstr "First"
#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,signature_date:0
-msgid "Date of Signature of the Mandate"
-msgstr "Date de signature du mandat"
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Following Service Level"
+msgstr "Suivant le niveau de service"
#. module: account_banking_sepa_direct_debit
-#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_cancel
-msgid "Mandate Cancelled"
-msgstr "Mandat annulé"
+#: help:banking.export.sdd.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 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_direct_debit
-#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.act_banking_export_sdd_payment_order
-msgid "Generated SEPA Direct Debit Files"
-msgstr "Fichiers de prélèvement SEPA générés"
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "Generate"
+msgstr "Générer"
#. module: account_banking_sepa_direct_debit
-#: help:sdd.mandate,sepa_migrated:0
+#: field:banking.export.sdd.wizard,id:0
+msgid "ID"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Identifier:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:payment.mode,original_creditor_identifier:0
+msgid ""
+"If not defined, Original Creditor Identifier from company will be used."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:account.banking.mandate,sepa_migrated:0
msgid ""
"If this field is not active, the mandate section of the next direct debit "
"file that include this mandate will contain the 'Original Mandate "
@@ -414,109 +275,176 @@ msgid ""
"required in a few countries (Belgium for instance), but not in all "
"countries. If this is not required in your country, you should keep this "
"field always active."
-msgstr ""
-"Si cette option n'est pas activée, la section qui concerne le mandat dans le "
-"prochain fichier de prélèvement qui incluera ce mandat contiendra les champs "
-"'Original Mandate Identification' et 'Original Creditor Scheme "
-"Identification'. Ces champs sont requis dans certains pays (en Belgique "
-"notamment), mais pas dans tous les pays. Si ces champs ne sont pas requis "
-"dans votre pays, vous devriez garder ce champ toujours actif."
+msgstr "Si cette option n'est pas activée, la section qui concerne le mandat dans le prochain fichier de prélèvement qui incluera ce mandat contiendra les champs 'Original Mandate Identification' et 'Original Creditor Scheme Identification'. Ces champs sont requis dans certains pays (en Belgique notamment), mais pas dans tous les pays. Si ces champs ne sont pas requis dans votre pays, vous devriez garder ce champ toujours actif."
#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,company_id:0
-msgid "Company"
-msgstr "Société"
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard
-msgid "Export SEPA Direct Debit File"
-msgstr "Export du fichier de prélèvement SEPA"
-
-#. module: account_banking_sepa_direct_debit
-#: help:banking.export.sdd,batch_booking:0
#: help:banking.export.sdd.wizard,batch_booking:0
msgid ""
"If true, the bank statement will display only one credit line for all the "
"direct debits of the SEPA file ; if false, the bank statement will display "
"one credit line per direct debit of the SEPA file."
-msgstr ""
-"Si activé, le relevé de compte ne fera apparaître qu'une ligne de crédit "
-"pour tous les prélèvements du fichier SEPA ; si désactivé, le relevé de "
-"banque fera apparaître une ligne de crédit pour chaque prélèvement du "
-"fichier SEPA."
+msgstr "Si activé, le relevé de compte ne fera apparaître qu'une ligne de crédit pour tous les prélèvements du fichier SEPA ; si désactivé, le relevé de banque fera apparaître une ligne de crédit pour chaque prélèvement du fichier SEPA."
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:225
+#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:43
+#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:33
#, python-format
-msgid ""
-"Cannot validate the mandate '%s' because it is not attached to a bank "
-"account."
+msgid "Invalid SEPA Creditor Identifier."
+msgstr "Identifiant créancier SEPA invalide."
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,write_uid:0
+msgid "Last Updated by"
msgstr ""
-"Impossible de valider le mandat '%s' car il n'est pas rattaché à un compte "
-"bancaire."
#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd,state:0
-#: view:sdd.mandate:0
-#: selection:sdd.mandate,state:0
-msgid "Draft"
-msgstr "Brouillon"
+#: field:banking.export.sdd.wizard,write_date:0
+msgid "Last Updated on"
+msgstr ""
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:290
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Mandate Reference:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:115
#, python-format
msgid "Mandate update"
msgstr "Mise-à-jour du mandat"
#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd,charge_bearer:0
-#: selection:banking.export.sdd.wizard,charge_bearer:0
-msgid "Shared"
-msgstr "Partagée"
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,batch_booking:0
-#: field:banking.export.sdd.wizard,batch_booking:0
-msgid "Batch Booking"
-msgstr "Crédit groupé"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,sepa_migrated:0
+#: field:account.banking.mandate,sepa_migrated:0
msgid "Migrated to SEPA"
msgstr "Migré à SEPA"
#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,state:0
-msgid "Status"
-msgstr "Statut"
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,total_amount:0
-#: field:banking.export.sdd.wizard,total_amount:0
-msgid "Total Amount"
-msgstr "Montant total"
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.action_account_banking_sdd
-#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.menu_account_banking_sdd
-msgid "SEPA Direct Debit Files"
-msgstr "Fichiers de prélèvement SEPA"
-
-#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd,charge_bearer:0
-#: selection:banking.export.sdd.wizard,charge_bearer:0
-msgid "Following Service Level"
-msgstr "Suivant le niveau de service"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:233
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:159
#, python-format
msgid ""
-"The mandate '%s' can't have a date of last debit before the date of "
-"signature."
+"Missing SEPA Direct Debit mandate on the bank payment line with partner '%s'"
+" (reference '%s')."
msgstr ""
-"Le mandat '%s' ne peut pas avoir une date de dernier débit antérieure à la "
-"date de signature."
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,nb_transactions:0
+msgid "Number of Transactions"
+msgstr "Nombre de transactions"
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: selection:account.banking.mandate,type:0
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "One-Off"
+msgstr "One-Off"
+
+#. module: account_banking_sepa_direct_debit
+#: field:payment.mode,original_creditor_identifier:0
+#: field:res.company,original_creditor_identifier:0
+msgid "Original Creditor Identifier"
+msgstr "Ancien Identifiant Créancier"
+
+#. module: account_banking_sepa_direct_debit
+#: field:account.banking.mandate,original_mandate_identification:0
+msgid "Original Mandate Identification"
+msgstr "Ancien Identifiant du Mandat"
+
+#. module: account_banking_sepa_direct_debit
+#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required
+msgid "Original Mandate Required (SEPA)"
+msgstr "Ancien mandat requis (SEPA)"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_mode
+msgid "Payment Mode"
+msgstr "Mode de paiement"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,payment_order_ids:0
+msgid "Payment Orders"
+msgstr "Ordres de paiement"
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:117
+#, python-format
+msgid ""
+"Payment Type Code '%s' is not supported. The only Payment Type Code "
+"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and"
+" 'pain.008.001.04'."
+msgstr "Le code du Type de paiement '%s' n'est pas supporté. Les seuls codes de Type de paiement supportés pour les prélèvements SEPA sont 'pain.008.001.02', 'pain.008.001.03' et 'pain.008.001.04'."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Postal Code - City - Town:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: selection:account.banking.mandate,type:0
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Recurrent"
+msgstr "Récurrent"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,recurrent_sequence_type:0
+msgid "Recurring"
+msgstr "Recurring"
+
+#. module: account_banking_sepa_direct_debit
+#: view:res.partner:account_banking_sepa_direct_debit.sdd_mandate_partner_form
+#: view:res.partner.bank:account_banking_sepa_direct_debit.sdd_mandate_partner_bank_tree
+msgid "SDD Mandates"
+msgstr "Mandats SEPA"
+
+#. module: account_banking_sepa_direct_debit
+#: field:payment.mode,sepa_creditor_identifier:0
+#: field:res.company,sepa_creditor_identifier:0
+msgid "SEPA Creditor Identifier"
+msgstr "Identifiant créancier SEPA"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.mandate_action
+msgid "SEPA Direct Debit Mandates"
+msgstr "Mandats de prélèvement SEPA"
+
+#. module: account_banking_sepa_direct_debit
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "SEPA Direct Debit XML file generation"
+msgstr "Génération de fichiers de prélèvement SEPA XML"
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: field:account.banking.mandate,scheme:0
+msgid "Scheme"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Sepa Business-To-Business Direct debit Mandate"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Sepa Direct Debit Mandate"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:35
+#: model:ir.actions.report.xml,name:account_banking_sepa_direct_debit.report_sepa_direct_debit_mandate
+#, python-format
+msgid "Sepa Mandate"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree
+msgid "Sequence Type"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:account.banking.mandate,recurrent_sequence_type:0
+msgid "Sequence Type for Next Debit"
+msgstr "Type de séquence pour le prochain prélèvement"
#. module: account_banking_sepa_direct_debit
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_final
@@ -524,199 +452,6 @@ msgstr ""
msgid "Sequence Type set to Final"
msgstr "Type de Séquence mis à Final"
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,message_is_follower:0
-msgid "Is a Follower"
-msgstr "Is a Follower"
-
-#. module: account_banking_sepa_direct_debit
-#: help:sdd.mandate,original_mandate_identification:0
-msgid ""
-"When the field 'Migrated to SEPA' is not active, this field will be used as "
-"the Original Mandate Identification in the Direct Debit file."
-msgstr ""
-"Quand le champ 'Migré à SEPA' n'est pas activé, ce champ sera le 'Original "
-"Mandate Identification' dans le fichier de prélèvement."
-
-#. module: account_banking_sepa_direct_debit
-#: view:payment.order:0
-msgid "SDD Mandate"
-msgstr "Mandat de prélèvement"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,original_mandate_identification:0
-msgid "Original Mandate Identification"
-msgstr "Ancien Identifiant du Mandat"
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company
-msgid "Companies"
-msgstr "Sociétés"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,message_summary:0
-msgid "Summary"
-msgstr "Résumé"
-
-#. module: account_banking_sepa_direct_debit
-#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required
-msgid "Original Mandate Required (SEPA)"
-msgstr "Ancien mandat requis (SEPA)"
-
-#. module: account_banking_sepa_direct_debit
-#: field:account.invoice,sdd_mandate_id:0
-#: model:ir.model,name:account_banking_sepa_direct_debit.model_sdd_mandate
-#: field:payment.line,sdd_mandate_id:0
-#: view:sdd.mandate:0
-msgid "SEPA Direct Debit Mandate"
-msgstr "Mandat de prélèvement SEPA"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:193
-#, python-format
-msgid ""
-"Missing SEPA Direct Debit mandate on the payment line with partner '%s' and "
-"Invoice ref '%s'."
-msgstr ""
-"Mandat de prélèvement SEPA manquant sur la ligne de paiement ayant pour "
-"partenaire '%s' et pour référence de facture '%s'."
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:210
-#, python-format
-msgid ""
-"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' "
-"and it has a last debit date set to '%s', so we can't use it."
-msgstr ""
-"Le mandat portant la référence '%s' pour le partenaire '%s' est de type 'One-"
-"Off' et il a une date de dernier débit au '%s', donc il n'est pas utilisable."
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,scan:0
-msgid "Scan of the Mandate"
-msgstr "Scan du mandat"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,last_debit_date:0
-msgid "Date of the Last Debit"
-msgstr "Date du dernier prélèvement"
-
-#. module: account_banking_sepa_direct_debit
-#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_expired
-msgid "Mandate Expired"
-msgstr "Mandat expiré"
-
-#. module: account_banking_sepa_direct_debit
-#: constraint:res.company:0
-msgid "Invalid SEPA Creditor Identifier."
-msgstr "Identifiant créancier SEPA invalide."
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_partner_bank
-msgid "Bank Accounts"
-msgstr "Comptes bancaires"
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.sdd_mandate_action
-msgid ""
-"
\n"
-" Click to create a new SEPA Direct Debit Mandate.\n"
-"
\n"
-" A SEPA Direct Debit Mandate is a document signed by your customer "
-"that gives you the autorization to do one or several direct debits on his "
-"bank account.\n"
-"
\n"
-" "
-msgstr ""
-"
\n"
-" Cliquez pour créer un mandat de prélèvement SEPA.\n"
-"
\n"
-" Un mandat de prélèvement SEPA est un document signé par votre client "
-"qui vous donne l'autorisation de réaliser un ou plusieurs prélèvements sur "
-"son compte bancaire.\n"
-"
\n"
-" "
-
-#. module: account_banking_sepa_direct_debit
-#: view:banking.export.sdd:0
-msgid "General Information"
-msgstr "Informations générales"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-#: selection:sdd.mandate,state:0
-msgid "Valid"
-msgstr "Valide"
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_invoice
-msgid "Invoice"
-msgstr "Facture"
-
-#. module: account_banking_sepa_direct_debit
-#: view:banking.export.sdd.wizard:0
-#: view:sdd.mandate:0
-msgid "Cancel"
-msgstr "Annuler"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-#: field:sdd.mandate,payment_line_ids:0
-msgid "Related Payment Lines"
-msgstr "Lignes de paiement associées"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-#: selection:sdd.mandate,type:0
-msgid "Recurrent"
-msgstr "Récurrent"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,type:0
-msgid "Type of Mandate"
-msgstr "Type de mandat"
-
-#. module: account_banking_sepa_direct_debit
-#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_valid
-msgid "Mandate Validated"
-msgstr "Mandat validé"
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,file:0
-msgid "SEPA File"
-msgstr "Fichier SEPA"
-
-#. module: account_banking_sepa_direct_debit
-#: field:res.company,sepa_creditor_identifier:0
-msgid "SEPA Creditor Identifier"
-msgstr "Identifiant créancier SEPA"
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd
-msgid "SEPA Direct Debit export"
-msgstr "Export de prélèvement SEPA"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-#: selection:sdd.mandate,state:0
-msgid "Expired"
-msgstr "Expiré"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,partner_bank_id:0
-msgid "Bank Account"
-msgstr "Compte bancaire"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:254
-#, python-format
-msgid ""
-"You must set the 'Original Mandate Identification' on the recurrent mandate "
-"'%s' which is not marked as 'Migrated to SEPA'."
-msgstr ""
-"Vous devez renseigner le champ 'Ancien identifiant du mandat' sur le mandat "
-"récurrent '%s' qui n'est pas marqué comme étant 'Migré à SEPA'."
-
#. module: account_banking_sepa_direct_debit
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_first
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_first
@@ -724,26 +459,130 @@ msgid "Sequence Type set to First"
msgstr "Type de Séquence mis à First"
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:291
+#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
+#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
+msgid "Sequence Type set to Recurring"
+msgstr "Type de séquence mis à Recurring"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Shared"
+msgstr "Partagée"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Signature of the debtor:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,state:0
+msgid "State"
+msgstr "État"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Swift BIC (up to 8 or 11 characteres):"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:166
#, python-format
msgid ""
-"As you changed the bank account attached to this mandate, the 'Sequence "
-"Type' has been set back to 'First'."
+"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has "
+"expired."
+msgstr "Le mandat de prélèvement SEPA portant la référence '%s' pour le partenaire '%s' a expiré."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:174
+#, python-format
+msgid ""
+"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' "
+"and it has a last debit date set to '%s', so we can't use it."
+msgstr "Le mandat portant la référence '%s' pour le partenaire '%s' est de type 'One-Off' et il a une date de dernier débit au '%s', donc il n'est pas utilisable."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:76
+#, python-format
+msgid "The recurrent mandate '%s' must have a sequence type."
+msgstr "Le mandat récurrent '%s' doit avoir un type de séquence."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:86
+#, python-format
+msgid ""
+"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must "
+"have its recurrent sequence type set to 'First'."
+msgstr "Le mandat récurrent '%s' dont l'option 'Migré à SEPA' n'est pas activée doit avec sa séquence mise à 'First'."
+
+#. module: account_banking_sepa_direct_debit
+#: help:account.banking.mandate,recurrent_sequence_type:0
+msgid ""
+"This field is only used for Recurrent mandates, not for One-Off mandates."
+msgstr "Ce champ n'est utilisé que pour les mandats récurrents, pas pour les mandats One-Off."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"This mandate is only intended for business-to-business transactions.\n"
+" You are not entitled to a refund from your bank after your account has\n"
+" been debited, but you are entitled to request your bank\n"
+" not to debit your account up until the day on which the payment is due."
msgstr ""
-"Etant donné que vous avez changé le compte bancaire associé à ce mandat, le "
-"'Type de séquence' a été remis à 'First'."
#. module: account_banking_sepa_direct_debit
-#: help:sdd.mandate,message_ids:0
-msgid "Messages and communication history"
-msgstr "Messages and communication history"
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "To be completed by the creditor"
+msgstr ""
#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-msgid "Search SEPA Direct Debit Mandates"
-msgstr "Recherche dans les mandats de prélèvement SEPA"
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "To be completed by the debtor"
+msgstr ""
#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd.wizard,file:0
-msgid "File"
-msgstr "Fichier"
+#: field:banking.export.sdd.wizard,total_amount:0
+msgid "Total Amount"
+msgstr "Montant total"
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree
+msgid "Type"
+msgstr "Type"
+
+#. module: account_banking_sepa_direct_debit
+#: field:account.banking.mandate,type:0
+msgid "Type of Mandate"
+msgstr "Type de mandat"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Type of payment:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "Validate"
+msgstr "Valider"
+
+#. module: account_banking_sepa_direct_debit
+#: help:account.banking.mandate,original_mandate_identification:0
+msgid ""
+"When the field 'Migrated to SEPA' is not active, this field will be used as "
+"the Original Mandate Identification in the Direct Debit file."
+msgstr "Quand le champ 'Migré à SEPA' n'est pas activé, ce champ sera le 'Original Mandate Identification' dans le fichier de prélèvement."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:98
+#, python-format
+msgid ""
+"You must set the 'Original Mandate Identification' on the recurrent mandate "
+"'%s' which is not marked as 'Migrated to SEPA'."
+msgstr "Vous devez renseigner le champ 'Ancien identifiant du mandat' sur le mandat récurrent '%s' qui n'est pas marqué comme étant 'Migré à SEPA'."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"to send instructions to your bank to debit your account and (B) your bank to\n"
+" debit your account in accordance with the instructions from"
+msgstr ""
diff --git a/account_banking_sepa_direct_debit/i18n/nl.po b/account_banking_sepa_direct_debit/i18n/nl.po
index 2c2ccc12f..8fb3b71df 100644
--- a/account_banking_sepa_direct_debit/i18n/nl.po
+++ b/account_banking_sepa_direct_debit/i18n/nl.po
@@ -1,52 +1,221 @@
-# Dutch translation for banking-addons
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the banking-addons package.
-# FIRST AUTHOR , 2014.
-#
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_banking_sepa_direct_debit
+#
+# Translators:
+# FIRST AUTHOR , 2014
msgid ""
msgstr ""
-"Project-Id-Version: banking-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2013-12-23 22:24+0000\n"
-"PO-Revision-Date: 2014-04-24 10:38+0000\n"
-"Last-Translator: Erwin van der Ploeg (BAS Solutions) \n"
-"Language-Team: Dutch \n"
+"Project-Id-Version: bank-payment (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-04-08 00:46+0000\n"
+"PO-Revision-Date: 2016-04-07 16:04+0000\n"
+"Last-Translator: OCA Transbot \n"
+"Language-Team: Dutch (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/nl/)\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"
+"Content-Transfer-Encoding: \n"
+"Language: nl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: account_banking_sepa_direct_debit
-#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_valid
-msgid "SEPA Direct Debit Mandate Validated"
-msgstr "SEPA incasso machtiging bevestigd."
+#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.mandate_action
+msgid ""
+"
\n"
+" Click to create a new SEPA Direct Debit Mandate.\n"
+"
\n"
+" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n"
+"
\n"
+" "
+msgstr "
\n Klik voor het maken van een nieuwe SEPA incasso machtiging.\n
\n Een SEPA incasso machtiging is een document ondertekend door uw klant, welke u toestemming geeft om incasso's uit te voeren op zijn bankrekening.\n
\n "
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_banking_mandate
+msgid "A generic banking mandate"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO "
+"CREDITOR FOR STORAGE."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.\n"
+" NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n"
+" THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Account Number - IBAN:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Address of the Debtor:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Address:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"As part of your rights, you are entitled to a refund from\n"
+" your bank under the terms and conditions of your agreement\n"
+" with your bank.\n"
+" A refund must be claimed within 8 weeks starting from the date on which your account was debited."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:116
+#, python-format
+msgid ""
+"As you changed the bank account attached to this mandate, the 'Sequence "
+"Type' has been set back to 'First'."
+msgstr "Omdat u de gekoppelde bankrekening heeft gewijzigd is de reeks terug gezet naar 'Eerste'."
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_bank_payment_line
+msgid "Bank Payment Lines"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,scheme:0
+msgid "Basic (CORE)"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,batch_booking:0
+msgid "Batch Booking"
+msgstr "Bach verwerking"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Borne by Creditor"
+msgstr "Op rekening van schuldeiser"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Borne by Debtor"
+msgstr "Rekening van schuldenaar"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "By signing this mandate form, you authorise (A)"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "Cancel"
+msgstr "Annuleer"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,charge_bearer:0
+msgid "Charge Bearer"
+msgstr "Kostenverdeling"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company
+msgid "Companies"
+msgstr "Bedrijven"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Country of the debtor:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Country:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,state:0
+msgid "Create"
+msgstr "Aanmaken"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,create_uid:0
+msgid "Created by"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,create_date:0
+msgid "Created on"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Creditor's Name:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Date - Location:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Debtor's Name:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:payment.mode,sepa_creditor_identifier:0
+msgid ""
+"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from company will be used.\n"
+"This identifier is composed of :\n"
+"- your country ISO code (2 letters)\n"
+"- a 2-digits checkum\n"
+"- a 3-letters business code\n"
+"- a country-specific identifier"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:res.company,sepa_creditor_identifier:0
+msgid ""
+"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n"
+"- your country ISO code (2 letters)\n"
+"- a 2-digits checkum\n"
+"- a 3-letters business code\n"
+"- a country-specific identifier"
+msgstr "Geef de Incassant-ID in, welke is toegewezen aan uw bedrijf om incasso's uit te voeren. De Incassant-ID is samengesteld uit:\n- uw ISO landcode (2 letters)\n- een 2 cijferig controlegetal\n- een 3 cijferig business code\n- een landspecifieke identifier"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,scheme:0
+msgid "Enterprise (B2B)"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:42
+#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:32
+#, python-format
+msgid "Error"
+msgstr "Fout"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard
+msgid "Export SEPA Direct Debit File"
+msgstr "Exporteer SEPA incasso bestand"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,file:0
+msgid "File"
+msgstr "Bestand"
#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,filename:0
#: field:banking.export.sdd.wizard,filename:0
msgid "Filename"
msgstr "Bestandsnaam"
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:200
-#, python-format
-msgid ""
-"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has "
-"expired."
-msgstr ""
-"De SEPA incasso machtiging met referentie '%s' voor relatie '%s' is verlopen."
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:219
-#, python-format
-msgid "Cannot validate the mandate '%s' without a date of signature."
-msgstr ""
-"Het is niet mogelijk de machtiging '%s' te bevestigen zonder een datum van "
-"ondertekenen."
-
-#. module: account_banking_sepa_direct_debit
-#: selection:sdd.mandate,recurrent_sequence_type:0
+#: selection:account.banking.mandate,recurrent_sequence_type:0
msgid "Final"
msgstr "Definitief"
@@ -56,361 +225,50 @@ msgid "Finish"
msgstr "Gereed"
#. module: account_banking_sepa_direct_debit
-#: view:res.partner:0
-#: view:res.partner.bank:0
-msgid "SDD Mandates"
-msgstr "SDD machteging"
-
-#. module: account_banking_sepa_direct_debit
-#: constraint:payment.line:0
-#: constraint:sdd.mandate:0
-msgid "Error msg in raise"
-msgstr "Fout bericht"
-
-#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd,state:0
-msgid "Reconciled"
-msgstr "Afgeletterd"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,recurrent_sequence_type:0
-msgid "Sequence Type for Next Debit"
-msgstr "Reeks soort voor volgende incasso"
-
-#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd,charge_bearer:0
-#: selection:banking.export.sdd.wizard,charge_bearer:0
-msgid "Borne by Creditor"
-msgstr "Op rekening van schuldeiser"
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.sdd_mandate_action
-#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.sdd_mandate_menu
-#: view:res.partner.bank:0
-#: field:res.partner.bank,sdd_mandate_ids:0
-msgid "SEPA Direct Debit Mandates"
-msgstr "SEPA incasso machtegingen"
-
-#. module: account_banking_sepa_direct_debit
-#: view:banking.export.sdd.wizard:0
-#: view:sdd.mandate:0
-msgid "Validate"
-msgstr "Bevestigen"
-
-#. module: account_banking_sepa_direct_debit
-#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
-#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
-msgid "Sequence Type set to Recurring"
-msgstr "Reeks soort ingesteld op herhalend"
-
-#. module: account_banking_sepa_direct_debit
-#: view:banking.export.sdd.wizard:0
-msgid "Generate"
-msgstr "Genereer"
-
-#. module: account_banking_sepa_direct_debit
-#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_cancel
-msgid "SEPA Direct Debit Mandate Cancelled"
-msgstr "SEPA incasso machtegingen geannuleerd"
-
-#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd,charge_bearer:0
-#: selection:banking.export.sdd.wizard,charge_bearer:0
-msgid "Borne by Debtor"
-msgstr "Rekening van schuldenaar"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:212
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:218
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:224
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:232
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:239
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:245
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:253
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:395
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:140
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:192
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:199
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:209
-#, python-format
-msgid "Error:"
-msgstr "Fout:"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,message_ids:0
-msgid "Messages"
-msgstr "Berichten"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,unique_mandate_reference:0
-msgid "Unique Mandate Reference"
-msgstr "Unieke machtiging referentie"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-#: selection:sdd.mandate,state:0
-msgid "Cancelled"
-msgstr "Geannuleerd"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:141
-#, python-format
-msgid ""
-"Payment Type Code '%s' is not supported. The only Payment Type Code "
-"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and "
-"'pain.008.001.04'."
-msgstr ""
-"Betaal soort code '%s' wordt niet ondersteund. De enige betaalsoort code "
-"ondersteund voor SEPA incasso's zijn 'pain.008.001.02', 'pain.008.001.03' en "
-"'pain.008.001.04'."
-
-#. module: account_banking_sepa_direct_debit
-#: help:sdd.mandate,message_unread:0
-msgid "If checked new messages require your attention."
-msgstr "Indien aangevinkt zullen nieuwe berichten uw aandacht vragen."
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd.wizard,file_id:0
-msgid "SDD File"
-msgstr "SDD bestand"
-
-#. module: account_banking_sepa_direct_debit
-#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_expired
-msgid "SEPA Direct Debit Mandate has Expired"
-msgstr "SEPA Direct incasso machtiging is verlopen"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:246
-#, python-format
-msgid ""
-"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must "
-"have its recurrent sequence type set to 'First'."
-msgstr ""
-"Bij de herhalende machtiging '%s' welke niet is gemarkeerd als 'gemigreerd "
-"naar SEPA' dient de reeks soort te worden ingesteld op 'Eerste'."
-
-#. module: account_banking_sepa_direct_debit
-#: help:banking.export.sdd,charge_bearer:0
-#: help:banking.export.sdd.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 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_direct_debit
-#: view:sdd.mandate:0
-msgid "Reference"
-msgstr "Referentie"
-
-#. module: account_banking_sepa_direct_debit
-#: view:banking.export.sdd:0
-msgid "SEPA Direct Debit"
-msgstr "SEPA Incasso (Direct Debit)"
-
-#. module: account_banking_sepa_direct_debit
-#: view:banking.export.sdd.wizard:0
-msgid "SEPA Direct Debit XML file generation"
-msgstr "SEPA Incasso XML bestand aanmaken"
-
-#. module: account_banking_sepa_direct_debit
-#: help:sdd.mandate,message_summary:0
-msgid ""
-"Holds the Chatter summary (number of messages, ...). This summary is "
-"directly in html format in order to be inserted in kanban views."
-msgstr ""
-"Bevat de samenvatting van de chatter (aantal berichten,...). Deze "
-"samenvatting is direct in html formaat om zo in de kanban weergave te worden "
-"ingevoegd."
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_line
-msgid "Payment Line"
-msgstr "Betaalregel"
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,create_date:0
-msgid "Generation Date"
-msgstr "Aangemaakt op"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:396
-#, python-format
-msgid ""
-"The payment line with reference '%s' has the bank account '%s' which is not "
-"attached to the mandate '%s' (this mandate is attached to the bank account "
-"'%s')."
-msgstr ""
-"De betaalregel met referentie '%s' heeft het bankrekeningnummer '%s' welke "
-"niet is gekoppeld aan de machtiging '%s' (deze machtiging is gekoppeld aan "
-"bankrekening '%s')."
-
-#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd.wizard,state:0
-msgid "Create"
-msgstr "Aanmaken"
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,nb_transactions:0
-#: field:banking.export.sdd.wizard,nb_transactions:0
-msgid "Number of Transactions"
-msgstr "Aantal transacties"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-#: selection:sdd.mandate,type:0
-msgid "One-Off"
-msgstr "Eenmalig"
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,state:0
-#: field:banking.export.sdd.wizard,state:0
-msgid "State"
-msgstr "Status"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:240
-#, python-format
-msgid "The recurrent mandate '%s' must have a sequence type."
-msgstr "De herhalende machtiging '%s' dient een reeks soort te hebben."
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,message_follower_ids:0
-msgid "Followers"
-msgstr "Volgers"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,message_unread:0
-msgid "Unread Messages"
-msgstr "Ongelezen berichten"
-
-#. module: account_banking_sepa_direct_debit
-#: view:banking.export.sdd:0
-#: field:banking.export.sdd,payment_order_ids:0
-#: field:banking.export.sdd.wizard,payment_order_ids:0
-msgid "Payment Orders"
-msgstr "Betaalopdrachten"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-msgid "Type"
-msgstr "Soort"
-
-#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd,state:0
-msgid "Sent"
-msgstr "Verstuurd"
-
-#. module: account_banking_sepa_direct_debit
-#: field:res.company,original_creditor_identifier:0
-msgid "Original Creditor Identifier"
-msgstr "Originele Incassant-ID"
-
-#. module: account_banking_sepa_direct_debit
-#: selection:sdd.mandate,recurrent_sequence_type:0
-msgid "Recurring"
-msgstr "Terugkerend"
-
-#. module: account_banking_sepa_direct_debit
-#: help:res.company,sepa_creditor_identifier:0
-msgid ""
-"Enter the Creditor Identifier that has been attributed to your company to "
-"make SEPA Direct Debits. This identifier is composed of :\n"
-"- your country ISO code (2 letters)\n"
-"- a 2-digits checkum\n"
-"- a 3-letters business code\n"
-"- a country-specific identifier"
-msgstr ""
-"Geef de Incassant-ID in, welke is toegewezen aan uw bedrijf om incasso's uit "
-"te voeren. De Incassant-ID is samengesteld uit:\n"
-"- uw ISO landcode (2 letters)\n"
-"- een 2 cijferig controlegetal\n"
-"- een 3 cijferig business code\n"
-"- een landspecifieke identifier"
-
-#. module: account_banking_sepa_direct_debit
-#: sql_constraint:sdd.mandate:0
-msgid "A Mandate with the same reference already exists for this company !"
-msgstr "Een machtiging met dezelfde referentie bestaat al vooR dit bedrijf!"
-
-#. module: account_banking_sepa_direct_debit
-#: help:sdd.mandate,state:0
-msgid ""
-"Only valid mandates can be used in a payment line. A cancelled mandate is a "
-"mandate that has been cancelled by the customer. A one-off mandate expires "
-"after its first use. A recurrent mandate expires after it's final use or if "
-"it hasn't been used for 36 months."
-msgstr ""
-"Alleen geldige machtigingen kunnen worden gebruikt op betaalregels. Een "
-"geannuleerde machtiging is een machtiging welke is geannuleerd door de "
-"klant. Een eenmalige machtiging verloopt na eenmalig gebruik. Een herhalende "
-"machtiging verloopt na zijn laatste gebruik of als deze niet is gebruikt "
-"voor 36 maanden."
-
-#. module: account_banking_sepa_direct_debit
-#: help:sdd.mandate,recurrent_sequence_type:0
-msgid ""
-"This field is only used for Recurrent mandates, not for One-Off mandates."
-msgstr ""
-"Dit veld wordt alleen gebruikt voor herhalende machtigingen, niet voor een "
-"eenmalige machtiging."
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:213
-#, python-format
-msgid "The date of signature of mandate '%s' is in the future !"
-msgstr ""
-"De datum van de handtekening van de machtiging '%s' is in de toekomst!"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-msgid "Signature Date"
-msgstr "Handtekening datum"
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,charge_bearer:0
-#: field:banking.export.sdd.wizard,charge_bearer:0
-msgid "Charge Bearer"
-msgstr "Kostenverdeling"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,partner_id:0
-msgid "Partner"
-msgstr "Relatie"
-
-#. module: account_banking_sepa_direct_debit
-#: selection:sdd.mandate,recurrent_sequence_type:0
+#: selection:account.banking.mandate,recurrent_sequence_type:0
msgid "First"
msgstr "Eerste"
#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,signature_date:0
-msgid "Date of Signature of the Mandate"
-msgstr "Datum avn de handtekening van de machtiging"
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Following Service Level"
+msgstr "Volg service level"
#. module: account_banking_sepa_direct_debit
-#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_cancel
-msgid "Mandate Cancelled"
-msgstr "Machtiging geannuleerd"
+#: help:banking.export.sdd.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 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_direct_debit
-#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.act_banking_export_sdd_payment_order
-msgid "Generated SEPA Direct Debit Files"
-msgstr "Genereerde SEPA incasso bestanden"
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "Generate"
+msgstr "Genereer"
#. module: account_banking_sepa_direct_debit
-#: help:sdd.mandate,sepa_migrated:0
+#: field:banking.export.sdd.wizard,id:0
+msgid "ID"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Identifier:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:payment.mode,original_creditor_identifier:0
+msgid ""
+"If not defined, Original Creditor Identifier from company will be used."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:account.banking.mandate,sepa_migrated:0
msgid ""
"If this field is not active, the mandate section of the next direct debit "
"file that include this mandate will contain the 'Original Mandate "
@@ -418,108 +276,176 @@ msgid ""
"required in a few countries (Belgium for instance), but not in all "
"countries. If this is not required in your country, you should keep this "
"field always active."
-msgstr ""
-"Indien niet aangevinkt, zal het machtiging gedeelte van het volgende incasso "
-"bestand, dat deze machtiging bevat, de 'Originele machtiging identificatie' "
-"en de 'Origineel schuldeiser identificatie' bevatten. Dit is verplicht in "
-"een aantal landen (zoals bijvoorbeeld België), maar niet in alle landen. "
-"Indien dit niet verplicht is in uw land, dient u dit veld altijd aangevinkt "
-"te houden."
+msgstr "Indien niet aangevinkt, zal het machtiging gedeelte van het volgende incasso bestand, dat deze machtiging bevat, de 'Originele machtiging identificatie' en de 'Origineel schuldeiser identificatie' bevatten. Dit is verplicht in een aantal landen (zoals bijvoorbeeld België), maar niet in alle landen. Indien dit niet verplicht is in uw land, dient u dit veld altijd aangevinkt te houden."
#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,company_id:0
-msgid "Company"
-msgstr "Bedijf"
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard
-msgid "Export SEPA Direct Debit File"
-msgstr "Exporteer SEPA incasso bestand"
-
-#. module: account_banking_sepa_direct_debit
-#: help:banking.export.sdd,batch_booking:0
#: help:banking.export.sdd.wizard,batch_booking:0
msgid ""
"If true, the bank statement will display only one credit line for all the "
"direct debits of the SEPA file ; if false, the bank statement will display "
"one credit line per direct debit of the SEPA file."
-msgstr ""
-"Indien aangevinkt, zal het bankafschrift maar één credit regel weergeven "
-"voor alle incasso's van het SEPA bestand. Indien niet aangevinkt wordt voor "
-"iedere incasso een credit regel weergegeven op het bankafschrift."
+msgstr "Indien aangevinkt, zal het bankafschrift maar één credit regel weergeven voor alle incasso's van het SEPA bestand. Indien niet aangevinkt wordt voor iedere incasso een credit regel weergegeven op het bankafschrift."
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:225
+#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:43
+#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:33
#, python-format
-msgid ""
-"Cannot validate the mandate '%s' because it is not attached to a bank "
-"account."
+msgid "Invalid SEPA Creditor Identifier."
+msgstr "Ongeldige SEPA Incassant-ID."
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,write_uid:0
+msgid "Last Updated by"
msgstr ""
-"Kan de machtiging '%s' niet bevestigen omdat deze niet is gekoppeld aan een "
-"bankrekening."
#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd,state:0
-#: view:sdd.mandate:0
-#: selection:sdd.mandate,state:0
-msgid "Draft"
-msgstr "Concept"
+#: field:banking.export.sdd.wizard,write_date:0
+msgid "Last Updated on"
+msgstr ""
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:290
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Mandate Reference:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:115
#, python-format
msgid "Mandate update"
msgstr "Machtiging bijwerken"
#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd,charge_bearer:0
-#: selection:banking.export.sdd.wizard,charge_bearer:0
-msgid "Shared"
-msgstr "Gedeeld"
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,batch_booking:0
-#: field:banking.export.sdd.wizard,batch_booking:0
-msgid "Batch Booking"
-msgstr "Bach verwerking"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,sepa_migrated:0
+#: field:account.banking.mandate,sepa_migrated:0
msgid "Migrated to SEPA"
msgstr "Gemigreerd naar SEPa"
#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,state:0
-msgid "Status"
-msgstr "Status"
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,total_amount:0
-#: field:banking.export.sdd.wizard,total_amount:0
-msgid "Total Amount"
-msgstr "Totaalbedrag"
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.action_account_banking_sdd
-#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.menu_account_banking_sdd
-msgid "SEPA Direct Debit Files"
-msgstr "SEPA incasso bestanden"
-
-#. module: account_banking_sepa_direct_debit
-#: selection:banking.export.sdd,charge_bearer:0
-#: selection:banking.export.sdd.wizard,charge_bearer:0
-msgid "Following Service Level"
-msgstr "Volg service level"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:233
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:159
#, python-format
msgid ""
-"The mandate '%s' can't have a date of last debit before the date of "
-"signature."
+"Missing SEPA Direct Debit mandate on the bank payment line with partner '%s'"
+" (reference '%s')."
msgstr ""
-"De machtiging '%s' kan geen datum van laatste incasso hebben die eerder is "
-"dan de datum van ondertekening."
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,nb_transactions:0
+msgid "Number of Transactions"
+msgstr "Aantal transacties"
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: selection:account.banking.mandate,type:0
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "One-Off"
+msgstr "Eenmalig"
+
+#. module: account_banking_sepa_direct_debit
+#: field:payment.mode,original_creditor_identifier:0
+#: field:res.company,original_creditor_identifier:0
+msgid "Original Creditor Identifier"
+msgstr "Originele Incassant-ID"
+
+#. module: account_banking_sepa_direct_debit
+#: field:account.banking.mandate,original_mandate_identification:0
+msgid "Original Mandate Identification"
+msgstr "Originele machtiging indificatie"
+
+#. module: account_banking_sepa_direct_debit
+#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required
+msgid "Original Mandate Required (SEPA)"
+msgstr "Originele machtiging benodigd (SEPA)"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_mode
+msgid "Payment Mode"
+msgstr "Betaalwijze"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,payment_order_ids:0
+msgid "Payment Orders"
+msgstr "Betaalopdrachten"
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:117
+#, python-format
+msgid ""
+"Payment Type Code '%s' is not supported. The only Payment Type Code "
+"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and"
+" 'pain.008.001.04'."
+msgstr "Betaal soort code '%s' wordt niet ondersteund. De enige betaalsoort code ondersteund voor SEPA incasso's zijn 'pain.008.001.02', 'pain.008.001.03' en 'pain.008.001.04'."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Postal Code - City - Town:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: selection:account.banking.mandate,type:0
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Recurrent"
+msgstr "Terugkerend"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,recurrent_sequence_type:0
+msgid "Recurring"
+msgstr "Terugkerend"
+
+#. module: account_banking_sepa_direct_debit
+#: view:res.partner:account_banking_sepa_direct_debit.sdd_mandate_partner_form
+#: view:res.partner.bank:account_banking_sepa_direct_debit.sdd_mandate_partner_bank_tree
+msgid "SDD Mandates"
+msgstr "SDD machteging"
+
+#. module: account_banking_sepa_direct_debit
+#: field:payment.mode,sepa_creditor_identifier:0
+#: field:res.company,sepa_creditor_identifier:0
+msgid "SEPA Creditor Identifier"
+msgstr "SEPA Incassant-ID"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.mandate_action
+msgid "SEPA Direct Debit Mandates"
+msgstr "SEPA incasso machtegingen"
+
+#. module: account_banking_sepa_direct_debit
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "SEPA Direct Debit XML file generation"
+msgstr "SEPA Incasso XML bestand aanmaken"
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: field:account.banking.mandate,scheme:0
+msgid "Scheme"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Sepa Business-To-Business Direct debit Mandate"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Sepa Direct Debit Mandate"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:35
+#: model:ir.actions.report.xml,name:account_banking_sepa_direct_debit.report_sepa_direct_debit_mandate
+#, python-format
+msgid "Sepa Mandate"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree
+msgid "Sequence Type"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:account.banking.mandate,recurrent_sequence_type:0
+msgid "Sequence Type for Next Debit"
+msgstr "Reeks soort voor volgende incasso"
#. module: account_banking_sepa_direct_debit
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_final
@@ -527,201 +453,6 @@ msgstr ""
msgid "Sequence Type set to Final"
msgstr "Reeks soort ingesteld op definitief"
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,message_is_follower:0
-msgid "Is a Follower"
-msgstr "Is een volger"
-
-#. module: account_banking_sepa_direct_debit
-#: help:sdd.mandate,original_mandate_identification:0
-msgid ""
-"When the field 'Migrated to SEPA' is not active, this field will be used as "
-"the Original Mandate Identification in the Direct Debit file."
-msgstr ""
-"Wanneer het veld 'gemigreerd naar SEPA' niet actief is, zal dit veld worden "
-"gebruikt als de originele machtiging identificatie in het incasso bestand."
-
-#. module: account_banking_sepa_direct_debit
-#: view:payment.order:0
-msgid "SDD Mandate"
-msgstr "SDD machtiging"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,original_mandate_identification:0
-msgid "Original Mandate Identification"
-msgstr "Originele machtiging indificatie"
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company
-msgid "Companies"
-msgstr "Bedrijven"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,message_summary:0
-msgid "Summary"
-msgstr "Samenvatting"
-
-#. module: account_banking_sepa_direct_debit
-#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required
-msgid "Original Mandate Required (SEPA)"
-msgstr "Originele machtiging benodigd (SEPA)"
-
-#. module: account_banking_sepa_direct_debit
-#: field:account.invoice,sdd_mandate_id:0
-#: model:ir.model,name:account_banking_sepa_direct_debit.model_sdd_mandate
-#: field:payment.line,sdd_mandate_id:0
-#: view:sdd.mandate:0
-msgid "SEPA Direct Debit Mandate"
-msgstr "SEPA incasso machtiging"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:193
-#, python-format
-msgid ""
-"Missing SEPA Direct Debit mandate on the payment line with partner '%s' and "
-"Invoice ref '%s'."
-msgstr ""
-"Ontbrekende SEPA incasso machtiging op de betaalregel met relatie '%s' en "
-"factuur referentie '%s'."
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:210
-#, python-format
-msgid ""
-"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' "
-"and it has a last debit date set to '%s', so we can't use it."
-msgstr ""
-"De machtiging referentie '%s' voor relatie %s' is ingesteld op 'eenmalig' en "
-"de laatste incasso datum is ingesteld op '%s'. Zodoende kunnen we deze niet "
-"gebruiken."
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,scan:0
-msgid "Scan of the Mandate"
-msgstr "Scan van de machteging"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,last_debit_date:0
-msgid "Date of the Last Debit"
-msgstr "Datum van laatste incasso"
-
-#. module: account_banking_sepa_direct_debit
-#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_expired
-msgid "Mandate Expired"
-msgstr "Machtiging verlopen"
-
-#. module: account_banking_sepa_direct_debit
-#: constraint:res.company:0
-msgid "Invalid SEPA Creditor Identifier."
-msgstr "Ongeldige SEPA Incassant-ID."
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_partner_bank
-msgid "Bank Accounts"
-msgstr "Bankrekeningen"
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.sdd_mandate_action
-msgid ""
-"
\n"
-" Click to create a new SEPA Direct Debit Mandate.\n"
-"
\n"
-" A SEPA Direct Debit Mandate is a document signed by your customer "
-"that gives you the autorization to do one or several direct debits on his "
-"bank account.\n"
-"
\n"
-" "
-msgstr ""
-"
\n"
-" Klik voor het maken van een nieuwe SEPA incasso machtiging.\n"
-"
\n"
-" Een SEPA incasso machtiging is een document ondertekend door uw "
-"klant, welke u toestemming geeft om incasso's uit te voeren op zijn "
-"bankrekening.\n"
-"
\n"
-" "
-
-#. module: account_banking_sepa_direct_debit
-#: view:banking.export.sdd:0
-msgid "General Information"
-msgstr "Algemene informatie"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-#: selection:sdd.mandate,state:0
-msgid "Valid"
-msgstr "Geldig"
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_invoice
-msgid "Invoice"
-msgstr "Factuur"
-
-#. module: account_banking_sepa_direct_debit
-#: view:banking.export.sdd.wizard:0
-#: view:sdd.mandate:0
-msgid "Cancel"
-msgstr "Annuleer"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-#: field:sdd.mandate,payment_line_ids:0
-msgid "Related Payment Lines"
-msgstr "Gerelateerde betaalregels"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-#: selection:sdd.mandate,type:0
-msgid "Recurrent"
-msgstr "Terugkerend"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,type:0
-msgid "Type of Mandate"
-msgstr "Soort machtiging"
-
-#. module: account_banking_sepa_direct_debit
-#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_valid
-msgid "Mandate Validated"
-msgstr "Machtiging bevestigd"
-
-#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd,file:0
-msgid "SEPA File"
-msgstr "SEPA bestand"
-
-#. module: account_banking_sepa_direct_debit
-#: field:res.company,sepa_creditor_identifier:0
-msgid "SEPA Creditor Identifier"
-msgstr "SEPA Incassant-ID"
-
-#. module: account_banking_sepa_direct_debit
-#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd
-msgid "SEPA Direct Debit export"
-msgstr "SEPA incasso export"
-
-#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-#: selection:sdd.mandate,state:0
-msgid "Expired"
-msgstr "Verlopen"
-
-#. module: account_banking_sepa_direct_debit
-#: field:sdd.mandate,partner_bank_id:0
-msgid "Bank Account"
-msgstr "Bankrekening"
-
-#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:254
-#, python-format
-msgid ""
-"You must set the 'Original Mandate Identification' on the recurrent mandate "
-"'%s' which is not marked as 'Migrated to SEPA'."
-msgstr ""
-"U dient de 'Originele machtiging identificatie' in te stellen op de "
-"herhalende machtiging '%s' welke niet is gemarkeerd als 'Gemigreerd naar "
-"SEPA'"
-
#. module: account_banking_sepa_direct_debit
#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_first
#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_first
@@ -729,26 +460,130 @@ msgid "Sequence Type set to First"
msgstr "Reeks ingesteld op eerste"
#. module: account_banking_sepa_direct_debit
-#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:291
+#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
+#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
+msgid "Sequence Type set to Recurring"
+msgstr "Reeks soort ingesteld op herhalend"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Shared"
+msgstr "Gedeeld"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Signature of the debtor:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,state:0
+msgid "State"
+msgstr "Status"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Swift BIC (up to 8 or 11 characteres):"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:166
#, python-format
msgid ""
-"As you changed the bank account attached to this mandate, the 'Sequence "
-"Type' has been set back to 'First'."
+"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has "
+"expired."
+msgstr "De SEPA incasso machtiging met referentie '%s' voor relatie '%s' is verlopen."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:174
+#, python-format
+msgid ""
+"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' "
+"and it has a last debit date set to '%s', so we can't use it."
+msgstr "De machtiging referentie '%s' voor relatie %s' is ingesteld op 'eenmalig' en de laatste incasso datum is ingesteld op '%s'. Zodoende kunnen we deze niet gebruiken."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:76
+#, python-format
+msgid "The recurrent mandate '%s' must have a sequence type."
+msgstr "De herhalende machtiging '%s' dient een reeks soort te hebben."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:86
+#, python-format
+msgid ""
+"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must "
+"have its recurrent sequence type set to 'First'."
+msgstr "Bij de herhalende machtiging '%s' welke niet is gemarkeerd als 'gemigreerd naar SEPA' dient de reeks soort te worden ingesteld op 'Eerste'."
+
+#. module: account_banking_sepa_direct_debit
+#: help:account.banking.mandate,recurrent_sequence_type:0
+msgid ""
+"This field is only used for Recurrent mandates, not for One-Off mandates."
+msgstr "Dit veld wordt alleen gebruikt voor herhalende machtigingen, niet voor een eenmalige machtiging."
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"This mandate is only intended for business-to-business transactions.\n"
+" You are not entitled to a refund from your bank after your account has\n"
+" been debited, but you are entitled to request your bank\n"
+" not to debit your account up until the day on which the payment is due."
msgstr ""
-"Omdat u de gekoppelde bankrekening heeft gewijzigd is de reeks terug gezet "
-"naar 'Eerste'."
#. module: account_banking_sepa_direct_debit
-#: help:sdd.mandate,message_ids:0
-msgid "Messages and communication history"
-msgstr "Berichten en communicatie historie"
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "To be completed by the creditor"
+msgstr ""
#. module: account_banking_sepa_direct_debit
-#: view:sdd.mandate:0
-msgid "Search SEPA Direct Debit Mandates"
-msgstr "Zoek SEPA incasso machtigingen"
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "To be completed by the debtor"
+msgstr ""
#. module: account_banking_sepa_direct_debit
-#: field:banking.export.sdd.wizard,file:0
-msgid "File"
-msgstr "Bestand"
+#: field:banking.export.sdd.wizard,total_amount:0
+msgid "Total Amount"
+msgstr "Totaalbedrag"
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree
+msgid "Type"
+msgstr "Soort"
+
+#. module: account_banking_sepa_direct_debit
+#: field:account.banking.mandate,type:0
+msgid "Type of Mandate"
+msgstr "Soort machtiging"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Type of payment:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "Validate"
+msgstr "Bevestigen"
+
+#. module: account_banking_sepa_direct_debit
+#: help:account.banking.mandate,original_mandate_identification:0
+msgid ""
+"When the field 'Migrated to SEPA' is not active, this field will be used as "
+"the Original Mandate Identification in the Direct Debit file."
+msgstr "Wanneer het veld 'gemigreerd naar SEPA' niet actief is, zal dit veld worden gebruikt als de originele machtiging identificatie in het incasso bestand."
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:98
+#, python-format
+msgid ""
+"You must set the 'Original Mandate Identification' on the recurrent mandate "
+"'%s' which is not marked as 'Migrated to SEPA'."
+msgstr "U dient de 'Originele machtiging identificatie' in te stellen op de herhalende machtiging '%s' welke niet is gemarkeerd als 'Gemigreerd naar SEPA'"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"to send instructions to your bank to debit your account and (B) your bank to\n"
+" debit your account in accordance with the instructions from"
+msgstr ""
diff --git a/account_banking_sepa_direct_debit/i18n/pt_BR.po b/account_banking_sepa_direct_debit/i18n/pt_BR.po
new file mode 100644
index 000000000..44b004887
--- /dev/null
+++ b/account_banking_sepa_direct_debit/i18n/pt_BR.po
@@ -0,0 +1,588 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_banking_sepa_direct_debit
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: bank-payment (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-04-08 00:46+0000\n"
+"PO-Revision-Date: 2016-04-07 16:04+0000\n"
+"Last-Translator: danimaribeiro \n"
+"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/pt_BR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: pt_BR\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.mandate_action
+msgid ""
+"
\n"
+" Click to create a new SEPA Direct Debit Mandate.\n"
+"
\n"
+" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_banking_mandate
+msgid "A generic banking mandate"
+msgstr "Uma ordem bancária genérica"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO "
+"CREDITOR FOR STORAGE."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.\n"
+" NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n"
+" THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Account Number - IBAN:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Address of the Debtor:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Address:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"As part of your rights, you are entitled to a refund from\n"
+" your bank under the terms and conditions of your agreement\n"
+" with your bank.\n"
+" A refund must be claimed within 8 weeks starting from the date on which your account was debited."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:116
+#, python-format
+msgid ""
+"As you changed the bank account attached to this mandate, the 'Sequence "
+"Type' has been set back to 'First'."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_bank_payment_line
+msgid "Bank Payment Lines"
+msgstr "Linhas de pagamento bancária"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,scheme:0
+msgid "Basic (CORE)"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,batch_booking:0
+msgid "Batch Booking"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Borne by Creditor"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Borne by Debtor"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "By signing this mandate form, you authorise (A)"
+msgstr "Assinando este formulário de Ordem, você autoriza (A)"
+
+#. module: account_banking_sepa_direct_debit
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "Cancel"
+msgstr "Cancelar"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,charge_bearer:0
+msgid "Charge Bearer"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company
+msgid "Companies"
+msgstr "Empresas"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Country of the debtor:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Country:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,state:0
+msgid "Create"
+msgstr "Criar"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,create_uid:0
+msgid "Created by"
+msgstr "Criado por"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,create_date:0
+msgid "Created on"
+msgstr "Criado em"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Creditor's Name:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Date - Location:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Debtor's Name:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:payment.mode,sepa_creditor_identifier:0
+msgid ""
+"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from company will be used.\n"
+"This identifier is composed of :\n"
+"- your country ISO code (2 letters)\n"
+"- a 2-digits checkum\n"
+"- a 3-letters business code\n"
+"- a country-specific identifier"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:res.company,sepa_creditor_identifier:0
+msgid ""
+"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n"
+"- your country ISO code (2 letters)\n"
+"- a 2-digits checkum\n"
+"- a 3-letters business code\n"
+"- a country-specific identifier"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,scheme:0
+msgid "Enterprise (B2B)"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:42
+#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:32
+#, python-format
+msgid "Error"
+msgstr "Erro"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard
+msgid "Export SEPA Direct Debit File"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,file:0
+msgid "File"
+msgstr "Arquivo"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,filename:0
+msgid "Filename"
+msgstr "Nome do arquivo"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,recurrent_sequence_type:0
+msgid "Final"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,state:0
+msgid "Finish"
+msgstr "Finalizar"
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,recurrent_sequence_type:0
+msgid "First"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Following Service Level"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:banking.export.sdd.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 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_direct_debit
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "Generate"
+msgstr "Gerar"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,id:0
+msgid "ID"
+msgstr "ID"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Identifier:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:payment.mode,original_creditor_identifier:0
+msgid ""
+"If not defined, Original Creditor Identifier from company will be used."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:account.banking.mandate,sepa_migrated:0
+msgid ""
+"If this field is not active, the mandate section of the next direct debit "
+"file that include this mandate will contain the 'Original Mandate "
+"Identification' and the 'Original Creditor Scheme Identification'. This is "
+"required in a few countries (Belgium for instance), but not in all "
+"countries. If this is not required in your country, you should keep this "
+"field always active."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:banking.export.sdd.wizard,batch_booking:0
+msgid ""
+"If true, the bank statement will display only one credit line for all the "
+"direct debits of the SEPA file ; if false, the bank statement will display "
+"one credit line per direct debit of the SEPA file."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:43
+#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:33
+#, python-format
+msgid "Invalid SEPA Creditor Identifier."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,write_uid:0
+msgid "Last Updated by"
+msgstr "Última Atualização por"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,write_date:0
+msgid "Last Updated on"
+msgstr "Última Atualização em"
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Mandate Reference:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:115
+#, python-format
+msgid "Mandate update"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:account.banking.mandate,sepa_migrated:0
+msgid "Migrated to SEPA"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:159
+#, python-format
+msgid ""
+"Missing SEPA Direct Debit mandate on the bank payment line with partner '%s'"
+" (reference '%s')."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,nb_transactions:0
+msgid "Number of Transactions"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: selection:account.banking.mandate,type:0
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "One-Off"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:payment.mode,original_creditor_identifier:0
+#: field:res.company,original_creditor_identifier:0
+msgid "Original Creditor Identifier"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:account.banking.mandate,original_mandate_identification:0
+msgid "Original Mandate Identification"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required
+msgid "Original Mandate Required (SEPA)"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_mode
+msgid "Payment Mode"
+msgstr "Modo de Pagamento"
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,payment_order_ids:0
+msgid "Payment Orders"
+msgstr "Ordens de Pagamento"
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:117
+#, python-format
+msgid ""
+"Payment Type Code '%s' is not supported. The only Payment Type Code "
+"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and"
+" 'pain.008.001.04'."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Postal Code - City - Town:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: selection:account.banking.mandate,type:0
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Recurrent"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: selection:account.banking.mandate,recurrent_sequence_type:0
+msgid "Recurring"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:res.partner:account_banking_sepa_direct_debit.sdd_mandate_partner_form
+#: view:res.partner.bank:account_banking_sepa_direct_debit.sdd_mandate_partner_bank_tree
+msgid "SDD Mandates"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:payment.mode,sepa_creditor_identifier:0
+#: field:res.company,sepa_creditor_identifier:0
+msgid "SEPA Creditor Identifier"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.mandate_action
+msgid "SEPA Direct Debit Mandates"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "SEPA Direct Debit XML file generation"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: field:account.banking.mandate,scheme:0
+msgid "Scheme"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Sepa Business-To-Business Direct debit Mandate"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Sepa Direct Debit Mandate"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:35
+#: model:ir.actions.report.xml,name:account_banking_sepa_direct_debit.report_sepa_direct_debit_mandate
+#, python-format
+msgid "Sepa Mandate"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree
+msgid "Sequence Type"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:account.banking.mandate,recurrent_sequence_type:0
+msgid "Sequence Type for Next Debit"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_final
+#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_final
+msgid "Sequence Type set to Final"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_first
+#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_first
+msgid "Sequence Type set to First"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
+#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring
+msgid "Sequence Type set to Recurring"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: selection:banking.export.sdd.wizard,charge_bearer:0
+msgid "Shared"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Signature of the debtor:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,state:0
+msgid "State"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Swift BIC (up to 8 or 11 characteres):"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:166
+#, python-format
+msgid ""
+"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has "
+"expired."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:174
+#, python-format
+msgid ""
+"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' "
+"and it has a last debit date set to '%s', so we can't use it."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:76
+#, python-format
+msgid "The recurrent mandate '%s' must have a sequence type."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:86
+#, python-format
+msgid ""
+"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must "
+"have its recurrent sequence type set to 'First'."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: help:account.banking.mandate,recurrent_sequence_type:0
+msgid ""
+"This field is only used for Recurrent mandates, not for One-Off mandates."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"This mandate is only intended for business-to-business transactions.\n"
+" You are not entitled to a refund from your bank after your account has\n"
+" been debited, but you are entitled to request your bank\n"
+" not to debit your account up until the day on which the payment is due."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "To be completed by the creditor"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "To be completed by the debtor"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:banking.export.sdd.wizard,total_amount:0
+msgid "Total Amount"
+msgstr "Valor total"
+
+#. module: account_banking_sepa_direct_debit
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
+#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree
+msgid "Type"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: field:account.banking.mandate,type:0
+msgid "Type of Mandate"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid "Type of payment:"
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
+msgid "Validate"
+msgstr "Validar"
+
+#. module: account_banking_sepa_direct_debit
+#: help:account.banking.mandate,original_mandate_identification:0
+msgid ""
+"When the field 'Migrated to SEPA' is not active, this field will be used as "
+"the Original Mandate Identification in the Direct Debit file."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:98
+#, python-format
+msgid ""
+"You must set the 'Original Mandate Identification' on the recurrent mandate "
+"'%s' which is not marked as 'Migrated to SEPA'."
+msgstr ""
+
+#. module: account_banking_sepa_direct_debit
+#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
+msgid ""
+"to send instructions to your bank to debit your account and (B) your bank to\n"
+" debit your account in accordance with the instructions from"
+msgstr ""
diff --git a/account_banking_sepa_direct_debit/i18n/sl.po b/account_banking_sepa_direct_debit/i18n/sl.po
new file mode 100644
index 000000000..4ce7d321a
--- /dev/null
+++ b/account_banking_sepa_direct_debit/i18n/sl.po
@@ -0,0 +1,589 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_banking_sepa_direct_debit
+#
+# Translators:
+# Matjaž Mozetič , 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: bank-payment (8.0)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-04-18 10:57+0000\n"
+"PO-Revision-Date: 2016-04-22 06:53+0000\n"
+"Last-Translator: Matjaž Mozetič \n"
+"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/sl/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Language: sl\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
+
+#. module: account_banking_sepa_direct_debit
+#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.mandate_action
+msgid ""
+"
\n"
+" Click to create a new SEPA Direct Debit Mandate.\n"
+"
\n"
+" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n"
+"
\n"
+" "
+msgstr "
\n Ustvari nov SEPA mandat za direktno bremenitev.\n
\n SEPA mandat za direktno bremenitev je s strani kupca podpisan dokument, ki vas pooblašča za izvajanje ene ali več bremenitev njegovega bančnega računa.\n
- Click to create a new SEPA Direct Debit Mandate.
-
- A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.
-
-
-
-
-
-
-
- sdd.mandate.res.partner.bank.tree
- res.partner.bank
-
-
-
- SDD Mandates
-
-
-
-
-
- sdd.mandate.partner.form
- res.partner
-
-
-
- SDD Mandates
-
-
-
-
-
- Sequence Type set to First
- account.banking.mandate
-
- Sequence Type set to First
-
-
-
- Sequence Type set to Recurring
- account.banking.mandate
-
- Sequence Type set to Recurring
-
-
-
- Sequence Type set to Final
- account.banking.mandate
-
- Sequence Type set to Final
-
-
diff --git a/account_banking_sepa_direct_debit/views/account_payment_mode.xml b/account_banking_sepa_direct_debit/views/account_payment_mode.xml
new file mode 100644
index 000000000..5f41be2f3
--- /dev/null
+++ b/account_banking_sepa_direct_debit/views/account_payment_mode.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+ Add SEPA identifiers on payment mode form
+ account.payment.mode
+
+
+
+
+
+
+
+
+
+
+
diff --git a/account_banking_sepa_direct_debit/views/payment_mode_view.xml b/account_banking_sepa_direct_debit/views/payment_mode_view.xml
deleted file mode 100644
index 9bba891d6..000000000
--- a/account_banking_sepa_direct_debit/views/payment_mode_view.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
- Add SEPA identifiers
- payment.mode
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/account_banking_sepa_direct_debit/views/res_company_view.xml b/account_banking_sepa_direct_debit/views/res_company_view.xml
index e4c9e0b93..6b4d544ca 100644
--- a/account_banking_sepa_direct_debit/views/res_company_view.xml
+++ b/account_banking_sepa_direct_debit/views/res_company_view.xml
@@ -1,20 +1,19 @@
-
+sepa_direct_debit.res.company.formres.company
-
diff --git a/account_banking_sepa_direct_debit/wizard/__init__.py b/account_banking_sepa_direct_debit/wizard/__init__.py
deleted file mode 100644
index 3830e36d9..000000000
--- a/account_banking_sepa_direct_debit/wizard/__init__.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#
-# SEPA Direct Debit module for OpenERP
-# Copyright (C) 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_sdd
diff --git a/account_banking_sepa_direct_debit/wizard/export_sdd.py b/account_banking_sepa_direct_debit/wizard/export_sdd.py
deleted file mode 100644
index 9b4022d46..000000000
--- a/account_banking_sepa_direct_debit/wizard/export_sdd.py
+++ /dev/null
@@ -1,394 +0,0 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#
-# SEPA Direct Debit module for Odoo
-# Copyright (C) 2013-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 models, fields, api, _
-from openerp.exceptions import Warning
-from openerp import workflow
-from lxml import etree
-
-
-class BankingExportSddWizard(models.TransientModel):
- _name = 'banking.export.sdd.wizard'
- _inherit = ['banking.export.pain']
- _description = 'Export SEPA Direct Debit File'
-
- state = fields.Selection([
- ('create', 'Create'),
- ('finish', 'Finish'),
- ], string='State', readonly=True, default='create')
- batch_booking = fields.Boolean(
- string='Batch Booking',
- help="If true, the bank statement will display only one credit "
- "line for all the direct debits of the SEPA file ; if false, "
- "the bank statement will display one credit line per direct "
- "debit of the SEPA file.")
- charge_bearer = fields.Selection([
- ('SLEV', 'Following Service Level'),
- ('SHAR', 'Shared'),
- ('CRED', 'Borne by Creditor'),
- ('DEBT', 'Borne by Debtor'),
- ], string='Charge Bearer', required=True, default='SLEV',
- 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.")
- nb_transactions = fields.Integer(
- string='Number of Transactions', readonly=True)
- total_amount = fields.Float(string='Total Amount', readonly=True)
- file = fields.Binary(string="File", readonly=True)
- filename = fields.Char(string="Filename", readonly=True)
- payment_order_ids = fields.Many2many(
- 'payment.order', 'wiz_sdd_payorders_rel', 'wizard_id',
- 'payment_order_id', string='Payment Orders', readonly=True)
-
- @api.model
- def create(self, vals):
- payment_order_ids = self._context.get('active_ids', [])
- vals.update({
- 'payment_order_ids': [[6, 0, payment_order_ids]],
- })
- return super(BankingExportSddWizard, self).create(vals)
-
- def _get_previous_bank(self, payline):
- previous_bank = False
- older_lines = self.env['payment.line'].search([
- ('mandate_id', '=', payline.mandate_id.id),
- ('bank_id', '!=', payline.bank_id.id)])
- if older_lines:
- previous_date = False
- previous_payline = False
- for older_line in older_lines:
- if hasattr(older_line.order_id, 'date_sent'):
- older_line_date = older_line.order_id.date_sent
- else:
- older_line_date = older_line.order_id.date_done
- if (older_line_date and
- older_line_date > previous_date):
- previous_date = older_line_date
- previous_payline = older_line
- if previous_payline:
- previous_bank = previous_payline.bank_id
- return previous_bank
-
- @api.multi
- def create_sepa(self):
- """Creates the SEPA Direct Debit file. That's the important code !"""
- pain_flavor = self.payment_order_ids[0].mode.type.code
- convert_to_ascii = \
- self.payment_order_ids[0].mode.convert_to_ascii
- if pain_flavor == 'pain.008.001.02':
- bic_xml_tag = 'BIC'
- name_maxsize = 70
- root_xml_tag = 'CstmrDrctDbtInitn'
- elif pain_flavor == 'pain.008.001.03':
- bic_xml_tag = 'BICFI'
- name_maxsize = 140
- root_xml_tag = 'CstmrDrctDbtInitn'
- elif pain_flavor == 'pain.008.001.04':
- bic_xml_tag = 'BICFI'
- name_maxsize = 140
- root_xml_tag = 'CstmrDrctDbtInitn'
- else:
- raise Warning(
- _("Payment Type Code '%s' is not supported. The only "
- "Payment Type Code supported for SEPA Direct Debit are "
- "'pain.008.001.02', 'pain.008.001.03' and "
- "'pain.008.001.04'.") % pain_flavor)
- gen_args = {
- 'bic_xml_tag': bic_xml_tag,
- 'name_maxsize': name_maxsize,
- 'convert_to_ascii': convert_to_ascii,
- 'payment_method': 'DD',
- 'file_prefix': 'sdd_',
- 'pain_flavor': pain_flavor,
- 'pain_xsd_file':
- 'account_banking_sepa_direct_debit/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)
- # A. Group header
- group_header_1_0, nb_of_transactions_1_6, control_sum_1_7 = \
- self.generate_group_header_block(pain_root, gen_args)
- transactions_count_1_6 = 0
- total_amount = 0.0
- amount_control_sum_1_7 = 0.0
- lines_per_group = {}
- # key = (requested_date, priority, sequence type)
- # value = list of lines as objects
- # Iterate on payment orders
- for payment_order in self.payment_order_ids:
- total_amount = total_amount + payment_order.total
- # Iterate each payment lines
- for line in payment_order.bank_line_ids:
- transactions_count_1_6 += 1
- priority = line.priority
- # The field line.date is the requested payment date
- # taking into account the 'date_prefered' setting
- # cf account_banking_payment_export/models/account_payment.py
- # in the inherit of action_open()
- if not line.mandate_id:
- raise Warning(
- _("Missing SEPA Direct Debit mandate on the "
- "bank payment line with partner '%s' "
- "(reference '%s').")
- % (line.partner_id.name, line.name))
- scheme = line.mandate_id.scheme
- if line.mandate_id.state != 'valid':
- raise Warning(
- _("The SEPA Direct Debit mandate with reference '%s' "
- "for partner '%s' has expired.")
- % (line.mandate_id.unique_mandate_reference,
- line.mandate_id.partner_id.name))
- if line.mandate_id.type == 'oneoff':
- seq_type = 'OOFF'
- if line.mandate_id.last_debit_date:
- raise Warning(
- _("The mandate with reference '%s' for partner "
- "'%s' has type set to 'One-Off' and it has a "
- "last debit date set to '%s', so we can't use "
- "it.")
- % (line.mandate_id.unique_mandate_reference,
- line.mandate_id.partner_id.name,
- line.mandate_id.last_debit_date))
- elif line.mandate_id.type == 'recurrent':
- seq_type_map = {
- 'recurring': 'RCUR',
- 'first': 'FRST',
- 'final': 'FNAL',
- }
- seq_type_label = \
- line.mandate_id.recurrent_sequence_type
- assert seq_type_label is not False
- seq_type = seq_type_map[seq_type_label]
- key = (line.date, priority, seq_type, scheme)
- if key in lines_per_group:
- lines_per_group[key].append(line)
- else:
- lines_per_group[key] = [line]
-
- for (requested_date, priority, sequence_type, scheme), 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(
- pain_root,
- "self.payment_order_ids[0].reference + '-' + "
- "sequence_type + '-' + requested_date.replace('-', '') "
- "+ '-' + priority",
- priority, scheme, sequence_type, requested_date, {
- 'self': self,
- 'sequence_type': sequence_type,
- 'priority': priority,
- 'requested_date': requested_date,
- }, gen_args)
-
- self.generate_party_block(
- payment_info_2_0, 'Cdtr', 'B',
- 'self.payment_order_ids[0].mode.bank_id.partner_id.'
- 'name',
- 'self.payment_order_ids[0].mode.bank_id.acc_number',
- 'self.payment_order_ids[0].mode.bank_id.bank.bic or '
- 'self.payment_order_ids[0].mode.bank_id.bank_bic',
- {'self': self}, gen_args)
- charge_bearer_2_24 = etree.SubElement(payment_info_2_0, 'ChrgBr')
- charge_bearer_2_24.text = self.charge_bearer
- creditor_scheme_identification_2_27 = etree.SubElement(
- payment_info_2_0, 'CdtrSchmeId')
- self.generate_creditor_scheme_identification(
- creditor_scheme_identification_2_27,
- 'self.payment_order_ids[0].mode.'
- 'sepa_creditor_identifier or '
- 'self.payment_order_ids[0].company_id.'
- 'sepa_creditor_identifier',
- 'SEPA Creditor Identifier', {'self': self}, 'SEPA', gen_args)
- transactions_count_2_4 = 0
- amount_control_sum_2_5 = 0.0
- for line in lines:
- transactions_count_2_4 += 1
- # C. Direct Debit Transaction Info
- dd_transaction_info_2_28 = etree.SubElement(
- payment_info_2_0, 'DrctDbtTxInf')
- payment_identification_2_29 = etree.SubElement(
- dd_transaction_info_2_28, 'PmtId')
- end2end_identification_2_31 = etree.SubElement(
- payment_identification_2_29, 'EndToEndId')
- end2end_identification_2_31.text = self._prepare_field(
- 'End to End Identification', 'line.name',
- {'line': line}, 35, gen_args=gen_args)
- currency_name = self._prepare_field(
- 'Currency Code', 'line.currency.name',
- {'line': line}, 3, gen_args=gen_args)
- instructed_amount_2_44 = etree.SubElement(
- dd_transaction_info_2_28, 'InstdAmt', Ccy=currency_name)
- instructed_amount_2_44.text = '%.2f' % line.amount_currency
- amount_control_sum_1_7 += line.amount_currency
- amount_control_sum_2_5 += line.amount_currency
- dd_transaction_2_46 = etree.SubElement(
- dd_transaction_info_2_28, 'DrctDbtTx')
- mandate_related_info_2_47 = etree.SubElement(
- dd_transaction_2_46, 'MndtRltdInf')
- mandate_identification_2_48 = etree.SubElement(
- mandate_related_info_2_47, 'MndtId')
- mandate_identification_2_48.text = self._prepare_field(
- 'Unique Mandate Reference',
- 'line.mandate_id.unique_mandate_reference',
- {'line': line}, 35, gen_args=gen_args)
- mandate_signature_date_2_49 = etree.SubElement(
- mandate_related_info_2_47, 'DtOfSgntr')
- mandate_signature_date_2_49.text = self._prepare_field(
- 'Mandate Signature Date',
- 'line.mandate_id.signature_date',
- {'line': line}, 10, gen_args=gen_args)
- if sequence_type == 'FRST' and (
- line.mandate_id.last_debit_date or
- not line.mandate_id.sepa_migrated):
- previous_bank = self._get_previous_bank(line)
- if previous_bank or not line.mandate_id.sepa_migrated:
- amendment_indicator_2_50 = etree.SubElement(
- mandate_related_info_2_47, 'AmdmntInd')
- amendment_indicator_2_50.text = 'true'
- amendment_info_details_2_51 = etree.SubElement(
- mandate_related_info_2_47, 'AmdmntInfDtls')
- if previous_bank:
- if (previous_bank.bank.bic or
- previous_bank.bank_bic) == \
- (line.bank_id.bank.bic or
- line.bank_id.bank_bic):
- ori_debtor_account_2_57 = etree.SubElement(
- amendment_info_details_2_51, 'OrgnlDbtrAcct')
- ori_debtor_account_id = etree.SubElement(
- ori_debtor_account_2_57, 'Id')
- ori_debtor_account_iban = etree.SubElement(
- ori_debtor_account_id, 'IBAN')
- ori_debtor_account_iban.text = self._validate_iban(
- self._prepare_field(
- 'Original Debtor Account',
- 'previous_bank.acc_number',
- {'previous_bank': previous_bank},
- gen_args=gen_args))
- else:
- ori_debtor_agent_2_58 = etree.SubElement(
- amendment_info_details_2_51, 'OrgnlDbtrAgt')
- ori_debtor_agent_institution = etree.SubElement(
- ori_debtor_agent_2_58, 'FinInstnId')
- ori_debtor_agent_bic = etree.SubElement(
- ori_debtor_agent_institution, bic_xml_tag)
- ori_debtor_agent_bic.text = self._prepare_field(
- 'Original Debtor Agent',
- 'previous_bank.bank.bic or '
- 'previous_bank.bank_bic',
- {'previous_bank': previous_bank},
- gen_args=gen_args)
- ori_debtor_agent_other = etree.SubElement(
- ori_debtor_agent_institution, 'Othr')
- ori_debtor_agent_other_id = etree.SubElement(
- ori_debtor_agent_other, 'Id')
- ori_debtor_agent_other_id.text = 'SMNDA'
- # SMNDA = Same Mandate New Debtor Agent
- elif not line.mandate_id.sepa_migrated:
- ori_mandate_identification_2_52 = etree.SubElement(
- amendment_info_details_2_51, 'OrgnlMndtId')
- ori_mandate_identification_2_52.text = \
- self._prepare_field(
- 'Original Mandate Identification',
- 'line.mandate_id.'
- 'original_mandate_identification',
- {'line': line},
- gen_args=gen_args)
- ori_creditor_scheme_id_2_53 = etree.SubElement(
- amendment_info_details_2_51, 'OrgnlCdtrSchmeId')
- self.generate_creditor_scheme_identification(
- ori_creditor_scheme_id_2_53,
- 'self.payment_order_ids[0].mode.'
- 'original_creditor_identifier or '
- 'self.payment_order_ids[0].company_id.'
- 'original_creditor_identifier',
- 'Original Creditor Identifier',
- {'self': self}, 'SEPA', gen_args)
-
- self.generate_party_block(
- dd_transaction_info_2_28, 'Dbtr', 'C',
- 'line.partner_id.name',
- 'line.bank_id.acc_number',
- 'line.bank_id.bank.bic or '
- 'line.bank_id.bank_bic',
- {'line': line}, gen_args)
-
- self.generate_remittance_info_block(
- dd_transaction_info_2_28, line, gen_args)
-
- nb_of_transactions_2_4.text = unicode(transactions_count_2_4)
- control_sum_2_5.text = '%.2f' % amount_control_sum_2_5
- nb_of_transactions_1_6.text = unicode(transactions_count_1_6)
- control_sum_1_7.text = '%.2f' % amount_control_sum_1_7
-
- return self.finalize_sepa_file_creation(
- xml_root, total_amount, transactions_count_1_6, gen_args)
-
- @api.multi
- def save_sepa(self):
- """Save the SEPA Direct Debit file: mark all payments in the file
- as 'sent'. Write 'last debit date' on mandate and set oneoff
- mandate to expired.
- """
- abmo = self.env['account.banking.mandate']
- for order in self.payment_order_ids:
- workflow.trg_validate(
- self._uid, 'payment.order', order.id, 'done', self._cr)
- self.env['ir.attachment'].create({
- 'res_model': 'payment.order',
- 'res_id': order.id,
- 'name': self.filename,
- 'datas': self.file,
- })
- to_expire_mandates = abmo.browse([])
- first_mandates = abmo.browse([])
- all_mandates = abmo.browse([])
- for bline in order.bank_line_ids:
- if bline.mandate_id in all_mandates:
- continue
- all_mandates += bline.mandate_id
- if bline.mandate_id.type == 'oneoff':
- to_expire_mandates += bline.mandate_id
- elif bline.mandate_id.type == 'recurrent':
- seq_type = bline.mandate_id.recurrent_sequence_type
- if seq_type == 'final':
- to_expire_mandates += bline.mandate_id
- elif seq_type == 'first':
- first_mandates += bline.mandate_id
- all_mandates.write(
- {'last_debit_date': fields.Date.context_today(self)})
- to_expire_mandates.write({'state': 'expired'})
- first_mandates.write({
- 'recurrent_sequence_type': 'recurring',
- 'sepa_migrated': True,
- })
- return True
diff --git a/account_banking_sepa_direct_debit/wizard/export_sdd_view.xml b/account_banking_sepa_direct_debit/wizard/export_sdd_view.xml
deleted file mode 100644
index 95117e270..000000000
--- a/account_banking_sepa_direct_debit/wizard/export_sdd_view.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
- banking.export.sdd.wizard.view
- banking.export.sdd.wizard
-
-