sepa_direct_debit_mandate: Split basic and sepa mandate

This commit is contained in:
Sergio Incaser
2016-04-01 15:16:29 +02:00
committed by Carlos Roca
parent 5fb0ea85ed
commit c0669d8841
12 changed files with 597 additions and 108 deletions

View File

@@ -71,6 +71,7 @@ Contributors
* Raphaël Valyi
* Sandy Carter
* Antonio Espinosa <antonioea@antiun.com>
* Sergio Teruel <sergio.teruel@tecnativa.com>
Maintainer

View File

@@ -7,7 +7,7 @@
{
'name': 'Account Banking SEPA Direct Debit',
'summary': 'Create SEPA files for Direct Debit',
'version': '8.0.0.4.0',
'version': '8.0.0.5.0',
'license': 'AGPL-3',
'author': "Akretion, "
"Serv. Tecnol. Avanzados - Pedro M. Baeza, "
@@ -27,6 +27,9 @@
'wizard/export_sdd_view.xml',
'data/mandate_expire_cron.xml',
'data/payment_type_sdd.xml',
'data/report_paperformat.xml',
'reports/sepa_direct_debit_mandate.xml',
'views/report_sepa_direct_debit_mandate.xml',
'security/original_mandate_required_security.xml',
],
'demo': ['demo/sepa_direct_debit_demo.xml'],

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="paperformat_euro_sepa_lowmargin" model="report.paperformat">
<field name="name">European A4 low margin for SEPA</field>
<field name="default" eval="True" />
<field name="format">A4</field>
<field name="page_height">0</field>
<field name="page_width">0</field>
<field name="orientation">Portrait</field>
<field name="margin_top">10</field>
<field name="margin_bottom">10</field>
<field name="margin_left">5</field>
<field name="margin_right">5</field>
<field name="header_line" eval="False" />
<field name="header_spacing">0</field>
<field name="dpi">80</field>
</record>
</data>
</openerp>

View File

@@ -19,6 +19,7 @@
<record id="res_partner_12_mandate" model="account.banking.mandate">
<field name="partner_bank_id" ref="account_banking_payment_export.res_partner_12_iban"/>
<field name="format">sepa</field>
<field name="type">recurrent</field>
<field name="recurrent_sequence_type">first</field>
<field name="signature_date">2014-02-01</field>
@@ -27,6 +28,7 @@
<record id="res_partner_2_mandate" model="account.banking.mandate">
<field name="partner_bank_id" ref="account_banking_payment_export.res_partner_2_iban"/>
<field name="format">sepa</field>
<field name="type">recurrent</field>
<field name="recurrent_sequence_type">first</field>
<field name="signature_date" eval="time.strftime('%Y-%m-01')" />

View File

