From d82e84dc08f9fd2508bd3a618ffc3b950a0a10d3 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 6 Nov 2013 16:42:24 +0100 Subject: [PATCH 1/8] Add support for pain.001.001.05 Fix dependencies (I need the field "payment_order_type" which is in account_banking_payment) Only use ASCII characters in the XML file (that's how banks use XML !) Use the payment order reference as the Message Identification of the XML file. Use the payment line sequence as the "End to End Identification" Remove the Instruction Identification ('InstrId') because it is not a required field (only the End to End identification is required) Rename variables in the function create_sepa() to include the number of each field as used in the EPC guidelines Reduce the number of flake8 warnings Make code more modular : - self.pool.get('banking.export.sepa').create() has a _prepare fonction - most of the content of the XML file can be inherited via _prepare_field() --- .../__openerp__.py | 9 +- .../account_banking_sepa.py | 42 +- .../account_banking_sepa_view.xml | 3 +- .../data/pain.001.001.05.xsd | 931 ++++++++++++++++++ .../data/payment_type_sepa_sct.xml | 17 +- .../wizard/export_sepa.py | 472 +++++---- .../wizard/export_sepa_view.xml | 9 +- 7 files changed, 1269 insertions(+), 214 deletions(-) create mode 100644 account_banking_sepa_credit_transfer/data/pain.001.001.05.xsd diff --git a/account_banking_sepa_credit_transfer/__openerp__.py b/account_banking_sepa_credit_transfer/__openerp__.py index 751058ea2..5f310feec 100644 --- a/account_banking_sepa_credit_transfer/__openerp__.py +++ b/account_banking_sepa_credit_transfer/__openerp__.py @@ -21,12 +21,15 @@ { 'name': 'Account Banking SEPA Credit Transfer', 'summary': 'Create SEPA XML files for Credit Transfers', - 'version': '0.1', + 'version': '0.2', 'license': 'AGPL-3', 'author': 'Akretion', 'website': 'http://www.akretion.com', 'category': 'Banking addons', - 'depends': ['account_banking_payment_export'], + 'depends': ['account_banking_payment'], + 'external_dependencies': { + 'python': ['unidecode', 'lxml'], + }, 'data': [ 'account_banking_sepa_view.xml', 'wizard/export_sepa_view.xml', @@ -36,7 +39,7 @@ 'description': ''' Module to export payment orders in SEPA XML file format. -SEPA PAIN (PAyment INitiation) is the new european standard for Customer-to-Bank payment instructions. This module implements SEPA Credit Transfer (SCT), more specifically PAIN versions 001.001.02, 001.001.03 and 001.001.04. It is part of the ISO 20022 standard, available on http://www.iso20022.org. +SEPA PAIN (PAyment INitiation) is the new european standard for Customer-to-Bank payment instructions. This module implements SEPA Credit Transfer (SCT), more specifically PAIN versions 001.001.02, 001.001.03, 001.001.04 and 001.001.05. It is part of the ISO 20022 standard, available on http://www.iso20022.org. The Implementation Guidelines for SEPA Credit Transfer published by the European Payments Council (http://http://www.europeanpaymentscouncil.eu) use PAIN version 001.001.03, so it's probably the version of PAIN that you should try first. diff --git a/account_banking_sepa_credit_transfer/account_banking_sepa.py b/account_banking_sepa_credit_transfer/account_banking_sepa.py index 432b59267..cd05413cf 100644 --- a/account_banking_sepa_credit_transfer/account_banking_sepa.py +++ b/account_banking_sepa_credit_transfer/account_banking_sepa.py @@ -21,18 +21,24 @@ from openerp.osv import orm, fields from openerp.addons.decimal_precision import decimal_precision as dp +from unidecode import unidecode class banking_export_sepa(orm.Model): '''SEPA export''' _name = 'banking.export.sepa' _description = __doc__ - _rec_name = '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] = 'sepa_' + (sepa_file.msg_identification or '') + '.xml' + ref = sepa_file.payment_order_ids[0].reference + if ref: + label = ref.replace('/', '-') + else: + label = 'error' + res[sepa_file.id] = 'sct_%s.xml' % label return res _columns = { @@ -40,32 +46,34 @@ class banking_export_sepa(orm.Model): 'payment.order', 'account_payment_order_sepa_rel', 'banking_export_sepa_id', 'account_order_id', - 'Payment orders', + 'Payment Orders', readonly=True), - 'prefered_exec_date': fields.date('Prefered execution date', readonly=True), - 'nb_transactions': fields.integer('Number of transactions', readonly=True), - 'total_amount': fields.float('Total amount', + 'prefered_exec_date': fields.date( + 'Prefered Execution Date', readonly=True), + 'nb_transactions': fields.integer( + 'Number of Transactions', readonly=True), + 'total_amount': fields.float('Total Amount', digits_compute=dp.get_precision('Account'), readonly=True), - 'msg_identification': fields.char('Message identification', size=35, - readonly=True), - 'batch_booking': fields.boolean('Batch booking', readonly=True, + 'batch_booking': fields.boolean( + 'Batch Booking', readonly=True, help="If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."), 'charge_bearer': fields.selection([ ('SHAR', 'Shared'), ('CRED', 'Borne by creditor'), ('DEBT', 'Borne by debtor'), ('SLEV', 'Following service level'), - ], 'Charge bearer', readonly=True, + ], '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', + '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, string='Filename', 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'), + ('draft', 'Draft'), + ('sent', 'Sent'), + ('done', 'Reconciled'), ], 'State', readonly=True), } diff --git a/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml b/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml index 1fdab318f..c4bd1aa8a 100644 --- a/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml +++ b/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml @@ -14,7 +14,6 @@
- @@ -47,7 +46,7 @@ banking.export.sepa - + diff --git a/account_banking_sepa_credit_transfer/data/pain.001.001.05.xsd b/account_banking_sepa_credit_transfer/data/pain.001.001.05.xsd new file mode 100644 index 000000000..235f9afb5 --- /dev/null +++ b/account_banking_sepa_credit_transfer/data/pain.001.001.05.xsd @@ -0,0 +1,931 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml b/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml index c5d80fec3..35dad3afc 100644 --- a/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml +++ b/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml @@ -4,20 +4,29 @@ + + SEPA Credit Transfer v05 + pain.001.001.05 + + + payment + + SEPA Credit Transfer v04 pain.001.001.04 + eval="[(6,0,[ref('base_iban.bank_iban')])]" /> payment - SEPA Credit Transfer v03 + SEPA Credit Transfer v03 (recommended) pain.001.001.03 + eval="[(6,0,[ref('base_iban.bank_iban')])]" /> payment @@ -26,7 +35,7 @@ SEPA Credit Transfer v02 pain.001.001.02 + eval="[(6,0,[ref('base_iban.bank_iban')])]" /> payment diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa.py b/account_banking_sepa_credit_transfer/wizard/export_sepa.py index 6a7850535..1a9d79c2d 100644 --- a/account_banking_sepa_credit_transfer/wizard/export_sepa.py +++ b/account_banking_sepa_credit_transfer/wizard/export_sepa.py @@ -23,11 +23,13 @@ from openerp.osv import orm, fields import base64 -from datetime import datetime, timedelta +from datetime import datetime from openerp.tools.translate import _ +from openerp.tools.safe_eval import safe_eval from openerp import tools, netsvc from lxml import etree import logging +from unidecode import unidecode _logger = logging.getLogger(__name__) @@ -35,36 +37,41 @@ _logger = logging.getLogger(__name__) class banking_export_sepa_wizard(orm.TransientModel): _name = 'banking.export.sepa.wizard' _description = 'Export SEPA Credit Transfer XML file' + _columns = { - 'state': fields.selection([('create', 'Create'), ('finish', 'Finish')], - 'State', readonly=True), - 'msg_identification': fields.char('Message identification', size=35, - # Can't set required=True on the field because it blocks - # the launch of the wizard -> I set it as required in the view - help='This is the message identification of the entire SEPA XML file. 35 characters max.'), - 'batch_booking': fields.boolean('Batch booking', + 'state': fields.selection([ + ('create', 'Create'), + ('finish', 'Finish'), + ], 'State', readonly=True), + 'batch_booking': fields.boolean( + 'Batch Booking', help="If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."), - 'prefered_exec_date': fields.date('Prefered execution date', + 'prefered_exec_date': fields.date( + 'Prefered Execution Date', help='This is the date on which the file should be processed by the bank. Please keep in mind that banks only execute on working days and typically use a delay of two days between execution date and effective transfer date.'), 'charge_bearer': fields.selection([ ('SHAR', 'Shared'), ('CRED', 'Borne by creditor'), ('DEBT', 'Borne by debtor'), ('SLEV', 'Following service level'), - ], 'Charge bearer', required=True, + ], 'Charge Bearer', required=True, help='Shared : transaction charges on the sender side are to be borne by the debtor, transaction charges on the receiver side are to be borne by the creditor (most transfers use this). Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor. Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme.'), - 'nb_transactions': fields.related('file_id', 'nb_transactions', - type='integer', string='Number of transactions', readonly=True), - 'total_amount': fields.related('file_id', 'total_amount', type='float', - string='Total amount', readonly=True), - 'file_id': fields.many2one('banking.export.sepa', 'SEPA XML file', readonly=True), - 'file': fields.related('file_id', 'file', string="File", type='binary', + '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), - 'filename': fields.related('file_id', 'filename', string="Filename", - type='char', size=256, readonly=True), - 'payment_order_ids': fields.many2many('payment.order', - 'wiz_sepa_payorders_rel', 'wizard_id', 'payment_order_id', - 'Payment orders', readonly=True), + 'file_id': fields.many2one( + 'banking.export.sepa', 'SEPA XML File', readonly=True), + 'file': fields.related( + 'file_id', 'file', string="File", type='binary', readonly=True), + 'filename': fields.related( + 'file_id', 'filename', string="Filename", type='char', + size=256, readonly=True), + 'payment_order_ids': fields.many2many( + 'payment.order', 'wiz_sepa_payorders_rel', 'wizard_id', + 'payment_order_id', 'Payment Orders', readonly=True), } _defaults = { @@ -72,13 +79,6 @@ class banking_export_sepa_wizard(orm.TransientModel): 'state': 'create', } - - def _limit_size(self, cr, uid, field, max_size, context=None): - '''Limit size of strings to respect the PAIN standard''' - max_size = int(max_size) - return field[0:max_size] - - def _validate_iban(self, cr, uid, iban, context=None): '''if IBAN is valid, returns IBAN if IBAN is NOT valid, raises an error message''' @@ -86,29 +86,97 @@ class banking_export_sepa_wizard(orm.TransientModel): 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) + 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_sepa_wizard, self).create(cr, uid, - vals, context=context) + return super(banking_export_sepa_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): + '''This function is designed to be inherited !''' + eval_ctx = { + 'sepa_export': sepa_export, + 'line': line, + } + try: + # SEPA uses XML ; XML = UTF-8 ; UTF-8 = support for all characters + # But we are dealing with banks... + # and many banks don't want non-ASCCI characters ! + # cf section 1.4 "Character set" of the SEPA Credit Transfer + # Scheme Customer-to-bank guidelines + value = unidecode(safe_eval(field_value, eval_ctx)) + 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 type of the field '%s' is %s. It should be a string or unicode.") + % (field_name, type(value))) + if not value: + raise orm.except_orm( + _('Error:'), + _("The '%s' is empty or 0. It should have a non-null value.") + % field_name) + if max_size and len(value) > max_size: + value = value[0:max_size] + return value + + def _prepare_export_sepa( + self, cr, uid, sepa_export, total_amount, transactions_count, + xml_string, context=None): + return { + 'batch_booking': sepa_export.batch_booking, + 'charge_bearer': sepa_export.charge_bearer, + 'prefered_exec_date': sepa_export.prefered_exec_date, + 'total_amount': total_amount, + 'nb_transactions': transactions_count, + 'file': base64.encodestring(xml_string), + 'payment_order_ids': [ + (6, 0, [x.id for x in sepa_export.payment_order_ids]) + ], + } + + def _validate_xml(self, cr, uid, xml_string, pain_flavor): + xsd_etree_obj = etree.parse( + tools.file_open( + 'account_banking_sepa_credit_transfer/data/%s.xsd' + % pain_flavor)) + official_pain_schema = etree.XMLSchema(xsd_etree_obj) + + try: + root_to_validate = etree.fromstring(xml_string) + official_pain_schema.assertValid(root_to_validate) + except Exception, e: + _logger.warning( + "The XML file is invalid against the XML Schema Definition") + _logger.warning(xml_string) + _logger.warning(e) + raise orm.except_orm( + _('Error :'), + _('The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s') + % str(e)) + return True def create_sepa(self, cr, uid, ids, context=None): ''' Creates the SEPA Credit Transfer file. That's the important code ! ''' sepa_export = self.browse(cr, uid, ids[0], context=context) - - my_company_name = sepa_export.payment_order_ids[0].mode.bank_id.partner_id.name - my_company_iban = self._validate_iban(cr, uid, sepa_export.payment_order_ids[0].mode.bank_id.acc_number, context=context) - my_company_bic = sepa_export.payment_order_ids[0].mode.bank_id.bank.bic - #my_company_country_code = sepa_export.payment_order_ids[0].mode.bank_id.partner_id.address[0].country_id.code - #my_company_city = sepa_export.payment_order_ids[0].mode.bank_id.partner_id.address[0].city - #my_company_street1 = sepa_export.payment_order_ids[0].mode.bank_id.partner_id.address[0].street pain_flavor = sepa_export.payment_order_ids[0].mode.type.code if pain_flavor == 'pain.001.001.02': bic_xml_tag = 'BIC' @@ -118,23 +186,28 @@ class banking_export_sepa_wizard(orm.TransientModel): bic_xml_tag = 'BIC' # size 70 -> 140 for with pain.001.001.03 # BUT the European Payment Council, in the document - # "SEPA Credit Transfer Scheme Customer-to-bank Implementation guidelines" v6.0 - # available on http://www.europeanpaymentscouncil.eu/knowledge_bank.cfm + # "SEPA Credit Transfer Scheme Customer-to-bank + # Implementation guidelines" v6.0 available on + # http://www.europeanpaymentscouncil.eu/knowledge_bank.cfm # says that 'Nm' should be limited to 70 - # so we follow the "European Payment Council" and we put 70 and not 140 + # so we follow the "European Payment Council" + # and we put 70 and not 140 name_maxsize = 70 root_xml_tag = 'CstmrCdtTrfInitn' elif pain_flavor == 'pain.001.001.04': bic_xml_tag = 'BICFI' name_maxsize = 140 root_xml_tag = 'CstmrCdtTrfInitn' + elif pain_flavor == 'pain.001.001.05': + bic_xml_tag = 'BICFI' + name_maxsize = 140 + root_xml_tag = 'CstmrCdtTrfInitn' + else: - raise orm.except_orm(_('Error :'), _("Payment Type Code '%s' is not supported. The only Payment Type Codes supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03' and 'pain.001.001.04'.") % pain_flavor) - if sepa_export.batch_booking: - my_batch_booking = 'true' - else: - my_batch_booking = 'false' - my_msg_identification = sepa_export.msg_identification + raise orm.except_orm( + _('Error :'), + _("Payment Type Code '%s' is not supported. The only Payment Type Codes supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04' and 'pain.001.001.05'.") + % pain_flavor) if sepa_export.prefered_exec_date: my_requested_exec_date = sepa_export.prefered_exec_date else: @@ -148,73 +221,99 @@ class banking_export_sepa_wizard(orm.TransientModel): 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].mode.bank_id.partner_id.name', + name_maxsize, sepa_export=sepa_export, context=context) + # A. Group header - group_header = etree.SubElement(pain_root, 'GrpHdr') - message_identification = etree.SubElement(group_header, 'MsgId') - message_identification.text = self._limit_size(cr, uid, my_msg_identification, 35, context=context) - creation_date_time = etree.SubElement(group_header, 'CreDtTm') - creation_date_time.text = datetime.strftime(datetime.today(), '%Y-%m-%dT%H:%M:%S') + group_header_1_0 = etree.SubElement(pain_root, 'GrpHdr') + message_identification_1_1 = etree.SubElement( + group_header_1_0, 'MsgId') + message_identification_1_1.text = self._prepare_field( + cr, uid, 'Message Identification', + 'sepa_export.payment_order_ids[0].reference', 35, + sepa_export=sepa_export, context=context) + creation_date_time_1_2 = etree.SubElement(group_header_1_0, 'CreDtTm') + creation_date_time_1_2.text = datetime.strftime( + datetime.today(), '%Y-%m-%dT%H:%M:%S') if pain_flavor == 'pain.001.001.02': # batch_booking is in "Group header" with pain.001.001.02 # and in "Payment info" in pain.001.001.03/04 - batch_booking = etree.SubElement(group_header, 'BtchBookg') - batch_booking.text = my_batch_booking - nb_of_transactions_grphdr = etree.SubElement(group_header, 'NbOfTxs') - control_sum_grphdr = etree.SubElement(group_header, 'CtrlSum') + batch_booking = etree.SubElement(group_header_1_0, 'BtchBookg') + batch_booking.text = str(sepa_export.batch_booking).lower() + nb_of_transactions_1_6 = etree.SubElement( + group_header_1_0, 'NbOfTxs') + control_sum_1_7 = etree.SubElement(group_header_1_0, 'CtrlSum') # Grpg removed in pain.001.001.03 if pain_flavor == 'pain.001.001.02': - grouping = etree.SubElement(group_header, 'Grpg') + grouping = etree.SubElement(group_header_1_0, 'Grpg') grouping.text = 'GRPD' - initiating_party = etree.SubElement(group_header, 'InitgPty') - initiating_party_name = etree.SubElement(initiating_party, 'Nm') - initiating_party_name.text = self._limit_size(cr, uid, my_company_name, name_maxsize, context=context) + 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 = etree.SubElement(pain_root, 'PmtInf') - payment_info_identification = etree.SubElement(payment_info, 'PmtInfId') - payment_info_identification.text = self._limit_size(cr, uid, my_msg_identification, 35, context=context) - payment_method = etree.SubElement(payment_info, 'PmtMtd') - payment_method.text = 'TRF' - if pain_flavor in ['pain.001.001.03', 'pain.001.001.04']: + payment_info_2_0 = etree.SubElement(pain_root, 'PmtInf') + payment_info_identification_2_1 = etree.SubElement( + payment_info_2_0, 'PmtInfId') + payment_info_identification_2_1.text = self._prepare_field( + cr, uid, 'Payment Information Identification', + "sepa_export.payment_order_ids[0].reference", + 35, sepa_export=sepa_export, context=context) + payment_method_2_2 = etree.SubElement(payment_info_2_0, 'PmtMtd') + payment_method_2_2.text = 'TRF' + if pain_flavor in [ + 'pain.001.001.03', 'pain.001.001.04', 'pain.001.001.05']: # batch_booking is in "Group header" with pain.001.001.02 # and in "Payment info" in pain.001.001.03/04 - batch_booking = etree.SubElement(payment_info, 'BtchBookg') - batch_booking.text = my_batch_booking + batch_booking_2_3 = etree.SubElement(payment_info_2_0, 'BtchBookg') + batch_booking_2_3.text = str(sepa_export.batch_booking).lower() # It may seem surprising, but the - # "SEPA Credit Transfer Scheme Customer-to-bank Implementation guidelines" - # v6.0 says that control sum and nb_of_transactions should be present - # at both "group header" level and "payment info" level - # This seems to be confirmed by the tests carried out at + # "SEPA Credit Transfer Scheme Customer-to-bank Implementation + # guidelines" v6.0 says that control sum and nb_of_transactions + # should be present at both "group header" level and "payment info" + # level. This seems to be confirmed by the tests carried out at # BNP Paribas in PAIN v001.001.03 - if pain_flavor in ['pain.001.001.03', 'pain.001.001.04']: - nb_of_transactions_pmtinf = etree.SubElement(payment_info, 'NbOfTxs') - control_sum_pmtinf = etree.SubElement(payment_info, 'CtrlSum') - payment_type_info = etree.SubElement(payment_info, 'PmtTpInf') - service_level = etree.SubElement(payment_type_info, 'SvcLvl') - service_level_code = etree.SubElement(service_level, 'Cd') - service_level_code.text = 'SEPA' - requested_exec_date = etree.SubElement(payment_info, 'ReqdExctnDt') - requested_exec_date.text = my_requested_exec_date - debtor = etree.SubElement(payment_info, 'Dbtr') - debtor_name = etree.SubElement(debtor, 'Nm') - debtor_name.text = self._limit_size(cr, uid, my_company_name, name_maxsize, context=context) -# debtor_address = etree.SubElement(debtor, 'PstlAdr') -# debtor_street = etree.SubElement(debtor_address, 'AdrLine') -# debtor_street.text = my_company_street1 -# debtor_city = etree.SubElement(debtor_address, 'AdrLine') -# debtor_city.text = my_company_city -# debtor_country = etree.SubElement(debtor_address, 'Ctry') -# debtor_country.text = my_company_country_code - debtor_account = etree.SubElement(payment_info, 'DbtrAcct') - debtor_account_id = etree.SubElement(debtor_account, 'Id') + if pain_flavor in [ + 'pain.001.001.03', 'pain.001.001.04', 'pain.001.001.05']: + nb_of_transactions_2_4 = etree.SubElement( + payment_info_2_0, 'NbOfTxs') + control_sum_2_5 = etree.SubElement(payment_info_2_0, 'CtrlSum') + payment_type_info_2_6 = etree.SubElement(payment_info_2_0, 'PmtTpInf') + service_level_2_8 = etree.SubElement(payment_type_info_2_6, 'SvcLvl') + service_level_code_2_9 = etree.SubElement(service_level_2_8, 'Cd') + service_level_code_2_9.text = 'SEPA' + requested_exec_date_2_17 = etree.SubElement( + payment_info_2_0, 'ReqdExctnDt') + requested_exec_date_2_17.text = my_requested_exec_date + debtor_2_19 = etree.SubElement(payment_info_2_0, 'Dbtr') + debtor_name = etree.SubElement(debtor_2_19, 'Nm') + debtor_name.text = my_company_name + debtor_account_2_20 = etree.SubElement(payment_info_2_0, 'DbtrAcct') + debtor_account_id = etree.SubElement(debtor_account_2_20, 'Id') debtor_account_iban = etree.SubElement(debtor_account_id, 'IBAN') - debtor_account_iban.text = my_company_iban - debtor_agent = etree.SubElement(payment_info, 'DbtrAgt') - debtor_agent_institution = etree.SubElement(debtor_agent, 'FinInstnId') - if my_company_bic: - debtor_agent_bic = etree.SubElement(debtor_agent_institution, bic_xml_tag) - debtor_agent_bic.text = my_company_bic - charge_bearer = etree.SubElement(payment_info, 'ChrgBr') - charge_bearer.text = sepa_export.charge_bearer + debtor_account_iban.text = self._validate_iban( + cr, uid, self._prepare_field( + cr, uid, 'Company IBAN', + 'sepa_export.payment_order_ids[0].mode.bank_id.acc_number', + sepa_export=sepa_export, context=context), + context=context) + debtor_agent_2_21 = etree.SubElement(payment_info_2_0, 'DbtrAgt') + debtor_agent_institution = etree.SubElement( + debtor_agent_2_21, 'FinInstnId') + debtor_agent_bic = etree.SubElement( + debtor_agent_institution, bic_xml_tag) + # TODO validate BIC with pattern + # [A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1} + # because OpenERP doesn't have a constraint on BIC + debtor_agent_bic.text = self._prepare_field( + cr, uid, 'Company BIC', + '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 transactions_count = 0 total_amount = 0.0 @@ -226,88 +325,100 @@ class banking_export_sepa_wizard(orm.TransientModel): for line in payment_order.line_ids: transactions_count += 1 # C. Credit Transfer Transaction Info - credit_transfer_transaction_info = etree.SubElement(payment_info, 'CdtTrfTxInf') - payment_identification = etree.SubElement(credit_transfer_transaction_info, 'PmtId') - instruction_identification = etree.SubElement(payment_identification, 'InstrId') - instruction_identification.text = self._limit_size(cr, uid, line.communication, 35, context=context) #otherwise, we can reach the invoice fields via ml_inv_ref - end2end_identification = etree.SubElement(payment_identification, 'EndToEndId') - end2end_identification.text = self._limit_size(cr, uid, line.communication, 35, context=context) - amount = etree.SubElement(credit_transfer_transaction_info, 'Amt') - instructed_amount = etree.SubElement(amount, 'InstdAmt', Ccy=line.currency.name) - instructed_amount.text = '%.2f' % line.amount_currency + credit_transfer_transaction_info_2_27 = etree.SubElement( + payment_info_2_0, 'CdtTrfTxInf') + payment_identification_2_28 = etree.SubElement( + credit_transfer_transaction_info_2_27, 'PmtId') + end2end_identification_2_30 = etree.SubElement( + payment_identification_2_28, 'EndToEndId') + end2end_identification_2_30.text = self._prepare_field( + cr, uid, 'End to End Identification', 'line.name', 35, + line=line, context=context) + currency_name = self._prepare_field( + cr, uid, 'Currency Code', 'line.currency.name', 3, + line=line, context=context) + amount_2_42 = etree.SubElement( + credit_transfer_transaction_info_2_27, 'Amt') + instructed_amount_2_43 = etree.SubElement( + amount_2_42, 'InstdAmt', Ccy=currency_name) + instructed_amount_2_43.text = '%.2f' % line.amount_currency amount_control_sum += line.amount_currency - creditor_agent = etree.SubElement(credit_transfer_transaction_info, 'CdtrAgt') - creditor_agent_institution = etree.SubElement(creditor_agent, 'FinInstnId') + creditor_agent_2_77 = etree.SubElement( + credit_transfer_transaction_info_2_27, 'CdtrAgt') + creditor_agent_institution = etree.SubElement( + creditor_agent_2_77, 'FinInstnId') if not line.bank_id: - raise orm.except_orm(_('Error :'), _("Missing Bank Account on invoice '%s' (payment order line reference '%s').") %(line.ml_inv_ref.number, line.name)) - if line.bank_id.bank.bic: - creditor_agent_bic = etree.SubElement(creditor_agent_institution, bic_xml_tag) - creditor_agent_bic.text = line.bank_id.bank.bic - creditor = etree.SubElement(credit_transfer_transaction_info, 'Cdtr') - creditor_name = etree.SubElement(creditor, 'Nm') - creditor_name.text = self._limit_size(cr, uid, line.partner_id.name, name_maxsize, context=context) -# I don't think they want it -# If they want it, we need to implement full spec p26 appendix -# creditor_address = etree.SubElement(creditor, 'PstlAdr') -# creditor_street = etree.SubElement(creditor_address, 'AdrLine') -# creditor_street.text = line.partner_id.address[0].street -# creditor_city = etree.SubElement(creditor_address, 'AdrLine') -# creditor_city.text = line.partner_id.address[0].city -# creditor_country = etree.SubElement(creditor_address, 'Ctry') -# creditor_country.text = line.partner_id.address[0].country_id.code - creditor_account = etree.SubElement(credit_transfer_transaction_info, 'CdtrAcct') - creditor_account_id = etree.SubElement(creditor_account, 'Id') - creditor_account_iban = etree.SubElement(creditor_account_id, 'IBAN') - creditor_account_iban.text = self._validate_iban(cr, uid, line.bank_id.acc_number, context=context) - remittance_info = etree.SubElement(credit_transfer_transaction_info, 'RmtInf') - # switch to Structured (Strdr) ? If we do it, beware that the format is not the same between pain 02 and pain 03 - remittance_info_unstructured = etree.SubElement(remittance_info, 'Ustrd') - remittance_info_unstructured.text = self._limit_size(cr, uid, line.communication, 140, context=context) + raise orm.except_orm( + _('Error :'), + _("Missing Bank Account on invoice '%s' (payment order line reference '%s').") + % (line.ml_inv_ref.number, line.name)) + creditor_agent_bic = etree.SubElement( + creditor_agent_institution, bic_xml_tag) + creditor_agent_bic.text = self._prepare_field( + cr, uid, 'Customer BIC', 'line.bank_id.bank.bic', + line=line, context=context) + creditor_2_79 = etree.SubElement( + credit_transfer_transaction_info_2_27, 'Cdtr') + creditor_name = etree.SubElement(creditor_2_79, 'Nm') + creditor_name.text = self._prepare_field( + cr, uid, 'Customer Name', 'line.partner_id.name', + name_maxsize, line=line, context=context) + creditor_account_2_80 = etree.SubElement( + credit_transfer_transaction_info_2_27, 'CdtrAcct') + creditor_account_id = etree.SubElement( + creditor_account_2_80, 'Id') + creditor_account_iban = etree.SubElement( + creditor_account_id, 'IBAN') + creditor_account_iban.text = self._validate_iban( + cr, uid, self._prepare_field( + cr, uid, 'Customer IBAN', + 'line.bank_id.acc_number', line=line, + context=context), + context=context) + remittance_info_2_91 = etree.SubElement( + credit_transfer_transaction_info_2_27, '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_99 = etree.SubElement( + remittance_info_2_91, 'Ustrd') + remittance_info_unstructured_2_99.text = self._prepare_field( + cr, uid, 'Remittance Information', 'line.communication', + 140, line=line, context=context) - if pain_flavor in ['pain.001.001.03', 'pain.001.001.04']: - nb_of_transactions_grphdr.text = nb_of_transactions_pmtinf.text = str(transactions_count) - control_sum_grphdr.text = control_sum_pmtinf.text = '%.2f' % amount_control_sum + if pain_flavor in [ + 'pain.001.001.03', 'pain.001.001.04', 'pain.001.001.05']: + 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 else: - nb_of_transactions_grphdr.text = str(transactions_count) - control_sum_grphdr.text = '%.2f' % amount_control_sum + nb_of_transactions_1_6.text = str(transactions_count) + control_sum_1_7.text = '%.2f' % amount_control_sum - - xml_string = etree.tostring(root, pretty_print=True, encoding='UTF-8', xml_declaration=True) - _logger.debug("Generated SEPA XML file below") + xml_string = etree.tostring( + root, pretty_print=True, encoding='UTF-8', xml_declaration=True) + _logger.debug( + "Generated SEPA Credit Transfer XML file in format %s below" + % pain_flavor) _logger.debug(xml_string) - official_pain_schema = etree.XMLSchema(etree.parse(tools.file_open('account_banking_sepa_credit_transfer/data/%s.xsd' % pain_flavor))) - - try: - root_to_validate = etree.fromstring(xml_string) - official_pain_schema.assertValid(root_to_validate) - except Exception, e: - _logger.warning("The XML file is invalid against the XML Schema Definition") - _logger.warning(xml_string) - _logger.warning(e) - raise orm.except_orm(_('Error :'), _('The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s') % str(e)) + self._validate_xml(cr, uid, xml_string, pain_flavor) # CREATE the banking.export.sepa record - file_id = self.pool.get('banking.export.sepa').create(cr, uid, - { - 'msg_identification': my_msg_identification, - 'batch_booking': sepa_export.batch_booking, - 'charge_bearer': sepa_export.charge_bearer, - 'prefered_exec_date': sepa_export.prefered_exec_date, - 'total_amount': total_amount, - 'nb_transactions': transactions_count, - 'file': base64.encodestring(xml_string), - 'payment_order_ids': [ - (6, 0, [x.id for x in sepa_export.payment_order_ids]) - ], - }, context=context) + file_id = self.pool.get('banking.export.sepa').create( + cr, uid, self._prepare_export_sepa( + cr, uid, sepa_export, total_amount, transactions_count, + xml_string, context=context), + context=context) - self.write(cr, uid, ids, { - 'file_id': file_id, - 'state': 'finish', + self.write( + cr, uid, ids, { + 'file_id': file_id, + 'state': 'finish', }, context=context) action = { - 'name': 'SEPA XML', + 'name': 'SEPA Credit Transfer XML', 'type': 'ir.actions.act_window', 'view_type': 'form', 'view_mode': 'form,tree', @@ -317,26 +428,27 @@ class banking_export_sepa_wizard(orm.TransientModel): } return action - def cancel_sepa(self, cr, uid, ids, context=None): ''' Cancel the SEPA PAIN: just drop the file ''' sepa_export = self.browse(cr, uid, ids[0], context=context) - self.pool.get('banking.export.sepa').unlink(cr, uid, sepa_export.file_id.id, context=context) + self.pool.get('banking.export.sepa').unlink( + cr, uid, sepa_export.file_id.id, context=context) return {'type': 'ir.actions.act_window_close'} - def save_sepa(self, cr, uid, ids, context=None): ''' - Save the SEPA PAIN: send the done signal to all payment orders in the file. - With the default workflow, they will transition to 'done', while with the - advanced workflow in account_banking_payment they will transition to 'sent' - waiting reconciliation. + Save the SEPA PAIN: send the done signal to all payment + orders in the file. With the default workflow, they will + transition to 'done', while with the advanced workflow in + account_banking_payment they will transition to 'sent' waiting + reconciliation. ''' sepa_export = self.browse(cr, uid, ids[0], context=context) - self.pool.get('banking.export.sepa').write(cr, uid, - sepa_export.file_id.id, {'state': 'sent'}, context=context) + self.pool.get('banking.export.sepa').write( + cr, uid, sepa_export.file_id.id, {'state': 'sent'}, + context=context) wf_service = netsvc.LocalService('workflow') for order in sepa_export.payment_order_ids: wf_service.trg_validate(uid, 'payment.order', order.id, 'done', cr) diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml b/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml index 8dff532e3..793d0c8e0 100644 --- a/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml +++ b/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml @@ -18,17 +18,10 @@ - - - - + From 360426c542ae0cb3d26dcc278c4204e1f8f2c760 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 6 Nov 2013 17:25:41 +0100 Subject: [PATCH 2/8] Update strings. Update FR translation. --- .../account_banking_sepa.py | 6 +- .../account_banking_sepa_view.xml | 6 +- .../account_banking_sepa_credit_transfer.pot | 222 ++++++++-------- .../i18n/fr.po | 242 +++++++++--------- .../wizard/export_sepa.py | 14 +- .../wizard/export_sepa_view.xml | 3 +- 6 files changed, 256 insertions(+), 237 deletions(-) diff --git a/account_banking_sepa_credit_transfer/account_banking_sepa.py b/account_banking_sepa_credit_transfer/account_banking_sepa.py index cd05413cf..941abe413 100644 --- a/account_banking_sepa_credit_transfer/account_banking_sepa.py +++ b/account_banking_sepa_credit_transfer/account_banking_sepa.py @@ -59,9 +59,9 @@ class banking_export_sepa(orm.Model): help="If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."), 'charge_bearer': fields.selection([ ('SHAR', 'Shared'), - ('CRED', 'Borne by creditor'), - ('DEBT', 'Borne by debtor'), - ('SLEV', 'Following service level'), + ('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( diff --git a/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml b/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml index c4bd1aa8a..0f93f2a03 100644 --- a/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml +++ b/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml @@ -26,7 +26,7 @@ - + @@ -56,7 +56,7 @@ - Generated SEPA Credit Transfer XML files + SEPA Credit Transfer Files banking.export.sepa form tree,form @@ -70,7 +70,7 @@ /> \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,25 +15,15 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,file:0 -#: field:banking.export.sepa.wizard,file_id:0 -msgid "SEPA XML file" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:0 -msgid "Payment order" -msgstr "" - #. module: account_banking_sepa_credit_transfer #: selection:banking.export.sepa.wizard,state:0 msgid "Create" msgstr "" #. module: account_banking_sepa_credit_transfer -#: help:banking.export.sepa.wizard,msg_identification:0 -msgid "This is the message identification of the entire SEPA XML file. 35 characters max." +#: field:banking.export.sepa,nb_transactions:0 +#: field:banking.export.sepa.wizard,nb_transactions:0 +msgid "Number of Transactions" msgstr "" #. module: account_banking_sepa_credit_transfer @@ -42,11 +32,6 @@ msgstr "" msgid "Filename" msgstr "" -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:0 -msgid "General information" -msgstr "" - #. module: account_banking_sepa_credit_transfer #: field:banking.export.sepa,state:0 #: field:banking.export.sepa.wizard,state:0 @@ -61,7 +46,13 @@ msgstr "" #. module: account_banking_sepa_credit_transfer #: field:banking.export.sepa,prefered_exec_date:0 #: field:banking.export.sepa.wizard,prefered_exec_date:0 -msgid "Prefered execution date" +msgid "Prefered Execution Date" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:119 +#, python-format +msgid "Cannot compute the '%s' of the Payment Line with Invoice Reference '%s'." msgstr "" #. module: account_banking_sepa_credit_transfer @@ -71,8 +62,9 @@ msgid "Shared" msgstr "" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,generation_date:0 -msgid "Generation date" +#: field:banking.export.sepa,batch_booking:0 +#: field:banking.export.sepa.wizard,batch_booking:0 +msgid "Batch Booking" msgstr "" #. module: account_banking_sepa_credit_transfer @@ -96,14 +88,27 @@ msgid "Reconciled" msgstr "" #. module: account_banking_sepa_credit_transfer -#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order -msgid "Generated SEPA files" +#: selection:banking.export.sepa,charge_bearer:0 +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Following Service Level" msgstr "" #. module: account_banking_sepa_credit_transfer -#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa -#: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa -msgid "Generated SEPA XML files" +#: selection:banking.export.sepa,charge_bearer:0 +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Borne by Creditor" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:124 +#, python-format +msgid "Cannot compute the '%s'." +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:128 +#, python-format +msgid "The type of the field '%s' is %s. It should be a string or unicode." msgstr "" #. module: account_banking_sepa_credit_transfer @@ -121,24 +126,6 @@ msgstr "" msgid "Generate" msgstr "" -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,msg_identification:0 -#: field:banking.export.sepa.wizard,msg_identification:0 -msgid "Message identification" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:284 -#, python-format -msgid "The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,total_amount:0 -#: field:banking.export.sepa.wizard,total_amount:0 -msgid "Total amount" -msgstr "" - #. module: account_banking_sepa_credit_transfer #: help:banking.export.sepa,charge_bearer:0 #: help:banking.export.sepa.wizard,charge_bearer:0 @@ -146,16 +133,79 @@ msgid "Shared : transaction charges on the sender side are to be borne by the de msgstr "" #. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Borne by creditor" +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:171 +#, python-format +msgid "The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s" msgstr "" #. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:0 -#: field:banking.export.sepa,payment_order_ids:0 -#: field:banking.export.sepa.wizard,payment_order_ids:0 -msgid "Payment orders" +#: selection:banking.export.sepa,charge_bearer:0 +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Borne by Debtor" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:118 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:123 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:132 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:170 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:208 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:352 +#, python-format +msgid "Error:" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa,total_amount:0 +#: field:banking.export.sepa.wizard,total_amount:0 +msgid "Total Amount" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa,charge_bearer:0 +#: field:banking.export.sepa.wizard,charge_bearer:0 +msgid "Charge Bearer" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:0 +msgid "SEPA File Generation" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:127 +#, python-format +msgid "Field type error:" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa +msgid "SEPA export" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:353 +#, python-format +msgid "Missing Bank Account on invoice '%s' (payment order line reference '%s')." +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa,file:0 +#: field:banking.export.sepa.wizard,file_id:0 +msgid "SEPA XML File" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:133 +#, python-format +msgid "The '%s' is empty or 0. It should have a non-null value." +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:209 +#, python-format +msgid "Payment Type Code '%s' is not supported. The only Payment Type Codes supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04' and 'pain.001.001.05'." msgstr "" #. module: account_banking_sepa_credit_transfer @@ -165,47 +215,22 @@ msgid "This IBAN is not valid : %s" msgstr "" #. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "SEPA XML file generation" +#: view:banking.export.sepa:0 +#: field:banking.export.sepa,payment_order_ids:0 +#: field:banking.export.sepa.wizard,payment_order_ids:0 +msgid "Payment Orders" msgstr "" #. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "Reference for further communication" +#: view:banking.export.sepa:0 +msgid "General Information" msgstr "" #. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "Processing details" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa -msgid "SEPA export" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Borne by debtor" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,nb_transactions:0 -#: field:banking.export.sepa.wizard,nb_transactions:0 -msgid "Number of transactions" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Following service level" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,charge_bearer:0 -#: field:banking.export.sepa.wizard,charge_bearer:0 -msgid "Charge bearer" +#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order +#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa +#: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa +msgid "SEPA Credit Transfer Files" msgstr "" #. module: account_banking_sepa_credit_transfer @@ -230,22 +255,7 @@ msgid "Cancel" msgstr "" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:135 -#, python-format -msgid "Payment Type Code '%s' is not supported. The only Payment Type Codes supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03' and 'pain.001.001.04'." -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:135 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:284 -#, python-format -msgid "Error :" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,batch_booking:0 -#: field:banking.export.sepa.wizard,batch_booking:0 -msgid "Batch booking" +#: field:banking.export.sepa,generation_date:0 +msgid "Generation Date" msgstr "" diff --git a/account_banking_sepa_credit_transfer/i18n/fr.po b/account_banking_sepa_credit_transfer/i18n/fr.po index bf39e5eb0..9278c9885 100644 --- a/account_banking_sepa_credit_transfer/i18n/fr.po +++ b/account_banking_sepa_credit_transfer/i18n/fr.po @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: OpenERP Server 6.1\n" +"Project-Id-Version: OpenERP Server 7.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-06 08:01+0000\n" -"PO-Revision-Date: 2013-06-06 08:01+0000\n" +"POT-Creation-Date: 2013-11-06 16:22+0000\n" +"PO-Revision-Date: 2013-11-06 16:22+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,26 +15,16 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,file:0 -#: field:banking.export.sepa.wizard,file_id:0 -msgid "SEPA XML file" -msgstr "Fichier SEPA XML" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:0 -msgid "Payment order" -msgstr "Ordre de paiement" - #. module: account_banking_sepa_credit_transfer #: selection:banking.export.sepa.wizard,state:0 msgid "Create" msgstr "Créer" #. module: account_banking_sepa_credit_transfer -#: help:banking.export.sepa.wizard,msg_identification:0 -msgid "This is the message identification of the entire SEPA XML file. 35 characters max." -msgstr "Ceci est le libellé d'identification du fichier SEPA XML. 35 caractères maximum." +#: field:banking.export.sepa,nb_transactions:0 +#: field:banking.export.sepa.wizard,nb_transactions:0 +msgid "Number of Transactions" +msgstr "Nombre de transactions" #. module: account_banking_sepa_credit_transfer #: field:banking.export.sepa,filename:0 @@ -42,11 +32,6 @@ msgstr "Ceci est le libellé d'identification du fichier SEPA XML. 35 caractère msgid "Filename" msgstr "Nom du fichier" -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:0 -msgid "General information" -msgstr "Informations générales" - #. module: account_banking_sepa_credit_transfer #: field:banking.export.sepa,state:0 #: field:banking.export.sepa.wizard,state:0 @@ -61,9 +46,15 @@ msgstr "Brouillon" #. module: account_banking_sepa_credit_transfer #: field:banking.export.sepa,prefered_exec_date:0 #: field:banking.export.sepa.wizard,prefered_exec_date:0 -msgid "Prefered execution date" +msgid "Prefered Execution Date" msgstr "Date d'exécution demandée" +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:119 +#, python-format +msgid "Cannot compute the '%s' of the Payment Line with Invoice Reference '%s'." +msgstr "Impossible de générer le '%s' de la ligne de paiement ayant la référence de facture '%s'." + #. module: account_banking_sepa_credit_transfer #: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 @@ -71,9 +62,10 @@ msgid "Shared" msgstr "Partagé" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,generation_date:0 -msgid "Generation date" -msgstr "Date de génération" +#: field:banking.export.sepa,batch_booking:0 +#: field:banking.export.sepa.wizard,batch_booking:0 +msgid "Batch Booking" +msgstr "Débit groupé" #. module: account_banking_sepa_credit_transfer #: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa_wizard @@ -96,15 +88,28 @@ msgid "Reconciled" msgstr "Réconcilié" #. module: account_banking_sepa_credit_transfer -#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order -msgid "Generated SEPA files" -msgstr "Fichiers SEPA générés" +#: selection:banking.export.sepa,charge_bearer:0 +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Following Service Level" +msgstr "Suivant le niveau de service" #. module: account_banking_sepa_credit_transfer -#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa -#: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa -msgid "Generated SEPA XML files" -msgstr "Fichiers SEPA XML générés" +#: selection:banking.export.sepa,charge_bearer:0 +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Borne by Creditor" +msgstr "Supportés par le destinataire" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:124 +#, python-format +msgid "Cannot compute the '%s'." +msgstr "Impossible de générer le '%s'." + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:128 +#, python-format +msgid "The type of the field '%s' is %s. It should be a string or unicode." +msgstr "Le champ '%s' est de type %s. Le type devrait être string ou unicode." #. module: account_banking_sepa_credit_transfer #: selection:banking.export.sepa,state:0 @@ -121,24 +126,6 @@ msgstr "Valider" msgid "Generate" msgstr "Générer" -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,msg_identification:0 -#: field:banking.export.sepa.wizard,msg_identification:0 -msgid "Message identification" -msgstr "Libellé d'identification" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:284 -#, python-format -msgid "The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s" -msgstr "Le fichier XML généré n'est pas valide par rapport à la Définition du Schéma XML officiel. Le fichier XML généré et le message d'erreur complet ont été écrits dans les logs du serveur. Voici l'erreur, qui vous donnera peut-être une idée sur la cause du problème : %s" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,total_amount:0 -#: field:banking.export.sepa.wizard,total_amount:0 -msgid "Total amount" -msgstr "Montant total" - #. module: account_banking_sepa_credit_transfer #: help:banking.export.sepa,charge_bearer:0 #: help:banking.export.sepa.wizard,charge_bearer:0 @@ -146,17 +133,80 @@ msgid "Shared : transaction charges on the sender side are to be borne by the de msgstr "Partagés : les frais bancaires côté émetteur sont à la charge de l'émetteur et les frais bancaires côté destinataire sont à la charge du destinataire (la plupart des virements utilisent cette répartition). Supportés par le destinataire : tous les frais bancaires sont à la charge du destinataire. Supportés par l'émetteur : tous les frais bancaires sont à la charge de l'émetteur. Suivant le niveau de service : la répartition des frais bancaires suit les règles pré-établies dans le contrat avec la banque." #. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Borne by creditor" -msgstr "Supportés par le destinataire" +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:171 +#, python-format +msgid "The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s" +msgstr "Le fichier XML généré n'est pas valide par rapport à la Définition du Schéma XML officiel. Le fichier XML généré et le message d'erreur complet ont été écrits dans les logs du serveur. Voici l'erreur, qui vous donnera peut-être une idée sur la cause du problème : %s" #. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:0 -#: field:banking.export.sepa,payment_order_ids:0 -#: field:banking.export.sepa.wizard,payment_order_ids:0 -msgid "Payment orders" -msgstr "Ordres de paiement" +#: selection:banking.export.sepa,charge_bearer:0 +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Borne by Debtor" +msgstr "Supportés par l'émetteur" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:118 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:123 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:132 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:170 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:208 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:352 +#, python-format +msgid "Error:" +msgstr "Erreur :" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa,total_amount:0 +#: field:banking.export.sepa.wizard,total_amount:0 +msgid "Total Amount" +msgstr "Montant total" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa,charge_bearer:0 +#: field:banking.export.sepa.wizard,charge_bearer:0 +msgid "Charge Bearer" +msgstr "Répartition des frais" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:0 +msgid "SEPA File Generation" +msgstr "Génération du fichier SEPA" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:127 +#, python-format +msgid "Field type error:" +msgstr "Erreur dans le type de champ:" + +#. module: account_banking_sepa_credit_transfer +#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa +msgid "SEPA export" +msgstr "Export SEPA" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:353 +#, python-format +msgid "Missing Bank Account on invoice '%s' (payment order line reference '%s')." +msgstr "Compte bancaire manquant sur la facture '%s' (référence de la ligne de paiement : '%s')." + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa,file:0 +#: field:banking.export.sepa.wizard,file_id:0 +msgid "SEPA XML File" +msgstr "Fichier SEPA XML" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:133 +#, python-format +msgid "The '%s' is empty or 0. It should have a non-null value." +msgstr "Le '%s' est vide ou égal à 0. La valeur devrait être non nulle." + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:209 +#, python-format +msgid "Payment Type Code '%s' is not supported. The only Payment Type Codes supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04' and 'pain.001.001.05'." +msgstr "Le code du Type de paiement '%s' n'est pas supporté. Les seuls codes de Type de paiement supportés pour les virements SEPA sont 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04' et 'pain.001.001.05'." #. module: account_banking_sepa_credit_transfer #: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90 @@ -165,48 +215,23 @@ msgid "This IBAN is not valid : %s" msgstr "Cet IBAN n'est pas valide : %s" #. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "SEPA XML file generation" -msgstr "Génération du fichier SEPA XML" +#: view:banking.export.sepa:0 +#: field:banking.export.sepa,payment_order_ids:0 +#: field:banking.export.sepa.wizard,payment_order_ids:0 +msgid "Payment Orders" +msgstr "Ordres de paiement" #. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "Reference for further communication" -msgstr "Référence pour communication ultérieure" +#: view:banking.export.sepa:0 +msgid "General Information" +msgstr "Informations générales" #. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "Processing details" -msgstr "Paramètres" - -#. module: account_banking_sepa_credit_transfer -#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa -msgid "SEPA export" -msgstr "Export SEPA" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Borne by debtor" -msgstr "Supportés par l'émetteur" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,nb_transactions:0 -#: field:banking.export.sepa.wizard,nb_transactions:0 -msgid "Number of transactions" -msgstr "Nombre de transactions" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Following service level" -msgstr "Suivant le niveau de service" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,charge_bearer:0 -#: field:banking.export.sepa.wizard,charge_bearer:0 -msgid "Charge bearer" -msgstr "Répartition des frais" +#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order +#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa +#: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa +msgid "SEPA Credit Transfer Files" +msgstr "Fichiers de virement SEPA" #. module: account_banking_sepa_credit_transfer #: help:banking.export.sepa,batch_booking:0 @@ -230,22 +255,7 @@ msgid "Cancel" msgstr "Annuler" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:135 -#, python-format -msgid "Payment Type Code '%s' is not supported. The only Payment Type Codes supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03' and 'pain.001.001.04'." -msgstr "Le code '%s' pour le Type de Paiment n'est pas supporté. Les seuls codes de Types de Paiement supportés pour les virements SEPA sont 'pain.001.001.02', 'pain.001.001.03' et 'pain.001.001.04'." - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:135 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:284 -#, python-format -msgid "Error :" -msgstr "Erreur :" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,batch_booking:0 -#: field:banking.export.sepa.wizard,batch_booking:0 -msgid "Batch booking" -msgstr "Débit groupé" +#: field:banking.export.sepa,generation_date:0 +msgid "Generation Date" +msgstr "Date de génération" diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa.py b/account_banking_sepa_credit_transfer/wizard/export_sepa.py index 1a9d79c2d..b1f237c7b 100644 --- a/account_banking_sepa_credit_transfer/wizard/export_sepa.py +++ b/account_banking_sepa_credit_transfer/wizard/export_sepa.py @@ -51,9 +51,9 @@ class banking_export_sepa_wizard(orm.TransientModel): help='This is the date on which the file should be processed by the bank. Please keep in mind that banks only execute on working days and typically use a delay of two days between execution date and effective transfer date.'), 'charge_bearer': fields.selection([ ('SHAR', 'Shared'), - ('CRED', 'Borne by creditor'), - ('DEBT', 'Borne by debtor'), - ('SLEV', 'Following service level'), + ('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( @@ -87,7 +87,7 @@ class banking_export_sepa_wizard(orm.TransientModel): return iban.replace(' ', '') else: raise orm.except_orm( - _('Error :'), _("This IBAN is not valid : %s") % iban) + _('Error:'), _("This IBAN is not valid : %s") % iban) def create(self, cr, uid, vals, context=None): payment_order_ids = context.get('active_ids', []) @@ -167,7 +167,7 @@ class banking_export_sepa_wizard(orm.TransientModel): _logger.warning(xml_string) _logger.warning(e) raise orm.except_orm( - _('Error :'), + _('Error:'), _('The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s') % str(e)) return True @@ -205,7 +205,7 @@ class banking_export_sepa_wizard(orm.TransientModel): else: raise orm.except_orm( - _('Error :'), + _('Error:'), _("Payment Type Code '%s' is not supported. The only Payment Type Codes supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04' and 'pain.001.001.05'.") % pain_flavor) if sepa_export.prefered_exec_date: @@ -349,7 +349,7 @@ class banking_export_sepa_wizard(orm.TransientModel): creditor_agent_2_77, 'FinInstnId') if not line.bank_id: raise orm.except_orm( - _('Error :'), + _('Error:'), _("Missing Bank Account on invoice '%s' (payment order line reference '%s').") % (line.ml_inv_ref.number, line.name)) creditor_agent_bic = etree.SubElement( diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml b/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml index 793d0c8e0..39daa7c7e 100644 --- a/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml +++ b/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml @@ -11,10 +11,9 @@ banking.export.sepa.wizard.view banking.export.sepa.wizard - + - From 8d42ec649deaeb8716502a71851c83b5fc336782 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Thu, 7 Nov 2013 12:50:36 +0100 Subject: [PATCH 3/8] [FIX] fields.date.context_today doesn't work with datetime => we now use the native field create_date Coding style improvements. --- account_banking_sepa_credit_transfer/__init__.py | 5 ++--- .../account_banking_sepa.py | 6 ++---- .../account_banking_sepa_view.xml | 4 ++-- account_banking_sepa_credit_transfer/wizard/__init__.py | 2 +- account_banking_sepa_credit_transfer/wizard/export_sepa.py | 4 ++-- .../wizard/export_sepa_view.xml | 2 +- 6 files changed, 10 insertions(+), 13 deletions(-) diff --git a/account_banking_sepa_credit_transfer/__init__.py b/account_banking_sepa_credit_transfer/__init__.py index f0e7fcb0b..207f87a21 100644 --- a/account_banking_sepa_credit_transfer/__init__.py +++ b/account_banking_sepa_credit_transfer/__init__.py @@ -20,6 +20,5 @@ # ############################################################################## -import wizard -import account_banking_sepa - +from . import wizard +from . import account_banking_sepa diff --git a/account_banking_sepa_credit_transfer/account_banking_sepa.py b/account_banking_sepa_credit_transfer/account_banking_sepa.py index 941abe413..ed41333fa 100644 --- a/account_banking_sepa_credit_transfer/account_banking_sepa.py +++ b/account_banking_sepa_credit_transfer/account_banking_sepa.py @@ -35,7 +35,7 @@ class banking_export_sepa(orm.Model): for sepa_file in self.browse(cr, uid, ids, context=context): ref = sepa_file.payment_order_ids[0].reference if ref: - label = ref.replace('/', '-') + label = unidecode(ref.replace('/', '-')) else: label = 'error' res[sepa_file.id] = 'sct_%s.xml' % label @@ -64,8 +64,7 @@ class banking_export_sepa(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), + 'create_date': fields.datetime('Generation Date', readonly=True), 'file': fields.binary('SEPA XML File', readonly=True), 'filename': fields.function( _generate_filename, type='char', size=256, string='Filename', @@ -78,6 +77,5 @@ class banking_export_sepa(orm.Model): } _defaults = { - 'generation_date': fields.date.context_today, 'state': 'draft', } diff --git a/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml b/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml index 0f93f2a03..8e5421cc4 100644 --- a/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml +++ b/account_banking_sepa_credit_transfer/account_banking_sepa_view.xml @@ -19,7 +19,7 @@ - + @@ -48,7 +48,7 @@ - + diff --git a/account_banking_sepa_credit_transfer/wizard/__init__.py b/account_banking_sepa_credit_transfer/wizard/__init__.py index 239513358..05230383b 100644 --- a/account_banking_sepa_credit_transfer/wizard/__init__.py +++ b/account_banking_sepa_credit_transfer/wizard/__init__.py @@ -20,4 +20,4 @@ # ############################################################################## -import export_sepa +from . import export_sepa diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa.py b/account_banking_sepa_credit_transfer/wizard/export_sepa.py index b1f237c7b..00330fb1c 100644 --- a/account_banking_sepa_credit_transfer/wizard/export_sepa.py +++ b/account_banking_sepa_credit_transfer/wizard/export_sepa.py @@ -36,7 +36,7 @@ _logger = logging.getLogger(__name__) class banking_export_sepa_wizard(orm.TransientModel): _name = 'banking.export.sepa.wizard' - _description = 'Export SEPA Credit Transfer XML file' + _description = 'Export SEPA Credit Transfer File' _columns = { 'state': fields.selection([ @@ -418,7 +418,7 @@ class banking_export_sepa_wizard(orm.TransientModel): }, context=context) action = { - 'name': 'SEPA Credit Transfer XML', + 'name': 'SEPA Credit Transfer File', 'type': 'ir.actions.act_window', 'view_type': 'form', 'view_mode': 'form,tree', diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml b/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml index 39daa7c7e..5d1d846e9 100644 --- a/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml +++ b/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml @@ -1,6 +1,6 @@ From 13734b7cf40144268f9f2b175a03a4b0782d64c2 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Mon, 11 Nov 2013 15:52:55 +0100 Subject: [PATCH 4/8] Update strings and French translation. --- account_banking_sepa_credit_transfer/i18n/fr.po | 8 ++++---- .../wizard/export_sepa.py | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/account_banking_sepa_credit_transfer/i18n/fr.po b/account_banking_sepa_credit_transfer/i18n/fr.po index 9278c9885..b994a985e 100644 --- a/account_banking_sepa_credit_transfer/i18n/fr.po +++ b/account_banking_sepa_credit_transfer/i18n/fr.po @@ -59,7 +59,7 @@ msgstr "Impossible de générer le '%s' de la ligne de paiement ayant la référ #: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 msgid "Shared" -msgstr "Partagé" +msgstr "Partagés" #. module: account_banking_sepa_credit_transfer #: field:banking.export.sepa,batch_booking:0 @@ -97,7 +97,7 @@ msgstr "Suivant le niveau de service" #: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 msgid "Borne by Creditor" -msgstr "Supportés par le destinataire" +msgstr "Supportés par le créancier" #. module: account_banking_sepa_credit_transfer #: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:124 @@ -130,7 +130,7 @@ msgstr "Générer" #: help:banking.export.sepa,charge_bearer:0 #: help:banking.export.sepa.wizard,charge_bearer:0 msgid "Shared : transaction charges on the sender side are to be borne by the debtor, transaction charges on the receiver side are to be borne by the creditor (most transfers use this). Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor. Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme." -msgstr "Partagés : les frais bancaires côté émetteur sont à la charge de l'émetteur et les frais bancaires côté destinataire sont à la charge du destinataire (la plupart des virements utilisent cette répartition). Supportés par le destinataire : tous les frais bancaires sont à la charge du destinataire. Supportés par l'émetteur : tous les frais bancaires sont à la charge de l'émetteur. Suivant le niveau de service : la répartition des frais bancaires suit les règles pré-établies dans le contrat avec la banque." +msgstr "Partagés : les frais bancaires côté émetteur sont à la charge du débiteur et les frais bancaires côté destinataire sont à la charge du créancier (la plupart des virements utilisent cette répartition). 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. Suivant le niveau de service : la répartition des frais bancaires suit les règles pré-établies dans le contrat avec la banque." #. module: account_banking_sepa_credit_transfer #: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:171 @@ -142,7 +142,7 @@ msgstr "Le fichier XML généré n'est pas valide par rapport à la Définition #: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 msgid "Borne by Debtor" -msgstr "Supportés par l'émetteur" +msgstr "Supportés par le débiteur" #. module: account_banking_sepa_credit_transfer #: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90 diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa.py b/account_banking_sepa_credit_transfer/wizard/export_sepa.py index 00330fb1c..ed816a318 100644 --- a/account_banking_sepa_credit_transfer/wizard/export_sepa.py +++ b/account_banking_sepa_credit_transfer/wizard/export_sepa.py @@ -50,12 +50,12 @@ class banking_export_sepa_wizard(orm.TransientModel): 'Prefered Execution Date', help='This is the date on which the file should be processed by the bank. Please keep in mind that banks only execute on working days and typically use a delay of two days between execution date and effective transfer date.'), 'charge_bearer': fields.selection([ + ('SLEV', 'Following Service Level'), ('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.'), + help='Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor.'), 'nb_transactions': fields.related( 'file_id', 'nb_transactions', type='integer', string='Number of Transactions', readonly=True), From 297f4db6919f60c4de577740d5e08b42d8fdfa37 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Mon, 11 Nov 2013 23:50:51 +0100 Subject: [PATCH 5/8] Add logo. --- .../static/src/img/icon.png | Bin 0 -> 6936 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 account_banking_sepa_credit_transfer/static/src/img/icon.png diff --git a/account_banking_sepa_credit_transfer/static/src/img/icon.png b/account_banking_sepa_credit_transfer/static/src/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..12ecf91ce177d6d36997bb6769f34ddd287a4465 GIT binary patch literal 6936 zcmV+z8|UPSP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*$` z7BD0^OCF&B02-J{L_t(|+RdAJcvbba_dk1|dCG9k$;rt)5C{em0)e0r5J9a|t@G5@ zYHy3RzP7!+-qyGJ`n2`-7WLk?)@rG(+S=P{2en#3D}tcN5HbS^gv|4JPR=~-v-kVQ ziGi4b;MDtj9-b#>+WgjcueE;P^<8TVe8OvOSypy=S=OdByJfLiugf>+)%iNDDkUys z6i|!+3PMmN5)4P;u5d)^34|gYqb~o+`o_LJhno8PKFR$FpTtFPyu5V7iqfoWEJj_G z-D)fw8ue>iJIBQSArHPl6j2nA6%Yjh1qA^CS&BN0Gz)oI$>e3FhC`89gWD56 z*x1zn;>&Lx+xNc~fOVz0DeKl1Zpm;a-H_q1tU6TRE7lzwK&??zT9U3B^S9UPSzKUa zO=)&lQ_H}QfBKt!PkpKYY`LXk>9XRi$Fnn%H@)!pCei6k;no}1V$f^&v{r3n4}X5? zFc+U+B&*cI?&{jEd!GOMk>j5@0N?yd)fcK(6+YV0GwwXl(8pb0zJLs8@~2{Sb!``w z75P)I<8hf6UaFy|XN=1?E*?5^V(6Rywe6ihpUpK@XY=JB+MK{VzH0GDGR7Z>5{^PRA`^{DXfz^%Fuy~3ykSyPjJPL) zpa_^vI!4F*WH^&qciv)N-q9rHW~5YYKEEi>6+F3Pa1i+;hrq^-sBgIF>gSzlmTUj` zYLj@^S2tp}n$ODEKu83&9hJroq8UMD!fZ)KrBZ>SpeQmP&jhmMM~?eZBsWUjg;^g% z6cg9*`6Ilw_c%FODXcEfo4WSFnoiDLT`=|fch4WdX3}6W>;C%ko>y<#vj^!T0r2DR zUi$2^V&`qo|Gi24`d2Spu**kd5En8Lb-AQia}h-m1qD!0WO?#$rT|bBW%8w*cn|RV z#)t&E(F!9NbaC7hK{Of_C)-De#^O}2$|o3#U^43H>2r~rZ3Wx*b%J={6qDMbe4*2ff z8*g5-BIl9qds0#Y9h^n|NGiXvE8eCkVh7Z$6iI zYrEBD=VU&1+chheEEs^&b8;S+WW^CxM3$YCHNWw)8g0rZ(lS=f$l`%OfDIS;;vc^pSZ(K$xr=J3G56EXZSQY#hD8fS|Gw4ozS-Dx{|+ zp;n3HWLdGM8Ug6;b&=^z#v2HeWYiQC<=gu9*LK&>=>eNJ7dT3nrr+Oua)hdLi{>>x zE^9D3F2d$XOuTx`9HF3DU zivx!{h{fWJjClb#|J=nKJvl0tmt@|*v0}-z7*(JCVtrZB-42^MyKB%V7UrkTX}m0h zF7*OT7AJ}-pBV?@xrE6z8RvUneHT>Fn{cxG)u; zKa3|-z?)IVl4eN8izNfbJhcf`!Se~C!n3wwH=C%>mpTA^&_M|T*Ikf;; znMt%P77L)@@ubZFATBF7(j3#jpJd^wUq4Gr%L%T#?kev3`nPFrPSiA2>)zo=!@em1 zIy$;&Y&^=p-0^t;I=i}QZfT{mawQ#oB8&0`%9dplmlZtT5M?FVQ~ys+mX)JTy<$~iI82)#IpN)+fHoIsM|EL)n1N|lK8Wu-X`_l;#=a$eroYHK?l znFc_HBl)_au>hsZa_6bX1uTyB3nDgd_e{aYYE7B(o<^f#ZDj?~NQ8IxzQ?lCa}zgY z{iS4NIC=B+zp~@?ot$^>YMjpWsT|qde1hugI;yMd09aXGidug?v9KGBT4HF}i`N$> zKi5W*C80v)W?Sj%92T?Eldc0EnM#5;TvocFAltgy69|hL8S|93+B{5_j58NH{s7@n z_>2kg>1Uo}X-NgER&QY2ub$y2Klw4ojvVC5D?Wo(t7UL-h?oBM8gKk#HyhShP5bR1 zo_~?=KX@~Hjq2gQn&1#{kggZ(PZ$<8SkmKFIlcUDl8#J|qYPFh<}CXTO3o-fM^n>KAg ztyV3#7I?pI=;-W1tJR`R3a5%96PM%IZB_&U#>QRPZ8o%875)7K!~^wc)Dn^;laZc` zR(mQTN|MasgRQb_BJh*@A9>^7MSv8uzRKkZvSjhxcUMt4FeNz`L{w&T|CE#@)N1t^ zBrk>Warcb(4SEBym^3Zv%Cd|os?h88WM^g2+t*J=XAcM>alt-$Oo~&i@D!UAF(v6m zi$zxjAg(RT%68bzW#OnS&R6Vc%|#1lYA%;+X8bRJ{SA+d;PZL$dZ$xmlgWtPZY4J- zn^-IcKyq?2vK&9<+GZnKtp-655Y%?!@q`bBqp_KJN2|qYvy@kyljjsG%5pa)S@c@t zJjN@EfH}En!N$i=+t~Ye)@rq#S@8))P!K*)C_!>^5-OF5*XzSzFwoxK$*o_wli`t3 z0Lm*i6A4F=V$!66Mq;vIinBzc)AwVuTF`1$`qitP7l{t1Wf6ecq@U;LOGcwLE(n0} zao3ERK&4V)v(4@Skw}E0p<#M@`VxjK3c+A#*02f&LnJ3#IB=+z3pP}dpO*u`D=+;P zwMLCbdzvUKSQ22UMS`Kov}-vW7GiOQEJsqIXx3>90o0ng<5OeISg`xM-R?7H|LGnx zK`0bLuh(I>+ek@G#^>|TS_!(`6O4_yXl_2iy7Skb3K6r3hK8g3`*(hLT18h%>u{g=|kRP=sWkJTvvW$CTVnOjgHa5B>joMrh1gjtj=;zV&MYUx?0E~=`%y55MmT@>{))n{N z_aNovWgI%No5P3p(AwHgW~P&${p3G+{1;Er(0GJMB+B;fZ!$PI%+`k=M52;1)jya~&jp#!Zk_z71wTIf;dNy5n0Y!xctga~MjxXQM z^0F$n@7PIOdk2+kR`R_Ee#FsZEi75Qi1BeZwRMd+GaU5v^x;TP5KD?2q&t#0a;%@+ z94k&o5^k4|lgImq#CTi|p03!;P6VU{#Q*4wB1utX91h2Vyhp3k5|77;#UxZJ6$ZU7 zQSx^8uxwev&7)BXwMspW)g?McVf2&Vk4bUVYBiBalrguD{5%_4tr~+~LsmvI1B0F^ zQ6sJ>ele~n!S`9yoIF4Zekk^roSckWy|C~x8Vop{=}55{Qanx|6sG!c9lq08VIUB| zY)<5(U@(NqlsM|5ktlH~PD8^n78T~8R;zKlJvi-VmMn6RIoZ1u1c7K&n$#v_;*uN` zL2-$Idm=FR@h15`)cJ3Y*+eWR;r05l zSj@b(V<-3B|0A-pG7=%Fyuar#A1pn5fhc-|W)jRW2)M*hDAuD^i-bbax%EHEGw;TI zK0o1bcn1Bo+2#fy!2m~ax!hCyJ`#zb$O_?b2$d?a(fqtzPMmDRJ>kJ%G@w$c$j!~d z7w}`ZS^3ACZ*#$h^DvoBq}grs^$#Y%PtoG@M~O|6pm&)%+DnrkJH~jNM3FZu5lOH*%=6e zz{$2wM1m|`oK8(cH?8d>)HQWeRFH->#e^&;l5`{-ZC4MEcuoTNymQC7TJR8y22rVJ zuNTI~#%E!F(~rN22@iMNu?2ujF8v%MBco(wr1R9apL6rAU&ib8v0_Cj4{!ZGLqo&- zpL@PTUT!uL8tzxM9k$C4#Q)Ymt0`Q-`OYum4$=12eWAXi;=ITfqQ(P}kxbaZj;HJ?RRWHxWU zAVFP?Mqd5f|8U2bZsqYOenTu4}8 zrlx5i6farKMHgR5U3~*9%9ba@%#|zn;X@D8)OeItD_7u1OXE;=Eg4QH&%f{@x88gm z;c%FpZ|!Au>(BV&7j7Uu-9c?#BWo&F@VTo#!#BQpKiA#(6$S@~&P&rK#Je}<&n4ns%BF%2YWHMni8L`C>gXQF?Ha}x)PtY~MM14rBZva= zc$|1#Mv65ke-r)OUhtKb)yStac;Sm-W6;6FmqtOrw1u=-781*8f<9^yZ$FSSXXeYZwiUO^z z{rG(0>Yx1TogYl=3-tC)yjYZHUp?450_8J%10}`INp(meEpIcTD9))0gECn+Osc}N zjL+vMuEa4K^iw*Y$z+_N3eUG{Ya6LpwF1TIAQDUPmg?#{Dl1pg($Y#nRvg15`-w#* zBq@%`sGa)#fy3<-WTnV8P5pnF(Hz}b-Lq|Y%-5Hnl_DQG)<4gY=*Bf%eby~)i^WWG zQW6@?ho2>kPl9c+n6X(?Cp{v;U|r(_XoVr<$=>*)f;5T>r`I8_5f5Hpq-R%k_ittZ zP+QyK?dWp<)^0V@($dF#H$({?!Q<}apS65`KO-Y!rxI>7gc$Ed6k*??c4`}X5-QU0 zsRX^}-4iS+u*uy$uBQ(jYV*$89zRsu@%YHNucxdyU4HBB=D8Ij5hCur1bxH*6aYLE zUdF~7{6NDpD*Bgggo}6<&;PrRg#u}RkA4*Bm zjniUR3&3u(5*7~k@xiRqSCcQkO` zsvNogXx~Ez4)nR^9g+F3U%m58Ysc7IRV#Dl7hXIx6;rdS#p);#_fCAC-cQ~5SR_cq zS3`zFBpjBgYwV%6p_>VB2(K?um>CQj-rawaY`aNr?{dBI)8Fj-?Sf{6Y8txk@pwZ+ z7giR?e|@EPe!WnXh`4t#I#{=$O#X4KKwuOi%^0;IGMy>t^=g)vWKo!(hFUF74Mz+P zdFbvQ!EQAU>~HM)*9FZ80W=;T9?#EB?OVDi?OLxlD4y&bXYnG(yg5N7594w7fhrZP z&WJL3et&RGZt6h(5HmvE-CbDpqof!Hu$a`eca750I!v0~LT|r|MFnYz9AMVt4@7wG zkMD8Wh9%JhHCmY$QIwYEHW<$Ki~f_5~&|KJ2A#hJ9W50jmlib1czV9*i> zM0o6%ySVwvQn{z!we5Rb-?(?){hle_BvsoRX-V13sw(o9)--er1H-;~!{Jmv5Hz9> zmE6a~_;G^%5yC+qv1piZL_()GOfxzd3=;5-5)KRz@U|239K|5^px5}&s1Yws zktCVYk}T3}W{gHHeFGB-01R5jTz($kwws%;ES0Y9IId_fOPR8*k8 z;iAiaUA{c)w*7V8;^0`2JMY*qrOKY|l4S*dP(o3}#1OSCVbF^+Cc8eknvV68?nuI9 z)Y9GOVp(wpK3^D%MNe&G4?EsyHrE-6ay-&fQ9wXIL=e*A2%sXE(D z9IWd;rd6}UXw(&7vVL)a2+EVszAHpy5{nAbK9ql%($!c+qv<&dhzE*nrT%1#6XLD7N?DI$ZPIinw{bu!v zUsPB3yFSYPKQ@1@s3=U@T$%f|+|1Jw{je82v*YR01q1u(7%5#(bz;dB6WoVvG&0+Pg_mx(4P7e ey#t@*{{BDaJT*%o#VE@F0000 Date: Tue, 12 Nov 2013 22:38:21 +0100 Subject: [PATCH 6/8] Better prototype for the _prepare_field function. Update help message, POT file and FR translation. --- .../account_banking_sepa.py | 4 +- .../account_banking_sepa_credit_transfer.pot | 56 ++++++++-------- .../i18n/fr.po | 66 ++++++++++--------- .../wizard/export_sepa.py | 38 +++++------ 4 files changed, 85 insertions(+), 79 deletions(-) diff --git a/account_banking_sepa_credit_transfer/account_banking_sepa.py b/account_banking_sepa_credit_transfer/account_banking_sepa.py index ed41333fa..be970a8f8 100644 --- a/account_banking_sepa_credit_transfer/account_banking_sepa.py +++ b/account_banking_sepa_credit_transfer/account_banking_sepa.py @@ -58,12 +58,12 @@ class banking_export_sepa(orm.Model): 'Batch Booking', readonly=True, help="If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file."), 'charge_bearer': fields.selection([ + ('SLEV', 'Following Service Level'), ('SHAR', 'Shared'), ('CRED', 'Borne by Creditor'), ('DEBT', 'Borne by Debtor'), - ('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.'), + help='Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor.'), 'create_date': fields.datetime('Generation Date', readonly=True), 'file': fields.binary('SEPA XML File', readonly=True), 'filename': fields.function( diff --git a/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot b/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot index d6dd522ce..7d0bd94cb 100644 --- a/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot +++ b/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-11-06 16:22+0000\n" -"PO-Revision-Date: 2013-11-06 16:22+0000\n" +"POT-Creation-Date: 2013-11-12 21:32+0000\n" +"PO-Revision-Date: 2013-11-12 21:32+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,6 +15,12 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa,prefered_exec_date:0 +#: field:banking.export.sepa.wizard,prefered_exec_date:0 +msgid "Prefered Execution Date" +msgstr "" + #. module: account_banking_sepa_credit_transfer #: selection:banking.export.sepa.wizard,state:0 msgid "Create" @@ -44,13 +50,12 @@ msgid "Draft" msgstr "" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,prefered_exec_date:0 -#: field:banking.export.sepa.wizard,prefered_exec_date:0 -msgid "Prefered Execution Date" +#: help:banking.export.sepa.wizard,charge_bearer:0 +msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor." msgstr "" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:119 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:117 #, python-format msgid "Cannot compute the '%s' of the Payment Line with Invoice Reference '%s'." msgstr "" @@ -100,13 +105,13 @@ msgid "Borne by Creditor" msgstr "" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:124 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:122 #, python-format msgid "Cannot compute the '%s'." msgstr "" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:128 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:126 #, python-format msgid "The type of the field '%s' is %s. It should be a string or unicode." msgstr "" @@ -127,13 +132,7 @@ msgid "Generate" msgstr "" #. module: account_banking_sepa_credit_transfer -#: help:banking.export.sepa,charge_bearer:0 -#: help:banking.export.sepa.wizard,charge_bearer:0 -msgid "Shared : transaction charges on the sender side are to be borne by the debtor, transaction charges on the receiver side are to be borne by the creditor (most transfers use this). Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor. Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme." -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:171 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:169 #, python-format msgid "The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s" msgstr "" @@ -146,12 +145,12 @@ msgstr "" #. module: account_banking_sepa_credit_transfer #: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:118 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:123 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:132 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:170 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:208 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:352 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:116 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:121 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:130 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:168 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:206 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:350 #, python-format msgid "Error:" msgstr "" @@ -174,7 +173,7 @@ msgid "SEPA File Generation" msgstr "" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:127 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:125 #, python-format msgid "Field type error:" msgstr "" @@ -185,7 +184,7 @@ msgid "SEPA export" msgstr "" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:353 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:351 #, python-format msgid "Missing Bank Account on invoice '%s' (payment order line reference '%s')." msgstr "" @@ -197,13 +196,18 @@ msgid "SEPA XML File" msgstr "" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:133 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:131 #, python-format msgid "The '%s' is empty or 0. It should have a non-null value." msgstr "" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:209 +#: help:banking.export.sepa,charge_bearer:0 +msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor." +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:207 #, python-format msgid "Payment Type Code '%s' is not supported. The only Payment Type Codes supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04' and 'pain.001.001.05'." msgstr "" @@ -255,7 +259,7 @@ msgid "Cancel" msgstr "" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,generation_date:0 +#: field:banking.export.sepa,create_date:0 msgid "Generation Date" msgstr "" diff --git a/account_banking_sepa_credit_transfer/i18n/fr.po b/account_banking_sepa_credit_transfer/i18n/fr.po index b994a985e..97957b31d 100644 --- a/account_banking_sepa_credit_transfer/i18n/fr.po +++ b/account_banking_sepa_credit_transfer/i18n/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-11-06 16:22+0000\n" -"PO-Revision-Date: 2013-11-06 16:22+0000\n" +"POT-Creation-Date: 2013-11-12 21:33+0000\n" +"PO-Revision-Date: 2013-11-12 21:33+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,6 +15,12 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa,prefered_exec_date:0 +#: field:banking.export.sepa.wizard,prefered_exec_date:0 +msgid "Prefered Execution Date" +msgstr "Date d'exécution demandée" + #. module: account_banking_sepa_credit_transfer #: selection:banking.export.sepa.wizard,state:0 msgid "Create" @@ -44,13 +50,12 @@ msgid "Draft" msgstr "Brouillon" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,prefered_exec_date:0 -#: field:banking.export.sepa.wizard,prefered_exec_date:0 -msgid "Prefered Execution Date" -msgstr "Date d'exécution demandée" +#: help:banking.export.sepa.wizard,charge_bearer:0 +msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor." +msgstr "Suivant le niveau de service : la répartition des frais bancaires suit les règles pré-établies dans le schema ou dans le contrat avec la banque (les messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais bancaires côté débiteur sont à la charge du débiteur, les frais bancaires côté créancier sont à la charge du créancier. Supportés par le créancier : tous les frais bancaires sont à la charge du créancier. Supportés par le débiteur : tous les frais bancaires sont à la charge du débiteur." #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:119 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:117 #, python-format msgid "Cannot compute the '%s' of the Payment Line with Invoice Reference '%s'." msgstr "Impossible de générer le '%s' de la ligne de paiement ayant la référence de facture '%s'." @@ -59,7 +64,7 @@ msgstr "Impossible de générer le '%s' de la ligne de paiement ayant la référ #: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 msgid "Shared" -msgstr "Partagés" +msgstr "Partagé" #. module: account_banking_sepa_credit_transfer #: field:banking.export.sepa,batch_booking:0 @@ -97,16 +102,16 @@ msgstr "Suivant le niveau de service" #: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 msgid "Borne by Creditor" -msgstr "Supportés par le créancier" +msgstr "Supportés par le destinataire" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:124 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:122 #, python-format msgid "Cannot compute the '%s'." msgstr "Impossible de générer le '%s'." #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:128 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:126 #, python-format msgid "The type of the field '%s' is %s. It should be a string or unicode." msgstr "Le champ '%s' est de type %s. Le type devrait être string ou unicode." @@ -127,13 +132,7 @@ msgid "Generate" msgstr "Générer" #. module: account_banking_sepa_credit_transfer -#: help:banking.export.sepa,charge_bearer:0 -#: help:banking.export.sepa.wizard,charge_bearer:0 -msgid "Shared : transaction charges on the sender side are to be borne by the debtor, transaction charges on the receiver side are to be borne by the creditor (most transfers use this). Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor. Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme." -msgstr "Partagés : les frais bancaires côté émetteur sont à la charge du débiteur et les frais bancaires côté destinataire sont à la charge du créancier (la plupart des virements utilisent cette répartition). 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. Suivant le niveau de service : la répartition des frais bancaires suit les règles pré-établies dans le contrat avec la banque." - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:171 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:169 #, python-format msgid "The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s" msgstr "Le fichier XML généré n'est pas valide par rapport à la Définition du Schéma XML officiel. Le fichier XML généré et le message d'erreur complet ont été écrits dans les logs du serveur. Voici l'erreur, qui vous donnera peut-être une idée sur la cause du problème : %s" @@ -142,16 +141,16 @@ msgstr "Le fichier XML généré n'est pas valide par rapport à la Définition #: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 msgid "Borne by Debtor" -msgstr "Supportés par le débiteur" +msgstr "Supportés par l'émetteur" #. module: account_banking_sepa_credit_transfer #: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:90 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:118 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:123 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:132 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:170 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:208 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:352 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:116 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:121 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:130 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:168 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:206 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:350 #, python-format msgid "Error:" msgstr "Erreur :" @@ -174,7 +173,7 @@ msgid "SEPA File Generation" msgstr "Génération du fichier SEPA" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:127 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:125 #, python-format msgid "Field type error:" msgstr "Erreur dans le type de champ:" @@ -185,7 +184,7 @@ msgid "SEPA export" msgstr "Export SEPA" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:353 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:351 #, python-format msgid "Missing Bank Account on invoice '%s' (payment order line reference '%s')." msgstr "Compte bancaire manquant sur la facture '%s' (référence de la ligne de paiement : '%s')." @@ -197,13 +196,18 @@ msgid "SEPA XML File" msgstr "Fichier SEPA XML" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:133 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:131 #, python-format msgid "The '%s' is empty or 0. It should have a non-null value." msgstr "Le '%s' est vide ou égal à 0. La valeur devrait être non nulle." #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:209 +#: help:banking.export.sepa,charge_bearer:0 +msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor." +msgstr "Suivant le niveau de service : la répartition des frais bancaires suit les règles pré-établies dans le schema ou dans le contrat avec la banque (les messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais bancaires côté débiteur sont à la charge du débiteur, les frais bancaires côté créancier sont à la charge du créancier. Supportés par le créancier : tous les frais bancaires sont à la charge du créancier. Supportés par le débiteur : tous les frais bancaires sont à la charge du débiteur." + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:207 #, python-format msgid "Payment Type Code '%s' is not supported. The only Payment Type Codes supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04' and 'pain.001.001.05'." msgstr "Le code du Type de paiement '%s' n'est pas supporté. Les seuls codes de Type de paiement supportés pour les virements SEPA sont 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04' et 'pain.001.001.05'." @@ -255,7 +259,7 @@ msgid "Cancel" msgstr "Annuler" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,generation_date:0 +#: field:banking.export.sepa,create_date:0 msgid "Generation Date" -msgstr "Date de génération" +msgstr "Generation Date" diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa.py b/account_banking_sepa_credit_transfer/wizard/export_sepa.py index ed816a318..1f40060c0 100644 --- a/account_banking_sepa_credit_transfer/wizard/export_sepa.py +++ b/account_banking_sepa_credit_transfer/wizard/export_sepa.py @@ -98,13 +98,10 @@ class banking_export_sepa_wizard(orm.TransientModel): 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): + self, cr, uid, field_name, field_value, eval_ctx, max_size=0, + context=None): '''This function is designed to be inherited !''' - eval_ctx = { - 'sepa_export': sepa_export, - 'line': line, - } + assert isinstance(eval_ctx, dict), 'eval_ctx must contain a dict' try: # SEPA uses XML ; XML = UTF-8 ; UTF-8 = support for all characters # But we are dealing with banks... @@ -113,6 +110,7 @@ class banking_export_sepa_wizard(orm.TransientModel): # Scheme Customer-to-bank guidelines value = unidecode(safe_eval(field_value, eval_ctx)) except: + line = eval_ctx.get('line') if line: raise orm.except_orm( _('Error:'), @@ -225,7 +223,7 @@ class banking_export_sepa_wizard(orm.TransientModel): my_company_name = self._prepare_field( cr, uid, 'Company Name', 'sepa_export.payment_order_ids[0].mode.bank_id.partner_id.name', - name_maxsize, sepa_export=sepa_export, context=context) + {'sepa_export': sepa_export}, name_maxsize, context=context) # A. Group header group_header_1_0 = etree.SubElement(pain_root, 'GrpHdr') @@ -233,8 +231,8 @@ class banking_export_sepa_wizard(orm.TransientModel): group_header_1_0, 'MsgId') message_identification_1_1.text = self._prepare_field( cr, uid, 'Message Identification', - 'sepa_export.payment_order_ids[0].reference', 35, - sepa_export=sepa_export, context=context) + 'sepa_export.payment_order_ids[0].reference', + {'sepa_export': sepa_export}, 35, context=context) creation_date_time_1_2 = etree.SubElement(group_header_1_0, 'CreDtTm') creation_date_time_1_2.text = datetime.strftime( datetime.today(), '%Y-%m-%dT%H:%M:%S') @@ -261,7 +259,7 @@ class banking_export_sepa_wizard(orm.TransientModel): payment_info_identification_2_1.text = self._prepare_field( cr, uid, 'Payment Information Identification', "sepa_export.payment_order_ids[0].reference", - 35, sepa_export=sepa_export, context=context) + {'sepa_export': sepa_export}, 35, context=context) payment_method_2_2 = etree.SubElement(payment_info_2_0, 'PmtMtd') payment_method_2_2.text = 'TRF' if pain_flavor in [ @@ -298,7 +296,7 @@ class banking_export_sepa_wizard(orm.TransientModel): 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), + {'sepa_export': sepa_export}, context=context), context=context) debtor_agent_2_21 = etree.SubElement(payment_info_2_0, 'DbtrAgt') debtor_agent_institution = etree.SubElement( @@ -311,7 +309,7 @@ class banking_export_sepa_wizard(orm.TransientModel): debtor_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) + {'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 @@ -332,11 +330,11 @@ class banking_export_sepa_wizard(orm.TransientModel): end2end_identification_2_30 = etree.SubElement( payment_identification_2_28, 'EndToEndId') end2end_identification_2_30.text = self._prepare_field( - cr, uid, 'End to End Identification', 'line.name', 35, - line=line, context=context) + cr, uid, 'End to End Identification', 'line.name', + {'line': line}, 35, context=context) currency_name = self._prepare_field( - cr, uid, 'Currency Code', 'line.currency.name', 3, - line=line, context=context) + cr, uid, 'Currency Code', 'line.currency.name', + {'line': line}, 3, context=context) amount_2_42 = etree.SubElement( credit_transfer_transaction_info_2_27, 'Amt') instructed_amount_2_43 = etree.SubElement( @@ -356,13 +354,13 @@ class banking_export_sepa_wizard(orm.TransientModel): creditor_agent_institution, bic_xml_tag) creditor_agent_bic.text = self._prepare_field( cr, uid, 'Customer BIC', 'line.bank_id.bank.bic', - line=line, context=context) + {'line': line}, context=context) creditor_2_79 = etree.SubElement( credit_transfer_transaction_info_2_27, 'Cdtr') creditor_name = etree.SubElement(creditor_2_79, 'Nm') creditor_name.text = self._prepare_field( cr, uid, 'Customer Name', 'line.partner_id.name', - name_maxsize, line=line, context=context) + {'line': line}, name_maxsize, context=context) creditor_account_2_80 = etree.SubElement( credit_transfer_transaction_info_2_27, 'CdtrAcct') creditor_account_id = etree.SubElement( @@ -372,7 +370,7 @@ class banking_export_sepa_wizard(orm.TransientModel): creditor_account_iban.text = self._validate_iban( cr, uid, self._prepare_field( cr, uid, 'Customer IBAN', - 'line.bank_id.acc_number', line=line, + 'line.bank_id.acc_number', {'line': line}, context=context), context=context) remittance_info_2_91 = etree.SubElement( @@ -384,7 +382,7 @@ class banking_export_sepa_wizard(orm.TransientModel): remittance_info_2_91, 'Ustrd') remittance_info_unstructured_2_99.text = self._prepare_field( cr, uid, 'Remittance Information', 'line.communication', - 140, line=line, context=context) + {'line': line}, 140, context=context) if pain_flavor in [ 'pain.001.001.03', 'pain.001.001.04', 'pain.001.001.05']: From 7ad64af78855818e676dbd11927351a3dff9f1a8 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 13 Nov 2013 09:19:50 +0100 Subject: [PATCH 7/8] Revert the dependancy to account_banking_payment_export (the field payment_order_type on payment.mode.type has a default value of "payment" anyway). --- account_banking_sepa_credit_transfer/__openerp__.py | 2 +- .../data/payment_type_sepa_sct.xml | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/account_banking_sepa_credit_transfer/__openerp__.py b/account_banking_sepa_credit_transfer/__openerp__.py index 5f310feec..c5c97dd9a 100644 --- a/account_banking_sepa_credit_transfer/__openerp__.py +++ b/account_banking_sepa_credit_transfer/__openerp__.py @@ -26,7 +26,7 @@ 'author': 'Akretion', 'website': 'http://www.akretion.com', 'category': 'Banking addons', - 'depends': ['account_banking_payment'], + 'depends': ['account_banking_payment_export'], 'external_dependencies': { 'python': ['unidecode', 'lxml'], }, diff --git a/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml b/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml index 35dad3afc..f07ece146 100644 --- a/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml +++ b/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml @@ -10,7 +10,6 @@ - payment @@ -19,7 +18,6 @@ - payment @@ -28,7 +26,6 @@ - payment @@ -37,7 +34,6 @@ - payment From 7ac9a4e4867fd339fb4b545a2062f7564a15b9bc Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 13 Nov 2013 10:17:33 +0100 Subject: [PATCH 8/8] Fix merge of translations. --- .../account_banking_sepa_credit_transfer.pot | 114 +--------- .../i18n/fr.po | 202 ++---------------- 2 files changed, 15 insertions(+), 301 deletions(-) diff --git a/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot b/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot index 904f77363..ba9f9fb70 100644 --- a/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot +++ b/account_banking_sepa_credit_transfer/i18n/account_banking_sepa_credit_transfer.pot @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-11-12 21:32+0000\n" -"PO-Revision-Date: 2013-11-12 21:32+0000\n" +"POT-Creation-Date: 2013-11-13 09:13+0000\n" +"PO-Revision-Date: 2013-11-13 09:13+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -93,7 +93,6 @@ msgid "Reconciled" msgstr "" #. module: account_banking_sepa_credit_transfer -<<<<<<< TREE #: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 msgid "Following Service Level" @@ -118,8 +117,6 @@ msgid "The type of the field '%s' is %s. It should be a string or unicode." msgstr "" #. module: account_banking_sepa_credit_transfer -======= ->>>>>>> MERGE-SOURCE #: selection:banking.export.sepa,state:0 msgid "Sent" msgstr "" @@ -135,17 +132,7 @@ msgid "Generate" msgstr "" #. module: account_banking_sepa_credit_transfer -<<<<<<< TREE #: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:169 -======= -#: field:banking.export.sepa,msg_identification:0 -#: field:banking.export.sepa.wizard,msg_identification:0 -msgid "Message identification" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:287 ->>>>>>> MERGE-SOURCE #, python-format msgid "The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s" msgstr "" @@ -232,71 +219,9 @@ msgid "This IBAN is not valid : %s" msgstr "" #. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa:0 #: field:banking.export.sepa,payment_order_ids:0 #: field:banking.export.sepa.wizard,payment_order_ids:0 -<<<<<<< TREE -======= -msgid "Payment orders" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order -msgid "Generated SEPA Credit Transfer files" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:89 -#, python-format -msgid "This IBAN is not valid : %s" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "SEPA XML file generation" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "Reference for further communication" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "Processing details" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa -msgid "SEPA export" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:242 -#, python-format -msgid "Missing Bank Account on invoice '%s' (payment order line reference '%s')." -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Borne by debtor" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,nb_transactions:0 -#: field:banking.export.sepa.wizard,nb_transactions:0 -msgid "Number of transactions" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Following service level" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:0 ->>>>>>> MERGE-SOURCE msgid "Payment Orders" msgstr "" @@ -306,16 +231,10 @@ msgid "General Information" msgstr "" #. module: account_banking_sepa_credit_transfer -<<<<<<< TREE #: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order #: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa #: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa msgid "SEPA Credit Transfer Files" -======= -#: field:banking.export.sepa,charge_bearer:0 -#: field:banking.export.sepa.wizard,charge_bearer:0 -msgid "Charge bearer" ->>>>>>> MERGE-SOURCE msgstr "" #. module: account_banking_sepa_credit_transfer @@ -340,34 +259,7 @@ msgid "Cancel" msgstr "" #. module: account_banking_sepa_credit_transfer -<<<<<<< TREE #: field:banking.export.sepa,create_date:0 msgid "Generation Date" -======= -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:132 -#, python-format -msgid "Payment Type Code '%s' is not supported. The only Payment Type Codes supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03' and 'pain.001.001.04'." -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:89 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:132 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:242 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:287 -#, python-format -msgid "Error :" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,batch_booking:0 -#: field:banking.export.sepa.wizard,batch_booking:0 -msgid "Batch booking" ->>>>>>> MERGE-SOURCE -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa -#: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa -msgid "Generated SEPA Credit Transfer XML files" msgstr "" diff --git a/account_banking_sepa_credit_transfer/i18n/fr.po b/account_banking_sepa_credit_transfer/i18n/fr.po index 95e1625be..4239bf979 100644 --- a/account_banking_sepa_credit_transfer/i18n/fr.po +++ b/account_banking_sepa_credit_transfer/i18n/fr.po @@ -6,15 +6,14 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-11-12 21:33+0000\n" -"PO-Revision-Date: 2013-11-12 21:33+0000\n" +"POT-Creation-Date: 2013-11-13 09:14+0000\n" +"PO-Revision-Date: 2013-11-13 09:14+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-11-12 06:38+0000\n" -"X-Generator: Launchpad (build 16820)\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" #. module: account_banking_sepa_credit_transfer #: field:banking.export.sepa,prefered_exec_date:0 @@ -28,20 +27,10 @@ msgid "Create" msgstr "Créer" #. module: account_banking_sepa_credit_transfer -<<<<<<< TREE #: field:banking.export.sepa,nb_transactions:0 #: field:banking.export.sepa.wizard,nb_transactions:0 msgid "Number of Transactions" msgstr "Nombre de transactions" -======= -#: help:banking.export.sepa.wizard,msg_identification:0 -msgid "" -"This is the message identification of the entire SEPA XML file. 35 " -"characters max." -msgstr "" -"Ceci est le libellé d'identification du fichier SEPA XML. 35 caractères " -"maximum." ->>>>>>> MERGE-SOURCE #. module: account_banking_sepa_credit_transfer #: field:banking.export.sepa,filename:0 @@ -104,7 +93,6 @@ msgid "Reconciled" msgstr "Réconcilié" #. module: account_banking_sepa_credit_transfer -<<<<<<< TREE #: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 msgid "Following Service Level" @@ -129,8 +117,6 @@ msgid "The type of the field '%s' is %s. It should be a string or unicode." msgstr "Le champ '%s' est de type %s. Le type devrait être string ou unicode." #. module: account_banking_sepa_credit_transfer -======= ->>>>>>> MERGE-SOURCE #: selection:banking.export.sepa,state:0 msgid "Sent" msgstr "Envoyé" @@ -146,28 +132,10 @@ msgid "Generate" msgstr "Générer" #. module: account_banking_sepa_credit_transfer -<<<<<<< TREE #: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:169 -======= -#: field:banking.export.sepa,msg_identification:0 -#: field:banking.export.sepa.wizard,msg_identification:0 -msgid "Message identification" -msgstr "Libellé d'identification" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:287 ->>>>>>> MERGE-SOURCE #, python-format -msgid "" -"The generated XML file is not valid against the official XML Schema " -"Definition. The generated XML file and the full error have been written in " -"the server logs. Here is the error, which may give you an idea on the cause " -"of the problem : %s" -msgstr "" -"Le fichier XML généré n'est pas valide par rapport à la Définition du Schéma " -"XML officiel. Le fichier XML généré et le message d'erreur complet ont été " -"écrits dans les logs du serveur. Voici l'erreur, qui vous donnera peut-être " -"une idée sur la cause du problème : %s" +msgid "The generated XML file is not valid against the official XML Schema Definition. The generated XML file and the full error have been written in the server logs. Here is the error, which may give you an idea on the cause of the problem : %s" +msgstr "Le fichier XML généré n'est pas valide par rapport à la Définition du Schéma XML officiel. Le fichier XML généré et le message d'erreur complet ont été écrits dans les logs du serveur. Voici l'erreur, qui vous donnera peut-être une idée sur la cause du problème : %s" #. module: account_banking_sepa_credit_transfer #: selection:banking.export.sepa,charge_bearer:0 @@ -235,7 +203,6 @@ msgstr "Le '%s' est vide ou égal à 0. La valeur devrait être non nulle." #. module: account_banking_sepa_credit_transfer #: help:banking.export.sepa,charge_bearer:0 -<<<<<<< TREE 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." @@ -250,148 +217,36 @@ msgstr "Le code du Type de paiement '%s' n'est pas supporté. Les seuls codes de #, python-format msgid "This IBAN is not valid : %s" msgstr "Cet IBAN n'est pas valide : %s" -======= -#: help:banking.export.sepa.wizard,charge_bearer:0 -msgid "" -"Shared : transaction charges on the sender side are to be borne by the " -"debtor, transaction charges on the receiver side are to be borne by the " -"creditor (most transfers use this). Borne by creditor : all transaction " -"charges are to be borne by the creditor. Borne by debtor : all transaction " -"charges are to be borne by the debtor. Following service level : transaction " -"charges are to be applied following the rules agreed in the service level " -"and/or scheme." -msgstr "" -"Partagés : les frais bancaires côté émetteur sont à la charge de l'émetteur " -"et les frais bancaires côté destinataire sont à la charge du destinataire " -"(la plupart des virements utilisent cette répartition). Supportés par le " -"destinataire : tous les frais bancaires sont à la charge du destinataire. " -"Supportés par l'émetteur : tous les frais bancaires sont à la charge de " -"l'émetteur. Suivant le niveau de service : la répartition des frais " -"bancaires suit les règles pré-établies dans le contrat avec la banque." - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Borne by creditor" -msgstr "Supportés par le destinataire" ->>>>>>> MERGE-SOURCE #. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa:0 #: field:banking.export.sepa,payment_order_ids:0 #: field:banking.export.sepa.wizard,payment_order_ids:0 msgid "Payment Orders" msgstr "Ordres de paiement" #. module: account_banking_sepa_credit_transfer -<<<<<<< TREE -======= -#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order -msgid "Generated SEPA Credit Transfer files" -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:89 -#, python-format -msgid "This IBAN is not valid : %s" -msgstr "Cet IBAN n'est pas valide : %s" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "SEPA XML file generation" -msgstr "Génération du fichier SEPA XML" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "Reference for further communication" -msgstr "Référence pour communication ultérieure" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "Processing details" -msgstr "Paramètres" - -#. module: account_banking_sepa_credit_transfer -#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa -msgid "SEPA export" -msgstr "Export SEPA" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:242 -#, python-format -msgid "" -"Missing Bank Account on invoice '%s' (payment order line reference '%s')." -msgstr "" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Borne by debtor" -msgstr "Supportés par l'émetteur" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,nb_transactions:0 -#: field:banking.export.sepa.wizard,nb_transactions:0 -msgid "Number of transactions" -msgstr "Nombre de transactions" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Following service level" -msgstr "Suivant le niveau de service" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:0 -msgid "Payment Orders" -msgstr "" - -#. module: account_banking_sepa_credit_transfer ->>>>>>> MERGE-SOURCE #: view:banking.export.sepa:0 msgid "General Information" -<<<<<<< TREE msgstr "Informations générales" -======= -msgstr "" ->>>>>>> MERGE-SOURCE #. module: account_banking_sepa_credit_transfer -<<<<<<< TREE #: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order #: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa #: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa msgid "SEPA Credit Transfer Files" msgstr "Fichiers de virement SEPA" -======= -#: field:banking.export.sepa,charge_bearer:0 -#: field:banking.export.sepa.wizard,charge_bearer:0 -msgid "Charge bearer" -msgstr "Répartition des frais" ->>>>>>> MERGE-SOURCE #. module: account_banking_sepa_credit_transfer #: help:banking.export.sepa,batch_booking:0 #: help:banking.export.sepa.wizard,batch_booking:0 -msgid "" -"If true, the bank statement will display only one debit line for all the " -"wire transfers of the SEPA XML file ; if false, the bank statement will " -"display one debit line per wire transfer of the SEPA XML file." -msgstr "" -"Si coché, le relevé de compte ne comportera qu'une ligne de débit pour tous " -"les virements du fichier SEPA XML ; si non coché, le relevé de compte " -"comportera une ligne de débit pour chaque virement du fichier SEPA XML." +msgid "If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file." +msgstr "Si coché, le relevé de compte ne comportera qu'une ligne de débit pour tous les virements du fichier SEPA XML ; si non coché, le relevé de compte comportera une ligne de débit pour chaque virement du fichier SEPA XML." #. module: account_banking_sepa_credit_transfer #: help:banking.export.sepa.wizard,prefered_exec_date:0 -msgid "" -"This is the date on which the file should be processed by the bank. Please " -"keep in mind that banks only execute on working days and typically use a " -"delay of two days between execution date and effective transfer date." -msgstr "" -"C'est la date à laquelle le fichier doit être traité par la banque. Gardez " -"en tête que les banques réalisent des traitements seulement les jours ouvrés " -"et ont habituellement un délai de 2 jours entre la date de traitement et la " -"date du transfert effectif." +msgid "This is the date on which the file should be processed by the bank. Please keep in mind that banks only execute on working days and typically use a delay of two days between execution date and effective transfer date." +msgstr "C'est la date à laquelle le fichier doit être traité par la banque. Gardez en tête que les banques réalisent des traitements seulement les jours ouvrés et ont habituellement un délai de 2 jours entre la date de traitement et la date du transfert effectif." #. module: account_banking_sepa_credit_transfer #: field:banking.export.sepa.wizard,file:0 @@ -404,40 +259,7 @@ msgid "Cancel" msgstr "Annuler" #. module: account_banking_sepa_credit_transfer -<<<<<<< TREE #: field:banking.export.sepa,create_date:0 msgid "Generation Date" -msgstr "Generation Date" -======= -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:132 -#, python-format -msgid "" -"Payment Type Code '%s' is not supported. The only Payment Type Codes " -"supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03' " -"and 'pain.001.001.04'." -msgstr "" -"Le code '%s' pour le Type de Paiment n'est pas supporté. Les seuls codes de " -"Types de Paiement supportés pour les virements SEPA sont 'pain.001.001.02', " -"'pain.001.001.03' et 'pain.001.001.04'." +msgstr "Date de génération" -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:89 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:132 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:242 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:287 -#, python-format -msgid "Error :" -msgstr "Erreur :" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,batch_booking:0 -#: field:banking.export.sepa.wizard,batch_booking:0 -msgid "Batch booking" -msgstr "Débit groupé" ->>>>>>> MERGE-SOURCE - -#. module: account_banking_sepa_credit_transfer -#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa -#: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa -msgid "Generated SEPA Credit Transfer XML files" -msgstr ""