@@ -1,32 +1,38 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_banking_sepa_direct_debit
# * account_banking_sepa_direct_debit
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-02-16 07:53+0000\n"
"PO-Revision-Date: 2016-02-16 07:53+0000\n"
"Last-Translator: <>\n"
"POT-Creation-Date: 2016-04-05 20:32+0000\n"
"PO-Revision-Date: 2016-04-05 23:01+0100\n"
"Last-Translator: Sergio Teruel <sergio.teruel@tecnativa.com>\n"
"Language-Team: \n"
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.4\n"
#. module: account_banking_sepa_direct_debit
#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.mandate_action
msgid "<p class=\"oe_view_nocontent_create\">\n"
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a new SEPA Direct Debit Mandate.\n"
" </p><p>\n"
" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n"
" A SEPA Direct Debit Mandate is a document signed by your customer "
"that gives you the autorization to do one or several direct debits on his "
"bank account.\n"
" </p>\n"
" "
msgstr "<p class=\"oe_view_nocontent_create\">\n"
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Pulse para crear un nuevo mandato bancario.\n"
" </p><p>\n"
" Un mandato bancario es un documento firmado por su cliente que le da la autorización para hacer una o varias operaciones en su cuenta bancaria.\n"
" Un mandato bancario es un documento firmado por su cliente que le da "
"la autorización para hacer una o varias operaciones en su cuenta bancaria.\n"
" </p>\n"
" "
@@ -36,10 +42,70 @@ msgid "A generic banking mandate"
msgstr "Un mandato bancario genérico"
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:106
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid ""
"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO "
"CREDITOR FOR STORAGE."
msgstr ""
"TODOS LOS CAMPOS HAN DE SER CUMPLIMENTADOS OBLIGATORIAMENTE. UNA VEZ FIRMADA "
"ESTA ORDEN DE DOMICILIACIÓN DEBE SER ENVIADA AL ACREEDOR PARA SU CUSTODIA."
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid ""
"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO "
"CREDITOR FOR STORAGE.\n"
" NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTORS "
"AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n"
" THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED "
"AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK."
msgstr ""
"TODOS LOS CAMPOS HAN DE SER CUMPLIMENTADOS OBLIGATORIAMENTE. UNA VEZ FIRMADA "
"ESTA ORDEN DE DOMICILIACIÓN DEBE SER ENVIADA AL ACREEDOR PARA SU CUSTODIA.LA "
"ENTIDAD DE DEUDOR REQUIERE AUTORIZACIÓN DE ÉSTE PREVIA AL CARGO EN CUENTA DE "
"LOS ADEUDOS DIRECTOS B2B.EL DEUDOR PODRÁ GESTIONAR DICHA AUTORIZACIÓN CON "
"LOS MEDIOS QUE SU ENTIDAD PONGA A SU DISPOSICIÓN."
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Account Number - IBAN:"
msgstr "Número de cuenta - IBAN:"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Address of the Debtor:"
msgstr "Dirección del deudor:"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Address:"
msgstr "Dirección:"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid ""
"As part of your rights, you are entitled to a refund from\n"
" your bank under the terms and conditions of your "
"agreement\n"
" with your bank.\n"
" A refund must be claimed within 8 weeks starting "
"from the date on which your account was debited."
msgstr ""
"Como parte de sus derechos, el deudor está legitimado al reembolso por su "
"entidad en los términos y condiciones del contrato suscrito con la misma. La "
"solicitud de reembolso deberá efectuarse dentro de las ocho semanas que "
"siguen a la fecha de adeudo en cuenta. Puede obtener información adicional "
"sobre sus derechos en su entidad financiera."
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:110
#, python-format
msgid "As you changed the bank account attached to this mandate, the 'Sequence Type' has been set back to 'First'."
msgstr "Puesto que ha cambiado la cuenta bancaria relacionada con este mandato, el 'Tipo de secuencia' se ha vuelto a 'Inicial'."
msgid ""
"As you changed the bank account attached to this mandate, the 'Sequence "
"Type' has been set back to 'First'."
msgstr ""
"Puesto que ha cambiado la cuenta bancaria relacionada con este mandato, el "
"'Tipo de secuencia' se ha vuelto a 'Inicial'."
#. module: account_banking_sepa_direct_debit
#: model:ir.model,name:account_banking_sepa_direct_debit.model_bank_payment_line
@@ -66,6 +132,12 @@ msgstr "A cargo del acreedor"
msgid "Borne by Debtor"
msgstr "A cargo del deudor"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "By signing this mandate form, you authorise (A)"
msgstr ""
"Mediante la firma de esta orden de domiciliación, el deudor autoriza (A) "
#. module: account_banking_sepa_direct_debit
#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
msgid "Cancel"
@@ -81,6 +153,16 @@ msgstr "A cargo del portador"
msgid "Companies"
msgstr "Compañías"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Country of the debtor:"
msgstr "País del deudor:"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Country:"
msgstr "País:"
#. module: account_banking_sepa_direct_debit
#: selection:banking.export.sdd.wizard,state:0
msgid "Create"
@@ -97,13 +179,53 @@ msgid "Created on"
msgstr "Creado en"
#. module: account_banking_sepa_direct_debit
#: help:res.company,sepa_creditor_identifier:0
msgid "Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n"
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Creditor's Name:"
msgstr "Nombre del acreedor:"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Date - Location:"
msgstr "Fecha - Localidad:"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Debtor's Name:"
msgstr "Nombre del deudor:"
#. module: account_banking_sepa_direct_debit
#: help:payment.mode,sepa_creditor_identifier:0
msgid ""
"Enter the Creditor Identifier that has been attributed to your company to "
"make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from "
"company will be used.\n"
"This identifier is composed of :\n"
"- your country ISO code (2 letters)\n"
"- a 2-digits checkum\n"
"- a 3-letters business code\n"
"- a country-specific identifier"
msgstr "Introduzca el identificador de acreedor que se le ha atribuido a su compañía para realizar adeudos directos SEPA. Su banco suele poseer esta información. Este identificador se compone de:\n"
msgstr ""
"Introduzca el identificador de acreedor que se le ha atribuido a su compañía "
"para realizar adeudos directos SEPA. Su banco suele poseer esta información. "
"Este identificador se compone de:\n"
"- el código ISO de 2 letras de su país\n"
"- dos dígitos de comprobación\n"
"- tres letras de código de negocio\n"
"- un identificador específico de país (en España, el NIF)"
#. module: account_banking_sepa_direct_debit
#: help:res.company,sepa_creditor_identifier:0
msgid ""
"Enter the Creditor Identifier that has been attributed to your company to "
"make SEPA Direct Debits. This identifier is composed of :\n"
"- your country ISO code (2 letters)\n"
"- a 2-digits checkum\n"
"- a 3-letters business code\n"
"- a country-specific identifier"
msgstr ""
"Introduzca el identificador de acreedor que se le ha atribuido a su compañía "
"para realizar adeudos directos SEPA. Su banco suele poseer esta información. "
"Este identificador se compone de:\n"
"- el código ISO de 2 letras de su país\n"
"- dos dígitos de comprobación\n"
"- tres letras de código de negocio\n"
@@ -115,7 +237,8 @@ msgid "Enterprise (B2B)"
msgstr "Empresa (B2B)"
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:62
#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:41
#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:31
#, python-format
msgid "Error"
msgstr "Error"
@@ -157,8 +280,23 @@ msgstr "Según el acuerdo de servicio"
#. module: account_banking_sepa_direct_debit
#: help:banking.export.sdd.wizard,charge_bearer:0
msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor."
msgstr "Según el acuerdo de servicio: los costes de la transacción se aplicarán siguiendo las reglas acordadas en el nivel de servicio y/o en el esquema (las remesas SEPA Core deben usar esta opción). Compartidos: los costes de la transacción en la parte del acreedor están a cargo del acreedor, y los costes de la transacción del lado del deudor estarán a cargo del deudor. A cargo del acreedor: todos los costes de la transacción estarán a cargo del acreedor. A cargo del deudor: Todos los costes de la transacción estarán a cargo del deudor."
msgid ""
"Following service level : transaction charges are to be applied following "
"the rules agreed in the service level and/or scheme (SEPA Core messages must "
"use this). Shared : transaction charges on the creditor side are to be borne "
"by the creditor, transaction charges on the debtor side are to be borne by "
"the debtor. Borne by creditor : all transaction charges are to be borne by "
"the creditor. Borne by debtor : all transaction charges are to be borne by "
"the debtor."
msgstr ""
"Según el acuerdo de servicio: los costes de la transacción se aplicarán "
"siguiendo las reglas acordadas en el nivel de servicio y/o en el esquema "
"(las remesas SEPA Core deben usar esta opción). Compartidos: los costes de "
"la transacción en la parte del acreedor están a cargo del acreedor, y los "
"costes de la transacción del lado del deudor estarán a cargo del deudor. A "
"cargo del acreedor: todos los costes de la transacción estarán a cargo del "
"acreedor. A cargo del deudor: Todos los costes de la transacción estarán a "
"cargo del deudor."
#. module: account_banking_sepa_direct_debit
#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
@@ -170,18 +308,48 @@ msgstr "Generar"
msgid "ID"
msgstr "ID"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Identifier:"
msgstr "Identificador:"
#. module: account_banking_sepa_direct_debit
#: help:payment.mode,original_creditor_identifier:0
msgid "If not defined, Original Creditor Identifier from company will be used."
msgstr ""
#. module: account_banking_sepa_direct_debit
#: help:account.banking.mandate,sepa_migrated:0
msgid "If this field is not active, the mandate section of the next direct debit file that include this mandate will contain the 'Original Mandate Identification' and the 'Original Creditor Scheme Identification'. This is required in a few countries (Belgium for instance), but not in all countries. If this is not required in your country, you should keep this field always active."
msgstr "Si este campo no está marcado, la sección 'mandato' del próximo archivo de adeudo directo que lo incluya contendrá el valor de los campos 'Identificación del mandato original' y 'Identificación del esquema original del acreedor'. Esto se requiere en algunos países (Bélgica por ejemplo), pero no en todos ellos. Si no es un requisito en su país, este campo siempre debe estar marcado."
msgid ""
"If this field is not active, the mandate section of the next direct debit "
"file that include this mandate will contain the 'Original Mandate "
"Identification' and the 'Original Creditor Scheme Identification'. This is "
"required in a few countries (Belgium for instance), but not in all "
"countries. If this is not required in your country, you should keep this "
"field always active."
msgstr ""
"Si este campo no está marcado, la sección 'mandato' del próximo archivo de "
"adeudo directo que lo incluya contendrá el valor de los campos "
"'Identificación del mandato original' y 'Identificación del esquema original "
"del acreedor'. Esto se requiere en algunos países (Bélgica por ejemplo), "
"pero no en todos ellos. Si no es un requisito en su país, este campo siempre "
"debe estar marcado."
#. module: account_banking_sepa_direct_debit
#: help:banking.export.sdd.wizard,batch_booking:0
msgid "If true, the bank statement will display only one credit line for all the direct debits of the SEPA file ; if false, the bank statement will display one credit line per direct debit of the SEPA file."
msgstr "Si está marcado, el extracto bancario mostrará sólo una línea del haber para todos los adeudos directos del archivo SEPA; si no está marcado, entonces el extracto bancario mostrará una línea por cada adeudo directo del archivo SEPA."
msgid ""
"If true, the bank statement will display only one credit line for all the "
"direct debits of the SEPA file ; if false, the bank statement will display "
"one credit line per direct debit of the SEPA file."
msgstr ""
"Si está marcado, el extracto bancario mostrará sólo una línea del haber para "
"todos los adeudos directos del archivo SEPA; si no está marcado, entonces el "
"extracto bancario mostrará una línea por cada adeudo directo del archivo "
"SEPA."
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:63
#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:42
#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:32
#, python-format
msgid "Invalid SEPA Creditor Identifier."
msgstr "Identificador de acreedor SEPA no válido."
@@ -197,7 +365,12 @@ msgid "Last Updated on"
msgstr "Última actualización en"
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:105
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Mandate Reference:"
msgstr "Referencia del mandato:"
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:109
#, python-format
msgid "Mandate update"
msgstr "Actualizacion de mandato"
@@ -210,8 +383,12 @@ msgstr "Migrado a SEPA"
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:159
#, python-format
msgid "Missing SEPA Direct Debit mandate on the bank payment line with partner '%s' (reference '%s')."
msgstr "Falta el mandato de adeudo directo SEPA en la linea de pago bancario con la empresa '%s' (referencia '%s')."
msgid ""
"Missing SEPA Direct Debit mandate on the bank payment line with partner "
"'%s' (reference '%s')."
msgstr ""
"Falta el mandato de adeudo directo SEPA en la linea de pago bancario con la "
"empresa '%s' (referencia '%s')."
#. module: account_banking_sepa_direct_debit
#: field:banking.export.sdd.wizard,nb_transactions:0
@@ -221,10 +398,12 @@ msgstr "Nº de transacciones"
#. module: account_banking_sepa_direct_debit
#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
#: selection:account.banking.mandate,type:0
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "One-Off"
msgstr "Único"
#. module: account_banking_sepa_direct_debit
#: field:payment.mode,original_creditor_identifier:0
#: field:res.company,original_creditor_identifier:0
msgid "Original Creditor Identifier"
msgstr "Identificador del acreedor original"
@@ -239,6 +418,11 @@ msgstr "Identificación del mandato original"
msgid "Original Mandate Required (SEPA)"
msgstr "Mandato original requerido (SEPA)"
#. module: account_banking_sepa_direct_debit
#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_mode
msgid "Payment Mode"
msgstr "Modo de pago"
#. module: account_banking_sepa_direct_debit
#: field:banking.export.sdd.wizard,payment_order_ids:0
msgid "Payment Orders"
@@ -247,12 +431,24 @@ msgstr "Órdenes de pago"
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:117
#, python-format
msgid "Payment Type Code '%s' is not supported. The only Payment Type Code supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and 'pain.008.001.04'."
msgstr "El código de tipo de pago '%s' no está soportado. Los únicos códigos de tipo de pago soportados para los adedudos directos SEPA son 'pain.008.001.02', 'pain.008.001.03' y 'pain.008.001.04'."
msgid ""
"Payment Type Code '%s' is not supported. The only Payment Type Code "
"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and "
"'pain.008.001.04'."
msgstr ""
"El código de tipo de pago '%s' no está soportado. Los únicos códigos de tipo "
"de pago soportados para los adedudos directos SEPA son 'pain.008.001.02', "
"'pain.008.001.03' y 'pain.008.001.04'."
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Postal Code - City - Town:"
msgstr "Código postal - Población - Provincia:"
#. module: account_banking_sepa_direct_debit
#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
#: selection:account.banking.mandate,type:0
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Recurrent"
msgstr "Recurrente"
@@ -268,6 +464,7 @@ msgid "SDD Mandates"
msgstr "Mandatos SDD"
#. module: account_banking_sepa_direct_debit
#: field:payment.mode,sepa_creditor_identifier:0
#: field:res.company,sepa_creditor_identifier:0
msgid "SEPA Creditor Identifier"
msgstr "Identificador de acreedor SEPA"
@@ -288,6 +485,23 @@ msgstr "Generación del archivo XML de adeudo directo SEPA"
msgid "Scheme"
msgstr "Esquema"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Sepa Business-To-Business Direct debit Mandate"
msgstr "Orden de domiciliación de adeudo directo SEPA B2B"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Sepa Direct Debit Mandate"
msgstr "Mandatos de adeudos directos SEPA"
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:35
#: model:ir.actions.report.xml,name:account_banking_sepa_direct_debit.report_sepa_direct_debit_mandate
#, python-format
msgid "Sepa Mandate"
msgstr "Mandato SEPA"
#. module: account_banking_sepa_direct_debit
#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search
#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree
@@ -322,40 +536,91 @@ msgstr "Tipo de secuencia establecida a 'Recurrente'"
msgid "Shared"
msgstr "Compartidos"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Signature of the debtor:"
msgstr "Firma del deudor:"
#. module: account_banking_sepa_direct_debit
#: field:banking.export.sdd.wizard,state:0
msgid "State"
msgstr "Estado"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Swift BIC (up to 8 or 11 characteres):"
msgstr "Swift BIC (puede contener 8 u 11 posiciones):"
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:166
#, python-format
msgid "The SEPA Direct Debit mandate with reference '%s' for partner '%s' has expired."
msgstr "El mandato de adeudo directo SEPA con referencia '%s' para la empresa '%s' ha expirado."
msgid ""
"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has "
"expired."
msgstr ""
"El mandato de adeudo directo SEPA con referencia '%s' para la empresa '%s' "
"ha expirado."
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:174
#, python-format
msgid "The mandate with reference '%s' for partner '%s' has type set to 'One-Off' and it has a last debit date set to '%s', so we can't use it."
msgstr "El mandato con referencia '%s' para la empresa '%s' tipo como 'Único', ya tiene como fecha de último cobro '%s', por lo que no se puede usar."
msgid ""
"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' "
"and it has a last debit date set to '%s', so we can't use it."
msgstr ""
"El mandato con referencia '%s' para la empresa '%s' tipo como 'Único', ya "
"tiene como fecha de último cobro '%s', por lo que no se puede usar."
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:71
#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:75
#, python-format
msgid "The recurrent mandate '%s' must have a sequence type."
msgstr "El mandato periódico '%s' debe tener un tipo de secuencia."
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:80
#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:84
#, python-format
msgid "The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must have its recurrent sequence type set to 'First'."
msgstr "El mandato periódico '%s', que no está marcado como 'Migrado a SEPA', debe establecer su tipo de secuencia a 'Inicial'."
msgid ""
"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must "
"have its recurrent sequence type set to 'First'."
msgstr ""
"El mandato periódico '%s', que no está marcado como 'Migrado a SEPA', debe "
"establecer su tipo de secuencia a 'Inicial'."
#. module: account_banking_sepa_direct_debit
#: help:account.banking.mandate,recurrent_sequence_type:0
msgid "This field is only used for Recurrent mandates, not for One-Off mandates."
msgid ""
"This field is only used for Recurrent mandates, not for One-Off mandates."
msgstr "Este campo se utiliza sólo para mandatos periódicos, no para únicos."
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid ""
"This mandate is only intended for business-to-business transactions.\n"
" You are not entitled to a refund from your bank "
"after your account has\n"
" been debited, but you are entitled to request your "
"bank\n"
" not to debit your account up until the day on which "
"the payment is due."
msgstr ""
"Esta orden de domiciliación está prevista para operaciones exclusivamente "
"entre empresas y/o autónomos. El deudor no tiene derecho a que su entidad le "
"reembolse una vez que se haya realizado el cargo en cuenta, pero puede "
"solicitar a su entidad que no efectúe el adeudo en la cuenta hasta la fecha "
"debida. Podrá obtener información detallada del procedimiento en su entidad "
"financiera."
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "To be completed by the creditor"
msgstr "A cumplimentar por el acreedor"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "To be completed by the debtor"
msgstr "A cumplimentar por el deudor"
#. module: account_banking_sepa_direct_debit
#: field:banking.export.sdd.wizard,total_amount:0
msgid "Total Amount"
@@ -372,6 +637,11 @@ msgstr "Tipo"
msgid "Type of Mandate"
msgstr "Tipo de mandato"
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid "Type of payment:"
msgstr "Tipo de pago"
#. module: account_banking_sepa_direct_debit
#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view
msgid "Validate"
@@ -379,12 +649,31 @@ msgstr "Validar"
#. module: account_banking_sepa_direct_debit
#: help:account.banking.mandate,original_mandate_identification:0
msgid "When the field 'Migrated to SEPA' is not active, this field will be used as the Original Mandate Identification in the Direct Debit file."
msgstr "Cuando el campo 'Migrado a SEPA' no está marcado, este campo se usa como identificación del mandato original en el archivo de adeudo directo."
msgid ""
"When the field 'Migrated to SEPA' is not active, this field will be used as "
"the Original Mandate Identification in the Direct Debit file."
msgstr ""
"Cuando el campo 'Migrado a SEPA' no está marcado, este campo se usa como "
"identificación del mandato original en el archivo de adeudo directo."
#. module: account_banking_sepa_direct_debit
#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:90
#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:94
#, python-format
msgid "You must set the 'Original Mandate Identification' on the recurrent mandate '%s' which is not marked as 'Migrated to SEPA'."
msgstr "Debe establecer el campo 'Identificación de mandato original en el mandato periódico '%s', que no está marcado como 'Migrado a SEPA'."
msgid ""
"You must set the 'Original Mandate Identification' on the recurrent mandate "
"'%s' which is not marked as 'Migrated to SEPA'."
msgstr ""
"Debe establecer el campo 'Identificación de mandato original en el mandato "
"periódico '%s', que no está marcado como 'Migrado a SEPA'."
#. module: account_banking_sepa_direct_debit
#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document
msgid ""
"to send instructions to your bank to debit your account and (B) your bank "
"to\n"
" debit your account in accordance with the "
"instructions from"
msgstr ""
"a enviar instrucciones a la entidad del deudor para adeudar su cuenta y (B) "
"a la entidad para efectuar los adeudos en su cuenta siguiendo las "
"instrucciones del acreedor "

View File

@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
# © 2016 Sergio Teruel <sergio.teruel@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
def migrate(cr, version):
if not version:
return
cr.execute('''
UPDATE account_banking_mandate SET format='sepa'
''')
return

View File

@@ -31,9 +31,13 @@ class AccountBankingMandate(models.Model):
}
}
format = fields.Selection(
selection_add=[('sepa', _('Sepa Mandate'))],
default='sepa',
)
type = fields.Selection([('recurrent', 'Recurrent'),
('oneoff', 'One-Off')],
string='Type of Mandate', required=True,
string='Type of Mandate',
track_visibility='always')
recurrent_sequence_type = fields.Selection(
[('first', 'First'),
@@ -59,57 +63,63 @@ class AccountBankingMandate(models.Model):
"Direct Debit file.")
scheme = fields.Selection([('CORE', 'Basic (CORE)'),
('B2B', 'Enterprise (B2B)')],
string='Scheme', required=True, default="CORE")
string='Scheme', default="CORE")
unique_mandate_reference = fields.Char(size=35) # cf ISO 20022
@api.one
@api.multi
@api.constrains('type', 'recurrent_sequence_type')
def _check_recurring_type(self):
if (self.type == 'recurrent' and
not self.recurrent_sequence_type):
raise exceptions.Warning(
_("The recurrent mandate '%s' must have a sequence type.")
% self.unique_mandate_reference)
@api.one
@api.constrains('type', 'recurrent_sequence_type', 'sepa_migrated')
def _check_migrated_to_sepa(self):
if (self.type == 'recurrent' and not self.sepa_migrated and
self.recurrent_sequence_type != 'first'):
raise exceptions.Warning(
_("The recurrent mandate '%s' which is not marked as "
"'Migrated to SEPA' must have its recurrent sequence type "
"set to 'First'.") % self.unique_mandate_reference)
@api.one
@api.constrains('type', 'original_mandate_identification', 'sepa_migrated')
def _check_original_mandate_identification(self):
if (self.type == 'recurrent' and not self.sepa_migrated and
not self.original_mandate_identification):
raise exceptions.Warning(
_("You must set the 'Original Mandate Identification' on the "
"recurrent mandate '%s' which is not marked as 'Migrated to "
"SEPA'.") % self.unique_mandate_reference)
@api.one
@api.onchange('partner_bank_id')
def mandate_partner_bank_change(self):
super(AccountBankingMandate, self).mandate_partner_bank_change()
res = {}
if (self.state == 'valid' and
self.partner_bank_id and
self.type == 'recurrent' and
self.recurrent_sequence_type != 'first'):
self.recurrent_sequence_type = 'first'
res['warning'] = {
'title': _('Mandate update'),
'message': _("As you changed the bank account attached to "
"this mandate, the 'Sequence Type' has been set "
"back to 'First'."),
}
return res
for mandate in self:
if (mandate.type == 'recurrent' and
not mandate.recurrent_sequence_type):
raise exceptions.Warning(
_("The recurrent mandate '%s' must have a sequence type.")
% mandate.unique_mandate_reference)
@api.multi
@api.constrains('type', 'recurrent_sequence_type', 'sepa_migrated')
def _check_migrated_to_sepa(self):
for mandate in self:
if (mandate.type == 'recurrent' and not mandate.sepa_migrated and
mandate.recurrent_sequence_type != 'first'):
raise exceptions.Warning(
_("The recurrent mandate '%s' which is not marked as "
"'Migrated to SEPA' must have its recurrent sequence "
"type set to 'First'.")
% mandate.unique_mandate_reference)
@api.multi
@api.constrains('type', 'original_mandate_identification', 'sepa_migrated')
def _check_original_mandate_identification(self):
for mandate in self:
if (mandate.type == 'recurrent' and not mandate.sepa_migrated and
not mandate.original_mandate_identification):
raise exceptions.Warning(
_("You must set the 'Original Mandate Identification' on "
"the recurrent mandate '%s' which is not marked as "
"'Migrated to SEPA'.")
% mandate.unique_mandate_reference)
@api.multi
@api.onchange('partner_bank_id')
def mandate_partner_bank_change(self):
for mandate in self:
super(AccountBankingMandate, self).mandate_partner_bank_change()
res = {}
if (mandate.state == 'valid' and
mandate.partner_bank_id and
mandate.type == 'recurrent' and
mandate.recurrent_sequence_type != 'first'):
mandate.recurrent_sequence_type = 'first'
res['warning'] = {
'title': _('Mandate update'),
'message': _("As you changed the bank account attached "
"to this mandate, the 'Sequence Type' has "
"been set back to 'First'."),
}
return res
@api.model
def _sdd_mandate_set_state_to_expired(self):
logger.info('Searching for SDD Mandates that must be set to Expired')
expire_limit_date = datetime.today() + \

View File

@@ -31,12 +31,13 @@ class PaymentMode(models.Model):
res = 'sepa_direct_debit'
return res
@api.one
@api.multi
@api.constrains('sepa_creditor_identifier')
def _check_sepa_creditor_identifier(self):
if self.sepa_creditor_identifier:
if not is_sepa_creditor_identifier_valid(
self.sepa_creditor_identifier):
raise exceptions.Warning(
_('Error'),
_("Invalid SEPA Creditor Identifier."))
for payment_mode in self:
if payment_mode.sepa_creditor_identifier:
if not is_sepa_creditor_identifier_valid(
payment_mode.sepa_creditor_identifier):
raise exceptions.Warning(
_('Error'),
_("Invalid SEPA Creditor Identifier."))

View File

@@ -21,12 +21,13 @@ class ResCompany(models.Model):
original_creditor_identifier = fields.Char(
string='Original Creditor Identifier', size=70)
@api.one
@api.multi
@api.constrains('sepa_creditor_identifier')
def _check_sepa_creditor_identifier(self):
if self.sepa_creditor_identifier:
if not is_sepa_creditor_identifier_valid(
self.sepa_creditor_identifier):
raise exceptions.Warning(
_('Error'),
_("Invalid SEPA Creditor Identifier."))
for company in self:
if company.sepa_creditor_identifier:
if not is_sepa_creditor_identifier_valid(
company.sepa_creditor_identifier):
raise exceptions.Warning(
_('Error'),
_("Invalid SEPA Creditor Identifier."))

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- QWeb Report -->
<report
id="report_sepa_direct_debit_mandate"
model="account.banking.mandate"
string="Sepa Mandate"
report_type="qweb-pdf"
name="account_banking_sepa_direct_debit.sepa_direct_debit_mandate"
file="account_banking_sepa_direct_debit.sepa_direct_debit_mandate"
/>
<record id="report_sepa_direct_debit_mandate" model="ir.actions.report.xml">
<field name="paperformat_id"
ref="account_banking_sepa_direct_debit.paperformat_euro_sepa_lowmargin"/>
</record>
</data>
</openerp>

View File

@@ -17,9 +17,13 @@
<field name="inherit_id" ref="account_banking_mandate.view_mandate_form"/>
<field name="arch" type="xml">
<field name="partner_id" position="after">
<field name="type"/>
<field name="recurrent_sequence_type" attrs="{'invisible': [('type', '=', 'oneoff')], 'required': [('type', '=', 'recurrent')]}"/>
<field name="scheme"/>
<field name="type" attrs="{'invisible': [('format', '!=', 'sepa')],
'required': [('format', '=', 'sepa')]}"/>
<field name="recurrent_sequence_type"
attrs="{'invisible': ['|', ('type', '=', 'oneoff'), ('format', '!=', 'sepa')],
'required': [('type', '=', 'recurrent')]}"/>
<field name="scheme" attrs="{'invisible': [('format', '!=', 'sepa')],
'required': [('format', '=', 'sepa')]}"/>
</field>
<field name="last_debit_date" position="after">
<field name="sepa_migrated" groups="account_banking_sepa_direct_debit.group_original_mandate_required"/>
@@ -124,6 +128,5 @@
<field name="description">Sequence Type set to Final</field>
</record>
</data>
</openerp>

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="sepa_direct_debit_mandate_document">
<div class="page">
<style type="text/css">
.under-line{
border-bottom:1px solid;
}
input{
vertical-align: baseline;
}
.panel-default{
border:2px solid;
}
p{
font-size: 8px;
}
</style>
<div class="row mt0">
<div class="col-xs-3">
<img t-if="o.company_id.logo" t-att-src="'data:image/png;base64,%s' % o.company_id.logo" style="max-height: 45px;"/>
</div>
<div class="col-xs-12 text-center">
<h4 t-if="o.scheme != 'B2B'"><strong>Sepa Direct Debit Mandate</strong></h4>
<h4 t-if="o.scheme == 'B2B'"><strong>Sepa Business-To-Business Direct debit Mandate</strong></h4>
</div>
</div>
<div class="row mt8">
<div class="col-xs-12">
<div class="panel panel-default">
<span class="col-xs-12 text-right" style="font-size:8px;">To be completed by the creditor</span>
<div class="panel-body mb8">
<div class="col-xs-12"><em>Mandate Reference:</em></div><div class="col-xs-10 col-xs-offset-2 under-line mt4"><span t-field="o.unique_mandate_reference"/></div>
<div class="col-xs-12"><em>Identifier:</em></div><div class="col-xs-10 col-xs-offset-2 under-line mt4"><span t-field="o.company_id.sepa_creditor_identifier"/></div>
<div class="col-xs-12"><em>Creditor's Name:</em></div><div class="col-xs-10 col-xs-offset-2 under-line mt4"><span t-field="o.company_id.partner_id.name"/></div>
<div class="col-xs-12"><em>Address:</em></div><div class="col-xs-10 col-xs-offset-2 under-line mt4"><span t-field="o.company_id.partner_id.street"/></div>
<div class="col-xs-12"><em>Postal Code - City - Town:</em></div>
<div class="col-xs-10 col-xs-offset-2 under-line mt8">
<span t-field="o.company_id.partner_id.zip"/> -
<span t-field="o.company_id.partner_id.city"/> -
<span t-field="o.company_id.partner_id.state_id"/>
</div>
<div class="col-xs-12"><em>Country:</em></div><div class="col-xs-10 col-xs-offset-2 under-line mt4"><span t-field="o.company_id.partner_id.country_id"/></div>
</div>
</div>
</div>
</div>
<div class="row mt0">
<div class="col-xs-12">
<p>By signing this mandate form, you authorise (A) <strong t-if="o.scheme == 'B2B'"><span t-field="o.company_id.name"/></strong>
to send instructions to your bank to debit your account and (B) your bank to
debit your account in accordance with the instructions from <strong t-if="o.scheme == 'B2B'"><span t-field="o.company_id.name"/></strong>.
</p>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<p t-if="o.scheme == 'B2B'">
This mandate is only intended for business-to-business transactions.
You are not entitled to a refund from your bank after your account has
been debited, but you are entitled to request your bank
not to debit your account up until the day on which the payment is due.
</p>
<p t-if="o.scheme != 'B2B'">
As part of your rights, you are entitled to a refund from
your bank under the terms and conditions of your agreement
with your bank.
A refund must be claimed within 8 weeks starting from the date on which your account was debited.
</p>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="panel panel-default">
<span class="col-xs-12 text-right" style="font-size:8px;">To be completed by the debtor</span>
<div class="panel-body">
<div class="col-xs-12"><em>Debtor's Name:</em></div><div class="col-xs-10 col-xs-offset-2 under-line mt4"><span t-field="o.partner_id"/></div>
<div class="col-xs-12"><em>Address of the Debtor:</em></div><div class="col-xs-10 col-xs-offset-2 under-line mt4"><span t-field="o.partner_id.street"/></div>
<div class="col-xs-12"><em>Postal Code - City - Town:</em></div>
<div class="col-xs-10 col-xs-offset-2 under-line mt4">
<span t-field="o.partner_id.zip"/> -
<span t-field="o.partner_id.city"/> -
<span t-field="o.partner_id.state_id"/>
</div>
<div class="col-xs-12"><em>Country of the debtor:</em></div><div class="col-xs-10 col-xs-offset-2 under-line mt4"><span t-field="o.partner_id.country_id"/></div>
<div class="col-xs-12"><em>Swift BIC (up to 8 or 11 characteres):</em></div><div class="col-xs-10 col-xs-offset-2 under-line mt4"><span t-field="o.partner_bank_id.bank_bic"/></div>
<div class="col-xs-12"><em>Account Number - IBAN:</em></div><div class="col-xs-10 col-xs-offset-2 under-line mt4"><span t-field="o.partner_bank_id.acc_number"/></div>
<div class="col-xs-12"><em>Type of payment:</em></div>
<div class="col-xs-10 col-xs-offset-2 mt4">
<input type="checkbox" t-att-checked="o.type=='recurrent' or None"> Recurrent</input>
<input type="checkbox" t-att-checked="o.type=='oneoff' or None"> One-Off</input>
</div>
<div class="col-xs-12"><em>Date - Location:</em></div>
<div class="col-xs-10 col-xs-offset-2 under-line mt16"/>
<div class="col-xs-12"><em>Signature of the debtor:</em></div>
<div class="col-xs-10 col-xs-offset-2 under-line mt16"/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 text-center">
<p t-if="o.scheme != 'B2B'">ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.</p>
<p t-if="o.scheme == 'B2B'">ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.
NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTORS AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.
THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK.</p>
</div>
</div>
</div>
</template>
<template id="sepa_direct_debit_mandate">
<t t-call="report.html_container">
<t t-foreach="doc_ids" t-as="doc_id">
<t t-raw="translate_doc(doc_id, doc_model, 'partner_id.lang', 'account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document')"/>
</t>
</t>
</template>
</data>
</openerp>