diff --git a/account_banking_mandate/README.rst b/account_banking_mandate/README.rst index 48d7f74f7..0fb4974ec 100644 --- a/account_banking_mandate/README.rst +++ b/account_banking_mandate/README.rst @@ -1,6 +1,7 @@ .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg :alt: License: AGPL-3 +======================= Account Banking Mandate ======================= @@ -31,22 +32,22 @@ Usage To use this module, see menu "Accounting > payment > SEPA direct debit mandates" -For further information, please visit: - - * https://www.odoo.com/forum/help-1 +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/173/9.0 Known issues / Roadmap ====================== * no known issues - + Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. Credits ======= @@ -54,11 +55,11 @@ Credits Contributors ------------ -* Alexis de Lattre +* Alexis de Lattre * Pedro M. Baeza * Alexandre Fayolle -* Stéphane Bidoul -* Sergio Teruel (Incaser) +* Stéphane Bidoul +* Sergio Teruel (Incaser) Maintainer ---------- diff --git a/account_banking_mandate/__init__.py b/account_banking_mandate/__init__.py index 1feaa8f2d..cde864bae 100644 --- a/account_banking_mandate/__init__.py +++ b/account_banking_mandate/__init__.py @@ -1,22 +1,3 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# Mandate module for openERP -# Copyright (C) 2014 Compassion CH (http://www.compassion.ch) -# @author: Cyril Sester -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## -from . import models +# -*- coding: utf-8 -*- + +from . import models diff --git a/account_banking_mandate/__openerp__.py b/account_banking_mandate/__openerp__.py index f07a86d4f..864781e95 100644 --- a/account_banking_mandate/__openerp__.py +++ b/account_banking_mandate/__openerp__.py @@ -1,29 +1,13 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# Mandate module for openERP -# Copyright (C) 2014 Compassion CH (http://www.compassion.ch) -# @author: Cyril Sester , -# Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- +# © 2014 Compassion CH - Cyril Sester +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2015-2016 Akretion - Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + { 'name': 'Account Banking Mandate', 'summary': 'Banking mandates', - 'version': '8.0.0.1.0', + 'version': '9.0.1.0.0', 'license': 'AGPL-3', 'author': "Compassion CH, " "Serv. Tecnol. Avanzados - Pedro M. Baeza, " @@ -32,21 +16,21 @@ 'website': 'https://github.com/OCA/bank-payment', 'category': 'Banking addons', 'depends': [ - 'account_payment', + 'account_payment_order', ], 'data': [ 'views/account_banking_mandate_view.xml', + 'views/account_payment_method.xml', 'views/account_invoice_view.xml', - 'views/account_payment_view.xml', + 'views/account_payment_line.xml', 'views/res_partner_bank_view.xml', + 'views/res_partner.xml', + 'views/bank_payment_line_view.xml', + 'views/account_move_line.xml', 'data/mandate_reference_sequence.xml', - 'data/report_paperformat.xml', 'security/mandate_security.xml', 'security/ir.model.access.csv', - 'reports/account_banking_mandate_view.xml', - 'reports/account_banking_mandate.xml', ], - 'demo': [], 'test': ['test/banking_mandate.yml'], - 'installable': False, + 'installable': True, } diff --git a/account_banking_mandate/data/mandate_reference_sequence.xml b/account_banking_mandate/data/mandate_reference_sequence.xml index 9a51db944..e3df03051 100644 --- a/account_banking_mandate/data/mandate_reference_sequence.xml +++ b/account_banking_mandate/data/mandate_reference_sequence.xml @@ -3,11 +3,6 @@ - - DD Mandate Reference - account.banking.mandate - - DD Mandate Reference account.banking.mandate diff --git a/account_banking_mandate/i18n/en.po b/account_banking_mandate/i18n/en.po new file mode 100644 index 000000000..af7722aeb --- /dev/null +++ b/account_banking_mandate/i18n/en.po @@ -0,0 +1,411 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_mandate +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-07 16:04+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: English (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/en/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: en\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_banking_mandate +#: model:ir.actions.act_window,help:account_banking_mandate.mandate_action +msgid "" +"

\n" +" Click to create a new Banking Mandate.\n" +"

\n" +" A Banking Mandate is a document signed by your customer that gives you the autorization to do one or several operations on his bank account.\n" +"

\n" +" " +msgstr "

\n Click to create a new Banking Mandate.\n

\n A Banking Mandate is a document signed by your customer that gives you the autorization to do one or several operations on his bank account.\n

\n " + +#. module: account_banking_mandate +#: sql_constraint:account.banking.mandate:0 +msgid "A Mandate with the same reference already exists for this company !" +msgstr "A Mandate with the same reference already exists for this company !" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_account_banking_mandate +msgid "A generic banking mandate" +msgstr "A generic banking mandate" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "Back to Draft" +msgstr "Back to Draft" + +#. module: account_banking_mandate +#: field:account.banking.mandate,partner_bank_id:0 +msgid "Bank Account" +msgstr "Bank Account" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_res_partner_bank +msgid "Bank Accounts" +msgstr "Bank Accounts" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "Bank Payment Lines" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Banking Mandate" +msgstr "Banking Mandate" + +#. module: account_banking_mandate +#: model:mail.message.subtype,description:account_banking_mandate.mandate_cancel +msgid "Banking Mandate Cancelled" +msgstr "Banking Mandate Cancelled" + +#. module: account_banking_mandate +#: model:mail.message.subtype,description:account_banking_mandate.mandate_valid +msgid "Banking Mandate Validated" +msgstr "Banking Mandate Validated" + +#. module: account_banking_mandate +#: model:mail.message.subtype,description:account_banking_mandate.mandate_expired +msgid "Banking Mandate has Expired" +msgstr "Banking Mandate has Expired" + +#. module: account_banking_mandate +#: model:ir.actions.act_window,name:account_banking_mandate.mandate_action +msgid "Banking Mandates" +msgstr "Banking Mandates" + +#. module: account_banking_mandate +#: help:res.partner.bank,mandate_ids:0 +msgid "" +"Banking mandates represents an authorization that the bank account owner " +"gives to a company for a specific operation" +msgstr "Banking mandates represents an authorization that the bank account owner gives to a company for a specific operation" + +#. module: account_banking_mandate +#: selection:account.banking.mandate,format:0 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:39 +#, python-format +msgid "Basic Mandate" +msgstr "Basic Mandate" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "Cancel" +msgstr "Cancel" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Cancelled" +msgstr "Cancelled" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:104 +#, python-format +msgid "" +"Cannot validate the mandate '%s' because it is not attached to a bank " +"account." +msgstr "Cannot validate the mandate '%s' because it is not attached to a bank account." + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:100 +#, python-format +msgid "Cannot validate the mandate '%s' without a date of signature." +msgstr "Cannot validate the mandate '%s' without a date of signature." + +#. module: account_banking_mandate +#: field:account.banking.mandate,company_id:0 +msgid "Company" +msgstr "Company" + +#. module: account_banking_mandate +#: field:account.banking.mandate,create_uid:0 +msgid "Created by" +msgstr "Created by" + +#. module: account_banking_mandate +#: field:account.banking.mandate,create_date:0 +msgid "Created on" +msgstr "Created on" + +#. module: account_banking_mandate +#: view:res.partner:account_banking_mandate.mandate_partner_form +#: view:res.partner.bank:account_banking_mandate.mandate_partner_bank_tree +msgid "DD Mandates" +msgstr "DD Mandates" + +#. module: account_banking_mandate +#: field:account.banking.mandate,signature_date:0 +msgid "Date of Signature of the Mandate" +msgstr "Date of Signature of the Mandate" + +#. module: account_banking_mandate +#: field:account.banking.mandate,last_debit_date:0 +msgid "Date of the Last Debit" +msgstr "Date of the Last Debit" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_last_post:0 +msgid "Date of the last message posted on the record." +msgstr "Date of the last message posted on the record." + +#. module: account_banking_mandate +#: field:account.invoice,mandate_id:0 field:payment.line,mandate_id:0 +msgid "Direct Debit Mandate" +msgstr "Direct Debit Mandate" + +#. module: account_banking_mandate +#: view:res.partner.bank:account_banking_mandate.mandate_partner_bank_form +#: field:res.partner.bank,mandate_ids:0 +msgid "Direct Debit Mandates" +msgstr "Direct Debit Mandates" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Draft" +msgstr "Draft" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Expired" +msgstr "Expired" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_follower_ids:0 +msgid "Followers" +msgstr "Followers" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Format" +msgstr "Format" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Group By" +msgstr "Group By" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "Holds the Chatter summary (number of messages, ...). This summary is directly in html format in order to be inserted in kanban views." + +#. module: account_banking_mandate +#: field:account.banking.mandate,id:0 +msgid "ID" +msgstr "ID" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "If checked new messages require your attention." + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_account_invoice +msgid "Invoice" +msgstr "Invoice" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_is_follower:0 +msgid "Is a Follower" +msgstr "Is a Follower" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_last_post:0 +msgid "Last Message Date" +msgstr "Last Message Date" + +#. module: account_banking_mandate +#: field:account.banking.mandate,write_uid:0 +msgid "Last Updated by" +msgstr "Last Updated by" + +#. module: account_banking_mandate +#: field:account.banking.mandate,write_date:0 +msgid "Last Updated on" +msgstr "Last Updated on" + +#. module: account_banking_mandate +#: view:bank.payment.line:account_banking_mandate.bank_payment_line_tree +#: view:payment.order:account_banking_mandate.view_mandate_payment_order_form +msgid "Mandate" +msgstr "Mandate" + +#. module: account_banking_mandate +#: model:mail.message.subtype,name:account_banking_mandate.mandate_cancel +msgid "Mandate Cancelled" +msgstr "Mandate Cancelled" + +#. module: account_banking_mandate +#: model:mail.message.subtype,name:account_banking_mandate.mandate_expired +msgid "Mandate Expired" +msgstr "Mandate Expired" + +#. module: account_banking_mandate +#: field:account.banking.mandate,format:0 +msgid "Mandate Format" +msgstr "Mandate Format" + +#. module: account_banking_mandate +#: model:mail.message.subtype,name:account_banking_mandate.mandate_valid +msgid "Mandate Validated" +msgstr "Mandate Validated" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:147 +#, python-format +msgid "Mandate should be in cancel state" +msgstr "Mandate should be in cancel state" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:135 +#, python-format +msgid "Mandate should be in draft or valid state" +msgstr "Mandate should be in draft or valid state" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:126 +#, python-format +msgid "Mandate should be in draft state" +msgstr "Mandate should be in draft state" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_ids:0 +msgid "Messages" +msgstr "Messages" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_ids:0 +msgid "Messages and communication history" +msgstr "Messages and communication history" + +#. module: account_banking_mandate +#: help:account.banking.mandate,state:0 +msgid "" +"Only valid mandates can be used in a payment line. A cancelled mandate is a " +"mandate that has been cancelled by the customer." +msgstr "Only valid mandates can be used in a payment line. A cancelled mandate is a mandate that has been cancelled by the customer." + +#. module: account_banking_mandate +#: field:account.banking.mandate,partner_id:0 +msgid "Partner" +msgstr "Partner" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_payment_line +msgid "Payment Line" +msgstr "Payment Line" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Reference" +msgstr "Reference" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Reference or Partner" +msgstr "Reference or Partner" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +#: field:account.banking.mandate,payment_line_ids:0 +msgid "Related Payment Lines" +msgstr "Related Payment Lines" + +#. module: account_banking_mandate +#: model:ir.ui.menu,name:account_banking_mandate.mandate_menu +msgid "SEPA Direct Debit Mandates" +msgstr "SEPA Direct Debit Mandates" + +#. module: account_banking_mandate +#: field:account.banking.mandate,scan:0 +msgid "Scan of the Mandate" +msgstr "Scan of the Mandate" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Search Banking Mandates" +msgstr "Search Banking Mandates" + +#. module: account_banking_mandate +#: selection:account.banking.mandate,format:0 +msgid "Sepa Mandate" +msgstr "Sepa Mandate" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Signature Date" +msgstr "Signature Date" + +#. module: account_banking_mandate +#: field:account.banking.mandate,state:0 +msgid "Status" +msgstr "Status" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_summary:0 +msgid "Summary" +msgstr "Summary" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:83 +#, python-format +msgid "The date of signature of mandate '%s' is in the future !" +msgstr "The date of signature of mandate '%s' is in the future !" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:89 +#, python-format +msgid "" +"The mandate '%s' can't have a date of last debit before the date of " +"signature." +msgstr "The mandate '%s' can't have a date of last debit before the date of signature." + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/payment_line.py:51 +#, python-format +msgid "" +"The payment line with reference '%s' has the bank account '%s' which is not " +"attached to the mandate '%s' (this mandate is attached to the bank account " +"'%s')." +msgstr "The payment line with reference '%s' has the bank account '%s' which is not attached to the mandate '%s' (this mandate is attached to the bank account '%s')." + +#. module: account_banking_mandate +#: field:account.banking.mandate,unique_mandate_reference:0 +msgid "Unique Mandate Reference" +msgstr "Unique Mandate Reference" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_unread:0 +msgid "Unread Messages" +msgstr "Unread Messages" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Valid" +msgstr "Valid" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "Validate" +msgstr "Validate" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "" +"You should set a mandate back to draft only if you cancelled it by mistake. " +"Do you want to continue?" +msgstr "You should set a mandate back to draft only if you cancelled it by mistake. Do you want to continue?" diff --git a/account_banking_mandate/i18n/es.po b/account_banking_mandate/i18n/es.po index 329ee055d..518a0748e 100644 --- a/account_banking_mandate/i18n/es.po +++ b/account_banking_mandate/i18n/es.po @@ -1,40 +1,32 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * account_banking_mandate -# +# * account_banking_mandate +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" +"Project-Id-Version: bank-payment (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-06-18 08:15+0000\n" -"PO-Revision-Date: 2015-06-18 11:36+0100\n" -"Last-Translator: Sergio Teruel \n" -"Language-Team: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-07 16:04+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Spanish (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.4\n" +"Content-Transfer-Encoding: \n" "Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_banking_mandate #: model:ir.actions.act_window,help:account_banking_mandate.mandate_action -#, fuzzy msgid "" "

\n" " Click to create a new Banking Mandate.\n" "

\n" -" A Banking Mandate is a document signed by your customer that gives " -"you the autorization to do one or several operations on his bank account.\n" -"

\n" -" " -msgstr "" -"

\n" -" Click to create a new Banking Mandate.\n" -"

\n" -" A Banking Mandate is a document signed by your customer that gives " -"you the autorization to do one or several operations on his bank account.\n" +" A Banking Mandate is a document signed by your customer that gives you the autorization to do one or several operations on his bank account.\n" "

\n" " " +msgstr "

\n Pulse para crear un nuevo mandato bancario.\n

\n Un mandato bancario es un documento firmado por su cliente que le da la autorización para hacer una o varias operaciones en su cuenta bancaria.\n

\n " #. module: account_banking_mandate #: sql_constraint:account.banking.mandate:0 @@ -46,24 +38,6 @@ msgstr "Ya existe un mandato con la misma referencia para esta compañía" msgid "A generic banking mandate" msgstr "Un mandato bancario genérico" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"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.\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." - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "BIC:" -msgstr "BIC:" - #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_form msgid "Back to Draft" @@ -77,12 +51,12 @@ msgstr "Cuenta bancaria" #. module: account_banking_mandate #: model:ir.model,name:account_banking_mandate.model_res_partner_bank msgid "Bank Accounts" -msgstr "Cuentas bancarias" +msgstr "Cuentas de banco" #. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Bank name:" -msgstr "Banco:" +#: model:ir.model,name:account_banking_mandate.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "Líneas de pago bancario" #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_form @@ -115,15 +89,14 @@ msgstr "Mandatos bancarios" msgid "" "Banking mandates represents an authorization that the bank account owner " "gives to a company for a specific operation" -msgstr "" -"Los mandatos bancarios representan una autorización que el propietario de la " -"cuenta bancaria da a la compañía para un operación específica" +msgstr "Los mandatos bancarios representan una autorización que el propietario de la cuenta bancaria da a la compañía para un operación específica" #. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_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 (A) " +#: selection:account.banking.mandate,format:0 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:39 +#, python-format +msgid "Basic Mandate" +msgstr "Mandato básico" #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_form @@ -136,17 +109,15 @@ msgid "Cancelled" msgstr "Cancelado" #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/account_banking_mandate.py:110 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:104 #, python-format msgid "" "Cannot validate the mandate '%s' because it is not attached to a bank " "account." -msgstr "" -"No se puede validar el mandato '%s' porque no tiene ninguna cuenta bancaria " -"asociada." +msgstr "No se puede validar el mandato '%s' porque no tiene ninguna cuenta bancaria asociada." #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/account_banking_mandate.py:106 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:100 #, python-format msgid "Cannot validate the mandate '%s' without a date of signature." msgstr "No se puede validar el mandato '%s' sin una fecha de firma." @@ -166,11 +137,6 @@ msgstr "Creado por" msgid "Created on" msgstr "Creado en" -#. module: account_banking_mandate -#: view:payment.order:account_banking_mandate.view_mandate_payment_order_form -msgid "DD Mandate" -msgstr "Mandato bancario" - #. module: account_banking_mandate #: view:res.partner:account_banking_mandate.mandate_partner_form #: view:res.partner.bank:account_banking_mandate.mandate_partner_bank_tree @@ -192,25 +158,6 @@ msgstr "Fecha del último cobro" msgid "Date of the last message posted on the record." msgstr "Fecha del último mensaje publicado en el registro." -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Debtor identification code:" -msgstr "Código del deudor:" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Description of contract." -msgstr "Descripción del contrato." - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"Details regarding the underlying relationship between the Creditor and the " -"Debtor - for information purposes only." -msgstr "" -"Información sobre la relación subyacente entre el acreedor y el deudor - a " -"título meramente informativo." - #. module: account_banking_mandate #: field:account.invoice,mandate_id:0 field:payment.line,mandate_id:0 msgid "Direct Debit Mandate" @@ -238,13 +185,10 @@ msgid "Followers" msgstr "Seguidores" #. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"For business users: write any code number here which you wish to have quoted " -"by your bank." -msgstr "" -"Para usuarios empresas: Indique en este espacio cualquier número de código " -"con el que desea que su entidad financiera le identifique." +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Format" +msgstr "Formato" #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_search @@ -256,52 +200,18 @@ msgstr "Agrupar por" msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." -msgstr "" -"Contiene el resumen del chatter (nº de mensajes, ...). Este resumen está " -"directamente en formato html para ser insertado en vistas kanban." - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "IBAN:" -msgstr "IBAN:" +msgstr "Contiene el resumen del chatter (nº de mensajes, ...). Este resumen está directamente en formato html para ser insertado en vistas kanban." #. module: account_banking_mandate #: field:account.banking.mandate,id:0 msgid "ID" msgstr "ID" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Identification code of the Creditor Reference Party." -msgstr "Código de identificación de la parte de referencia del acreedor" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Identification code of the Debtor Reference Party." -msgstr "Código de identificación de la parte de referencia del deudor" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Identification number of the underlying contract." -msgstr "Número de identificación del contrato subyacente" - #. module: account_banking_mandate #: help:account.banking.mandate,message_unread:0 msgid "If checked new messages require your attention." msgstr "Si está marcado, hay nuevos mensajes que requieren su atención" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "If you are paying on your own behalf, leave blank." -msgstr "" -"Si realiza el pago en su propio nombre e interés, deje este espacio en " -"blanco." - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "In respect of the contract:" -msgstr "Respecto al contrato:" - #. module: account_banking_mandate #: model:ir.model,name:account_banking_mandate.model_account_invoice msgid "Invoice" @@ -328,15 +238,8 @@ msgid "Last Updated on" msgstr "Última actualización en" #. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"Location and sign: _______________________, at ______ from ____________ from" -msgstr "" -"Lugar y fecha de la firma: _______________________, a ______ de ____________ " -"de" - -#. module: account_banking_mandate -#: model:ir.actions.report.xml,name:account_banking_mandate.report_account_banking_mandate +#: view:bank.payment.line:account_banking_mandate.bank_payment_line_tree +#: view:payment.order:account_banking_mandate.view_mandate_payment_order_form msgid "Mandate" msgstr "Mandato SEPA" @@ -350,25 +253,30 @@ msgstr "Mandato cancelado" msgid "Mandate Expired" msgstr "Mandato expirado" +#. module: account_banking_mandate +#: field:account.banking.mandate,format:0 +msgid "Mandate Format" +msgstr "Formato del mandato" + #. module: account_banking_mandate #: model:mail.message.subtype,name:account_banking_mandate.mandate_valid msgid "Mandate Validated" msgstr "Mandato validado" #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/account_banking_mandate.py:152 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:147 #, python-format msgid "Mandate should be in cancel state" msgstr "El mandato debe estar en estado cancelado" #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/account_banking_mandate.py:140 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:135 #, python-format msgid "Mandate should be in draft or valid state" msgstr "El mandato debe estar en estado borrador o validado" #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/account_banking_mandate.py:131 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:126 #, python-format msgid "Mandate should be in draft state" msgstr "El mandato debe estar en estado borrador" @@ -383,63 +291,23 @@ msgstr "Mensajes" msgid "Messages and communication history" msgstr "Mensajes e historial de comunicación" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"Name of the Creditor Reference Party: Creditor must complete this section if " -"collecting payment on behalf of another party." -msgstr "" -"Nombre de la parte de referencia del acreedor: el acreedor debe rellenar " -"esta sección si realiza el cobro a favor de un tercero." - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"Name of the Debtor Reference Party: If you are making a payment in respect " -"of an arrangement between" -msgstr "" -"Nombre de la parte de referencia del deudor: Si realiza un pago como " -"consecuencia de un acuerdo entre" - #. module: account_banking_mandate #: help:account.banking.mandate,state:0 msgid "" "Only valid mandates can be used in a payment line. A cancelled mandate is a " "mandate that has been cancelled by the customer." -msgstr "" -"Sólo se pueden usar mandatos validados en una línea de pago. Un mandato " -"cancelado en un mandato que ha sido invalidado por el cliente." +msgstr "Sólo se pueden usar mandatos validados en una línea de pago. Un mandato cancelado en un mandato que ha sido invalidado por el cliente." #. module: account_banking_mandate #: field:account.banking.mandate,partner_id:0 msgid "Partner" msgstr "Empresa" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Party on whose behalf the creditor collects the payment:" -msgstr "Parte en cuyo favor el acreedor realiza el cobro:" - #. module: account_banking_mandate #: model:ir.model,name:account_banking_mandate.model_payment_line msgid "Payment Line" msgstr "Línea de pago" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Payment type:" -msgstr "Tipo de pago" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Person on whose behalf payment is made:" -msgstr "Persona en cuyo nombre se realiza el pago:" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Policyholder Service / Debtor:" -msgstr "Tomador del servicio / Deudor:" - #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_tree msgid "Reference" @@ -450,27 +318,12 @@ msgstr "Referencia" msgid "Reference or Partner" msgstr "Referencia o cliente" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Reference:" -msgstr "Referencia:" - #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_form #: field:account.banking.mandate,payment_line_ids:0 msgid "Related Payment Lines" msgstr "Líneas de pago relacionadas" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "SEPA BUSINESS-TO-BUSINESS DIRECT DEBIT MANDATE" -msgstr "Orden de domiciliación de adeudo directo SEPA B2B" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "SEPA DIRECT DEBIT MANDATE" -msgstr "Orden de domiciliación de adeudo directo SEPA" - #. module: account_banking_mandate #: model:ir.ui.menu,name:account_banking_mandate.mandate_menu msgid "SEPA Direct Debit Mandates" @@ -487,9 +340,9 @@ msgid "Search Banking Mandates" msgstr "Buscar mandatos bancarios" #. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Service Provider / Creditor:" -msgstr "Entidad prestadora del servicio / Acreedor:" +#: selection:account.banking.mandate,format:0 +msgid "Sepa Mandate" +msgstr "Mandato SEPA" #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_search @@ -508,49 +361,27 @@ msgid "Summary" msgstr "Resumen" #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/account_banking_mandate.py:92 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:83 #, python-format msgid "The date of signature of mandate '%s' is in the future !" msgstr "La fecha de firma del mandato '%s' no puede ser superior a la actual" #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/account_banking_mandate.py:97 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:89 #, python-format msgid "" "The mandate '%s' can't have a date of last debit before the date of " "signature." -msgstr "" -"El mandato '%s' no puede tener una fecha de último cobro antes de la fecha " -"de firma." +msgstr "El mandato '%s' no puede tener una fecha de último cobro antes de la fecha de firma." #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/payment_line.py:68 +#: code:addons/account_banking_mandate/models/payment_line.py:51 #, python-format msgid "" "The payment line with reference '%s' has the bank account '%s' which is not " "attached to the mandate '%s' (this mandate is attached to the bank account " "'%s')." -msgstr "" -"La línea de pago con referencia '%s' tiene la cuenta bancaria '%s', que no " -"está puesta en el mandato '%s' (este mandato tiene como cuenta bancaria " -"'%s')." - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"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.\n" -" Please complete all the fields marked *." -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.\n" -"Por favor rellene todos los campos marcados con un *." +msgstr "La línea de pago con referencia '%s' tiene la cuenta bancaria '%s', que no está puesta en el mandato '%s' (este mandato tiene como cuenta bancaria '%s')." #. module: account_banking_mandate #: field:account.banking.mandate,unique_mandate_reference:0 @@ -562,11 +393,6 @@ msgstr "Referencia única del mandato" msgid "Unread Messages" msgstr "Mensajes sin leer" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "VAT:" -msgstr "NIF:" - #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_search msgid "Valid" @@ -577,46 +403,9 @@ msgstr "Válido" msgid "Validate" msgstr "Validar" -#. module: account_banking_mandate -#: field:account.banking.mandate,website_message_ids:0 -msgid "Website Messages" -msgstr "Mensajes del sitio web" - -#. module: account_banking_mandate -#: help:account.banking.mandate,website_message_ids:0 -msgid "Website communication history" -msgstr "Historial de comunicación del sitio web" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Write any code number here which you wish to have quoted by your bank." -msgstr "" -"Indique en este espacio cualquier número de código con el que desea que su " -"entidad financiera le identifique." - #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_form msgid "" "You should set a mandate back to draft only if you cancelled it by mistake. " "Do you want to continue?" -msgstr "" -"Debe establecer un mandato de vuelta a borrador sólo si lo cancelo por " -"error. ¿Desea continuar?" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"and another person (e.g. where you are paying the other person's bill) " -"please write the other person's name here." -msgstr "" -"y otra persona (por ejemplo, el pago de la factura de otra persona) indique " -"el nombre de dicha persona en este espacio." - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"to send instructions to your bank to debit your account and (B) your bank to " -"debit your account in accordance with the instructions from" -msgstr "" -"a enviar órdenes a la entidad del deudor para adeudar su cuenta y (B) a la " -"entidad para efectuar los adeudos en su cuenta siguiendo las instrucciones de" +msgstr "Debe establecer un mandato de vuelta a borrador sólo si lo cancelo por error. ¿Desea continuar?" diff --git a/account_banking_mandate/i18n/account_banking_mandate.pot b/account_banking_mandate/i18n/fr.po similarity index 61% rename from account_banking_mandate/i18n/account_banking_mandate.pot rename to account_banking_mandate/i18n/fr.po index 912fcd667..b4c521ffd 100644 --- a/account_banking_mandate/i18n/account_banking_mandate.pot +++ b/account_banking_mandate/i18n/fr.po @@ -1,20 +1,21 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * account_banking_mandate -# +# * account_banking_mandate +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" +"Project-Id-Version: bank-payment (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-06-18 08:15+0000\n" -"PO-Revision-Date: 2015-06-18 10:18+0100\n" -"Last-Translator: Sergio Teruel \n" -"Language-Team: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-07 16:04+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: French (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: \n" -"X-Generator: Poedit 1.5.4\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: account_banking_mandate #: model:ir.actions.act_window,help:account_banking_mandate.mandate_action @@ -22,8 +23,7 @@ msgid "" "

\n" " Click to create a new Banking Mandate.\n" "

\n" -" A Banking Mandate is a document signed by your customer that gives " -"you the autorization to do one or several operations on his bank account.\n" +" A Banking Mandate is a document signed by your customer that gives you the autorization to do one or several operations on his bank account.\n" "

\n" " " msgstr "" @@ -38,20 +38,6 @@ msgstr "" msgid "A generic banking mandate" msgstr "" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"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.\n" -" A refund must be claimed within 8 weeks starting " -"from the date on which your account was debited." -msgstr "" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "BIC:" -msgstr "" - #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_form msgid "Back to Draft" @@ -68,8 +54,8 @@ msgid "Bank Accounts" msgstr "" #. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Bank name:" +#: model:ir.model,name:account_banking_mandate.model_bank_payment_line +msgid "Bank Payment Lines" msgstr "" #. module: account_banking_mandate @@ -106,14 +92,16 @@ msgid "" msgstr "" #. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "By signing this mandate form, you authorise (A)" +#: selection:account.banking.mandate,format:0 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:39 +#, python-format +msgid "Basic Mandate" msgstr "" #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_form msgid "Cancel" -msgstr "" +msgstr "Annuler" #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_search @@ -121,7 +109,7 @@ msgid "Cancelled" msgstr "" #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/account_banking_mandate.py:110 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:104 #, python-format msgid "" "Cannot validate the mandate '%s' because it is not attached to a bank " @@ -129,7 +117,7 @@ msgid "" msgstr "" #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/account_banking_mandate.py:106 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:100 #, python-format msgid "Cannot validate the mandate '%s' without a date of signature." msgstr "" @@ -149,11 +137,6 @@ msgstr "" msgid "Created on" msgstr "" -#. module: account_banking_mandate -#: view:payment.order:account_banking_mandate.view_mandate_payment_order_form -msgid "DD Mandate" -msgstr "" - #. module: account_banking_mandate #: view:res.partner:account_banking_mandate.mandate_partner_form #: view:res.partner.bank:account_banking_mandate.mandate_partner_bank_tree @@ -175,23 +158,6 @@ msgstr "" msgid "Date of the last message posted on the record." msgstr "" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Debtor identification code:" -msgstr "" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Description of contract." -msgstr "" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"Details regarding the underlying relationship between the Creditor and the " -"Debtor - for information purposes only." -msgstr "" - #. module: account_banking_mandate #: field:account.invoice,mandate_id:0 field:payment.line,mandate_id:0 msgid "Direct Debit Mandate" @@ -219,10 +185,9 @@ msgid "Followers" msgstr "" #. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"For business users: write any code number here which you wish to have quoted " -"by your bank." +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Format" msgstr "" #. module: account_banking_mandate @@ -237,46 +202,16 @@ msgid "" "directly in html format in order to be inserted in kanban views." msgstr "" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "IBAN:" -msgstr "" - #. module: account_banking_mandate #: field:account.banking.mandate,id:0 msgid "ID" msgstr "" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Identification code of the Creditor Reference Party." -msgstr "" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Identification code of the Debtor Reference Party." -msgstr "" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Identification number of the underlying contract." -msgstr "" - #. module: account_banking_mandate #: help:account.banking.mandate,message_unread:0 msgid "If checked new messages require your attention." msgstr "" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "If you are paying on your own behalf, leave blank." -msgstr "" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "In respect of the contract:" -msgstr "" - #. module: account_banking_mandate #: model:ir.model,name:account_banking_mandate.model_account_invoice msgid "Invoice" @@ -303,13 +238,8 @@ msgid "Last Updated on" msgstr "" #. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"Location and sign: _______________________, at ______ from ____________ from" -msgstr "" - -#. module: account_banking_mandate -#: model:ir.actions.report.xml,name:account_banking_mandate.report_account_banking_mandate +#: view:bank.payment.line:account_banking_mandate.bank_payment_line_tree +#: view:payment.order:account_banking_mandate.view_mandate_payment_order_form msgid "Mandate" msgstr "" @@ -323,25 +253,30 @@ msgstr "" msgid "Mandate Expired" msgstr "" +#. module: account_banking_mandate +#: field:account.banking.mandate,format:0 +msgid "Mandate Format" +msgstr "" + #. module: account_banking_mandate #: model:mail.message.subtype,name:account_banking_mandate.mandate_valid msgid "Mandate Validated" msgstr "" #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/account_banking_mandate.py:152 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:147 #, python-format msgid "Mandate should be in cancel state" msgstr "" #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/account_banking_mandate.py:140 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:135 #, python-format msgid "Mandate should be in draft or valid state" msgstr "" #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/account_banking_mandate.py:131 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:126 #, python-format msgid "Mandate should be in draft state" msgstr "" @@ -356,20 +291,6 @@ msgstr "" msgid "Messages and communication history" msgstr "" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"Name of the Creditor Reference Party: Creditor must complete this section if " -"collecting payment on behalf of another party." -msgstr "" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"Name of the Debtor Reference Party: If you are making a payment in respect " -"of an arrangement between" -msgstr "" - #. module: account_banking_mandate #: help:account.banking.mandate,state:0 msgid "" @@ -382,30 +303,10 @@ msgstr "" msgid "Partner" msgstr "" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Party on whose behalf the creditor collects the payment:" -msgstr "" - #. module: account_banking_mandate #: model:ir.model,name:account_banking_mandate.model_payment_line msgid "Payment Line" -msgstr "" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Payment type:" -msgstr "" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Person on whose behalf payment is made:" -msgstr "" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Policyholder Service / Debtor:" -msgstr "" +msgstr "Ligne de paiement" #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_tree @@ -417,31 +318,16 @@ msgstr "" msgid "Reference or Partner" msgstr "" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Reference:" -msgstr "" - #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_form #: field:account.banking.mandate,payment_line_ids:0 msgid "Related Payment Lines" msgstr "" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "SEPA BUSINESS-TO-BUSINESS DIRECT DEBIT MANDATE" -msgstr "" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "SEPA DIRECT DEBIT MANDATE" -msgstr "" - #. module: account_banking_mandate #: model:ir.ui.menu,name:account_banking_mandate.mandate_menu msgid "SEPA Direct Debit Mandates" -msgstr "" +msgstr "Mandats de prélèvement SEPA" #. module: account_banking_mandate #: field:account.banking.mandate,scan:0 @@ -454,8 +340,8 @@ msgid "Search Banking Mandates" msgstr "" #. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Service Provider / Creditor:" +#: selection:account.banking.mandate,format:0 +msgid "Sepa Mandate" msgstr "" #. module: account_banking_mandate @@ -475,13 +361,13 @@ msgid "Summary" msgstr "" #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/account_banking_mandate.py:92 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:83 #, python-format msgid "The date of signature of mandate '%s' is in the future !" msgstr "" #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/account_banking_mandate.py:97 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:89 #, python-format msgid "" "The mandate '%s' can't have a date of last debit before the date of " @@ -489,7 +375,7 @@ msgid "" msgstr "" #. module: account_banking_mandate -#: code:addons/account_banking_mandate/models/payment_line.py:68 +#: code:addons/account_banking_mandate/models/payment_line.py:51 #, python-format msgid "" "The payment line with reference '%s' has the bank account '%s' which is not " @@ -497,16 +383,6 @@ msgid "" "'%s')." msgstr "" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"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.\n" -" Please complete all the fields marked *." -msgstr "" - #. module: account_banking_mandate #: field:account.banking.mandate,unique_mandate_reference:0 msgid "Unique Mandate Reference" @@ -517,11 +393,6 @@ msgstr "" msgid "Unread Messages" msgstr "" -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "VAT:" -msgstr "" - #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_search msgid "Valid" @@ -530,22 +401,7 @@ msgstr "" #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_form msgid "Validate" -msgstr "" - -#. module: account_banking_mandate -#: field:account.banking.mandate,website_message_ids:0 -msgid "Website Messages" -msgstr "" - -#. module: account_banking_mandate -#: help:account.banking.mandate,website_message_ids:0 -msgid "Website communication history" -msgstr "" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "Write any code number here which you wish to have quoted by your bank." -msgstr "" +msgstr "Valider" #. module: account_banking_mandate #: view:account.banking.mandate:account_banking_mandate.view_mandate_form @@ -553,17 +409,3 @@ msgid "" "You should set a mandate back to draft only if you cancelled it by mistake. " "Do you want to continue?" msgstr "" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"and another person (e.g. where you are paying the other person's bill) " -"please write the other person's name here." -msgstr "" - -#. module: account_banking_mandate -#: view:website:account_banking_mandate.account_banking_mandate_document -msgid "" -"to send instructions to your bank to debit your account and (B) your bank to " -"debit your account in accordance with the instructions from" -msgstr "" diff --git a/account_banking_mandate/i18n/nl.po b/account_banking_mandate/i18n/nl.po new file mode 100644 index 000000000..fa0c7bb28 --- /dev/null +++ b/account_banking_mandate/i18n/nl.po @@ -0,0 +1,411 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_mandate +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-07 16:04+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Dutch (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_banking_mandate +#: model:ir.actions.act_window,help:account_banking_mandate.mandate_action +msgid "" +"

\n" +" Click to create a new Banking Mandate.\n" +"

\n" +" A Banking Mandate is a document signed by your customer that gives you the autorization to do one or several operations on his bank account.\n" +"

\n" +" " +msgstr "" + +#. module: account_banking_mandate +#: sql_constraint:account.banking.mandate:0 +msgid "A Mandate with the same reference already exists for this company !" +msgstr "" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_account_banking_mandate +msgid "A generic banking mandate" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "Back to Draft" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,partner_bank_id:0 +msgid "Bank Account" +msgstr "" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_res_partner_bank +msgid "Bank Accounts" +msgstr "" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Banking Mandate" +msgstr "" + +#. module: account_banking_mandate +#: model:mail.message.subtype,description:account_banking_mandate.mandate_cancel +msgid "Banking Mandate Cancelled" +msgstr "" + +#. module: account_banking_mandate +#: model:mail.message.subtype,description:account_banking_mandate.mandate_valid +msgid "Banking Mandate Validated" +msgstr "" + +#. module: account_banking_mandate +#: model:mail.message.subtype,description:account_banking_mandate.mandate_expired +msgid "Banking Mandate has Expired" +msgstr "" + +#. module: account_banking_mandate +#: model:ir.actions.act_window,name:account_banking_mandate.mandate_action +msgid "Banking Mandates" +msgstr "" + +#. module: account_banking_mandate +#: help:res.partner.bank,mandate_ids:0 +msgid "" +"Banking mandates represents an authorization that the bank account owner " +"gives to a company for a specific operation" +msgstr "" + +#. module: account_banking_mandate +#: selection:account.banking.mandate,format:0 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:39 +#, python-format +msgid "Basic Mandate" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "Cancel" +msgstr "Annuleren" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Cancelled" +msgstr "" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:104 +#, python-format +msgid "" +"Cannot validate the mandate '%s' because it is not attached to a bank " +"account." +msgstr "" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:100 +#, python-format +msgid "Cannot validate the mandate '%s' without a date of signature." +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,company_id:0 +msgid "Company" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,create_uid:0 +msgid "Created by" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,create_date:0 +msgid "Created on" +msgstr "" + +#. module: account_banking_mandate +#: view:res.partner:account_banking_mandate.mandate_partner_form +#: view:res.partner.bank:account_banking_mandate.mandate_partner_bank_tree +msgid "DD Mandates" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,signature_date:0 +msgid "Date of Signature of the Mandate" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,last_debit_date:0 +msgid "Date of the Last Debit" +msgstr "" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_last_post:0 +msgid "Date of the last message posted on the record." +msgstr "" + +#. module: account_banking_mandate +#: field:account.invoice,mandate_id:0 field:payment.line,mandate_id:0 +msgid "Direct Debit Mandate" +msgstr "" + +#. module: account_banking_mandate +#: view:res.partner.bank:account_banking_mandate.mandate_partner_bank_form +#: field:res.partner.bank,mandate_ids:0 +msgid "Direct Debit Mandates" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Draft" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Expired" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Format" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Group By" +msgstr "" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,id:0 +msgid "ID" +msgstr "" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_account_invoice +msgid "Invoice" +msgstr "Factuur" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_last_post:0 +msgid "Last Message Date" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,write_uid:0 +msgid "Last Updated by" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,write_date:0 +msgid "Last Updated on" +msgstr "" + +#. module: account_banking_mandate +#: view:bank.payment.line:account_banking_mandate.bank_payment_line_tree +#: view:payment.order:account_banking_mandate.view_mandate_payment_order_form +msgid "Mandate" +msgstr "" + +#. module: account_banking_mandate +#: model:mail.message.subtype,name:account_banking_mandate.mandate_cancel +msgid "Mandate Cancelled" +msgstr "" + +#. module: account_banking_mandate +#: model:mail.message.subtype,name:account_banking_mandate.mandate_expired +msgid "Mandate Expired" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,format:0 +msgid "Mandate Format" +msgstr "" + +#. module: account_banking_mandate +#: model:mail.message.subtype,name:account_banking_mandate.mandate_valid +msgid "Mandate Validated" +msgstr "" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:147 +#, python-format +msgid "Mandate should be in cancel state" +msgstr "" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:135 +#, python-format +msgid "Mandate should be in draft or valid state" +msgstr "" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:126 +#, python-format +msgid "Mandate should be in draft state" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: account_banking_mandate +#: help:account.banking.mandate,state:0 +msgid "" +"Only valid mandates can be used in a payment line. A cancelled mandate is a " +"mandate that has been cancelled by the customer." +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,partner_id:0 +msgid "Partner" +msgstr "Relatie" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_payment_line +msgid "Payment Line" +msgstr "Betaalregel" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Reference" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Reference or Partner" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +#: field:account.banking.mandate,payment_line_ids:0 +msgid "Related Payment Lines" +msgstr "" + +#. module: account_banking_mandate +#: model:ir.ui.menu,name:account_banking_mandate.mandate_menu +msgid "SEPA Direct Debit Mandates" +msgstr "SEPA incasso machtegingen" + +#. module: account_banking_mandate +#: field:account.banking.mandate,scan:0 +msgid "Scan of the Mandate" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Search Banking Mandates" +msgstr "" + +#. module: account_banking_mandate +#: selection:account.banking.mandate,format:0 +msgid "Sepa Mandate" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Signature Date" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,state:0 +msgid "Status" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:83 +#, python-format +msgid "The date of signature of mandate '%s' is in the future !" +msgstr "" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:89 +#, python-format +msgid "" +"The mandate '%s' can't have a date of last debit before the date of " +"signature." +msgstr "" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/payment_line.py:51 +#, python-format +msgid "" +"The payment line with reference '%s' has the bank account '%s' which is not " +"attached to the mandate '%s' (this mandate is attached to the bank account " +"'%s')." +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,unique_mandate_reference:0 +msgid "Unique Mandate Reference" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_unread:0 +msgid "Unread Messages" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Valid" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "Validate" +msgstr "Bevestig" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "" +"You should set a mandate back to draft only if you cancelled it by mistake. " +"Do you want to continue?" +msgstr "" diff --git a/account_banking_mandate/i18n/pt_BR.po b/account_banking_mandate/i18n/pt_BR.po new file mode 100644 index 000000000..4298dfb0c --- /dev/null +++ b/account_banking_mandate/i18n/pt_BR.po @@ -0,0 +1,412 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_mandate +# +# Translators: +# danimaribeiro , 2016 +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-07 16:04+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_banking_mandate +#: model:ir.actions.act_window,help:account_banking_mandate.mandate_action +msgid "" +"

\n" +" Click to create a new Banking Mandate.\n" +"

\n" +" A Banking Mandate is a document signed by your customer that gives you the autorization to do one or several operations on his bank account.\n" +"

\n" +" " +msgstr "

\n Clique aqui para criar uma nova Ordem Bancária\n

\n Uma ordem bancária é um documento assinado por seu cliente que lhe dá autorização\npara fazer uma ou mais operações em sua conta bancária.\n

\n " + +#. module: account_banking_mandate +#: sql_constraint:account.banking.mandate:0 +msgid "A Mandate with the same reference already exists for this company !" +msgstr "Uma ordem com a mesma referência já existe para esta empresa!" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_account_banking_mandate +msgid "A generic banking mandate" +msgstr "Uma ordem bancária genérica" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "Back to Draft" +msgstr "Voltar para provisório" + +#. module: account_banking_mandate +#: field:account.banking.mandate,partner_bank_id:0 +msgid "Bank Account" +msgstr "Conta bancária" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_res_partner_bank +msgid "Bank Accounts" +msgstr "Contas bancárias" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "Linhas de pagamento bancária" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Banking Mandate" +msgstr "Ordem Bancária" + +#. module: account_banking_mandate +#: model:mail.message.subtype,description:account_banking_mandate.mandate_cancel +msgid "Banking Mandate Cancelled" +msgstr "Ordem bancária cancelada" + +#. module: account_banking_mandate +#: model:mail.message.subtype,description:account_banking_mandate.mandate_valid +msgid "Banking Mandate Validated" +msgstr "" + +#. module: account_banking_mandate +#: model:mail.message.subtype,description:account_banking_mandate.mandate_expired +msgid "Banking Mandate has Expired" +msgstr "Ordem bancária expirou" + +#. module: account_banking_mandate +#: model:ir.actions.act_window,name:account_banking_mandate.mandate_action +msgid "Banking Mandates" +msgstr "Ordens bancárias" + +#. module: account_banking_mandate +#: help:res.partner.bank,mandate_ids:0 +msgid "" +"Banking mandates represents an authorization that the bank account owner " +"gives to a company for a specific operation" +msgstr "Ordem bancária representa uma autorização que o dono da conta lhe dá para uma operação específica" + +#. module: account_banking_mandate +#: selection:account.banking.mandate,format:0 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:39 +#, python-format +msgid "Basic Mandate" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "Cancel" +msgstr "Cancelar" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Cancelled" +msgstr "Cancelado" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:104 +#, python-format +msgid "" +"Cannot validate the mandate '%s' because it is not attached to a bank " +"account." +msgstr "Não pode validar a ordem '%s' porque não está anexada a conta bancária." + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:100 +#, python-format +msgid "Cannot validate the mandate '%s' without a date of signature." +msgstr "Não pode validar a ordem '%s' sem uma data de assinatura." + +#. module: account_banking_mandate +#: field:account.banking.mandate,company_id:0 +msgid "Company" +msgstr "Empresa" + +#. module: account_banking_mandate +#: field:account.banking.mandate,create_uid:0 +msgid "Created by" +msgstr "Criado por" + +#. module: account_banking_mandate +#: field:account.banking.mandate,create_date:0 +msgid "Created on" +msgstr "Criado em" + +#. module: account_banking_mandate +#: view:res.partner:account_banking_mandate.mandate_partner_form +#: view:res.partner.bank:account_banking_mandate.mandate_partner_bank_tree +msgid "DD Mandates" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,signature_date:0 +msgid "Date of Signature of the Mandate" +msgstr "Data de assinatura da ordem" + +#. module: account_banking_mandate +#: field:account.banking.mandate,last_debit_date:0 +msgid "Date of the Last Debit" +msgstr "Data do último débito" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_last_post:0 +msgid "Date of the last message posted on the record." +msgstr "Data da última mensagem postada no registro" + +#. module: account_banking_mandate +#: field:account.invoice,mandate_id:0 field:payment.line,mandate_id:0 +msgid "Direct Debit Mandate" +msgstr "" + +#. module: account_banking_mandate +#: view:res.partner.bank:account_banking_mandate.mandate_partner_bank_form +#: field:res.partner.bank,mandate_ids:0 +msgid "Direct Debit Mandates" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Draft" +msgstr "Provisório" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Expired" +msgstr "Expirado" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_follower_ids:0 +msgid "Followers" +msgstr "Seguidores" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Format" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Group By" +msgstr "Agrupar por" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,id:0 +msgid "ID" +msgstr "ID" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "Se marcado novas mensagens requerem sua atenção." + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_account_invoice +msgid "Invoice" +msgstr "Fatura" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_is_follower:0 +msgid "Is a Follower" +msgstr "É um seguidor" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_last_post:0 +msgid "Last Message Date" +msgstr "Data da última mensagem" + +#. module: account_banking_mandate +#: field:account.banking.mandate,write_uid:0 +msgid "Last Updated by" +msgstr "Última Atualização por" + +#. module: account_banking_mandate +#: field:account.banking.mandate,write_date:0 +msgid "Last Updated on" +msgstr "Última Atualização em" + +#. module: account_banking_mandate +#: view:bank.payment.line:account_banking_mandate.bank_payment_line_tree +#: view:payment.order:account_banking_mandate.view_mandate_payment_order_form +msgid "Mandate" +msgstr "" + +#. module: account_banking_mandate +#: model:mail.message.subtype,name:account_banking_mandate.mandate_cancel +msgid "Mandate Cancelled" +msgstr "Ordem cancelada" + +#. module: account_banking_mandate +#: model:mail.message.subtype,name:account_banking_mandate.mandate_expired +msgid "Mandate Expired" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,format:0 +msgid "Mandate Format" +msgstr "" + +#. module: account_banking_mandate +#: model:mail.message.subtype,name:account_banking_mandate.mandate_valid +msgid "Mandate Validated" +msgstr "" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:147 +#, python-format +msgid "Mandate should be in cancel state" +msgstr "" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:135 +#, python-format +msgid "Mandate should be in draft or valid state" +msgstr "" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:126 +#, python-format +msgid "Mandate should be in draft state" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: account_banking_mandate +#: help:account.banking.mandate,state:0 +msgid "" +"Only valid mandates can be used in a payment line. A cancelled mandate is a " +"mandate that has been cancelled by the customer." +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,partner_id:0 +msgid "Partner" +msgstr "Parceiro" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_payment_line +msgid "Payment Line" +msgstr "Linha de Pagamento" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Reference" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Reference or Partner" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +#: field:account.banking.mandate,payment_line_ids:0 +msgid "Related Payment Lines" +msgstr "Linhas relacionadas do pagamento" + +#. module: account_banking_mandate +#: model:ir.ui.menu,name:account_banking_mandate.mandate_menu +msgid "SEPA Direct Debit Mandates" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,scan:0 +msgid "Scan of the Mandate" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Search Banking Mandates" +msgstr "" + +#. module: account_banking_mandate +#: selection:account.banking.mandate,format:0 +msgid "Sepa Mandate" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Signature Date" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,state:0 +msgid "Status" +msgstr "Status" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:83 +#, python-format +msgid "The date of signature of mandate '%s' is in the future !" +msgstr "" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:89 +#, python-format +msgid "" +"The mandate '%s' can't have a date of last debit before the date of " +"signature." +msgstr "" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/payment_line.py:51 +#, python-format +msgid "" +"The payment line with reference '%s' has the bank account '%s' which is not " +"attached to the mandate '%s' (this mandate is attached to the bank account " +"'%s')." +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,unique_mandate_reference:0 +msgid "Unique Mandate Reference" +msgstr "" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_unread:0 +msgid "Unread Messages" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Valid" +msgstr "" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "Validate" +msgstr "Validar" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "" +"You should set a mandate back to draft only if you cancelled it by mistake. " +"Do you want to continue?" +msgstr "" diff --git a/account_banking_mandate/i18n/sl.po b/account_banking_mandate/i18n/sl.po new file mode 100644 index 000000000..93ba9d049 --- /dev/null +++ b/account_banking_mandate/i18n/sl.po @@ -0,0 +1,412 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_mandate +# +# Translators: +# Matjaž Mozetič , 2016 +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-08 05:56+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: account_banking_mandate +#: model:ir.actions.act_window,help:account_banking_mandate.mandate_action +msgid "" +"

\n" +" Click to create a new Banking Mandate.\n" +"

\n" +" A Banking Mandate is a document signed by your customer that gives you the autorization to do one or several operations on his bank account.\n" +"

\n" +" " +msgstr "

\n Ustvari nov bančni mandat.\n

\n Bančni mandat je s strani kupca podpisan dokument, ki vas pooblašča za izvajanje ene ali več operacij na njegovem bančnem računu.\n

\n " + +#. module: account_banking_mandate +#: sql_constraint:account.banking.mandate:0 +msgid "A Mandate with the same reference already exists for this company !" +msgstr "Za to družbo že obstaja mandat z istim sklicem!" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_account_banking_mandate +msgid "A generic banking mandate" +msgstr "Generični bančni mandat" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "Back to Draft" +msgstr "Vrni v osnutek" + +#. module: account_banking_mandate +#: field:account.banking.mandate,partner_bank_id:0 +msgid "Bank Account" +msgstr "Bančni račun" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_res_partner_bank +msgid "Bank Accounts" +msgstr "Bančni računi" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "Postavke bančnih plačil" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Banking Mandate" +msgstr "Bančni mandat" + +#. module: account_banking_mandate +#: model:mail.message.subtype,description:account_banking_mandate.mandate_cancel +msgid "Banking Mandate Cancelled" +msgstr "Bančni mandat preklican" + +#. module: account_banking_mandate +#: model:mail.message.subtype,description:account_banking_mandate.mandate_valid +msgid "Banking Mandate Validated" +msgstr "Bančni mandat potrjen" + +#. module: account_banking_mandate +#: model:mail.message.subtype,description:account_banking_mandate.mandate_expired +msgid "Banking Mandate has Expired" +msgstr "Bančni mandat pretečen" + +#. module: account_banking_mandate +#: model:ir.actions.act_window,name:account_banking_mandate.mandate_action +msgid "Banking Mandates" +msgstr "Bančni mandati" + +#. module: account_banking_mandate +#: help:res.partner.bank,mandate_ids:0 +msgid "" +"Banking mandates represents an authorization that the bank account owner " +"gives to a company for a specific operation" +msgstr "Bančni mandat predstavlja pooblastilo, ki ga imetnik bančnega računa daje družbi za specifične operacije" + +#. module: account_banking_mandate +#: selection:account.banking.mandate,format:0 +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:39 +#, python-format +msgid "Basic Mandate" +msgstr "Osnovni mandat" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "Cancel" +msgstr "Preklic" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Cancelled" +msgstr "Preklicano" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:104 +#, python-format +msgid "" +"Cannot validate the mandate '%s' because it is not attached to a bank " +"account." +msgstr "Mandata '%s' ni mogoče overiti, ker ni pripet bančnemu računu." + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:100 +#, python-format +msgid "Cannot validate the mandate '%s' without a date of signature." +msgstr "Mandata '%s' ni mogoče overiti brez datuma podpisa." + +#. module: account_banking_mandate +#: field:account.banking.mandate,company_id:0 +msgid "Company" +msgstr "Družba" + +#. module: account_banking_mandate +#: field:account.banking.mandate,create_uid:0 +msgid "Created by" +msgstr "Ustvaril" + +#. module: account_banking_mandate +#: field:account.banking.mandate,create_date:0 +msgid "Created on" +msgstr "Ustvarjeno" + +#. module: account_banking_mandate +#: view:res.partner:account_banking_mandate.mandate_partner_form +#: view:res.partner.bank:account_banking_mandate.mandate_partner_bank_tree +msgid "DD Mandates" +msgstr "Mandati za direktne obremenitve" + +#. module: account_banking_mandate +#: field:account.banking.mandate,signature_date:0 +msgid "Date of Signature of the Mandate" +msgstr "Datum podpisa mandata" + +#. module: account_banking_mandate +#: field:account.banking.mandate,last_debit_date:0 +msgid "Date of the Last Debit" +msgstr "Datum zadnje obremenitve" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_last_post:0 +msgid "Date of the last message posted on the record." +msgstr "Datum objave zadnjega sporočila na zapisu." + +#. module: account_banking_mandate +#: field:account.invoice,mandate_id:0 field:payment.line,mandate_id:0 +msgid "Direct Debit Mandate" +msgstr "Mandat za direktne obremenitve" + +#. module: account_banking_mandate +#: view:res.partner.bank:account_banking_mandate.mandate_partner_bank_form +#: field:res.partner.bank,mandate_ids:0 +msgid "Direct Debit Mandates" +msgstr "Mandati za direktne obremenitve" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Draft" +msgstr "Osnutek" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Expired" +msgstr "Pretečeni" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_follower_ids:0 +msgid "Followers" +msgstr "Sledilci" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Format" +msgstr "Format" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Group By" +msgstr "Zfruži po" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "Vsebuje povzetek sporočanja (število sporočil, ...) neposredno v html formatu, da se lahko vstavlja v 'kanban' prikaze." + +#. module: account_banking_mandate +#: field:account.banking.mandate,id:0 +msgid "ID" +msgstr "ID" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "Ko je označeno, zahtevajo vašo pozornost nova sporočila." + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_account_invoice +msgid "Invoice" +msgstr "Račun" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_is_follower:0 +msgid "Is a Follower" +msgstr "Je sledilec" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_last_post:0 +msgid "Last Message Date" +msgstr "Datum zadnjega sporočila" + +#. module: account_banking_mandate +#: field:account.banking.mandate,write_uid:0 +msgid "Last Updated by" +msgstr "Zadnji posodobil" + +#. module: account_banking_mandate +#: field:account.banking.mandate,write_date:0 +msgid "Last Updated on" +msgstr "Zadnjič posodobljeno" + +#. module: account_banking_mandate +#: view:bank.payment.line:account_banking_mandate.bank_payment_line_tree +#: view:payment.order:account_banking_mandate.view_mandate_payment_order_form +msgid "Mandate" +msgstr "Mandat" + +#. module: account_banking_mandate +#: model:mail.message.subtype,name:account_banking_mandate.mandate_cancel +msgid "Mandate Cancelled" +msgstr "Mandat preklican" + +#. module: account_banking_mandate +#: model:mail.message.subtype,name:account_banking_mandate.mandate_expired +msgid "Mandate Expired" +msgstr "Mandat pretečen" + +#. module: account_banking_mandate +#: field:account.banking.mandate,format:0 +msgid "Mandate Format" +msgstr "Format mandata" + +#. module: account_banking_mandate +#: model:mail.message.subtype,name:account_banking_mandate.mandate_valid +msgid "Mandate Validated" +msgstr "Mandat potrjen" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:147 +#, python-format +msgid "Mandate should be in cancel state" +msgstr "Mandat bi moral biti v preklicanem stanju" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:135 +#, python-format +msgid "Mandate should be in draft or valid state" +msgstr "Mandat bi moral biti v stanjih osnutek ali potrjeno" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:126 +#, python-format +msgid "Mandate should be in draft state" +msgstr "Mandat bi moral biti v stanju osnutek" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_ids:0 +msgid "Messages" +msgstr "Sporočila" + +#. module: account_banking_mandate +#: help:account.banking.mandate,message_ids:0 +msgid "Messages and communication history" +msgstr "Sporočila in kronologija komunikacij" + +#. module: account_banking_mandate +#: help:account.banking.mandate,state:0 +msgid "" +"Only valid mandates can be used in a payment line. A cancelled mandate is a " +"mandate that has been cancelled by the customer." +msgstr "V postavki plačila se lahko uporabijo le veljavni mandati. Preklican mandat je mandat, ki ga je kupec preklical." + +#. module: account_banking_mandate +#: field:account.banking.mandate,partner_id:0 +msgid "Partner" +msgstr "Partner" + +#. module: account_banking_mandate +#: model:ir.model,name:account_banking_mandate.model_payment_line +msgid "Payment Line" +msgstr "Plačilna postavka" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Reference" +msgstr "Sklic" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Reference or Partner" +msgstr "Sklic ali partner" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +#: field:account.banking.mandate,payment_line_ids:0 +msgid "Related Payment Lines" +msgstr "Povezane plačilne postavke" + +#. module: account_banking_mandate +#: model:ir.ui.menu,name:account_banking_mandate.mandate_menu +msgid "SEPA Direct Debit Mandates" +msgstr "SEPA mandat za direktno obremenitev" + +#. module: account_banking_mandate +#: field:account.banking.mandate,scan:0 +msgid "Scan of the Mandate" +msgstr "Sken mandata" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Search Banking Mandates" +msgstr "Iskanje bančnih mandatov" + +#. module: account_banking_mandate +#: selection:account.banking.mandate,format:0 +msgid "Sepa Mandate" +msgstr "SEPA mandat" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +#: view:account.banking.mandate:account_banking_mandate.view_mandate_tree +msgid "Signature Date" +msgstr "Datum podpisa" + +#. module: account_banking_mandate +#: field:account.banking.mandate,state:0 +msgid "Status" +msgstr "Status" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_summary:0 +msgid "Summary" +msgstr "Povzetek" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:83 +#, python-format +msgid "The date of signature of mandate '%s' is in the future !" +msgstr "Datum podpisa mandata '%s' je v prihodnosti!" + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/account_banking_mandate.py:89 +#, python-format +msgid "" +"The mandate '%s' can't have a date of last debit before the date of " +"signature." +msgstr "Mandat '%s' ne sme imeti datuma zadnje obremenitve pred datumom podpisa." + +#. module: account_banking_mandate +#: code:addons/account_banking_mandate/models/payment_line.py:51 +#, python-format +msgid "" +"The payment line with reference '%s' has the bank account '%s' which is not " +"attached to the mandate '%s' (this mandate is attached to the bank account " +"'%s')." +msgstr "Plačilna postavka s sklicem '%s' vsebuje bančni račun '%s', ki ni pripet mandatu '%s' (ta mandat je pripet bančnemu računu '%s')." + +#. module: account_banking_mandate +#: field:account.banking.mandate,unique_mandate_reference:0 +msgid "Unique Mandate Reference" +msgstr "Unikatni sklic mandata" + +#. module: account_banking_mandate +#: field:account.banking.mandate,message_unread:0 +msgid "Unread Messages" +msgstr "Neprebrana sporočila" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_search +msgid "Valid" +msgstr "Veljaven" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "Validate" +msgstr "Potrdi" + +#. module: account_banking_mandate +#: view:account.banking.mandate:account_banking_mandate.view_mandate_form +msgid "" +"You should set a mandate back to draft only if you cancelled it by mistake. " +"Do you want to continue?" +msgstr "Mandat ponastavite v osnutek le, če ste ga pomotoma preklicali. Želite nadaljevati?" diff --git a/account_banking_mandate/models/__init__.py b/account_banking_mandate/models/__init__.py index 480270819..145c8921a 100644 --- a/account_banking_mandate/models/__init__.py +++ b/account_banking_mandate/models/__init__.py @@ -1,26 +1,10 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# Mandate module for openERP -# Copyright (C) 2014 Compassion CH (http://www.compassion.ch) -# @author: Cyril Sester , -# Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## -from . import account_banking_mandate -from . import account_invoice -from . import res_partner_bank -from . import payment_line +# -*- coding: utf-8 -*- + +from . import account_banking_mandate +from . import account_payment_method +from . import account_invoice +from . import res_partner_bank +from . import res_partner +from . import account_payment_line +from . import bank_payment_line +from . import account_move_line diff --git a/account_banking_mandate/models/account_banking_mandate.py b/account_banking_mandate/models/account_banking_mandate.py index e8aaa89d9..cd5958d7c 100644 --- a/account_banking_mandate/models/account_banking_mandate.py +++ b/account_banking_mandate/models/account_banking_mandate.py @@ -1,154 +1,134 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# Mandate module for openERP -# Copyright (C) 2014 Compassion CH (http://www.compassion.ch) -# @author: Cyril Sester , -# Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields, exceptions, api, _ - - -class AccountBankingMandate(models.Model): - ''' The banking mandate is attached to a bank account and represents an - authorization that the bank account owner gives to a company for a - specific operation (such as direct debit) - ''' - _name = 'account.banking.mandate' - _description = "A generic banking mandate" - _rec_name = 'unique_mandate_reference' - _inherit = ['mail.thread'] - _order = 'signature_date desc' - _track = { - 'state': { - 'account_banking_mandate.mandate_valid': ( - lambda self, cr, uid, obj, ctx=None: obj['state'] == 'valid'), - 'account_banking_mandate.mandate_expired': ( - lambda self, cr, uid, obj, ctx=None: - obj['state'] == 'expired'), - 'account_banking_mandate.mandate_cancel': ( - lambda self, cr, uid, obj, ctx=None: obj['state'] == 'cancel'), - }, - } - - def _get_states(self): - return [('draft', 'Draft'), - ('valid', 'Valid'), - ('expired', 'Expired'), - ('cancel', 'Cancelled')] - - partner_bank_id = fields.Many2one( - comodel_name='res.partner.bank', string='Bank Account', - track_visibility='onchange') - partner_id = fields.Many2one( - comodel_name='res.partner', related='partner_bank_id.partner_id', - string='Partner', store=True) - company_id = fields.Many2one( - comodel_name='res.company', string='Company', required=True, - default=lambda self: self.env['res.company']._company_default_get( - 'account.banking.mandate')) - unique_mandate_reference = fields.Char( - string='Unique Mandate Reference', track_visibility='always', - default='/') - signature_date = fields.Date(string='Date of Signature of the Mandate', - track_visibility='onchange') - scan = fields.Binary(string='Scan of the Mandate') - last_debit_date = fields.Date(string='Date of the Last Debit', - readonly=True) - state = fields.Selection( - _get_states, string='Status', default='draft', - help="Only valid mandates can be used in a payment line. A cancelled " - "mandate is a mandate that has been cancelled by the customer.") - payment_line_ids = fields.One2many( - comodel_name='payment.line', inverse_name='mandate_id', - string="Related Payment Lines") - - _sql_constraints = [( - 'mandate_ref_company_uniq', - 'unique(unique_mandate_reference, company_id)', - 'A Mandate with the same reference already exists for this company !')] - - @api.one - @api.constrains('signature_date', 'last_debit_date') - def _check_dates(self): - if (self.signature_date and - self.signature_date > fields.Date.context_today(self)): - raise exceptions.Warning( - _("The date of signature of mandate '%s' is in the future !") - % self.unique_mandate_reference) - if (self.signature_date and self.last_debit_date and - self.signature_date > self.last_debit_date): - raise exceptions.Warning( - _("The mandate '%s' can't have a date of last debit before " - "the date of signature.") % self.unique_mandate_reference) - - @api.one - @api.constrains('state', 'partner_bank_id') - def _check_valid_state(self): - if self.state == 'valid': - if not self.signature_date: - raise exceptions.Warning( - _("Cannot validate the mandate '%s' without a date of " - "signature.") % self.unique_mandate_reference) - if not self.partner_bank_id: - raise exceptions.Warning( - _("Cannot validate the mandate '%s' because it is not " - "attached to a bank account.") % - self.unique_mandate_reference) - - @api.model - def create(self, vals=None): - if vals.get('unique_mandate_reference', '/') == '/': - vals['unique_mandate_reference'] = \ - self.env['ir.sequence'].next_by_code('account.banking.mandate') - return super(AccountBankingMandate, self).create(vals) - - @api.one - @api.onchange('partner_bank_id') - def mandate_partner_bank_change(self): - self.partner_id = self.partner_bank_id.partner_id - - @api.multi - def validate(self): - for mandate in self: - if mandate.state != 'draft': - raise exceptions.Warning( - _('Mandate should be in draft state')) - self.write({'state': 'valid'}) - return True - - @api.multi - def cancel(self): - for mandate in self: - if mandate.state not in ('draft', 'valid'): - raise exceptions.Warning( - _('Mandate should be in draft or valid state')) - self.write({'state': 'cancel'}) - return True - - @api.multi - def back2draft(self): - """Allows to set the mandate back to the draft state. - This is for mandates cancelled by mistake. - """ - for mandate in self: - if mandate.state != 'cancel': - raise exceptions.Warning( - _('Mandate should be in cancel state')) - self.write({'state': 'draft'}) - return True +# -*- coding: utf-8 -*- +# © 2014 Compassion CH - Cyril Sester +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2015-2016 Akretion - Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api, _ +from openerp.exceptions import UserError, ValidationError + + +class AccountBankingMandate(models.Model): + """The banking mandate is attached to a bank account and represents an + authorization that the bank account owner gives to a company for a + specific operation (such as direct debit) + """ + _name = 'account.banking.mandate' + _description = "A generic banking mandate" + _rec_name = 'unique_mandate_reference' + _inherit = ['mail.thread'] + _order = 'signature_date desc' + + format = fields.Selection( + [('basic', 'Basic Mandate')], default='basic', required=True, + string='Mandate Format', track_visibility='onchange') + partner_bank_id = fields.Many2one( + comodel_name='res.partner.bank', string='Bank Account', + track_visibility='onchange') + partner_id = fields.Many2one( + comodel_name='res.partner', related='partner_bank_id.partner_id', + string='Partner', store=True) + company_id = fields.Many2one( + comodel_name='res.company', string='Company', required=True, + default=lambda self: self.env['res.company']._company_default_get( + 'account.banking.mandate')) + unique_mandate_reference = fields.Char( + string='Unique Mandate Reference', track_visibility='onchange') + signature_date = fields.Date(string='Date of Signature of the Mandate', + track_visibility='onchange') + scan = fields.Binary(string='Scan of the Mandate') + last_debit_date = fields.Date(string='Date of the Last Debit', + readonly=True) + state = fields.Selection([ + ('draft', 'Draft'), + ('valid', 'Valid'), + ('expired', 'Expired'), + ('cancel', 'Cancelled'), + ], string='Status', default='draft', track_visibility='onchange', + help="Only valid mandates can be used in a payment line. A cancelled " + "mandate is a mandate that has been cancelled by the customer.") + payment_line_ids = fields.One2many( + comodel_name='account.payment.line', inverse_name='mandate_id', + string="Related Payment Lines") + + _sql_constraints = [( + 'mandate_ref_company_uniq', + 'unique(unique_mandate_reference, company_id)', + 'A Mandate with the same reference already exists for this company!')] + + @api.multi + @api.constrains('signature_date', 'last_debit_date') + def _check_dates(self): + for mandate in self: + if (mandate.signature_date and + mandate.signature_date > fields.Date.context_today( + mandate)): + raise ValidationError( + _("The date of signature of mandate '%s' " + "is in the future!") + % mandate.unique_mandate_reference) + if (mandate.signature_date and mandate.last_debit_date and + mandate.signature_date > mandate.last_debit_date): + raise ValidationError( + _("The mandate '%s' can't have a date of last debit " + "before the date of signature." + ) % mandate.unique_mandate_reference) + + @api.multi + @api.constrains('state', 'partner_bank_id') + def _check_valid_state(self): + for mandate in self: + if mandate.state == 'valid': + if not mandate.signature_date: + raise ValidationError( + _("Cannot validate the mandate '%s' without a date of " + "signature.") % mandate.unique_mandate_reference) + if not mandate.partner_bank_id: + raise ValidationError( + _("Cannot validate the mandate '%s' because it is not " + "attached to a bank account.") % + mandate.unique_mandate_reference) + + @api.model + def create(self, vals=None): + if vals.get('unique_mandate_reference', 'New') == 'New': + vals['unique_mandate_reference'] = \ + self.env['ir.sequence'].next_by_code( + 'account.banking.mandate') or 'New' + return super(AccountBankingMandate, self).create(vals) + + @api.multi + @api.onchange('partner_bank_id') + def mandate_partner_bank_change(self): + for mandate in self: + mandate.partner_id = mandate.partner_bank_id.partner_id + + @api.multi + def validate(self): + for mandate in self: + if mandate.state != 'draft': + raise UserError( + _('Mandate should be in draft state.')) + self.write({'state': 'valid'}) + return True + + @api.multi + def cancel(self): + for mandate in self: + if mandate.state not in ('draft', 'valid'): + raise UserError( + _('Mandate should be in draft or valid state.')) + self.write({'state': 'cancel'}) + return True + + @api.multi + def back2draft(self): + """Allows to set the mandate back to the draft state. + This is for mandates cancelled by mistake. + """ + for mandate in self: + if mandate.state != 'cancel': + raise UserError( + _('Mandate should be in cancel state.')) + self.write({'state': 'draft'}) + return True diff --git a/account_banking_mandate/models/account_invoice.py b/account_banking_mandate/models/account_invoice.py index a4e43eba6..140a78229 100644 --- a/account_banking_mandate/models/account_invoice.py +++ b/account_banking_mandate/models/account_invoice.py @@ -1,33 +1,75 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# Mandate module for openERP -# Copyright (C) 2014 Compassion CH (http://www.compassion.ch) -# @author: Cyril Sester , -# Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields - - -class AccountInvoice(models.Model): - _inherit = 'account.invoice' - - mandate_id = fields.Many2one( - 'account.banking.mandate', string='Direct Debit Mandate', - domain=[('state', '=', 'valid')], readonly=True, - states={'draft': [('readonly', False)]}) +# -*- coding: utf-8 -*- +# © 2014 Compassion CH - Cyril Sester +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + + +from openerp import models, fields, api + + +class AccountInvoice(models.Model): + _inherit = 'account.invoice' + + mandate_id = fields.Many2one( + 'account.banking.mandate', string='Direct Debit Mandate', + ondelete='restrict', + readonly=True, states={'draft': [('readonly', False)]}) + mandate_required = fields.Boolean( + related='payment_mode_id.payment_method_id.mandate_required', + readonly=True) + + @api.model + def line_get_convert(self, line, part): + """Copy mandate from invoice to account move line""" + res = super(AccountInvoice, self).line_get_convert(line, part) + if line.get('type') == 'dest' and line.get('invoice_id'): + invoice = self.browse(line['invoice_id']) + if invoice.type in ('out_invoice', 'out_refund'): + res['mandate_id'] = invoice.mandate_id.id or False + return res + + # If a customer pays via direct debit, it's refunds should + # be deducted form the next debit by default. The module + # account_payment_partner copies payment_mode_id from invoice + # to refund, and we also need to copy mandate from invoice to refund + @api.model + def _prepare_refund( + self, invoice, date_invoice=None, date=None, description=None, + journal_id=None): + vals = super(AccountInvoice, self)._prepare_refund( + invoice, date_invoice=date_invoice, date=date, + description=description, journal_id=journal_id) + if invoice.type == 'out_invoice': + vals['mandate_id'] = invoice.mandate_id.id + return vals + + @api.onchange('partner_id', 'company_id') + def _onchange_partner_id(self): + """Select by default the first valid mandate of the partner""" + super(AccountInvoice, self)._onchange_partner_id() + if ( + self.type == 'out_invoice' and + self.partner_id.customer_payment_mode_id. + payment_type == 'inbound' and + self.partner_id.customer_payment_mode_id.payment_method_id. + mandate_required and + self.commercial_partner_id): + mandates = self.env['account.banking.mandate'].search([ + ('state', '=', 'valid'), + ('partner_id', '=', self.commercial_partner_id.id), + ]) + self.mandate_id = mandates[0] + else: + self.mandate_id = False + + @api.onchange('payment_mode_id') + def payment_mode_id_change(self): + super(AccountInvoice, self).payment_mode_id_change() + if ( + self.payment_mode_id and + self.payment_mode_id.payment_type == 'inbound' and + not self.payment_mode_id.payment_method_id.mandate_required): + self.mandate_id = False + elif not self.payment_mode_id: + self.mandate_id = False diff --git a/account_banking_mandate/models/account_move_line.py b/account_banking_mandate/models/account_move_line.py new file mode 100644 index 000000000..1ededbb6a --- /dev/null +++ b/account_banking_mandate/models/account_move_line.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (http://www.akretion.com/) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api + + +class AccountMoveLine(models.Model): + _inherit = 'account.move.line' + + mandate_id = fields.Many2one( + 'account.banking.mandate', string='Direct Debit Mandate', + ondelete='restrict') + + @api.multi + def _prepare_payment_line_vals(self, payment_order): + vals = super(AccountMoveLine, self)._prepare_payment_line_vals( + payment_order) + if payment_order.payment_type == 'inbound' and self.mandate_id: + vals['mandate_id'] = self.mandate_id.id + vals['partner_bank_id'] = self.mandate_id.partner_bank_id.id + return vals diff --git a/account_banking_mandate/models/account_payment_line.py b/account_banking_mandate/models/account_payment_line.py new file mode 100644 index 000000000..4650b2f98 --- /dev/null +++ b/account_banking_mandate/models/account_payment_line.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# © 2014 Compassion CH - Cyril Sester +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2015-2016 Akretion - Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api, _ +from openerp.exceptions import ValidationError, UserError + + +class AccountPaymentLine(models.Model): + _inherit = 'account.payment.line' + + mandate_id = fields.Many2one( + comodel_name='account.banking.mandate', string='Direct Debit Mandate', + domain=[('state', '=', 'valid')]) + mandate_required = fields.Boolean( + related='order_id.payment_method_id.mandate_required', readonly=True) + + @api.multi + @api.constrains('mandate_id', 'partner_bank_id') + def _check_mandate_bank_link(self): + for pline in self: + if (pline.mandate_id and pline.partner_bank_id and + pline.mandate_id.partner_bank_id != + pline.partner_bank_id): + raise ValidationError(_( + "The payment line number %s has the bank account " + "'%s' which is not attached to the mandate '%s' (this " + "mandate is attached to the bank account '%s').") % + (pline.name, + pline.partner_bank_id.acc_number, + pline.mandate_id.unique_mandate_reference, + pline.mandate_id.partner_bank_id.acc_number)) + + @api.multi + def draft2open_payment_line_check(self): + res = super(AccountPaymentLine, self).draft2open_payment_line_check() + if self.mandate_required and not self.mandate_id: + raise UserError(_( + 'Missing Mandate on payment line %s') % self.name) + return res diff --git a/account_banking_mandate/models/account_payment_method.py b/account_banking_mandate/models/account_payment_method.py new file mode 100644 index 000000000..884365210 --- /dev/null +++ b/account_banking_mandate/models/account_payment_method.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields + + +class AccountPaymentMethod(models.Model): + _inherit = "account.payment.method" + + mandate_required = fields.Boolean( + string='Mandate Required', + help="Activate this option if this payment method requires your " + "customer to sign a direct debit mandate with your company.") diff --git a/account_banking_mandate/models/bank_payment_line.py b/account_banking_mandate/models/bank_payment_line.py new file mode 100644 index 000000000..8dd2cbdc8 --- /dev/null +++ b/account_banking_mandate/models/bank_payment_line.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# © 2014 Compassion CH - Cyril Sester +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2015-2016 Akretion - Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api + + +class BankPaymentLine(models.Model): + _inherit = 'bank.payment.line' + + mandate_id = fields.Many2one( + comodel_name='account.banking.mandate', string='Direct Debit Mandate', + related='payment_line_ids.mandate_id') + + @api.model + def same_fields_payment_line_and_bank_payment_line(self): + res = super(BankPaymentLine, self).\ + same_fields_payment_line_and_bank_payment_line() + res.append('mandate_id') + return res diff --git a/account_banking_mandate/models/payment_line.py b/account_banking_mandate/models/payment_line.py deleted file mode 100644 index 7d7bb8cd7..000000000 --- a/account_banking_mandate/models/payment_line.py +++ /dev/null @@ -1,76 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# Mandate module for openERP -# Copyright (C) 2014 Compassion CH (http://www.compassion.ch) -# @author: Cyril Sester , -# Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields, api, exceptions, _ - - -class PaymentLine(models.Model): - _inherit = 'payment.line' - - mandate_id = fields.Many2one( - comodel_name='account.banking.mandate', string='Direct Debit Mandate', - domain=[('state', '=', 'valid')]) - - @api.model - def create(self, vals=None): - """If the customer invoice has a mandate, take it - otherwise, take the first valid mandate of the bank account - """ - if vals is None: - vals = {} - partner_bank_id = vals.get('bank_id') - move_line_id = vals.get('move_line_id') - if (self.env.context.get('search_payment_order_type') == 'debit' and - 'mandate_id' not in vals): - if move_line_id: - line = self.env['account.move.line'].browse(move_line_id) - if (line.invoice and line.invoice.type == 'out_invoice' and - line.invoice.mandate_id): - vals.update({ - 'mandate_id': line.invoice.mandate_id.id, - 'bank_id': line.invoice.mandate_id.partner_bank_id.id, - }) - if partner_bank_id and 'mandate_id' not in vals: - mandates = self.env['account.banking.mandate'].search( - [('partner_bank_id', '=', partner_bank_id), - ('state', '=', 'valid')]) - if mandates: - vals['mandate_id'] = mandates[0].id - return super(PaymentLine, self).create(vals) - - @api.one - @api.constrains('mandate_id', 'bank_id') - def _check_mandate_bank_link(self): - if (self.mandate_id and self.bank_id and - self.mandate_id.partner_bank_id.id != - self.bank_id.id): - raise exceptions.Warning( - _("The payment line with reference '%s' has the bank account " - "'%s' which is not attached to the mandate '%s' (this " - "mandate is attached to the bank account '%s').") % - (self.name, - self.env['res.partner.bank'].name_get( - [self.bank_id.id])[0][1], - self.mandate_id.unique_mandate_reference, - self.env['res.partner.bank'].name_get( - [self.mandate_id.partner_bank_id.id])[0][1])) diff --git a/account_banking_mandate/models/res_partner.py b/account_banking_mandate/models/res_partner.py new file mode 100644 index 000000000..3c1fba967 --- /dev/null +++ b/account_banking_mandate/models/res_partner.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + mandate_count = fields.Integer( + compute='_compute_mandate_count', string="Number of Mandates", + readonly=True) + + @api.multi + def _compute_mandate_count(self): + mandate_data = self.env['account.banking.mandate'].read_group( + [('partner_id', 'in', self.ids)], ['partner_id'], ['partner_id']) + mapped_data = dict([ + (mandate['partner_id'][0], mandate['partner_id_count']) + for mandate in mandate_data]) + for partner in self: + partner.mandate_count = mapped_data.get(partner.id, 0) diff --git a/account_banking_mandate/models/res_partner_bank.py b/account_banking_mandate/models/res_partner_bank.py index ecb1e944c..028a1ddb8 100644 --- a/account_banking_mandate/models/res_partner_bank.py +++ b/account_banking_mandate/models/res_partner_bank.py @@ -1,34 +1,16 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# Mandate module for openERP -# Copyright (C) 2014 Compassion CH (http://www.compassion.ch) -# @author: Cyril Sester , -# Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields - - -class ResPartnerBank(models.Model): - _inherit = 'res.partner.bank' - - mandate_ids = fields.One2many( - comodel_name='account.banking.mandate', inverse_name='partner_bank_id', - string='Direct Debit Mandates', - help='Banking mandates represents an authorization that the bank ' - 'account owner gives to a company for a specific operation') +# -*- coding: utf-8 -*- +# © 2014 Compassion CH - Cyril Sester +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields + + +class ResPartnerBank(models.Model): + _inherit = 'res.partner.bank' + + mandate_ids = fields.One2many( + comodel_name='account.banking.mandate', inverse_name='partner_bank_id', + string='Direct Debit Mandates', + help='Banking mandates represent an authorization that the bank ' + 'account owner gives to a company for a specific operation.') diff --git a/account_banking_mandate/reports/account_banking_mandate.xml b/account_banking_mandate/reports/account_banking_mandate.xml deleted file mode 100644 index 913da0bd3..000000000 --- a/account_banking_mandate/reports/account_banking_mandate.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - diff --git a/account_banking_mandate/reports/account_banking_mandate_view.xml b/account_banking_mandate/reports/account_banking_mandate_view.xml deleted file mode 100644 index 49fa21a21..000000000 --- a/account_banking_mandate/reports/account_banking_mandate_view.xml +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - - - diff --git a/account_banking_mandate/security/ir.model.access.csv b/account_banking_mandate/security/ir.model.access.csv index f89130b3f..e4d9c40fc 100644 --- a/account_banking_mandate/security/ir.model.access.csv +++ b/account_banking_mandate/security/ir.model.access.csv @@ -1,3 +1,3 @@ -"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_account_banking_mandate","Full access on account.banking.mandate","model_account_banking_mandate","account_payment.group_account_payment",1,1,1,1 -"access_account_banking_mandate_read","Read access on account.banking.mandate","model_account_banking_mandate","base.group_user",1,0,0,0 \ No newline at end of file +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_account_banking_mandate,Full access on account.banking.mandate,model_account_banking_mandate,account_payment_order.group_account_payment,1,1,1,1 +access_account_banking_mandate_read,Read access on account.banking.mandate,model_account_banking_mandate,base.group_user,1,0,0,0 diff --git a/account_banking_mandate/security/mandate_security.xml b/account_banking_mandate/security/mandate_security.xml index 889413a84..5ca991c0b 100644 --- a/account_banking_mandate/security/mandate_security.xml +++ b/account_banking_mandate/security/mandate_security.xml @@ -13,6 +13,10 @@ Banking Mandate multi-company ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])] + + + +
diff --git a/account_banking_mandate/test/banking_mandate.yml b/account_banking_mandate/test/banking_mandate.yml index d7291cc99..ae3f1439b 100644 --- a/account_banking_mandate/test/banking_mandate.yml +++ b/account_banking_mandate/test/banking_mandate.yml @@ -10,7 +10,6 @@ I create a partner bank account - !record {model: res.partner.bank, id: mandate_partner_bank, view: False}: - state: 'bank' acc_number: '1234' partner_id: mandate_partner - diff --git a/account_banking_mandate/views/account_banking_mandate_view.xml b/account_banking_mandate/views/account_banking_mandate_view.xml index d4c016e02..682bdf076 100644 --- a/account_banking_mandate/views/account_banking_mandate_view.xml +++ b/account_banking_mandate/views/account_banking_mandate_view.xml @@ -12,7 +12,7 @@ view.mandate.form account.banking.mandate -
+
+ + + + + + diff --git a/account_banking_mandate/views/res_partner_bank_view.xml b/account_banking_mandate/views/res_partner_bank_view.xml index 572fa766e..60f9cbce1 100644 --- a/account_banking_mandate/views/res_partner_bank_view.xml +++ b/account_banking_mandate/views/res_partner_bank_view.xml @@ -1,6 +1,6 @@ @@ -12,8 +12,8 @@ res.partner.bank - - + + @@ -26,23 +26,10 @@ - + - - - mandate.partner.form - res.partner - - - - - - - - diff --git a/account_banking_mandate_sale/README.rst b/account_banking_mandate_sale/README.rst new file mode 100644 index 000000000..2e8967e47 --- /dev/null +++ b/account_banking_mandate_sale/README.rst @@ -0,0 +1,66 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License: AGPL-3 + +============================ +Account Banking Mandate Sale +============================ + +This modules adds the field *Direct Debit Mandate* on sale orders. + +Configuration +============= + +There is nothing to configure. + +Usage +===== + +When you select a payment mode that requires mandate on a sale order, Odoo will +select by default the first valid mandate of this customer. + +The mandate will be copied from the sale order to the invoice. + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/173/9.0 + +Known issues / Roadmap +====================== + + * No known issues. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Alexis de Lattre + +Maintainer +---------- + +.. image:: http://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: http://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization +whose mission is to support the collaborative development of Odoo +features and promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/account_direct_debit/__init__.py b/account_banking_mandate_sale/__init__.py similarity index 62% rename from account_direct_debit/__init__.py rename to account_banking_mandate_sale/__init__.py index 9b4296142..35e7c9600 100644 --- a/account_direct_debit/__init__.py +++ b/account_banking_mandate_sale/__init__.py @@ -1,2 +1,4 @@ +# -*- coding: utf-8 -*- + from . import models from . import wizard diff --git a/account_banking_mandate_sale/__openerp__.py b/account_banking_mandate_sale/__openerp__.py new file mode 100644 index 000000000..810cd5aa0 --- /dev/null +++ b/account_banking_mandate_sale/__openerp__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Account Banking Mandate Sale', + 'version': '9.0.1.0.0', + 'category': 'Banking addons', + 'license': 'AGPL-3', + 'summary': "Adds mandates on sale orders", + 'author': "Akretion, " + "Odoo Community Association (OCA)", + 'website': 'https://github.com/OCA/bank-payment', + 'depends': [ + 'account_payment_sale', + 'account_banking_mandate', + ], + 'data': [ + 'views/sale_order.xml', + ], + 'installable': True, +} diff --git a/account_banking_mandate_sale/models/__init__.py b/account_banking_mandate_sale/models/__init__.py new file mode 100644 index 000000000..6064afee1 --- /dev/null +++ b/account_banking_mandate_sale/models/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import sale_order diff --git a/account_banking_mandate_sale/models/sale_order.py b/account_banking_mandate_sale/models/sale_order.py new file mode 100644 index 000000000..5f4fc9cf9 --- /dev/null +++ b/account_banking_mandate_sale/models/sale_order.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# © 2014-2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import models, fields, api + + +class SaleOrder(models.Model): + _inherit = "sale.order" + + # This field commercial_partner_id should be moved + # in an OCA base module named for example sale_commercial_partner + commercial_partner_id = fields.Many2one( + related='partner_id.commercial_partner_id', string='Commercial Entity', + store=True, readonly=True) + mandate_id = fields.Many2one( + 'account.banking.mandate', string='Direct Debit Mandate', + ondelete='restrict', readonly=True, + states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}) + + @api.multi + def _prepare_invoice(self): + """Copy mandate from sale order to invoice""" + vals = super(SaleOrder, self)._prepare_invoice() + vals['mandate_id'] = self.mandate_id.id + return vals + + @api.onchange('payment_mode_id') + def payment_mode_change(self): + """Select by default the first valid mandate of the partner""" + if ( + self.payment_mode_id.payment_method_id.mandate_required and + self.partner_id): + mandates = self.env['account.banking.mandate'].search([ + ('state', '=', 'valid'), + ('partner_id', '=', self.commercial_partner_id.id), + ]) + self.mandate_id = mandates[0] diff --git a/account_banking_mandate_sale/views/sale_order.xml b/account_banking_mandate_sale/views/sale_order.xml new file mode 100644 index 000000000..d14faf64f --- /dev/null +++ b/account_banking_mandate_sale/views/sale_order.xml @@ -0,0 +1,27 @@ + + + + + + + + + account_banking_mandate_sale.sale_order.form + sale.order + + + + + + + + + + + + diff --git a/account_banking_mandate_sale/wizard/__init__.py b/account_banking_mandate_sale/wizard/__init__.py new file mode 100644 index 000000000..1eb17ffa1 --- /dev/null +++ b/account_banking_mandate_sale/wizard/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import sale_make_invoice_advance diff --git a/account_banking_mandate_sale/wizard/sale_make_invoice_advance.py b/account_banking_mandate_sale/wizard/sale_make_invoice_advance.py new file mode 100644 index 000000000..0e9d34aa4 --- /dev/null +++ b/account_banking_mandate_sale/wizard/sale_make_invoice_advance.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import models, api + + +class SaleAdvancePaymentInv(models.TransientModel): + _inherit = 'sale.advance.payment.inv' + + @api.multi + def _create_invoice(self, order, so_line, amount): + """Copy mandate from sale order to invoice""" + inv = super(SaleAdvancePaymentInv, self)._create_invoice( + order, so_line, amount) + if order.mandate_id: + inv.mandate_id = order.mandate_id.id + return inv diff --git a/account_banking_pain_base/README.rst b/account_banking_pain_base/README.rst index fb9b48a2d..5e7f4774c 100644 --- a/account_banking_pain_base/README.rst +++ b/account_banking_pain_base/README.rst @@ -1,6 +1,7 @@ .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg :alt: License: AGPL-3 +================================ Account Banking PAIN Base Module ================================ @@ -16,7 +17,8 @@ Installation ============ This module depends on : -- account_banking_payment_export + +- account_payment_order This module is part of the OCA/bank-payment suite. @@ -30,23 +32,22 @@ Usage See 'readme' files of the OCA/bank-payment suite. - -For further information, please visit: - - * https://www.odoo.com/forum/help-1 +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/173/9.0 Known issues / Roadmap ====================== * no known issues - + Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. Credits ======= @@ -54,14 +55,15 @@ Credits Contributors ------------ -* Alexis de Lattre +* Alexis de Lattre * Pedro M. Baeza -* Stéphane Bidoul +* Stéphane Bidoul * Ignacio Ibeas - Acysos S.L. * Alexandre Fayolle * Raphaël Valyi * Sandy Carter * Stefan Rijnhart (Therp) +* Antonio Espinosa Maintainer ---------- diff --git a/account_banking_pain_base/__init__.py b/account_banking_pain_base/__init__.py index c4f18b657..44319ee0a 100644 --- a/account_banking_pain_base/__init__.py +++ b/account_banking_pain_base/__init__.py @@ -1,24 +1,7 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# PAIN Base module for Odoo -# Copyright (C) 2013 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- +# © 2013 Akretion - Alexis de Lattre +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import models from .post_install import set_default_initiating_party diff --git a/account_banking_pain_base/__openerp__.py b/account_banking_pain_base/__openerp__.py index 8250fa55b..809182e29 100644 --- a/account_banking_pain_base/__openerp__.py +++ b/account_banking_pain_base/__openerp__.py @@ -1,45 +1,34 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# PAIN base module for Odoo -# Copyright (C) 2013-2015 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- +# © 2013-2016 Akretion - Alexis de Lattre +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2016 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + { 'name': 'Account Banking PAIN Base Module', 'summary': 'Base module for PAIN file generation', - 'version': '8.0.0.2.0', + 'version': '9.0.1.0.0', 'license': 'AGPL-3', 'author': "Akretion, " "Noviat, " "Serv. Tecnol. Avanzados - Pedro M. Baeza, " + "Antiun Ingeniería S.L., " "Odoo Community Association (OCA)", 'website': 'https://github.com/OCA/bank-payment', 'contributors': ['Pedro M. Baeza '], 'category': 'Hidden', - 'depends': ['account_banking_payment_export'], + 'depends': ['account_payment_order'], 'external_dependencies': { 'python': ['unidecode', 'lxml'], }, 'data': [ - 'views/payment_line_view.xml', - 'views/payment_mode_view.xml', + 'views/account_payment_line.xml', + 'views/account_payment_order.xml', + 'views/bank_payment_line_view.xml', + 'views/account_payment_mode.xml', 'views/res_company_view.xml', + 'views/account_payment_method.xml', ], 'post_init_hook': 'set_default_initiating_party', - 'installable': False, + 'installable': True, } diff --git a/account_banking_pain_base/i18n/es.po b/account_banking_pain_base/i18n/es.po index 61fa1e0ba..85f9a94b9 100644 --- a/account_banking_pain_base/i18n/es.po +++ b/account_banking_pain_base/i18n/es.po @@ -1,28 +1,40 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * account_banking_pain_base -# +# * account_banking_pain_base +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" +"Project-Id-Version: bank-payment (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-10-31 22:52+0000\n" -"PO-Revision-Date: 2014-10-31 22:52+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:14+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Spanish (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:74 +#: model:ir.model,name:account_banking_pain_base.model_res_partner_bank +msgid "Bank Accounts" +msgstr "Cuentas de banco" + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "Líneas de pago bancario" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:62 #, python-format msgid "Cannot compute the '%s' of the Payment Line with reference '%s'." msgstr "No se puede procesar el campo '%s' de la línea de pago con referencia '%s'." #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:80 +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:67 #, python-format msgid "Cannot compute the '%s'." msgstr "No se puede procesar el campo '%s'." @@ -38,23 +50,11 @@ msgid "Convert to ASCII" msgstr "Convertir a ASCII" #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:47 -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:73 -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:79 -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:89 -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:124 -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:303 -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:385 +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:282 #, python-format msgid "Error:" msgstr "Error:" -#. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:83 -#, python-format -msgid "Field type error:" -msgstr "" - #. module: account_banking_pain_base #: selection:payment.line,priority:0 msgid "High" @@ -67,18 +67,37 @@ msgstr "ID" #. module: account_banking_pain_base #: help:payment.mode,convert_to_ascii:0 -msgid "If active, Odoo will convert each accented caracter to the corresponding unaccented caracter, so that only ASCII caracters are used in the generated PAIN file." +msgid "" +"If active, Odoo will convert each accented caracter to the corresponding " +"unaccented caracter, so that only ASCII caracters are used in the generated " +"PAIN file." msgstr "Si está marcado, Odoo convertirá cada carácter acentuado en el correspondiente carácter no acentuado, para que sólo se usen caracteres ASCII en el archivo PAIN generado." #. module: account_banking_pain_base +#: field:payment.mode,initiating_party_identifier:0 +#: field:res.company,initiating_party_identifier:0 +msgid "Initiating Party Identifier" +msgstr "Identificador del iniciador de la transacción" + +#. module: account_banking_pain_base +#: field:payment.mode,initiating_party_issuer:0 #: field:res.company,initiating_party_issuer:0 msgid "Initiating Party Issuer" msgstr "Emisor de la transacción" #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:386 +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:256 #, python-format -msgid "Missing 'Structured Communication Type' on payment line with reference '%s'." +msgid "" +"Missing 'Initiating Party Issuer' and/or 'Initiating Party Identifier' for " +"the company '%s'. Both fields must have a value." +msgstr "Falta el 'Emisor de la transacción' y/o 'Identificador del iniciador de la transacción' para la compañía '%s'. Ambos campos deben tener un valor." + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:358 +#, python-format +msgid "" +"Missing 'Structured Communication Type' on payment line with reference '%s'." msgstr "Falta el campo 'Tipo de comunicación estructurada' en la línea de pago con referencia '%s'." #. module: account_banking_pain_base @@ -106,48 +125,95 @@ msgstr "Modo de pago" msgid "Priority" msgstr "Prioridad" +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:131 +#, python-format +msgid "SEPA File" +msgstr "Archivo SEPA" + +#. module: account_banking_pain_base +#: view:payment.mode:account_banking_pain_base.view_payment_mode_form_inherit +msgid "SEPA identifiers" +msgstr "" + #. module: account_banking_pain_base #: field:payment.line,struct_communication_type:0 msgid "Structured Communication Type" msgstr "Tipo de comunicación estructurada" #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:90 +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:75 #, python-format msgid "The '%s' is empty or 0. It should have a non-null value." msgstr "'%s' está vacío o es 0. Debería tener un valor no nulo." #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:304 +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:283 #, python-format -msgid "The bank account with IBAN '%s' of partner '%s' must have an associated BIC because it is a cross-border SEPA operation." +msgid "" +"The bank account with IBAN '%s' of partner '%s' must have an associated BIC " +"because it is a cross-border SEPA operation." msgstr "La cuenta bancaria con IBAN '%s' de la empresa '%s' debe tener un BIC asociado, porque es una operación SEPA transfronteriza." #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:125 +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:96 #, 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" +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 "El archivo XML generado no se puede validar contra la definición de esquema XML oficial. El archivo XML generado el error completo se ha escrito en los registros del servidor. Aquí está el error, que le puede dar una idea de la causa del problema : %s" #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:84 +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:70 #, python-format msgid "The type of the field '%s' is %s. It should be a string or unicode." msgstr "El tipo del campo '%s' es %s. Debería ser una cadena o unicode." #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/models/banking_export_pain.py:47 +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:35 #, python-format msgid "This IBAN is not valid : %s" msgstr "Este IBAN no es válido: %s" #. module: account_banking_pain_base #: help:payment.line,priority:0 -msgid "This field will be used as the 'Instruction Priority' in the generated PAIN file." +msgid "" +"This field will be used as the 'Instruction Priority' in the generated PAIN " +"file." msgstr "Este campo se usará como 'Prioridad de instrucción' en el archivo PAIN generado." +#. module: account_banking_pain_base +#: help:res.company,initiating_party_identifier:0 +msgid "" +"This will be used as the 'Initiating Party Identifier' in the PAIN files " +"generated by Odoo." +msgstr "Esto se usará como el 'Identificador del iniciador de la transacción' en los archivos PAIN generados por Odoo." + +#. module: account_banking_pain_base +#: help:payment.mode,initiating_party_identifier:0 +msgid "" +"This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\n" +"Common format (13): \n" +"- Country code (2, optional)\n" +"- Company idenfier (N, VAT)\n" +"- Service suffix (N, issued by bank)" +msgstr "" + #. module: account_banking_pain_base #: help:res.company,initiating_party_issuer:0 -msgid "This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo." +msgid "" +"This will be used as the 'Initiating Party Issuer' in the PAIN files " +"generated by Odoo." msgstr "Este campo se usará como 'Emisor de la transacción' en los archivos PAIN generados por Odoo." +#. module: account_banking_pain_base +#: help:payment.mode,initiating_party_issuer:0 +msgid "" +"This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\n" +"Common format (13): \n" +"- Country code (2, optional)\n" +"- Company idenfier (N, VAT)\n" +"- Service suffix (N, issued by bank)" +msgstr "" diff --git a/account_banking_pain_base/i18n/fr.po b/account_banking_pain_base/i18n/fr.po index e58b8ece0..f7b547001 100644 --- a/account_banking_pain_base/i18n/fr.po +++ b/account_banking_pain_base/i18n/fr.po @@ -1,44 +1,114 @@ -# Translation of OpenERP Server. +# Translation of Odoo Server. # This file contains the translation of the following modules: -# * account_banking_pain_base -# +# * account_banking_pain_base +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: OpenERP Server 7.0\n" +"Project-Id-Version: bank-payment (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-12-23 21:26+0000\n" -"PO-Revision-Date: 2014-02-01 04:48+0000\n" -"Last-Translator: Alexis de Lattre \n" -"Language-Team: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:14+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: French (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n" -"X-Generator: Launchpad (build 17031)\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_res_partner_bank +msgid "Bank Accounts" +msgstr "" + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:62 +#, python-format +msgid "Cannot compute the '%s' of the Payment Line with reference '%s'." +msgstr "Impossible de calculer le '%s' de la ligne de paiement ayant la référence '%s'." + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:67 +#, python-format +msgid "Cannot compute the '%s'." +msgstr "Impossible de calculer le '%s'." + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_res_company +msgid "Companies" +msgstr "Sociétés" + +#. module: account_banking_pain_base +#: field:payment.mode,convert_to_ascii:0 +msgid "Convert to ASCII" +msgstr "Convertir en ASCII" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:282 +#, python-format +msgid "Error:" +msgstr "Erreur :" + +#. module: account_banking_pain_base +#: selection:payment.line,priority:0 +msgid "High" +msgstr "Élevé" + +#. module: account_banking_pain_base +#: field:banking.export.pain,id:0 +msgid "ID" +msgstr "" + +#. module: account_banking_pain_base +#: help:payment.mode,convert_to_ascii:0 +msgid "" +"If active, Odoo will convert each accented caracter to the corresponding " +"unaccented caracter, so that only ASCII caracters are used in the generated " +"PAIN file." +msgstr "" + +#. module: account_banking_pain_base +#: field:payment.mode,initiating_party_identifier:0 +#: field:res.company,initiating_party_identifier:0 +msgid "Initiating Party Identifier" +msgstr "" + +#. module: account_banking_pain_base +#: field:payment.mode,initiating_party_issuer:0 #: field:res.company,initiating_party_issuer:0 msgid "Initiating Party Issuer" msgstr "Initiating Party Issuer" #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:122 +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:256 #, 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" +"Missing 'Initiating Party Issuer' and/or 'Initiating Party Identifier' for " +"the company '%s'. Both fields must have a value." 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_pain_base -#: field:payment.line,priority:0 -msgid "Priority" -msgstr "Priorité" +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:358 +#, python-format +msgid "" +"Missing 'Structured Communication Type' on payment line with reference '%s'." +msgstr "Le 'Type de communication structuré' n'est pas renseigné sur la ligne de paiement ayant la référence '%s'." + +#. module: account_banking_pain_base +#: selection:payment.line,priority:0 +msgid "Normal" +msgstr "Normal" + +#. module: account_banking_pain_base +#: view:res.company:account_banking_pain_base.view_company_form +msgid "Payment Initiation" +msgstr "Payment Initiation" #. module: account_banking_pain_base #: model:ir.model,name:account_banking_pain_base.model_payment_line @@ -51,76 +121,20 @@ msgid "Payment Mode" msgstr "Mode de paiement" #. module: account_banking_pain_base -#: help:res.company,initiating_party_issuer:0 -msgid "" -"This will be used as the 'Initiating Party Issuer' in the PAIN files " -"generated by OpenERP." +#: field:payment.line,priority:0 +msgid "Priority" +msgstr "Priorité" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:131 +#, python-format +msgid "SEPA File" msgstr "" -"Ce champ sera le 'Initiating Party Issuer' dans les fichiers PAIN générés " -"par OpenERP." #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:351 -#, python-format -msgid "" -"Missing 'Structured Communication Type' on payment line with reference '%s'." +#: view:payment.mode:account_banking_pain_base.view_payment_mode_form_inherit +msgid "SEPA identifiers" msgstr "" -"Le 'Type de communication structuré' n'est pas renseigné sur la ligne de " -"paiement ayant la référence '%s'." - -#. module: account_banking_pain_base -#: selection:payment.line,priority:0 -msgid "Normal" -msgstr "Normal" - -#. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:70 -#, python-format -msgid "Cannot compute the '%s' of the Payment Line with reference '%s'." -msgstr "" -"Impossible de calculer le '%s' de la ligne de paiement ayant la référence " -"'%s'." - -#. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:77 -#, python-format -msgid "Cannot compute the '%s'." -msgstr "Impossible de calculer le '%s'." - -#. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:81 -#, python-format -msgid "The type of the field '%s' is %s. It should be a string or unicode." -msgstr "" -"Le type du champ '%s' est %s. Il devrait être de type string ou unicode." - -#. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:47 -#: code:addons/account_banking_pain_base/banking_export_pain.py:69 -#: code:addons/account_banking_pain_base/banking_export_pain.py:76 -#: code:addons/account_banking_pain_base/banking_export_pain.py:86 -#: code:addons/account_banking_pain_base/banking_export_pain.py:121 -#: code:addons/account_banking_pain_base/banking_export_pain.py:350 -#, python-format -msgid "Error:" -msgstr "Erreur :" - -#. module: account_banking_pain_base -#: model:ir.model,name:account_banking_pain_base.model_res_company -msgid "Companies" -msgstr "Sociétés" - -#. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:47 -#, python-format -msgid "This IBAN is not valid : %s" -msgstr "Cet IBAN n'est pas valide : %s" - -#. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:80 -#, python-format -msgid "Field type error:" -msgstr "Erreur dans le type de champ :" #. module: account_banking_pain_base #: field:payment.line,struct_communication_type:0 @@ -128,26 +142,40 @@ msgid "Structured Communication Type" msgstr "Type de communication structurée" #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:87 +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:75 #, python-format msgid "The '%s' is empty or 0. It should have a non-null value." msgstr "Le '%s' est vide ou égal à 0. Il devrait avoir une valeur non-nulle." #. module: account_banking_pain_base -#: model:ir.model,name:account_banking_pain_base.model_banking_export_pain -msgid "banking.export.pain" -msgstr "banking.export.pain" +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:283 +#, python-format +msgid "" +"The bank account with IBAN '%s' of partner '%s' must have an associated BIC " +"because it is a cross-border SEPA operation." +msgstr "" #. module: account_banking_pain_base -#: help:payment.mode,convert_to_ascii:0 +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:96 +#, python-format msgid "" -"If active, OpenERP will convert each accented caracter to the corresponding " -"unaccented caracter, so that only ASCII caracters are used in the generated " -"PAIN file." -msgstr "" -"Si actif, OpenERP convertira chaque caractère accentué en son équivalent non " -"accentué, de telle façon que seuls des caractères ASCII soient utilisés dans " -"le fichier PAIN généré." +"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_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:70 +#, python-format +msgid "The type of the field '%s' is %s. It should be a string or unicode." +msgstr "Le type du champ '%s' est %s. Il devrait être de type string ou unicode." + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:35 +#, python-format +msgid "This IBAN is not valid : %s" +msgstr "Cet IBAN n'est pas valide : %s" #. module: account_banking_pain_base #: help:payment.line,priority:0 @@ -157,16 +185,35 @@ msgid "" msgstr "Ce champ sera le 'Instruction Priority' dans le fichier PAIN généré." #. module: account_banking_pain_base -#: view:res.company:0 -msgid "Payment Initiation" -msgstr "Payment Initiation" +#: help:res.company,initiating_party_identifier:0 +msgid "" +"This will be used as the 'Initiating Party Identifier' in the PAIN files " +"generated by Odoo." +msgstr "" #. module: account_banking_pain_base -#: selection:payment.line,priority:0 -msgid "High" -msgstr "Élevé" +#: help:payment.mode,initiating_party_identifier:0 +msgid "" +"This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\n" +"Common format (13): \n" +"- Country code (2, optional)\n" +"- Company idenfier (N, VAT)\n" +"- Service suffix (N, issued by bank)" +msgstr "" #. module: account_banking_pain_base -#: field:payment.mode,convert_to_ascii:0 -msgid "Convert to ASCII" -msgstr "Convertir en ASCII" +#: help:res.company,initiating_party_issuer:0 +msgid "" +"This will be used as the 'Initiating Party Issuer' in the PAIN files " +"generated by Odoo." +msgstr "" + +#. module: account_banking_pain_base +#: help:payment.mode,initiating_party_issuer:0 +msgid "" +"This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\n" +"Common format (13): \n" +"- Country code (2, optional)\n" +"- Company idenfier (N, VAT)\n" +"- Service suffix (N, issued by bank)" +msgstr "" diff --git a/account_banking_pain_base/i18n/nl.po b/account_banking_pain_base/i18n/nl.po index 721d24f68..4a1a939c3 100644 --- a/account_banking_pain_base/i18n/nl.po +++ b/account_banking_pain_base/i18n/nl.po @@ -1,45 +1,115 @@ -# Dutch translation for banking-addons -# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 -# This file is distributed under the same license as the banking-addons package. -# FIRST AUTHOR , 2014. -# +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_pain_base +# +# Translators: +# FIRST AUTHOR , 2014 msgid "" msgstr "" -"Project-Id-Version: banking-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-12-23 21:26+0000\n" -"PO-Revision-Date: 2014-02-11 08:32+0000\n" -"Last-Translator: Erwin van der Ploeg (BAS Solutions) \n" -"Language-Team: Dutch \n" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:14+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Dutch (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n" -"X-Generator: Launchpad (build 17031)\n" +"Content-Transfer-Encoding: \n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_res_partner_bank +msgid "Bank Accounts" +msgstr "" + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:62 +#, python-format +msgid "Cannot compute the '%s' of the Payment Line with reference '%s'." +msgstr "Kan de '%s' niet berekenen van de betaalregel met referentie '%s'." + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:67 +#, python-format +msgid "Cannot compute the '%s'." +msgstr "Kan de '%s' niet berekenen." + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_res_company +msgid "Companies" +msgstr "Bedrijven" + +#. module: account_banking_pain_base +#: field:payment.mode,convert_to_ascii:0 +msgid "Convert to ASCII" +msgstr "Converteer naar ASCII" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:282 +#, python-format +msgid "Error:" +msgstr "Fout:" + +#. module: account_banking_pain_base +#: selection:payment.line,priority:0 +msgid "High" +msgstr "Hoog" + +#. module: account_banking_pain_base +#: field:banking.export.pain,id:0 +msgid "ID" +msgstr "" + +#. module: account_banking_pain_base +#: help:payment.mode,convert_to_ascii:0 +msgid "" +"If active, Odoo will convert each accented caracter to the corresponding " +"unaccented caracter, so that only ASCII caracters are used in the generated " +"PAIN file." +msgstr "" + +#. module: account_banking_pain_base +#: field:payment.mode,initiating_party_identifier:0 +#: field:res.company,initiating_party_identifier:0 +msgid "Initiating Party Identifier" +msgstr "" + +#. module: account_banking_pain_base +#: field:payment.mode,initiating_party_issuer:0 #: field:res.company,initiating_party_issuer:0 msgid "Initiating Party Issuer" msgstr "Initiating Party Issuer" #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:122 +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:256 #, 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" +"Missing 'Initiating Party Issuer' and/or 'Initiating Party Identifier' for " +"the company '%s'. Both fields must have a value." msgstr "" -"Het gegenereerde XML bestand is niet geldig volgens de officiële XML schema " -"definities. Het gegenereerde XML bestand en de volledige fout zijn " -"weggeschreven in de server log bestanden. Hier is de fout, wat u een idee " -"kunt geven over de oorzaak van het probleem: %s\"" #. module: account_banking_pain_base -#: field:payment.line,priority:0 -msgid "Priority" -msgstr "Prioriteit" +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:358 +#, python-format +msgid "" +"Missing 'Structured Communication Type' on payment line with reference '%s'." +msgstr "Ontbrekende 'Structured Communication Type' op betaalregel met referentie '%s'." + +#. module: account_banking_pain_base +#: selection:payment.line,priority:0 +msgid "Normal" +msgstr "Normaal" + +#. module: account_banking_pain_base +#: view:res.company:account_banking_pain_base.view_company_form +msgid "Payment Initiation" +msgstr "Payment Initiation" #. module: account_banking_pain_base #: model:ir.model,name:account_banking_pain_base.model_payment_line @@ -52,73 +122,20 @@ msgid "Payment Mode" msgstr "Betaalwijze" #. module: account_banking_pain_base -#: help:res.company,initiating_party_issuer:0 -msgid "" -"This will be used as the 'Initiating Party Issuer' in the PAIN files " -"generated by OpenERP." +#: field:payment.line,priority:0 +msgid "Priority" +msgstr "Prioriteit" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:131 +#, python-format +msgid "SEPA File" msgstr "" -"Dit wordt gebruikt als de 'Initiating Party Issuer' in de PAIN bestanden " -"gegenereerd door OpenERP." #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:351 -#, python-format -msgid "" -"Missing 'Structured Communication Type' on payment line with reference '%s'." +#: view:payment.mode:account_banking_pain_base.view_payment_mode_form_inherit +msgid "SEPA identifiers" msgstr "" -"Ontbrekende 'Structured Communication Type' op betaalregel met referentie " -"'%s'." - -#. module: account_banking_pain_base -#: selection:payment.line,priority:0 -msgid "Normal" -msgstr "Normaal" - -#. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:70 -#, python-format -msgid "Cannot compute the '%s' of the Payment Line with reference '%s'." -msgstr "Kan de '%s' niet berekenen van de betaalregel met referentie '%s'." - -#. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:77 -#, python-format -msgid "Cannot compute the '%s'." -msgstr "Kan de '%s' niet berekenen." - -#. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:81 -#, python-format -msgid "The type of the field '%s' is %s. It should be a string or unicode." -msgstr "Het type van veld '%s' is %s. Dit moet een string of unicode zijn." - -#. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:47 -#: code:addons/account_banking_pain_base/banking_export_pain.py:69 -#: code:addons/account_banking_pain_base/banking_export_pain.py:76 -#: code:addons/account_banking_pain_base/banking_export_pain.py:86 -#: code:addons/account_banking_pain_base/banking_export_pain.py:121 -#: code:addons/account_banking_pain_base/banking_export_pain.py:350 -#, python-format -msgid "Error:" -msgstr "Fout:" - -#. module: account_banking_pain_base -#: model:ir.model,name:account_banking_pain_base.model_res_company -msgid "Companies" -msgstr "Bedrijven" - -#. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:47 -#, python-format -msgid "This IBAN is not valid : %s" -msgstr "Deze IBAN is niet geldig : %s" - -#. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:80 -#, python-format -msgid "Field type error:" -msgstr "Veld type fout:" #. module: account_banking_pain_base #: field:payment.line,struct_communication_type:0 @@ -126,47 +143,78 @@ msgid "Structured Communication Type" msgstr "Structured Communication Type" #. module: account_banking_pain_base -#: code:addons/account_banking_pain_base/banking_export_pain.py:87 +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:75 #, python-format msgid "The '%s' is empty or 0. It should have a non-null value." msgstr "De '%s' is leeg of 0. Deze waarde zou niet nul moeten zijn." #. module: account_banking_pain_base -#: model:ir.model,name:account_banking_pain_base.model_banking_export_pain -msgid "banking.export.pain" -msgstr "banking.export.pain" +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:283 +#, python-format +msgid "" +"The bank account with IBAN '%s' of partner '%s' must have an associated BIC " +"because it is a cross-border SEPA operation." +msgstr "" #. module: account_banking_pain_base -#: help:payment.mode,convert_to_ascii:0 +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:96 +#, python-format msgid "" -"If active, OpenERP will convert each accented caracter to the corresponding " -"unaccented caracter, so that only ASCII caracters are used in the generated " -"PAIN file." -msgstr "" -"Indien aangevinkt, zal OpenERP elk geaccentueerde karakter omzetten in een " -"overeenkomstige ongeaccentueerde karakter, zodat alleen ASCII karakters " -"worden gebruikt in het gegenereerde PAIN bestand." +"The generated XML file is not valid against the official XML Schema " +"Definition. The generated XML file and the full error have been written in " +"the server logs. Here is the error, which may give you an idea on the cause " +"of the problem : %s" +msgstr "Het gegenereerde XML bestand is niet geldig volgens de officiële XML schema definities. Het gegenereerde XML bestand en de volledige fout zijn weggeschreven in de server log bestanden. Hier is de fout, wat u een idee kunt geven over de oorzaak van het probleem: %s\"" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:70 +#, python-format +msgid "The type of the field '%s' is %s. It should be a string or unicode." +msgstr "Het type van veld '%s' is %s. Dit moet een string of unicode zijn." + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:35 +#, python-format +msgid "This IBAN is not valid : %s" +msgstr "Deze IBAN is niet geldig : %s" #. module: account_banking_pain_base #: help:payment.line,priority:0 msgid "" "This field will be used as the 'Instruction Priority' in the generated PAIN " "file." +msgstr "Dit veld wordt gebruikt als de 'Instruction Priority' in het gegenereerde PAIN bestand." + +#. module: account_banking_pain_base +#: help:res.company,initiating_party_identifier:0 +msgid "" +"This will be used as the 'Initiating Party Identifier' in the PAIN files " +"generated by Odoo." msgstr "" -"Dit veld wordt gebruikt als de 'Instruction Priority' in het gegenereerde " -"PAIN bestand." #. module: account_banking_pain_base -#: view:res.company:0 -msgid "Payment Initiation" -msgstr "Payment Initiation" +#: help:payment.mode,initiating_party_identifier:0 +msgid "" +"This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\n" +"Common format (13): \n" +"- Country code (2, optional)\n" +"- Company idenfier (N, VAT)\n" +"- Service suffix (N, issued by bank)" +msgstr "" #. module: account_banking_pain_base -#: selection:payment.line,priority:0 -msgid "High" -msgstr "Hoog" +#: help:res.company,initiating_party_issuer:0 +msgid "" +"This will be used as the 'Initiating Party Issuer' in the PAIN files " +"generated by Odoo." +msgstr "" #. module: account_banking_pain_base -#: field:payment.mode,convert_to_ascii:0 -msgid "Convert to ASCII" -msgstr "Converteer naar ASCII" +#: help:payment.mode,initiating_party_issuer:0 +msgid "" +"This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\n" +"Common format (13): \n" +"- Country code (2, optional)\n" +"- Company idenfier (N, VAT)\n" +"- Service suffix (N, issued by bank)" +msgstr "" diff --git a/account_banking_pain_base/i18n/pt_BR.po b/account_banking_pain_base/i18n/pt_BR.po new file mode 100644 index 000000000..4195a1134 --- /dev/null +++ b/account_banking_pain_base/i18n/pt_BR.po @@ -0,0 +1,220 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_pain_base +# +# Translators: +# danimaribeiro , 2016 +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 01:03+0000\n" +"Last-Translator: danimaribeiro \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_res_partner_bank +msgid "Bank Accounts" +msgstr "Contas bancárias" + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "Linhas de pagamento bancária" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:62 +#, python-format +msgid "Cannot compute the '%s' of the Payment Line with reference '%s'." +msgstr "Não foi possível calcular a '%s' da linha de pagamento com referência '%s'" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:67 +#, python-format +msgid "Cannot compute the '%s'." +msgstr "Não foi possível computar o '%s'" + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_res_company +msgid "Companies" +msgstr "Empresas" + +#. module: account_banking_pain_base +#: field:payment.mode,convert_to_ascii:0 +msgid "Convert to ASCII" +msgstr "Converter para ASCII" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:282 +#, python-format +msgid "Error:" +msgstr "Erro:" + +#. module: account_banking_pain_base +#: selection:payment.line,priority:0 +msgid "High" +msgstr "Alto" + +#. module: account_banking_pain_base +#: field:banking.export.pain,id:0 +msgid "ID" +msgstr "ID" + +#. module: account_banking_pain_base +#: help:payment.mode,convert_to_ascii:0 +msgid "" +"If active, Odoo will convert each accented caracter to the corresponding " +"unaccented caracter, so that only ASCII caracters are used in the generated " +"PAIN file." +msgstr "" + +#. module: account_banking_pain_base +#: field:payment.mode,initiating_party_identifier:0 +#: field:res.company,initiating_party_identifier:0 +msgid "Initiating Party Identifier" +msgstr "" + +#. module: account_banking_pain_base +#: field:payment.mode,initiating_party_issuer:0 +#: field:res.company,initiating_party_issuer:0 +msgid "Initiating Party Issuer" +msgstr "" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:256 +#, python-format +msgid "" +"Missing 'Initiating Party Issuer' and/or 'Initiating Party Identifier' for " +"the company '%s'. Both fields must have a value." +msgstr "" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:358 +#, python-format +msgid "" +"Missing 'Structured Communication Type' on payment line with reference '%s'." +msgstr "" + +#. module: account_banking_pain_base +#: selection:payment.line,priority:0 +msgid "Normal" +msgstr "Normal" + +#. module: account_banking_pain_base +#: view:res.company:account_banking_pain_base.view_company_form +msgid "Payment Initiation" +msgstr "" + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_payment_line +msgid "Payment Line" +msgstr "Linha de Pagamento" + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_payment_mode +msgid "Payment Mode" +msgstr "Modo de pagamento" + +#. module: account_banking_pain_base +#: field:payment.line,priority:0 +msgid "Priority" +msgstr "" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:131 +#, python-format +msgid "SEPA File" +msgstr "" + +#. module: account_banking_pain_base +#: view:payment.mode:account_banking_pain_base.view_payment_mode_form_inherit +msgid "SEPA identifiers" +msgstr "" + +#. module: account_banking_pain_base +#: field:payment.line,struct_communication_type:0 +msgid "Structured Communication Type" +msgstr "" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:75 +#, python-format +msgid "The '%s' is empty or 0. It should have a non-null value." +msgstr "" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:283 +#, python-format +msgid "" +"The bank account with IBAN '%s' of partner '%s' must have an associated BIC " +"because it is a cross-border SEPA operation." +msgstr "" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:96 +#, 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_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:70 +#, python-format +msgid "The type of the field '%s' is %s. It should be a string or unicode." +msgstr "" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:35 +#, python-format +msgid "This IBAN is not valid : %s" +msgstr "" + +#. module: account_banking_pain_base +#: help:payment.line,priority:0 +msgid "" +"This field will be used as the 'Instruction Priority' in the generated PAIN " +"file." +msgstr "" + +#. module: account_banking_pain_base +#: help:res.company,initiating_party_identifier:0 +msgid "" +"This will be used as the 'Initiating Party Identifier' in the PAIN files " +"generated by Odoo." +msgstr "" + +#. module: account_banking_pain_base +#: help:payment.mode,initiating_party_identifier:0 +msgid "" +"This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\n" +"Common format (13): \n" +"- Country code (2, optional)\n" +"- Company idenfier (N, VAT)\n" +"- Service suffix (N, issued by bank)" +msgstr "" + +#. module: account_banking_pain_base +#: help:res.company,initiating_party_issuer:0 +msgid "" +"This will be used as the 'Initiating Party Issuer' in the PAIN files " +"generated by Odoo." +msgstr "" + +#. module: account_banking_pain_base +#: help:payment.mode,initiating_party_issuer:0 +msgid "" +"This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\n" +"Common format (13): \n" +"- Country code (2, optional)\n" +"- Company idenfier (N, VAT)\n" +"- Service suffix (N, issued by bank)" +msgstr "" diff --git a/account_banking_pain_base/i18n/sl.po b/account_banking_pain_base/i18n/sl.po new file mode 100644 index 000000000..8e31deb5d --- /dev/null +++ b/account_banking_pain_base/i18n/sl.po @@ -0,0 +1,220 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_pain_base +# +# Translators: +# Matjaž Mozetič , 2016 +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-09 06:21+0000\n" +"PO-Revision-Date: 2016-04-15 11:04+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_res_partner_bank +msgid "Bank Accounts" +msgstr "Bančni računi" + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "Postavke bančnih plačil" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:62 +#, python-format +msgid "Cannot compute the '%s' of the Payment Line with reference '%s'." +msgstr "Ne morem izračunati '%s' plačilne postavke s sklicem '%s'." + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:67 +#, python-format +msgid "Cannot compute the '%s'." +msgstr "Ne morem izračunati '%s'." + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_res_company +msgid "Companies" +msgstr "Družbe" + +#. module: account_banking_pain_base +#: field:payment.mode,convert_to_ascii:0 +msgid "Convert to ASCII" +msgstr "Pretvori v ASCII" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:282 +#, python-format +msgid "Error:" +msgstr "Napaka:" + +#. module: account_banking_pain_base +#: selection:payment.line,priority:0 +msgid "High" +msgstr "Visoka" + +#. module: account_banking_pain_base +#: field:banking.export.pain,id:0 +msgid "ID" +msgstr "ID" + +#. module: account_banking_pain_base +#: help:payment.mode,convert_to_ascii:0 +msgid "" +"If active, Odoo will convert each accented caracter to the corresponding " +"unaccented caracter, so that only ASCII caracters are used in the generated " +"PAIN file." +msgstr "Če aktivno, Odoo pretvori vsak naglašen znak v ustrezen nenaglašen znak, tako, da se uporabi le ASCII znake v ustvarjeni PAIN datoteki." + +#. module: account_banking_pain_base +#: field:payment.mode,initiating_party_identifier:0 +#: field:res.company,initiating_party_identifier:0 +msgid "Initiating Party Identifier" +msgstr "Identifikator začetne stranke" + +#. module: account_banking_pain_base +#: field:payment.mode,initiating_party_issuer:0 +#: field:res.company,initiating_party_issuer:0 +msgid "Initiating Party Issuer" +msgstr "Izdajatelj začetne stranke" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:256 +#, python-format +msgid "" +"Missing 'Initiating Party Issuer' and/or 'Initiating Party Identifier' for " +"the company '%s'. Both fields must have a value." +msgstr "Manjkajoči 'Izdajatelj začetne stranke' in/ali 'Identifikator začetne stranke' pri družbi '%s'. Obe polji morata vsebovati vrednost." + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:358 +#, python-format +msgid "" +"Missing 'Structured Communication Type' on payment line with reference '%s'." +msgstr "Manjkajoč 'Tip strukturirane komunikacije' pri plačilni postavki s sklicem '%s'." + +#. module: account_banking_pain_base +#: selection:payment.line,priority:0 +msgid "Normal" +msgstr "Običajna" + +#. module: account_banking_pain_base +#: view:res.company:account_banking_pain_base.view_company_form +msgid "Payment Initiation" +msgstr "Začetek plačil" + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_payment_line +msgid "Payment Line" +msgstr "Plačilna postavka" + +#. module: account_banking_pain_base +#: model:ir.model,name:account_banking_pain_base.model_payment_mode +msgid "Payment Mode" +msgstr "Metoda plačila" + +#. module: account_banking_pain_base +#: field:payment.line,priority:0 +msgid "Priority" +msgstr "Prioriteta" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:131 +#, python-format +msgid "SEPA File" +msgstr "SEPA datoteka" + +#. module: account_banking_pain_base +#: view:payment.mode:account_banking_pain_base.view_payment_mode_form_inherit +msgid "SEPA identifiers" +msgstr "SEPA identifikatorji" + +#. module: account_banking_pain_base +#: field:payment.line,struct_communication_type:0 +msgid "Structured Communication Type" +msgstr "Tip strukturirane komunikacije" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:75 +#, python-format +msgid "The '%s' is empty or 0. It should have a non-null value." +msgstr "'%s' je prazno ali 0. Vsebovati bi moralo ne ničelno vrednost." + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:283 +#, python-format +msgid "" +"The bank account with IBAN '%s' of partner '%s' must have an associated BIC " +"because it is a cross-border SEPA operation." +msgstr "Bančni račun z IBAN '%s' partnerja '%s' mora vsebovati povezani BIC, ker gre za čezmejno SEPA operacijo." + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:96 +#, 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 "Ustvarjena XML datoteka ni v skladu z uradno definicijo XML sheme. Ustvarjena XML datoteka in celotna napaka sta zapisani v strežniške dnevnike. Tu je napaka, ki bi lahko razjasnila, v čem je vzrok težave : %s" + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:70 +#, python-format +msgid "The type of the field '%s' is %s. It should be a string or unicode." +msgstr "Tip polja '%s' je %s. Moral bi biti niz ali unicode." + +#. module: account_banking_pain_base +#: code:addons/account_banking_pain_base/models/banking_export_pain.py:35 +#, python-format +msgid "This IBAN is not valid : %s" +msgstr "Ta IBAN ni veljaven : %s" + +#. module: account_banking_pain_base +#: help:payment.line,priority:0 +msgid "" +"This field will be used as the 'Instruction Priority' in the generated PAIN " +"file." +msgstr "To polje bo uporabljeno kot 'Prioriteta navodil' v ustvarjeni PAIN datoteki." + +#. module: account_banking_pain_base +#: help:res.company,initiating_party_identifier:0 +msgid "" +"This will be used as the 'Initiating Party Identifier' in the PAIN files " +"generated by Odoo." +msgstr "To se uporabi kot 'Identifikator začetne stranke' v PAIN datotekah, ki jih ustvari Odoo." + +#. module: account_banking_pain_base +#: help:payment.mode,initiating_party_identifier:0 +msgid "" +"This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\n" +"Common format (13): \n" +"- Country code (2, optional)\n" +"- Company idenfier (N, VAT)\n" +"- Service suffix (N, issued by bank)" +msgstr "To bo uporabljeno kot 'Identifikator začetne stranke' v PAIN datotekah, ki jih ustvari Odoo. Če ni določeno, se uporabi 'Identifikator začetne stranke' iz obrazca družbe.\nObičajni format (13): \n- Koda države (2, optional)\n- Identifikator družbe (ID za DDV)\n- Pripona storitve (številka, ki jo poda banka)" + +#. module: account_banking_pain_base +#: help:res.company,initiating_party_issuer:0 +msgid "" +"This will be used as the 'Initiating Party Issuer' in the PAIN files " +"generated by Odoo." +msgstr "To se uporabi kot 'Izdajatelj začetne stranke' v PAIN datotekah, ki jih ustvari Odoo." + +#. module: account_banking_pain_base +#: help:payment.mode,initiating_party_issuer:0 +msgid "" +"This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\n" +"Common format (13): \n" +"- Country code (2, optional)\n" +"- Company idenfier (N, VAT)\n" +"- Service suffix (N, issued by bank)" +msgstr "To bo uporabljeno kot 'Izdajatelj začetne stranke' v PAIN datotekah, ki jih ustvari Odoo. Če ni določeno, se uporabi 'Identifikator začetne stranke' iz obrazca družbe.\nObičajni format (13): \n- Koda države (2, optional)\n- Identifikator družbe (ID za DDV)\n- Pripona storitve (številka, ki jo poda banka)" diff --git a/account_banking_pain_base/migrations/8.0.0.2/post-migration.py b/account_banking_pain_base/migrations/8.0.0.2/post-migration.py index bb6322681..1a2815795 100644 --- a/account_banking_pain_base/migrations/8.0.0.2/post-migration.py +++ b/account_banking_pain_base/migrations/8.0.0.2/post-migration.py @@ -1,23 +1,6 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2015 Akretion (http://www.akretion.com/) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# © 2015 Akretion - Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from openerp.addons.account_banking_pain_base.post_install\ import set_default_initiating_party diff --git a/account_banking_pain_base/models/__init__.py b/account_banking_pain_base/models/__init__.py index 8a4154482..1e4dfae26 100644 --- a/account_banking_pain_base/models/__init__.py +++ b/account_banking_pain_base/models/__init__.py @@ -1,27 +1,10 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# PAIN Base module for Odoo -# Copyright (C) 2013 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- +# © 2013-2016 Akretion - Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from . import payment_line -from . import payment_mode +from . import account_payment_line +from . import account_payment_order +from . import bank_payment_line +from . import account_payment_mode from . import res_company -from . import banking_export_pain -from . import res_partner_bank +from . import account_payment_method diff --git a/account_banking_pain_base/models/account_payment_line.py b/account_banking_pain_base/models/account_payment_line.py new file mode 100644 index 000000000..f599860e9 --- /dev/null +++ b/account_banking_pain_base/models/account_payment_line.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# © 2013-2016 Akretion - Alexis de Lattre +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields + + +class AccountPaymentLine(models.Model): + _inherit = 'account.payment.line' + + priority = fields.Selection([ + ('NORM', 'Normal'), + ('HIGH', 'High')], + string='Priority', default='NORM', + help="This field will be used as 'Instruction Priority' in " + "the generated PAIN file.") + # local_instrument is used in some countries, for example + # switzerland, cf l10n_ch_sepa that adds some entries in + # the selection field + local_instrument = fields.Selection([], string='Local Instrument') + # PAIN allows 140 characters + communication = fields.Char(size=140) + # The field struct_communication_type has been dropped in v9 + # We now use communication_type ; you should add an option + # in communication_type with selection_add=[] + communication_type = fields.Selection(selection_add=[('ISO', 'ISO')]) diff --git a/account_banking_pain_base/models/account_payment_method.py b/account_banking_pain_base/models/account_payment_method.py new file mode 100644 index 000000000..9d9499036 --- /dev/null +++ b/account_banking_pain_base/models/account_payment_method.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api, _ +from openerp.exceptions import UserError + + +class AccountPaymentMethod(models.Model): + _inherit = 'account.payment.method' + + pain_version = fields.Selection([], string='PAIN Version') + convert_to_ascii = fields.Boolean( + string='Convert to ASCII', default=True, + help="If active, Odoo will convert each accented character to " + "the corresponding unaccented character, so that only ASCII " + "characters are used in the generated PAIN file.") + + @api.multi + def get_xsd_file_path(self): + """This method is designed to be inherited in the SEPA modules""" + self.ensure_one() + raise UserError(_( + "No XSD file path found for payment method '%s'") % self.name) diff --git a/account_banking_pain_base/models/account_payment_mode.py b/account_banking_pain_base/models/account_payment_mode.py new file mode 100644 index 000000000..e0e628a59 --- /dev/null +++ b/account_banking_pain_base/models/account_payment_mode.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# © 2013-2016 Akretion - Alexis de Lattre +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2016 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields + + +class AccountPaymentMode(models.Model): + _inherit = 'account.payment.mode' + + initiating_party_issuer = fields.Char( + string='Initiating Party Issuer', size=35, + help="This will be used as the 'Initiating Party Issuer' in the " + "PAIN files generated by Odoo. If not defined, Initiating Party " + "Issuer from company will be used.\n" + "Common format (13): \n" + "- Country code (2, optional)\n" + "- Company idenfier (N, VAT)\n" + "- Service suffix (N, issued by bank)") + initiating_party_identifier = fields.Char( + string='Initiating Party Identifier', size=35, + help="This will be used as the 'Initiating Party Identifier' in " + "the PAIN files generated by Odoo. If not defined, Initiating Party " + "Identifier from company will be used.\n" + "Common format (13): \n" + "- Country code (2, optional)\n" + "- Company idenfier (N, VAT)\n" + "- Service suffix (N, issued by bank)") diff --git a/account_banking_pain_base/models/account_payment_order.py b/account_banking_pain_base/models/account_payment_order.py new file mode 100644 index 000000000..917df61dc --- /dev/null +++ b/account_banking_pain_base/models/account_payment_order.py @@ -0,0 +1,483 @@ +# -*- coding: utf-8 -*- +# © 2013-2016 Akretion - Alexis de Lattre +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2016 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api, _ +from openerp.exceptions import UserError +from openerp.tools.safe_eval import safe_eval +from datetime import datetime +from lxml import etree +from openerp import tools +import logging + + +try: + from unidecode import unidecode +except ImportError: + unidecode = None + +logger = logging.getLogger(__name__) + + +class AccountPaymentOrder(models.Model): + _inherit = 'account.payment.order' + + sepa = fields.Boolean( + compute='compute_sepa', readonly=True, string="SEPA Payment") + charge_bearer = fields.Selection([ + ('SLEV', 'Following Service Level'), + ('SHAR', 'Shared'), + ('CRED', 'Borne by Creditor'), + ('DEBT', 'Borne by Debtor')], string='Charge Bearer', + default='SLEV', readonly=True, + states={'draft': [('readonly', False)], 'open': [('readonly', False)]}, + track_visibility='onchange', + 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.") + batch_booking = fields.Boolean( + string='Batch Booking', readonly=True, + states={'draft': [('readonly', False)], 'open': [('readonly', False)]}, + track_visibility='onchange', + 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.") + + @api.multi + @api.depends( + 'company_partner_bank_id.acc_type', + 'payment_line_ids.currency_id', + 'payment_line_ids.partner_bank_id.acc_type') + def compute_sepa(self): + eur = self.env.ref('base.EUR') + for order in self: + sepa = True + if order.company_partner_bank_id.acc_type != 'iban': + sepa = False + for pline in order.payment_line_ids: + if pline.currency_id != eur: + sepa = False + break + if pline.partner_bank_id.acc_type != 'iban': + sepa = False + break + sepa = order.compute_sepa_final_hook(sepa) + self.sepa = sepa + + @api.multi + def compute_sepa_final_hook(self, sepa): + self.ensure_one() + return sepa + + @api.model + def _prepare_field(self, field_name, field_value, eval_ctx, + max_size=0, gen_args=None): + """This function is designed to be inherited !""" + if gen_args is None: + gen_args = {} + assert isinstance(eval_ctx, dict), 'eval_ctx must contain a dict' + try: + value = safe_eval(field_value, eval_ctx) + # SEPA uses XML ; XML = UTF-8 ; UTF-8 = support for all characters + # But we are dealing with banks... + # and many banks don't want non-ASCCI characters ! + # cf section 1.4 "Character set" of the SEPA Credit Transfer + # Scheme Customer-to-bank guidelines + if gen_args.get('convert_to_ascii'): + value = unidecode(value) + unallowed_ascii_chars = [ + '"', '#', '$', '%', '&', '*', ';', '<', '>', '=', '@', + '[', ']', '^', '_', '`', '{', '}', '|', '~', '\\', '!'] + for unallowed_ascii_char in unallowed_ascii_chars: + value = value.replace(unallowed_ascii_char, '-') + except: + line = eval_ctx.get('line') + if line: + raise UserError( + _("Cannot compute the '%s' of the Payment Line with " + "reference '%s'.") + % (field_name, line.name)) + else: + raise UserError( + _("Cannot compute the '%s'.") % field_name) + if not isinstance(value, (str, unicode)): + raise UserError( + _("The type of the field '%s' is %s. It should be a string " + "or unicode.") + % (field_name, type(value))) + if not value: + raise UserError( + _("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 + + @api.model + def _validate_xml(self, xml_string, gen_args): + xsd_etree_obj = etree.parse( + tools.file_open(gen_args['pain_xsd_file'])) + 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 UserError( + _("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") + % unicode(e)) + return True + + @api.multi + def finalize_sepa_file_creation(self, xml_root, gen_args): + xml_string = etree.tostring( + xml_root, pretty_print=True, encoding='UTF-8', + xml_declaration=True) + logger.debug( + "Generated SEPA XML file in format %s below" + % gen_args['pain_flavor']) + logger.debug(xml_string) + self._validate_xml(xml_string, gen_args) + + filename = '%s%s.xml' % (gen_args['file_prefix'], self.name) + return (xml_string, filename) + + @api.multi + def generate_pain_nsmap(self): + self.ensure_one() + pain_flavor = self.payment_mode_id.payment_method_id.pain_version + nsmap = { + 'xsi': 'http://www.w3.org/2001/XMLSchema-instance', + None: 'urn:iso:std:iso:20022:tech:xsd:%s' % pain_flavor, + } + return nsmap + + @api.multi + def generate_pain_attrib(self): + self.ensure_one() + return {} + + @api.model + def generate_group_header_block(self, parent_node, gen_args): + group_header = etree.SubElement(parent_node, 'GrpHdr') + message_identification = etree.SubElement( + group_header, 'MsgId') + message_identification.text = self._prepare_field( + 'Message Identification', + 'self.name', + {'self': self}, 35, gen_args=gen_args) + creation_date_time = etree.SubElement(group_header, 'CreDtTm') + creation_date_time.text = datetime.strftime( + datetime.today(), '%Y-%m-%dT%H:%M:%S') + if gen_args.get('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 = unicode(self.batch_booking).lower() + nb_of_transactions = etree.SubElement( + group_header, 'NbOfTxs') + control_sum = etree.SubElement(group_header, 'CtrlSum') + # Grpg removed in pain.001.001.03 + if gen_args.get('pain_flavor') == 'pain.001.001.02': + grouping = etree.SubElement(group_header, 'Grpg') + grouping.text = 'GRPD' + self.generate_initiating_party_block(group_header, gen_args) + return group_header, nb_of_transactions, control_sum + + @api.model + def generate_start_payment_info_block( + self, parent_node, payment_info_ident, + priority, local_instrument, sequence_type, requested_date, + eval_ctx, gen_args): + payment_info = etree.SubElement(parent_node, 'PmtInf') + payment_info_identification = etree.SubElement( + payment_info, 'PmtInfId') + payment_info_identification.text = self._prepare_field( + 'Payment Information Identification', + payment_info_ident, eval_ctx, 35, gen_args=gen_args) + payment_method = etree.SubElement(payment_info, 'PmtMtd') + payment_method.text = gen_args['payment_method'] + nb_of_transactions = False + control_sum = False + if gen_args.get('pain_flavor') != 'pain.001.001.02': + batch_booking = etree.SubElement(payment_info, 'BtchBookg') + batch_booking.text = unicode(self.batch_booking).lower() + # The "SEPA Customer-to-bank + # Implementation guidelines" for SCT and SDD says that control sum + # and nb_of_transactions should be present + # at both "group header" level and "payment info" level + nb_of_transactions = etree.SubElement( + payment_info, 'NbOfTxs') + control_sum = etree.SubElement(payment_info, 'CtrlSum') + payment_type_info = etree.SubElement( + payment_info, 'PmtTpInf') + if priority and gen_args['payment_method'] != 'DD': + instruction_priority = etree.SubElement( + payment_type_info, 'InstrPrty') + instruction_priority.text = priority + if self.sepa: + service_level = etree.SubElement(payment_type_info, 'SvcLvl') + service_level_code = etree.SubElement(service_level, 'Cd') + service_level_code.text = 'SEPA' + if local_instrument: + local_instrument_root = etree.SubElement( + payment_type_info, 'LclInstrm') + if gen_args.get('local_instrument_type') == 'proprietary': + local_instr_value = etree.SubElement( + local_instrument_root, 'Prtry') + else: + local_instr_value = etree.SubElement( + local_instrument_root, 'Cd') + local_instr_value.text = local_instrument + if sequence_type: + sequence_type_node = etree.SubElement( + payment_type_info, 'SeqTp') + sequence_type_node.text = sequence_type + + if gen_args['payment_method'] == 'DD': + request_date_tag = 'ReqdColltnDt' + else: + request_date_tag = 'ReqdExctnDt' + requested_date_node = etree.SubElement( + payment_info, request_date_tag) + requested_date_node.text = requested_date + return payment_info, nb_of_transactions, control_sum + + @api.model + def _must_have_initiating_party(self, gen_args): + '''This method is designed to be inherited in localization modules for + countries in which the initiating party is required''' + return False + + @api.model + def generate_initiating_party_block(self, parent_node, gen_args): + my_company_name = self._prepare_field( + 'Company Name', + 'self.company_partner_bank_id.partner_id.name', + {'self': self}, gen_args.get('name_maxsize'), gen_args=gen_args) + initiating_party = etree.SubElement(parent_node, 'InitgPty') + initiating_party_name = etree.SubElement(initiating_party, 'Nm') + initiating_party_name.text = my_company_name + initiating_party_identifier = ( + self.payment_mode_id.initiating_party_identifier or + self.payment_mode_id.company_id.initiating_party_identifier) + initiating_party_issuer = ( + self.payment_mode_id.initiating_party_issuer or + self.payment_mode_id.company_id.initiating_party_issuer) + # in pain.008.001.02.ch.01.xsd files they use + # initiating_party_identifier but not initiating_party_issuer + if initiating_party_identifier: + iniparty_id = etree.SubElement(initiating_party, 'Id') + iniparty_org_id = etree.SubElement(iniparty_id, 'OrgId') + iniparty_org_other = etree.SubElement(iniparty_org_id, 'Othr') + iniparty_org_other_id = etree.SubElement(iniparty_org_other, 'Id') + iniparty_org_other_id.text = initiating_party_identifier + if initiating_party_issuer: + iniparty_org_other_issuer = etree.SubElement( + iniparty_org_other, 'Issr') + iniparty_org_other_issuer.text = initiating_party_issuer + elif self._must_have_initiating_party(gen_args): + raise UserError( + _("Missing 'Initiating Party Issuer' and/or " + "'Initiating Party Identifier' for the company '%s'. " + "Both fields must have a value.") + % self.company_id.name) + return True + + @api.model + def generate_party_agent( + self, parent_node, party_type, order, partner_bank, gen_args, + bank_line=None): + """Generate the piece of the XML file corresponding to BIC + This code is mutualized between TRF and DD + Starting from Feb 1st 2016, we should be able to do + cross-border SEPA transfers without BIC, cf + http://www.europeanpaymentscouncil.eu/index.cfm/ + sepa-credit-transfer/iban-and-bic/ + In some localization (l10n_ch_sepa for example), they need the + bank_line argument""" + assert order in ('B', 'C'), "Order can be 'B' or 'C'" + if partner_bank.bank_bic: + party_agent = etree.SubElement(parent_node, '%sAgt' % party_type) + party_agent_institution = etree.SubElement( + party_agent, 'FinInstnId') + party_agent_bic = etree.SubElement( + party_agent_institution, gen_args.get('bic_xml_tag')) + party_agent_bic.text = partner_bank.bank_bic + else: + if order == 'B' or ( + order == 'C' and gen_args['payment_method'] == 'DD'): + party_agent = etree.SubElement( + parent_node, '%sAgt' % party_type) + party_agent_institution = etree.SubElement( + party_agent, 'FinInstnId') + party_agent_other = etree.SubElement( + party_agent_institution, 'Othr') + party_agent_other_identification = etree.SubElement( + party_agent_other, 'Id') + party_agent_other_identification.text = 'NOTPROVIDED' + # for Credit Transfers, in the 'C' block, if BIC is not provided, + # we should not put the 'Creditor Agent' block at all, + # as per the guidelines of the EPC + return True + + @api.model + def generate_party_acc_number( + self, parent_node, party_type, order, partner_bank, gen_args, + bank_line=None): + party_account = etree.SubElement( + parent_node, '%sAcct' % party_type) + party_account_id = etree.SubElement(party_account, 'Id') + if partner_bank.acc_type == 'iban': + party_account_iban = etree.SubElement( + party_account_id, 'IBAN') + party_account_iban.text = partner_bank.sanitized_acc_number + else: + party_account_other = etree.SubElement( + party_account_id, 'Othr') + party_account_other_id = etree.SubElement( + party_account_other, 'Id') + party_account_other_id.text = partner_bank.sanitized_acc_number + return True + + @api.model + def generate_party_block( + self, parent_node, party_type, order, partner_bank, gen_args, + bank_line=None): + """Generate the piece of the XML file corresponding to Name+IBAN+BIC + This code is mutualized between TRF and DD + In some localization (l10n_ch_sepa for example), they need the + bank_line argument""" + assert order in ('B', 'C'), "Order can be 'B' or 'C'" + if party_type == 'Cdtr': + party_type_label = 'Creditor' + elif party_type == 'Dbtr': + party_type_label = 'Debtor' + name = 'partner_bank.partner_id.name' + eval_ctx = {'partner_bank': partner_bank} + party_name = self._prepare_field( + '%s Name' % party_type_label, name, eval_ctx, + gen_args.get('name_maxsize'), gen_args=gen_args) + # At C level, the order is : BIC, Name, IBAN + # At B level, the order is : Name, IBAN, BIC + if order == 'C': + self.generate_party_agent( + parent_node, party_type, order, partner_bank, gen_args, + bank_line=bank_line) + party = etree.SubElement(parent_node, party_type) + party_nm = etree.SubElement(party, 'Nm') + party_nm.text = party_name + partner = partner_bank.partner_id + if partner.country_id: + postal_address = etree.SubElement(party, 'PstlAdr') + country = etree.SubElement(postal_address, 'Ctry') + country.text = self._prepare_field( + 'Country', 'partner.country_id.code', + {'partner': partner}, 2, gen_args=gen_args) + if partner.street: + adrline1 = etree.SubElement(postal_address, 'AdrLine') + adrline1.text = self._prepare_field( + 'Adress Line1', 'partner.street', + {'partner': partner}, 70, gen_args=gen_args) + if partner.city and partner.zip: + adrline2 = etree.SubElement(postal_address, 'AdrLine') + adrline2.text = self._prepare_field( + 'Address Line2', "partner.zip + ' ' + partner.city", + {'partner': partner}, 70, gen_args=gen_args) + + self.generate_party_acc_number( + parent_node, party_type, order, partner_bank, gen_args, + bank_line=bank_line) + + if order == 'B': + self.generate_party_agent( + parent_node, party_type, order, partner_bank, gen_args, + bank_line=bank_line) + return True + + @api.model + def generate_remittance_info_block(self, parent_node, line, gen_args): + remittance_info = etree.SubElement( + parent_node, 'RmtInf') + if line.communication_type == 'normal': + remittance_info_unstructured = etree.SubElement( + remittance_info, 'Ustrd') + remittance_info_unstructured.text = \ + self._prepare_field( + 'Remittance Unstructured Information', + 'line.communication', {'line': line}, 140, + gen_args=gen_args) + else: + remittance_info_structured = etree.SubElement( + remittance_info, 'Strd') + creditor_ref_information = etree.SubElement( + remittance_info_structured, 'CdtrRefInf') + if gen_args.get('pain_flavor') == 'pain.001.001.02': + creditor_ref_info_type = etree.SubElement( + creditor_ref_information, 'CdtrRefTp') + creditor_ref_info_type_code = etree.SubElement( + creditor_ref_info_type, 'Cd') + creditor_ref_info_type_code.text = 'SCOR' + # SCOR means "Structured Communication Reference" + creditor_ref_info_type_issuer = etree.SubElement( + creditor_ref_info_type, 'Issr') + creditor_ref_info_type_issuer.text = \ + line.communication_type + creditor_reference = etree.SubElement( + creditor_ref_information, 'CdtrRef') + else: + if gen_args.get('structured_remittance_issuer', True): + creditor_ref_info_type = etree.SubElement( + creditor_ref_information, 'Tp') + creditor_ref_info_type_or = etree.SubElement( + creditor_ref_info_type, 'CdOrPrtry') + creditor_ref_info_type_code = etree.SubElement( + creditor_ref_info_type_or, 'Cd') + creditor_ref_info_type_code.text = 'SCOR' + creditor_ref_info_type_issuer = etree.SubElement( + creditor_ref_info_type, 'Issr') + creditor_ref_info_type_issuer.text = \ + line.communication_type + + creditor_reference = etree.SubElement( + creditor_ref_information, 'Ref') + + creditor_reference.text = \ + self._prepare_field( + 'Creditor Structured Reference', + 'line.communication', {'line': line}, 35, + gen_args=gen_args) + return True + + @api.model + def generate_creditor_scheme_identification( + self, parent_node, identification, identification_label, + eval_ctx, scheme_name_proprietary, gen_args): + csi_id = etree.SubElement(parent_node, 'Id') + csi_privateid = etree.SubElement(csi_id, 'PrvtId') + csi_other = etree.SubElement(csi_privateid, 'Othr') + csi_other_id = etree.SubElement(csi_other, 'Id') + csi_other_id.text = self._prepare_field( + identification_label, identification, eval_ctx, gen_args=gen_args) + csi_scheme_name = etree.SubElement(csi_other, 'SchmeNm') + csi_scheme_name_proprietary = etree.SubElement( + csi_scheme_name, 'Prtry') + csi_scheme_name_proprietary.text = scheme_name_proprietary + return True diff --git a/account_banking_pain_base/models/bank_payment_line.py b/account_banking_pain_base/models/bank_payment_line.py new file mode 100644 index 000000000..bf802ce6e --- /dev/null +++ b/account_banking_pain_base/models/bank_payment_line.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# © 2013-2015 Akretion - Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api + + +class BankPaymentLine(models.Model): + _inherit = 'bank.payment.line' + + priority = fields.Selection( + related='payment_line_ids.priority', string='Priority') + local_instrument = fields.Selection( + related='payment_line_ids.local_instrument', + string='Local Instrument') + + @api.model + def same_fields_payment_line_and_bank_payment_line(self): + res = super(BankPaymentLine, self).\ + same_fields_payment_line_and_bank_payment_line() + res += ['priority', 'local_instrument'] + return res diff --git a/account_banking_pain_base/models/banking_export_pain.py b/account_banking_pain_base/models/banking_export_pain.py deleted file mode 100644 index 0ff137773..000000000 --- a/account_banking_pain_base/models/banking_export_pain.py +++ /dev/null @@ -1,425 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# PAIN Base module for Odoo -# Copyright (C) 2013-2015 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, api, _ -from openerp.exceptions import Warning -from openerp.tools.safe_eval import safe_eval -from datetime import datetime -from lxml import etree -from openerp import tools -import logging -import base64 - - -try: - from unidecode import unidecode -except ImportError: - unidecode = None - -logger = logging.getLogger(__name__) - - -class BankingExportPain(models.AbstractModel): - _name = 'banking.export.pain' - - @api.model - def _validate_iban(self, iban): - """if IBAN is valid, returns IBAN - if IBAN is NOT valid, raises an error message""" - if self.env['res.partner.bank'].is_iban_valid(iban): - return iban.replace(' ', '') - else: - raise Warning(_("This IBAN is not valid : %s") % iban) - - @api.model - def _prepare_field(self, field_name, field_value, eval_ctx, - max_size=0, gen_args=None): - """This function is designed to be inherited !""" - if gen_args is None: - gen_args = {} - assert isinstance(eval_ctx, dict), 'eval_ctx must contain a dict' - try: - value = safe_eval(field_value, eval_ctx) - # SEPA uses XML ; XML = UTF-8 ; UTF-8 = support for all characters - # But we are dealing with banks... - # and many banks don't want non-ASCCI characters ! - # cf section 1.4 "Character set" of the SEPA Credit Transfer - # Scheme Customer-to-bank guidelines - if gen_args.get('convert_to_ascii'): - value = unidecode(value) - unallowed_ascii_chars = [ - '"', '#', '$', '%', '&', '*', ';', '<', '>', '=', '@', - '[', ']', '^', '_', '`', '{', '}', '|', '~', '\\', '!'] - for unallowed_ascii_char in unallowed_ascii_chars: - value = value.replace(unallowed_ascii_char, '-') - except: - line = eval_ctx.get('line') - if line: - raise Warning( - _("Cannot compute the '%s' of the Payment Line with " - "reference '%s'.") - % (field_name, line.name)) - else: - raise Warning( - _("Cannot compute the '%s'.") % field_name) - if not isinstance(value, (str, unicode)): - raise Warning( - _("The type of the field '%s' is %s. It should be a string " - "or unicode.") - % (field_name, type(value))) - if not value: - raise Warning( - _("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 - - @api.model - def _validate_xml(self, xml_string, gen_args): - xsd_etree_obj = etree.parse( - tools.file_open(gen_args['pain_xsd_file'])) - 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 Warning( - _("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") - % unicode(e)) - return True - - @api.multi - def finalize_sepa_file_creation( - self, xml_root, total_amount, transactions_count, gen_args): - xml_string = etree.tostring( - xml_root, pretty_print=True, encoding='UTF-8', - xml_declaration=True) - logger.debug( - "Generated SEPA XML file in format %s below" - % gen_args['pain_flavor']) - logger.debug(xml_string) - self._validate_xml(xml_string, gen_args) - - order_ref = [] - for order in self.payment_order_ids: - if order.reference: - order_ref.append(order.reference.replace('/', '-')) - filename = '%s%s.xml' % (gen_args['file_prefix'], '-'.join(order_ref)) - - self.write({ - 'nb_transactions': transactions_count, - 'total_amount': total_amount, - 'filename': filename, - 'file': base64.encodestring(xml_string), - 'state': 'finish', - }) - - action = { - 'name': _('SEPA File'), - 'type': 'ir.actions.act_window', - 'view_type': 'form', - 'view_mode': 'form,tree', - 'res_model': self._name, - 'res_id': self.ids[0], - 'target': 'new', - } - return action - - @api.model - def generate_group_header_block(self, parent_node, gen_args): - group_header_1_0 = etree.SubElement(parent_node, 'GrpHdr') - message_identification_1_1 = etree.SubElement( - group_header_1_0, 'MsgId') - message_identification_1_1.text = self._prepare_field( - 'Message Identification', - 'self.payment_order_ids[0].reference', - {'self': self}, 35, gen_args=gen_args) - 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 gen_args.get('pain_flavor') == 'pain.001.001.02': - # batch_booking is in "Group header" with pain.001.001.02 - # and in "Payment info" in pain.001.001.03/04 - batch_booking = etree.SubElement(group_header_1_0, 'BtchBookg') - batch_booking.text = unicode(self.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 gen_args.get('pain_flavor') == 'pain.001.001.02': - grouping = etree.SubElement(group_header_1_0, 'Grpg') - grouping.text = 'GRPD' - self.generate_initiating_party_block(group_header_1_0, gen_args) - return group_header_1_0, nb_of_transactions_1_6, control_sum_1_7 - - @api.model - def generate_start_payment_info_block( - self, parent_node, payment_info_ident, - priority, local_instrument, sequence_type, requested_date, - eval_ctx, gen_args): - payment_info_2_0 = etree.SubElement(parent_node, 'PmtInf') - payment_info_identification_2_1 = etree.SubElement( - payment_info_2_0, 'PmtInfId') - payment_info_identification_2_1.text = self._prepare_field( - 'Payment Information Identification', - payment_info_ident, eval_ctx, 35, gen_args=gen_args) - payment_method_2_2 = etree.SubElement(payment_info_2_0, 'PmtMtd') - payment_method_2_2.text = gen_args['payment_method'] - nb_of_transactions_2_4 = False - control_sum_2_5 = False - if gen_args.get('pain_flavor') != 'pain.001.001.02': - batch_booking_2_3 = etree.SubElement(payment_info_2_0, 'BtchBookg') - batch_booking_2_3.text = unicode(self.batch_booking).lower() - # The "SEPA Customer-to-bank - # Implementation guidelines" for SCT and SDD says that control sum - # and nb_of_transactions should be present - # at both "group header" level and "payment info" level - nb_of_transactions_2_4 = etree.SubElement( - payment_info_2_0, 'NbOfTxs') - control_sum_2_5 = etree.SubElement(payment_info_2_0, 'CtrlSum') - payment_type_info_2_6 = etree.SubElement( - payment_info_2_0, 'PmtTpInf') - if priority and gen_args['payment_method'] != 'DD': - instruction_priority_2_7 = etree.SubElement( - payment_type_info_2_6, 'InstrPrty') - instruction_priority_2_7.text = priority - service_level_2_8 = etree.SubElement( - payment_type_info_2_6, 'SvcLvl') - service_level_code_2_9 = etree.SubElement(service_level_2_8, 'Cd') - service_level_code_2_9.text = 'SEPA' - if local_instrument: - local_instrument_2_11 = etree.SubElement( - payment_type_info_2_6, 'LclInstrm') - local_instr_code_2_12 = etree.SubElement( - local_instrument_2_11, 'Cd') - local_instr_code_2_12.text = local_instrument - if sequence_type: - sequence_type_2_14 = etree.SubElement( - payment_type_info_2_6, 'SeqTp') - sequence_type_2_14.text = sequence_type - - if gen_args['payment_method'] == 'DD': - request_date_tag = 'ReqdColltnDt' - else: - request_date_tag = 'ReqdExctnDt' - requested_date_2_17 = etree.SubElement( - payment_info_2_0, request_date_tag) - requested_date_2_17.text = requested_date - return payment_info_2_0, nb_of_transactions_2_4, control_sum_2_5 - - @api.model - def _must_have_initiating_party(self, gen_args): - '''This method is designed to be inherited in localization modules for - countries in which the initiating party is required''' - return False - - @api.model - def generate_initiating_party_block(self, parent_node, gen_args): - my_company_name = self._prepare_field( - 'Company Name', - 'self.payment_order_ids[0].mode.bank_id.partner_id.name', - {'self': self}, gen_args.get('name_maxsize'), gen_args=gen_args) - initiating_party_1_8 = etree.SubElement(parent_node, 'InitgPty') - initiating_party_name = etree.SubElement(initiating_party_1_8, 'Nm') - initiating_party_name.text = my_company_name - initiating_party_identifier =\ - self.payment_order_ids[0].company_id.\ - initiating_party_identifier - initiating_party_issuer =\ - self.payment_order_ids[0].company_id.\ - initiating_party_issuer - if initiating_party_identifier and initiating_party_issuer: - iniparty_id = etree.SubElement(initiating_party_1_8, 'Id') - iniparty_org_id = etree.SubElement(iniparty_id, 'OrgId') - iniparty_org_other = etree.SubElement(iniparty_org_id, 'Othr') - iniparty_org_other_id = etree.SubElement(iniparty_org_other, 'Id') - iniparty_org_other_id.text = initiating_party_identifier - iniparty_org_other_issuer = etree.SubElement( - iniparty_org_other, 'Issr') - iniparty_org_other_issuer.text = initiating_party_issuer - elif self._must_have_initiating_party(gen_args): - raise Warning( - _("Missing 'Initiating Party Issuer' and/or " - "'Initiating Party Identifier' for the company '%s'. " - "Both fields must have a value.") - % self.payment_order_ids[0].company_id.name) - return True - - @api.model - def generate_party_agent( - self, parent_node, party_type, party_type_label, - order, party_name, iban, bic, eval_ctx, gen_args): - """Generate the piece of the XML file corresponding to BIC - This code is mutualized between TRF and DD""" - assert order in ('B', 'C'), "Order can be 'B' or 'C'" - try: - bic = self._prepare_field( - '%s BIC' % party_type_label, bic, eval_ctx, gen_args=gen_args) - party_agent = etree.SubElement(parent_node, '%sAgt' % party_type) - party_agent_institution = etree.SubElement( - party_agent, 'FinInstnId') - party_agent_bic = etree.SubElement( - party_agent_institution, gen_args.get('bic_xml_tag')) - party_agent_bic.text = bic - except Warning: - if order == 'C': - if iban[0:2] != gen_args['initiating_party_country_code']: - raise Warning( - _('Error:'), - _("The bank account with IBAN '%s' of partner '%s' " - "must have an associated BIC because it is a " - "cross-border SEPA operation.") - % (iban, party_name)) - if order == 'B' or ( - order == 'C' and gen_args['payment_method'] == 'DD'): - party_agent = etree.SubElement( - parent_node, '%sAgt' % party_type) - party_agent_institution = etree.SubElement( - party_agent, 'FinInstnId') - party_agent_other = etree.SubElement( - party_agent_institution, 'Othr') - party_agent_other_identification = etree.SubElement( - party_agent_other, 'Id') - party_agent_other_identification.text = 'NOTPROVIDED' - # for Credit Transfers, in the 'C' block, if BIC is not provided, - # we should not put the 'Creditor Agent' block at all, - # as per the guidelines of the EPC - return True - - @api.model - def generate_party_block( - self, parent_node, party_type, order, name, iban, bic, - eval_ctx, gen_args): - """Generate the piece of the XML file corresponding to Name+IBAN+BIC - This code is mutualized between TRF and DD""" - assert order in ('B', 'C'), "Order can be 'B' or 'C'" - if party_type == 'Cdtr': - party_type_label = 'Creditor' - elif party_type == 'Dbtr': - party_type_label = 'Debtor' - party_name = self._prepare_field( - '%s Name' % party_type_label, name, eval_ctx, - gen_args.get('name_maxsize'), gen_args=gen_args) - piban = self._prepare_field( - '%s IBAN' % party_type_label, iban, eval_ctx, gen_args=gen_args) - viban = self._validate_iban(piban) - # At C level, the order is : BIC, Name, IBAN - # At B level, the order is : Name, IBAN, BIC - if order == 'B': - gen_args['initiating_party_country_code'] = viban[0:2] - elif order == 'C': - self.generate_party_agent( - parent_node, party_type, party_type_label, - order, party_name, viban, bic, eval_ctx, gen_args) - party = etree.SubElement(parent_node, party_type) - party_nm = etree.SubElement(party, 'Nm') - party_nm.text = party_name - party_account = etree.SubElement( - parent_node, '%sAcct' % party_type) - party_account_id = etree.SubElement(party_account, 'Id') - party_account_iban = etree.SubElement( - party_account_id, 'IBAN') - party_account_iban.text = viban - if order == 'B': - self.generate_party_agent( - parent_node, party_type, party_type_label, - order, party_name, viban, bic, eval_ctx, gen_args) - return True - - @api.model - def generate_remittance_info_block(self, parent_node, line, gen_args): - remittance_info_2_91 = etree.SubElement( - parent_node, 'RmtInf') - if line.state == 'normal': - remittance_info_unstructured_2_99 = etree.SubElement( - remittance_info_2_91, 'Ustrd') - remittance_info_unstructured_2_99.text = \ - self._prepare_field( - 'Remittance Unstructured Information', - 'line.communication', {'line': line}, 140, - gen_args=gen_args) - else: - if not line.struct_communication_type: - raise Warning( - _("Missing 'Structured Communication Type' on payment " - "line with reference '%s'.") - % line.name) - remittance_info_structured_2_100 = etree.SubElement( - remittance_info_2_91, 'Strd') - creditor_ref_information_2_120 = etree.SubElement( - remittance_info_structured_2_100, 'CdtrRefInf') - if gen_args.get('pain_flavor') == 'pain.001.001.02': - creditor_ref_info_type_2_121 = etree.SubElement( - creditor_ref_information_2_120, 'CdtrRefTp') - creditor_ref_info_type_code_2_123 = etree.SubElement( - creditor_ref_info_type_2_121, 'Cd') - creditor_ref_info_type_issuer_2_125 = etree.SubElement( - creditor_ref_info_type_2_121, 'Issr') - creditor_reference_2_126 = etree.SubElement( - creditor_ref_information_2_120, 'CdtrRef') - else: - creditor_ref_info_type_2_121 = etree.SubElement( - creditor_ref_information_2_120, 'Tp') - creditor_ref_info_type_or_2_122 = etree.SubElement( - creditor_ref_info_type_2_121, 'CdOrPrtry') - creditor_ref_info_type_code_2_123 = etree.SubElement( - creditor_ref_info_type_or_2_122, 'Cd') - creditor_ref_info_type_issuer_2_125 = etree.SubElement( - creditor_ref_info_type_2_121, 'Issr') - creditor_reference_2_126 = etree.SubElement( - creditor_ref_information_2_120, 'Ref') - - creditor_ref_info_type_code_2_123.text = 'SCOR' - creditor_ref_info_type_issuer_2_125.text = \ - line.struct_communication_type - creditor_reference_2_126.text = \ - self._prepare_field( - 'Creditor Structured Reference', - 'line.communication', {'line': line}, 35, - gen_args=gen_args) - return True - - @api.model - def generate_creditor_scheme_identification( - self, parent_node, identification, identification_label, - eval_ctx, scheme_name_proprietary, gen_args): - csi_id = etree.SubElement(parent_node, 'Id') - csi_privateid = etree.SubElement(csi_id, 'PrvtId') - csi_other = etree.SubElement(csi_privateid, 'Othr') - csi_other_id = etree.SubElement(csi_other, 'Id') - csi_other_id.text = self._prepare_field( - identification_label, identification, eval_ctx, gen_args=gen_args) - csi_scheme_name = etree.SubElement(csi_other, 'SchmeNm') - csi_scheme_name_proprietary = etree.SubElement( - csi_scheme_name, 'Prtry') - csi_scheme_name_proprietary.text = scheme_name_proprietary - return True diff --git a/account_banking_pain_base/models/payment_line.py b/account_banking_pain_base/models/payment_line.py deleted file mode 100644 index 8f0160be2..000000000 --- a/account_banking_pain_base/models/payment_line.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# PAIN Base module for Odoo -# Copyright (C) 2013-2015 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields, api - - -class PaymentLine(models.Model): - _inherit = 'payment.line' - - @api.model - def _get_struct_communication_types(self): - return [('ISO', 'ISO')] - - priority = fields.Selection([ - ('NORM', 'Normal'), - ('HIGH', 'High')], - string='Priority', default='NORM', - help="This field will be used as the 'Instruction Priority' in " - "the generated PAIN file.") - # Update size from 64 to 140, because PAIN allows 140 caracters - communication = fields.Char(size=140) - struct_communication_type = fields.Selection( - '_get_struct_communication_types', - string='Structured Communication Type', default='ISO') diff --git a/account_banking_pain_base/models/payment_mode.py b/account_banking_pain_base/models/payment_mode.py deleted file mode 100644 index 9ca025e27..000000000 --- a/account_banking_pain_base/models/payment_mode.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# PAIN Base module for Odoo -# Copyright (C) 2013-2015 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields - - -class PaymentMode(models.Model): - _inherit = 'payment.mode' - - convert_to_ascii = fields.Boolean( - string='Convert to ASCII', default=True, - help="If active, Odoo will convert each accented caracter to " - "the corresponding unaccented caracter, so that only ASCII " - "caracters are used in the generated PAIN file.") diff --git a/account_banking_pain_base/models/res_company.py b/account_banking_pain_base/models/res_company.py index 0a62caab9..aed1c1ca1 100644 --- a/account_banking_pain_base/models/res_company.py +++ b/account_banking_pain_base/models/res_company.py @@ -1,26 +1,8 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# PAIN Base module for Odoo -# Copyright (C) 2013-2015 Akretion (http://www.akretion.com) -# Copyright (C) 2013 Noviat (http://www.noviat.com) -# @author: Alexis de Lattre -# @author: Luc de Meyer (Noviat) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- +# © 2013-2015 Akretion - Alexis de Lattre +# © 2013 Noviat (http://www.noviat.com) - Luc de Meyer +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from openerp import models, fields, api import logging diff --git a/account_banking_pain_base/models/res_partner_bank.py b/account_banking_pain_base/models/res_partner_bank.py deleted file mode 100644 index 3c7a5ff0d..000000000 --- a/account_banking_pain_base/models/res_partner_bank.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# Copyright (c) ACSONE SA/NV (). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields - - -class ResPartnerBank(models.Model): - _inherit = 'res.partner.bank' - - bank = fields.Many2one(help="If this field is set and the related bank " - "has a 'Bank Identifier Code', then this BIC " - "will be used to generate the credit " - "transfers and direct debits files.") - bank_bic = fields.Char(help="In the generation of credit transfer and " - "direct debit files, this BIC will be used " - "only when the 'Bank' field is empty, or " - "has a value but the field 'Bank Identifier " - "Code' is not set on the related bank.") diff --git a/account_banking_pain_base/post_install.py b/account_banking_pain_base/post_install.py index d48fd2f63..14a9259f9 100644 --- a/account_banking_pain_base/post_install.py +++ b/account_banking_pain_base/post_install.py @@ -1,24 +1,7 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# PAIN Base module for Odoo -# Copyright (C) 2015 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- +# © 2015-2016 Akretion - Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + from openerp import SUPERUSER_ID diff --git a/account_banking_pain_base/views/account_payment_line.xml b/account_banking_pain_base/views/account_payment_line.xml new file mode 100644 index 000000000..640175857 --- /dev/null +++ b/account_banking_pain_base/views/account_payment_line.xml @@ -0,0 +1,23 @@ + + + + + + + pain.base.account.payment.line + account.payment.line + + + + + + + + + + + diff --git a/account_banking_pain_base/views/account_payment_method.xml b/account_banking_pain_base/views/account_payment_method.xml new file mode 100644 index 000000000..8d223b2b0 --- /dev/null +++ b/account_banking_pain_base/views/account_payment_method.xml @@ -0,0 +1,32 @@ + + + + + + + pain_base.account_payment_method.form + account.payment.method + + + + + + + + + + + pain_base.account_payment_method.tree + account.payment.method + + + + + + + + + + + diff --git a/account_banking_pain_base/views/account_payment_mode.xml b/account_banking_pain_base/views/account_payment_mode.xml new file mode 100644 index 000000000..29546b84e --- /dev/null +++ b/account_banking_pain_base/views/account_payment_mode.xml @@ -0,0 +1,27 @@ + + + + + + + + pain_base.account.payment.mode.form + account.payment.mode + + + + + + + + + + + + + diff --git a/account_banking_pain_base/views/account_payment_order.xml b/account_banking_pain_base/views/account_payment_order.xml new file mode 100644 index 000000000..e99928637 --- /dev/null +++ b/account_banking_pain_base/views/account_payment_order.xml @@ -0,0 +1,24 @@ + + + + + + + pain.base.account.payment.order.form + account.payment.order + + + + + + + + + + + + diff --git a/account_banking_pain_base/views/bank_payment_line_view.xml b/account_banking_pain_base/views/bank_payment_line_view.xml new file mode 100644 index 000000000..672e4bbbe --- /dev/null +++ b/account_banking_pain_base/views/bank_payment_line_view.xml @@ -0,0 +1,23 @@ + + + + + + + pain.base.bank.payment.line.form + bank.payment.line + + + + + + + + + + + diff --git a/account_banking_pain_base/views/payment_line_view.xml b/account_banking_pain_base/views/payment_line_view.xml deleted file mode 100644 index f92b1bbf5..000000000 --- a/account_banking_pain_base/views/payment_line_view.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - pain.base.payment.line.form - payment.line - - - - - - - - - - - - - - pain.base.payment.line.inside.order.form - payment.order - - - - - - - - - - - - - - diff --git a/account_banking_pain_base/views/payment_mode_view.xml b/account_banking_pain_base/views/payment_mode_view.xml deleted file mode 100644 index 2deb24999..000000000 --- a/account_banking_pain_base/views/payment_mode_view.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - add.convert_to_ascii.in.payment.mode.form - payment.mode - - - - - - - - - - diff --git a/account_banking_payment_export/README.rst b/account_banking_payment_export/README.rst deleted file mode 100644 index 90551b32e..000000000 --- a/account_banking_payment_export/README.rst +++ /dev/null @@ -1,94 +0,0 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :alt: License: AGPL-3 - -Account Banking - Payments Export Infrastructure -================================================ - -This module provide an infrastructure to export payment orders. -It includes some bug fixes and obvious enhancements to payment orders that will hopefully land in offical addons one -day. -This technical module provides the base infrastructure to export payment orders -for electronic banking. It provides the following technical features: - -* a new payment.mode.type model -* payment.mode now has a mandatory type -* a better implementation of payment_mode.suitable_bank_types() based on - payment.mode.type -* the "make payment" button launches a wizard depending on the - payment.mode.type -* a manual payment mode type is provided as an example, with a default "do - nothing" wizard - -To enable the use of payment order to collect money for customers, -it adds a payment_order_type (payment|debit) as a basis of direct debit support -(this field becomes visible when account_direct_debit is installed). - -Installation -============ - -This module depends on: - -* account_payment -* base_iban - -This modules is part of the OCA/bank-payment suite. - -Configuration -============= - -No configuration required. - -Usage -===== - -This module provides a menu to configure payment order types : Accounting > Configuration > Miscellaneous > Payment Export Types - -For further information, please visit: - - * https://www.odoo.com/forum/help-1 - -Known issues / Roadmap -====================== - - * no known issues - -Bug Tracker -=========== - -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. - - -Credits -======= - -Contributors ------------- - -* Stéphane Bidoul -* Alexis de Lattre -* Pedro M. Baeza -* Adrien Peiffer -* Stefan Rijnhart -* Laurent Mignon -* Alexandre Fayolle -* Danimar Ribeiro -* Erwin van der Ploeg -* Raphaël Valyi -* Sandy Carter -* Angel Moya - -Maintainer ----------- - -.. image:: http://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: http://odoo-community.org - -This module is maintained by the OCA. - -OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. - -To contribute to this module, please visit http://odoo-community.org. diff --git a/account_banking_payment_export/__openerp__.py b/account_banking_payment_export/__openerp__.py deleted file mode 100644 index 45fe57b5a..000000000 --- a/account_banking_payment_export/__openerp__.py +++ /dev/null @@ -1,52 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2009 EduSense BV (). -# (C) 2011 - 2013 Therp BV (). -# (C) 2013 - 2014 ACSONE SA (). -# -# All other contributions are (C) by their respective contributors -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -{ - 'name': 'Account Banking - Payments Export Infrastructure', - 'version': '8.0.0.1.165', - 'license': 'AGPL-3', - 'author': "ACSONE SA/NV, " - "Therp BV, " - "Serv. Tecnol. Avanzados - Pedro M. Baeza, " - "Odoo Community Association (OCA)", - 'website': 'https://github.com/OCA/bank-payment', - 'category': 'Banking addons', - 'depends': [ - 'account_payment', - 'base_iban', # for manual_bank_tranfer - 'document', # to see the attachments on payment.order - ], - 'data': [ - 'views/account_payment.xml', - 'views/payment_mode.xml', - 'views/payment_mode_type.xml', - 'wizard/bank_payment_manual.xml', - 'wizard/payment_order_create_view.xml', - 'data/payment_mode_type.xml', - 'workflow/account_payment.xml', - 'security/ir.model.access.csv', - ], - 'demo': ['demo/banking_demo.xml'], - 'installable': False, -} diff --git a/account_banking_payment_export/demo/banking_demo.xml b/account_banking_payment_export/demo/banking_demo.xml deleted file mode 100644 index c33d538c0..000000000 --- a/account_banking_payment_export/demo/banking_demo.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - Fortuneo Banque - FTNOFRP1XXX - 26 avenue des Champs Elysées - 75008 - Paris - - - - - La Banque Postale - PSSTFRPPXXX - 115 rue de Sèvres - 75007 - Paris - - - - - Société Générale - SOGEFRPPXXX - 1 avenue du Roi Fabien 1er - 75008 - Paris - - - - - BNP Paribas Fortis Charleroi - GEBABEBB03A - Charleroi - - - - - - FR76 4242 4242 4242 4242 4242 424 - iban - - - La Banque Postale - PSSTFRPPXXX - - - - FR20 1242 1242 1242 1242 1242 124 - iban - - - Société Générale - SOGEFRPPXXX - - - - FR66 1212 1212 1212 1212 1212 121 - iban - - - Fortuneo Banque - FTNOFRP1XXX - - - - BE96 9988 7766 5544 - iban - - - BNP Paribas Fortis Charleroi - GEBABEBB03A - - - - - - - - - Credit Trf Banque Postale - - - - - - - - - Credit Trf Société Générale - - - - - - - - - - diff --git a/account_banking_payment_export/i18n/account_banking_payment_export.pot b/account_banking_payment_export/i18n/account_banking_payment_export.pot deleted file mode 100644 index 96f1d47a9..000000000 --- a/account_banking_payment_export/i18n/account_banking_payment_export.pot +++ /dev/null @@ -1,276 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_banking_payment_export -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-02 10:51+0000\n" -"PO-Revision-Date: 2015-07-02 10:51+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: account_banking_payment_export -#: field:payment.mode,active:0 -#: field:payment.mode.type,active:0 -msgid "Active" -msgstr "" - -#. module: account_banking_payment_export -#: view:payment.manual:account_banking_payment_export.view_payment_manual_form -msgid "Cancel" -msgstr "" - -#. module: account_banking_payment_export -#: field:payment.mode.type,code:0 -msgid "Code" -msgstr "" - -#. module: account_banking_payment_export -#: field:payment.manual,create_uid:0 -#: field:payment.mode.type,create_uid:0 -msgid "Created by" -msgstr "" - -#. module: account_banking_payment_export -#: field:payment.manual,create_date:0 -#: field:payment.mode.type,create_date:0 -msgid "Created on" -msgstr "" - -#. module: account_banking_payment_export -#: selection:payment.mode.type,payment_order_type:0 -msgid "Debit" -msgstr "" - -#. module: account_banking_payment_export -#: selection:payment.order,payment_order_type:0 -msgid "Direct debit" -msgstr "" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:121 -#, python-format -msgid "Entry Lines" -msgstr "" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/models/account_payment.py:68 -#, python-format -msgid "Error" -msgstr "" - -#. module: account_banking_payment_export -#: field:payment.mode,type:0 -msgid "Export type" -msgstr "" - -#. module: account_banking_payment_export -#: field:payment.manual,id:0 -#: field:payment.mode.type,id:0 -msgid "ID" -msgstr "" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_account_invoice -msgid "Invoice" -msgstr "" - -#. module: account_banking_payment_export -#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree -msgid "Journal Entry" -msgstr "" - -#. module: account_banking_payment_export -#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree -#: model:ir.model,name:account_banking_payment_export.model_account_move_line -msgid "Journal Items" -msgstr "" - -#. module: account_banking_payment_export -#: field:payment.manual,write_uid:0 -#: field:payment.mode.type,write_uid:0 -msgid "Last Updated by" -msgstr "" - -#. module: account_banking_payment_export -#: field:payment.manual,write_date:0 -#: field:payment.mode.type,write_date:0 -msgid "Last Updated on" -msgstr "" - -#. module: account_banking_payment_export -#: view:payment.manual:account_banking_payment_export.view_payment_manual_form -msgid "Manual payment" -msgstr "" - -#. module: account_banking_payment_export -#: field:payment.mode.type,name:0 -msgid "Name" -msgstr "" - -#. module: account_banking_payment_export -#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit -#: field:payment.mode,note:0 -msgid "Note" -msgstr "" - -#. module: account_banking_payment_export -#: field:payment.mode.type,payment_order_type:0 -msgid "Order type" -msgstr "" - -#. module: account_banking_payment_export -#: selection:payment.mode.type,payment_order_type:0 -#: selection:payment.order,payment_order_type:0 -msgid "Payment" -msgstr "" - -#. module: account_banking_payment_export -#: model:ir.actions.act_window,name:account_banking_payment_export.action_payment_mode_type -#: model:ir.ui.menu,name:account_banking_payment_export.menu_payment_mode_type -msgid "Payment Export Types" -msgstr "" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_mode -msgid "Payment Mode" -msgstr "" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_mode_type -msgid "Payment Mode Type" -msgstr "" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_order -msgid "Payment Order" -msgstr "" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/models/account_payment.py:53 -#, python-format -msgid "Payment Order Export" -msgstr "" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:213 -#, python-format -msgid "Payment Orders" -msgstr "" - -#. module: account_banking_payment_export -#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form -#: help:payment.mode.type,name:0 -msgid "Payment Type" -msgstr "" - -#. module: account_banking_payment_export -#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_tree -msgid "Payment Types" -msgstr "" - -#. module: account_banking_payment_export -#: field:payment.order,payment_order_type:0 -msgid "Payment order type" -msgstr "" - -#. module: account_banking_payment_export -#: field:payment.mode.type,ir_model_id:0 -msgid "Payment wizard" -msgstr "" - -#. module: account_banking_payment_export -#: view:payment.manual:account_banking_payment_export.view_payment_manual_form -msgid "Please execute payment order manually, and click OK when succesfully sent." -msgstr "" - -#. module: account_banking_payment_export -#: field:payment.order.create,populate_results:0 -msgid "Populate results directly" -msgstr "" - -#. module: account_banking_payment_export -#: help:payment.mode,type:0 -msgid "Select the Export Payment Type for the Payment Mode." -msgstr "" - -#. module: account_banking_payment_export -#: help:payment.mode.type,ir_model_id:0 -msgid "Select the Payment Wizard for payments of this type. Leave empty for manual processing" -msgstr "" - -#. module: account_banking_payment_export -#: field:payment.mode,purchase_ok:0 -msgid "Selectable on purchase operations" -msgstr "" - -#. module: account_banking_payment_export -#: field:payment.mode,sale_ok:0 -msgid "Selectable on sale operations" -msgstr "" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_manual -msgid "Send payment order(s) manually" -msgstr "" - -#. module: account_banking_payment_export -#: help:payment.mode.type,code:0 -msgid "Specify the Code for Payment Type" -msgstr "" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/models/account_invoice.py:34 -#, python-format -msgid "Structured Reference" -msgstr "" - -#. module: account_banking_payment_export -#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form -#: field:payment.mode.type,suitable_bank_types:0 -msgid "Suitable bank types" -msgstr "" - -#. module: account_banking_payment_export -#: help:payment.mode.type,payment_order_type:0 -msgid "This field determines if this type applies to customers (Debit) or suppliers (Payment)" -msgstr "" - -#. module: account_banking_payment_export -#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree -msgid "Total Credit" -msgstr "" - -#. module: account_banking_payment_export -#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree -msgid "Total Debit" -msgstr "" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/models/account_payment.py:69 -#, python-format -msgid "You can only combine payment orders of the same type" -msgstr "" - -#. module: account_banking_payment_export -#: view:payment.order:account_banking_payment_export.view_banking_payment_order_form_1 -msgid "launch_wizard" -msgstr "" - -#. module: account_banking_payment_export -#: view:payment.order:account_banking_payment_export.view_banking_payment_order_form_1 -msgid "{\n" -" 'invisible': [('state', '!=', 'draft')]}" -msgstr "" - -#. module: account_banking_payment_export -#: view:payment.order.create:account_banking_payment_export.view_create_payment_order_lines -msgid "{'display_credit': context.get('display_credit', False),'display_debit': context.get('display_debit', False),'journal_type': 'sale', 'tree_view_ref' : 'account_banking_payment_export.payment_order_populate_view_move_line_tree'}" -msgstr "" - diff --git a/account_banking_payment_export/i18n/es.po b/account_banking_payment_export/i18n/es.po deleted file mode 100644 index f31e31e22..000000000 --- a/account_banking_payment_export/i18n/es.po +++ /dev/null @@ -1,277 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_banking_payment_export -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-02 10:49+0000\n" -"PO-Revision-Date: 2015-07-02 10:49+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: account_banking_payment_export -#: field:payment.mode,active:0 -#: field:payment.mode.type,active:0 -msgid "Active" -msgstr "Activo" - -#. module: account_banking_payment_export -#: view:payment.manual:account_banking_payment_export.view_payment_manual_form -msgid "Cancel" -msgstr "Cancelar" - -#. module: account_banking_payment_export -#: field:payment.mode.type,code:0 -msgid "Code" -msgstr "Código" - -#. module: account_banking_payment_export -#: field:payment.manual,create_uid:0 -#: field:payment.mode.type,create_uid:0 -msgid "Created by" -msgstr "Creado por" - -#. module: account_banking_payment_export -#: field:payment.manual,create_date:0 -#: field:payment.mode.type,create_date:0 -msgid "Created on" -msgstr "Creado en" - -#. module: account_banking_payment_export -#: selection:payment.mode.type,payment_order_type:0 -msgid "Debit" -msgstr "Cobro" - -#. module: account_banking_payment_export -#: selection:payment.order,payment_order_type:0 -msgid "Direct debit" -msgstr "Adeudo directo (cobro)" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:121 -#, python-format -msgid "Entry Lines" -msgstr "Líneas de pago" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/models/account_payment.py:68 -#, python-format -msgid "Error" -msgstr "Error" - -#. module: account_banking_payment_export -#: field:payment.mode,type:0 -msgid "Export type" -msgstr "Tipo de exportación" - -#. module: account_banking_payment_export -#: field:payment.manual,id:0 -#: field:payment.mode.type,id:0 -msgid "ID" -msgstr "ID" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_account_invoice -msgid "Invoice" -msgstr "Factura" - -#. module: account_banking_payment_export -#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree -msgid "Journal Entry" -msgstr "Asiento contable" - -#. module: account_banking_payment_export -#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree -#: model:ir.model,name:account_banking_payment_export.model_account_move_line -msgid "Journal Items" -msgstr "Apuntes contables" - -#. module: account_banking_payment_export -#: field:payment.manual,write_uid:0 -#: field:payment.mode.type,write_uid:0 -msgid "Last Updated by" -msgstr "Última actualización por" - -#. module: account_banking_payment_export -#: field:payment.manual,write_date:0 -#: field:payment.mode.type,write_date:0 -msgid "Last Updated on" -msgstr "Última actualización en" - -#. module: account_banking_payment_export -#: view:payment.manual:account_banking_payment_export.view_payment_manual_form -msgid "Manual payment" -msgstr "Pago manual" - -#. module: account_banking_payment_export -#: field:payment.mode.type,name:0 -msgid "Name" -msgstr "Nombre" - -#. module: account_banking_payment_export -#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit -#: field:payment.mode,note:0 -msgid "Note" -msgstr "Descripción" - -#. module: account_banking_payment_export -#: field:payment.mode.type,payment_order_type:0 -msgid "Order type" -msgstr "Tipo de orden" - -#. module: account_banking_payment_export -#: selection:payment.mode.type,payment_order_type:0 -#: selection:payment.order,payment_order_type:0 -msgid "Payment" -msgstr "Pago" - -#. module: account_banking_payment_export -#: model:ir.actions.act_window,name:account_banking_payment_export.action_payment_mode_type -#: model:ir.ui.menu,name:account_banking_payment_export.menu_payment_mode_type -msgid "Payment Export Types" -msgstr "Tipos de exportación de pagos" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_mode -msgid "Payment Mode" -msgstr "Modo de pago" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_mode_type -msgid "Payment Mode Type" -msgstr "Tipo del modo de pago" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_order -msgid "Payment Order" -msgstr "Orden de pago" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/models/account_payment.py:53 -#, python-format -msgid "Payment Order Export" -msgstr "Exportación de la orden de pago" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:213 -#, python-format -msgid "Payment Orders" -msgstr "Órdenes de pago" - -#. module: account_banking_payment_export -#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form -#: help:payment.mode.type,name:0 -msgid "Payment Type" -msgstr "Tipo de pago" - -#. module: account_banking_payment_export -#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_tree -msgid "Payment Types" -msgstr "Tipos de pago" - -#. module: account_banking_payment_export -#: field:payment.order,payment_order_type:0 -msgid "Payment order type" -msgstr "Tipo de la orden de pago" - -#. module: account_banking_payment_export -#: field:payment.mode.type,ir_model_id:0 -msgid "Payment wizard" -msgstr "Asistente de pago" - -#. module: account_banking_payment_export -#: view:payment.manual:account_banking_payment_export.view_payment_manual_form -msgid "Please execute payment order manually, and click OK when succesfully sent." -msgstr "Ejecute la orden de pago manualmente (fuera del sistema), y pulse en Aceptar cuando la haya tramitado correctamente." - -#. module: account_banking_payment_export -#: field:payment.order.create,populate_results:0 -msgid "Populate results directly" -msgstr "Incluir directamente los resultados" - -#. module: account_banking_payment_export -#: help:payment.mode,type:0 -msgid "Select the Export Payment Type for the Payment Mode." -msgstr "Seleccione el tipo de exportación de pago para el modo de pago." - -#. module: account_banking_payment_export -#: help:payment.mode.type,ir_model_id:0 -msgid "Select the Payment Wizard for payments of this type. Leave empty for manual processing" -msgstr "Seleccione el asistente de pago para los pagos de este tipo. Déjelo vacío para un procesado manual." - -#. module: account_banking_payment_export -#: field:payment.mode,purchase_ok:0 -msgid "Selectable on purchase operations" -msgstr "Seleccionable en operaciones de compra" - -#. module: account_banking_payment_export -#: field:payment.mode,sale_ok:0 -msgid "Selectable on sale operations" -msgstr "Seleccionable en operaciones de venta" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_manual -msgid "Send payment order(s) manually" -msgstr "Enviar la(s) orden(es) de pago manualmente" - -#. module: account_banking_payment_export -#: help:payment.mode.type,code:0 -msgid "Specify the Code for Payment Type" -msgstr "Especifica el código para el tipo de pago" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/models/account_invoice.py:34 -#, python-format -msgid "Structured Reference" -msgstr "Referencia esctructurada" - -#. module: account_banking_payment_export -#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form -#: field:payment.mode.type,suitable_bank_types:0 -msgid "Suitable bank types" -msgstr "Tipos de cuentas bancarias adecuadas" - -#. module: account_banking_payment_export -#: help:payment.mode.type,payment_order_type:0 -msgid "This field determines if this type applies to customers (Debit) or suppliers (Payment)" -msgstr "Este campo determina si este tipo aplica a clientes (Cobro) o a proveedores (Pago)" - -#. module: account_banking_payment_export -#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree -msgid "Total Credit" -msgstr "Total haber" - -#. module: account_banking_payment_export -#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree -msgid "Total Debit" -msgstr "Total debe" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/models/account_payment.py:69 -#, python-format -msgid "You can only combine payment orders of the same type" -msgstr "Sólo puede combinar órdenes de pago del mismo tipo" - -#. module: account_banking_payment_export -#: view:payment.order:account_banking_payment_export.view_banking_payment_order_form_1 -msgid "launch_wizard" -msgstr "Asistente" - -#. module: account_banking_payment_export -#: view:payment.order:account_banking_payment_export.view_banking_payment_order_form_1 -msgid "{\n" -" 'invisible': [('state', '!=', 'draft')]}" -msgstr "{\n" -" 'invisible': [('state', '!=', 'draft')]}" - -#. module: account_banking_payment_export -#: view:payment.order.create:account_banking_payment_export.view_create_payment_order_lines -msgid "{'display_credit': context.get('display_credit', False),'display_debit': context.get('display_debit', False),'journal_type': 'sale', 'tree_view_ref' : 'account_banking_payment_export.payment_order_populate_view_move_line_tree'}" -msgstr "{'display_credit': context.get('display_credit', False),'display_debit': context.get('display_debit', False),'journal_type': 'sale', 'tree_view_ref' : 'account_banking_payment_export.payment_order_populate_view_move_line_tree'}" - diff --git a/account_banking_payment_export/i18n/nl.po b/account_banking_payment_export/i18n/nl.po deleted file mode 100644 index dea08f97f..000000000 --- a/account_banking_payment_export/i18n/nl.po +++ /dev/null @@ -1,151 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_banking_payment_export -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 7.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-10-25 15:58+0000\n" -"PO-Revision-Date: 2013-12-03 11:49+0000\n" -"Last-Translator: Erwin van der Ploeg (BAS Solutions) \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n" -"X-Generator: Launchpad (build 17031)\n" - -#. module: account_banking_payment_export -#: help:payment.mode.type,name:0 -msgid "Payment Type" -msgstr "Betaalwijze" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_order -msgid "Payment Order" -msgstr "Betalingsopdracht" - -#. module: account_banking_payment_export -#: view:payment.manual:0 -msgid "" -"Please execute payment order manually, and click OK when succesfully sent." -msgstr "" -"Voer de betaalopdracht handmatig uit en klik OK, wanneer succesvol verzonden." - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_mode -msgid "Payment Mode" -msgstr "Betaalwijze" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/model/account_payment.py:69 -#, python-format -msgid "You can only combine payment orders of the same type" -msgstr "U kunt alleen betalingsopdrachten van dezelfde soort combineren" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_mode_type -msgid "Payment Mode Type" -msgstr "Betaalwijze soort" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_account_move_line -msgid "Journal Items" -msgstr "Boekingen" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_manual -msgid "Send payment order(s) manually" -msgstr "Verzend betaalopdrachten handmatig" - -#. module: account_banking_payment_export -#: field:payment.mode.type,name:0 -msgid "Name" -msgstr "Naam" - -#. module: account_banking_payment_export -#: help:payment.mode.type,ir_model_id:0 -msgid "" -"Select the Payment Wizard for payments of this type. Leave empty for manual " -"processing" -msgstr "" -"Selecteer de wizard voor het verwerken van betalingen van dit type. Laat " -"leeg voor handmatige verwerking." - -#. module: account_banking_payment_export -#: view:payment.manual:0 -msgid "Manual payment" -msgstr "Handmatige betaling" - -#. module: account_banking_payment_export -#: field:payment.manual,payment_order_ids:0 -msgid "Payment orders" -msgstr "Betaalopdrachten" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/model/account_payment.py:52 -#, python-format -msgid "Payment Order Export" -msgstr "Betaalopdracht export" - -#. module: account_banking_payment_export -#: help:payment.mode,type:0 -msgid "Select the Payment Type for the Payment Mode." -msgstr "Selecteer het type van de betaalmodus." - -#. module: account_banking_payment_export -#: view:payment.order:0 -msgid "launch_wizard" -msgstr "launch_wizard" - -#. module: account_banking_payment_export -#: help:payment.mode.type,code:0 -msgid "Specify the Code for Payment Type" -msgstr "Geef de code op voor het betaaltype" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_order_create -msgid "payment.order.create" -msgstr "payment.order.create" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/model/account_payment.py:68 -#, python-format -msgid "Error" -msgstr "Fout" - -#. module: account_banking_payment_export -#: field:payment.mode.type,ir_model_id:0 -msgid "Payment wizard" -msgstr "Betaalwizard" - -#. module: account_banking_payment_export -#: field:payment.mode,type:0 -msgid "Payment type" -msgstr "Betaaltype" - -#. module: account_banking_payment_export -#: field:payment.mode.type,code:0 -msgid "Code" -msgstr "Code" - -#. module: account_banking_payment_export -#: view:payment.manual:0 -msgid "OK" -msgstr "OK" - -#. module: account_banking_payment_export -#: view:payment.mode.type:0 -msgid "Payment mode" -msgstr "Betaalwijze" - -#. module: account_banking_payment_export -#: view:payment.manual:0 -msgid "Cancel" -msgstr "Annuleren" - -#. module: account_banking_payment_export -#: field:payment.mode.type,suitable_bank_types:0 -msgid "Suitable bank types" -msgstr "Geschikte banktypen" diff --git a/account_banking_payment_export/i18n/pt_BR.po b/account_banking_payment_export/i18n/pt_BR.po deleted file mode 100644 index 93b201f37..000000000 --- a/account_banking_payment_export/i18n/pt_BR.po +++ /dev/null @@ -1,236 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_banking_payment_export -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-10-31 22:52+0000\n" -"PO-Revision-Date: 2014-10-31 22:52+0000\n" -"Last-Translator: Danimar Ribeiro\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: account_banking_payment_export -#: field:payment.mode,active:0 -#: field:payment.mode.type,active:0 -msgid "Active" -msgstr "Ativo" - -#. module: account_banking_payment_export -#: field:payment.mode,sale_ok:0 -msgid "Selectable on sale operations" -msgstr "Selecionável em operações de venda" - -#. module: account_banking_payment_export -#: field:payment.mode,purchase_ok:0 -msgid "Selectable on purchase operations" -msgstr "Selecionável em operações de compra" - -#. module: account_banking_payment_export -#: field:account.move.line,amount_to_pay:0 -msgid "Amount to pay" -msgstr "Valor a pagar" - -#. module: account_banking_payment_export -#: view:payment.manual:account_banking_payment_export.view_payment_manual_form -msgid "Cancel" -msgstr "Cancelar" - -#. module: account_banking_payment_export -#: field:payment.mode.type,code:0 -msgid "Code" -msgstr "Código" - -#. module: account_banking_payment_export -#: field:payment.manual,create_uid:0 -#: field:payment.mode.type,create_uid:0 -msgid "Created by" -msgstr "Criado por" - -#. module: account_banking_payment_export -#: field:payment.manual,create_date:0 -#: field:payment.mode.type,create_date:0 -msgid "Created on" -msgstr "Criado em" - -#. module: account_banking_payment_export -#: selection:payment.mode.type,payment_order_type:0 -msgid "Debit" -msgstr "Débito" - -#. module: account_banking_payment_export -#: selection:payment.order,payment_order_type:0 -msgid "Direct debit" -msgstr "Débito direto" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:77 -#, python-format -msgid "Entry Lines" -msgstr "Linhas de pagamento" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/models/account_payment.py:68 -#, python-format -msgid "Error" -msgstr "Erro" - -#. module: account_banking_payment_export -#: field:payment.mode,type:0 -msgid "Export type" -msgstr "Tipo de exportação" - -#. module: account_banking_payment_export -#: field:payment.manual,id:0 -#: field:payment.mode.type,id:0 -msgid "ID" -msgstr "ID" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_account_move_line -msgid "Journal Items" -msgstr "Itens de Diário" - -#. module: account_banking_payment_export -#: field:payment.manual,write_uid:0 -#: field:payment.mode.type,write_uid:0 -msgid "Last Updated by" -msgstr "Última Atualização por" - -#. module: account_banking_payment_export -#: field:payment.manual,write_date:0 -#: field:payment.mode.type,write_date:0 -msgid "Last Updated on" -msgstr "Última Atualização em" - -#. module: account_banking_payment_export -#: view:payment.manual:account_banking_payment_export.view_payment_manual_form -msgid "Manual payment" -msgstr "Pagamento manual" - -#. module: account_banking_payment_export -#: field:payment.mode.type,name:0 -msgid "Name" -msgstr "Nome" - -#. module: account_banking_payment_export -#: field:payment.mode.type,payment_order_type:0 -msgid "Order type" -msgstr "Tipo de ordem" - -#. module: account_banking_payment_export -#: selection:payment.mode.type,payment_order_type:0 -#: selection:payment.order,payment_order_type:0 -msgid "Payment" -msgstr "Pagamento" - -#. module: account_banking_payment_export -#: model:ir.actions.act_window,name:account_banking_payment_export.action_payment_mode_type -#: model:ir.ui.menu,name:account_banking_payment_export.menu_payment_mode_type -msgid "Payment Export Types" -msgstr "Tipos de exportação dos Pagamentos" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_mode -msgid "Payment Mode" -msgstr "Modo de pagamento" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_mode_type -msgid "Payment Mode Type" -msgstr "Tipo do Modo de Pagamento" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_order -msgid "Payment Order" -msgstr "Ordem de Pagamento" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/models/account_payment.py:53 -#, python-format -msgid "Payment Order Export" -msgstr "Exportação da Ordem de Pagamento" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:169 -#, python-format -msgid "Payment Orders" -msgstr "Ordens de Pagamento" - -#. module: account_banking_payment_export -#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form -#: help:payment.mode.type,name:0 -msgid "Payment Type" -msgstr "Tipo de pagamento" - -#. module: account_banking_payment_export -#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_tree -msgid "Payment Types" -msgstr "Tipos de pagamento" - -#. module: account_banking_payment_export -#: field:payment.order,payment_order_type:0 -msgid "Payment order type" -msgstr "Tipo da ordem de pagamento" - -#. module: account_banking_payment_export -#: field:payment.mode.type,ir_model_id:0 -msgid "Payment wizard" -msgstr "Assistente para Pagamentos" - -#. module: account_banking_payment_export -#: view:payment.manual:account_banking_payment_export.view_payment_manual_form -msgid "Please execute payment order manually, and click OK when succesfully sent." -msgstr "Por favor execute a ordem de pagamento manualmente, e clique OK quando terminar de enviar." - -#. module: account_banking_payment_export -#: field:payment.order.create,populate_results:0 -msgid "Populate results directly" -msgstr "Incluir diretamente os resultados" - -#. module: account_banking_payment_export -#: help:payment.mode,type:0 -msgid "Select the Export Payment Type for the Payment Mode." -msgstr "Selecione os tipos de pagamento que permitem exportação para o Modo de Pagamento." - -#. module: account_banking_payment_export -#: help:payment.mode.type,ir_model_id:0 -msgid "Select the Payment Wizard for payments of this type. Leave empty for manual processing" -msgstr "Selecione o Assistente de Pagamento para pagamentos deste tipo. Deixe vazio para processamento manual" - -#. module: account_banking_payment_export -#: model:ir.model,name:account_banking_payment_export.model_payment_manual -msgid "Send payment order(s) manually" -msgstr "Enviar a(s) ordem(s) de pagamento manualmente" - -#. module: account_banking_payment_export -#: help:payment.mode.type,code:0 -msgid "Specify the Code for Payment Type" -msgstr "Especifique o código para o Tipo de Pagamento" - -#. module: account_banking_payment_export -#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form -#: field:payment.mode.type,suitable_bank_types:0 -msgid "Suitable bank types" -msgstr "Tipos de contas bancárias adequadas" - -#. module: account_banking_payment_export -#: help:payment.mode.type,payment_order_type:0 -msgid "This field determines if this type applies to customers (Debit) or suppliers (Payment)" -msgstr "Este campo determina se este tipo se aplica a clientes (Cobrança) ou a fornecedores (Pagamentos)" - -#. module: account_banking_payment_export -#: code:addons/account_banking_payment_export/models/account_payment.py:69 -#, python-format -msgid "You can only combine payment orders of the same type" -msgstr "Você pode combinar ordens de pagamento do mesmo tipo" - -#. module: account_banking_payment_export -#: view:payment.order:account_banking_payment_export.view_banking_payment_order_form_1 -msgid "launch_wizard" -msgstr "launch_wizard" diff --git a/account_banking_payment_export/models/__init__.py b/account_banking_payment_export/models/__init__.py deleted file mode 100644 index 797c1ddf3..000000000 --- a/account_banking_payment_export/models/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# -*- coding: utf-8 -*- -from . import account_payment -# important: import payment_mode_type before payment_mode -# to let the _auto_init work properly -from . import payment_mode_type -from . import payment_mode -from . import account_move_line -from . import account_invoice diff --git a/account_banking_payment_export/models/account_move_line.py b/account_banking_payment_export/models/account_move_line.py deleted file mode 100644 index e7c2bdc3d..000000000 --- a/account_banking_payment_export/models/account_move_line.py +++ /dev/null @@ -1,52 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2004-2014 OpenERP S.A. (http://www.openerp.com/) -# (C) 2014 Akretion (http://www.akretion.com/) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields, api - - -class AccountMoveLine(models.Model): - _inherit = 'account.move.line' - - @api.one - def _get_journal_entry_ref(self): - if self.move_id.state == 'draft': - if self.invoice.id: - self.journal_entry_ref = self.invoice.number - else: - self.journal_entry_ref = '*' + str(self.move_id.id) - else: - self.journal_entry_ref = self.move_id.name - - journal_entry_ref = fields.Char(compute=_get_journal_entry_ref, - string='Journal Entry Ref') - - @api.multi - def get_balance(self): - """ - Return the balance of any set of move lines. - - Not to be confused with the 'balance' field on this model, which - returns the account balance that the move line applies to. - """ - total = 0.0 - for line in self: - total += (line.debit or 0.0) - (line.credit or 0.0) - return total diff --git a/account_banking_payment_export/models/account_payment.py b/account_banking_payment_export/models/account_payment.py deleted file mode 100644 index 795054cc5..000000000 --- a/account_banking_payment_export/models/account_payment.py +++ /dev/null @@ -1,89 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2009 EduSense BV (). -# (C) 2011 - 2013 Therp BV (). -# -# All other contributions are (C) by their respective contributors -# -# All Rights Reserved -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields, api, exceptions, workflow, _ - - -class PaymentOrder(models.Model): - _inherit = 'payment.order' - - payment_order_type = fields.Selection( - [('payment', 'Payment'), ('debit', 'Direct debit')], - 'Payment order type', required=True, default='payment', - readonly=True, states={'draft': [('readonly', False)]}) - mode_type = fields.Many2one('payment.mode.type', related='mode.type', - string='Payment Type') - total = fields.Float(compute='_compute_total', store=True) - - @api.depends('line_ids', 'line_ids.amount') - @api.one - def _compute_total(self): - self.total = sum(self.mapped('line_ids.amount') or [0.0]) - - @api.multi - def launch_wizard(self): - """Search for a wizard to launch according to the type. - If type is manual. just confirm the order. - Previously (pre-v6) in account_payment/wizard/wizard_pay.py - """ - context = self.env.context.copy() - order = self[0] - # check if a wizard is defined for the first order - if order.mode.type and order.mode.type.ir_model_id: - context['active_ids'] = self.ids - wizard_model = order.mode.type.ir_model_id.model - wizard_obj = self.env[wizard_model] - return { - 'name': wizard_obj._description or _('Payment Order Export'), - 'view_type': 'form', - 'view_mode': 'form', - 'res_model': wizard_model, - 'domain': [], - 'context': context, - 'type': 'ir.actions.act_window', - 'target': 'new', - 'nodestroy': True, - } - else: - # should all be manual orders without type or wizard model - for order in self[1:]: - if order.mode.type and order.mode.type.ir_model_id: - raise exceptions.Warning( - _('Error'), - _('You can only combine payment orders of the same ' - 'type')) - # process manual payments - for order_id in self.ids: - workflow.trg_validate(self.env.uid, 'payment.order', - order_id, 'done', self.env.cr) - return {} - - @api.multi - def action_done(self): - self.write({ - 'date_done': fields.Date.context_today(self), - 'state': 'done', - }) - return True diff --git a/account_banking_payment_export/models/payment_mode.py b/account_banking_payment_export/models/payment_mode.py deleted file mode 100644 index a0084f114..000000000 --- a/account_banking_payment_export/models/payment_mode.py +++ /dev/null @@ -1,110 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2009 EduSense BV (). -# (C) 2011 - 2013 Therp BV (). -# -# All other contributions are (C) by their respective contributors -# -# All Rights Reserved -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields, api, SUPERUSER_ID - - -class PaymentMode(models.Model): - """Restoring the payment type from version 5, - used to select the export wizard (if any) - """ - _inherit = "payment.mode" - - def _get_manual_bank_transfer(self, cr, uid, context=None): - """ hack: pre-create the manual bank transfer that is also - defined in the data directory, so we have an id in to use - in _auto_init """ - model_data = self.pool['ir.model.data'] - try: - _, res = model_data.get_object_reference( - cr, uid, - 'account_banking_payment_export', - 'manual_bank_tranfer') - except ValueError: - payment_mode_type = self.pool['payment.mode.type'] - res = payment_mode_type.create( - cr, uid, - {'name': 'Manual Bank Transfer', - 'code': 'BANKMAN'}) - model_data.create( - cr, uid, - {'module': 'account_banking_payment_export', - 'model': 'payment.mode.type', - 'name': 'manual_bank_tranfer', - 'res_id': res, - 'noupdate': False}) - return res - - def _auto_init(self, cr, context=None): - """ hack: pre-create and initialize the type column so that the - constraint setting will not fail, this is a hack, made necessary - because Odoo tries to set the not-null constraint before - applying default values """ - self._field_create(cr, context=context) - column_data = self._select_column_data(cr) - if 'type' not in column_data: - default_type = self._get_manual_bank_transfer( - cr, SUPERUSER_ID, context=context) - if default_type: - cr.execute('ALTER TABLE "{table}" ADD COLUMN "type" INTEGER'. - format(table=self._table)) - cr.execute('UPDATE "{table}" SET type=%s'. - format(table=self._table), - (default_type,)) - return super(PaymentMode, self)._auto_init(cr, context=context) - - def suitable_bank_types(self, cr, uid, payment_mode_id=None, context=None): - """ Reinstates functional code for suitable bank type filtering. - Current code in account_payment is disfunctional. - """ - res = [] - payment_mode = self.browse(cr, uid, payment_mode_id, context=context) - if (payment_mode and payment_mode.type and - payment_mode.type.suitable_bank_types): - res = [t.code for t in payment_mode.type.suitable_bank_types] - return res - - @api.model - def _default_type(self): - return self.env.ref( - 'account_banking_payment_export.' - 'manual_bank_tranfer', raise_if_not_found=False)\ - or self.env['payment.mode.type'] - - type = fields.Many2one( - 'payment.mode.type', string='Export type', required=True, - help='Select the Export Payment Type for the Payment Mode.', - default=_default_type) - payment_order_type = fields.Selection( - related='type.payment_order_type', readonly=True, string="Order Type", - selection=[('payment', 'Payment'), ('debit', 'Debit')], - help="This field, that comes from export type, determines if this " - "mode can be selected for customers or suppliers.") - active = fields.Boolean(string='Active', default=True) - sale_ok = fields.Boolean(string='Selectable on sale operations', - default=True) - purchase_ok = fields.Boolean(string='Selectable on purchase operations', - default=True) - note = fields.Text(string="Note", translate=True) diff --git a/account_banking_payment_export/models/payment_mode_type.py b/account_banking_payment_export/models/payment_mode_type.py deleted file mode 100644 index 341fe1063..000000000 --- a/account_banking_payment_export/models/payment_mode_type.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2009 EduSense BV (). -# (C) 2011 - 2013 Therp BV (). -# -# All other contributions are (C) by their respective contributors -# -# All Rights Reserved -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields - - -class PaymentModeType(models.Model): - _name = 'payment.mode.type' - _description = 'Payment Mode Type' - - name = fields.Char('Name', size=64, required=True, help='Payment Type') - code = fields.Char('Code', size=64, required=True, - help='Specify the Code for Payment Type') - suitable_bank_types = fields.Many2many( - comodel_name='res.partner.bank.type', - relation='bank_type_payment_type_rel', column1='pay_type_id', - column2='bank_type_id', string='Suitable bank types', required=True) - ir_model_id = fields.Many2one( - 'ir.model', string='Payment wizard', - help='Select the Payment Wizard for payments of this type. Leave ' - 'empty for manual processing', - domain=[('osv_memory', '=', True)]) - payment_order_type = fields.Selection( - [('payment', 'Payment'), - ('debit', 'Debit')], - string='Order type', required=True, default='payment', - help="This field determines if this type applies to customers " - "(Debit) or suppliers (Payment)") - active = fields.Boolean(string='Active', default=True) - - def _auto_init(self, cr, context=None): - res = super(PaymentModeType, self)._auto_init(cr, context=context) - # migrate xmlid from manual_bank_transfer to avoid dependency on - # account_banking - cr.execute( - """UPDATE ir_model_data - SET module='account_banking_payment_export' - WHERE module='account_banking' AND - name='manual_bank_tranfer' AND - model='payment.mode.type'""") - return res diff --git a/account_banking_payment_export/security/ir.model.access.csv b/account_banking_payment_export/security/ir.model.access.csv deleted file mode 100644 index 699f2d023..000000000 --- a/account_banking_payment_export/security/ir.model.access.csv +++ /dev/null @@ -1,2 +0,0 @@ -"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_payment_mode_type","payment.mode.type","model_payment_mode_type","account_payment.group_account_payment",1,1,1,1 diff --git a/account_banking_payment_export/views/account_payment.xml b/account_banking_payment_export/views/account_payment.xml deleted file mode 100644 index 1ad55ce81..000000000 --- a/account_banking_payment_export/views/account_payment.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - account.payment.order.form.banking-1 - - payment.order - - - launch_wizard - - - - - - { - 'invisible': [('state', '!=', 'draft')]} - - - - - - diff --git a/account_banking_payment_export/views/bank_payment_manual.xml b/account_banking_payment_export/views/bank_payment_manual.xml deleted file mode 100644 index e350c9b6f..000000000 --- a/account_banking_payment_export/views/bank_payment_manual.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - Form for manual payment wizard - payment.manual - - - - - - diff --git a/account_banking_payment_export/views/payment_mode.xml b/account_banking_payment_export/views/payment_mode.xml deleted file mode 100644 index 5441bb428..000000000 --- a/account_banking_payment_export/views/payment_mode.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - payment.mode.form.inherit - payment.mode - - - - - - - - -
- - - -
-
-
- -
-
diff --git a/account_banking_payment_export/views/payment_mode_type.xml b/account_banking_payment_export/views/payment_mode_type.xml deleted file mode 100644 index 4ca3acac7..000000000 --- a/account_banking_payment_export/views/payment_mode_type.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - payment.mode.tree.inherit - payment.mode - - - - - - - - - - - view.payment.mode.type.form - payment.mode.type - -
- - - - - - - - - - - - - -
-
-
- - - view.payment.mode.type.tree - payment.mode.type - - - - - - - - - - - - Payment Export Types - payment.mode.type - form - tree,form - {'active_test': False} - - - - -
-
diff --git a/account_banking_payment_export/wizard/__init__.py b/account_banking_payment_export/wizard/__init__.py deleted file mode 100644 index f30ac09dd..000000000 --- a/account_banking_payment_export/wizard/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -*- coding: utf-8 -*- -from . import payment_order_create -from . import bank_payment_manual diff --git a/account_banking_payment_export/wizard/bank_payment_manual.py b/account_banking_payment_export/wizard/bank_payment_manual.py deleted file mode 100644 index c2ca42573..000000000 --- a/account_banking_payment_export/wizard/bank_payment_manual.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2009 EduSense BV (). -# (C) 2011 - 2013 Therp BV (). -# -# All other contributions are (C) by their respective contributors -# -# All Rights Reserved -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -"""This module contains a single "wizard" for confirming manual -bank transfers. -""" - -from openerp import models, api, workflow - - -class PaymentManual(models.TransientModel): - _name = 'payment.manual' - _description = 'Send payment order(s) manually' - - @api.multi - def button_ok(self): - for order_id in self.env.context.get('active_ids', []): - workflow.trg_validate(self.env.uid, 'payment.order', order_id, - 'done', self.env.cr) - return {'type': 'ir.actions.act_window_close'} diff --git a/account_banking_payment_export/wizard/bank_payment_manual.xml b/account_banking_payment_export/wizard/bank_payment_manual.xml deleted file mode 100644 index e350c9b6f..000000000 --- a/account_banking_payment_export/wizard/bank_payment_manual.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - Form for manual payment wizard - payment.manual - -
-
-
-
-
diff --git a/account_banking_payment_export/wizard/payment_order_create.py b/account_banking_payment_export/wizard/payment_order_create.py deleted file mode 100644 index 613f88eba..000000000 --- a/account_banking_payment_export/wizard/payment_order_create.py +++ /dev/null @@ -1,217 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2009 EduSense BV (). -# (C) 2011 - 2013 Therp BV (). -# (C) 2014 - 2015 ACSONE SA/NV (). -# -# All other contributions are (C) by their respective contributors -# -# All Rights Reserved -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields, api, _ - - -class PaymentOrderCreate(models.TransientModel): - _inherit = 'payment.order.create' - - populate_results = fields.Boolean(string="Populate results directly", - default=True) - - @api.model - def default_get(self, field_list): - res = super(PaymentOrderCreate, self).default_get(field_list) - context = self.env.context - if ('entries' in field_list and context.get('line_ids') and - context.get('populate_results')): - res.update({'entries': context['line_ids']}) - return res - - @api.multi - def extend_payment_order_domain(self, payment_order, domain): - self.ensure_one() - if payment_order.payment_order_type == 'payment': - # For payables, propose all unreconciled credit lines, - # including partially reconciled ones. - # If they are partially reconciled with a supplier refund, - # the residual will be added to the payment order. - # - # For receivables, propose all unreconciled credit lines. - # (ie customer refunds): they can be refunded with a payment. - # Do not propose partially reconciled credit lines, - # as they are deducted from a customer invoice, and - # will not be refunded with a payment. - domain += [('credit', '>', 0), - '|', - ('account_id.type', '=', 'payable'), - '&', - ('account_id.type', '=', 'receivable'), - ('reconcile_partial_id', '=', False)] - - @api.multi - def filter_lines(self, lines): - """ Filter move lines before proposing them for inclusion - in the payment order. - - This implementation filters out move lines that are already - included in draft or open payment orders. This prevents the - user to include the same line in two different open payment - orders. When the payment order is sent, it is assumed that - the move will be reconciled soon (or immediately with - account_banking_payment_transfer), so it will not be - proposed anymore for payment. - - See also https://github.com/OCA/bank-payment/issues/93. - - :param lines: recordset of move lines - :returns: list of move line ids - """ - self.ensure_one() - payment_lines = self.env['payment.line'].\ - search([('order_id.state', 'in', ('draft', 'open')), - ('move_line_id', 'in', lines.ids)]) - to_exclude = set([l.move_line_id.id for l in payment_lines]) - return [l.id for l in lines if l.id not in to_exclude] - - @api.multi - def search_entries(self): - """This method taken from account_payment module. - We adapt the domain based on the payment_order_type - """ - line_obj = self.env['account.move.line'] - model_data_obj = self.env['ir.model.data'] - # -- start account_banking_payment -- - payment = self.env['payment.order'].browse( - self.env.context['active_id']) - # Search for move line to pay: - domain = [('move_id.state', '=', 'posted'), - ('reconcile_id', '=', False), - ('company_id', '=', payment.mode.company_id.id), - '|', - ('date_maturity', '<=', self.duedate), - ('date_maturity', '=', False)] - self.extend_payment_order_domain(payment, domain) - # -- end account_direct_debit -- - lines = line_obj.search(domain) - context = self.env.context.copy() - context['line_ids'] = self.filter_lines(lines) - context['populate_results'] = self.populate_results - if payment.payment_order_type == 'payment': - context['display_credit'] = True - context['display_debit'] = False - else: - context['display_credit'] = False - context['display_debit'] = True - model_datas = model_data_obj.search( - [('model', '=', 'ir.ui.view'), - ('name', '=', 'view_create_payment_order_lines')]) - return {'name': _('Entry Lines'), - 'context': context, - 'view_type': 'form', - 'view_mode': 'form', - 'res_model': 'payment.order.create', - 'views': [(model_datas[0].res_id, 'form')], - 'type': 'ir.actions.act_window', - 'target': 'new', - } - - @api.multi - def _prepare_payment_line(self, payment, line): - """This function is designed to be inherited - The resulting dict is passed to the create method of payment.line""" - self.ensure_one() - _today = fields.Date.context_today(self) - date_to_pay = False # no payment date => immediate payment - if payment.date_prefered == 'due': - # -- account_banking - # date_to_pay = line.date_maturity - date_to_pay = ( - line.date_maturity - if line.date_maturity and line.date_maturity > _today - else False) - # -- end account banking - elif payment.date_prefered == 'fixed': - # -- account_banking - # date_to_pay = payment.date_scheduled - date_to_pay = ( - payment.date_scheduled - if payment.date_scheduled and payment.date_scheduled > _today - else False) - # -- end account banking - # -- account_banking - state = 'normal' - communication = line.ref or '-' - if line.invoice: - if line.invoice.type in ('in_invoice', 'in_refund'): - if line.invoice.reference_type == 'structured': - state = 'structured' - communication = line.invoice.reference - else: - if line.invoice.reference: - communication = line.invoice.reference - elif line.invoice.supplier_invoice_number: - communication = line.invoice.supplier_invoice_number - else: - # Make sure that the communication includes the - # customer invoice number (in the case of debit order) - communication = line.invoice.number.replace('/', '') - state = 'structured' - amount_currency = line.amount_residual_currency - line2bank = line.line2bank(payment.mode.id) - # -- end account banking - res = {'move_line_id': line.id, - 'amount_currency': amount_currency, - 'bank_id': line2bank.get(line.id), - 'order_id': payment.id, - 'partner_id': line.partner_id and line.partner_id.id or False, - # account banking - 'communication': communication, - 'state': state, - # end account banking - 'date': date_to_pay, - 'currency': (line.invoice and line.invoice.currency_id.id or - line.journal_id.currency.id or - line.journal_id.company_id.currency_id.id)} - return res - - @api.multi - def create_payment(self): - """This method is a slightly modified version of the existing method on - this model in account_payment. - - pass the payment mode to line2bank() - - allow invoices to create influence on the payment process: not only - 'Free' references are allowed, but others as well - - check date_to_pay is not in the past. - """ - if not self.entries: - return {'type': 'ir.actions.act_window_close'} - context = self.env.context - payment_line_obj = self.env['payment.line'] - payment = self.env['payment.order'].browse(context['active_id']) - # Populate the current payment with new lines: - for line in self.entries: - vals = self._prepare_payment_line(payment, line) - payment_line_obj.create(vals) - # Force reload of payment order view as a workaround for lp:1155525 - return {'name': _('Payment Orders'), - 'context': context, - 'view_type': 'form', - 'view_mode': 'form,tree', - 'res_model': 'payment.order', - 'res_id': context['active_id'], - 'type': 'ir.actions.act_window'} diff --git a/account_banking_payment_export/wizard/payment_order_create_view.xml b/account_banking_payment_export/wizard/payment_order_create_view.xml deleted file mode 100644 index d4d4b44dc..000000000 --- a/account_banking_payment_export/wizard/payment_order_create_view.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - payment.order.create.form.export - payment.order.create - - - - - - - - - - add.context.to.display.maturity.date - payment.order.create - - - - {'display_credit': context.get('display_credit', False),'display_debit': context.get('display_debit', False),'journal_type': 'sale', 'tree_view_ref' : 'account_banking_payment_export.payment_order_populate_view_move_line_tree'} - 1 - - - - - - payment.order.populate.account.move.line.tree - account.move.line - - - - - - - - - - - - - - - - - - - - - - - diff --git a/account_banking_payment_export/workflow/account_payment.xml b/account_banking_payment_export/workflow/account_payment.xml deleted file mode 100644 index ac5cf4a79..000000000 --- a/account_banking_payment_export/workflow/account_payment.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - action_done() - - - - diff --git a/account_banking_payment_transfer/README.rst b/account_banking_payment_transfer/README.rst deleted file mode 100644 index 31bb64483..000000000 --- a/account_banking_payment_transfer/README.rst +++ /dev/null @@ -1,78 +0,0 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :alt: License: AGPL-3 - -Account Banking - Payments Transfer Account -=========================================== - -Payment order reconciliation infrastructure - -This module reconciles invoices as soon as the payment order -is sent, by creating a move to a transfer account (aka suspense account). -When the moves on the suspense account are reconciled (typically through -the bank statement reconciliation, the payment order moves to the done -status). - -Installation -============ - -This module depends on : -* account_banking_payment_export - -This module is part of the OCA/bank-payment suite. - -Configuration -============= - -To configure this module, you need to: - - * create a transfer account who allow reconciliation : option "Allow Reconciliation" activated. - * configure transfer account on payment mode. Go to the menu Accounting > Configuration > Miscellaneous > Payment Mode and complete the section "Transfer move settings". - -Usage -===== - -This module allows to reconcile transfer account and invoice by selecting on a payment order a payment mode with the option "transfer account" activated. - - -For further information, please visit: - - * https://www.odoo.com/forum/help-1 - -Known issues / Roadmap -====================== - - * No known issues - -Bug Tracker -=========== - -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. - -Credits -======= - -Contributors ------------- - -* Stéphane Bidoul -* Adrien Peiffer -* Alexis de Lattre -* Matt Choplin -* Alexandre Fayolle -* Danimar Ribeiro - -Maintainer ----------- - -.. image:: http://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: http://odoo-community.org - -This module is maintained by the OCA. - -OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. - -To contribute to this module, please visit http://odoo-community.org. diff --git a/account_banking_payment_transfer/__init__.py b/account_banking_payment_transfer/__init__.py deleted file mode 100644 index 9180c0e2e..000000000 --- a/account_banking_payment_transfer/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from . import model -from .post_install import set_date_sent diff --git a/account_banking_payment_transfer/__openerp__.py b/account_banking_payment_transfer/__openerp__.py deleted file mode 100644 index dcc22b189..000000000 --- a/account_banking_payment_transfer/__openerp__.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2009 EduSense BV (). -# (C) 2011 - 2013 Therp BV (). -# (C) 2014 ACSONE SA/NV (). -# -# All other contributions are (C) by their respective contributors -# -# All Rights Reserved -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -{ - 'name': 'Account Banking - Payments Transfer Account', - 'version': '8.0.0.2.0', - 'license': 'AGPL-3', - 'author': "Banking addons community,Odoo Community Association (OCA)", - 'website': 'https://github.com/OCA/banking', - 'category': 'Banking addons', - 'post_init_hook': 'set_date_sent', - 'depends': [ - 'account_banking_payment_export', - ], - 'data': [ - 'view/payment_mode.xml', - 'workflow/account_payment.xml', - 'view/account_payment.xml', - ], - 'test': [ - 'test/data.yml', - 'test/test_payment_method.yml', - 'test/test_partial_payment_refunded.yml', - 'test/test_partial_payment_transfer.yml', - - - ], - 'auto_install': False, - 'installable': False, -} diff --git a/account_banking_payment_transfer/i18n/account_banking_payment.pot b/account_banking_payment_transfer/i18n/account_banking_payment.pot deleted file mode 100644 index b870ba42c..000000000 --- a/account_banking_payment_transfer/i18n/account_banking_payment.pot +++ /dev/null @@ -1,340 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_banking_payment -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 7.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-10-25 15:58+0000\n" -"PO-Revision-Date: 2013-10-25 15:58+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_order_create -msgid "payment.order.create" -msgstr "" - -#. module: account_banking_payment -#: view:payment.order:0 -msgid "{\n" -" 'readonly': [('state', '=', 'normal')]\n" -" }" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:204 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:224 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:236 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:240 -#, python-format -msgid "Cannot unreconcile" -msgstr "" - -#. module: account_banking_payment -#: field:payment.mode,transfer_journal_id:0 -msgid "Transfer journal" -msgstr "" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_order -msgid "Payment Order" -msgstr "" - -#. module: account_banking_payment -#: field:payment.mode.type,payment_order_type:0 -#: field:payment.order,payment_order_type:0 -msgid "Payment order type" -msgstr "" - -#. module: account_banking_payment -#: help:payment.mode,payment_term_ids:0 -msgid "Limit selected invoices to invoices with these payment terms" -msgstr "" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_line -msgid "Payment Line" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:251 -#, python-format -msgid "No move line provided for line %s" -msgstr "" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_mode -msgid "Payment Mode" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/payment_line.py:131 -#, python-format -msgid "Can not reconcile" -msgstr "" - -#. module: account_banking_payment -#: field:payment.line,date_done:0 -msgid "Date Confirmed" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:179 -#, python-format -msgid "Cannot reconcile" -msgstr "" - -#. module: account_banking_payment -#: field:banking.transaction.wizard,manual_payment_order_id:0 -msgid "Match this payment order" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:255 -#, python-format -msgid "Move line %s has already been paid/reconciled" -msgstr "" - -#. module: account_banking_payment -#: help:payment.mode,transfer_account_id:0 -msgid "Pay off lines in sent orders with a move on this account. For debit type modes only. You can only select accounts of type regular that are marked for reconciliation" -msgstr "" - -#. module: account_banking_payment -#: view:payment.order:0 -msgid "{\n" -" 'invisible':[('state','!=','draft')]\n" -" }" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:261 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:265 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:284 -#, python-format -msgid "Cannot cancel link with storno" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:237 -#, python-format -msgid "Cannot unreconcile: no payment or direct debit order" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:205 -#, python-format -msgid "Cannot unreconcile payment order: Workflow will not allow it." -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:241 -#, python-format -msgid "Direct debit order" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:154 -#, python-format -msgid "Cannot link with storno" -msgstr "" - -#. module: account_banking_payment -#: field:banking.import.transaction,payment_order_id:0 -#: field:banking.transaction.wizard,payment_order_id:0 -msgid "Payment order to reconcile" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:241 -#, python-format -msgid "Payment orders without transfer move lines cannot be unreconciled this way" -msgstr "" - -#. module: account_banking_payment -#: selection:payment.mode.type,payment_order_type:0 -#: selection:payment.order,payment_order_type:0 -msgid "Payment" -msgstr "" - -#. module: account_banking_payment -#: field:payment.mode,payment_term_ids:0 -msgid "Payment terms" -msgstr "" - -#. module: account_banking_payment -#: view:payment.mode:0 -msgid "Transfer move settings" -msgstr "" - -#. module: account_banking_payment -#: selection:payment.mode.type,payment_order_type:0 -#: selection:payment.order,payment_order_type:0 -msgid "Direct debit" -msgstr "" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_banking_import_transaction -msgid "Bank import transaction" -msgstr "" - -#. module: account_banking_payment -#: view:payment.mode:0 -msgid "Optional filter by payment term" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/payment_line.py:136 -#: code:addons/account_banking_payment/model/payment_line.py:142 -#, python-format -msgid "Move line %s has already been reconciled" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:271 -#, python-format -msgid "%s for %s" -msgstr "" - -#. module: account_banking_payment -#: field:banking.import.transaction,payment_order_ids:0 -msgid "Payment orders" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:155 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:262 -#, python-format -msgid "No direct debit order item" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:266 -#, python-format -msgid "The direct debit order item is not marked for storno" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:285 -#, python-format -msgid "Line id not found" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_transaction_wizard.py:62 -#, python-format -msgid "When matching a payment order, the amounts have to match exactly" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:250 -#: code:addons/account_banking_payment/model/account_payment.py:254 -#: code:addons/account_banking_payment/model/banking_transaction_wizard.py:61 -#: code:addons/account_banking_payment/model/payment_line.py:135 -#: code:addons/account_banking_payment/model/payment_line.py:141 -#, python-format -msgid "Error" -msgstr "" - -#. module: account_banking_payment -#: field:payment.mode,transfer_account_id:0 -msgid "Transfer account" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:225 -#, python-format -msgid "Cannot unreconcile: this operation is not yet supported for match type 'payment'" -msgstr "" - -#. module: account_banking_payment -#: field:banking.transaction.wizard,payment_line_id:0 -msgid "Matching payment or storno" -msgstr "" - -#. module: account_banking_payment -#: field:payment.order,date_sent:0 -msgid "Send date" -msgstr "" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_banking_import_line -msgid "Bank import lines" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/payment_order_create.py:88 -#, python-format -msgid "Entry Lines" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/payment_line.py:132 -#, python-format -msgid "No move line for line %s" -msgstr "" - -#. module: account_banking_payment -#: field:banking.transaction.wizard,manual_payment_line_id:0 -msgid "Match this payment line" -msgstr "" - -#. module: account_banking_payment -#: field:banking.transaction.wizard,payment_order_ids:0 -msgid "Matching payment orders" -msgstr "" - -#. module: account_banking_payment -#: field:payment.line,transit_move_line_id:0 -msgid "Debit move line" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:240 -#: field:banking.import.line,payment_order_id:0 -#, python-format -msgid "Payment order" -msgstr "" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:180 -#, python-format -msgid "Cannot reconcile: no direct debit order" -msgstr "" - -#. module: account_banking_payment -#: help:payment.mode,transfer_journal_id:0 -msgid "Journal to write payment entries when confirming a debit order of this mode" -msgstr "" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_mode_type -msgid "Payment Mode Type" -msgstr "" - -#. module: account_banking_payment -#: field:banking.import.transaction,payment_line_id:0 -msgid "Payment line" -msgstr "" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_banking_transaction_wizard -msgid "Match transaction" -msgstr "" - -#. module: account_banking_payment -#: help:payment.line,transit_move_line_id:0 -msgid "Move line through which the debit order pays the invoice" -msgstr "" - -#. module: account_banking_payment -#: field:payment.line,msg:0 -msgid "Message" -msgstr "" - diff --git a/account_banking_payment_transfer/i18n/nl.po b/account_banking_payment_transfer/i18n/nl.po deleted file mode 100644 index 0dbdee7ca..000000000 --- a/account_banking_payment_transfer/i18n/nl.po +++ /dev/null @@ -1,370 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_banking_payment -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 7.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-10-25 15:58+0000\n" -"PO-Revision-Date: 2014-03-26 14:48+0000\n" -"Last-Translator: Erwin van der Ploeg (BAS Solutions) \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n" -"X-Generator: Launchpad (build 17031)\n" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_order_create -msgid "payment.order.create" -msgstr "payment.order.create" - -#. module: account_banking_payment -#: view:payment.order:0 -msgid "" -"{\n" -" 'readonly': [('state', '=', 'normal')]\n" -" }" -msgstr "" -"{\n" -" 'readonly': [('state', '=', 'normal')]\n" -" }" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:204 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:224 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:236 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:240 -#, python-format -msgid "Cannot unreconcile" -msgstr "Kan niet afletteren" - -#. module: account_banking_payment -#: field:payment.mode,transfer_journal_id:0 -msgid "Transfer journal" -msgstr "Overschrijf dagboek" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_order -msgid "Payment Order" -msgstr "Betalingsopdracht" - -#. module: account_banking_payment -#: field:payment.mode.type,payment_order_type:0 -#: field:payment.order,payment_order_type:0 -msgid "Payment order type" -msgstr "Type betaalopdracht" - -#. module: account_banking_payment -#: help:payment.mode,payment_term_ids:0 -msgid "Limit selected invoices to invoices with these payment terms" -msgstr "" -"Beperk de geselecteerde facturen tot facturen met deze betaalconditie" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_line -msgid "Payment Line" -msgstr "Betaalregel" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:251 -#, python-format -msgid "No move line provided for line %s" -msgstr "Geen mutatieregel beschikbaar voor regel %s" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_mode -msgid "Payment Mode" -msgstr "Betaalwijze" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/payment_line.py:131 -#, python-format -msgid "Can not reconcile" -msgstr "Kan niet afletteren" - -#. module: account_banking_payment -#: field:payment.line,date_done:0 -msgid "Date Confirmed" -msgstr "Datum bevestigd" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:179 -#, python-format -msgid "Cannot reconcile" -msgstr "Kan niet afletteren" - -#. module: account_banking_payment -#: field:banking.transaction.wizard,manual_payment_order_id:0 -msgid "Match this payment order" -msgstr "Match deze betaalopdracht" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:255 -#, python-format -msgid "Move line %s has already been paid/reconciled" -msgstr "Mutatie regel %s is al betaald/afgeletterd" - -#. module: account_banking_payment -#: help:payment.mode,transfer_account_id:0 -msgid "" -"Pay off lines in sent orders with a move on this account. For debit type " -"modes only. You can only select accounts of type regular that are marked for " -"reconciliation" -msgstr "" -"Betaalregels in verzonden opdrachten met een mutatie op deze rekening. " -"Alleen voor incasso's. U kunt alleen een rekening selecteren van het " -"standaard soort, welke zijn gemarkeerd voor afletteren." - -#. module: account_banking_payment -#: view:payment.order:0 -msgid "" -"{\n" -" 'invisible':[('state','!=','draft')]\n" -" }" -msgstr "" -"{\n" -" 'invisible':[('state','!=','draft')]\n" -" }" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:261 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:265 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:284 -#, python-format -msgid "Cannot cancel link with storno" -msgstr "Niet mogelijk koppeling met storno te annuleren" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:237 -#, python-format -msgid "Cannot unreconcile: no payment or direct debit order" -msgstr "" -"Alettering ongedaan maken niet mogelijk: Geen betaling of incasso opdracht" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:205 -#, python-format -msgid "Cannot unreconcile payment order: Workflow will not allow it." -msgstr "" -"Alettering ongedaan maken betaalopdracht niet mogelijk: Workflow staat dit " -"niet toe." - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:241 -#, python-format -msgid "Direct debit order" -msgstr "Incasso opdracht" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:154 -#, python-format -msgid "Cannot link with storno" -msgstr "Kan niet koppelen met een storno" - -#. module: account_banking_payment -#: field:banking.import.transaction,payment_order_id:0 -#: field:banking.transaction.wizard,payment_order_id:0 -msgid "Payment order to reconcile" -msgstr "Betaalopdracht ter aflettering" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:241 -#, python-format -msgid "" -"Payment orders without transfer move lines cannot be unreconciled this way" -msgstr "" -"Van betaalopdrachten zonder een transactie mutatie, kan het afletteren niet " -"ongedaan worden gemaakt op deze manier." - -#. module: account_banking_payment -#: selection:payment.mode.type,payment_order_type:0 -#: selection:payment.order,payment_order_type:0 -msgid "Payment" -msgstr "Betaling" - -#. module: account_banking_payment -#: field:payment.mode,payment_term_ids:0 -msgid "Payment terms" -msgstr "Betaalcondities" - -#. module: account_banking_payment -#: view:payment.mode:0 -msgid "Transfer move settings" -msgstr "Overschrijving instellingen" - -#. module: account_banking_payment -#: selection:payment.mode.type,payment_order_type:0 -#: selection:payment.order,payment_order_type:0 -msgid "Direct debit" -msgstr "Incasso-opdracht" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_banking_import_transaction -msgid "Bank import transaction" -msgstr "Geïmporteerde bankmutatie" - -#. module: account_banking_payment -#: view:payment.mode:0 -msgid "Optional filter by payment term" -msgstr "Optioneel filter op betaalconditie" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/payment_line.py:136 -#: code:addons/account_banking_payment/model/payment_line.py:142 -#, python-format -msgid "Move line %s has already been reconciled" -msgstr "Mutatieregel %s is al afgeletterd" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:271 -#, python-format -msgid "%s for %s" -msgstr "%s voor %s" - -#. module: account_banking_payment -#: field:banking.import.transaction,payment_order_ids:0 -msgid "Payment orders" -msgstr "Betaalopdrachten" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:155 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:262 -#, python-format -msgid "No direct debit order item" -msgstr "Geen incasso opdracht item" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:266 -#, python-format -msgid "The direct debit order item is not marked for storno" -msgstr "Het incasso opdracht item is niet gemarkeerd voor storno" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:285 -#, python-format -msgid "Line id not found" -msgstr "Regel ID niet gevonden" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_transaction_wizard.py:62 -#, python-format -msgid "When matching a payment order, the amounts have to match exactly" -msgstr "" -"Bij het matchen van een betaalopdracht, dienen de bedragen exact overeen te " -"komen." - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:250 -#: code:addons/account_banking_payment/model/account_payment.py:254 -#: code:addons/account_banking_payment/model/banking_transaction_wizard.py:61 -#: code:addons/account_banking_payment/model/payment_line.py:135 -#: code:addons/account_banking_payment/model/payment_line.py:141 -#, python-format -msgid "Error" -msgstr "Fout" - -#. module: account_banking_payment -#: field:payment.mode,transfer_account_id:0 -msgid "Transfer account" -msgstr "Overschrijf rekening" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:225 -#, python-format -msgid "" -"Cannot unreconcile: this operation is not yet supported for match type " -"'payment'" -msgstr "" -"Afletteren ongedaan maken niet mogelijk: deze bewerking wordt nog niet " -"ondersteund voor het match type 'betaling'" - -#. module: account_banking_payment -#: field:banking.transaction.wizard,payment_line_id:0 -msgid "Matching payment or storno" -msgstr "Gevonden betaling of storno" - -#. module: account_banking_payment -#: field:payment.order,date_sent:0 -msgid "Send date" -msgstr "Datum verstuurd" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_banking_import_line -msgid "Bank import lines" -msgstr "Bankimportregels" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/payment_order_create.py:88 -#, python-format -msgid "Entry Lines" -msgstr "Boekingsregels" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/payment_line.py:132 -#, python-format -msgid "No move line for line %s" -msgstr "Geen boekingsregel voor regel %s" - -#. module: account_banking_payment -#: field:banking.transaction.wizard,manual_payment_line_id:0 -msgid "Match this payment line" -msgstr "Match deze betaalregel" - -#. module: account_banking_payment -#: field:banking.transaction.wizard,payment_order_ids:0 -msgid "Matching payment orders" -msgstr "Gekoppelde betaalopdrachten" - -#. module: account_banking_payment -#: field:payment.line,transit_move_line_id:0 -msgid "Debit move line" -msgstr "Debit regel" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:240 -#: field:banking.import.line,payment_order_id:0 -#, python-format -msgid "Payment order" -msgstr "Betaalopdracht" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:180 -#, python-format -msgid "Cannot reconcile: no direct debit order" -msgstr "Alettering niet mogelijk: Geen incasso opdracht" - -#. module: account_banking_payment -#: help:payment.mode,transfer_journal_id:0 -msgid "" -"Journal to write payment entries when confirming a debit order of this mode" -msgstr "" -"Dagboek voor het boeken van betalingen bij het bevestigen van een incasso in " -"deze mode" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_mode_type -msgid "Payment Mode Type" -msgstr "Betaalmode soort" - -#. module: account_banking_payment -#: field:banking.import.transaction,payment_line_id:0 -msgid "Payment line" -msgstr "Betaling" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_banking_transaction_wizard -msgid "Match transaction" -msgstr "Match deze mutatie" - -#. module: account_banking_payment -#: help:payment.line,transit_move_line_id:0 -msgid "Move line through which the debit order pays the invoice" -msgstr "Mutatie waardoor de incasso opdracht de factuur betaald." - -#. module: account_banking_payment -#: field:payment.line,msg:0 -msgid "Message" -msgstr "Bericht" diff --git a/account_banking_payment_transfer/i18n/pt_BR.po b/account_banking_payment_transfer/i18n/pt_BR.po deleted file mode 100644 index cd3f5288e..000000000 --- a/account_banking_payment_transfer/i18n/pt_BR.po +++ /dev/null @@ -1,368 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_banking_payment -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 7.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-10-25 15:58+0000\n" -"PO-Revision-Date: 2014-03-26 14:48+0000\n" -"Last-Translator: Danimar Ribeiro\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n" -"X-Generator: Launchpad (build 17031)\n" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_order_create -msgid "payment.order.create" -msgstr "payment.order.create" - -#. module: account_banking_payment -#: view:payment.order:0 -msgid "" -"{\n" -" 'readonly': [('state', '=', 'normal')]\n" -" }" -msgstr "" -"{\n" -" 'readonly': [('state', '=', 'normal')]\n" -" }" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:204 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:224 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:236 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:240 -#, python-format -msgid "Cannot unreconcile" -msgstr "Não é possível desfazer a reconciliação" - -#. module: account_banking_payment -#: field:payment.mode,transfer_journal_id:0 -msgid "Transfer journal" -msgstr "Transferir Diário" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_order -msgid "Payment Order" -msgstr "Ordem de Pagamento" - -#. module: account_banking_payment -#: field:payment.mode.type,payment_order_type:0 -#: field:payment.order,payment_order_type:0 -msgid "Payment order type" -msgstr "Tipo de Ordem de Pagamento" - -#. module: account_banking_payment -#: help:payment.mode,payment_term_ids:0 -msgid "Limit selected invoices to invoices with these payment terms" -msgstr "Limitar as faturas para serem pagas com estas condições de pagamento" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_line -msgid "Payment Line" -msgstr "Linha de Pagamento" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:251 -#, python-format -msgid "No move line provided for line %s" -msgstr "Nenhuma movimentação fornecida para a linha %s" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_mode -msgid "Payment Mode" -msgstr "Modo de Pagamento" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/payment_line.py:131 -#, python-format -msgid "Can not reconcile" -msgstr "Não é possível reconciliar" - -#. module: account_banking_payment -#: field:payment.line,date_done:0 -msgid "Date Confirmed" -msgstr "Data Confirmada" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:179 -#, python-format -msgid "Cannot reconcile" -msgstr "Não é possível reconciliar" - -#. module: account_banking_payment -#: field:banking.transaction.wizard,manual_payment_order_id:0 -msgid "Match this payment order" -msgstr "Combinar esta Ordem de Pagamento" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:255 -#, python-format -msgid "Move line %s has already been paid/reconciled" -msgstr "Esta linha de movimentação %s já foi paga/reconciliada" - -#. module: account_banking_payment -#: help:payment.mode,transfer_account_id:0 -msgid "" -"Pay off lines in sent orders with a move on this account. For debit type " -"modes only. You can only select accounts of type regular that are marked for " -"reconciliation" -msgstr "" -"Pagar os registros nas ordens enviadas com uma movimentação nesta conta. Para modos " -"do tipo débito apenas. Você pode selecionar apenas contas do tipo regular que estão marcadas " -"para reconciliação." - -#. module: account_banking_payment -#: view:payment.order:0 -msgid "" -"{\n" -" 'invisible':[('state','!=','draft')]\n" -" }" -msgstr "" -"{\n" -" 'invisible':[('state','!=','draft')]\n" -" }" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:261 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:265 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:284 -#, python-format -msgid "Cannot cancel link with storno" -msgstr "Não é possível cancelar ligação com estorno" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:237 -#, python-format -msgid "Cannot unreconcile: no payment or direct debit order" -msgstr "" -"Não é possível desconciliar: sem pagamento ou ordem de débito direto" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:205 -#, python-format -msgid "Cannot unreconcile payment order: Workflow will not allow it." -msgstr "" -"Não pode desconciliar uma ordem de pagamento: o workflow não irá permitir." - - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:241 -#, python-format -msgid "Direct debit order" -msgstr "Ordem de Débito Direto" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:154 -#, python-format -msgid "Cannot link with storno" -msgstr "Não é possível ligar com um estorno" - -#. module: account_banking_payment -#: field:banking.import.transaction,payment_order_id:0 -#: field:banking.transaction.wizard,payment_order_id:0 -msgid "Payment order to reconcile" -msgstr "Ordem de pagamento para reconciliar" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:241 -#, python-format -msgid "" -"Payment orders without transfer move lines cannot be unreconciled this way" -msgstr "" -"Ordens de pagamento sem movimentações de transferência não podem ser desconciliadas desta maneira." - -#. module: account_banking_payment -#: selection:payment.mode.type,payment_order_type:0 -#: selection:payment.order,payment_order_type:0 -msgid "Payment" -msgstr "Pagamento" - -#. module: account_banking_payment -#: field:payment.mode,payment_term_ids:0 -msgid "Payment terms" -msgstr "Condições de Pagamento" - -#. module: account_banking_payment -#: view:payment.mode:0 -msgid "Transfer move settings" -msgstr "Definições de transferência e movimentações" - -#. module: account_banking_payment -#: selection:payment.mode.type,payment_order_type:0 -#: selection:payment.order,payment_order_type:0 -msgid "Direct debit" -msgstr "Débito Direto" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_banking_import_transaction -msgid "Bank import transaction" -msgstr "Transação de importação bancária" - -#. module: account_banking_payment -#: view:payment.mode:0 -msgid "Optional filter by payment term" -msgstr "Condições de pagamento permitidas" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/payment_line.py:136 -#: code:addons/account_banking_payment/model/payment_line.py:142 -#, python-format -msgid "Move line %s has already been reconciled" -msgstr "Esta movimentação %s já foi reconciliada" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:271 -#, python-format -msgid "%s for %s" -msgstr "%s para %s" - -#. module: account_banking_payment -#: field:banking.import.transaction,payment_order_ids:0 -msgid "Payment orders" -msgstr "Ordens de Pagamento" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:155 -#: code:addons/account_banking_payment/model/banking_import_transaction.py:262 -#, python-format -msgid "No direct debit order item" -msgstr "Nenhuma Ordem de Débito Direto" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:266 -#, python-format -msgid "The direct debit order item is not marked for storno" -msgstr "A Ordem de Débito Direto não está marcada para estorno" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:285 -#, python-format -msgid "Line id not found" -msgstr "Id da linha não encontrado" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_transaction_wizard.py:62 -#, python-format -msgid "When matching a payment order, the amounts have to match exactly" -msgstr "" -"Quando combinando uma ordem de pagamento, os valores devem corresponder exatamente " - - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:250 -#: code:addons/account_banking_payment/model/account_payment.py:254 -#: code:addons/account_banking_payment/model/banking_transaction_wizard.py:61 -#: code:addons/account_banking_payment/model/payment_line.py:135 -#: code:addons/account_banking_payment/model/payment_line.py:141 -#, python-format -msgid "Error" -msgstr "Erro" - -#. module: account_banking_payment -#: field:payment.mode,transfer_account_id:0 -msgid "Transfer account" -msgstr "Conta de Transferência" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:225 -#, python-format -msgid "" -"Cannot unreconcile: this operation is not yet supported for match type " -"'payment'" -msgstr "" -"Não pode desfazer reconciliação: esta operação ainda não é suportada para este tipo: " -"'pagamento'" - -#. module: account_banking_payment -#: field:banking.transaction.wizard,payment_line_id:0 -msgid "Matching payment or storno" -msgstr "Combinando pagamentos ou estornos" - -#. module: account_banking_payment -#: field:payment.order,date_sent:0 -msgid "Send date" -msgstr "Data de envio" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_banking_import_line -msgid "Bank import lines" -msgstr "Linhas de importação bancária" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/payment_order_create.py:88 -#, python-format -msgid "Entry Lines" -msgstr "Linhas de entrada" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/payment_line.py:132 -#, python-format -msgid "No move line for line %s" -msgstr "Sem movimentações para a linha %s" - -#. module: account_banking_payment -#: field:banking.transaction.wizard,manual_payment_line_id:0 -msgid "Match this payment line" -msgstr "Combine esta linha de pagamento" - -#. module: account_banking_payment -#: field:banking.transaction.wizard,payment_order_ids:0 -msgid "Matching payment orders" -msgstr "Combinando ordens de pagamento" - -#. module: account_banking_payment -#: field:payment.line,transit_move_line_id:0 -msgid "Debit move line" -msgstr "Movimentação de Débito" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/account_payment.py:240 -#: field:banking.import.line,payment_order_id:0 -#, python-format -msgid "Payment order" -msgstr "Ordem de Pagamento" - -#. module: account_banking_payment -#: code:addons/account_banking_payment/model/banking_import_transaction.py:180 -#, python-format -msgid "Cannot reconcile: no direct debit order" -msgstr "Não é possível reconciliar: nenhuma Ordem de Débito Direto" - -#. module: account_banking_payment -#: help:payment.mode,transfer_journal_id:0 -msgid "" -"Journal to write payment entries when confirming a debit order of this mode" -msgstr "" -"Entrada de diário para salvar os pagamentos quando confirmar a ordem de pagamento deste modo" -"deze mode" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_payment_mode_type -msgid "Payment Mode Type" -msgstr "Tipo do Modo de Pagamento" - -#. module: account_banking_payment -#: field:banking.import.transaction,payment_line_id:0 -msgid "Payment line" -msgstr "Linha de Pagamento" - -#. module: account_banking_payment -#: model:ir.model,name:account_banking_payment.model_banking_transaction_wizard -msgid "Match transaction" -msgstr "Combine as transações" - -#. module: account_banking_payment -#: help:payment.line,transit_move_line_id:0 -msgid "Move line through which the debit order pays the invoice" -msgstr "Movimentação pela qual a ordem de débito paga a fatura." - -#. module: account_banking_payment -#: field:payment.line,msg:0 -msgid "Message" -msgstr "Mensagem" diff --git a/account_banking_payment_transfer/model/__init__.py b/account_banking_payment_transfer/model/__init__.py deleted file mode 100644 index 7a8cfda04..000000000 --- a/account_banking_payment_transfer/model/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from . import account_payment -from . import payment_line -from . import payment_mode -from . import account_move_reconcile diff --git a/account_banking_payment_transfer/model/account_move_reconcile.py b/account_banking_payment_transfer/model/account_move_reconcile.py deleted file mode 100644 index 701dd14a1..000000000 --- a/account_banking_payment_transfer/model/account_move_reconcile.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2014 ACSONE SA (). -# Copyright (C) 2014 Akretion (www.akretion.com) -# -# All other contributions are (C) by their respective contributors -# -# All Rights Reserved -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, workflow, api - - -class AccountMoveReconcile(models.Model): - _inherit = 'account.move.reconcile' - - @api.multi - def unlink(self): - """ - Workflow triggers upon unreconcile. This should go into the core. - """ - line_ids = [] - for reconcile in self: - for move_line in reconcile.line_id: - line_ids.append(move_line.id) - res = super(AccountMoveReconcile, self).unlink() - for line_id in line_ids: - workflow.trg_trigger( - self._uid, 'account.move.line', line_id, self._cr) - return res diff --git a/account_banking_payment_transfer/model/account_payment.py b/account_banking_payment_transfer/model/account_payment.py deleted file mode 100644 index eafd6260b..000000000 --- a/account_banking_payment_transfer/model/account_payment.py +++ /dev/null @@ -1,298 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2009 EduSense BV (). -# (C) 2011 - 2013 Therp BV (). -# (C) 2014 ACSONE SA (). -# (C) 2014 Akretion (www.akretion.com) -# -# All other contributions are (C) by their respective contributors -# -# All Rights Reserved -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields, api, _ - - -class PaymentOrder(models.Model): - ''' - Enable extra states for payment exports - ''' - _inherit = 'payment.order' - - @api.multi - def get_partial_reconcile_ids(self): - self.ensure_one() - reconcile_partial_ids = [line.move_line_id.reconcile_partial_id.id - for line in self.line_ids if - line.move_line_id.reconcile_partial_id.id] - return reconcile_partial_ids - - @api.one - def get_partial_reconcile_count(self): - self.partial_reconcile_count = len(self.get_partial_reconcile_ids()) - - date_scheduled = fields.Date(states={ - 'sent': [('readonly', True)], - 'rejected': [('readonly', True)], - 'done': [('readonly', True)], - }) - reference = fields.Char(states={ - 'sent': [('readonly', True)], - 'rejected': [('readonly', True)], - 'done': [('readonly', True)], - }) - mode = fields.Many2one(states={ - 'sent': [('readonly', True)], - 'rejected': [('readonly', True)], - 'done': [('readonly', True)], - }) - state = fields.Selection(selection_add=[ - ('sent', 'Sent'), - ('rejected', 'Rejected'), - ], string='State') - line_ids = fields.One2many(states={ - 'open': [('readonly', True)], - 'cancel': [('readonly', True)], - 'sent': [('readonly', True)], - 'rejected': [('readonly', True)], - 'done': [('readonly', True)] - }) - user_id = fields.Many2one(states={ - 'sent': [('readonly', True)], - 'rejected': [('readonly', True)], - 'done': [('readonly', True)] - }) - date_prefered = fields.Selection(states={ - 'sent': [('readonly', True)], - 'rejected': [('readonly', True)], - 'done': [('readonly', True)] - }) - date_sent = fields.Date(string='Send date', readonly=True) - partial_reconcile_count = fields\ - .Integer(string='Partial Reconciles Counter', - compute='get_partial_reconcile_count') - - @api.multi - def action_rejected(self): - return True - - @api.multi - def action_done(self): - for line in self.line_ids: - line.date_done = fields.Date.context_today(self) - return super(PaymentOrder, self).action_done() - - @api.multi - def _get_transfer_move_lines(self): - """ - Get the transfer move lines (on the transfer account). - """ - res = [] - for order in self: - for order_line in order.line_ids: - move_line = order_line.transfer_move_line_id - if move_line: - res.append(move_line) - return res - - @api.multi - def get_transfer_move_line_ids(self, *args): - '''Used in the workflow for trigger_expr_id''' - return [move_line.id for move_line in self._get_transfer_move_lines()] - - @api.multi - def test_done(self): - """ - Test if all moves on the transfer account are reconciled. - - Called from the workflow to move to the done state when - all transfer move have been reconciled through bank statements. - """ - return all([move_line.reconcile_id for move_line in - self._get_transfer_move_lines()]) - - @api.multi - def test_undo_done(self): - return not self.test_done() - - @api.multi - def _prepare_transfer_move(self): - vals = { - 'journal_id': self.mode.transfer_journal_id.id, - 'ref': '%s %s' % ( - self.payment_order_type[:3].upper(), self.reference) - } - return vals - - @api.multi - def _prepare_move_line_transfer_account( - self, amount, move, payment_lines, labels): - if len(payment_lines) == 1: - partner_id = payment_lines[0].partner_id.id - name = _('%s line %s') % (labels[self.payment_order_type], - payment_lines[0].name) - if payment_lines[0].move_line_id.id and\ - payment_lines[0].move_line_id.move_id.state != 'draft': - name = "%s (%s)" % (name, - payment_lines[0].move_line_id.move_id.name) - elif payment_lines[0].ml_inv_ref.id: - name = "%s (%s)" % (name, - payment_lines[0].ml_inv_ref.number) - else: - partner_id = False - name = '%s %s' % ( - labels[self.payment_order_type], self.reference) - date_maturity = payment_lines[0].date - vals = { - 'name': name, - 'move_id': move.id, - 'partner_id': partner_id, - 'account_id': self.mode.transfer_account_id.id, - 'credit': (self.payment_order_type == 'payment' and - amount or 0.0), - 'debit': (self.payment_order_type == 'debit' and - amount or 0.0), - 'date_maturity': date_maturity, - } - return vals - - @api.multi - def _prepare_move_line_partner_account(self, line, move, labels): - if line.move_line_id: - account_id = line.move_line_id.account_id.id - else: - if self.payment_order_type == 'debit': - account_id = line.partner_id.property_account_receivable.id - else: - account_id = line.partner_id.property_account_payable.id - vals = { - 'name': _('%s line %s') % ( - labels[self.payment_order_type], line.name), - 'move_id': move.id, - 'partner_id': line.partner_id.id, - 'account_id': account_id, - 'credit': (self.payment_order_type == 'debit' and - line.amount or 0.0), - 'debit': (self.payment_order_type == 'payment' and - line.amount or 0.0), - } - return vals - - @api.multi - def action_sent_no_move_line_hook(self, pay_line): - """This function is designed to be inherited""" - return - - @api.multi - def _create_move_line_partner_account(self, line, move, labels): - """This method is designed to be inherited in a custom module""" - - # TODO: take multicurrency into account - aml_obj = self.env['account.move.line'] - # create the payment/debit counterpart move line - # on the partner account - partner_ml_vals = self._prepare_move_line_partner_account( - line, move, labels) - partner_move_line = aml_obj.create(partner_ml_vals) - - # register the payment/debit move line - # on the payment line and call reconciliation on it - line.write({'transit_move_line_id': partner_move_line.id}) - - @api.multi - def _reconcile_payment_lines(self, payment_lines): - for line in payment_lines: - if line.move_line_id: - line.debit_reconcile() - else: - self.action_sent_no_move_line_hook(line) - - @api.one - def action_sent(self): - """ - Create the moves that pay off the move lines from - the debit order. This happens when the debit order file is - generated. - """ - am_obj = self.env['account.move'] - aml_obj = self.env['account.move.line'] - labels = { - 'payment': _('Payment order'), - 'debit': _('Direct debit order'), - } - if self.mode.transfer_journal_id and self.mode.transfer_account_id: - # prepare a dict "trfmoves" that can be used when - # self.mode.transfer_move_option = date or line - # key = unique identifier (date or True or line.id) - # value = [pay_line1, pay_line2, ...] - trfmoves = {} - if self.mode.transfer_move_option == 'line': - for line in self.line_ids: - trfmoves[line.id] = [line] - else: - if self.date_prefered in ('now', 'fixed'): - trfmoves[True] = [] - for line in self.line_ids: - trfmoves[True].append(line) - else: # date_prefered == due - for line in self.line_ids: - if line.date in trfmoves: - trfmoves[line.date].append(line) - else: - trfmoves[line.date] = [line] - - for identifier, lines in trfmoves.iteritems(): - mvals = self._prepare_transfer_move() - move = am_obj.create(mvals) - total_amount = 0 - for line in lines: - total_amount += line.amount - self._create_move_line_partner_account(line, move, labels) - # create the payment/debit move line on the transfer account - trf_ml_vals = self._prepare_move_line_transfer_account( - total_amount, move, lines, labels) - aml_obj.create(trf_ml_vals) - self._reconcile_payment_lines(lines) - - # consider entry_posted on account_journal - if move.journal_id.entry_posted: - # post account move - move.post() - - # State field is written by act_sent_wait - self.write({'date_sent': fields.Date.context_today(self)}) - return True - - @api.multi - def partial(self): - self.ensure_one() - view_id = self.env.ref('account.view_move_line_tree').id - reconcile_partial_ids = self.get_partial_reconcile_ids() - reconcile_partial_domain = [('reconcile_partial_id', 'in', - reconcile_partial_ids)] - return { - 'name': _('Partial Reconcile Moves Line'), - 'context': self.env.context, - 'domain': reconcile_partial_domain, - 'view_type': 'form', - 'view_mode': 'tree,form', - 'res_model': 'account.move.line', - 'views': [(view_id, 'tree')], - 'type': 'ir.actions.act_window', - 'target': 'current', - } diff --git a/account_banking_payment_transfer/model/payment_line.py b/account_banking_payment_transfer/model/payment_line.py deleted file mode 100644 index c99c5949b..000000000 --- a/account_banking_payment_transfer/model/payment_line.py +++ /dev/null @@ -1,144 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2009 EduSense BV (). -# (C) 2011 - 2013 Therp BV (). -# -# All other contributions are (C) by their respective contributors -# -# All Rights Reserved -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## -from openerp import models, fields, workflow, api, exceptions -from openerp.tools.translate import _ - - -class PaymentLine(models.Model): - ''' - Add some fields; make destination bank account - mandatory, as it makes no sense to send payments into thin air. - Edit: Payments can be by cash too, which is prohibited by mandatory bank - accounts. - ''' - _inherit = 'payment.line' - - @api.multi - def _get_transfer_move_line(self): - for order_line in self: - if order_line.transit_move_line_id: - order_type = order_line.order_id.payment_order_type - trf_lines = order_line.transit_move_line_id.move_id.line_id - for move_line in trf_lines: - if order_type == 'debit' and move_line.debit > 0: - order_line.transfer_move_line_id = move_line - elif order_type == 'payment' and move_line.credit > 0: - order_line.transfer_move_line_id = move_line - - msg = fields.Char('Message', required=False, readonly=True, default='') - date_done = fields.Date('Date Confirmed', select=True, readonly=True) - transit_move_line_id = fields.Many2one( - 'account.move.line', string='Transfer move line', readonly=True, - help="Move line through which the payment/debit order " - "pays the invoice") - transfer_move_line_id = fields.Many2one( - 'account.move.line', compute='_get_transfer_move_line', - string='Transfer move line counterpart', - help="Counterpart move line on the transfer account") - - """ - Hooks for processing direct debit orders, such as implemented in - account_direct_debit module. - """ - @api.multi - def get_storno_account_id(self, amount, currency_id): - """ - Hook for verifying a match of the payment line with the amount. - Return the account associated with the storno. - Used in account_banking interactive mode - :param payment_line_id: the single payment line id - :param amount: the (signed) amount debited from the bank account - :param currency: the bank account's currency *browse object* - :return: an account if there is a full match, False otherwise - :rtype: database id of an account.account resource. - """ - - return False - - @api.multi - def debit_storno(self, amount, currency_id, storno_retry=True): - """ - Hook for handling a canceled item of a direct debit order. - Presumably called from a bank statement import routine. - - Decide on the direction that the invoice's workflow needs to take. - You may optionally return an incomplete reconcile for the caller - to reconcile the now void payment. - - :param payment_line_id: the single payment line id - :param amount: the (negative) amount debited from the bank account - :param currency: the bank account's currency *browse object* - :param boolean storno_retry: whether the storno is considered fatal \ - or not. - :return: an incomplete reconcile for the caller to fill - :rtype: database id of an account.move.reconcile resource. - """ - - return False - - @api.one - def debit_reconcile(self): - """ - Reconcile a debit order's payment line with the the move line - that it is based on. Called from payment_order.action_sent(). - As the amount is derived directly from the counterpart move line, - we do not expect a write off. Take partial reconciliations into - account though. - - :param payment_line_id: the single id of the canceled payment line - """ - - transit_move_line = self.transit_move_line_id - torec_move_line = self.move_line_id - - if (not transit_move_line or not torec_move_line): - raise exceptions.except_orm( - _('Can not reconcile'), - _('No move line for line %s') % self.name - ) - if torec_move_line.reconcile_id: - raise exceptions.except_orm( - _('Error'), - _('Move line %s has already been reconciled') % - torec_move_line.name - ) - if (transit_move_line.reconcile_id or - transit_move_line.reconcile_partial_id): - raise exceptions.except_orm( - _('Error'), - _('Move line %s has already been reconciled') % - transit_move_line.name - ) - - line_ids = [transit_move_line.id, torec_move_line.id] - self.env['account.move.line'].browse(line_ids).reconcile_partial( - type='auto') - - # If a bank transaction of a storno was first confirmed - # and now canceled (the invoice is now in state 'debit_denied' - if torec_move_line.invoice: - workflow.trg_validate( - self.env.uid, 'account.invoice', torec_move_line.invoice.id, - 'undo_debit_denied', self.env.cr) diff --git a/account_banking_payment_transfer/model/payment_mode.py b/account_banking_payment_transfer/model/payment_mode.py deleted file mode 100644 index 5fad56ced..000000000 --- a/account_banking_payment_transfer/model/payment_mode.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2009 EduSense BV (). -# (C) 2011 - 2013 Therp BV (). -# (C) 2014 Akretion (www.akretion.com) -# -# All other contributions are (C) by their respective contributors -# -# All Rights Reserved -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, fields - - -class PaymentMode(models.Model): - _inherit = "payment.mode" - - transfer_account_id = fields.Many2one( - 'account.account', string='Transfer account', - domain=[('type', '=', 'other'), ('reconcile', '=', True)], - help='Pay off lines in sent orders with a move on this ' - 'account. You can only select accounts of type regular ' - 'that are marked for reconciliation') - transfer_journal_id = fields.Many2one( - 'account.journal', string='Transfer journal', - help='Journal to write payment entries when confirming ' - 'a debit order of this mode') - transfer_move_option = fields.Selection([ - ('date', 'One move per payment date'), - ('line', 'One move per payment line'), - ], string='Transfer move option', default='date') diff --git a/account_banking_payment_transfer/post_install.py b/account_banking_payment_transfer/post_install.py deleted file mode 100644 index 9d23444f9..000000000 --- a/account_banking_payment_transfer/post_install.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# Account Banking Payment Transfer module for Odoo -# Copyright (C) 2015 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - - -def set_date_sent(cr, pool): - cr.execute('UPDATE payment_order set date_sent=date_done') diff --git a/account_banking_payment_transfer/view/account_payment.xml b/account_banking_payment_transfer/view/account_payment.xml deleted file mode 100644 index 8bb537622..000000000 --- a/account_banking_payment_transfer/view/account_payment.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - account.payment.order.form (account_banking_payment_transfer) - payment.order - - - - - - - - - diff --git a/account_banking_payment_transfer/view/payment_mode.xml b/account_banking_payment_transfer/view/payment_mode.xml deleted file mode 100644 index 63cafb4bc..000000000 --- a/account_banking_payment_transfer/view/payment_mode.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - payment.mode.form.inherit - payment.mode - - - - - - - - - - - - - - diff --git a/account_banking_payment_transfer/workflow/account_payment.xml b/account_banking_payment_transfer/workflow/account_payment.xml deleted file mode 100644 index ec49fa56b..000000000 --- a/account_banking_payment_transfer/workflow/account_payment.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - sent - - action_sent() - function - - - - sent_wait - - write({'state': 'sent'}) - function - - - - rejected - - action_rejected() -write({'state':'rejected'}) - function - - - - - - sent - - - - - - done - - - - - - - - - - - test_done() - done - - - - - test_done() - account.move.line - get_transfer_move_line_ids() - - - - - - rejected - - - - - - - - - - - test_undo_done() - undo_done - - - - - test_undo_done() - account.move.line - get_transfer_move_line_ids() - - - - diff --git a/account_banking_sepa_credit_transfer/README.rst b/account_banking_sepa_credit_transfer/README.rst index af0817638..6cdee145d 100644 --- a/account_banking_sepa_credit_transfer/README.rst +++ b/account_banking_sepa_credit_transfer/README.rst @@ -1,6 +1,7 @@ .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg :alt: License: AGPL-3 - + +==================================== Account Banking SEPA Credit Transfer ==================================== @@ -32,29 +33,36 @@ This module is part of the OCA/bank-payment suite. Configuration ============= -No specific configuration. +* Create a Payment Mode dedicated to SEPA Credit Transfer. + +* Select the Payment Method *SEPA Credit Transfer to suppliers* (which is + automatically created upon module installation). + +* Check that this payment method uses the proper version of PAIN. Usage ===== -* You need to choose first an SEPA export type on a payment mode. +In the menu *Accounting > Payments > Payment Order*, create a new +payment order and select the Payment Mode dedicated to SEPA Credit +Transfer that you created during the configuration step. -For further information, please visit: - - * https://www.odoo.com/forum/help-1 +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/173/9.0 Known issues / Roadmap ====================== * No known issues - + Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. Credits ======= @@ -62,15 +70,16 @@ Credits Contributors ------------ -Alexis de Lattre -Pedro M. Baeza -Stéphane Bidoul -Stefan Rijnhart -Julien Laloux -Alexandre Fayolle -Raphaël Valyi -Erwin van der Ploeg -Sandy Carter +* Alexis de Lattre +* Pedro M. Baeza +* Stéphane Bidoul +* Stefan Rijnhart +* Julien Laloux +* Alexandre Fayolle +* Raphaël Valyi +* Erwin van der Ploeg +* Sandy Carter +* Antonio Espinosa Maintainer ---------- diff --git a/account_banking_sepa_credit_transfer/__init__.py b/account_banking_sepa_credit_transfer/__init__.py index 73b1281b2..a1815ae51 100644 --- a/account_banking_sepa_credit_transfer/__init__.py +++ b/account_banking_sepa_credit_transfer/__init__.py @@ -1,23 +1,4 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# SEPA Credit Transfer module for OpenERP -# Copyright (C) 2010-2013 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- -from . import wizard +from . import models +from .post_install import update_bank_journals diff --git a/account_banking_sepa_credit_transfer/__openerp__.py b/account_banking_sepa_credit_transfer/__openerp__.py index a09390876..90f509f2d 100644 --- a/account_banking_sepa_credit_transfer/__openerp__.py +++ b/account_banking_sepa_credit_transfer/__openerp__.py @@ -1,41 +1,28 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# SEPA Credit Transfer module for Odoo -# Copyright (C) 2010-2015 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- +# © 2010-2016 Akretion (www.akretion.com) +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2016 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + { 'name': 'Account Banking SEPA Credit Transfer', 'summary': 'Create SEPA XML files for Credit Transfers', - 'version': '8.0.0.3.0', + 'version': '9.0.1.0.0', 'license': 'AGPL-3', 'author': "Akretion, " "Serv. Tecnol. Avanzados - Pedro M. Baeza, " + "Antiun Ingeniería S.L., " "Odoo Community Association (OCA)", 'website': 'https://github.com/OCA/bank-payment', 'category': 'Banking addons', + 'conflicts': ['account_sepa'], 'depends': ['account_banking_pain_base'], 'data': [ - 'wizard/export_sepa_view.xml', - 'data/payment_type_sepa_sct.xml', + 'data/account_payment_method.xml', ], 'demo': [ 'demo/sepa_credit_transfer_demo.xml' ], - 'installable': False, + 'post_init_hook': 'update_bank_journals', + 'installable': True, } diff --git a/account_banking_sepa_credit_transfer/data/account_payment_method.xml b/account_banking_sepa_credit_transfer/data/account_payment_method.xml new file mode 100644 index 000000000..438346067 --- /dev/null +++ b/account_banking_sepa_credit_transfer/data/account_payment_method.xml @@ -0,0 +1,16 @@ + + + + + + + SEPA Credit Transfer to suppliers + sepa_credit_transfer + outbound + + pain.001.001.03 + + + + + 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 deleted file mode 100644 index dac1fffa7..000000000 --- a/account_banking_sepa_credit_transfer/data/payment_type_sepa_sct.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - SEPA Credit Transfer v05 - pain.001.001.05 - payment - - - - - - SEPA Credit Transfer v04 - pain.001.001.04 - payment - - - - - - SEPA Credit Transfer v03 (recommended) - pain.001.001.03 - payment - - - - - - SEPA Credit Transfer v02 - pain.001.001.02 - payment - - - - - - SEPA Credit Transfer pain 001.003.03 (used in Germany) - pain.001.003.03 - payment - - - - - - diff --git a/account_banking_sepa_credit_transfer/demo/sepa_credit_transfer_demo.xml b/account_banking_sepa_credit_transfer/demo/sepa_credit_transfer_demo.xml index 48e69a780..224237ed1 100644 --- a/account_banking_sepa_credit_transfer/demo/sepa_credit_transfer_demo.xml +++ b/account_banking_sepa_credit_transfer/demo/sepa_credit_transfer_demo.xml @@ -3,13 +3,22 @@ - - SEPA Credit Transfer La Banque Postale - - + + SEPA Credit Transfer to suppliers - - + variable + + + + + + + + + + + + diff --git a/account_banking_sepa_credit_transfer/i18n/es.po b/account_banking_sepa_credit_transfer/i18n/es.po index 5d7b1057b..66f1d08ad 100644 --- a/account_banking_sepa_credit_transfer/i18n/es.po +++ b/account_banking_sepa_credit_transfer/i18n/es.po @@ -1,34 +1,41 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * account_banking_sepa_credit_transfer -# +# * account_banking_sepa_credit_transfer +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" +"Project-Id-Version: bank-payment (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-10-31 22:52+0000\n" -"PO-Revision-Date: 2014-10-31 22:52+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:15+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Spanish (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:199 +#, python-format +msgid "" +"Bank account is missing on the bank payment line of partner '%s' (reference " +"'%s')." +msgstr "Falta la cuenta bancaria en la línea de pago de la empresa '%s' (referencia '%s')." #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,batch_booking:0 #: field:banking.export.sepa.wizard,batch_booking:0 msgid "Batch Booking" msgstr "Registro en lote" #. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 msgid "Borne by Creditor" msgstr "A cargo del acreedor" #. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 msgid "Borne by Debtor" msgstr "A cargo del deudor" @@ -39,7 +46,6 @@ msgid "Cancel" msgstr "Cancelar" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,charge_bearer:0 #: field:banking.export.sepa.wizard,charge_bearer:0 msgid "Charge Bearer" msgstr "A cargo del portador" @@ -50,7 +56,6 @@ msgid "Create" msgstr "Crear" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,create_uid:0 #: field:banking.export.sepa.wizard,create_uid:0 msgid "Created by" msgstr "Creado por" @@ -60,18 +65,6 @@ msgstr "Creado por" msgid "Created on" msgstr "Creado en" -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,state:0 -msgid "Draft" -msgstr "Borrador" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:124 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:232 -#, python-format -msgid "Error:" -msgstr "Error:" - #. module: account_banking_sepa_credit_transfer #: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa_wizard msgid "Export SEPA Credit Transfer File" @@ -93,97 +86,74 @@ msgid "Finish" msgstr "Finalizar" #. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 msgid "Following Service Level" msgstr "Según el acuerdo de servicio" -#. module: account_banking_sepa_credit_transfer -#: help:banking.export.sepa,charge_bearer:0 -msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor." -msgstr "Según el acuerdo de servicio: los costes de la transacción se aplicarán siguiendo las reglas acordadas en el nivel de servicio y/o en el esquema (las remesas SEPA Core deben usar esta opción). Compartidos: los costes de la transacción en la parte del acreedor están a cargo del acreedor, y los costes de la transacción del lado del deudor estarán a cargo del deudor. A cargo del acreedor: todos los costes de la transacción estarán a cargo del acreedor. A cargo del deudor: Todos los costes de la transacción estarán a cargo del deudor." - #. module: account_banking_sepa_credit_transfer #: help:banking.export.sepa.wizard,charge_bearer:0 -msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor." +msgid "" +"Following service level : transaction charges are to be applied following " +"the rules agreed in the service level and/or scheme (SEPA Core messages must" +" use this). Shared : transaction charges on the debtor side are to be borne " +"by the debtor, transaction charges on the creditor side are to be borne by " +"the creditor. Borne by creditor : all transaction charges are to be borne by" +" the creditor. Borne by debtor : all transaction charges are to be borne by " +"the debtor." msgstr "Según el acuerdo de servicio: los costes de la transacción se aplicarán siguiendo las reglas acordadas en el nivel de servicio y/o en el esquema (las remesas SEPA Core deben usar esta opción). Compartidos: los costes de la transacción en la parte del acreedor están a cargo del acreedor, y los costes de la transacción del lado del deudor estarán a cargo del deudor. A cargo del acreedor: todos los costes de la transacción estarán a cargo del acreedor. A cargo del deudor: Todos los costes de la transacción estarán a cargo del deudor." -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:account_banking_sepa_credit_transfer.view_banking_export_sepa_form -msgid "General Information" -msgstr "Información general" - #. module: account_banking_sepa_credit_transfer #: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view msgid "Generate" msgstr "Generar" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,create_date:0 -msgid "Generation Date" -msgstr "Fecha de generación" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,id:0 #: field:banking.export.sepa.wizard,id:0 msgid "ID" msgstr "ID" #. module: account_banking_sepa_credit_transfer -#: help:banking.export.sepa,batch_booking:0 #: help:banking.export.sepa.wizard,batch_booking:0 -msgid "If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file." +msgid "" +"If true, the bank statement will display only one debit line for all the " +"wire transfers of the SEPA XML file ; if false, the bank statement will " +"display one debit line per wire transfer of the SEPA XML file." msgstr "Si está marcado, el extracto bancario mostrará sólo una línea del haber para todos los adeudos directos del archivo SEPA; si no está marcado, entonces el extracto bancario mostrará una línea por cada adeudo directo del archivo SEPA." #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,write_uid:0 #: field:banking.export.sepa.wizard,write_uid:0 msgid "Last Updated by" msgstr "Última actualización por" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,write_date:0 #: field:banking.export.sepa.wizard,write_date:0 msgid "Last Updated on" msgstr "Última actualización en" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:233 -#, python-format -msgid "Missing Bank Account on invoice '%s' (payment order line reference '%s')." -msgstr "Falta la cuenta bancaria en la factura '%s' (línea de pago con referencia '%s')." - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,nb_transactions:0 #: field:banking.export.sepa.wizard,nb_transactions:0 msgid "Number of Transactions" msgstr "Nº de transacciones" #. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:account_banking_sepa_credit_transfer.view_banking_export_sepa_form -#: field:banking.export.sepa,payment_order_ids:0 +#: model:ir.model,name:account_banking_sepa_credit_transfer.model_payment_mode +msgid "Payment Mode" +msgstr "Modo de pago" + +#. module: account_banking_sepa_credit_transfer #: field:banking.export.sepa.wizard,payment_order_ids:0 msgid "Payment Orders" msgstr "Órdenes de pago" #. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:125 +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:98 #, python-format -msgid "Payment Type Code '%s' is not supported. The only Payment Type Codes supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04' and 'pain.001.001.05'." -msgstr "El código de tipo de pago '%s' no está soportado. Los únicos código de tipo de pago soportados por las transferencias SEPA son 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04' y 'pain.001.001.05'." - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:account_banking_sepa_credit_transfer.view_banking_export_sepa_form -#: view:banking.export.sepa:account_banking_sepa_credit_transfer.view_banking_export_sepa_tree -msgid "SEPA Credit Transfer" -msgstr "Transferencia SEPA" - -#. module: account_banking_sepa_credit_transfer -#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order -#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa -#: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa -msgid "SEPA Credit Transfer Files" -msgstr "Archivos de transferencias SEPA" +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', 'pain.001.001.05' and " +"'pain.001.003.03'." +msgstr "El código de tipo de pago '%s' no está soportado. Los únicos códigos de tipo de pago soportados para una transferencia de crédito SEPA son 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04', 'pain.001.001.05' y 'pain.001.003.03'." #. module: account_banking_sepa_credit_transfer #: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view @@ -191,35 +161,16 @@ msgid "SEPA File Generation" msgstr "Generación de archivo SEPA" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,file:0 -#: field:banking.export.sepa.wizard,file_id:0 -msgid "SEPA XML File" -msgstr "Archivo SEPA XML" - -#. module: account_banking_sepa_credit_transfer -#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa -msgid "SEPA export" -msgstr "Exportación de SEPA" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,state:0 -msgid "Sent" -msgstr "Enviado" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 msgid "Shared" msgstr "Compartidos" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,state:0 #: field:banking.export.sepa.wizard,state:0 msgid "State" msgstr "Estado" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,total_amount:0 #: field:banking.export.sepa.wizard,total_amount:0 msgid "Total Amount" msgstr "Importe total" @@ -228,4 +179,3 @@ msgstr "Importe total" #: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view msgid "Validate" msgstr "Validar" - diff --git a/account_banking_sepa_credit_transfer/i18n/fr.po b/account_banking_sepa_credit_transfer/i18n/fr.po index b4bb7235f..f59704ad2 100644 --- a/account_banking_sepa_credit_transfer/i18n/fr.po +++ b/account_banking_sepa_credit_transfer/i18n/fr.po @@ -1,20 +1,54 @@ -# Translation of OpenERP Server. +# Translation of Odoo Server. # This file contains the translation of the following modules: -# * account_banking_sepa_credit_transfer -# +# * account_banking_sepa_credit_transfer +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: OpenERP Server 7.0\n" +"Project-Id-Version: bank-payment (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-12-23 22:49+0000\n" -"PO-Revision-Date: 2014-02-01 04:49+0000\n" -"Last-Translator: Alexis de Lattre \n" -"Language-Team: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:15+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: French (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n" -"X-Generator: Launchpad (build 17031)\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:199 +#, python-format +msgid "" +"Bank account is missing on the bank payment line of partner '%s' (reference " +"'%s')." +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,batch_booking:0 +msgid "Batch Booking" +msgstr "Débit groupé" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Borne by Creditor" +msgstr "Supportés par le destinataire" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Borne by Debtor" +msgstr "Supportés par l'émetteur" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view +msgid "Cancel" +msgstr "Annuler" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,charge_bearer:0 +msgid "Charge Bearer" +msgstr "Répartition des frais" #. module: account_banking_sepa_credit_transfer #: selection:banking.export.sepa.wizard,state:0 @@ -22,63 +56,14 @@ msgid "Create" msgstr "Créer" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,nb_transactions:0 -#: field:banking.export.sepa.wizard,nb_transactions:0 -msgid "Number of Transactions" -msgstr "Nombre de transactions" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,filename:0 -#: field:banking.export.sepa.wizard,filename:0 -msgid "Filename" -msgstr "Nom du fichier" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,state:0 -#: field:banking.export.sepa.wizard,state:0 -msgid "State" -msgstr "État" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,state:0 -msgid "Draft" -msgstr "Brouillon" - -#. module: account_banking_sepa_credit_transfer -#: help:banking.export.sepa.wizard,charge_bearer:0 -msgid "" -"Following service level : transaction charges are to be applied following " -"the rules agreed in the service level and/or scheme (SEPA Core messages must " -"use this). Shared : transaction charges on the debtor side are to be borne " -"by the debtor, transaction charges on the creditor side are to be borne by " -"the creditor. Borne by creditor : all transaction charges are to be borne by " -"the creditor. Borne by debtor : all transaction charges are to be borne by " -"the debtor." +#: field:banking.export.sepa.wizard,create_uid:0 +msgid "Created by" msgstr "" -"Suivant le niveau de service : la répartition des frais bancaires suit les " -"règles pré-établies dans le schema ou dans le contrat avec la banque (les " -"messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais " -"bancaires côté débiteur sont à la charge du débiteur, les frais bancaires " -"côté créancier sont à la charge du créancier. Supportés par le créancier : " -"tous les frais bancaires sont à la charge du créancier. Supportés par le " -"débiteur : tous les frais bancaires sont à la charge du débiteur." #. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Shared" -msgstr "Partagé" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,batch_booking:0 -#: field:banking.export.sepa.wizard,batch_booking:0 -msgid "Batch Booking" -msgstr "Débit groupé" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,state:0 -msgid "Sent" -msgstr "Envoyé" +#: field:banking.export.sepa.wizard,create_date:0 +msgid "Created on" +msgstr "" #. module: account_banking_sepa_credit_transfer #: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa_wizard @@ -86,9 +71,14 @@ msgid "Export SEPA Credit Transfer File" msgstr "Exporte le fichier de virement SEPA" #. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:0 -msgid "SEPA Credit Transfer" -msgstr "Virement SEPA" +#: field:banking.export.sepa.wizard,file:0 +msgid "File" +msgstr "Fichier" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,filename:0 +msgid "Filename" +msgstr "Nom du fichier" #. module: account_banking_sepa_credit_transfer #: selection:banking.export.sepa.wizard,state:0 @@ -96,270 +86,96 @@ msgid "Finish" msgstr "Finir" #. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,state:0 -msgid "Reconciled" -msgstr "Réconcilié" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 msgid "Following Service Level" msgstr "Suivant le niveau de service" #. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Borne by Creditor" -msgstr "Supportés par le destinataire" +#: 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 -#: view:banking.export.sepa.wizard:0 -msgid "Validate" -msgstr "Valider" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view msgid "Generate" msgstr "Générer" #. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Borne by Debtor" -msgstr "Supportés par l'émetteur" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:128 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:245 -#, python-format -msgid "Error:" -msgstr "Erreur :" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,total_amount:0 -#: field:banking.export.sepa.wizard,total_amount:0 -msgid "Total Amount" -msgstr "Montant total" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,charge_bearer:0 -#: field:banking.export.sepa.wizard,charge_bearer:0 -msgid "Charge Bearer" -msgstr "Répartition des frais" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "SEPA File Generation" -msgstr "Génération du fichier SEPA" - -#. module: account_banking_sepa_credit_transfer -#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa -msgid "SEPA export" -msgstr "Export SEPA" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:246 -#, python-format -msgid "" -"Missing Bank Account on invoice '%s' (payment order line reference '%s')." +#: field:banking.export.sepa.wizard,id:0 +msgid "ID" msgstr "" -"Compte bancaire manquant sur la facture '%s' (référence de la ligne de " -"paiement : '%s')." #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,file:0 -#: field:banking.export.sepa.wizard,file_id:0 -msgid "SEPA XML File" -msgstr "Fichier SEPA XML" - -#. module: account_banking_sepa_credit_transfer -#: help:banking.export.sepa,charge_bearer:0 -msgid "" -"Following service level : transaction charges are to be applied following " -"the rules agreed in the service level and/or scheme (SEPA Core messages must " -"use this). Shared : transaction charges on the creditor side are to be borne " -"by the creditor, transaction charges on the debtor side are to be borne by " -"the debtor. Borne by creditor : all transaction charges are to be borne by " -"the creditor. Borne by debtor : all transaction charges are to be borne by " -"the debtor." -msgstr "" -"Suivant le niveau de service : la répartition des frais bancaires suit les " -"règles pré-établies dans le schema ou dans le contrat avec la banque (les " -"messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais " -"bancaires côté débiteur sont à la charge du débiteur, les frais bancaires " -"côté créancier sont à la charge du créancier. Supportés par le créancier : " -"tous les frais bancaires sont à la charge du créancier. Supportés par le " -"débiteur : tous les frais bancaires sont à la charge du débiteur." - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:129 -#, python-format -msgid "" -"Payment Type Code '%s' is not supported. The only Payment Type Codes " -"supported for SEPA Credit Transfers are 'pain.001.001.02', " -"'pain.001.001.03', 'pain.001.001.04' and 'pain.001.001.05'." -msgstr "" -"Le code du Type de paiement '%s' n'est pas supporté. Les seuls codes de Type " -"de paiement supportés pour les virements SEPA sont 'pain.001.001.02', " -"'pain.001.001.03', 'pain.001.001.04' et 'pain.001.001.05'." - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:0 -#: field:banking.export.sepa,payment_order_ids:0 -#: field:banking.export.sepa.wizard,payment_order_ids:0 -msgid "Payment Orders" -msgstr "Ordres de paiement" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:0 -msgid "General Information" -msgstr "Informations générales" - -#. module: account_banking_sepa_credit_transfer -#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order -#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa -#: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa -msgid "SEPA Credit Transfer Files" -msgstr "Fichiers de virement SEPA" - -#. module: account_banking_sepa_credit_transfer -#: help:banking.export.sepa,batch_booking:0 #: help:banking.export.sepa.wizard,batch_booking:0 msgid "" "If true, the bank statement will display only one debit line for all the " "wire transfers of the SEPA XML file ; if false, the bank statement will " "display one debit line per wire transfer of the SEPA XML file." +msgstr "Si coché, le relevé de compte ne comportera qu'une ligne de débit pour tous les virements du fichier SEPA XML ; si non coché, le relevé de compte comportera une ligne de débit pour chaque virement du fichier SEPA XML." + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,write_uid:0 +msgid "Last Updated by" msgstr "" -"Si coché, le relevé de compte ne comportera qu'une ligne de débit pour tous " -"les virements du fichier SEPA XML ; si non coché, le relevé de compte " -"comportera une ligne de débit pour chaque virement du fichier SEPA XML." #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa.wizard,file:0 -msgid "File" -msgstr "Fichier" +#: field:banking.export.sepa.wizard,write_date:0 +msgid "Last Updated on" +msgstr "" #. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "Cancel" -msgstr "Annuler" +#: 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,create_date:0 -msgid "Generation Date" -msgstr "Date de génération" +#: model:ir.model,name:account_banking_sepa_credit_transfer.model_payment_mode +msgid "Payment Mode" +msgstr "Mode de paiement" -#~ msgid "SEPA XML file" -#~ msgstr "Fichier SEPA XML" - -#~ msgid "Payment order" -#~ msgstr "Ordre de paiement" - -#~ msgid "" -#~ "This is the message identification of the entire SEPA XML file. 35 " -#~ "characters max." -#~ msgstr "" -#~ "Ceci est le libellé d'identification du fichier SEPA XML. 35 caractères " -#~ "maximum." - -#~ msgid "Prefered execution date" -#~ msgstr "Date d'exécution demandée" - -#~ msgid "Generation date" -#~ msgstr "Date de génération" - -#~ msgid "Export SEPA Credit Transfer XML file" -#~ msgstr "Exporte the fichier de virement SEPA XML" - -#~ msgid "Message identification" -#~ msgstr "Libellé d'identification" +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,payment_order_ids:0 +msgid "Payment Orders" +msgstr "Ordres de paiement" +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:98 #, 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 "" +"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', 'pain.001.001.05' and " +"'pain.001.003.03'." +msgstr "" -#~ msgid "Total amount" -#~ msgstr "Montant total" +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view +msgid "SEPA File Generation" +msgstr "Génération du fichier SEPA" -#~ 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.wizard,charge_bearer:0 +msgid "Shared" +msgstr "Partagé" -#~ msgid "Borne by creditor" -#~ msgstr "Supportés par le destinataire" +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,state:0 +msgid "State" +msgstr "État" -#~ msgid "Payment orders" -#~ msgstr "Ordres de paiement" +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,total_amount:0 +msgid "Total Amount" +msgstr "Montant total" -#, python-format -#~ msgid "This IBAN is not valid : %s" -#~ msgstr "Cet IBAN n'est pas valide : %s" - -#~ msgid "SEPA XML file generation" -#~ msgstr "Génération du fichier SEPA XML" - -#~ msgid "Reference for further communication" -#~ msgstr "Référence pour communication ultérieure" - -#~ msgid "Processing details" -#~ msgstr "Paramètres" - -#~ msgid "Borne by debtor" -#~ msgstr "Supportés par l'émetteur" - -#~ msgid "Number of transactions" -#~ msgstr "Nombre de transactions" - -#~ msgid "Following service level" -#~ msgstr "Suivant le niveau de service" - -#~ msgid "Charge bearer" -#~ msgstr "Répartition des frais" - -#~ msgid "" -#~ "This is the date on which the file should be processed by the bank. Please " -#~ "keep in mind that banks only execute on working days and typically use a " -#~ "delay of two days between execution date and effective transfer date." -#~ msgstr "" -#~ "C'est la date à laquelle le fichier doit être traité par la banque. Gardez " -#~ "en tête que les banques réalisent des traitements seulement les jours ouvrés " -#~ "et ont habituellement un délai de 2 jours entre la date de traitement et la " -#~ "date du transfert effectif." - -#, python-format -#~ msgid "" -#~ "Payment Type Code '%s' is not supported. The only Payment Type Codes " -#~ "supported for SEPA Credit Transfers are 'pain.001.001.02', 'pain.001.001.03' " -#~ "and 'pain.001.001.04'." -#~ msgstr "" -#~ "Le code '%s' pour le Type de Paiment n'est pas supporté. Les seuls codes de " -#~ "Types de Paiement supportés pour les virements SEPA sont 'pain.001.001.02', " -#~ "'pain.001.001.03' et 'pain.001.001.04'." - -#, python-format -#~ msgid "Error :" -#~ msgstr "Erreur :" - -#~ msgid "Batch booking" -#~ msgstr "Débit groupé" +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view +msgid "Validate" +msgstr "Valider" diff --git a/account_banking_sepa_credit_transfer/i18n/nl.po b/account_banking_sepa_credit_transfer/i18n/nl.po index 541366292..9c58f4018 100644 --- a/account_banking_sepa_credit_transfer/i18n/nl.po +++ b/account_banking_sepa_credit_transfer/i18n/nl.po @@ -1,20 +1,54 @@ -# Translation of OpenERP Server. +# Translation of Odoo Server. # This file contains the translation of the following modules: -# * account_banking_sepa_credit_transfer -# +# * account_banking_sepa_credit_transfer +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: OpenERP Server 7.0\n" +"Project-Id-Version: bank-payment (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-12-23 22:49+0000\n" -"PO-Revision-Date: 2014-04-24 10:34+0000\n" -"Last-Translator: Erwin van der Ploeg (BAS Solutions) \n" -"Language-Team: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:15+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Dutch (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n" -"X-Generator: Launchpad (build 17031)\n" +"Content-Transfer-Encoding: \n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:199 +#, python-format +msgid "" +"Bank account is missing on the bank payment line of partner '%s' (reference " +"'%s')." +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,batch_booking:0 +msgid "Batch Booking" +msgstr "Bach verwerking" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Borne by Creditor" +msgstr "Op rekening van schuldeiser" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Borne by Debtor" +msgstr "Op rekening van schuldenaar" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view +msgid "Cancel" +msgstr "Annuleren" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,charge_bearer:0 +msgid "Charge Bearer" +msgstr "Kostenverdeling" #. module: account_banking_sepa_credit_transfer #: selection:banking.export.sepa.wizard,state:0 @@ -22,63 +56,14 @@ msgid "Create" msgstr "Aanmaken" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,nb_transactions:0 -#: field:banking.export.sepa.wizard,nb_transactions:0 -msgid "Number of Transactions" -msgstr "Aantal transacties" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,filename:0 -#: field:banking.export.sepa.wizard,filename:0 -msgid "Filename" -msgstr "Bestandsnaam" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,state:0 -#: field:banking.export.sepa.wizard,state:0 -msgid "State" -msgstr "Status" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,state:0 -msgid "Draft" -msgstr "Concept" - -#. module: account_banking_sepa_credit_transfer -#: help:banking.export.sepa.wizard,charge_bearer:0 -msgid "" -"Following service level : transaction charges are to be applied following " -"the rules agreed in the service level and/or scheme (SEPA Core messages must " -"use this). Shared : transaction charges on the debtor side are to be borne " -"by the debtor, transaction charges on the creditor side are to be borne by " -"the creditor. Borne by creditor : all transaction charges are to be borne by " -"the creditor. Borne by debtor : all transaction charges are to be borne by " -"the debtor." +#: field:banking.export.sepa.wizard,create_uid:0 +msgid "Created by" msgstr "" -"Volg service level: Transactie kosten worden toegepast volgens de " -"afgesproken regels in het service level en/of schema (Voor SEPA berichten " -"deze gebruiken). Gedeeld : De transactiekosten aan de debiteur zijde zijn " -"voor de schuldeiser, transactiekosten aan de crediteur kant zijn voor de " -"schuldenaar. Op rekening van de schuldenaar: Alle transactie kosten zijn " -"voor rekening van de schuldenaar. Op rekening van de schuldeiser: Alle " -"transactie kosten zijn voor rekening van de schuldeiser." #. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Shared" -msgstr "Gedeeld" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,batch_booking:0 -#: field:banking.export.sepa.wizard,batch_booking:0 -msgid "Batch Booking" -msgstr "Bach verwerking" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,state:0 -msgid "Sent" -msgstr "Verzonden" +#: field:banking.export.sepa.wizard,create_date:0 +msgid "Created on" +msgstr "" #. module: account_banking_sepa_credit_transfer #: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa_wizard @@ -86,9 +71,14 @@ msgid "Export SEPA Credit Transfer File" msgstr "Exporteer SEPA Credit Transfer bestand" #. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:0 -msgid "SEPA Credit Transfer" -msgstr "SEPA overschrijving" +#: field:banking.export.sepa.wizard,file:0 +msgid "File" +msgstr "Bestand" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,filename:0 +msgid "Filename" +msgstr "Bestandsnaam" #. module: account_banking_sepa_credit_transfer #: selection:banking.export.sepa.wizard,state:0 @@ -96,261 +86,96 @@ msgid "Finish" msgstr "Gereed" #. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,state:0 -msgid "Reconciled" -msgstr "Afgeletterd" - -#. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 #: selection:banking.export.sepa.wizard,charge_bearer:0 msgid "Following Service Level" msgstr "Volg service level" #. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Borne by Creditor" -msgstr "Op rekening van schuldeiser" +#: help:banking.export.sepa.wizard,charge_bearer:0 +msgid "" +"Following service level : transaction charges are to be applied following " +"the rules agreed in the service level and/or scheme (SEPA Core messages must" +" use this). Shared : transaction charges on the debtor side are to be borne " +"by the debtor, transaction charges on the creditor side are to be borne by " +"the creditor. Borne by creditor : all transaction charges are to be borne by" +" the creditor. Borne by debtor : all transaction charges are to be borne by " +"the debtor." +msgstr "Volg service level: Transactie kosten worden toegepast volgens de afgesproken regels in het service level en/of schema (Voor SEPA berichten deze gebruiken). Gedeeld : De transactiekosten aan de debiteur zijde zijn voor de schuldeiser, transactiekosten aan de crediteur kant zijn voor de schuldenaar. Op rekening van de schuldenaar: Alle transactie kosten zijn voor rekening van de schuldenaar. Op rekening van de schuldeiser: Alle transactie kosten zijn voor rekening van de schuldeiser." #. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "Validate" -msgstr "Bevestig" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view msgid "Generate" msgstr "Genereer" #. module: account_banking_sepa_credit_transfer -#: selection:banking.export.sepa,charge_bearer:0 -#: selection:banking.export.sepa.wizard,charge_bearer:0 -msgid "Borne by Debtor" -msgstr "Op rekening van schuldenaar" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:128 -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:245 -#, python-format -msgid "Error:" -msgstr "Fout:" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,total_amount:0 -#: field:banking.export.sepa.wizard,total_amount:0 -msgid "Total Amount" -msgstr "Totaalbedrag" - -#. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,charge_bearer:0 -#: field:banking.export.sepa.wizard,charge_bearer:0 -msgid "Charge Bearer" -msgstr "Kostenverdeling" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "SEPA File Generation" -msgstr "SEPA bestand genereren" - -#. module: account_banking_sepa_credit_transfer -#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa -msgid "SEPA export" -msgstr "SEPA export" - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:246 -#, python-format -msgid "" -"Missing Bank Account on invoice '%s' (payment order line reference '%s')." +#: field:banking.export.sepa.wizard,id:0 +msgid "ID" msgstr "" -"Ontbrekende bankrekening op factuur '%s' (betaalregel referentie '%s')" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,file:0 -#: field:banking.export.sepa.wizard,file_id:0 -msgid "SEPA XML File" -msgstr "SEPA XML bestand" - -#. module: account_banking_sepa_credit_transfer -#: help:banking.export.sepa,charge_bearer:0 -msgid "" -"Following service level : transaction charges are to be applied following " -"the rules agreed in the service level and/or scheme (SEPA Core messages must " -"use this). Shared : transaction charges on the creditor side are to be borne " -"by the creditor, transaction charges on the debtor side are to be borne by " -"the debtor. Borne by creditor : all transaction charges are to be borne by " -"the creditor. Borne by debtor : all transaction charges are to be borne by " -"the debtor." -msgstr "" -"Volg service level: Transactie kosten worden toegepast volgens de " -"afgesproken regels in het service level en/of schema (Voor SEPA berichten " -"deze gebruiken). Gedeeld : De transactiekosten aan de crediteur zijde zijn " -"voor de schuldenaar, transactiekosten aan de debiteur kant zijn voor de " -"schuldeiser. Op rekening van de schuldenaar: Alle transactie kosten zijn " -"voor rekening van de schuldenaar. Op rekening van de schuldeiser: Alle " -"transactie kosten zijn voor rekening van de schuldeiser." - -#. module: account_banking_sepa_credit_transfer -#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:129 -#, python-format -msgid "" -"Payment Type Code '%s' is not supported. The only Payment Type Codes " -"supported for SEPA Credit Transfers are 'pain.001.001.02', " -"'pain.001.001.03', 'pain.001.001.04' and 'pain.001.001.05'." -msgstr "" -"Betaal type code '%s' wordt niet ondersteund. De enige betaal type codes " -"voor SEPA credit boekingen zijn 'pain.001.001.02', 'pain.001.001.03' en " -"'pain.001.001.04'." - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:0 -#: field:banking.export.sepa,payment_order_ids:0 -#: field:banking.export.sepa.wizard,payment_order_ids:0 -msgid "Payment Orders" -msgstr "Betaalopdrachten" - -#. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa:0 -msgid "General Information" -msgstr "Algemene informatie" - -#. module: account_banking_sepa_credit_transfer -#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.act_banking_export_sepa_payment_order -#: model:ir.actions.act_window,name:account_banking_sepa_credit_transfer.action_account_banking_sepa -#: model:ir.ui.menu,name:account_banking_sepa_credit_transfer.menu_account_banking_sepa -msgid "SEPA Credit Transfer Files" -msgstr "SEPA Credit Transfer bestanden" - -#. module: account_banking_sepa_credit_transfer -#: help:banking.export.sepa,batch_booking:0 #: help:banking.export.sepa.wizard,batch_booking:0 msgid "" "If true, the bank statement will display only one debit line for all the " "wire transfers of the SEPA XML file ; if false, the bank statement will " "display one debit line per wire transfer of the SEPA XML file." +msgstr "Indien aangevinkt zal het bankafschrift maar één debet regel weergeven voor alle overschrijvingen van het SEPA XML bestand. Indien uitgevinkt, zal het bankafschrift een debet regel weergeven per SEPA XML bestand." + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,write_uid:0 +msgid "Last Updated by" msgstr "" -"Indien aangevinkt zal het bankafschrift maar één debet regel weergeven voor " -"alle overschrijvingen van het SEPA XML bestand. Indien uitgevinkt, zal het " -"bankafschrift een debet regel weergeven per SEPA XML bestand." #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa.wizard,file:0 -msgid "File" -msgstr "Bestand" +#: field:banking.export.sepa.wizard,write_date:0 +msgid "Last Updated on" +msgstr "" #. module: account_banking_sepa_credit_transfer -#: view:banking.export.sepa.wizard:0 -msgid "Cancel" -msgstr "Annuleren" +#: field:banking.export.sepa.wizard,nb_transactions:0 +msgid "Number of Transactions" +msgstr "Aantal transacties" #. module: account_banking_sepa_credit_transfer -#: field:banking.export.sepa,create_date:0 -msgid "Generation Date" -msgstr "Aangemaakt op" +#: model:ir.model,name:account_banking_sepa_credit_transfer.model_payment_mode +msgid "Payment Mode" +msgstr "Betaalwijze" -#~ msgid "SEPA XML file" -#~ msgstr "SEPA XML bestand" - -#~ msgid "Number of transactions" -#~ msgstr "Aantal transacties" - -#~ msgid "" -#~ "This is the message identification of the entire SEPA XML file. 35 " -#~ "characters max." -#~ msgstr "" -#~ "Dit is een bericht identificatie van het gehele SEPA XML bestand. Maximaal " -#~ "35 karakters." - -#~ msgid "Prefered execution date" -#~ msgstr "Voorkeurs uitvoerdatum" - -#~ msgid "Generation date" -#~ msgstr "Aanmaakdatum" - -#~ msgid "Export SEPA Credit Transfer XML file" -#~ msgstr "Exporteer SEPA XML overschrijvingsbestand" - -#~ msgid "Message identification" -#~ msgstr "Bericht identificatie" - -#~ msgid "Total amount" -#~ msgstr "Totaal bedrag" - -#~ msgid "Borne by creditor" -#~ msgstr "Rekening van schuldeiser" - -#~ msgid "Payment orders" -#~ msgstr "Betaalopdrachten" - -#~ msgid "Generated SEPA Credit Transfer files" -#~ msgstr "Gegenereerde SEPA overschrijfbestanden" - -#~ msgid "SEPA XML file generation" -#~ msgstr "SEPA XML bestand generatie" - -#~ msgid "Reference for further communication" -#~ msgstr "Referentie voor verdere communicatie" - -#~ msgid "Processing details" -#~ msgstr "Verwerkings details" - -#~ msgid "Borne by debtor" -#~ msgstr "Rekening van schuldenaar" - -#~ msgid "Payment order" -#~ msgstr "Betaalopdracht" - -#~ msgid "Following service level" -#~ msgstr "Volg service level" - -#~ msgid "Charge bearer" -#~ msgstr "Kostenverdeling" - -#~ msgid "" -#~ "Shared : transaction charges on the sender side are to be borne by the " -#~ "debtor, transaction charges on the receiver side are to be borne by the " -#~ "creditor (most transfers use this). Borne by creditor : all transaction " -#~ "charges are to be borne by the creditor. Borne by debtor : all transaction " -#~ "charges are to be borne by the debtor. Following service level : transaction " -#~ "charges are to be applied following the rules agreed in the service level " -#~ "and/or scheme." -#~ msgstr "" -#~ "Gedeeld : De transactiekosten aan de verzender kant zijn voor de " -#~ "schuldeiser, transactiekosten aan de ontvanger kant zijn voor de schuldenaar " -#~ "(deze keuze wordt het meest gebruikt). Rekening van de schuldenaar: Alle " -#~ "transactie kosten zijn voor rekening van de schuldenaar. Rekening van de " -#~ "schuldeiser: Alle transactie kosten zijn voor rekening van de schuldeiser. " -#~ "Volg service level: Transactie kosten worden toegepast volgens de " -#~ "afgesporken regels in het service level en/of schema." - -#~ msgid "Batch booking" -#~ msgstr "Batch boeking" - -#~ msgid "Generated SEPA Credit Transfer XML files" -#~ msgstr "Gengenereerde SEPA XML overschrijf bestanden" +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,payment_order_ids:0 +msgid "Payment Orders" +msgstr "Betaalopdrachten" +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:98 #, python-format -#~ msgid "This IBAN is not valid : %s" -#~ msgstr "Deze IBAN is niet geldig : %s" +msgid "" +"Payment Type Code '%s' is not supported. The only Payment Type Codes " +"supported for SEPA Credit Transfers are 'pain.001.001.02', " +"'pain.001.001.03', 'pain.001.001.04', 'pain.001.001.05' and " +"'pain.001.003.03'." +msgstr "" -#~ msgid "" -#~ "This is the date on which the file should be processed by the bank. Please " -#~ "keep in mind that banks only execute on working days and typically use a " -#~ "delay of two days between execution date and effective transfer date." -#~ msgstr "" -#~ "Dit is de datum waarop het bestand zou moeten worden verwerkt door de bank. " -#~ "Houdt u er rekening mee dat banken alleen op werkdagen de bestanden " -#~ "verwerken en veelal een vertraging hebben van twee dagen tussen de " -#~ "verwerkingsdatum en de effectieve overschrijfdatum." +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view +msgid "SEPA File Generation" +msgstr "SEPA bestand genereren" -#, python-format -#~ msgid "" -#~ "The generated XML file is not valid against the official XML Schema " -#~ "Definition. The generated XML file and the full error have been written in " -#~ "the server logs. Here is the error, which may give you an idea on the cause " -#~ "of the problem : %s" -#~ msgstr "" -#~ "Het gegenereerde XML bestand is niet geldig volgens de officiële XML schema " -#~ "definities. Het gegenereerde XML bestand en de volledige fout zijn " -#~ "weggeschreven in de server log bestanden. Hier is de fout, wat u een idee " -#~ "kunt geven over de oorzaak van het probleem: %s\"" +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Shared" +msgstr "Gedeeld" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,state:0 +msgid "State" +msgstr "Status" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,total_amount:0 +msgid "Total Amount" +msgstr "Totaalbedrag" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view +msgid "Validate" +msgstr "Bevestig" diff --git a/account_banking_sepa_credit_transfer/i18n/pt_BR.po b/account_banking_sepa_credit_transfer/i18n/pt_BR.po new file mode 100644 index 000000000..a3471a69b --- /dev/null +++ b/account_banking_sepa_credit_transfer/i18n/pt_BR.po @@ -0,0 +1,182 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_sepa_credit_transfer +# +# Translators: +# danimaribeiro , 2016 +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 02:02+0000\n" +"Last-Translator: danimaribeiro \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:199 +#, python-format +msgid "" +"Bank account is missing on the bank payment line of partner '%s' (reference " +"'%s')." +msgstr "Conta bancária está faltando na linha de pagamento do parceiro '%s' (ref. '%s')." + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,batch_booking:0 +msgid "Batch Booking" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Borne by Creditor" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Borne by Debtor" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view +msgid "Cancel" +msgstr "Cancelar" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,charge_bearer:0 +msgid "Charge Bearer" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,state:0 +msgid "Create" +msgstr "Criar" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,create_uid:0 +msgid "Created by" +msgstr "Criado por" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,create_date:0 +msgid "Created on" +msgstr "Criado em" + +#. module: account_banking_sepa_credit_transfer +#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa_wizard +msgid "Export SEPA Credit Transfer File" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,file:0 +msgid "File" +msgstr "Arquivo" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,filename:0 +msgid "Filename" +msgstr "Nome do arquivo" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,state:0 +msgid "Finish" +msgstr "Finalizar" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Following Service Level" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: help:banking.export.sepa.wizard,charge_bearer:0 +msgid "" +"Following service level : transaction charges are to be applied following " +"the rules agreed in the service level and/or scheme (SEPA Core messages must" +" use this). Shared : transaction charges on the debtor side are to be borne " +"by the debtor, transaction charges on the creditor side are to be borne by " +"the creditor. Borne by creditor : all transaction charges are to be borne by" +" the creditor. Borne by debtor : all transaction charges are to be borne by " +"the debtor." +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view +msgid "Generate" +msgstr "Gerar" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,id:0 +msgid "ID" +msgstr "ID" + +#. module: account_banking_sepa_credit_transfer +#: help:banking.export.sepa.wizard,batch_booking:0 +msgid "" +"If true, the bank statement will display only one debit line for all the " +"wire transfers of the SEPA XML file ; if false, the bank statement will " +"display one debit line per wire transfer of the SEPA XML file." +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,write_uid:0 +msgid "Last Updated by" +msgstr "Última Atualização por" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,write_date:0 +msgid "Last Updated on" +msgstr "Última Atualização em" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,nb_transactions:0 +msgid "Number of Transactions" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: model:ir.model,name:account_banking_sepa_credit_transfer.model_payment_mode +msgid "Payment Mode" +msgstr "Modo de Pagamento" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,payment_order_ids:0 +msgid "Payment Orders" +msgstr "Ordens de Pagamento" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:98 +#, 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', 'pain.001.001.05' and " +"'pain.001.003.03'." +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view +msgid "SEPA File Generation" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Shared" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,state:0 +msgid "State" +msgstr "" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,total_amount:0 +msgid "Total Amount" +msgstr "Valor total" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view +msgid "Validate" +msgstr "Validar" diff --git a/account_banking_sepa_credit_transfer/i18n/sl.po b/account_banking_sepa_credit_transfer/i18n/sl.po new file mode 100644 index 000000000..d9cb793a8 --- /dev/null +++ b/account_banking_sepa_credit_transfer/i18n/sl.po @@ -0,0 +1,182 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_sepa_credit_transfer +# +# Translators: +# Matjaž Mozetič , 2016 +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-08 05:44+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:199 +#, python-format +msgid "" +"Bank account is missing on the bank payment line of partner '%s' (reference " +"'%s')." +msgstr "Pri postavki bančnega plačila partnerja '%s' (sklic '%s') manjka bančni račun." + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,batch_booking:0 +msgid "Batch Booking" +msgstr "Skupinska rezervacija" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Borne by Creditor" +msgstr "Nosi upnik" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Borne by Debtor" +msgstr "Nosi dolžnik" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view +msgid "Cancel" +msgstr "Preklic" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,charge_bearer:0 +msgid "Charge Bearer" +msgstr "Nosilec stroškov" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,state:0 +msgid "Create" +msgstr "Ustvari" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,create_uid:0 +msgid "Created by" +msgstr "Ustvaril" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,create_date:0 +msgid "Created on" +msgstr "Ustvarjeno" + +#. module: account_banking_sepa_credit_transfer +#: model:ir.model,name:account_banking_sepa_credit_transfer.model_banking_export_sepa_wizard +msgid "Export SEPA Credit Transfer File" +msgstr "Izvoz datoteke SEPA prenosov obremenitev" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,file:0 +msgid "File" +msgstr "Datoteka" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,filename:0 +msgid "Filename" +msgstr "Naziv datoteke" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,state:0 +msgid "Finish" +msgstr "Dokončaj" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Following Service Level" +msgstr "Raven storitev" + +#. module: account_banking_sepa_credit_transfer +#: help:banking.export.sepa.wizard,charge_bearer:0 +msgid "" +"Following service level : transaction charges are to be applied following " +"the rules agreed in the service level and/or scheme (SEPA Core messages must" +" use this). Shared : transaction charges on the debtor side are to be borne " +"by the debtor, transaction charges on the creditor side are to be borne by " +"the creditor. Borne by creditor : all transaction charges are to be borne by" +" the creditor. Borne by debtor : all transaction charges are to be borne by " +"the debtor." +msgstr "Nivo sledenja: stroške transakcije se dodeli glede na naslednja pravila v sporazumu o ravni storitev in/ali shemi (SEPA temeljna sporočila morajo to uporabljati). Deljeno: stroške transakcije na strani dolžnika nosi dolžnik sam, stroške na strani upnika pa upnik. Nosi upnik: vse stroške transakcije nosi upnik. Nosi dolžnik: vse stroške transakcije nosi dolžnik." + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view +msgid "Generate" +msgstr "Ustvari" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,id:0 +msgid "ID" +msgstr "ID" + +#. module: account_banking_sepa_credit_transfer +#: 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 "Če pravilno, bančni izpisek prikaže le eno postavko obremenitve za vse transakcije v SEPA XML datoteki ; če napačno, bančni izpisek prikaže le eno obremenitve za vsako transakcijo v SEPA XML datoteki." + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,write_uid:0 +msgid "Last Updated by" +msgstr "Zadnji posodobil" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,write_date:0 +msgid "Last Updated on" +msgstr "Zadnjič posodobljeno" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,nb_transactions:0 +msgid "Number of Transactions" +msgstr "Število transakcij" + +#. module: account_banking_sepa_credit_transfer +#: model:ir.model,name:account_banking_sepa_credit_transfer.model_payment_mode +msgid "Payment Mode" +msgstr "Metoda plačila" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,payment_order_ids:0 +msgid "Payment Orders" +msgstr "Plačilni nalogi" + +#. module: account_banking_sepa_credit_transfer +#: code:addons/account_banking_sepa_credit_transfer/wizard/export_sepa.py:98 +#, 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', 'pain.001.001.05' and " +"'pain.001.003.03'." +msgstr "Koda tipa plačila '%s' ni podprta. Edine kode tipov plačil, ki so podprte za SEPA bremenilne transakcije, so 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04', 'pain.001.001.05' in 'pain.001.003.03'." + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view +msgid "SEPA File Generation" +msgstr "Generiranje SEPA datoteke" + +#. module: account_banking_sepa_credit_transfer +#: selection:banking.export.sepa.wizard,charge_bearer:0 +msgid "Shared" +msgstr "V souporabi" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,state:0 +msgid "State" +msgstr "Stanje" + +#. module: account_banking_sepa_credit_transfer +#: field:banking.export.sepa.wizard,total_amount:0 +msgid "Total Amount" +msgstr "Skupni znesek" + +#. module: account_banking_sepa_credit_transfer +#: view:banking.export.sepa.wizard:account_banking_sepa_credit_transfer.banking_export_sepa_wizard_view +msgid "Validate" +msgstr "Potrdi" diff --git a/account_banking_sepa_credit_transfer/models/__init__.py b/account_banking_sepa_credit_transfer/models/__init__.py new file mode 100644 index 000000000..105896fa3 --- /dev/null +++ b/account_banking_sepa_credit_transfer/models/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import account_payment_method +from . import account_payment_order diff --git a/account_banking_sepa_credit_transfer/models/account_payment_method.py b/account_banking_sepa_credit_transfer/models/account_payment_method.py new file mode 100644 index 000000000..13f8930db --- /dev/null +++ b/account_banking_sepa_credit_transfer/models/account_payment_method.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api + + +class AccountPaymentMethod(models.Model): + _inherit = 'account.payment.method' + + pain_version = fields.Selection(selection_add=[ + ('pain.001.001.02', 'pain.001.001.02'), + ('pain.001.001.03', 'pain.001.001.03 ' + '(recommended for credit transfer)'), + ('pain.001.001.04', 'pain.001.001.04'), + ('pain.001.001.05', 'pain.001.001.05'), + ('pain.001.003.03', 'pain.001.003.03 (credit transfer in Germany)'), + ]) + + @api.multi + def get_xsd_file_path(self): + self.ensure_one() + if self.pain_version in [ + 'pain.001.001.02', 'pain.001.001.03', 'pain.001.001.04', + 'pain.001.001.05', 'pain.001.003.03']: + path = 'account_banking_sepa_credit_transfer/data/%s.xsd'\ + % self.pain_version + return path + return super(AccountPaymentMethod, self).get_xsd_file_path() diff --git a/account_banking_sepa_credit_transfer/models/account_payment_order.py b/account_banking_sepa_credit_transfer/models/account_payment_order.py new file mode 100644 index 000000000..85c94c724 --- /dev/null +++ b/account_banking_sepa_credit_transfer/models/account_payment_order.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- +# © 2010-2016 Akretion (www.akretion.com) +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, api, _ +from openerp.exceptions import UserError +from lxml import etree + + +class AccountPaymentOrder(models.Model): + _inherit = 'account.payment.order' + + @api.multi + def generate_payment_file(self): + """Creates the SEPA Credit Transfer file. That's the important code!""" + self.ensure_one() + if self.payment_method_id.code != 'sepa_credit_transfer': + return super(AccountPaymentOrder, self).generate_payment_file() + + pain_flavor = self.payment_method_id.pain_version + if not pain_flavor: + pain_flavor = 'pain.001.001.03' + # We use pain_flavor.startswith('pain.001.001.xx') + # to support country-specific extensions such as + # pain.001.001.03.ch.02 (cf l10n_ch_sepa) + if pain_flavor.startswith('pain.001.001.02'): + bic_xml_tag = 'BIC' + name_maxsize = 70 + root_xml_tag = 'pain.001.001.02' + elif pain_flavor.startswith('pain.001.001.03'): + bic_xml_tag = 'BIC' + # size 70 -> 140 for with pain.001.001.03 + # BUT the European Payment Council, in the document + # "SEPA Credit Transfer Scheme Customer-to-bank + # Implementation guidelines" v6.0 available on + # http://www.europeanpaymentscouncil.eu/knowledge_bank.cfm + # says that 'Nm' should be limited to 70 + # so we follow the "European Payment Council" + # and we put 70 and not 140 + name_maxsize = 70 + root_xml_tag = 'CstmrCdtTrfInitn' + elif pain_flavor.startswith('pain.001.001.04'): + bic_xml_tag = 'BICFI' + name_maxsize = 140 + root_xml_tag = 'CstmrCdtTrfInitn' + elif pain_flavor.startswith('pain.001.001.05'): + bic_xml_tag = 'BICFI' + name_maxsize = 140 + root_xml_tag = 'CstmrCdtTrfInitn' + # added pain.001.003.03 for German Banks + # it is not in the offical ISO 20022 documentations, but nearly all + # german banks are working with this instead 001.001.03 + elif pain_flavor == 'pain.001.003.03': + bic_xml_tag = 'BIC' + name_maxsize = 70 + root_xml_tag = 'CstmrCdtTrfInitn' + else: + raise UserError( + _("PAIN version '%s' is not supported.") % pain_flavor) + xsd_file = self.payment_method_id.get_xsd_file_path() + gen_args = { + 'bic_xml_tag': bic_xml_tag, + 'name_maxsize': name_maxsize, + 'convert_to_ascii': self.payment_method_id.convert_to_ascii, + 'payment_method': 'TRF', + 'file_prefix': 'sct_', + 'pain_flavor': pain_flavor, + 'pain_xsd_file': xsd_file, + } + nsmap = self.generate_pain_nsmap() + attrib = self.generate_pain_attrib() + xml_root = etree.Element('Document', nsmap=nsmap, attrib=attrib) + pain_root = etree.SubElement(xml_root, root_xml_tag) + # A. Group header + group_header, nb_of_transactions_a, control_sum_a = \ + self.generate_group_header_block(pain_root, gen_args) + transactions_count_a = 0 + amount_control_sum_a = 0.0 + lines_per_group = {} + # key = (requested_date, priority, local_instrument) + # values = list of lines as object + for line in self.bank_line_ids: + priority = line.priority + local_instrument = line.local_instrument + # The field line.date is the requested payment date + # taking into account the 'date_prefered' setting + # cf account_banking_payment_export/models/account_payment.py + # in the inherit of action_open() + key = (line.date, priority, local_instrument) + if key in lines_per_group: + lines_per_group[key].append(line) + else: + lines_per_group[key] = [line] + for (requested_date, priority, local_instrument), lines in\ + lines_per_group.items(): + # B. Payment info + payment_info, nb_of_transactions_b, control_sum_b = \ + self.generate_start_payment_info_block( + pain_root, + "self.name + '-' " + "+ requested_date.replace('-', '') + '-' + priority + " + "'-' + local_instrument", + priority, local_instrument, False, requested_date, { + 'self': self, + 'priority': priority, + 'requested_date': requested_date, + 'local_instrument': local_instrument or 'NOinstr', + }, gen_args) + self.generate_party_block( + payment_info, 'Dbtr', 'B', + self.company_partner_bank_id, gen_args) + charge_bearer = etree.SubElement(payment_info, 'ChrgBr') + if self.sepa: + charge_bearer_text = 'SLEV' + else: + charge_bearer_text = self.charge_bearer + charge_bearer.text = charge_bearer_text + transactions_count_b = 0 + amount_control_sum_b = 0.0 + for line in lines: + transactions_count_a += 1 + transactions_count_b += 1 + # C. Credit Transfer Transaction Info + credit_transfer_transaction_info = etree.SubElement( + payment_info, 'CdtTrfTxInf') + payment_identification = etree.SubElement( + credit_transfer_transaction_info, 'PmtId') + end2end_identification = etree.SubElement( + payment_identification, 'EndToEndId') + end2end_identification.text = self._prepare_field( + 'End to End Identification', 'line.name', + {'line': line}, 35, gen_args=gen_args) + currency_name = self._prepare_field( + 'Currency Code', 'line.currency_id.name', + {'line': line}, 3, gen_args=gen_args) + amount = etree.SubElement( + credit_transfer_transaction_info, 'Amt') + instructed_amount = etree.SubElement( + amount, 'InstdAmt', Ccy=currency_name) + instructed_amount.text = '%.2f' % line.amount_currency + amount_control_sum_a += line.amount_currency + amount_control_sum_b += line.amount_currency + if not line.partner_bank_id: + raise UserError( + _("Bank account is missing on the bank payment line " + "of partner '%s' (reference '%s').") + % (line.partner_id.name, line.name)) + self.generate_party_block( + credit_transfer_transaction_info, 'Cdtr', + 'C', line.partner_bank_id, gen_args, line) + self.generate_remittance_info_block( + credit_transfer_transaction_info, line, gen_args) + if not pain_flavor.startswith('pain.001.001.02'): + nb_of_transactions_b.text = unicode(transactions_count_b) + control_sum_b.text = '%.2f' % amount_control_sum_b + if not pain_flavor.startswith('pain.001.001.02'): + nb_of_transactions_a.text = unicode(transactions_count_a) + control_sum_a.text = '%.2f' % amount_control_sum_a + else: + nb_of_transactions_a.text = unicode(transactions_count_a) + control_sum_a.text = '%.2f' % amount_control_sum_a + return self.finalize_sepa_file_creation(xml_root, gen_args) diff --git a/account_banking_sepa_credit_transfer/post_install.py b/account_banking_sepa_credit_transfer/post_install.py new file mode 100644 index 000000000..631bef653 --- /dev/null +++ b/account_banking_sepa_credit_transfer/post_install.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import SUPERUSER_ID + + +def update_bank_journals(cr, pool): + ajo = pool['account.journal'] + journal_ids = ajo.search( + cr, SUPERUSER_ID, [('type', '=', 'bank')]) + sct_id = pool['ir.model.data'].xmlid_to_res_id( + cr, SUPERUSER_ID, + 'account_banking_sepa_credit_transfer.sepa_credit_transfer') + if sct_id: + ajo.write(cr, SUPERUSER_ID, journal_ids, { + 'outbound_payment_method_ids': [(4, sct_id)], + }) + return diff --git a/account_banking_sepa_credit_transfer/tests/__init__.py b/account_banking_sepa_credit_transfer/tests/__init__.py new file mode 100644 index 000000000..97a8c4298 --- /dev/null +++ b/account_banking_sepa_credit_transfer/tests/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import test_sct diff --git a/account_banking_sepa_credit_transfer/tests/test_sct.py b/account_banking_sepa_credit_transfer/tests/test_sct.py new file mode 100644 index 000000000..9025dd092 --- /dev/null +++ b/account_banking_sepa_credit_transfer/tests/test_sct.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp.addons.account.tests.account_test_classes\ + import AccountingTestCase +from openerp.tools import float_compare +import time +from lxml import etree + + +class TestSCT(AccountingTestCase): + + def test_sct(self): + self.company = self.env['res.company'] + self.account_model = self.env['account.account'] + self.move_model = self.env['account.move'] + self.journal_model = self.env['account.journal'] + self.payment_order_model = self.env['account.payment.order'] + self.payment_line_model = self.env['account.payment.line'] + self.bank_line_model = self.env['bank.payment.line'] + self.partner_bank_model = self.env['res.partner.bank'] + self.attachment_model = self.env['ir.attachment'] + self.invoice_model = self.env['account.invoice'] + self.invoice_line_model = self.env['account.invoice.line'] + company = self.env.ref('base.main_company') + self.partner_agrolait = self.env.ref('base.res_partner_2') + self.partner_c2c = self.env.ref('base.res_partner_12') + self.account_expense = self.account_model.search([( + 'user_type_id', + '=', + self.env.ref('account.data_account_type_expenses').id)], limit=1) + self.account_payable = self.account_model.search([( + 'user_type_id', + '=', + self.env.ref('account.data_account_type_payable').id)], limit=1) + # create journal + self.bank_journal = self.journal_model.create({ + 'name': 'Company Bank journal', + 'type': 'bank', + 'code': 'BNKFB', + 'bank_account_id': + self.env.ref('account_payment_mode.main_company_iban').id, + 'bank_id': + self.env.ref('account_payment_mode.bank_la_banque_postale').id, + }) + # update payment mode + self.payment_mode = self.env.ref( + 'account_banking_sepa_credit_transfer.' + 'payment_mode_outbound_sepa_ct1') + self.payment_mode.write({ + 'bank_account_link': 'fixed', + 'fixed_journal_id': self.bank_journal.id, + }) + eur_currency_id = self.env.ref('base.EUR').id + company.currency_id = eur_currency_id + invoice1 = self.create_invoice( + self.partner_agrolait.id, + 'account_payment_mode.res_partner_2_iban', 42.0, 'F1341') + invoice2 = self.create_invoice( + self.partner_agrolait.id, + 'account_payment_mode.res_partner_2_iban', 12.0, 'F1342') + invoice3 = self.create_invoice( + self.partner_agrolait.id, + 'account_payment_mode.res_partner_2_iban', 5.0, 'A1301', + 'in_refund') + invoice4 = self.create_invoice( + self.partner_c2c.id, + 'account_payment_mode.res_partner_12_iban', 11.0, 'I1642') + invoice5 = self.create_invoice( + self.partner_c2c.id, + 'account_payment_mode.res_partner_12_iban', 41.0, 'I1643') + for inv in [invoice1, invoice2, invoice3, invoice4, invoice5]: + action = inv.create_account_payment_line() + self.assertEquals(action['res_model'], 'account.payment.order') + self.payment_order = self.payment_order_model.browse(action['res_id']) + self.assertEquals( + self.payment_order.payment_type, 'outbound') + self.assertEquals( + self.payment_order.payment_mode_id, self.payment_mode) + self.assertEquals( + self.payment_order.journal_id, self.bank_journal) + pay_lines = self.payment_line_model.search([ + ('partner_id', '=', self.partner_agrolait.id), + ('order_id', '=', self.payment_order.id)]) + self.assertEquals(len(pay_lines), 3) + agrolait_pay_line1 = pay_lines[0] + accpre = self.env['decimal.precision'].precision_get('Account') + self.assertEquals(agrolait_pay_line1.currency_id.id, eur_currency_id) + self.assertEquals( + agrolait_pay_line1.partner_bank_id, invoice1.partner_bank_id) + self.assertEquals(float_compare( + agrolait_pay_line1.amount_currency, 42, precision_digits=accpre), + 0) + self.assertEquals(agrolait_pay_line1.communication_type, 'normal') + self.assertEquals(agrolait_pay_line1.communication, 'F1341') + self.payment_order.draft2open() + self.assertEquals(self.payment_order.state, 'open') + self.assertEquals(self.payment_order.sepa, True) + bank_lines = self.bank_line_model.search([ + ('partner_id', '=', self.partner_agrolait.id)]) + self.assertEquals(len(bank_lines), 1) + agrolait_bank_line = bank_lines[0] + self.assertEquals(agrolait_bank_line.currency_id.id, eur_currency_id) + self.assertEquals(float_compare( + agrolait_bank_line.amount_currency, 49.0, precision_digits=accpre), + 0) + self.assertEquals(agrolait_bank_line.communication_type, 'normal') + self.assertEquals( + agrolait_bank_line.communication, 'F1341-F1342-A1301') + self.assertEquals( + agrolait_bank_line.partner_bank_id, invoice1.partner_bank_id) + + action = self.payment_order.open2generated() + self.assertEquals(self.payment_order.state, 'generated') + self.assertEquals(action['res_model'], 'ir.attachment') + attachment = self.attachment_model.browse(action['res_id']) + self.assertEquals(attachment.datas_fname[-4:], '.xml') + xml_file = attachment.datas.decode('base64') + xml_root = etree.fromstring(xml_file) + # print "xml_file=", etree.tostring(xml_root, pretty_print=True) + namespaces = xml_root.nsmap + namespaces['p'] = xml_root.nsmap[None] + namespaces.pop(None) + pay_method_xpath = xml_root.xpath( + '//p:PmtInf/p:PmtMtd', namespaces=namespaces) + self.assertEquals(pay_method_xpath[0].text, 'TRF') + sepa_xpath = xml_root.xpath( + '//p:PmtInf/p:PmtTpInf/p:SvcLvl/p:Cd', namespaces=namespaces) + self.assertEquals(sepa_xpath[0].text, 'SEPA') + debtor_acc_xpath = xml_root.xpath( + '//p:PmtInf/p:DbtrAcct/p:Id/p:IBAN', namespaces=namespaces) + self.assertEquals( + debtor_acc_xpath[0].text, + self.payment_order.company_partner_bank_id.sanitized_acc_number) + self.payment_order.generated2uploaded() + self.assertEquals(self.payment_order.state, 'uploaded') + for inv in [invoice1, invoice2, invoice3, invoice4, invoice5]: + self.assertEquals(inv.state, 'paid') + return + + def create_invoice( + self, partner_id, partner_bank_xmlid, price_unit, reference, + type='in_invoice'): + invoice = self.invoice_model.create({ + 'partner_id': partner_id, + 'reference_type': 'none', + 'reference': reference, + 'currency_id': self.env.ref('base.EUR').id, + 'name': 'test', + 'account_id': self.account_payable.id, + 'type': type, + 'date_invoice': time.strftime('%Y-%m-%d'), + 'payment_mode_id': self.payment_mode.id, + 'partner_bank_id': self.env.ref(partner_bank_xmlid).id, + }) + self.invoice_line_model.create({ + 'invoice_id': invoice.id, + 'price_unit': price_unit, + 'quantity': 1, + 'name': 'Great service', + 'account_id': self.account_expense.id, + }) + invoice.signal_workflow('invoice_open') + return invoice diff --git a/account_banking_sepa_credit_transfer/wizard/__init__.py b/account_banking_sepa_credit_transfer/wizard/__init__.py deleted file mode 100644 index 399f6ef5c..000000000 --- a/account_banking_sepa_credit_transfer/wizard/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# SEPA Credit Transfer module for Odoo -# Copyright (C) 2010-2013 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from . import export_sepa diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa.py b/account_banking_sepa_credit_transfer/wizard/export_sepa.py deleted file mode 100644 index 09768ca5c..000000000 --- a/account_banking_sepa_credit_transfer/wizard/export_sepa.py +++ /dev/null @@ -1,262 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# SEPA Credit Transfer module for Odoo -# Copyright (C) 2010-2015 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - - -from openerp import models, fields, api, _ -from openerp.exceptions import Warning -from openerp import workflow -from lxml import etree - - -class BankingExportSepaWizard(models.TransientModel): - _name = 'banking.export.sepa.wizard' - _inherit = ['banking.export.pain'] - _description = 'Export SEPA Credit Transfer File' - - state = fields.Selection([ - ('create', 'Create'), - ('finish', 'Finish')], - string='State', readonly=True, default='create') - batch_booking = fields.Boolean( - string='Batch Booking', - help="If true, the bank statement will display only one debit " - "line for all the wire transfers of the SEPA XML file ; if " - "false, the bank statement will display one debit line per wire " - "transfer of the SEPA XML file.") - charge_bearer = fields.Selection([ - ('SLEV', 'Following Service Level'), - ('SHAR', 'Shared'), - ('CRED', 'Borne by Creditor'), - ('DEBT', 'Borne by Debtor')], string='Charge Bearer', - default='SLEV', required=True, - help="Following service level : transaction charges are to be " - "applied following the rules agreed in the service level " - "and/or scheme (SEPA Core messages must use this). Shared : " - "transaction charges on the debtor side are to be borne by " - "the debtor, transaction charges on the creditor side are to " - "be borne by the creditor. Borne by creditor : all " - "transaction charges are to be borne by the creditor. Borne " - "by debtor : all transaction charges are to be borne by the " - "debtor.") - nb_transactions = fields.Integer( - string='Number of Transactions', readonly=True) - total_amount = fields.Float(string='Total Amount', readonly=True) - file = fields.Binary(string="File", readonly=True) - filename = fields.Char(string="Filename", readonly=True) - payment_order_ids = fields.Many2many( - 'payment.order', 'wiz_sepa_payorders_rel', 'wizard_id', - 'payment_order_id', string='Payment Orders', readonly=True) - - @api.model - def create(self, vals): - payment_order_ids = self._context.get('active_ids', []) - vals.update({ - 'payment_order_ids': [[6, 0, payment_order_ids]], - }) - return super(BankingExportSepaWizard, self).create(vals) - - @api.multi - def create_sepa(self): - """Creates the SEPA Credit Transfer file. That's the important code!""" - pain_flavor = self.payment_order_ids[0].mode.type.code - convert_to_ascii = \ - self.payment_order_ids[0].mode.convert_to_ascii - if pain_flavor == 'pain.001.001.02': - bic_xml_tag = 'BIC' - name_maxsize = 70 - root_xml_tag = 'pain.001.001.02' - elif pain_flavor == 'pain.001.001.03': - bic_xml_tag = 'BIC' - # size 70 -> 140 for with pain.001.001.03 - # BUT the European Payment Council, in the document - # "SEPA Credit Transfer Scheme Customer-to-bank - # Implementation guidelines" v6.0 available on - # http://www.europeanpaymentscouncil.eu/knowledge_bank.cfm - # says that 'Nm' should be limited to 70 - # so we follow the "European Payment Council" - # and we put 70 and not 140 - name_maxsize = 70 - root_xml_tag = 'CstmrCdtTrfInitn' - elif pain_flavor == 'pain.001.001.04': - bic_xml_tag = 'BICFI' - name_maxsize = 140 - root_xml_tag = 'CstmrCdtTrfInitn' - elif pain_flavor == 'pain.001.001.05': - bic_xml_tag = 'BICFI' - name_maxsize = 140 - root_xml_tag = 'CstmrCdtTrfInitn' - # added pain.001.003.03 for German Banks - # it is not in the offical ISO 20022 documentations, but nearly all - # german banks are working with this instead 001.001.03 - elif pain_flavor == 'pain.001.003.03': - bic_xml_tag = 'BIC' - name_maxsize = 70 - root_xml_tag = 'CstmrCdtTrfInitn' - else: - raise Warning( - _("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', 'pain.001.001.05'" - " and 'pain.001.003.03'.") % - pain_flavor) - gen_args = { - 'bic_xml_tag': bic_xml_tag, - 'name_maxsize': name_maxsize, - 'convert_to_ascii': convert_to_ascii, - 'payment_method': 'TRF', - 'file_prefix': 'sct_', - 'pain_flavor': pain_flavor, - 'pain_xsd_file': - 'account_banking_sepa_credit_transfer/data/%s.xsd' - % pain_flavor, - } - pain_ns = { - 'xsi': 'http://www.w3.org/2001/XMLSchema-instance', - None: 'urn:iso:std:iso:20022:tech:xsd:%s' % pain_flavor, - } - xml_root = etree.Element('Document', nsmap=pain_ns) - pain_root = etree.SubElement(xml_root, root_xml_tag) - pain_03_to_05 = [ - 'pain.001.001.03', - 'pain.001.001.04', - 'pain.001.001.05', - 'pain.001.003.03' - ] - # A. Group header - group_header_1_0, nb_of_transactions_1_6, control_sum_1_7 = \ - self.generate_group_header_block(pain_root, gen_args) - transactions_count_1_6 = 0 - total_amount = 0.0 - amount_control_sum_1_7 = 0.0 - lines_per_group = {} - # key = (requested_date, priority) - # values = list of lines as object - today = fields.Date.context_today(self) - for payment_order in self.payment_order_ids: - total_amount = total_amount + payment_order.total - for line in payment_order.line_ids: - priority = line.priority - if payment_order.date_prefered == 'due': - requested_date = line.ml_maturity_date or today - elif payment_order.date_prefered == 'fixed': - requested_date = payment_order.date_scheduled or today - else: - requested_date = today - key = (requested_date, priority) - if key in lines_per_group: - lines_per_group[key].append(line) - else: - lines_per_group[key] = [line] - # Write requested_date on 'Payment date' of the pay line - if requested_date != line.date: - line.date = requested_date - for (requested_date, priority), lines in lines_per_group.items(): - # B. Payment info - payment_info_2_0, nb_of_transactions_2_4, control_sum_2_5 = \ - self.generate_start_payment_info_block( - pain_root, - "self.payment_order_ids[0].reference + '-' " - "+ requested_date.replace('-', '') + '-' + priority", - priority, False, False, requested_date, { - 'self': self, - 'priority': priority, - 'requested_date': requested_date, - }, gen_args) - self.generate_party_block( - payment_info_2_0, 'Dbtr', 'B', - 'self.payment_order_ids[0].mode.bank_id.partner_id.' - 'name', - 'self.payment_order_ids[0].mode.bank_id.acc_number', - 'self.payment_order_ids[0].mode.bank_id.bank.bic or ' - 'self.payment_order_ids[0].mode.bank_id.bank_bic', - {'self': self}, - gen_args) - charge_bearer_2_24 = etree.SubElement(payment_info_2_0, 'ChrgBr') - charge_bearer_2_24.text = self.charge_bearer - transactions_count_2_4 = 0 - amount_control_sum_2_5 = 0.0 - for line in lines: - transactions_count_1_6 += 1 - transactions_count_2_4 += 1 - # C. Credit Transfer Transaction Info - credit_transfer_transaction_info_2_27 = etree.SubElement( - payment_info_2_0, 'CdtTrfTxInf') - payment_identification_2_28 = etree.SubElement( - credit_transfer_transaction_info_2_27, 'PmtId') - end2end_identification_2_30 = etree.SubElement( - payment_identification_2_28, 'EndToEndId') - end2end_identification_2_30.text = self._prepare_field( - 'End to End Identification', 'line.name', - {'line': line}, 35, gen_args=gen_args) - currency_name = self._prepare_field( - 'Currency Code', 'line.currency.name', - {'line': line}, 3, gen_args=gen_args) - amount_2_42 = etree.SubElement( - credit_transfer_transaction_info_2_27, 'Amt') - instructed_amount_2_43 = etree.SubElement( - amount_2_42, 'InstdAmt', Ccy=currency_name) - instructed_amount_2_43.text = '%.2f' % line.amount_currency - amount_control_sum_1_7 += line.amount_currency - amount_control_sum_2_5 += line.amount_currency - if not line.bank_id: - raise Warning( - _("Missing Bank Account on invoice '%s' (payment " - "order line reference '%s').") - % (line.ml_inv_ref.number, line.name)) - self.generate_party_block( - credit_transfer_transaction_info_2_27, 'Cdtr', - 'C', 'line.partner_id.name', 'line.bank_id.acc_number', - 'line.bank_id.bank.bic or ' - 'line.bank_id.bank_bic', {'line': line}, gen_args) - self.generate_remittance_info_block( - credit_transfer_transaction_info_2_27, line, gen_args) - if pain_flavor in pain_03_to_05: - nb_of_transactions_2_4.text = unicode(transactions_count_2_4) - control_sum_2_5.text = '%.2f' % amount_control_sum_2_5 - if pain_flavor in pain_03_to_05: - nb_of_transactions_1_6.text = unicode(transactions_count_1_6) - control_sum_1_7.text = '%.2f' % amount_control_sum_1_7 - else: - nb_of_transactions_1_6.text = unicode(transactions_count_1_6) - control_sum_1_7.text = '%.2f' % amount_control_sum_1_7 - return self.finalize_sepa_file_creation( - xml_root, total_amount, transactions_count_1_6, gen_args) - - @api.multi - def save_sepa(self): - """Save the SEPA file: send the done signal to all payment - orders in the file. With the default workflow, they will - transition to 'done', while with the advanced workflow in - account_banking_payment they will transition to 'sent' waiting - reconciliation. - """ - for order in self.payment_order_ids: - workflow.trg_validate( - self._uid, 'payment.order', order.id, 'done', self._cr) - self.env['ir.attachment'].create({ - 'res_model': 'payment.order', - 'res_id': order.id, - 'name': self.filename, - 'datas': self.file, - }) - return True diff --git a/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml b/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml deleted file mode 100644 index 38ab4b7a1..000000000 --- a/account_banking_sepa_credit_transfer/wizard/export_sepa_view.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - banking.export.sepa.wizard.view - banking.export.sepa.wizard - -
- - - - - - - - - - - -
-
- -
-
- -
-
diff --git a/account_banking_sepa_direct_debit/README.rst b/account_banking_sepa_direct_debit/README.rst index ace5ce806..22f07a8ad 100644 --- a/account_banking_sepa_direct_debit/README.rst +++ b/account_banking_sepa_direct_debit/README.rst @@ -1,6 +1,7 @@ .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg :alt: License: AGPL-3 +================================= Account Banking SEPA Direct Debit ================================= @@ -23,8 +24,8 @@ Installation ============ This module depends on : -* account_direct_debit -* account_banking_pain_base', + +* account_banking_pain_base * account_banking_mandate This module is part of the OCA/bank-payment suite. @@ -32,31 +33,34 @@ This module is part of the OCA/bank-payment suite. Configuration ============= -To configure this module, you need to: - - * Create a payment mode and select an export type related to debit order ( eg. "SEPA direct debit ...") +Create a Payment Mode dedicated to SEPA Direct Debit and select the +Payment Method *SEPA Direct Debit for customers* (which is automatically +created upon module installation) and check that this payment method +uses the proper version of PAIN. Usage ===== -To use this module, you must select this payment mode on a direct debit order (Menu :Accounting > Payment > Direct Debit orders) +In the menu *Accounting > Payments > Debit Order*, create a new debit +order and select the Payment Mode dedicated to SEPA Direct Debit that +you created during the configuration step. -For further information, please visit: - - * https://www.odoo.com/forum/help-1 +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/173/9.0 Known issues / Roadmap ====================== * No known issues - + Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. Credits ======= @@ -64,13 +68,14 @@ Credits Contributors ------------ -* Firsname Lastname -* Alexis de Lattre +* Alexis de Lattre * Pedro M. Baeza * Stéphane Bidoul * Alexandre Fayolle * Raphaël Valyi * Sandy Carter +* Antonio Espinosa +* Sergio Teruel Maintainer diff --git a/account_banking_sepa_direct_debit/__init__.py b/account_banking_sepa_direct_debit/__init__.py index 096fe8ad3..a1815ae51 100644 --- a/account_banking_sepa_direct_debit/__init__.py +++ b/account_banking_sepa_direct_debit/__init__.py @@ -1,24 +1,4 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# SEPA Direct Debit module for OpenERP -# Copyright (C) 2013 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- from . import models -from . import wizard +from .post_install import update_bank_journals diff --git a/account_banking_sepa_direct_debit/__openerp__.py b/account_banking_sepa_direct_debit/__openerp__.py index 67df556e0..d23eb7a93 100644 --- a/account_banking_sepa_direct_debit/__openerp__.py +++ b/account_banking_sepa_direct_debit/__openerp__.py @@ -1,47 +1,36 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# SEPA Direct Debit module for Odoo -# Copyright (C) 2013-2015 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- +# © 2013-2016 Akretion (www.akretion.com) +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2016 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + { 'name': 'Account Banking SEPA Direct Debit', 'summary': 'Create SEPA files for Direct Debit', - 'version': '8.0.0.2.0', + 'version': '9.0.1.0.0', 'license': 'AGPL-3', 'author': "Akretion, " "Serv. Tecnol. Avanzados - Pedro M. Baeza, " + "Antiun Ingeniería S.L., " "Odoo Community Association (OCA)", 'website': 'https://github.com/OCA/bank-payment', 'category': 'Banking addons', 'depends': [ - 'account_direct_debit', 'account_banking_pain_base', 'account_banking_mandate', ], 'data': [ 'views/account_banking_mandate_view.xml', 'views/res_company_view.xml', - 'wizard/export_sdd_view.xml', + 'views/res_config.xml', + 'views/account_payment_mode.xml', 'data/mandate_expire_cron.xml', - 'data/payment_type_sdd.xml', - 'security/original_mandate_required_security.xml', + 'data/account_payment_method.xml', + 'data/report_paperformat.xml', + 'reports/sepa_direct_debit_mandate.xml', + 'views/report_sepa_direct_debit_mandate.xml', ], 'demo': ['demo/sepa_direct_debit_demo.xml'], - 'installable': False, + 'post_init_hook': 'update_bank_journals', + 'installable': True, } diff --git a/account_banking_sepa_direct_debit/data/account_payment_method.xml b/account_banking_sepa_direct_debit/data/account_payment_method.xml new file mode 100644 index 000000000..67a3339f6 --- /dev/null +++ b/account_banking_sepa_direct_debit/data/account_payment_method.xml @@ -0,0 +1,17 @@ + + + + + + + SEPA Direct Debit for customers + sepa_direct_debit + inbound + + + pain.008.001.02 + + + + + diff --git a/account_banking_sepa_direct_debit/data/mandate_expire_cron.xml b/account_banking_sepa_direct_debit/data/mandate_expire_cron.xml index 48fe6fc63..fc411dacf 100644 --- a/account_banking_sepa_direct_debit/data/mandate_expire_cron.xml +++ b/account_banking_sepa_direct_debit/data/mandate_expire_cron.xml @@ -1,7 +1,7 @@ diff --git a/account_banking_sepa_direct_debit/data/pain.008.003.02.xsd b/account_banking_sepa_direct_debit/data/pain.008.003.02.xsd new file mode 100644 index 000000000..99992b5e2 --- /dev/null +++ b/account_banking_sepa_direct_debit/data/pain.008.003.02.xsd @@ -0,0 +1,614 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mandatory if changes occur in ‘Mandate Identification’, otherwise not to be used. + + + + + Mandatory if changes occur in 'Creditor Scheme Identification', otherwise not to be used. + + + + + To be used only for changes of accounts within the same bank. + + + + + To use 'Identification’ under 'Other' under 'Financial Institution Identifier with code ‘SMNDA’ to indicate same mandate with new Debtor Agent. To be used with the ‘FRST’ indicator in the ‘Sequence Type’. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If a Creditor Reference contains a check digit, the receiving bank is not required to validate this. +If the receiving bank validates the check digit and if this validation fails, the bank may continue its processing and send the transaction to the next party in the chain. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + It is recommended that all transactions within the same ‘Payment Information’ block have the same ‘Creditor Scheme Identification’. +This data element must be present at either ‘Payment Information’ or ‘Direct Debit +Transaction’ level. + + + + + + + + + + + It is recommended that this element be specified at ‘Payment Information’ level. + + + + + + This data element may be present either at ‘Payment Information’ or at ‘Direct Debit Transaction Information’ level. + + + + + + + + Mandatory if provided by the debtor in the mandate. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mandatory if 'Amendment Indicator' is 'TRUE' +The reason code from the Rulebook is indicated using one of the following message subelements. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Either ‘BIC or BEI’ or one +occurrence of ‘Other’ is allowed. + + + + + Either ‘Date and Place of Birth’ or one occurrence of ‘Other’ is allowed + + + + + + + + + + Private Identification is used to identify either an organisation or a private +person. + + + + + + + + + ‘Name’ is limited to 70 characters in length. + + + + + + + + + + ‘Name’ is limited to 70 characters in length. + + + + + + + + + + + + + + + + If present the new’ Name’ must be specified under ‘Creditor’. ‘Name’ is limited to 70 characters in length. + + + + + + + + + + ‘Name’ is limited to 70 characters in length. + + + + + + + + + + + + + + + + + + If present and contains ‘true’, batch booking is requested. If present and contains ‘false’, booking per transaction is requested. If element is not present, pre-agreed customer-to-bank conditions apply. + + + + + + + + + + + + This data element may be present either at ‘Payment Information’ or at ‘Direct Debit Transaction Information’ level. + + + + + It is recommended that this element be specified at ‘Payment Information’ level. + + + + + It is recommended that all transactions within the same ‘Payment Information’ block have the same ‘Creditor Scheme Identification’. +This data element must be present at either ‘Payment Information’ or ‘Direct Debit +Transaction’ level. + + + + + + + + + + + + + + + + Only ‘B2B’, 'CORE' or 'COR1' is allowed. The mixing of different Local Instrument values is not allowed in the same message. + + + + + If 'Amendment Indicator' is 'true' and 'Original Debtor Agent' is set to 'SMNDA' this message element must indicate 'FRST' + + + + + Depending on the agreement between the Creditor and the Creditor Bank, ‘Category Purpose’ may be forwarded to the Debtor Bank. + + + + + + + + + + + + + + + + + Only one occurrence of ‘Other’ is allowed, and no other sub-elements are allowed. +Identification must be used with an identifier described in General Message Element Specifications, Chapter 1.5.2 of the Implementation Guide. +Scheme Name’ under ‘Other’ must specify ‘SEPA’ under ‘Proprietary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Only codes from the ISO 20022 ExternalPurposeCode list are allowed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + When present, the receiving bank is not obliged to validate the reference information. + + + + + + + + + + + + + + + + + + diff --git a/account_banking_sepa_direct_debit/data/payment_type_sdd.xml b/account_banking_sepa_direct_debit/data/payment_type_sdd.xml deleted file mode 100644 index a17b3b21c..000000000 --- a/account_banking_sepa_direct_debit/data/payment_type_sdd.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - SEPA Direct Debit v02 (recommended) - pain.008.001.02 - - - debit - - - - SEPA Direct Debit v03 - pain.008.001.03 - - - debit - - - - SEPA Direct Debit v04 - pain.008.001.04 - - - debit - - - - - diff --git a/account_banking_mandate/data/report_paperformat.xml b/account_banking_sepa_direct_debit/data/report_paperformat.xml similarity index 100% rename from account_banking_mandate/data/report_paperformat.xml rename to account_banking_sepa_direct_debit/data/report_paperformat.xml diff --git a/account_banking_sepa_direct_debit/demo/sepa_direct_debit_demo.xml b/account_banking_sepa_direct_debit/demo/sepa_direct_debit_demo.xml index 51a24bad1..a93f87b3f 100644 --- a/account_banking_sepa_direct_debit/demo/sepa_direct_debit_demo.xml +++ b/account_banking_sepa_direct_debit/demo/sepa_direct_debit_demo.xml @@ -3,34 +3,47 @@ - - SEPA Direct Debit La Banque Postale - - + + SEPA Direct Debit of customers - - + variable + + FR78ZZZ424242 + - + + sepa recurrent first 2014-02-01 valid + + + + + + - + + sepa recurrent first valid + + + + + diff --git a/account_banking_sepa_direct_debit/i18n/account_banking_sepa_direct_debit.pot b/account_banking_sepa_direct_debit/i18n/account_banking_sepa_direct_debit.pot index a39fa750a..834613460 100644 --- a/account_banking_sepa_direct_debit/i18n/account_banking_sepa_direct_debit.pot +++ b/account_banking_sepa_direct_debit/i18n/account_banking_sepa_direct_debit.pot @@ -319,11 +319,6 @@ msgstr "" msgid "SEPA Direct Debit Files" msgstr "" -#. module: account_banking_sepa_direct_debit -#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.mandate_action -msgid "SEPA Direct Debit Mandates" -msgstr "" - #. module: account_banking_sepa_direct_debit #: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view msgid "SEPA Direct Debit XML file generation" diff --git a/account_banking_sepa_direct_debit/i18n/en.po b/account_banking_sepa_direct_debit/i18n/en.po new file mode 100644 index 000000000..ee6d51576 --- /dev/null +++ b/account_banking_sepa_direct_debit/i18n/en.po @@ -0,0 +1,588 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_sepa_direct_debit +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-07 16:04+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: English (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/en/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: en\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_banking_sepa_direct_debit +#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.mandate_action +msgid "" +"

\n" +" Click to create a new SEPA Direct Debit Mandate.\n" +"

\n" +" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n" +"

\n" +" " +msgstr "

\n Click to create a new SEPA Direct Debit Mandate.\n

\n A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n

\n " + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_banking_mandate +msgid "A generic banking mandate" +msgstr "A generic banking mandate" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO " +"CREDITOR FOR STORAGE." +msgstr "ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.\n" +" NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n" +" THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK." +msgstr "ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.\n NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Account Number - IBAN:" +msgstr "Account Number - IBAN:" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Address of the Debtor:" +msgstr "Address of the Debtor:" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Address:" +msgstr "Address:" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"As part of your rights, you are entitled to a refund from\n" +" your bank under the terms and conditions of your agreement\n" +" with your bank.\n" +" A refund must be claimed within 8 weeks starting from the date on which your account was debited." +msgstr "As part of your rights, you are entitled to a refund from\n your bank under the terms and conditions of your agreement\n with your bank.\n A refund must be claimed within 8 weeks starting from the date on which your account was debited." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:116 +#, python-format +msgid "" +"As you changed the bank account attached to this mandate, the 'Sequence " +"Type' has been set back to 'First'." +msgstr "As you changed the bank account attached to this mandate, the 'Sequence Type' has been set back to 'First'." + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "Bank Payment Lines" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,scheme:0 +msgid "Basic (CORE)" +msgstr "Basic (CORE)" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,batch_booking:0 +msgid "Batch Booking" +msgstr "Batch Booking" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Borne by Creditor" +msgstr "Borne by Creditor" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Borne by Debtor" +msgstr "Borne by Debtor" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "By signing this mandate form, you authorise (A)" +msgstr "By signing this mandate form, you authorise (A)" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Cancel" +msgstr "Cancel" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,charge_bearer:0 +msgid "Charge Bearer" +msgstr "Charge Bearer" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company +msgid "Companies" +msgstr "Companies" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Country of the debtor:" +msgstr "Country of the debtor:" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Country:" +msgstr "Country:" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,state:0 +msgid "Create" +msgstr "Create" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,create_uid:0 +msgid "Created by" +msgstr "Created by" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,create_date:0 +msgid "Created on" +msgstr "Created on" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Creditor's Name:" +msgstr "Creditor's Name:" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Date - Location:" +msgstr "Date - Location:" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Debtor's Name:" +msgstr "Debtor's Name:" + +#. module: account_banking_sepa_direct_debit +#: help:payment.mode,sepa_creditor_identifier:0 +msgid "" +"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from company will be used.\n" +"This identifier is composed of :\n" +"- your country ISO code (2 letters)\n" +"- a 2-digits checkum\n" +"- a 3-letters business code\n" +"- a country-specific identifier" +msgstr "Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from company will be used.\nThis identifier is composed of :\n- your country ISO code (2 letters)\n- a 2-digits checkum\n- a 3-letters business code\n- a country-specific identifier" + +#. module: account_banking_sepa_direct_debit +#: help:res.company,sepa_creditor_identifier:0 +msgid "" +"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n" +"- your country ISO code (2 letters)\n" +"- a 2-digits checkum\n" +"- a 3-letters business code\n" +"- a country-specific identifier" +msgstr "Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n- your country ISO code (2 letters)\n- a 2-digits checkum\n- a 3-letters business code\n- a country-specific identifier" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,scheme:0 +msgid "Enterprise (B2B)" +msgstr "Enterprise (B2B)" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:42 +#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:32 +#, python-format +msgid "Error" +msgstr "Error" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard +msgid "Export SEPA Direct Debit File" +msgstr "Export SEPA Direct Debit File" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,file:0 +msgid "File" +msgstr "File" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,filename:0 +msgid "Filename" +msgstr "Filename" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,recurrent_sequence_type:0 +msgid "Final" +msgstr "Final" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,state:0 +msgid "Finish" +msgstr "Finish" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,recurrent_sequence_type:0 +msgid "First" +msgstr "First" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Following Service Level" +msgstr "Following Service Level" + +#. module: account_banking_sepa_direct_debit +#: help:banking.export.sdd.wizard,charge_bearer:0 +msgid "" +"Following service level : transaction charges are to be applied following " +"the rules agreed in the service level and/or scheme (SEPA Core messages must" +" use this). Shared : transaction charges on the creditor side are to be " +"borne by the creditor, transaction charges on the debtor side are to be " +"borne by the debtor. Borne by creditor : all transaction charges are to be " +"borne by the creditor. Borne by debtor : all transaction charges are to be " +"borne by the debtor." +msgstr "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor." + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Generate" +msgstr "Generate" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,id:0 +msgid "ID" +msgstr "ID" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Identifier:" +msgstr "Identifier:" + +#. module: account_banking_sepa_direct_debit +#: help:payment.mode,original_creditor_identifier:0 +msgid "" +"If not defined, Original Creditor Identifier from company will be used." +msgstr "If not defined, Original Creditor Identifier from company will be used." + +#. module: account_banking_sepa_direct_debit +#: help:account.banking.mandate,sepa_migrated:0 +msgid "" +"If this field is not active, the mandate section of the next direct debit " +"file that include this mandate will contain the 'Original Mandate " +"Identification' and the 'Original Creditor Scheme Identification'. This is " +"required in a few countries (Belgium for instance), but not in all " +"countries. If this is not required in your country, you should keep this " +"field always active." +msgstr "If this field is not active, the mandate section of the next direct debit file that include this mandate will contain the 'Original Mandate Identification' and the 'Original Creditor Scheme Identification'. This is required in a few countries (Belgium for instance), but not in all countries. If this is not required in your country, you should keep this field always active." + +#. module: account_banking_sepa_direct_debit +#: help:banking.export.sdd.wizard,batch_booking:0 +msgid "" +"If true, the bank statement will display only one credit line for all the " +"direct debits of the SEPA file ; if false, the bank statement will display " +"one credit line per direct debit of the SEPA file." +msgstr "If true, the bank statement will display only one credit line for all the direct debits of the SEPA file ; if false, the bank statement will display one credit line per direct debit of the SEPA file." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:43 +#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:33 +#, python-format +msgid "Invalid SEPA Creditor Identifier." +msgstr "Invalid SEPA Creditor Identifier." + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,write_uid:0 +msgid "Last Updated by" +msgstr "Last Updated by" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,write_date:0 +msgid "Last Updated on" +msgstr "Last Updated on" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Mandate Reference:" +msgstr "Mandate Reference:" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:115 +#, python-format +msgid "Mandate update" +msgstr "Mandate update" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,sepa_migrated:0 +msgid "Migrated to SEPA" +msgstr "Migrated to SEPA" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:159 +#, python-format +msgid "" +"Missing SEPA Direct Debit mandate on the bank payment line with partner '%s'" +" (reference '%s')." +msgstr "Missing SEPA Direct Debit mandate on the bank payment line with partner '%s' (reference '%s')." + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,nb_transactions:0 +msgid "Number of Transactions" +msgstr "Number of Transactions" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: selection:account.banking.mandate,type:0 +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "One-Off" +msgstr "One-Off" + +#. module: account_banking_sepa_direct_debit +#: field:payment.mode,original_creditor_identifier:0 +#: field:res.company,original_creditor_identifier:0 +msgid "Original Creditor Identifier" +msgstr "Original Creditor Identifier" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,original_mandate_identification:0 +msgid "Original Mandate Identification" +msgstr "Original Mandate Identification" + +#. module: account_banking_sepa_direct_debit +#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required +msgid "Original Mandate Required (SEPA)" +msgstr "Original Mandate Required (SEPA)" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_mode +msgid "Payment Mode" +msgstr "Payment Mode" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,payment_order_ids:0 +msgid "Payment Orders" +msgstr "Payment Orders" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:117 +#, python-format +msgid "" +"Payment Type Code '%s' is not supported. The only Payment Type Code " +"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and" +" 'pain.008.001.04'." +msgstr "Payment Type Code '%s' is not supported. The only Payment Type Code supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and 'pain.008.001.04'." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Postal Code - City - Town:" +msgstr "Postal Code - City - Town:" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: selection:account.banking.mandate,type:0 +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Recurrent" +msgstr "Recurrent" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,recurrent_sequence_type:0 +msgid "Recurring" +msgstr "Recurring" + +#. module: account_banking_sepa_direct_debit +#: view:res.partner:account_banking_sepa_direct_debit.sdd_mandate_partner_form +#: view:res.partner.bank:account_banking_sepa_direct_debit.sdd_mandate_partner_bank_tree +msgid "SDD Mandates" +msgstr "SDD Mandates" + +#. module: account_banking_sepa_direct_debit +#: field:payment.mode,sepa_creditor_identifier:0 +#: field:res.company,sepa_creditor_identifier:0 +msgid "SEPA Creditor Identifier" +msgstr "SEPA Creditor Identifier" + +#. module: account_banking_sepa_direct_debit +#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.mandate_action +msgid "SEPA Direct Debit Mandates" +msgstr "SEPA Direct Debit Mandates" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "SEPA Direct Debit XML file generation" +msgstr "SEPA Direct Debit XML file generation" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: field:account.banking.mandate,scheme:0 +msgid "Scheme" +msgstr "Scheme" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Sepa Business-To-Business Direct debit Mandate" +msgstr "Sepa Business-To-Business Direct debit Mandate" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Sepa Direct Debit Mandate" +msgstr "Sepa Direct Debit Mandate" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:35 +#: model:ir.actions.report.xml,name:account_banking_sepa_direct_debit.report_sepa_direct_debit_mandate +#, python-format +msgid "Sepa Mandate" +msgstr "Sepa Mandate" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree +msgid "Sequence Type" +msgstr "Sequence Type" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,recurrent_sequence_type:0 +msgid "Sequence Type for Next Debit" +msgstr "Sequence Type for Next Debit" + +#. module: account_banking_sepa_direct_debit +#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_final +#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_final +msgid "Sequence Type set to Final" +msgstr "Sequence Type set to Final" + +#. module: account_banking_sepa_direct_debit +#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_first +#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_first +msgid "Sequence Type set to First" +msgstr "Sequence Type set to First" + +#. module: account_banking_sepa_direct_debit +#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring +#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring +msgid "Sequence Type set to Recurring" +msgstr "Sequence Type set to Recurring" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Shared" +msgstr "Shared" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Signature of the debtor:" +msgstr "Signature of the debtor:" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,state:0 +msgid "State" +msgstr "State" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Swift BIC (up to 8 or 11 characteres):" +msgstr "Swift BIC (up to 8 or 11 characteres):" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:166 +#, python-format +msgid "" +"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has " +"expired." +msgstr "The SEPA Direct Debit mandate with reference '%s' for partner '%s' has expired." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:174 +#, python-format +msgid "" +"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' " +"and it has a last debit date set to '%s', so we can't use it." +msgstr "The mandate with reference '%s' for partner '%s' has type set to 'One-Off' and it has a last debit date set to '%s', so we can't use it." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:76 +#, python-format +msgid "The recurrent mandate '%s' must have a sequence type." +msgstr "The recurrent mandate '%s' must have a sequence type." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:86 +#, python-format +msgid "" +"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must " +"have its recurrent sequence type set to 'First'." +msgstr "The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must have its recurrent sequence type set to 'First'." + +#. module: account_banking_sepa_direct_debit +#: help:account.banking.mandate,recurrent_sequence_type:0 +msgid "" +"This field is only used for Recurrent mandates, not for One-Off mandates." +msgstr "This field is only used for Recurrent mandates, not for One-Off mandates." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"This mandate is only intended for business-to-business transactions.\n" +" You are not entitled to a refund from your bank after your account has\n" +" been debited, but you are entitled to request your bank\n" +" not to debit your account up until the day on which the payment is due." +msgstr "This mandate is only intended for business-to-business transactions.\n You are not entitled to a refund from your bank after your account has\n been debited, but you are entitled to request your bank\n not to debit your account up until the day on which the payment is due." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "To be completed by the creditor" +msgstr "To be completed by the creditor" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "To be completed by the debtor" +msgstr "To be completed by the debtor" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,total_amount:0 +msgid "Total Amount" +msgstr "Total Amount" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree +msgid "Type" +msgstr "Type" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,type:0 +msgid "Type of Mandate" +msgstr "Type of Mandate" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Type of payment:" +msgstr "Type of payment:" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Validate" +msgstr "Validate" + +#. module: account_banking_sepa_direct_debit +#: help:account.banking.mandate,original_mandate_identification:0 +msgid "" +"When the field 'Migrated to SEPA' is not active, this field will be used as " +"the Original Mandate Identification in the Direct Debit file." +msgstr "When the field 'Migrated to SEPA' is not active, this field will be used as the Original Mandate Identification in the Direct Debit file." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:98 +#, python-format +msgid "" +"You must set the 'Original Mandate Identification' on the recurrent mandate " +"'%s' which is not marked as 'Migrated to SEPA'." +msgstr "You must set the 'Original Mandate Identification' on the recurrent mandate '%s' which is not marked as 'Migrated to SEPA'." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"to send instructions to your bank to debit your account and (B) your bank to\n" +" debit your account in accordance with the instructions from" +msgstr "to send instructions to your bank to debit your account and (B) your bank to\n debit your account in accordance with the instructions from" diff --git a/account_banking_sepa_direct_debit/i18n/es.po b/account_banking_sepa_direct_debit/i18n/es.po index 98334c842..8f64295d1 100644 --- a/account_banking_sepa_direct_debit/i18n/es.po +++ b/account_banking_sepa_direct_debit/i18n/es.po @@ -1,34 +1,32 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * account_banking_sepa_direct_debit -# +# * account_banking_sepa_direct_debit +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" +"Project-Id-Version: bank-payment (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-10-31 22:53+0000\n" -"PO-Revision-Date: 2014-10-31 22:53+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-07 16:04+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Spanish (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_banking_sepa_direct_debit #: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.mandate_action -msgid "

\n" -" Click to create a new SEPA Direct Debit Mandate.\n" -"

\n" -" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n" -"

\n" -" " -msgstr "

\n" -" Pulse para crear un nuevo mandato de adeudo directo SEPA.\n" -"

\n" -" Un mandato de adeudo directo SEPA es un documento firmado por su cliente que le autoriza a realizar uno o más cobros directos en su cuenta bancaria, también conocidas como domiciliaciones.\n" -"

\n" -" " +msgid "" +"

\n" +" Click to create a new SEPA Direct Debit Mandate.\n" +"

\n" +" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n" +"

\n" +" " +msgstr "

\n Pulse para crear un nuevo mandato bancario.\n

\n Un mandato bancario es un documento firmado por su cliente que le da la autorización para hacer una o varias operaciones en su cuenta bancaria.\n

\n " #. module: account_banking_sepa_direct_debit #: model:ir.model,name:account_banking_sepa_direct_debit.model_account_banking_mandate @@ -36,10 +34,56 @@ 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:120 +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO " +"CREDITOR FOR STORAGE." +msgstr "TODOS LOS CAMPOS HAN DE SER CUMPLIMENTADOS OBLIGATORIAMENTE. UNA VEZ FIRMADA ESTA ORDEN DE DOMICILIACIÓN DEBE SER ENVIADA AL ACREEDOR PARA SU CUSTODIA." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.\n" +" NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n" +" THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK." +msgstr "TODOS LOS CAMPOS HAN DE SER CUMPLIMENTADOS OBLIGATORIAMENTE. UNA VEZ FIRMADA ESTA ORDEN DE DOMICILIACIÓN DEBE SER ENVIADA AL ACREEDOR PARA SU CUSTODIA.LA ENTIDAD DE DEUDOR REQUIERE AUTORIZACIÓN DE ÉSTE PREVIA AL CARGO EN CUENTA DE LOS ADEUDOS DIRECTOS B2B.EL DEUDOR PODRÁ GESTIONAR DICHA AUTORIZACIÓN CON LOS MEDIOS QUE SU ENTIDAD PONGA A SU DISPOSICIÓN." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Account Number - IBAN:" +msgstr "Número de cuenta - IBAN:" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Address of the Debtor:" +msgstr "Dirección del deudor:" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Address:" +msgstr "Dirección:" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"As part of your rights, you are entitled to a refund from\n" +" your bank under the terms and conditions of your agreement\n" +" with your bank.\n" +" A refund must be claimed within 8 weeks starting from the date on which your account was debited." +msgstr "Como parte de sus derechos, el deudor está legitimado al reembolso por su entidad en los términos y condiciones del contrato suscrito con la misma. La solicitud de reembolso deberá efectuarse dentro de las ocho semanas que siguen a la fecha de adeudo en cuenta. Puede obtener información adicional sobre sus derechos en su entidad financiera." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:116 #, python-format -msgid "As you changed the bank account attached to this mandate, the 'Sequence Type' has been set back to 'First'." -msgstr "Puesto que ha cambiar 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 +msgid "Bank Payment Lines" +msgstr "Lineas de pago bancario" #. module: account_banking_sepa_direct_debit #: selection:account.banking.mandate,scheme:0 @@ -47,30 +91,31 @@ msgid "Basic (CORE)" msgstr "Básico (CORE)" #. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,batch_booking:0 #: field:banking.export.sdd.wizard,batch_booking:0 msgid "Batch Booking" msgstr "Registro en lote" #. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,charge_bearer:0 #: selection:banking.export.sdd.wizard,charge_bearer:0 msgid "Borne by Creditor" msgstr "A cargo del acreedor" #. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,charge_bearer:0 #: selection:banking.export.sdd.wizard,charge_bearer:0 msgid "Borne by Debtor" msgstr "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" msgstr "Cancelar" #. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,charge_bearer:0 #: field:banking.export.sdd.wizard,charge_bearer:0 msgid "Charge Bearer" msgstr "A cargo del portador" @@ -80,13 +125,22 @@ 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" msgstr "Crear" #. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,create_uid:0 #: field:banking.export.sdd.wizard,create_uid:0 msgid "Created by" msgstr "Creado por" @@ -97,22 +151,40 @@ msgid "Created on" msgstr "Creado en" #. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,state:0 -msgid "Draft" -msgstr "Borrador" +#: 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 -#: 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 "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" -"- el código ISO de 2 letras de su país\n" -"- dos dígitos de comprobación\n" -"- tres letras de código de negocio\n" -"- un identificador específico de país (en España, el NIF)" +msgstr "Introduzca el identificador de acreedor que se le ha atribuido a su compañía para realizar adeudos directos SEPA. Su banco suele poseer esta información. Este identificador se compone de:\n- el código ISO de 2 letras de su país\n- dos dígitos de comprobación\n- tres letras de código de negocio\n- un identificador específico de país (en España, el NIF)" + +#. module: account_banking_sepa_direct_debit +#: help:res.company,sepa_creditor_identifier:0 +msgid "" +"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n" +"- your country ISO code (2 letters)\n" +"- a 2-digits checkum\n" +"- a 3-letters business code\n" +"- a country-specific identifier" +msgstr "Introduzca el identificador de acreedor que se le ha atribuido a su compañía para realizar adeudos directos SEPA. Su banco suele poseer esta información. Este identificador se compone de:\n- el código ISO de 2 letras de su país\n- dos dígitos de comprobación\n- tres letras de código de negocio\n- un identificador específico de país (en España, el NIF)" #. module: account_banking_sepa_direct_debit #: selection:account.banking.mandate,scheme:0 @@ -120,20 +192,12 @@ msgid "Enterprise (B2B)" msgstr "Empresa (B2B)" #. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:79 +#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:42 +#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:32 #, python-format msgid "Error" msgstr "Error" -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:137 -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:185 -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:193 -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:202 -#, python-format -msgid "Error:" -msgstr "Error:" - #. module: account_banking_sepa_direct_debit #: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard msgid "Export SEPA Direct Debit File" @@ -145,7 +209,6 @@ msgid "File" msgstr "Archivo" #. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,filename:0 #: field:banking.export.sdd.wizard,filename:0 msgid "Filename" msgstr "Nombre de archivo" @@ -166,77 +229,89 @@ msgid "First" msgstr "Inicial" #. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,charge_bearer:0 #: selection:banking.export.sdd.wizard,charge_bearer:0 msgid "Following Service Level" msgstr "Según el acuerdo de servicio" #. module: account_banking_sepa_direct_debit -#: help:banking.export.sdd,charge_bearer:0 #: help:banking.export.sdd.wizard,charge_bearer:0 -msgid "Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the creditor side are to be borne by the creditor, transaction charges on the debtor side are to be borne by the debtor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor." +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:account_banking_sepa_direct_debit.view_banking_export_sdd_form -msgid "General Information" -msgstr "Información general" - #. module: account_banking_sepa_direct_debit #: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view msgid "Generate" msgstr "Generar" #. module: account_banking_sepa_direct_debit -#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.act_banking_export_sdd_payment_order -msgid "Generated SEPA Direct Debit Files" -msgstr "Archivos de adeudos directos SEPA generados" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,create_date:0 -msgid "Generation Date" -msgstr "Fecha de generación" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,id:0 #: field:banking.export.sdd.wizard,id:0 msgid "ID" msgstr "ID" +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Identifier:" +msgstr "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." +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,batch_booking:0 #: help:banking.export.sdd.wizard,batch_booking:0 -msgid "If true, the bank statement will display only one credit line for all the direct debits of the SEPA file ; if false, the bank statement will display one credit line per direct debit of the SEPA file." +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:80 +#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:43 +#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:33 #, python-format msgid "Invalid SEPA Creditor Identifier." msgstr "Identificador de acreedor SEPA no válido." #. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,write_uid:0 #: field:banking.export.sdd.wizard,write_uid:0 msgid "Last Updated by" msgstr "Última actualización por" #. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,write_date:0 #: field:banking.export.sdd.wizard,write_date:0 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:119 +#: 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:115 #, python-format msgid "Mandate update" -msgstr "" +msgstr "Actualizacion de mandato" #. module: account_banking_sepa_direct_debit #: field:account.banking.mandate,sepa_migrated:0 @@ -244,13 +319,14 @@ msgid "Migrated to SEPA" msgstr "Migrado a SEPA" #. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:186 +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:159 #, python-format -msgid "Missing SEPA Direct Debit mandate on the payment line with partner '%s' and Invoice ref '%s'." -msgstr "Falta el mandato de adeudo directo SEPA en la línea con la empresa '%s' y la factura con 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,nb_transactions:0 #: field:banking.export.sdd.wizard,nb_transactions:0 msgid "Number of Transactions" msgstr "Nº de transacciones" @@ -258,10 +334,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" @@ -277,21 +355,33 @@ msgid "Original Mandate Required (SEPA)" msgstr "Mandato original requerido (SEPA)" #. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd:account_banking_sepa_direct_debit.view_banking_export_sdd_form -#: field:banking.export.sdd,payment_order_ids:0 +#: 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" msgstr "Órdenes de pago" #. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:138 +#: 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 "" +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" @@ -300,11 +390,6 @@ msgstr "Recurrente" msgid "Recurring" msgstr "Periódico" -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd.wizard,file_id:0 -msgid "SDD File" -msgstr "Archivo SDD" - #. module: account_banking_sepa_direct_debit #: view:res.partner:account_banking_sepa_direct_debit.sdd_mandate_partner_form #: view:res.partner.bank:account_banking_sepa_direct_debit.sdd_mandate_partner_bank_tree @@ -312,22 +397,11 @@ 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" -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd:account_banking_sepa_direct_debit.view_banking_export_sdd_form -#: view:banking.export.sdd:account_banking_sepa_direct_debit.view_banking_export_sdd_tree -msgid "SEPA Direct Debit" -msgstr "Adeudo directo SEPA" - -#. module: account_banking_sepa_direct_debit -#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.action_account_banking_sdd -#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.menu_account_banking_sdd -msgid "SEPA Direct Debit Files" -msgstr "Archivos de adeudos directos SEPA" - #. module: account_banking_sepa_direct_debit #: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.mandate_action msgid "SEPA Direct Debit Mandates" @@ -339,24 +413,33 @@ msgid "SEPA Direct Debit XML file generation" msgstr "Generación del archivo XML de adeudo directo SEPA" #. module: account_banking_sepa_direct_debit -#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd -msgid "SEPA Direct Debit export" -msgstr "Exportación de adeudo directo SEPA" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,file:0 -msgid "SEPA File" -msgstr "Archivo SEPA" - -#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search #: field:account.banking.mandate,scheme:0 msgid "Scheme" msgstr "Esquema" #. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,state:0 -msgid "Sent" -msgstr "Enviado" +#: 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 +msgid "Sequence Type" +msgstr "Tipo de secuencia" #. module: account_banking_sepa_direct_debit #: field:account.banking.mandate,recurrent_sequence_type:0 @@ -382,53 +465,87 @@ msgid "Sequence Type set to Recurring" msgstr "Tipo de secuencia establecida a 'Recurrente'" #. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,charge_bearer:0 #: selection:banking.export.sdd.wizard,charge_bearer:0 msgid "Shared" msgstr "Compartidos" #. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,state:0 +#: 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 -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:194 +#: 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." +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:203 +#: 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." +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:86 +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:76 #, python-format msgid "The recurrent mandate '%s' must have a sequence type." msgstr "El mandato periódico '%s' debe tener un tipo de secuencia." #. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:95 +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:86 #, python-format -msgid "The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must have its recurrent sequence type set to 'First'." +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 -#: field:banking.export.sdd,total_amount:0 +#: 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" msgstr "Importe total" #. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search #: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree msgid "Type" msgstr "Tipo" @@ -438,6 +555,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" @@ -445,12 +567,22 @@ 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." +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:105 +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:98 #, python-format -msgid "You must set the 'Original Mandate Identification' on the recurrent mandate '%s' which is not marked as 'Migrated to SEPA'." +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 " diff --git a/account_banking_sepa_direct_debit/i18n/fr.po b/account_banking_sepa_direct_debit/i18n/fr.po index 3744da850..df7158fa4 100644 --- a/account_banking_sepa_direct_debit/i18n/fr.po +++ b/account_banking_sepa_direct_debit/i18n/fr.po @@ -1,50 +1,220 @@ -# Translation of OpenERP Server. +# Translation of Odoo Server. # This file contains the translation of the following modules: -# * account_banking_sepa_direct_debit -# +# * account_banking_sepa_direct_debit +# +# Translators: msgid "" msgstr "" -"Project-Id-Version: OpenERP Server 7.0\n" +"Project-Id-Version: bank-payment (8.0)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-12-23 22:24+0000\n" -"PO-Revision-Date: 2014-02-01 04:49+0000\n" -"Last-Translator: Alexis de Lattre \n" -"Language-Team: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-07 16:04+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: French (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n" -"X-Generator: Launchpad (build 17031)\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: account_banking_sepa_direct_debit -#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_valid -msgid "SEPA Direct Debit Mandate Validated" -msgstr "Mandat de prélèvement SEPA validé" +#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.mandate_action +msgid "" +"

\n" +" Click to create a new SEPA Direct Debit Mandate.\n" +"

\n" +" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n" +"

\n" +" " +msgstr "

\n Cliquez pour créer un mandat de prélèvement SEPA.\n

\n Un mandat de prélèvement SEPA est un document signé par votre client qui vous donne l'autorisation de réaliser un ou plusieurs prélèvements sur son compte bancaire.\n

\n " + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_banking_mandate +msgid "A generic banking mandate" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO " +"CREDITOR FOR STORAGE." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.\n" +" NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n" +" THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Account Number - IBAN:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Address of the Debtor:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Address:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"As part of your rights, you are entitled to a refund from\n" +" your bank under the terms and conditions of your agreement\n" +" with your bank.\n" +" A refund must be claimed within 8 weeks starting from the date on which your account was debited." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:116 +#, python-format +msgid "" +"As you changed the bank account attached to this mandate, the 'Sequence " +"Type' has been set back to 'First'." +msgstr "Etant donné que vous avez changé le compte bancaire associé à ce mandat, le 'Type de séquence' a été remis à 'First'." + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,scheme:0 +msgid "Basic (CORE)" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,batch_booking:0 +msgid "Batch Booking" +msgstr "Crédit groupé" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Borne by Creditor" +msgstr "Supportés par le créancier" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Borne by Debtor" +msgstr "Supportés par le débiteur" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "By signing this mandate form, you authorise (A)" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Cancel" +msgstr "Annuler" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,charge_bearer:0 +msgid "Charge Bearer" +msgstr "Répartition des frais" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company +msgid "Companies" +msgstr "Sociétés" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Country of the debtor:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Country:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,state:0 +msgid "Create" +msgstr "Créer" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,create_uid:0 +msgid "Created by" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,create_date:0 +msgid "Created on" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Creditor's Name:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Date - Location:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Debtor's Name:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:payment.mode,sepa_creditor_identifier:0 +msgid "" +"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from company will be used.\n" +"This identifier is composed of :\n" +"- your country ISO code (2 letters)\n" +"- a 2-digits checkum\n" +"- a 3-letters business code\n" +"- a country-specific identifier" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:res.company,sepa_creditor_identifier:0 +msgid "" +"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n" +"- your country ISO code (2 letters)\n" +"- a 2-digits checkum\n" +"- a 3-letters business code\n" +"- a country-specific identifier" +msgstr "Entrez l'Identifiant créancier qui a été attribué à votre société pour réaliser des prélèvements SEPA. Cet identifiant est composé de :\n- du code ISO de votre pays (2 lettres)\n- un code de contrôle à 2 chiffres\n- un code d'activité à 3 lettres\n- un identifiant national" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,scheme:0 +msgid "Enterprise (B2B)" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:42 +#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:32 +#, python-format +msgid "Error" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard +msgid "Export SEPA Direct Debit File" +msgstr "Export du fichier de prélèvement SEPA" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,file:0 +msgid "File" +msgstr "Fichier" #. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,filename:0 #: field:banking.export.sdd.wizard,filename:0 msgid "Filename" msgstr "Nom du fichier" #. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:200 -#, python-format -msgid "" -"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has " -"expired." -msgstr "" -"Le mandat de prélèvement SEPA portant la référence '%s' pour le partenaire " -"'%s' a expiré." - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:219 -#, python-format -msgid "Cannot validate the mandate '%s' without a date of signature." -msgstr "Impossible de valider le mandat '%s' sans date de signature." - -#. module: account_banking_sepa_direct_debit -#: selection:sdd.mandate,recurrent_sequence_type:0 +#: selection:account.banking.mandate,recurrent_sequence_type:0 msgid "Final" msgstr "Final" @@ -54,359 +224,50 @@ msgid "Finish" msgstr "Finir" #. module: account_banking_sepa_direct_debit -#: view:res.partner:0 -#: view:res.partner.bank:0 -msgid "SDD Mandates" -msgstr "Mandats SEPA" - -#. module: account_banking_sepa_direct_debit -#: constraint:payment.line:0 -#: constraint:sdd.mandate:0 -msgid "Error msg in raise" -msgstr "Error msg in raise" - -#. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,state:0 -msgid "Reconciled" -msgstr "Réconcilié" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,recurrent_sequence_type:0 -msgid "Sequence Type for Next Debit" -msgstr "Type de séquence pour le prochain prélèvement" - -#. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,charge_bearer:0 -#: selection:banking.export.sdd.wizard,charge_bearer:0 -msgid "Borne by Creditor" -msgstr "Supportés par le créancier" - -#. module: account_banking_sepa_direct_debit -#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.sdd_mandate_action -#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.sdd_mandate_menu -#: view:res.partner.bank:0 -#: field:res.partner.bank,sdd_mandate_ids:0 -msgid "SEPA Direct Debit Mandates" -msgstr "Mandats de prélèvement SEPA" - -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd.wizard:0 -#: view:sdd.mandate:0 -msgid "Validate" -msgstr "Valider" - -#. module: account_banking_sepa_direct_debit -#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring -#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring -msgid "Sequence Type set to Recurring" -msgstr "Type de séquence mis à Recurring" - -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd.wizard:0 -msgid "Generate" -msgstr "Générer" - -#. module: account_banking_sepa_direct_debit -#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_cancel -msgid "SEPA Direct Debit Mandate Cancelled" -msgstr "Mandat de prélèvement SEPA annulé" - -#. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,charge_bearer:0 -#: selection:banking.export.sdd.wizard,charge_bearer:0 -msgid "Borne by Debtor" -msgstr "Supportés par le débiteur" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:212 -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:218 -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:224 -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:232 -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:239 -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:245 -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:253 -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:395 -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:140 -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:192 -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:199 -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:209 -#, python-format -msgid "Error:" -msgstr "Erreur :" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,message_ids:0 -msgid "Messages" -msgstr "Messages" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,unique_mandate_reference:0 -msgid "Unique Mandate Reference" -msgstr "Référence unique de mandat" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -#: selection:sdd.mandate,state:0 -msgid "Cancelled" -msgstr "Annulé" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:141 -#, python-format -msgid "" -"Payment Type Code '%s' is not supported. The only Payment Type Code " -"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and " -"'pain.008.001.04'." -msgstr "" -"Le code du Type de paiement '%s' n'est pas supporté. Les seuls codes de Type " -"de paiement supportés pour les prélèvements SEPA sont 'pain.008.001.02', " -"'pain.008.001.03' et 'pain.008.001.04'." - -#. module: account_banking_sepa_direct_debit -#: help:sdd.mandate,message_unread:0 -msgid "If checked new messages require your attention." -msgstr "If checked new messages require your attention." - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd.wizard,file_id:0 -msgid "SDD File" -msgstr "Fichier de prélèvement SEPA" - -#. module: account_banking_sepa_direct_debit -#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_expired -msgid "SEPA Direct Debit Mandate has Expired" -msgstr "Le mandat de prélèvement SEPA a expiré" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:246 -#, python-format -msgid "" -"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must " -"have its recurrent sequence type set to 'First'." -msgstr "" -"Le mandat récurrent '%s' dont l'option 'Migré à SEPA' n'est pas activée doit " -"avec sa séquence mise à 'First'." - -#. module: account_banking_sepa_direct_debit -#: help:banking.export.sdd,charge_bearer:0 -#: help:banking.export.sdd.wizard,charge_bearer:0 -msgid "" -"Following service level : transaction charges are to be applied following " -"the rules agreed in the service level and/or scheme (SEPA Core messages must " -"use this). Shared : transaction charges on the creditor side are to be borne " -"by the creditor, transaction charges on the debtor side are to be borne by " -"the debtor. Borne by creditor : all transaction charges are to be borne by " -"the creditor. Borne by debtor : all transaction charges are to be borne by " -"the debtor." -msgstr "" -"Suivant le niveau de service : la répartition des frais bancaires suit les " -"règles pré-établies dans le schema ou dans le contrat avec la banque (les " -"messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais " -"bancaires côté débiteur sont à la charge du débiteur, les frais bancaires " -"côté créancier sont à la charge du créancier. Supportés par le créancier : " -"tous les frais bancaires sont à la charge du créancier. Supportés par le " -"débiteur : tous les frais bancaires sont à la charge du débiteur." - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -msgid "Reference" -msgstr "Référence" - -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd:0 -msgid "SEPA Direct Debit" -msgstr "Prélèvement SEPA" - -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd.wizard:0 -msgid "SEPA Direct Debit XML file generation" -msgstr "Génération de fichiers de prélèvement SEPA XML" - -#. module: account_banking_sepa_direct_debit -#: help:sdd.mandate,message_summary:0 -msgid "" -"Holds the Chatter summary (number of messages, ...). This summary is " -"directly in html format in order to be inserted in kanban views." -msgstr "" -"Holds the Chatter summary (number of messages, ...). This summary is " -"directly in html format in order to be inserted in kanban views." - -#. module: account_banking_sepa_direct_debit -#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_line -msgid "Payment Line" -msgstr "Ligne de paiement" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,create_date:0 -msgid "Generation Date" -msgstr "Date de génération" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:396 -#, python-format -msgid "" -"The payment line with reference '%s' has the bank account '%s' which is not " -"attached to the mandate '%s' (this mandate is attached to the bank account " -"'%s')." -msgstr "" -"La ligne de paiement portant la référence '%s' est configurée avec le compte " -"bancaire '%s' qui n'est pas rattaché au mandat '%s' (ce mandat est rattaché " -"au compte bancaire '%s')." - -#. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd.wizard,state:0 -msgid "Create" -msgstr "Créer" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,nb_transactions:0 -#: field:banking.export.sdd.wizard,nb_transactions:0 -msgid "Number of Transactions" -msgstr "Nombre de transactions" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -#: selection:sdd.mandate,type:0 -msgid "One-Off" -msgstr "One-Off" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,state:0 -#: field:banking.export.sdd.wizard,state:0 -msgid "State" -msgstr "État" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:240 -#, python-format -msgid "The recurrent mandate '%s' must have a sequence type." -msgstr "Le mandat récurrent '%s' doit avoir un type de séquence." - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,message_follower_ids:0 -msgid "Followers" -msgstr "Followers" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,message_unread:0 -msgid "Unread Messages" -msgstr "Unread Messages" - -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd:0 -#: field:banking.export.sdd,payment_order_ids:0 -#: field:banking.export.sdd.wizard,payment_order_ids:0 -msgid "Payment Orders" -msgstr "Ordres de paiement" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -msgid "Type" -msgstr "Type" - -#. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,state:0 -msgid "Sent" -msgstr "Envoyé" - -#. module: account_banking_sepa_direct_debit -#: field:res.company,original_creditor_identifier:0 -msgid "Original Creditor Identifier" -msgstr "Ancien Identifiant Créancier" - -#. module: account_banking_sepa_direct_debit -#: selection:sdd.mandate,recurrent_sequence_type:0 -msgid "Recurring" -msgstr "Recurring" - -#. module: account_banking_sepa_direct_debit -#: help:res.company,sepa_creditor_identifier:0 -msgid "" -"Enter the Creditor Identifier that has been attributed to your company to " -"make SEPA Direct Debits. This identifier is composed of :\n" -"- your country ISO code (2 letters)\n" -"- a 2-digits checkum\n" -"- a 3-letters business code\n" -"- a country-specific identifier" -msgstr "" -"Entrez l'Identifiant créancier qui a été attribué à votre société pour " -"réaliser des prélèvements SEPA. Cet identifiant est composé de :\n" -"- du code ISO de votre pays (2 lettres)\n" -"- un code de contrôle à 2 chiffres\n" -"- un code d'activité à 3 lettres\n" -"- un identifiant national" - -#. module: account_banking_sepa_direct_debit -#: sql_constraint:sdd.mandate:0 -msgid "A Mandate with the same reference already exists for this company !" -msgstr "Un mandat avec la même référence existe déjà pour cette société !" - -#. module: account_banking_sepa_direct_debit -#: help:sdd.mandate,state:0 -msgid "" -"Only valid mandates can be used in a payment line. A cancelled mandate is a " -"mandate that has been cancelled by the customer. A one-off mandate expires " -"after its first use. A recurrent mandate expires after it's final use or if " -"it hasn't been used for 36 months." -msgstr "" -"Seuls des mandats valides peuvent être utilisés dans une ligne de paiement. " -"Un mandate annulé est un mandat qui a été annulé par le client. Un mandat " -"One-Off expire à l'issue de sa première utilisation. Un mandate récurrent " -"expire après sa dernière utilisation ou si il n'a pas été utilisé pendant 36 " -"mois." - -#. module: account_banking_sepa_direct_debit -#: help:sdd.mandate,recurrent_sequence_type:0 -msgid "" -"This field is only used for Recurrent mandates, not for One-Off mandates." -msgstr "" -"Ce champ n'est utilisé que pour les mandats récurrents, pas pour les mandats " -"One-Off." - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:213 -#, python-format -msgid "The date of signature of mandate '%s' is in the future !" -msgstr "La date de signature du mandat '%s' est dans le futur !" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -msgid "Signature Date" -msgstr "Date de signature" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,charge_bearer:0 -#: field:banking.export.sdd.wizard,charge_bearer:0 -msgid "Charge Bearer" -msgstr "Répartition des frais" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,partner_id:0 -msgid "Partner" -msgstr "Partenaire" - -#. module: account_banking_sepa_direct_debit -#: selection:sdd.mandate,recurrent_sequence_type:0 +#: selection:account.banking.mandate,recurrent_sequence_type:0 msgid "First" msgstr "First" #. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,signature_date:0 -msgid "Date of Signature of the Mandate" -msgstr "Date de signature du mandat" +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Following Service Level" +msgstr "Suivant le niveau de service" #. module: account_banking_sepa_direct_debit -#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_cancel -msgid "Mandate Cancelled" -msgstr "Mandat annulé" +#: help:banking.export.sdd.wizard,charge_bearer:0 +msgid "" +"Following service level : transaction charges are to be applied following " +"the rules agreed in the service level and/or scheme (SEPA Core messages must" +" use this). Shared : transaction charges on the creditor side are to be " +"borne by the creditor, transaction charges on the debtor side are to be " +"borne by the debtor. Borne by creditor : all transaction charges are to be " +"borne by the creditor. Borne by debtor : all transaction charges are to be " +"borne by the debtor." +msgstr "Suivant le niveau de service : la répartition des frais bancaires suit les règles pré-établies dans le schema ou dans le contrat avec la banque (les messages SEPA Core doivent utiliser ce paramètre). Partagés : les frais bancaires côté débiteur sont à la charge du débiteur, les frais bancaires côté créancier sont à la charge du créancier. Supportés par le créancier : tous les frais bancaires sont à la charge du créancier. Supportés par le débiteur : tous les frais bancaires sont à la charge du débiteur." #. module: account_banking_sepa_direct_debit -#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.act_banking_export_sdd_payment_order -msgid "Generated SEPA Direct Debit Files" -msgstr "Fichiers de prélèvement SEPA générés" +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Generate" +msgstr "Générer" #. module: account_banking_sepa_direct_debit -#: help:sdd.mandate,sepa_migrated:0 +#: field:banking.export.sdd.wizard,id:0 +msgid "ID" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Identifier:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:payment.mode,original_creditor_identifier:0 +msgid "" +"If not defined, Original Creditor Identifier from company will be used." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:account.banking.mandate,sepa_migrated:0 msgid "" "If this field is not active, the mandate section of the next direct debit " "file that include this mandate will contain the 'Original Mandate " @@ -414,109 +275,171 @@ msgid "" "required in a few countries (Belgium for instance), but not in all " "countries. If this is not required in your country, you should keep this " "field always active." -msgstr "" -"Si cette option n'est pas activée, la section qui concerne le mandat dans le " -"prochain fichier de prélèvement qui incluera ce mandat contiendra les champs " -"'Original Mandate Identification' et 'Original Creditor Scheme " -"Identification'. Ces champs sont requis dans certains pays (en Belgique " -"notamment), mais pas dans tous les pays. Si ces champs ne sont pas requis " -"dans votre pays, vous devriez garder ce champ toujours actif." +msgstr "Si cette option n'est pas activée, la section qui concerne le mandat dans le prochain fichier de prélèvement qui incluera ce mandat contiendra les champs 'Original Mandate Identification' et 'Original Creditor Scheme Identification'. Ces champs sont requis dans certains pays (en Belgique notamment), mais pas dans tous les pays. Si ces champs ne sont pas requis dans votre pays, vous devriez garder ce champ toujours actif." #. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,company_id:0 -msgid "Company" -msgstr "Société" - -#. module: account_banking_sepa_direct_debit -#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard -msgid "Export SEPA Direct Debit File" -msgstr "Export du fichier de prélèvement SEPA" - -#. module: account_banking_sepa_direct_debit -#: help:banking.export.sdd,batch_booking:0 #: help:banking.export.sdd.wizard,batch_booking:0 msgid "" "If true, the bank statement will display only one credit line for all the " "direct debits of the SEPA file ; if false, the bank statement will display " "one credit line per direct debit of the SEPA file." -msgstr "" -"Si activé, le relevé de compte ne fera apparaître qu'une ligne de crédit " -"pour tous les prélèvements du fichier SEPA ; si désactivé, le relevé de " -"banque fera apparaître une ligne de crédit pour chaque prélèvement du " -"fichier SEPA." +msgstr "Si activé, le relevé de compte ne fera apparaître qu'une ligne de crédit pour tous les prélèvements du fichier SEPA ; si désactivé, le relevé de banque fera apparaître une ligne de crédit pour chaque prélèvement du fichier SEPA." #. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:225 +#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:43 +#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:33 #, python-format -msgid "" -"Cannot validate the mandate '%s' because it is not attached to a bank " -"account." +msgid "Invalid SEPA Creditor Identifier." +msgstr "Identifiant créancier SEPA invalide." + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,write_uid:0 +msgid "Last Updated by" msgstr "" -"Impossible de valider le mandat '%s' car il n'est pas rattaché à un compte " -"bancaire." #. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,state:0 -#: view:sdd.mandate:0 -#: selection:sdd.mandate,state:0 -msgid "Draft" -msgstr "Brouillon" +#: field:banking.export.sdd.wizard,write_date:0 +msgid "Last Updated on" +msgstr "" #. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:290 +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Mandate Reference:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:115 #, python-format msgid "Mandate update" msgstr "Mise-à-jour du mandat" #. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,charge_bearer:0 -#: selection:banking.export.sdd.wizard,charge_bearer:0 -msgid "Shared" -msgstr "Partagée" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,batch_booking:0 -#: field:banking.export.sdd.wizard,batch_booking:0 -msgid "Batch Booking" -msgstr "Crédit groupé" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,sepa_migrated:0 +#: field:account.banking.mandate,sepa_migrated:0 msgid "Migrated to SEPA" msgstr "Migré à SEPA" #. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,state:0 -msgid "Status" -msgstr "Statut" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,total_amount:0 -#: field:banking.export.sdd.wizard,total_amount:0 -msgid "Total Amount" -msgstr "Montant total" - -#. module: account_banking_sepa_direct_debit -#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.action_account_banking_sdd -#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.menu_account_banking_sdd -msgid "SEPA Direct Debit Files" -msgstr "Fichiers de prélèvement SEPA" - -#. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,charge_bearer:0 -#: selection:banking.export.sdd.wizard,charge_bearer:0 -msgid "Following Service Level" -msgstr "Suivant le niveau de service" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:233 +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:159 #, python-format msgid "" -"The mandate '%s' can't have a date of last debit before the date of " -"signature." +"Missing SEPA Direct Debit mandate on the bank payment line with partner '%s'" +" (reference '%s')." msgstr "" -"Le mandat '%s' ne peut pas avoir une date de dernier débit antérieure à la " -"date de signature." + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,nb_transactions:0 +msgid "Number of Transactions" +msgstr "Nombre de transactions" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: selection:account.banking.mandate,type:0 +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "One-Off" +msgstr "One-Off" + +#. module: account_banking_sepa_direct_debit +#: field:payment.mode,original_creditor_identifier:0 +#: field:res.company,original_creditor_identifier:0 +msgid "Original Creditor Identifier" +msgstr "Ancien Identifiant Créancier" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,original_mandate_identification:0 +msgid "Original Mandate Identification" +msgstr "Ancien Identifiant du Mandat" + +#. module: account_banking_sepa_direct_debit +#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required +msgid "Original Mandate Required (SEPA)" +msgstr "Ancien mandat requis (SEPA)" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_mode +msgid "Payment Mode" +msgstr "Mode de paiement" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,payment_order_ids:0 +msgid "Payment Orders" +msgstr "Ordres de paiement" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:117 +#, python-format +msgid "" +"Payment Type Code '%s' is not supported. The only Payment Type Code " +"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and" +" 'pain.008.001.04'." +msgstr "Le code du Type de paiement '%s' n'est pas supporté. Les seuls codes de Type de paiement supportés pour les prélèvements SEPA sont 'pain.008.001.02', 'pain.008.001.03' et 'pain.008.001.04'." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Postal Code - City - Town:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: selection:account.banking.mandate,type:0 +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Recurrent" +msgstr "Récurrent" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,recurrent_sequence_type:0 +msgid "Recurring" +msgstr "Recurring" + +#. module: account_banking_sepa_direct_debit +#: view:res.partner:account_banking_sepa_direct_debit.sdd_mandate_partner_form +#: view:res.partner.bank:account_banking_sepa_direct_debit.sdd_mandate_partner_bank_tree +msgid "SDD Mandates" +msgstr "Mandats SEPA" + +#. module: account_banking_sepa_direct_debit +#: field:payment.mode,sepa_creditor_identifier:0 +#: field:res.company,sepa_creditor_identifier:0 +msgid "SEPA Creditor Identifier" +msgstr "Identifiant créancier SEPA" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "SEPA Direct Debit XML file generation" +msgstr "Génération de fichiers de prélèvement SEPA XML" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: field:account.banking.mandate,scheme:0 +msgid "Scheme" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Sepa Business-To-Business Direct debit Mandate" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Sepa Direct Debit Mandate" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:35 +#: model:ir.actions.report.xml,name:account_banking_sepa_direct_debit.report_sepa_direct_debit_mandate +#, python-format +msgid "Sepa Mandate" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree +msgid "Sequence Type" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,recurrent_sequence_type:0 +msgid "Sequence Type for Next Debit" +msgstr "Type de séquence pour le prochain prélèvement" #. module: account_banking_sepa_direct_debit #: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_final @@ -524,199 +447,6 @@ msgstr "" msgid "Sequence Type set to Final" msgstr "Type de Séquence mis à Final" -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,message_is_follower:0 -msgid "Is a Follower" -msgstr "Is a Follower" - -#. module: account_banking_sepa_direct_debit -#: help:sdd.mandate,original_mandate_identification:0 -msgid "" -"When the field 'Migrated to SEPA' is not active, this field will be used as " -"the Original Mandate Identification in the Direct Debit file." -msgstr "" -"Quand le champ 'Migré à SEPA' n'est pas activé, ce champ sera le 'Original " -"Mandate Identification' dans le fichier de prélèvement." - -#. module: account_banking_sepa_direct_debit -#: view:payment.order:0 -msgid "SDD Mandate" -msgstr "Mandat de prélèvement" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,original_mandate_identification:0 -msgid "Original Mandate Identification" -msgstr "Ancien Identifiant du Mandat" - -#. module: account_banking_sepa_direct_debit -#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company -msgid "Companies" -msgstr "Sociétés" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,message_summary:0 -msgid "Summary" -msgstr "Résumé" - -#. module: account_banking_sepa_direct_debit -#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required -msgid "Original Mandate Required (SEPA)" -msgstr "Ancien mandat requis (SEPA)" - -#. module: account_banking_sepa_direct_debit -#: field:account.invoice,sdd_mandate_id:0 -#: model:ir.model,name:account_banking_sepa_direct_debit.model_sdd_mandate -#: field:payment.line,sdd_mandate_id:0 -#: view:sdd.mandate:0 -msgid "SEPA Direct Debit Mandate" -msgstr "Mandat de prélèvement SEPA" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:193 -#, python-format -msgid "" -"Missing SEPA Direct Debit mandate on the payment line with partner '%s' and " -"Invoice ref '%s'." -msgstr "" -"Mandat de prélèvement SEPA manquant sur la ligne de paiement ayant pour " -"partenaire '%s' et pour référence de facture '%s'." - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:210 -#, python-format -msgid "" -"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' " -"and it has a last debit date set to '%s', so we can't use it." -msgstr "" -"Le mandat portant la référence '%s' pour le partenaire '%s' est de type 'One-" -"Off' et il a une date de dernier débit au '%s', donc il n'est pas utilisable." - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,scan:0 -msgid "Scan of the Mandate" -msgstr "Scan du mandat" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,last_debit_date:0 -msgid "Date of the Last Debit" -msgstr "Date du dernier prélèvement" - -#. module: account_banking_sepa_direct_debit -#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_expired -msgid "Mandate Expired" -msgstr "Mandat expiré" - -#. module: account_banking_sepa_direct_debit -#: constraint:res.company:0 -msgid "Invalid SEPA Creditor Identifier." -msgstr "Identifiant créancier SEPA invalide." - -#. module: account_banking_sepa_direct_debit -#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_partner_bank -msgid "Bank Accounts" -msgstr "Comptes bancaires" - -#. module: account_banking_sepa_direct_debit -#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.sdd_mandate_action -msgid "" -"

\n" -" Click to create a new SEPA Direct Debit Mandate.\n" -"

\n" -" A SEPA Direct Debit Mandate is a document signed by your customer " -"that gives you the autorization to do one or several direct debits on his " -"bank account.\n" -"

\n" -" " -msgstr "" -"

\n" -" Cliquez pour créer un mandat de prélèvement SEPA.\n" -"

\n" -" Un mandat de prélèvement SEPA est un document signé par votre client " -"qui vous donne l'autorisation de réaliser un ou plusieurs prélèvements sur " -"son compte bancaire.\n" -"

\n" -" " - -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd:0 -msgid "General Information" -msgstr "Informations générales" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -#: selection:sdd.mandate,state:0 -msgid "Valid" -msgstr "Valide" - -#. module: account_banking_sepa_direct_debit -#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_invoice -msgid "Invoice" -msgstr "Facture" - -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd.wizard:0 -#: view:sdd.mandate:0 -msgid "Cancel" -msgstr "Annuler" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -#: field:sdd.mandate,payment_line_ids:0 -msgid "Related Payment Lines" -msgstr "Lignes de paiement associées" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -#: selection:sdd.mandate,type:0 -msgid "Recurrent" -msgstr "Récurrent" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,type:0 -msgid "Type of Mandate" -msgstr "Type de mandat" - -#. module: account_banking_sepa_direct_debit -#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_valid -msgid "Mandate Validated" -msgstr "Mandat validé" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,file:0 -msgid "SEPA File" -msgstr "Fichier SEPA" - -#. module: account_banking_sepa_direct_debit -#: field:res.company,sepa_creditor_identifier:0 -msgid "SEPA Creditor Identifier" -msgstr "Identifiant créancier SEPA" - -#. module: account_banking_sepa_direct_debit -#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd -msgid "SEPA Direct Debit export" -msgstr "Export de prélèvement SEPA" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -#: selection:sdd.mandate,state:0 -msgid "Expired" -msgstr "Expiré" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,partner_bank_id:0 -msgid "Bank Account" -msgstr "Compte bancaire" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:254 -#, python-format -msgid "" -"You must set the 'Original Mandate Identification' on the recurrent mandate " -"'%s' which is not marked as 'Migrated to SEPA'." -msgstr "" -"Vous devez renseigner le champ 'Ancien identifiant du mandat' sur le mandat " -"récurrent '%s' qui n'est pas marqué comme étant 'Migré à SEPA'." - #. module: account_banking_sepa_direct_debit #: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_first #: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_first @@ -724,26 +454,130 @@ msgid "Sequence Type set to First" msgstr "Type de Séquence mis à First" #. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:291 +#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring +#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring +msgid "Sequence Type set to Recurring" +msgstr "Type de séquence mis à Recurring" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Shared" +msgstr "Partagée" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Signature of the debtor:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,state:0 +msgid "State" +msgstr "État" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Swift BIC (up to 8 or 11 characteres):" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:166 #, python-format msgid "" -"As you changed the bank account attached to this mandate, the 'Sequence " -"Type' has been set back to 'First'." +"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has " +"expired." +msgstr "Le mandat de prélèvement SEPA portant la référence '%s' pour le partenaire '%s' a expiré." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:174 +#, python-format +msgid "" +"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' " +"and it has a last debit date set to '%s', so we can't use it." +msgstr "Le mandat portant la référence '%s' pour le partenaire '%s' est de type 'One-Off' et il a une date de dernier débit au '%s', donc il n'est pas utilisable." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:76 +#, python-format +msgid "The recurrent mandate '%s' must have a sequence type." +msgstr "Le mandat récurrent '%s' doit avoir un type de séquence." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:86 +#, python-format +msgid "" +"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must " +"have its recurrent sequence type set to 'First'." +msgstr "Le mandat récurrent '%s' dont l'option 'Migré à SEPA' n'est pas activée doit avec sa séquence mise à 'First'." + +#. module: account_banking_sepa_direct_debit +#: help:account.banking.mandate,recurrent_sequence_type:0 +msgid "" +"This field is only used for Recurrent mandates, not for One-Off mandates." +msgstr "Ce champ n'est utilisé que pour les mandats récurrents, pas pour les mandats One-Off." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"This mandate is only intended for business-to-business transactions.\n" +" You are not entitled to a refund from your bank after your account has\n" +" been debited, but you are entitled to request your bank\n" +" not to debit your account up until the day on which the payment is due." msgstr "" -"Etant donné que vous avez changé le compte bancaire associé à ce mandat, le " -"'Type de séquence' a été remis à 'First'." #. module: account_banking_sepa_direct_debit -#: help:sdd.mandate,message_ids:0 -msgid "Messages and communication history" -msgstr "Messages and communication history" +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "To be completed by the creditor" +msgstr "" #. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -msgid "Search SEPA Direct Debit Mandates" -msgstr "Recherche dans les mandats de prélèvement SEPA" +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "To be completed by the debtor" +msgstr "" #. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd.wizard,file:0 -msgid "File" -msgstr "Fichier" +#: field:banking.export.sdd.wizard,total_amount:0 +msgid "Total Amount" +msgstr "Montant total" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree +msgid "Type" +msgstr "Type" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,type:0 +msgid "Type of Mandate" +msgstr "Type de mandat" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Type of payment:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Validate" +msgstr "Valider" + +#. module: account_banking_sepa_direct_debit +#: help:account.banking.mandate,original_mandate_identification:0 +msgid "" +"When the field 'Migrated to SEPA' is not active, this field will be used as " +"the Original Mandate Identification in the Direct Debit file." +msgstr "Quand le champ 'Migré à SEPA' n'est pas activé, ce champ sera le 'Original Mandate Identification' dans le fichier de prélèvement." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:98 +#, python-format +msgid "" +"You must set the 'Original Mandate Identification' on the recurrent mandate " +"'%s' which is not marked as 'Migrated to SEPA'." +msgstr "Vous devez renseigner le champ 'Ancien identifiant du mandat' sur le mandat récurrent '%s' qui n'est pas marqué comme étant 'Migré à SEPA'." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"to send instructions to your bank to debit your account and (B) your bank to\n" +" debit your account in accordance with the instructions from" +msgstr "" diff --git a/account_banking_sepa_direct_debit/i18n/nl.po b/account_banking_sepa_direct_debit/i18n/nl.po index 2c2ccc12f..8fb3b71df 100644 --- a/account_banking_sepa_direct_debit/i18n/nl.po +++ b/account_banking_sepa_direct_debit/i18n/nl.po @@ -1,52 +1,221 @@ -# Dutch translation for banking-addons -# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 -# This file is distributed under the same license as the banking-addons package. -# FIRST AUTHOR , 2014. -# +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_sepa_direct_debit +# +# Translators: +# FIRST AUTHOR , 2014 msgid "" msgstr "" -"Project-Id-Version: banking-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-12-23 22:24+0000\n" -"PO-Revision-Date: 2014-04-24 10:38+0000\n" -"Last-Translator: Erwin van der Ploeg (BAS Solutions) \n" -"Language-Team: Dutch \n" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-07 16:04+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Dutch (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n" -"X-Generator: Launchpad (build 17031)\n" +"Content-Transfer-Encoding: \n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: account_banking_sepa_direct_debit -#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_valid -msgid "SEPA Direct Debit Mandate Validated" -msgstr "SEPA incasso machtiging bevestigd." +#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.mandate_action +msgid "" +"

\n" +" Click to create a new SEPA Direct Debit Mandate.\n" +"

\n" +" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n" +"

\n" +" " +msgstr "

\n Klik voor het maken van een nieuwe SEPA incasso machtiging.\n

\n Een SEPA incasso machtiging is een document ondertekend door uw klant, welke u toestemming geeft om incasso's uit te voeren op zijn bankrekening.\n

\n " + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_banking_mandate +msgid "A generic banking mandate" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO " +"CREDITOR FOR STORAGE." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.\n" +" NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n" +" THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Account Number - IBAN:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Address of the Debtor:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Address:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"As part of your rights, you are entitled to a refund from\n" +" your bank under the terms and conditions of your agreement\n" +" with your bank.\n" +" A refund must be claimed within 8 weeks starting from the date on which your account was debited." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:116 +#, python-format +msgid "" +"As you changed the bank account attached to this mandate, the 'Sequence " +"Type' has been set back to 'First'." +msgstr "Omdat u de gekoppelde bankrekening heeft gewijzigd is de reeks terug gezet naar 'Eerste'." + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,scheme:0 +msgid "Basic (CORE)" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,batch_booking:0 +msgid "Batch Booking" +msgstr "Bach verwerking" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Borne by Creditor" +msgstr "Op rekening van schuldeiser" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Borne by Debtor" +msgstr "Rekening van schuldenaar" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "By signing this mandate form, you authorise (A)" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Cancel" +msgstr "Annuleer" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,charge_bearer:0 +msgid "Charge Bearer" +msgstr "Kostenverdeling" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company +msgid "Companies" +msgstr "Bedrijven" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Country of the debtor:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Country:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,state:0 +msgid "Create" +msgstr "Aanmaken" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,create_uid:0 +msgid "Created by" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,create_date:0 +msgid "Created on" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Creditor's Name:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Date - Location:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Debtor's Name:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:payment.mode,sepa_creditor_identifier:0 +msgid "" +"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from company will be used.\n" +"This identifier is composed of :\n" +"- your country ISO code (2 letters)\n" +"- a 2-digits checkum\n" +"- a 3-letters business code\n" +"- a country-specific identifier" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:res.company,sepa_creditor_identifier:0 +msgid "" +"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n" +"- your country ISO code (2 letters)\n" +"- a 2-digits checkum\n" +"- a 3-letters business code\n" +"- a country-specific identifier" +msgstr "Geef de Incassant-ID in, welke is toegewezen aan uw bedrijf om incasso's uit te voeren. De Incassant-ID is samengesteld uit:\n- uw ISO landcode (2 letters)\n- een 2 cijferig controlegetal\n- een 3 cijferig business code\n- een landspecifieke identifier" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,scheme:0 +msgid "Enterprise (B2B)" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:42 +#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:32 +#, python-format +msgid "Error" +msgstr "Fout" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard +msgid "Export SEPA Direct Debit File" +msgstr "Exporteer SEPA incasso bestand" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,file:0 +msgid "File" +msgstr "Bestand" #. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,filename:0 #: field:banking.export.sdd.wizard,filename:0 msgid "Filename" msgstr "Bestandsnaam" #. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:200 -#, python-format -msgid "" -"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has " -"expired." -msgstr "" -"De SEPA incasso machtiging met referentie '%s' voor relatie '%s' is verlopen." - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:219 -#, python-format -msgid "Cannot validate the mandate '%s' without a date of signature." -msgstr "" -"Het is niet mogelijk de machtiging '%s' te bevestigen zonder een datum van " -"ondertekenen." - -#. module: account_banking_sepa_direct_debit -#: selection:sdd.mandate,recurrent_sequence_type:0 +#: selection:account.banking.mandate,recurrent_sequence_type:0 msgid "Final" msgstr "Definitief" @@ -56,361 +225,50 @@ msgid "Finish" msgstr "Gereed" #. module: account_banking_sepa_direct_debit -#: view:res.partner:0 -#: view:res.partner.bank:0 -msgid "SDD Mandates" -msgstr "SDD machteging" - -#. module: account_banking_sepa_direct_debit -#: constraint:payment.line:0 -#: constraint:sdd.mandate:0 -msgid "Error msg in raise" -msgstr "Fout bericht" - -#. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,state:0 -msgid "Reconciled" -msgstr "Afgeletterd" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,recurrent_sequence_type:0 -msgid "Sequence Type for Next Debit" -msgstr "Reeks soort voor volgende incasso" - -#. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,charge_bearer:0 -#: selection:banking.export.sdd.wizard,charge_bearer:0 -msgid "Borne by Creditor" -msgstr "Op rekening van schuldeiser" - -#. module: account_banking_sepa_direct_debit -#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.sdd_mandate_action -#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.sdd_mandate_menu -#: view:res.partner.bank:0 -#: field:res.partner.bank,sdd_mandate_ids:0 -msgid "SEPA Direct Debit Mandates" -msgstr "SEPA incasso machtegingen" - -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd.wizard:0 -#: view:sdd.mandate:0 -msgid "Validate" -msgstr "Bevestigen" - -#. module: account_banking_sepa_direct_debit -#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring -#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring -msgid "Sequence Type set to Recurring" -msgstr "Reeks soort ingesteld op herhalend" - -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd.wizard:0 -msgid "Generate" -msgstr "Genereer" - -#. module: account_banking_sepa_direct_debit -#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_cancel -msgid "SEPA Direct Debit Mandate Cancelled" -msgstr "SEPA incasso machtegingen geannuleerd" - -#. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,charge_bearer:0 -#: selection:banking.export.sdd.wizard,charge_bearer:0 -msgid "Borne by Debtor" -msgstr "Rekening van schuldenaar" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:212 -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:218 -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:224 -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:232 -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:239 -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:245 -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:253 -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:395 -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:140 -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:192 -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:199 -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:209 -#, python-format -msgid "Error:" -msgstr "Fout:" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,message_ids:0 -msgid "Messages" -msgstr "Berichten" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,unique_mandate_reference:0 -msgid "Unique Mandate Reference" -msgstr "Unieke machtiging referentie" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -#: selection:sdd.mandate,state:0 -msgid "Cancelled" -msgstr "Geannuleerd" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:141 -#, python-format -msgid "" -"Payment Type Code '%s' is not supported. The only Payment Type Code " -"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and " -"'pain.008.001.04'." -msgstr "" -"Betaal soort code '%s' wordt niet ondersteund. De enige betaalsoort code " -"ondersteund voor SEPA incasso's zijn 'pain.008.001.02', 'pain.008.001.03' en " -"'pain.008.001.04'." - -#. module: account_banking_sepa_direct_debit -#: help:sdd.mandate,message_unread:0 -msgid "If checked new messages require your attention." -msgstr "Indien aangevinkt zullen nieuwe berichten uw aandacht vragen." - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd.wizard,file_id:0 -msgid "SDD File" -msgstr "SDD bestand" - -#. module: account_banking_sepa_direct_debit -#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.mandate_expired -msgid "SEPA Direct Debit Mandate has Expired" -msgstr "SEPA Direct incasso machtiging is verlopen" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:246 -#, python-format -msgid "" -"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must " -"have its recurrent sequence type set to 'First'." -msgstr "" -"Bij de herhalende machtiging '%s' welke niet is gemarkeerd als 'gemigreerd " -"naar SEPA' dient de reeks soort te worden ingesteld op 'Eerste'." - -#. module: account_banking_sepa_direct_debit -#: help:banking.export.sdd,charge_bearer:0 -#: help:banking.export.sdd.wizard,charge_bearer:0 -msgid "" -"Following service level : transaction charges are to be applied following " -"the rules agreed in the service level and/or scheme (SEPA Core messages must " -"use this). Shared : transaction charges on the creditor side are to be borne " -"by the creditor, transaction charges on the debtor side are to be borne by " -"the debtor. Borne by creditor : all transaction charges are to be borne by " -"the creditor. Borne by debtor : all transaction charges are to be borne by " -"the debtor." -msgstr "" -"Volg service level: Transactie kosten worden toegepast volgens de " -"afgesproken regels in het service level en/of schema (Voor SEPA berichten " -"deze gebruiken). Gedeeld : De transactiekosten aan de crediteur zijde zijn " -"voor de schuldenaar, transactiekosten aan de debiteur kant zijn voor de " -"schuldeiser. Op rekening van de schuldenaar: Alle transactie kosten zijn " -"voor rekening van de schuldenaar. Op rekening van de schuldeiser: Alle " -"transactie kosten zijn voor rekening van de schuldeiser." - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -msgid "Reference" -msgstr "Referentie" - -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd:0 -msgid "SEPA Direct Debit" -msgstr "SEPA Incasso (Direct Debit)" - -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd.wizard:0 -msgid "SEPA Direct Debit XML file generation" -msgstr "SEPA Incasso XML bestand aanmaken" - -#. module: account_banking_sepa_direct_debit -#: help:sdd.mandate,message_summary:0 -msgid "" -"Holds the Chatter summary (number of messages, ...). This summary is " -"directly in html format in order to be inserted in kanban views." -msgstr "" -"Bevat de samenvatting van de chatter (aantal berichten,...). Deze " -"samenvatting is direct in html formaat om zo in de kanban weergave te worden " -"ingevoegd." - -#. module: account_banking_sepa_direct_debit -#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_line -msgid "Payment Line" -msgstr "Betaalregel" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,create_date:0 -msgid "Generation Date" -msgstr "Aangemaakt op" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:396 -#, python-format -msgid "" -"The payment line with reference '%s' has the bank account '%s' which is not " -"attached to the mandate '%s' (this mandate is attached to the bank account " -"'%s')." -msgstr "" -"De betaalregel met referentie '%s' heeft het bankrekeningnummer '%s' welke " -"niet is gekoppeld aan de machtiging '%s' (deze machtiging is gekoppeld aan " -"bankrekening '%s')." - -#. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd.wizard,state:0 -msgid "Create" -msgstr "Aanmaken" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,nb_transactions:0 -#: field:banking.export.sdd.wizard,nb_transactions:0 -msgid "Number of Transactions" -msgstr "Aantal transacties" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -#: selection:sdd.mandate,type:0 -msgid "One-Off" -msgstr "Eenmalig" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,state:0 -#: field:banking.export.sdd.wizard,state:0 -msgid "State" -msgstr "Status" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:240 -#, python-format -msgid "The recurrent mandate '%s' must have a sequence type." -msgstr "De herhalende machtiging '%s' dient een reeks soort te hebben." - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,message_follower_ids:0 -msgid "Followers" -msgstr "Volgers" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,message_unread:0 -msgid "Unread Messages" -msgstr "Ongelezen berichten" - -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd:0 -#: field:banking.export.sdd,payment_order_ids:0 -#: field:banking.export.sdd.wizard,payment_order_ids:0 -msgid "Payment Orders" -msgstr "Betaalopdrachten" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -msgid "Type" -msgstr "Soort" - -#. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,state:0 -msgid "Sent" -msgstr "Verstuurd" - -#. module: account_banking_sepa_direct_debit -#: field:res.company,original_creditor_identifier:0 -msgid "Original Creditor Identifier" -msgstr "Originele Incassant-ID" - -#. module: account_banking_sepa_direct_debit -#: selection:sdd.mandate,recurrent_sequence_type:0 -msgid "Recurring" -msgstr "Terugkerend" - -#. module: account_banking_sepa_direct_debit -#: help:res.company,sepa_creditor_identifier:0 -msgid "" -"Enter the Creditor Identifier that has been attributed to your company to " -"make SEPA Direct Debits. This identifier is composed of :\n" -"- your country ISO code (2 letters)\n" -"- a 2-digits checkum\n" -"- a 3-letters business code\n" -"- a country-specific identifier" -msgstr "" -"Geef de Incassant-ID in, welke is toegewezen aan uw bedrijf om incasso's uit " -"te voeren. De Incassant-ID is samengesteld uit:\n" -"- uw ISO landcode (2 letters)\n" -"- een 2 cijferig controlegetal\n" -"- een 3 cijferig business code\n" -"- een landspecifieke identifier" - -#. module: account_banking_sepa_direct_debit -#: sql_constraint:sdd.mandate:0 -msgid "A Mandate with the same reference already exists for this company !" -msgstr "Een machtiging met dezelfde referentie bestaat al vooR dit bedrijf!" - -#. module: account_banking_sepa_direct_debit -#: help:sdd.mandate,state:0 -msgid "" -"Only valid mandates can be used in a payment line. A cancelled mandate is a " -"mandate that has been cancelled by the customer. A one-off mandate expires " -"after its first use. A recurrent mandate expires after it's final use or if " -"it hasn't been used for 36 months." -msgstr "" -"Alleen geldige machtigingen kunnen worden gebruikt op betaalregels. Een " -"geannuleerde machtiging is een machtiging welke is geannuleerd door de " -"klant. Een eenmalige machtiging verloopt na eenmalig gebruik. Een herhalende " -"machtiging verloopt na zijn laatste gebruik of als deze niet is gebruikt " -"voor 36 maanden." - -#. module: account_banking_sepa_direct_debit -#: help:sdd.mandate,recurrent_sequence_type:0 -msgid "" -"This field is only used for Recurrent mandates, not for One-Off mandates." -msgstr "" -"Dit veld wordt alleen gebruikt voor herhalende machtigingen, niet voor een " -"eenmalige machtiging." - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:213 -#, python-format -msgid "The date of signature of mandate '%s' is in the future !" -msgstr "" -"De datum van de handtekening van de machtiging '%s' is in de toekomst!" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -msgid "Signature Date" -msgstr "Handtekening datum" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,charge_bearer:0 -#: field:banking.export.sdd.wizard,charge_bearer:0 -msgid "Charge Bearer" -msgstr "Kostenverdeling" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,partner_id:0 -msgid "Partner" -msgstr "Relatie" - -#. module: account_banking_sepa_direct_debit -#: selection:sdd.mandate,recurrent_sequence_type:0 +#: selection:account.banking.mandate,recurrent_sequence_type:0 msgid "First" msgstr "Eerste" #. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,signature_date:0 -msgid "Date of Signature of the Mandate" -msgstr "Datum avn de handtekening van de machtiging" +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Following Service Level" +msgstr "Volg service level" #. module: account_banking_sepa_direct_debit -#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_cancel -msgid "Mandate Cancelled" -msgstr "Machtiging geannuleerd" +#: help:banking.export.sdd.wizard,charge_bearer:0 +msgid "" +"Following service level : transaction charges are to be applied following " +"the rules agreed in the service level and/or scheme (SEPA Core messages must" +" use this). Shared : transaction charges on the creditor side are to be " +"borne by the creditor, transaction charges on the debtor side are to be " +"borne by the debtor. Borne by creditor : all transaction charges are to be " +"borne by the creditor. Borne by debtor : all transaction charges are to be " +"borne by the debtor." +msgstr "Volg service level: Transactie kosten worden toegepast volgens de afgesproken regels in het service level en/of schema (Voor SEPA berichten deze gebruiken). Gedeeld : De transactiekosten aan de crediteur zijde zijn voor de schuldenaar, transactiekosten aan de debiteur kant zijn voor de schuldeiser. Op rekening van de schuldenaar: Alle transactie kosten zijn voor rekening van de schuldenaar. Op rekening van de schuldeiser: Alle transactie kosten zijn voor rekening van de schuldeiser." #. module: account_banking_sepa_direct_debit -#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.act_banking_export_sdd_payment_order -msgid "Generated SEPA Direct Debit Files" -msgstr "Genereerde SEPA incasso bestanden" +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Generate" +msgstr "Genereer" #. module: account_banking_sepa_direct_debit -#: help:sdd.mandate,sepa_migrated:0 +#: field:banking.export.sdd.wizard,id:0 +msgid "ID" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Identifier:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:payment.mode,original_creditor_identifier:0 +msgid "" +"If not defined, Original Creditor Identifier from company will be used." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:account.banking.mandate,sepa_migrated:0 msgid "" "If this field is not active, the mandate section of the next direct debit " "file that include this mandate will contain the 'Original Mandate " @@ -418,108 +276,176 @@ msgid "" "required in a few countries (Belgium for instance), but not in all " "countries. If this is not required in your country, you should keep this " "field always active." -msgstr "" -"Indien niet aangevinkt, zal het machtiging gedeelte van het volgende incasso " -"bestand, dat deze machtiging bevat, de 'Originele machtiging identificatie' " -"en de 'Origineel schuldeiser identificatie' bevatten. Dit is verplicht in " -"een aantal landen (zoals bijvoorbeeld België), maar niet in alle landen. " -"Indien dit niet verplicht is in uw land, dient u dit veld altijd aangevinkt " -"te houden." +msgstr "Indien niet aangevinkt, zal het machtiging gedeelte van het volgende incasso bestand, dat deze machtiging bevat, de 'Originele machtiging identificatie' en de 'Origineel schuldeiser identificatie' bevatten. Dit is verplicht in een aantal landen (zoals bijvoorbeeld België), maar niet in alle landen. Indien dit niet verplicht is in uw land, dient u dit veld altijd aangevinkt te houden." #. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,company_id:0 -msgid "Company" -msgstr "Bedijf" - -#. module: account_banking_sepa_direct_debit -#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard -msgid "Export SEPA Direct Debit File" -msgstr "Exporteer SEPA incasso bestand" - -#. module: account_banking_sepa_direct_debit -#: help:banking.export.sdd,batch_booking:0 #: help:banking.export.sdd.wizard,batch_booking:0 msgid "" "If true, the bank statement will display only one credit line for all the " "direct debits of the SEPA file ; if false, the bank statement will display " "one credit line per direct debit of the SEPA file." -msgstr "" -"Indien aangevinkt, zal het bankafschrift maar één credit regel weergeven " -"voor alle incasso's van het SEPA bestand. Indien niet aangevinkt wordt voor " -"iedere incasso een credit regel weergegeven op het bankafschrift." +msgstr "Indien aangevinkt, zal het bankafschrift maar één credit regel weergeven voor alle incasso's van het SEPA bestand. Indien niet aangevinkt wordt voor iedere incasso een credit regel weergegeven op het bankafschrift." #. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:225 +#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:43 +#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:33 #, python-format -msgid "" -"Cannot validate the mandate '%s' because it is not attached to a bank " -"account." +msgid "Invalid SEPA Creditor Identifier." +msgstr "Ongeldige SEPA Incassant-ID." + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,write_uid:0 +msgid "Last Updated by" msgstr "" -"Kan de machtiging '%s' niet bevestigen omdat deze niet is gekoppeld aan een " -"bankrekening." #. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,state:0 -#: view:sdd.mandate:0 -#: selection:sdd.mandate,state:0 -msgid "Draft" -msgstr "Concept" +#: field:banking.export.sdd.wizard,write_date:0 +msgid "Last Updated on" +msgstr "" #. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:290 +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Mandate Reference:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:115 #, python-format msgid "Mandate update" msgstr "Machtiging bijwerken" #. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,charge_bearer:0 -#: selection:banking.export.sdd.wizard,charge_bearer:0 -msgid "Shared" -msgstr "Gedeeld" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,batch_booking:0 -#: field:banking.export.sdd.wizard,batch_booking:0 -msgid "Batch Booking" -msgstr "Bach verwerking" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,sepa_migrated:0 +#: field:account.banking.mandate,sepa_migrated:0 msgid "Migrated to SEPA" msgstr "Gemigreerd naar SEPa" #. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,state:0 -msgid "Status" -msgstr "Status" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,total_amount:0 -#: field:banking.export.sdd.wizard,total_amount:0 -msgid "Total Amount" -msgstr "Totaalbedrag" - -#. module: account_banking_sepa_direct_debit -#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.action_account_banking_sdd -#: model:ir.ui.menu,name:account_banking_sepa_direct_debit.menu_account_banking_sdd -msgid "SEPA Direct Debit Files" -msgstr "SEPA incasso bestanden" - -#. module: account_banking_sepa_direct_debit -#: selection:banking.export.sdd,charge_bearer:0 -#: selection:banking.export.sdd.wizard,charge_bearer:0 -msgid "Following Service Level" -msgstr "Volg service level" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:233 +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:159 #, python-format msgid "" -"The mandate '%s' can't have a date of last debit before the date of " -"signature." +"Missing SEPA Direct Debit mandate on the bank payment line with partner '%s'" +" (reference '%s')." msgstr "" -"De machtiging '%s' kan geen datum van laatste incasso hebben die eerder is " -"dan de datum van ondertekening." + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,nb_transactions:0 +msgid "Number of Transactions" +msgstr "Aantal transacties" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: selection:account.banking.mandate,type:0 +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "One-Off" +msgstr "Eenmalig" + +#. module: account_banking_sepa_direct_debit +#: field:payment.mode,original_creditor_identifier:0 +#: field:res.company,original_creditor_identifier:0 +msgid "Original Creditor Identifier" +msgstr "Originele Incassant-ID" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,original_mandate_identification:0 +msgid "Original Mandate Identification" +msgstr "Originele machtiging indificatie" + +#. module: account_banking_sepa_direct_debit +#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required +msgid "Original Mandate Required (SEPA)" +msgstr "Originele machtiging benodigd (SEPA)" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_mode +msgid "Payment Mode" +msgstr "Betaalwijze" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,payment_order_ids:0 +msgid "Payment Orders" +msgstr "Betaalopdrachten" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:117 +#, python-format +msgid "" +"Payment Type Code '%s' is not supported. The only Payment Type Code " +"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and" +" 'pain.008.001.04'." +msgstr "Betaal soort code '%s' wordt niet ondersteund. De enige betaalsoort code ondersteund voor SEPA incasso's zijn 'pain.008.001.02', 'pain.008.001.03' en 'pain.008.001.04'." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Postal Code - City - Town:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: selection:account.banking.mandate,type:0 +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Recurrent" +msgstr "Terugkerend" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,recurrent_sequence_type:0 +msgid "Recurring" +msgstr "Terugkerend" + +#. module: account_banking_sepa_direct_debit +#: view:res.partner:account_banking_sepa_direct_debit.sdd_mandate_partner_form +#: view:res.partner.bank:account_banking_sepa_direct_debit.sdd_mandate_partner_bank_tree +msgid "SDD Mandates" +msgstr "SDD machteging" + +#. module: account_banking_sepa_direct_debit +#: field:payment.mode,sepa_creditor_identifier:0 +#: field:res.company,sepa_creditor_identifier:0 +msgid "SEPA Creditor Identifier" +msgstr "SEPA Incassant-ID" + +#. module: account_banking_sepa_direct_debit +#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.mandate_action +msgid "SEPA Direct Debit Mandates" +msgstr "SEPA incasso machtegingen" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "SEPA Direct Debit XML file generation" +msgstr "SEPA Incasso XML bestand aanmaken" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: field:account.banking.mandate,scheme:0 +msgid "Scheme" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Sepa Business-To-Business Direct debit Mandate" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Sepa Direct Debit Mandate" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:35 +#: model:ir.actions.report.xml,name:account_banking_sepa_direct_debit.report_sepa_direct_debit_mandate +#, python-format +msgid "Sepa Mandate" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree +msgid "Sequence Type" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,recurrent_sequence_type:0 +msgid "Sequence Type for Next Debit" +msgstr "Reeks soort voor volgende incasso" #. module: account_banking_sepa_direct_debit #: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_final @@ -527,201 +453,6 @@ msgstr "" msgid "Sequence Type set to Final" msgstr "Reeks soort ingesteld op definitief" -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,message_is_follower:0 -msgid "Is a Follower" -msgstr "Is een volger" - -#. module: account_banking_sepa_direct_debit -#: help:sdd.mandate,original_mandate_identification:0 -msgid "" -"When the field 'Migrated to SEPA' is not active, this field will be used as " -"the Original Mandate Identification in the Direct Debit file." -msgstr "" -"Wanneer het veld 'gemigreerd naar SEPA' niet actief is, zal dit veld worden " -"gebruikt als de originele machtiging identificatie in het incasso bestand." - -#. module: account_banking_sepa_direct_debit -#: view:payment.order:0 -msgid "SDD Mandate" -msgstr "SDD machtiging" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,original_mandate_identification:0 -msgid "Original Mandate Identification" -msgstr "Originele machtiging indificatie" - -#. module: account_banking_sepa_direct_debit -#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company -msgid "Companies" -msgstr "Bedrijven" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,message_summary:0 -msgid "Summary" -msgstr "Samenvatting" - -#. module: account_banking_sepa_direct_debit -#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required -msgid "Original Mandate Required (SEPA)" -msgstr "Originele machtiging benodigd (SEPA)" - -#. module: account_banking_sepa_direct_debit -#: field:account.invoice,sdd_mandate_id:0 -#: model:ir.model,name:account_banking_sepa_direct_debit.model_sdd_mandate -#: field:payment.line,sdd_mandate_id:0 -#: view:sdd.mandate:0 -msgid "SEPA Direct Debit Mandate" -msgstr "SEPA incasso machtiging" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:193 -#, python-format -msgid "" -"Missing SEPA Direct Debit mandate on the payment line with partner '%s' and " -"Invoice ref '%s'." -msgstr "" -"Ontbrekende SEPA incasso machtiging op de betaalregel met relatie '%s' en " -"factuur referentie '%s'." - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:210 -#, python-format -msgid "" -"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' " -"and it has a last debit date set to '%s', so we can't use it." -msgstr "" -"De machtiging referentie '%s' voor relatie %s' is ingesteld op 'eenmalig' en " -"de laatste incasso datum is ingesteld op '%s'. Zodoende kunnen we deze niet " -"gebruiken." - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,scan:0 -msgid "Scan of the Mandate" -msgstr "Scan van de machteging" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,last_debit_date:0 -msgid "Date of the Last Debit" -msgstr "Datum van laatste incasso" - -#. module: account_banking_sepa_direct_debit -#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_expired -msgid "Mandate Expired" -msgstr "Machtiging verlopen" - -#. module: account_banking_sepa_direct_debit -#: constraint:res.company:0 -msgid "Invalid SEPA Creditor Identifier." -msgstr "Ongeldige SEPA Incassant-ID." - -#. module: account_banking_sepa_direct_debit -#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_partner_bank -msgid "Bank Accounts" -msgstr "Bankrekeningen" - -#. module: account_banking_sepa_direct_debit -#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.sdd_mandate_action -msgid "" -"

\n" -" Click to create a new SEPA Direct Debit Mandate.\n" -"

\n" -" A SEPA Direct Debit Mandate is a document signed by your customer " -"that gives you the autorization to do one or several direct debits on his " -"bank account.\n" -"

\n" -" " -msgstr "" -"

\n" -" Klik voor het maken van een nieuwe SEPA incasso machtiging.\n" -"

\n" -" Een SEPA incasso machtiging is een document ondertekend door uw " -"klant, welke u toestemming geeft om incasso's uit te voeren op zijn " -"bankrekening.\n" -"

\n" -" " - -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd:0 -msgid "General Information" -msgstr "Algemene informatie" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -#: selection:sdd.mandate,state:0 -msgid "Valid" -msgstr "Geldig" - -#. module: account_banking_sepa_direct_debit -#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_invoice -msgid "Invoice" -msgstr "Factuur" - -#. module: account_banking_sepa_direct_debit -#: view:banking.export.sdd.wizard:0 -#: view:sdd.mandate:0 -msgid "Cancel" -msgstr "Annuleer" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -#: field:sdd.mandate,payment_line_ids:0 -msgid "Related Payment Lines" -msgstr "Gerelateerde betaalregels" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -#: selection:sdd.mandate,type:0 -msgid "Recurrent" -msgstr "Terugkerend" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,type:0 -msgid "Type of Mandate" -msgstr "Soort machtiging" - -#. module: account_banking_sepa_direct_debit -#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.mandate_valid -msgid "Mandate Validated" -msgstr "Machtiging bevestigd" - -#. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd,file:0 -msgid "SEPA File" -msgstr "SEPA bestand" - -#. module: account_banking_sepa_direct_debit -#: field:res.company,sepa_creditor_identifier:0 -msgid "SEPA Creditor Identifier" -msgstr "SEPA Incassant-ID" - -#. module: account_banking_sepa_direct_debit -#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd -msgid "SEPA Direct Debit export" -msgstr "SEPA incasso export" - -#. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -#: selection:sdd.mandate,state:0 -msgid "Expired" -msgstr "Verlopen" - -#. module: account_banking_sepa_direct_debit -#: field:sdd.mandate,partner_bank_id:0 -msgid "Bank Account" -msgstr "Bankrekening" - -#. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:254 -#, python-format -msgid "" -"You must set the 'Original Mandate Identification' on the recurrent mandate " -"'%s' which is not marked as 'Migrated to SEPA'." -msgstr "" -"U dient de 'Originele machtiging identificatie' in te stellen op de " -"herhalende machtiging '%s' welke niet is gemarkeerd als 'Gemigreerd naar " -"SEPA'" - #. module: account_banking_sepa_direct_debit #: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_first #: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_first @@ -729,26 +460,130 @@ msgid "Sequence Type set to First" msgstr "Reeks ingesteld op eerste" #. module: account_banking_sepa_direct_debit -#: code:addons/account_banking_sepa_direct_debit/account_banking_sdd.py:291 +#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring +#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring +msgid "Sequence Type set to Recurring" +msgstr "Reeks soort ingesteld op herhalend" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Shared" +msgstr "Gedeeld" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Signature of the debtor:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,state:0 +msgid "State" +msgstr "Status" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Swift BIC (up to 8 or 11 characteres):" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:166 #, python-format msgid "" -"As you changed the bank account attached to this mandate, the 'Sequence " -"Type' has been set back to 'First'." +"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has " +"expired." +msgstr "De SEPA incasso machtiging met referentie '%s' voor relatie '%s' is verlopen." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:174 +#, python-format +msgid "" +"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' " +"and it has a last debit date set to '%s', so we can't use it." +msgstr "De machtiging referentie '%s' voor relatie %s' is ingesteld op 'eenmalig' en de laatste incasso datum is ingesteld op '%s'. Zodoende kunnen we deze niet gebruiken." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:76 +#, python-format +msgid "The recurrent mandate '%s' must have a sequence type." +msgstr "De herhalende machtiging '%s' dient een reeks soort te hebben." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:86 +#, python-format +msgid "" +"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must " +"have its recurrent sequence type set to 'First'." +msgstr "Bij de herhalende machtiging '%s' welke niet is gemarkeerd als 'gemigreerd naar SEPA' dient de reeks soort te worden ingesteld op 'Eerste'." + +#. module: account_banking_sepa_direct_debit +#: help:account.banking.mandate,recurrent_sequence_type:0 +msgid "" +"This field is only used for Recurrent mandates, not for One-Off mandates." +msgstr "Dit veld wordt alleen gebruikt voor herhalende machtigingen, niet voor een eenmalige machtiging." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"This mandate is only intended for business-to-business transactions.\n" +" You are not entitled to a refund from your bank after your account has\n" +" been debited, but you are entitled to request your bank\n" +" not to debit your account up until the day on which the payment is due." msgstr "" -"Omdat u de gekoppelde bankrekening heeft gewijzigd is de reeks terug gezet " -"naar 'Eerste'." #. module: account_banking_sepa_direct_debit -#: help:sdd.mandate,message_ids:0 -msgid "Messages and communication history" -msgstr "Berichten en communicatie historie" +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "To be completed by the creditor" +msgstr "" #. module: account_banking_sepa_direct_debit -#: view:sdd.mandate:0 -msgid "Search SEPA Direct Debit Mandates" -msgstr "Zoek SEPA incasso machtigingen" +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "To be completed by the debtor" +msgstr "" #. module: account_banking_sepa_direct_debit -#: field:banking.export.sdd.wizard,file:0 -msgid "File" -msgstr "Bestand" +#: field:banking.export.sdd.wizard,total_amount:0 +msgid "Total Amount" +msgstr "Totaalbedrag" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree +msgid "Type" +msgstr "Soort" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,type:0 +msgid "Type of Mandate" +msgstr "Soort machtiging" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Type of payment:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Validate" +msgstr "Bevestigen" + +#. module: account_banking_sepa_direct_debit +#: help:account.banking.mandate,original_mandate_identification:0 +msgid "" +"When the field 'Migrated to SEPA' is not active, this field will be used as " +"the Original Mandate Identification in the Direct Debit file." +msgstr "Wanneer het veld 'gemigreerd naar SEPA' niet actief is, zal dit veld worden gebruikt als de originele machtiging identificatie in het incasso bestand." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:98 +#, python-format +msgid "" +"You must set the 'Original Mandate Identification' on the recurrent mandate " +"'%s' which is not marked as 'Migrated to SEPA'." +msgstr "U dient de 'Originele machtiging identificatie' in te stellen op de herhalende machtiging '%s' welke niet is gemarkeerd als 'Gemigreerd naar SEPA'" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"to send instructions to your bank to debit your account and (B) your bank to\n" +" debit your account in accordance with the instructions from" +msgstr "" diff --git a/account_banking_sepa_direct_debit/i18n/pt_BR.po b/account_banking_sepa_direct_debit/i18n/pt_BR.po new file mode 100644 index 000000000..44b004887 --- /dev/null +++ b/account_banking_sepa_direct_debit/i18n/pt_BR.po @@ -0,0 +1,588 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_sepa_direct_debit +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-07 16:04+0000\n" +"Last-Translator: danimaribeiro \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_banking_sepa_direct_debit +#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.mandate_action +msgid "" +"

\n" +" Click to create a new SEPA Direct Debit Mandate.\n" +"

\n" +" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n" +"

\n" +" " +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_banking_mandate +msgid "A generic banking mandate" +msgstr "Uma ordem bancária genérica" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO " +"CREDITOR FOR STORAGE." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.\n" +" NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n" +" THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Account Number - IBAN:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Address of the Debtor:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Address:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"As part of your rights, you are entitled to a refund from\n" +" your bank under the terms and conditions of your agreement\n" +" with your bank.\n" +" A refund must be claimed within 8 weeks starting from the date on which your account was debited." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:116 +#, python-format +msgid "" +"As you changed the bank account attached to this mandate, the 'Sequence " +"Type' has been set back to 'First'." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "Linhas de pagamento bancária" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,scheme:0 +msgid "Basic (CORE)" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,batch_booking:0 +msgid "Batch Booking" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Borne by Creditor" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Borne by Debtor" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "By signing this mandate form, you authorise (A)" +msgstr "Assinando este formulário de Ordem, você autoriza (A)" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Cancel" +msgstr "Cancelar" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,charge_bearer:0 +msgid "Charge Bearer" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company +msgid "Companies" +msgstr "Empresas" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Country of the debtor:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Country:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,state:0 +msgid "Create" +msgstr "Criar" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,create_uid:0 +msgid "Created by" +msgstr "Criado por" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,create_date:0 +msgid "Created on" +msgstr "Criado em" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Creditor's Name:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Date - Location:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Debtor's Name:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:payment.mode,sepa_creditor_identifier:0 +msgid "" +"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. If not defined, SEPA Creditor Identifier from company will be used.\n" +"This identifier is composed of :\n" +"- your country ISO code (2 letters)\n" +"- a 2-digits checkum\n" +"- a 3-letters business code\n" +"- a country-specific identifier" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:res.company,sepa_creditor_identifier:0 +msgid "" +"Enter the Creditor Identifier that has been attributed to your company to make SEPA Direct Debits. This identifier is composed of :\n" +"- your country ISO code (2 letters)\n" +"- a 2-digits checkum\n" +"- a 3-letters business code\n" +"- a country-specific identifier" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,scheme:0 +msgid "Enterprise (B2B)" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:42 +#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:32 +#, python-format +msgid "Error" +msgstr "Erro" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard +msgid "Export SEPA Direct Debit File" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,file:0 +msgid "File" +msgstr "Arquivo" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,filename:0 +msgid "Filename" +msgstr "Nome do arquivo" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,recurrent_sequence_type:0 +msgid "Final" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,state:0 +msgid "Finish" +msgstr "Finalizar" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,recurrent_sequence_type:0 +msgid "First" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Following Service Level" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:banking.export.sdd.wizard,charge_bearer:0 +msgid "" +"Following service level : transaction charges are to be applied following " +"the rules agreed in the service level and/or scheme (SEPA Core messages must" +" use this). Shared : transaction charges on the creditor side are to be " +"borne by the creditor, transaction charges on the debtor side are to be " +"borne by the debtor. Borne by creditor : all transaction charges are to be " +"borne by the creditor. Borne by debtor : all transaction charges are to be " +"borne by the debtor." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Generate" +msgstr "Gerar" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,id:0 +msgid "ID" +msgstr "ID" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Identifier:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:payment.mode,original_creditor_identifier:0 +msgid "" +"If not defined, Original Creditor Identifier from company will be used." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:account.banking.mandate,sepa_migrated:0 +msgid "" +"If this field is not active, the mandate section of the next direct debit " +"file that include this mandate will contain the 'Original Mandate " +"Identification' and the 'Original Creditor Scheme Identification'. This is " +"required in a few countries (Belgium for instance), but not in all " +"countries. If this is not required in your country, you should keep this " +"field always active." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:banking.export.sdd.wizard,batch_booking:0 +msgid "" +"If true, the bank statement will display only one credit line for all the " +"direct debits of the SEPA file ; if false, the bank statement will display " +"one credit line per direct debit of the SEPA file." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:43 +#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:33 +#, python-format +msgid "Invalid SEPA Creditor Identifier." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,write_uid:0 +msgid "Last Updated by" +msgstr "Última Atualização por" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,write_date:0 +msgid "Last Updated on" +msgstr "Última Atualização em" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Mandate Reference:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:115 +#, python-format +msgid "Mandate update" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,sepa_migrated:0 +msgid "Migrated to SEPA" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:159 +#, python-format +msgid "" +"Missing SEPA Direct Debit mandate on the bank payment line with partner '%s'" +" (reference '%s')." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,nb_transactions:0 +msgid "Number of Transactions" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: selection:account.banking.mandate,type:0 +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "One-Off" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:payment.mode,original_creditor_identifier:0 +#: field:res.company,original_creditor_identifier:0 +msgid "Original Creditor Identifier" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,original_mandate_identification:0 +msgid "Original Mandate Identification" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required +msgid "Original Mandate Required (SEPA)" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_mode +msgid "Payment Mode" +msgstr "Modo de Pagamento" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,payment_order_ids:0 +msgid "Payment Orders" +msgstr "Ordens de Pagamento" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:117 +#, python-format +msgid "" +"Payment Type Code '%s' is not supported. The only Payment Type Code " +"supported for SEPA Direct Debit are 'pain.008.001.02', 'pain.008.001.03' and" +" 'pain.008.001.04'." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Postal Code - City - Town:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: selection:account.banking.mandate,type:0 +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Recurrent" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,recurrent_sequence_type:0 +msgid "Recurring" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:res.partner:account_banking_sepa_direct_debit.sdd_mandate_partner_form +#: view:res.partner.bank:account_banking_sepa_direct_debit.sdd_mandate_partner_bank_tree +msgid "SDD Mandates" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:payment.mode,sepa_creditor_identifier:0 +#: field:res.company,sepa_creditor_identifier:0 +msgid "SEPA Creditor Identifier" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.mandate_action +msgid "SEPA Direct Debit Mandates" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "SEPA Direct Debit XML file generation" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: field:account.banking.mandate,scheme:0 +msgid "Scheme" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Sepa Business-To-Business Direct debit Mandate" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Sepa Direct Debit Mandate" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:35 +#: model:ir.actions.report.xml,name:account_banking_sepa_direct_debit.report_sepa_direct_debit_mandate +#, python-format +msgid "Sepa Mandate" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree +msgid "Sequence Type" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,recurrent_sequence_type:0 +msgid "Sequence Type for Next Debit" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_final +#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_final +msgid "Sequence Type set to Final" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_first +#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_first +msgid "Sequence Type set to First" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring +#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring +msgid "Sequence Type set to Recurring" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Shared" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Signature of the debtor:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,state:0 +msgid "State" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Swift BIC (up to 8 or 11 characteres):" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:166 +#, python-format +msgid "" +"The SEPA Direct Debit mandate with reference '%s' for partner '%s' has " +"expired." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/wizard/export_sdd.py:174 +#, python-format +msgid "" +"The mandate with reference '%s' for partner '%s' has type set to 'One-Off' " +"and it has a last debit date set to '%s', so we can't use it." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:76 +#, python-format +msgid "The recurrent mandate '%s' must have a sequence type." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:86 +#, python-format +msgid "" +"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must " +"have its recurrent sequence type set to 'First'." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: help:account.banking.mandate,recurrent_sequence_type:0 +msgid "" +"This field is only used for Recurrent mandates, not for One-Off mandates." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"This mandate is only intended for business-to-business transactions.\n" +" You are not entitled to a refund from your bank after your account has\n" +" been debited, but you are entitled to request your bank\n" +" not to debit your account up until the day on which the payment is due." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "To be completed by the creditor" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "To be completed by the debtor" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,total_amount:0 +msgid "Total Amount" +msgstr "Valor total" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree +msgid "Type" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,type:0 +msgid "Type of Mandate" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Type of payment:" +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Validate" +msgstr "Validar" + +#. module: account_banking_sepa_direct_debit +#: help:account.banking.mandate,original_mandate_identification:0 +msgid "" +"When the field 'Migrated to SEPA' is not active, this field will be used as " +"the Original Mandate Identification in the Direct Debit file." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:98 +#, python-format +msgid "" +"You must set the 'Original Mandate Identification' on the recurrent mandate " +"'%s' which is not marked as 'Migrated to SEPA'." +msgstr "" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"to send instructions to your bank to debit your account and (B) your bank to\n" +" debit your account in accordance with the instructions from" +msgstr "" diff --git a/account_banking_sepa_direct_debit/i18n/sl.po b/account_banking_sepa_direct_debit/i18n/sl.po new file mode 100644 index 000000000..4ce7d321a --- /dev/null +++ b/account_banking_sepa_direct_debit/i18n/sl.po @@ -0,0 +1,589 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_sepa_direct_debit +# +# Translators: +# Matjaž Mozetič , 2016 +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-18 10:57+0000\n" +"PO-Revision-Date: 2016-04-22 06:53+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: account_banking_sepa_direct_debit +#: model:ir.actions.act_window,help:account_banking_sepa_direct_debit.mandate_action +msgid "" +"

\n" +" Click to create a new SEPA Direct Debit Mandate.\n" +"

\n" +" A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account.\n" +"

\n" +" " +msgstr "

\n Ustvari nov SEPA mandat za direktno bremenitev.\n

\n SEPA mandat za direktno bremenitev je s strani kupca podpisan dokument, ki vas pooblašča za izvajanje ene ali več bremenitev njegovega bančnega računa.\n

\n " + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_account_banking_mandate +msgid "A generic banking mandate" +msgstr "Generični bančni mandat" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO " +"CREDITOR FOR STORAGE." +msgstr "VSE VRZELI SO OBVEZNE. PO PODPISU MANDATA, SE GA MORA POSLATI UPNIKU V HRANJENJE." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "" +"ALL GAPS ARE MANDATORY. ONCE THIS MANDATE HAS BEEN SIGNED MUST BE SENT TO CREDITOR FOR STORAGE.\n" +" NEVERTHELESS, THE BANK OF DEBTOR REQUIRES DEBTOR’S AUTHORIZATION BEFORE DEBITING B2B DIRECT DEBITS IN THE ACCOUNT.\n" +" THE DEBTOR WILL BE ABLE TO MANAGE THE MENTIONED AUTHORIZATION THROUGH THE MEANS PROVIDED BY HIS BANK." +msgstr "VSE VRZELI SO OBVEZNE. PO PODPISU MANDATA, SE GA MORA POSLATI UPNIKU V HRANJENJE.\n KLJUB VSEMU, BANKA DOLŽNIKA ZAHTEVA DOLŽNIKOVO POOBLASTILO PRED NEPOSREDNO B2B OBREMENITVIJO RAČUNA.\n DOLŽNIK BI LAHKO UPRAVLJAL OMENJENO POOBLASTILO NA NAČIN, KI MU GA OMOGOČA NJEGOVA BANKA." + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Account Number - IBAN:" +msgstr "Številka računa - 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 "Naslov dolžnika:" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Address:" +msgstr "Naslov:" + +#. 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 "V sklopu vaših pravic je dobropis/povračilo vaše banke\n v skladu s splošnimi pogoji vašega dogovora\n z banko.\n Povračilo je potrebno zahtevati v do 8 tednih od datuma, na katerega je bil vaš račun obremenjen." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:116 +#, python-format +msgid "" +"As you changed the bank account attached to this mandate, the 'Sequence " +"Type' has been set back to 'First'." +msgstr "Ker ste spremenili bančni račun pripet temu mandatu, se je tip zaporedja vrnil v 'Prvi'." + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_bank_payment_line +msgid "Bank Payment Lines" +msgstr "Postavke bančnih plačil" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,scheme:0 +msgid "Basic (CORE)" +msgstr "Osnovna (CORE)" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,batch_booking:0 +msgid "Batch Booking" +msgstr "Skupinska rezervacija" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Borne by Creditor" +msgstr "Nosi upnik" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Borne by Debtor" +msgstr "Nosi dolžnik" + +#. 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 "S podpisom tega mandata vi pooblaščate (A)" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Cancel" +msgstr "Preklic" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,charge_bearer:0 +msgid "Charge Bearer" +msgstr "Sprememba nosilca" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_res_company +msgid "Companies" +msgstr "Družbe" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Country of the debtor:" +msgstr "Država dolžnika:" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Country:" +msgstr "Država:" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,state:0 +msgid "Create" +msgstr "Ustvari" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,create_uid:0 +msgid "Created by" +msgstr "Ustvaril" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,create_date:0 +msgid "Created on" +msgstr "Ustvarjeno" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Creditor's Name:" +msgstr "Naziv upnika:" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Date - Location:" +msgstr "Datum - lokacija:" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Debtor's Name:" +msgstr "Naziv dolžnika:" + +#. 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 "Vnesi identifikator upnika, ki je bil dodeljen vaši družbi za izvajanje SEPA direktnih obremenitev. Če ni določen, se uporabi SEPA identifikator upnika iz nastavitev družbe.\nIdentifikator sestavljajo:\n- ISO koda vaše države (2 znaka)\n- 2-značna checkum koda\n- 3-značna poslovna koda\n- specifični identifikator glede na državo" + +#. 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 "Vnesi identifikator upnika, ki je bil dodeljen vaši družbi za izvajanje SEPA direktnih obremenitev. Identifikator sestavljajo:\n- ISO koda vaše države (2 znaka)\n- 2-značna checkum koda\n- 3-značna poslovna koda\n- specifični identifikator glede na državo" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,scheme:0 +msgid "Enterprise (B2B)" +msgstr "Podjetje (B2B)" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:42 +#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:32 +#, python-format +msgid "Error" +msgstr "Napaka" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_banking_export_sdd_wizard +msgid "Export SEPA Direct Debit File" +msgstr "Izvoz datoteke SEPA direktne obremenitve" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,file:0 +msgid "File" +msgstr "Datoteka" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,filename:0 +msgid "Filename" +msgstr "Naziv datoteke" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,recurrent_sequence_type:0 +msgid "Final" +msgstr "Končna" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,state:0 +msgid "Finish" +msgstr "Dokončaj" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,recurrent_sequence_type:0 +msgid "First" +msgstr "Prva" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Following Service Level" +msgstr "Nivo sledenja" + +#. 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 "Nivo sledenja: stroške transakcije se dodeli glede na naslednja pravila v sporazumu o ravni storitev in/ali shemi (SEPA temeljna sporočila morajo to uporabljati). Deljeno: stroške transakcije na strani upnika nosi upnik sam, stroške na strani dolžnika pa dolžnik. Nosi upnik: vse stroške transakcije nosi upnik. Nosi dolžnik: vse stroške transakcije nosi dolžnik." + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Generate" +msgstr "Ustvari" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,id:0 +msgid "ID" +msgstr "ID" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Identifier:" +msgstr "Identifikator:" + +#. 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 "Če ni določeno, se uporabi izvorni identifikator upnika iz nastavitev družbe." + +#. 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 "Če je to polje neaktivno, bo odsek datoteke naslednje direktne obremenitve, ki vključuje ta mandat, vseboval 'Identifikator izvornega mandata' in 'Identifikator izvorne sheme upnika'. To se zahteva v nekaj državah (npr. Belgiji), a ne pri vseh državah. Če v vaši državi to ni zahtevano, naj bo to polje zmeraj aktivno." + +#. 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 "Če pravilno, bančni izpisek prikaže le eno postavko v dobro za vse direktne obremenitve v SEPA XML datoteki ; če napačno, bančni izpisek prikaže le eno postavko v dobro za vsako direktno obremenitev v SEPA datoteki." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/payment_mode.py:43 +#: code:addons/account_banking_sepa_direct_debit/models/res_company.py:33 +#, python-format +msgid "Invalid SEPA Creditor Identifier." +msgstr "Neveljaven identifikator SEPA upnika." + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,write_uid:0 +msgid "Last Updated by" +msgstr "Zadnji posodobil" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,write_date:0 +msgid "Last Updated on" +msgstr "Zadnjič posodobljeno" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Mandate Reference:" +msgstr "Sklic mandata:" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:115 +#, python-format +msgid "Mandate update" +msgstr "Posodobitev mandata" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,sepa_migrated:0 +msgid "Migrated to SEPA" +msgstr "Preseljeno v 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 "Pri postavki bančnega plačila partnerja '%s' (sklic '%s') manjka SEPA direktna obremenitev." + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,nb_transactions:0 +msgid "Number of Transactions" +msgstr "Število transakcij" + +#. 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 "Enkratna" + +#. 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 "Identifikator izvornega upnika" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,original_mandate_identification:0 +msgid "Original Mandate Identification" +msgstr "Identifikator izvornega mandata" + +#. module: account_banking_sepa_direct_debit +#: model:res.groups,name:account_banking_sepa_direct_debit.group_original_mandate_required +msgid "Original Mandate Required (SEPA)" +msgstr "Zahteva se izvorni mandat (SEPA)" + +#. module: account_banking_sepa_direct_debit +#: model:ir.model,name:account_banking_sepa_direct_debit.model_payment_mode +msgid "Payment Mode" +msgstr "Metoda plačila" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,payment_order_ids:0 +msgid "Payment Orders" +msgstr "Plačilni nalogi" + +#. 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 "Koda tipa plačila '%s' ni podprta. Edine kode tipov plačil, ki so podprte za SEPA bremenilne transakcije, so 'pain.008.001.02', 'pain.008.001.03' in '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 "Poštna številka - Mesto - Kraj:" + +#. 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 "Ponavljajoče se" + +#. module: account_banking_sepa_direct_debit +#: selection:account.banking.mandate,recurrent_sequence_type:0 +msgid "Recurring" +msgstr "Ponavljajoč" + +#. module: account_banking_sepa_direct_debit +#: view:res.partner:account_banking_sepa_direct_debit.sdd_mandate_partner_form +#: view:res.partner.bank:account_banking_sepa_direct_debit.sdd_mandate_partner_bank_tree +msgid "SDD Mandates" +msgstr "SDD mandati" + +#. 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 "Identifikator SEPA upnika" + +#. module: account_banking_sepa_direct_debit +#: model:ir.actions.act_window,name:account_banking_sepa_direct_debit.mandate_action +msgid "SEPA Direct Debit Mandates" +msgstr "SEPA mandat za direktno obremenitev" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "SEPA Direct Debit XML file generation" +msgstr "Ustvarjanje XML datoteke SEPA direktne obremenitve" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: field:account.banking.mandate,scheme:0 +msgid "Scheme" +msgstr "Shema" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Sepa Business-To-Business Direct debit Mandate" +msgstr "SEPA Business-To-Business mandat za direktno obremenitev" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Sepa Direct Debit Mandate" +msgstr "SEPA mandat za direktno obremenitev" + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:35 +#: model:ir.actions.report.xml,name:account_banking_sepa_direct_debit.report_sepa_direct_debit_mandate +#, python-format +msgid "Sepa Mandate" +msgstr "SEPA mandat" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree +msgid "Sequence Type" +msgstr "Tip zaporedja" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,recurrent_sequence_type:0 +msgid "Sequence Type for Next Debit" +msgstr "Tip zaporedja za naslednjo obremenitev" + +#. module: account_banking_sepa_direct_debit +#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_final +#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_final +msgid "Sequence Type set to Final" +msgstr "Tip zaporedja nastavljen kot končni" + +#. module: account_banking_sepa_direct_debit +#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_first +#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_first +msgid "Sequence Type set to First" +msgstr "Tip zaporedja nastavljen kot prvi" + +#. module: account_banking_sepa_direct_debit +#: model:mail.message.subtype,description:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring +#: model:mail.message.subtype,name:account_banking_sepa_direct_debit.recurrent_sequence_type_recurring +msgid "Sequence Type set to Recurring" +msgstr "Tip zaporedja nastavljen kot ponavljajoči se" + +#. module: account_banking_sepa_direct_debit +#: selection:banking.export.sdd.wizard,charge_bearer:0 +msgid "Shared" +msgstr "V souporabi" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Signature of the debtor:" +msgstr "Podpis dolžnika:" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,state:0 +msgid "State" +msgstr "Stanje" + +#. 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 (8 ali 11 znakov):" + +#. 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 "SEPA mandat za direktno obremenitev s sklicem '%s' za partnerja '%s' je potekel." + +#. 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 "Pri mandatu s sklicem '%s' za partnerja '%s' je tip nastavljen na 'enkraten', zadnji datum obremenitve pa ima nastavljen na '%s', zato ga ne moremo uporabiti." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:76 +#, python-format +msgid "The recurrent mandate '%s' must have a sequence type." +msgstr "Ponavljajoči se mandat '%s' mora vsebovati tip zaporedja." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:86 +#, python-format +msgid "" +"The recurrent mandate '%s' which is not marked as 'Migrated to SEPA' must " +"have its recurrent sequence type set to 'First'." +msgstr "Ponavljajoči se mandat '%s', ki ni označen kot 'Preseljen v SEPA', mora imeti svoj ponavljajoči se tip zaporedja nastavljen kot 'Prvi'." + +#. module: account_banking_sepa_direct_debit +#: help:account.banking.mandate,recurrent_sequence_type:0 +msgid "" +"This field is only used for Recurrent mandates, not for One-Off mandates." +msgstr "To polje se uporablja le za ponavljajoče se mandate, ne pa za enkratne mandate." + +#. 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 "Ta mandat je mišljen le za transakcije med pravnimi osebami.\n Po obremenitvi vašega računa nimate pravice do povračila\n svoje banke,, lahko pa pri banki zahtevate, da se računa\n ne bremeni do dneva zapadlosti plačila." + +#. 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 "Izpolniti mora upnik" + +#. 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 "Izpolniti mora dolžnik" + +#. module: account_banking_sepa_direct_debit +#: field:banking.export.sdd.wizard,total_amount:0 +msgid "Total Amount" +msgstr "Skupni znesek" + +#. module: account_banking_sepa_direct_debit +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_search +#: view:account.banking.mandate:account_banking_sepa_direct_debit.sdd_mandate_tree +msgid "Type" +msgstr "Tip" + +#. module: account_banking_sepa_direct_debit +#: field:account.banking.mandate,type:0 +msgid "Type of Mandate" +msgstr "Tip mandata" + +#. module: account_banking_sepa_direct_debit +#: view:website:account_banking_sepa_direct_debit.sepa_direct_debit_mandate_document +msgid "Type of payment:" +msgstr "Tip plačila:" + +#. module: account_banking_sepa_direct_debit +#: view:banking.export.sdd.wizard:account_banking_sepa_direct_debit.banking_export_sdd_wizard_view +msgid "Validate" +msgstr "Potrdi" + +#. 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 "Kadar polje 'Preseljeno v SEPA' ni aktivno, se to polje uporabi za identifikator izvornega mandata v datoteki direktne obremenitve." + +#. module: account_banking_sepa_direct_debit +#: code:addons/account_banking_sepa_direct_debit/models/account_banking_mandate.py:98 +#, python-format +msgid "" +"You must set the 'Original Mandate Identification' on the recurrent mandate " +"'%s' which is not marked as 'Migrated to SEPA'." +msgstr "Na ponavljajočem se mandatu '%s', ki ni označen kot 'Preseljen v SEPA' morate nastaviti 'Identifikacijo izvornega mandata'." + +#. 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 "za pošiljanje navodil svoji banki glede bremenitve vašega računa in (B) svoji banki\n naj bremeni vaš račun v skladu z navodili iz" diff --git a/account_banking_sepa_direct_debit/migrations/8.0.0.5/post-migration.py b/account_banking_sepa_direct_debit/migrations/8.0.0.5/post-migration.py new file mode 100644 index 000000000..958a1af7d --- /dev/null +++ b/account_banking_sepa_direct_debit/migrations/8.0.0.5/post-migration.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +# © 2016 Sergio Teruel +# 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 diff --git a/account_banking_sepa_direct_debit/models/__init__.py b/account_banking_sepa_direct_debit/models/__init__.py index 153ab3543..64b7c3874 100644 --- a/account_banking_sepa_direct_debit/models/__init__.py +++ b/account_banking_sepa_direct_debit/models/__init__.py @@ -1,24 +1,9 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# SEPA Direct Debit module for OpenERP -# Copyright (C) 2013 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- from . import res_company +from . import res_config from . import account_banking_mandate +from . import bank_payment_line +from . import account_payment_mode +from . import account_payment_method +from . import account_payment_order diff --git a/account_banking_sepa_direct_debit/models/account_banking_mandate.py b/account_banking_sepa_direct_debit/models/account_banking_mandate.py index 56b4c870d..744903cb6 100644 --- a/account_banking_sepa_direct_debit/models/account_banking_mandate.py +++ b/account_banking_sepa_direct_debit/models/account_banking_mandate.py @@ -1,24 +1,7 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# SEPA Direct Debit module for OpenERP -# Copyright (C) 2013 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- +# © 2013-2016 Akretion - Alexis de Lattre +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from openerp import models, fields, api, exceptions, _ from datetime import datetime @@ -33,25 +16,14 @@ logger = logging.getLogger(__name__) class AccountBankingMandate(models.Model): """SEPA Direct Debit Mandate""" _inherit = 'account.banking.mandate' - _track = { - 'recurrent_sequence_type': { - 'account_banking_sepa_direct_debit.recurrent_sequence_type_first': - lambda self, cr, uid, obj, ctx=None: - obj['recurrent_sequence_type'] == 'first', - 'account_banking_sepa_direct_debit.' - 'recurrent_sequence_type_recurring': - lambda self, cr, uid, obj, ctx=None: - obj['recurrent_sequence_type'] == 'recurring', - 'account_banking_sepa_direct_debit.recurrent_sequence_type_final': - lambda self, cr, uid, obj, ctx=None: - obj['recurrent_sequence_type'] == 'final', - } - } + _rec_name = 'display_name' + format = fields.Selection( + selection_add=[('sepa', 'Sepa Mandate')], default='sepa') type = fields.Selection([('recurrent', 'Recurrent'), ('oneoff', 'One-Off')], - string='Type of Mandate', required=True, - track_visibility='always') + string='Type of Mandate', + track_visibility='onchange') recurrent_sequence_type = fields.Selection( [('first', 'First'), ('recurring', 'Recurring'), @@ -59,74 +31,55 @@ class AccountBankingMandate(models.Model): string='Sequence Type for Next Debit', track_visibility='onchange', help="This field is only used for Recurrent mandates, not for " "One-Off mandates.", default="first") - sepa_migrated = fields.Boolean( - string='Migrated to SEPA', track_visibility='onchange', - help="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.", default=True) - original_mandate_identification = fields.Char( - string='Original Mandate Identification', track_visibility='onchange', - size=35, - help="When the field 'Migrated to SEPA' is not active, this field " - "will be used as the Original Mandate Identification in the " - "Direct Debit file.") - scheme = fields.Selection([('CORE', 'Basic (CORE)'), - ('B2B', 'Enterprise (B2B)')], - string='Scheme', required=True, default="CORE") + scheme = fields.Selection([ + ('CORE', 'Basic (CORE)'), + ('B2B', 'Enterprise (B2B)')], + string='Scheme', default="CORE", track_visibility='onchange') unique_mandate_reference = fields.Char(size=35) # cf ISO 20022 - - @api.one - @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 + display_name = fields.Char(compute='compute_display_name', store=True) @api.multi + @api.constrains('type', 'recurrent_sequence_type') + def _check_recurring_type(self): + 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.depends('unique_mandate_reference', 'recurrent_sequence_type') + def compute_display_name(self): + for mandate in self: + if mandate.format == 'sepa': + name = '%s (%s)' % ( + mandate.unique_mandate_reference, + mandate.recurrent_sequence_type) + else: + name = mandate.unique_mandate_reference + mandate.display_name = name + + @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() + \ @@ -144,5 +97,5 @@ class AccountBankingMandate(models.Model): 'The following SDD Mandate IDs has been set to expired: %s' % expired_mandates.ids) else: - logger.info('0 SDD Mandates must be set to Expired') + logger.info('0 SDD Mandates had to be set to Expired') return True diff --git a/account_banking_sepa_direct_debit/models/account_payment_method.py b/account_banking_sepa_direct_debit/models/account_payment_method.py new file mode 100644 index 000000000..c6781cc4f --- /dev/null +++ b/account_banking_sepa_direct_debit/models/account_payment_method.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api + + +class AccountPaymentMethod(models.Model): + _inherit = 'account.payment.method' + + pain_version = fields.Selection(selection_add=[ + ('pain.008.001.02', 'pain.008.001.02 (recommended for direct debit)'), + ('pain.008.001.03', 'pain.008.001.03'), + ('pain.008.001.04', 'pain.008.001.04'), + ('pain.008.003.02', 'pain.008.003.02 (direct debit in Germany)'), + ]) + + @api.multi + def get_xsd_file_path(self): + self.ensure_one() + if self.pain_version in [ + 'pain.008.001.02', 'pain.008.001.03', 'pain.008.001.04', + 'pain.008.003.02']: + path = 'account_banking_sepa_direct_debit/data/%s.xsd'\ + % self.pain_version + return path + return super(AccountPaymentMethod, self).get_xsd_file_path() diff --git a/account_banking_sepa_direct_debit/models/account_payment_mode.py b/account_banking_sepa_direct_debit/models/account_payment_mode.py new file mode 100644 index 000000000..0650736d0 --- /dev/null +++ b/account_banking_sepa_direct_debit/models/account_payment_mode.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# © 2016 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api, _ +from .common import is_sepa_creditor_identifier_valid +from openerp.exceptions import ValidationError + + +class AccountPaymentMode(models.Model): + _inherit = 'account.payment.mode' + + sepa_creditor_identifier = fields.Char( + string='SEPA Creditor Identifier', size=35, + help="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") + + def _sepa_type_get(self): + res = super(AccountPaymentMode, self)._sepa_type_get() + if not res: + if self.type.code and self.type.code.startswith('pain.008'): + res = 'sepa_direct_debit' + return res + + @api.multi + @api.constrains('sepa_creditor_identifier') + def _check_sepa_creditor_identifier(self): + for payment_mode in self: + if payment_mode.sepa_creditor_identifier: + if not is_sepa_creditor_identifier_valid( + payment_mode.sepa_creditor_identifier): + raise ValidationError( + _("The SEPA Creditor Identifier '%s' is invalid.") + % payment_mode.sepa_creditor_identifier) diff --git a/account_banking_sepa_direct_debit/models/account_payment_order.py b/account_banking_sepa_direct_debit/models/account_payment_order.py new file mode 100644 index 000000000..e68abe27e --- /dev/null +++ b/account_banking_sepa_direct_debit/models/account_payment_order.py @@ -0,0 +1,298 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import models, fields, api, _ +from openerp.exceptions import UserError +from lxml import etree + + +class AccountPaymentOrder(models.Model): + _inherit = 'account.payment.order' + + def _get_previous_bank(self, payline): + previous_bank = False + older_lines = self.env['account.payment.line'].search([ + ('mandate_id', '=', payline.mandate_id.id), + ('partner_bank_id', '!=', payline.partner_bank_id.id)]) + if older_lines: + previous_date = False + previous_payline = False + for older_line in older_lines: + if hasattr(older_line.order_id, 'date_sent'): + older_line_date = older_line.order_id.date_sent + else: + older_line_date = older_line.order_id.date_done + if (older_line_date and + older_line_date > previous_date): + previous_date = older_line_date + previous_payline = older_line + if previous_payline: + previous_bank = previous_payline.partner_bank_id + return previous_bank + + @api.multi + def generate_payment_file(self): + """Creates the SEPA Direct Debit file. That's the important code !""" + self.ensure_one() + if self.payment_method_id.code != 'sepa_direct_debit': + return super(AccountPaymentOrder, self).generate_payment_file() + pain_flavor = self.payment_method_id.pain_version + # We use pain_flavor.startswith('pain.008.001.xx') + # to support country-specific extensions such as + # pain.008.001.02.ch.01 (cf l10n_ch_sepa) + if pain_flavor.startswith('pain.008.001.02'): + bic_xml_tag = 'BIC' + name_maxsize = 70 + root_xml_tag = 'CstmrDrctDbtInitn' + elif pain_flavor.startswith('pain.008.003.02'): + bic_xml_tag = 'BIC' + name_maxsize = 70 + root_xml_tag = 'CstmrDrctDbtInitn' + elif pain_flavor.startswith('pain.008.001.03'): + bic_xml_tag = 'BICFI' + name_maxsize = 140 + root_xml_tag = 'CstmrDrctDbtInitn' + elif pain_flavor.startswith('pain.008.001.04'): + bic_xml_tag = 'BICFI' + name_maxsize = 140 + root_xml_tag = 'CstmrDrctDbtInitn' + else: + raise UserError( + _("Payment Type Code '%s' is not supported. The only " + "Payment Type Code supported for SEPA Direct Debit are " + "'pain.008.001.02', 'pain.008.001.03' and " + "'pain.008.001.04'.") % pain_flavor) + pay_method = self.payment_mode_id.payment_method_id + xsd_file = pay_method.get_xsd_file_path() + gen_args = { + 'bic_xml_tag': bic_xml_tag, + 'name_maxsize': name_maxsize, + 'convert_to_ascii': pay_method.convert_to_ascii, + 'payment_method': 'DD', + 'file_prefix': 'sdd_', + 'pain_flavor': pain_flavor, + 'pain_xsd_file': xsd_file, + } + nsmap = self.generate_pain_nsmap() + attrib = self.generate_pain_attrib() + xml_root = etree.Element('Document', nsmap=nsmap, attrib=attrib) + pain_root = etree.SubElement(xml_root, root_xml_tag) + # A. Group header + group_header, nb_of_transactions_a, control_sum_a = \ + self.generate_group_header_block(pain_root, gen_args) + transactions_count_a = 0 + amount_control_sum_a = 0.0 + lines_per_group = {} + # key = (requested_date, priority, sequence type) + # value = list of lines as objects + for line in self.bank_line_ids: + transactions_count_a += 1 + priority = line.priority + # The field line.date is the requested payment date + # taking into account the 'date_prefered' setting + # cf account_banking_payment_export/models/account_payment.py + # in the inherit of action_open() + if not line.mandate_id: + raise UserError( + _("Missing SEPA Direct Debit mandate on the " + "bank payment line with partner '%s' " + "(reference '%s').") + % (line.partner_id.name, line.name)) + scheme = line.mandate_id.scheme + if line.mandate_id.state != 'valid': + raise Warning( + _("The SEPA Direct Debit mandate with reference '%s' " + "for partner '%s' has expired.") + % (line.mandate_id.unique_mandate_reference, + line.mandate_id.partner_id.name)) + if line.mandate_id.type == 'oneoff': + seq_type = 'OOFF' + if line.mandate_id.last_debit_date: + raise Warning( + _("The mandate with reference '%s' for partner " + "'%s' has type set to 'One-Off' and it has a " + "last debit date set to '%s', so we can't use " + "it.") + % (line.mandate_id.unique_mandate_reference, + line.mandate_id.partner_id.name, + line.mandate_id.last_debit_date)) + elif line.mandate_id.type == 'recurrent': + seq_type_map = { + 'recurring': 'RCUR', + 'first': 'FRST', + 'final': 'FNAL', + } + seq_type_label = \ + line.mandate_id.recurrent_sequence_type + assert seq_type_label is not False + seq_type = seq_type_map[seq_type_label] + key = (line.date, priority, seq_type, scheme) + if key in lines_per_group: + lines_per_group[key].append(line) + else: + lines_per_group[key] = [line] + + for (requested_date, priority, sequence_type, scheme), lines in \ + lines_per_group.items(): + # B. Payment info + payment_info, nb_of_transactions_b, control_sum_b = \ + self.generate_start_payment_info_block( + pain_root, + "self.name + '-' + " + "sequence_type + '-' + requested_date.replace('-', '') " + "+ '-' + priority", + priority, scheme, sequence_type, requested_date, { + 'self': self, + 'sequence_type': sequence_type, + 'priority': priority, + 'requested_date': requested_date, + }, gen_args) + + self.generate_party_block( + payment_info, 'Cdtr', 'B', + self.company_partner_bank_id, gen_args) + charge_bearer = etree.SubElement(payment_info, 'ChrgBr') + if self.sepa: + charge_bearer_text = 'SLEV' + else: + charge_bearer_text = self.charge_bearer + charge_bearer.text = charge_bearer_text + creditor_scheme_identification = etree.SubElement( + payment_info, 'CdtrSchmeId') + self.generate_creditor_scheme_identification( + creditor_scheme_identification, + 'self.payment_mode_id.sepa_creditor_identifier or ' + 'self.company_id.sepa_creditor_identifier', + 'SEPA Creditor Identifier', {'self': self}, 'SEPA', gen_args) + transactions_count_b = 0 + amount_control_sum_b = 0.0 + for line in lines: + transactions_count_b += 1 + # C. Direct Debit Transaction Info + dd_transaction_info = etree.SubElement( + payment_info, 'DrctDbtTxInf') + payment_identification = etree.SubElement( + dd_transaction_info, 'PmtId') + if pain_flavor == 'pain.008.001.02.ch.01': + instruction_identification = etree.SubElement( + payment_identification, 'InstrId') + instruction_identification.text = self._prepare_field( + 'Intruction Identification', 'line.name', + {'line': line}, 35, gen_args=gen_args) + end2end_identification = etree.SubElement( + payment_identification, 'EndToEndId') + end2end_identification.text = self._prepare_field( + 'End to End Identification', 'line.name', + {'line': line}, 35, gen_args=gen_args) + currency_name = self._prepare_field( + 'Currency Code', 'line.currency_id.name', + {'line': line}, 3, gen_args=gen_args) + instructed_amount = etree.SubElement( + dd_transaction_info, 'InstdAmt', Ccy=currency_name) + instructed_amount.text = '%.2f' % line.amount_currency + amount_control_sum_a += line.amount_currency + amount_control_sum_b += line.amount_currency + dd_transaction = etree.SubElement( + dd_transaction_info, 'DrctDbtTx') + mandate_related_info = etree.SubElement( + dd_transaction, 'MndtRltdInf') + mandate_identification = etree.SubElement( + mandate_related_info, 'MndtId') + mandate_identification.text = self._prepare_field( + 'Unique Mandate Reference', + 'line.mandate_id.unique_mandate_reference', + {'line': line}, 35, gen_args=gen_args) + mandate_signature_date = etree.SubElement( + mandate_related_info, 'DtOfSgntr') + mandate_signature_date.text = self._prepare_field( + 'Mandate Signature Date', + 'line.mandate_id.signature_date', + {'line': line}, 10, gen_args=gen_args) + if sequence_type == 'FRST' and line.mandate_id.last_debit_date: + previous_bank = self._get_previous_bank(line) + if previous_bank: + amendment_indicator = etree.SubElement( + mandate_related_info, 'AmdmntInd') + amendment_indicator.text = 'true' + amendment_info_details = etree.SubElement( + mandate_related_info, 'AmdmntInfDtls') + if ( + previous_bank.bank_bic == + line.partner_bank_id.bank_bic): + ori_debtor_account = etree.SubElement( + amendment_info_details, 'OrgnlDbtrAcct') + ori_debtor_account_id = etree.SubElement( + ori_debtor_account, 'Id') + ori_debtor_account_iban = etree.SubElement( + ori_debtor_account_id, 'IBAN') + ori_debtor_account_iban.text = self._validate_iban( + self._prepare_field( + 'Original Debtor Account', + 'previous_bank.sanitized_acc_number', + {'previous_bank': previous_bank}, + gen_args=gen_args)) + else: + ori_debtor_agent = etree.SubElement( + amendment_info_details, 'OrgnlDbtrAgt') + ori_debtor_agent_institution = etree.SubElement( + ori_debtor_agent, 'FinInstnId') + ori_debtor_agent_bic = etree.SubElement( + ori_debtor_agent_institution, bic_xml_tag) + ori_debtor_agent_bic.text = self._prepare_field( + 'Original Debtor Agent', + 'previous_bank.bank_bic', + {'previous_bank': previous_bank}, + gen_args=gen_args) + ori_debtor_agent_other = etree.SubElement( + ori_debtor_agent_institution, 'Othr') + ori_debtor_agent_other_id = etree.SubElement( + ori_debtor_agent_other, 'Id') + ori_debtor_agent_other_id.text = 'SMNDA' + # SMNDA = Same Mandate New Debtor Agent + + self.generate_party_block( + dd_transaction_info, 'Dbtr', 'C', + line.partner_bank_id, gen_args, line) + + self.generate_remittance_info_block( + dd_transaction_info, line, gen_args) + + nb_of_transactions_b.text = unicode(transactions_count_b) + control_sum_b.text = '%.2f' % amount_control_sum_b + nb_of_transactions_a.text = unicode(transactions_count_a) + control_sum_a.text = '%.2f' % amount_control_sum_a + + return self.finalize_sepa_file_creation( + xml_root, gen_args) + + @api.multi + def finalize_sepa_file_creation(self, xml_root, gen_args): + """Save the SEPA Direct Debit file: mark all payments in the file + as 'sent'. Write 'last debit date' on mandate and set oneoff + mandate to expired. + """ + abmo = self.env['account.banking.mandate'] + to_expire_mandates = abmo.browse([]) + first_mandates = abmo.browse([]) + all_mandates = abmo.browse([]) + for bline in self.bank_line_ids: + if bline.mandate_id in all_mandates: + continue + all_mandates += bline.mandate_id + if bline.mandate_id.type == 'oneoff': + to_expire_mandates += bline.mandate_id + elif bline.mandate_id.type == 'recurrent': + seq_type = bline.mandate_id.recurrent_sequence_type + if seq_type == 'final': + to_expire_mandates += bline.mandate_id + elif seq_type == 'first': + first_mandates += bline.mandate_id + all_mandates.write( + {'last_debit_date': fields.Date.context_today(self)}) + to_expire_mandates.write({'state': 'expired'}) + first_mandates.write({ + 'recurrent_sequence_type': 'recurring', + }) + return super(AccountPaymentOrder, self).finalize_sepa_file_creation( + xml_root, gen_args) diff --git a/account_banking_sepa_direct_debit/models/bank_payment_line.py b/account_banking_sepa_direct_debit/models/bank_payment_line.py new file mode 100644 index 000000000..0321cf03d --- /dev/null +++ b/account_banking_sepa_direct_debit/models/bank_payment_line.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# © 2015-2016 Akretion - Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, api + + +class BankPaymentLine(models.Model): + _inherit = 'bank.payment.line' + + @api.multi + def move_line_offsetting_account_hashcode(self): + """ + From my experience, even when you ask several direct debits + at the same date with enough delay, you will have several credits + on your bank statement: one for each mandate types. + So we split the transfer move lines by mandate type, so easier + reconciliation of the bank statement. + """ + hashcode = super(BankPaymentLine, self).\ + move_line_offsetting_account_hashcode() + hashcode += '-' + unicode(self.mandate_id.recurrent_sequence_type) + return hashcode diff --git a/account_banking_sepa_direct_debit/models/common.py b/account_banking_sepa_direct_debit/models/common.py new file mode 100644 index 000000000..33712f3b3 --- /dev/null +++ b/account_banking_sepa_direct_debit/models/common.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# © 2013-2016 Akretion (Alexis de Lattre ) +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2016 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +import logging + +logger = logging.getLogger(__name__) + + +def is_sepa_creditor_identifier_valid(sepa_creditor_identifier): + """Check if SEPA Creditor Identifier is valid + @param sepa_creditor_identifier: SEPA Creditor Identifier as str + or unicode + @return: True if valid, False otherwise + """ + if not isinstance(sepa_creditor_identifier, (str, unicode)): + return False + try: + sci = str(sepa_creditor_identifier).lower() + except: + logger.warning( + "SEPA Creditor ID should contain only ASCII characters.") + return False + if len(sci) < 9: + return False + before_replacement = sci[7:] + sci[0:2] + '00' + logger.debug( + "SEPA ID check before_replacement = %s" % before_replacement) + after_replacement = '' + for char in before_replacement: + if char.isalpha(): + after_replacement += str(ord(char) - 87) + else: + after_replacement += char + logger.debug( + "SEPA ID check after_replacement = %s" % after_replacement) + return int(sci[2:4]) == (98 - (int(after_replacement) % 97)) diff --git a/account_banking_sepa_direct_debit/models/res_company.py b/account_banking_sepa_direct_debit/models/res_company.py index 46f98bbc2..ac58eb42f 100644 --- a/account_banking_sepa_direct_debit/models/res_company.py +++ b/account_banking_sepa_direct_debit/models/res_company.py @@ -1,29 +1,12 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# SEPA Direct Debit module for OpenERP -# Copyright (C) 2013 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# -*- coding: utf-8 -*- +# © 2013-2016 Akretion (Alexis de Lattre ) +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2016 Antiun Ingenieria S.L. - Antonio Espinosa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import models, fields, api, exceptions, _ -import logging - -logger = logging.getLogger(__name__) +from openerp import models, fields, api, _ +from .common import is_sepa_creditor_identifier_valid +from openerp.exceptions import ValidationError class ResCompany(models.Model): @@ -39,42 +22,13 @@ class ResCompany(models.Model): original_creditor_identifier = fields.Char( string='Original Creditor Identifier', size=70) - def is_sepa_creditor_identifier_valid( - self, sepa_creditor_identifier): - """Check if SEPA Creditor Identifier is valid - @param sepa_creditor_identifier: SEPA Creditor Identifier as str - or unicode - @return: True if valid, False otherwise - """ - if not isinstance(sepa_creditor_identifier, (str, unicode)): - return False - try: - sci = str(sepa_creditor_identifier).lower() - except: - logger.warning( - "SEPA Creditor ID should contain only ASCII caracters.") - return False - if len(sci) < 9: - return False - before_replacement = sci[7:] + sci[0:2] + '00' - logger.debug( - "SEPA ID check before_replacement = %s" % before_replacement) - after_replacement = '' - for char in before_replacement: - if char.isalpha(): - after_replacement += str(ord(char) - 87) - else: - after_replacement += char - logger.debug( - "SEPA ID check after_replacement = %s" % after_replacement) - return int(sci[2:4]) == (98 - (int(after_replacement) % 97)) - - @api.one + @api.multi @api.constrains('sepa_creditor_identifier') def _check_sepa_creditor_identifier(self): - if self.sepa_creditor_identifier: - if not self.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 ValidationError( + _("The SEPA Creditor Identifier '%s' is invalid.") + % company.sepa_creditor_identifier) diff --git a/account_banking_sepa_direct_debit/models/res_config.py b/account_banking_sepa_direct_debit/models/res_config.py new file mode 100644 index 000000000..229e9fae0 --- /dev/null +++ b/account_banking_sepa_direct_debit/models/res_config.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields + + +class AccountConfigSettings(models.TransientModel): + _inherit = 'account.config.settings' + + sepa_creditor_identifier = fields.Char( + related='company_id.sepa_creditor_identifier') diff --git a/account_banking_sepa_direct_debit/post_install.py b/account_banking_sepa_direct_debit/post_install.py new file mode 100644 index 000000000..1fbd61793 --- /dev/null +++ b/account_banking_sepa_direct_debit/post_install.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import SUPERUSER_ID + + +def update_bank_journals(cr, pool): + ajo = pool['account.journal'] + journal_ids = ajo.search(cr, SUPERUSER_ID, [('type', '=', 'bank')]) + sdd_id = pool['ir.model.data'].xmlid_to_res_id( + cr, SUPERUSER_ID, + 'account_banking_sepa_direct_debit.sepa_direct_debit') + if sdd_id: + ajo.write(cr, SUPERUSER_ID, journal_ids, { + 'inbound_payment_method_ids': [(4, sdd_id)], + }) + return diff --git a/account_banking_sepa_direct_debit/reports/sepa_direct_debit_mandate.xml b/account_banking_sepa_direct_debit/reports/sepa_direct_debit_mandate.xml new file mode 100644 index 000000000..1d6a9daa2 --- /dev/null +++ b/account_banking_sepa_direct_debit/reports/sepa_direct_debit_mandate.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + diff --git a/account_banking_sepa_direct_debit/security/original_mandate_required_security.xml b/account_banking_sepa_direct_debit/security/original_mandate_required_security.xml deleted file mode 100644 index e6a8570cf..000000000 --- a/account_banking_sepa_direct_debit/security/original_mandate_required_security.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - Original Mandate Required (SEPA) - - - - - diff --git a/account_banking_sepa_direct_debit/tests/__init__.py b/account_banking_sepa_direct_debit/tests/__init__.py new file mode 100644 index 000000000..27fbb4e38 --- /dev/null +++ b/account_banking_sepa_direct_debit/tests/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import test_sdd diff --git a/account_banking_sepa_direct_debit/tests/test_sdd.py b/account_banking_sepa_direct_debit/tests/test_sdd.py new file mode 100644 index 000000000..c7df49b07 --- /dev/null +++ b/account_banking_sepa_direct_debit/tests/test_sdd.py @@ -0,0 +1,167 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp.addons.account.tests.account_test_classes\ + import AccountingTestCase +from openerp.tools import float_compare +import time +from lxml import etree + + +class TestSDD(AccountingTestCase): + + def test_sdd(self): + self.company = self.env['res.company'] + self.account_model = self.env['account.account'] + self.move_model = self.env['account.move'] + self.journal_model = self.env['account.journal'] + self.payment_order_model = self.env['account.payment.order'] + self.payment_line_model = self.env['account.payment.line'] + self.mandate_model = self.env['account.banking.mandate'] + self.bank_line_model = self.env['bank.payment.line'] + self.partner_bank_model = self.env['res.partner.bank'] + self.attachment_model = self.env['ir.attachment'] + self.invoice_model = self.env['account.invoice'] + self.invoice_line_model = self.env['account.invoice.line'] + company = self.env.ref('base.main_company') + self.partner_agrolait = self.env.ref('base.res_partner_2') + self.partner_c2c = self.env.ref('base.res_partner_12') + self.account_revenue = self.account_model.search([( + 'user_type_id', + '=', + self.env.ref('account.data_account_type_revenue').id)], limit=1) + self.account_receivable = self.account_model.search([( + 'user_type_id', + '=', + self.env.ref('account.data_account_type_receivable').id)], limit=1) + # create journal + self.bank_journal = self.journal_model.create({ + 'name': 'Company Bank journal', + 'type': 'bank', + 'code': 'BNKFC', + 'bank_account_id': + self.env.ref('account_payment_mode.main_company_iban').id, + 'bank_id': + self.env.ref('account_payment_mode.bank_la_banque_postale').id, + }) + # update payment mode + self.payment_mode = self.env.ref( + 'account_banking_sepa_direct_debit.' + 'payment_mode_inbound_sepa_dd1') + self.payment_mode.write({ + 'bank_account_link': 'fixed', + 'fixed_journal_id': self.bank_journal.id, + }) + eur_currency_id = self.env.ref('base.EUR').id + company.currency_id = eur_currency_id + self.env.ref( + 'account_banking_sepa_direct_debit.res_partner_2_mandate').\ + recurrent_sequence_type = 'first' + invoice1 = self.create_invoice( + self.partner_agrolait.id, + 'account_banking_sepa_direct_debit.res_partner_2_mandate', 42.0) + invoice2 = self.create_invoice( + self.partner_c2c.id, + 'account_banking_sepa_direct_debit.res_partner_12_mandate', 11.0) + for inv in [invoice1, invoice2]: + action = inv.create_account_payment_line() + self.assertEquals(action['res_model'], 'account.payment.order') + self.payment_order = self.payment_order_model.browse(action['res_id']) + self.assertEquals( + self.payment_order.payment_type, 'inbound') + self.assertEquals( + self.payment_order.payment_mode_id, self.payment_mode) + self.assertEquals( + self.payment_order.journal_id, self.bank_journal) + # Check payment line + pay_lines = self.payment_line_model.search([ + ('partner_id', '=', self.partner_agrolait.id), + ('order_id', '=', self.payment_order.id)]) + self.assertEquals(len(pay_lines), 1) + agrolait_pay_line1 = pay_lines[0] + accpre = self.env['decimal.precision'].precision_get('Account') + self.assertEquals(agrolait_pay_line1.currency_id.id, eur_currency_id) + self.assertEquals( + agrolait_pay_line1.mandate_id, invoice1.mandate_id) + self.assertEquals( + agrolait_pay_line1.partner_bank_id, + invoice1.mandate_id.partner_bank_id) + self.assertEquals(float_compare( + agrolait_pay_line1.amount_currency, 42, precision_digits=accpre), + 0) + self.assertEquals(agrolait_pay_line1.communication_type, 'normal') + self.assertEquals(agrolait_pay_line1.communication, invoice1.number) + self.payment_order.draft2open() + self.assertEquals(self.payment_order.state, 'open') + self.assertEquals(self.payment_order.sepa, True) + # Check bank payment line + bank_lines = self.bank_line_model.search([ + ('partner_id', '=', self.partner_agrolait.id)]) + self.assertEquals(len(bank_lines), 1) + agrolait_bank_line = bank_lines[0] + self.assertEquals(agrolait_bank_line.currency_id.id, eur_currency_id) + self.assertEquals(float_compare( + agrolait_bank_line.amount_currency, 42.0, precision_digits=accpre), + 0) + self.assertEquals(agrolait_bank_line.communication_type, 'normal') + self.assertEquals( + agrolait_bank_line.communication, invoice1.number) + self.assertEquals( + agrolait_bank_line.mandate_id, invoice1.mandate_id) + self.assertEquals( + agrolait_bank_line.partner_bank_id, + invoice1.mandate_id.partner_bank_id) + action = self.payment_order.open2generated() + self.assertEquals(self.payment_order.state, 'generated') + self.assertEquals(action['res_model'], 'ir.attachment') + attachment = self.attachment_model.browse(action['res_id']) + self.assertEquals(attachment.datas_fname[-4:], '.xml') + xml_file = attachment.datas.decode('base64') + xml_root = etree.fromstring(xml_file) + # print "xml_file=", etree.tostring(xml_root, pretty_print=True) + namespaces = xml_root.nsmap + namespaces['p'] = xml_root.nsmap[None] + namespaces.pop(None) + pay_method_xpath = xml_root.xpath( + '//p:PmtInf/p:PmtMtd', namespaces=namespaces) + self.assertEquals(pay_method_xpath[0].text, 'DD') + sepa_xpath = xml_root.xpath( + '//p:PmtInf/p:PmtTpInf/p:SvcLvl/p:Cd', namespaces=namespaces) + self.assertEquals(sepa_xpath[0].text, 'SEPA') + debtor_acc_xpath = xml_root.xpath( + '//p:PmtInf/p:CdtrAcct/p:Id/p:IBAN', namespaces=namespaces) + self.assertEquals( + debtor_acc_xpath[0].text, + self.payment_order.company_partner_bank_id.sanitized_acc_number) + self.payment_order.generated2uploaded() + self.assertEquals(self.payment_order.state, 'uploaded') + for inv in [invoice1, invoice2]: + self.assertEquals(inv.state, 'paid') + self.assertEquals(self.env.ref( + 'account_banking_sepa_direct_debit.res_partner_2_mandate'). + recurrent_sequence_type, 'recurring') + return + + def create_invoice( + self, partner_id, mandate_xmlid, price_unit, type='out_invoice'): + invoice = self.invoice_model.create({ + 'partner_id': partner_id, + 'reference_type': 'none', + 'currency_id': self.env.ref('base.EUR').id, + 'name': 'test', + 'account_id': self.account_receivable.id, + 'type': type, + 'date_invoice': time.strftime('%Y-%m-%d'), + 'payment_mode_id': self.payment_mode.id, + 'mandate_id': self.env.ref(mandate_xmlid).id, + }) + self.invoice_line_model.create({ + 'invoice_id': invoice.id, + 'price_unit': price_unit, + 'quantity': 1, + 'name': 'Great service', + 'account_id': self.account_revenue.id, + }) + invoice.signal_workflow('invoice_open') + return invoice diff --git a/account_banking_sepa_direct_debit/views/account_banking_mandate_view.xml b/account_banking_sepa_direct_debit/views/account_banking_mandate_view.xml index 366edfaf8..c27dcb175 100644 --- a/account_banking_sepa_direct_debit/views/account_banking_mandate_view.xml +++ b/account_banking_sepa_direct_debit/views/account_banking_mandate_view.xml @@ -1,6 +1,6 @@ @@ -11,37 +11,37 @@ - + sdd.mandate.form account.banking.mandate - - - - - - - + + + - + sdd.mandate.tree account.banking.mandate - + - + sdd.mandate.search account.banking.mandate @@ -62,68 +62,5 @@ - - SEPA Direct Debit Mandates - account.banking.mandate - tree,form - -

- Click to create a new SEPA Direct Debit Mandate. -

- A SEPA Direct Debit Mandate is a document signed by your customer that gives you the autorization to do one or several direct debits on his bank account. -

-
-
- - - - - sdd.mandate.res.partner.bank.tree - res.partner.bank - - - - SDD Mandates - - - - - - sdd.mandate.partner.form - res.partner - - - - SDD Mandates - - - - - - Sequence Type set to First - account.banking.mandate - - Sequence Type set to First - - - - Sequence Type set to Recurring - account.banking.mandate - - Sequence Type set to Recurring - - - - Sequence Type set to Final - account.banking.mandate - - Sequence Type set to Final - - -
diff --git a/account_banking_sepa_direct_debit/views/account_payment_mode.xml b/account_banking_sepa_direct_debit/views/account_payment_mode.xml new file mode 100644 index 000000000..23eca685f --- /dev/null +++ b/account_banking_sepa_direct_debit/views/account_payment_mode.xml @@ -0,0 +1,23 @@ + + + + + + + Add SEPA identifiers on payment mode form + account.payment.mode + + + + + + + + + + + diff --git a/account_banking_sepa_direct_debit/views/report_sepa_direct_debit_mandate.xml b/account_banking_sepa_direct_debit/views/report_sepa_direct_debit_mandate.xml new file mode 100644 index 000000000..c71a2083b --- /dev/null +++ b/account_banking_sepa_direct_debit/views/report_sepa_direct_debit_mandate.xml @@ -0,0 +1,126 @@ + + + + + + + + + + diff --git a/account_banking_sepa_direct_debit/views/res_company_view.xml b/account_banking_sepa_direct_debit/views/res_company_view.xml index e4c9e0b93..6b4d544ca 100644 --- a/account_banking_sepa_direct_debit/views/res_company_view.xml +++ b/account_banking_sepa_direct_debit/views/res_company_view.xml @@ -1,20 +1,19 @@ - + sepa_direct_debit.res.company.form res.company - diff --git a/account_banking_sepa_direct_debit/views/res_config.xml b/account_banking_sepa_direct_debit/views/res_config.xml new file mode 100644 index 000000000..8e37d7eab --- /dev/null +++ b/account_banking_sepa_direct_debit/views/res_config.xml @@ -0,0 +1,21 @@ + + + + + + sepa_direct_debit.account_config_settings.form + account.config.settings + + +
+
+
+
+
+
+ +
+
diff --git a/account_banking_sepa_direct_debit/wizard/__init__.py b/account_banking_sepa_direct_debit/wizard/__init__.py deleted file mode 100644 index 3830e36d9..000000000 --- a/account_banking_sepa_direct_debit/wizard/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# SEPA Direct Debit module for OpenERP -# Copyright (C) 2013 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from . import export_sdd diff --git a/account_banking_sepa_direct_debit/wizard/export_sdd.py b/account_banking_sepa_direct_debit/wizard/export_sdd.py deleted file mode 100644 index b76e14050..000000000 --- a/account_banking_sepa_direct_debit/wizard/export_sdd.py +++ /dev/null @@ -1,396 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# SEPA Direct Debit module for Odoo -# Copyright (C) 2013-2015 Akretion (http://www.akretion.com) -# @author: Alexis de Lattre -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - - -from openerp import models, fields, api, _ -from openerp.exceptions import Warning -from openerp import workflow -from lxml import etree - - -class BankingExportSddWizard(models.TransientModel): - _name = 'banking.export.sdd.wizard' - _inherit = ['banking.export.pain'] - _description = 'Export SEPA Direct Debit File' - - state = fields.Selection([ - ('create', 'Create'), - ('finish', 'Finish'), - ], string='State', readonly=True, default='create') - batch_booking = fields.Boolean( - string='Batch Booking', - help="If true, the bank statement will display only one credit " - "line for all the direct debits of the SEPA file ; if false, " - "the bank statement will display one credit line per direct " - "debit of the SEPA file.") - charge_bearer = fields.Selection([ - ('SLEV', 'Following Service Level'), - ('SHAR', 'Shared'), - ('CRED', 'Borne by Creditor'), - ('DEBT', 'Borne by Debtor'), - ], string='Charge Bearer', required=True, default='SLEV', - help="Following service level : transaction charges are to be " - "applied following the rules agreed in the service level " - "and/or scheme (SEPA Core messages must use this). Shared : " - "transaction charges on the creditor side are to be borne " - "by the creditor, transaction charges on the debtor side are " - "to be borne by the debtor. Borne by creditor : all " - "transaction charges are to be borne by the creditor. Borne " - "by debtor : all transaction charges are to be borne by the debtor.") - nb_transactions = fields.Integer( - string='Number of Transactions', readonly=True) - total_amount = fields.Float(string='Total Amount', readonly=True) - file = fields.Binary(string="File", readonly=True) - filename = fields.Char(string="Filename", readonly=True) - payment_order_ids = fields.Many2many( - 'payment.order', 'wiz_sdd_payorders_rel', 'wizard_id', - 'payment_order_id', string='Payment Orders', readonly=True) - - @api.model - def create(self, vals): - payment_order_ids = self._context.get('active_ids', []) - vals.update({ - 'payment_order_ids': [[6, 0, payment_order_ids]], - }) - return super(BankingExportSddWizard, self).create(vals) - - def _get_previous_bank(self, payline): - previous_bank = False - older_lines = self.env['payment.line'].search([ - ('mandate_id', '=', payline.mandate_id.id), - ('bank_id', '!=', payline.bank_id.id)]) - if older_lines: - previous_date = False - previous_payline = False - for older_line in older_lines: - if hasattr(older_line.order_id, 'date_sent'): - older_line_date = older_line.order_id.date_sent - else: - older_line_date = older_line.order_id.date_done - if (older_line_date and - older_line_date > previous_date): - previous_date = older_line_date - previous_payline = older_line - if previous_payline: - previous_bank = previous_payline.bank_id - return previous_bank - - @api.multi - def create_sepa(self): - """Creates the SEPA Direct Debit file. That's the important code !""" - pain_flavor = self.payment_order_ids[0].mode.type.code - convert_to_ascii = \ - self.payment_order_ids[0].mode.convert_to_ascii - if pain_flavor == 'pain.008.001.02': - bic_xml_tag = 'BIC' - name_maxsize = 70 - root_xml_tag = 'CstmrDrctDbtInitn' - elif pain_flavor == 'pain.008.001.03': - bic_xml_tag = 'BICFI' - name_maxsize = 140 - root_xml_tag = 'CstmrDrctDbtInitn' - elif pain_flavor == 'pain.008.001.04': - bic_xml_tag = 'BICFI' - name_maxsize = 140 - root_xml_tag = 'CstmrDrctDbtInitn' - else: - raise Warning( - _("Payment Type Code '%s' is not supported. The only " - "Payment Type Code supported for SEPA Direct Debit are " - "'pain.008.001.02', 'pain.008.001.03' and " - "'pain.008.001.04'.") % pain_flavor) - gen_args = { - 'bic_xml_tag': bic_xml_tag, - 'name_maxsize': name_maxsize, - 'convert_to_ascii': convert_to_ascii, - 'payment_method': 'DD', - 'file_prefix': 'sdd_', - 'pain_flavor': pain_flavor, - 'pain_xsd_file': - 'account_banking_sepa_direct_debit/data/%s.xsd' % pain_flavor, - } - pain_ns = { - 'xsi': 'http://www.w3.org/2001/XMLSchema-instance', - None: 'urn:iso:std:iso:20022:tech:xsd:%s' % pain_flavor, - } - xml_root = etree.Element('Document', nsmap=pain_ns) - pain_root = etree.SubElement(xml_root, root_xml_tag) - # A. Group header - group_header_1_0, nb_of_transactions_1_6, control_sum_1_7 = \ - self.generate_group_header_block(pain_root, gen_args) - transactions_count_1_6 = 0 - total_amount = 0.0 - amount_control_sum_1_7 = 0.0 - lines_per_group = {} - # key = (requested_date, priority, sequence type) - # value = list of lines as objects - # Iterate on payment orders - today = fields.Date.context_today(self) - for payment_order in self.payment_order_ids: - total_amount = total_amount + payment_order.total - # Iterate each payment lines - for line in payment_order.line_ids: - transactions_count_1_6 += 1 - priority = line.priority - if payment_order.date_prefered == 'due': - requested_date = line.ml_maturity_date or today - elif payment_order.date_prefered == 'fixed': - requested_date = payment_order.date_scheduled or today - else: - requested_date = today - if not line.mandate_id: - raise Warning( - _("Missing SEPA Direct Debit mandate on the payment " - "line with partner '%s' and Invoice ref '%s'.") - % (line.partner_id.name, - line.ml_inv_ref.number)) - scheme = line.mandate_id.scheme - if line.mandate_id.state != 'valid': - raise Warning( - _("The SEPA Direct Debit mandate with reference '%s' " - "for partner '%s' has expired.") - % (line.mandate_id.unique_mandate_reference, - line.mandate_id.partner_id.name)) - if line.mandate_id.type == 'oneoff': - seq_type = 'OOFF' - if line.mandate_id.last_debit_date: - raise Warning( - _("The mandate with reference '%s' for partner " - "'%s' has type set to 'One-Off' and it has a " - "last debit date set to '%s', so we can't use " - "it.") - % (line.mandate_id.unique_mandate_reference, - line.mandate_id.partner_id.name, - line.mandate_id.last_debit_date)) - elif line.mandate_id.type == 'recurrent': - seq_type_map = { - 'recurring': 'RCUR', - 'first': 'FRST', - 'final': 'FNAL', - } - seq_type_label = \ - line.mandate_id.recurrent_sequence_type - assert seq_type_label is not False - seq_type = seq_type_map[seq_type_label] - key = (requested_date, priority, seq_type, scheme) - if key in lines_per_group: - lines_per_group[key].append(line) - else: - lines_per_group[key] = [line] - # Write requested_exec_date on 'Payment date' of the pay line - if requested_date != line.date: - line.date = requested_date - - for (requested_date, priority, sequence_type, scheme), lines in \ - lines_per_group.items(): - # B. Payment info - payment_info_2_0, nb_of_transactions_2_4, control_sum_2_5 = \ - self.generate_start_payment_info_block( - pain_root, - "self.payment_order_ids[0].reference + '-' + " - "sequence_type + '-' + requested_date.replace('-', '') " - "+ '-' + priority", - priority, scheme, sequence_type, requested_date, { - 'self': self, - 'sequence_type': sequence_type, - 'priority': priority, - 'requested_date': requested_date, - }, gen_args) - - self.generate_party_block( - payment_info_2_0, 'Cdtr', 'B', - 'self.payment_order_ids[0].mode.bank_id.partner_id.' - 'name', - 'self.payment_order_ids[0].mode.bank_id.acc_number', - 'self.payment_order_ids[0].mode.bank_id.bank.bic or ' - 'self.payment_order_ids[0].mode.bank_id.bank_bic', - {'self': self}, gen_args) - charge_bearer_2_24 = etree.SubElement(payment_info_2_0, 'ChrgBr') - charge_bearer_2_24.text = self.charge_bearer - creditor_scheme_identification_2_27 = etree.SubElement( - payment_info_2_0, 'CdtrSchmeId') - self.generate_creditor_scheme_identification( - creditor_scheme_identification_2_27, - 'self.payment_order_ids[0].company_id.' - 'sepa_creditor_identifier', - 'SEPA Creditor Identifier', {'self': self}, 'SEPA', gen_args) - transactions_count_2_4 = 0 - amount_control_sum_2_5 = 0.0 - for line in lines: - transactions_count_2_4 += 1 - # C. Direct Debit Transaction Info - dd_transaction_info_2_28 = etree.SubElement( - payment_info_2_0, 'DrctDbtTxInf') - payment_identification_2_29 = etree.SubElement( - dd_transaction_info_2_28, 'PmtId') - end2end_identification_2_31 = etree.SubElement( - payment_identification_2_29, 'EndToEndId') - end2end_identification_2_31.text = self._prepare_field( - 'End to End Identification', 'line.name', - {'line': line}, 35, gen_args=gen_args) - currency_name = self._prepare_field( - 'Currency Code', 'line.currency.name', - {'line': line}, 3, gen_args=gen_args) - instructed_amount_2_44 = etree.SubElement( - dd_transaction_info_2_28, 'InstdAmt', Ccy=currency_name) - instructed_amount_2_44.text = '%.2f' % line.amount_currency - amount_control_sum_1_7 += line.amount_currency - amount_control_sum_2_5 += line.amount_currency - dd_transaction_2_46 = etree.SubElement( - dd_transaction_info_2_28, 'DrctDbtTx') - mandate_related_info_2_47 = etree.SubElement( - dd_transaction_2_46, 'MndtRltdInf') - mandate_identification_2_48 = etree.SubElement( - mandate_related_info_2_47, 'MndtId') - mandate_identification_2_48.text = self._prepare_field( - 'Unique Mandate Reference', - 'line.mandate_id.unique_mandate_reference', - {'line': line}, 35, gen_args=gen_args) - mandate_signature_date_2_49 = etree.SubElement( - mandate_related_info_2_47, 'DtOfSgntr') - mandate_signature_date_2_49.text = self._prepare_field( - 'Mandate Signature Date', - 'line.mandate_id.signature_date', - {'line': line}, 10, gen_args=gen_args) - if sequence_type == 'FRST' and ( - line.mandate_id.last_debit_date or - not line.mandate_id.sepa_migrated): - previous_bank = self._get_previous_bank(line) - if previous_bank or not line.mandate_id.sepa_migrated: - amendment_indicator_2_50 = etree.SubElement( - mandate_related_info_2_47, 'AmdmntInd') - amendment_indicator_2_50.text = 'true' - amendment_info_details_2_51 = etree.SubElement( - mandate_related_info_2_47, 'AmdmntInfDtls') - if previous_bank: - if (previous_bank.bank.bic or - previous_bank.bank_bic) == \ - (line.bank_id.bank.bic or - line.bank_id.bank_bic): - ori_debtor_account_2_57 = etree.SubElement( - amendment_info_details_2_51, 'OrgnlDbtrAcct') - ori_debtor_account_id = etree.SubElement( - ori_debtor_account_2_57, 'Id') - ori_debtor_account_iban = etree.SubElement( - ori_debtor_account_id, 'IBAN') - ori_debtor_account_iban.text = self._validate_iban( - self._prepare_field( - 'Original Debtor Account', - 'previous_bank.acc_number', - {'previous_bank': previous_bank}, - gen_args=gen_args)) - else: - ori_debtor_agent_2_58 = etree.SubElement( - amendment_info_details_2_51, 'OrgnlDbtrAgt') - ori_debtor_agent_institution = etree.SubElement( - ori_debtor_agent_2_58, 'FinInstnId') - ori_debtor_agent_bic = etree.SubElement( - ori_debtor_agent_institution, bic_xml_tag) - ori_debtor_agent_bic.text = self._prepare_field( - 'Original Debtor Agent', - 'previous_bank.bank.bic or ' - 'previous_bank.bank_bic', - {'previous_bank': previous_bank}, - gen_args=gen_args) - ori_debtor_agent_other = etree.SubElement( - ori_debtor_agent_institution, 'Othr') - ori_debtor_agent_other_id = etree.SubElement( - ori_debtor_agent_other, 'Id') - ori_debtor_agent_other_id.text = 'SMNDA' - # SMNDA = Same Mandate New Debtor Agent - elif not line.mandate_id.sepa_migrated: - ori_mandate_identification_2_52 = etree.SubElement( - amendment_info_details_2_51, 'OrgnlMndtId') - ori_mandate_identification_2_52.text = \ - self._prepare_field( - 'Original Mandate Identification', - 'line.mandate_id.' - 'original_mandate_identification', - {'line': line}, - gen_args=gen_args) - ori_creditor_scheme_id_2_53 = etree.SubElement( - amendment_info_details_2_51, 'OrgnlCdtrSchmeId') - self.generate_creditor_scheme_identification( - ori_creditor_scheme_id_2_53, - 'self.payment_order_ids[0].company_id.' - 'original_creditor_identifier', - 'Original Creditor Identifier', - {'self': self}, 'SEPA', gen_args) - - self.generate_party_block( - dd_transaction_info_2_28, 'Dbtr', 'C', - 'line.partner_id.name', - 'line.bank_id.acc_number', - 'line.bank_id.bank.bic or ' - 'line.bank_id.bank_bic', - {'line': line}, gen_args) - - self.generate_remittance_info_block( - dd_transaction_info_2_28, line, gen_args) - - nb_of_transactions_2_4.text = unicode(transactions_count_2_4) - control_sum_2_5.text = '%.2f' % amount_control_sum_2_5 - nb_of_transactions_1_6.text = unicode(transactions_count_1_6) - control_sum_1_7.text = '%.2f' % amount_control_sum_1_7 - - return self.finalize_sepa_file_creation( - xml_root, total_amount, transactions_count_1_6, gen_args) - - @api.multi - def save_sepa(self): - """Save the SEPA Direct Debit file: mark all payments in the file - as 'sent'. Write 'last debit date' on mandate and set oneoff - mandate to expired. - """ - abmo = self.env['account.banking.mandate'] - for order in self.payment_order_ids: - workflow.trg_validate( - self._uid, 'payment.order', order.id, 'done', self._cr) - self.env['ir.attachment'].create({ - 'res_model': 'payment.order', - 'res_id': order.id, - 'name': self.filename, - 'datas': self.file, - }) - to_expire_mandates = abmo.browse([]) - first_mandates = abmo.browse([]) - all_mandates = abmo.browse([]) - for line in order.line_ids: - if line.mandate_id in all_mandates: - continue - all_mandates += line.mandate_id - if line.mandate_id.type == 'oneoff': - to_expire_mandates += line.mandate_id - elif line.mandate_id.type == 'recurrent': - seq_type = line.mandate_id.recurrent_sequence_type - if seq_type == 'final': - to_expire_mandates += line.mandate_id - elif seq_type == 'first': - first_mandates += line.mandate_id - all_mandates.write( - {'last_debit_date': fields.Date.context_today(self)}) - to_expire_mandates.write({'state': 'expired'}) - first_mandates.write({ - 'recurrent_sequence_type': 'recurring', - 'sepa_migrated': True, - }) - return True diff --git a/account_banking_sepa_direct_debit/wizard/export_sdd_view.xml b/account_banking_sepa_direct_debit/wizard/export_sdd_view.xml deleted file mode 100644 index 95117e270..000000000 --- a/account_banking_sepa_direct_debit/wizard/export_sdd_view.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - banking.export.sdd.wizard.view - banking.export.sdd.wizard - -
- - - - - - - - - - - -
-
- -
-
- -
-
diff --git a/account_banking_tests/tests/test_payment_roundtrip.py b/account_banking_tests/tests/test_payment_roundtrip.py index 2212f6319..d93f314dd 100644 --- a/account_banking_tests/tests/test_payment_roundtrip.py +++ b/account_banking_tests/tests/test_payment_roundtrip.py @@ -253,7 +253,10 @@ class TestPaymentRoundtrip(TransactionCase): 'mode': self.payment_mode_id, 'date_prefered': 'now', }) - context = {'active_id': self.payment_order_id} + context = { + 'active_id': self.payment_order_id, + 'active_model': 'payment.order', + } entries = reg('account.move.line').search( cr, uid, [ ('company_id', '=', self.company_id), @@ -398,7 +401,7 @@ class TestPaymentRoundtrip(TransactionCase): payment_order = reg('payment.order').browse( cr, uid, self.payment_order_id) assert payment_order.line_ids, 'Payment order has no payment lines' - for line in payment_order.line_ids: + for line in payment_order.bank_line_ids: assert line.transit_move_line_id, \ 'Payment order has no transfer move line' assert line.transit_move_line_id.reconcile_id, \ @@ -413,7 +416,7 @@ class TestPaymentRoundtrip(TransactionCase): payment_order = reg('payment.order').browse( cr, uid, self.payment_order_id) assert payment_order.line_ids, 'Payment order has no payment lines' - for line in payment_order.line_ids: + for line in payment_order.bank_line_ids: assert line.transfer_move_line_id, \ 'Payment order has no transfer move line' assert line.transfer_move_line_id.reconcile_id, \ diff --git a/account_direct_debit/README.rst b/account_direct_debit/README.rst deleted file mode 100644 index 1d82305be..000000000 --- a/account_direct_debit/README.rst +++ /dev/null @@ -1,80 +0,0 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :alt: License: AGPL-3 - -Direct Debit -============ - -This module adds support for direct debit orders, analogous to payment orders. -A new entry in the Accounting/Payment menu allow you to create a direct debit -order that helps you to select any customer invoices for you to collect. - -This module explicitely implements direct debit orders as applicable -in the Netherlands. Debit orders are advanced in total by the bank. -Amounts that cannot be debited or are canceled by account owners are -credited afterwards. Such a creditation is called a storno. This style of -direct debit order may not apply to your country. - -Installation -============ - -This module depends on : -* account_banking_payment_export - -This module is part of the OCA/bank-payment suite. - -Configuration -============= - -Please refer to module "Account Banking SEPA Direct Debit" - -Usage -===== - -Please refer to module "Account Banking SEPA Direct Debit" - - -For further information, please visit: - - * https://www.odoo.com/forum/help-1 - -Known issues / Roadmap -====================== - - * No known issues - -Bug Tracker -=========== - -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. - -Credits -======= - -Contributors ------------- - -* Stefan Rijnhart -* Pedro M. Baeza -* Alexis de Lattre -* Danimar Ribeiro -* Stéphane Bidoul -* Alexandre Fayolle -* Sandy Carter -* Holger Brunn - - -Maintainer ----------- - -.. image:: http://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: http://odoo-community.org - -This module is maintained by the OCA. - -OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. - -To contribute to this module, please visit http://odoo-community.org. diff --git a/account_direct_debit/__openerp__.py b/account_direct_debit/__openerp__.py deleted file mode 100644 index f5410b048..000000000 --- a/account_direct_debit/__openerp__.py +++ /dev/null @@ -1,41 +0,0 @@ -############################################################################## -# -# Copyright (C) 2011 - 2013 Therp BV (). -# Copyright (C) 2011 Smile (). -# All Rights Reserved -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published -# by the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## -{ - 'name': 'Direct Debit', - 'version': '8.0.2.0.0', - 'license': 'AGPL-3', - 'author': 'Therp BV, ' - 'Smile, ' - 'Odoo Community Association (OCA)', - 'website': 'https://github.com/OCA/bank-payment', - 'category': 'Banking addons', - 'depends': ['account_banking_payment_export'], - 'data': [ - 'views/account_payment.xml', - 'views/account_invoice.xml', - 'views/payment_mode.xml', - 'views/payment_mode_type.xml', - 'workflow/account_invoice.xml', - 'data/account_payment_term.xml', - 'data/payment_mode_type.xml' - ], - 'installable': False, -} diff --git a/account_direct_debit/data/account_payment_term.xml b/account_direct_debit/data/account_payment_term.xml deleted file mode 100644 index 61436c117..000000000 --- a/account_direct_debit/data/account_payment_term.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - Direct debit - Direct debit in 14 days - - - balance - - - - - - diff --git a/account_direct_debit/data/payment_mode_type.xml b/account_direct_debit/data/payment_mode_type.xml deleted file mode 100644 index bbfd350ae..000000000 --- a/account_direct_debit/data/payment_mode_type.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - Manual Direct Debit - MANDDEB - - - debit - - - diff --git a/account_direct_debit/i18n/account_direct_debit.pot b/account_direct_debit/i18n/account_direct_debit.pot deleted file mode 100644 index 191f17bec..000000000 --- a/account_direct_debit/i18n/account_direct_debit.pot +++ /dev/null @@ -1,127 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_direct_debit -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-10-31 23:05+0000\n" -"PO-Revision-Date: 2014-10-31 23:05+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: account_direct_debit -#: model:ir.actions.act_window,help:account_direct_debit.action_debit_order_tree -msgid "A debit order is a debit request from your company to collect customer invoices. Here you can register all debit orders that should be done, keep track of all debit orders and mention the invoice reference and the partner the withdrawal should be done for." -msgstr "" - -#. module: account_direct_debit -#: field:account.move.line,amount_to_receive:0 -msgid "Amount to receive" -msgstr "" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/payment_line.py:133 -#, python-format -msgid "Can not reconcile" -msgstr "" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/payment_line.py:134 -#, python-format -msgid "Cancelation of payment line '%s' has already been processed" -msgstr "" - -#. module: account_direct_debit -#: view:account.invoice:account_direct_debit.invoice_form -msgid "Debit Denied" -msgstr "" - -#. module: account_direct_debit -#: view:account.invoice:account_direct_debit.view_account_invoice_filter -msgid "Debit denied" -msgstr "" - -#. module: account_direct_debit -#: model:ir.actions.act_window,name:account_direct_debit.action_debit_order_tree -#: model:ir.ui.menu,name:account_direct_debit.menu_action_debit_order_form -msgid "Direct Debit Orders" -msgstr "" - -#. module: account_direct_debit -#: model:account.payment.term,name:account_direct_debit.payment_term_direct_debit -msgid "Direct debit" -msgstr "" - -#. module: account_direct_debit -#: model:account.payment.term,note:account_direct_debit.payment_term_direct_debit -msgid "Direct debit in 14 days" -msgstr "" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/account_invoice.py:149 -#, python-format -msgid "Error !" -msgstr "" - -#. module: account_direct_debit -#: help:payment.line,storno:0 -msgid "If this is true, the debit order has been canceled by the bank or by the customer" -msgstr "" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_account_invoice -msgid "Invoice" -msgstr "" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/account_invoice.py:154 -#, python-format -msgid "Invoice '%s': direct debit is denied." -msgstr "" - -#. module: account_direct_debit -#: view:payment.order:account_direct_debit.view_payment_order_form -msgid "Invoices" -msgstr "" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_account_move_line -msgid "Journal Items" -msgstr "" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_payment_line -msgid "Payment Line" -msgstr "" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_payment_order -msgid "Payment Order" -msgstr "" - -#. module: account_direct_debit -#: view:payment.order:account_direct_debit.view_payment_order_form -msgid "Select invoices to collect" -msgstr "" - -#. module: account_direct_debit -#: view:account.invoice:account_direct_debit.view_account_invoice_filter -msgid "Show only invoices with state Debit denied" -msgstr "" - -#. module: account_direct_debit -#: field:payment.line,storno:0 -msgid "Storno" -msgstr "" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/account_invoice.py:150 -#, python-format -msgid "You cannot set invoice '%s' to state 'debit denied', as it is still reconciled." -msgstr "" diff --git a/account_direct_debit/i18n/es.po b/account_direct_debit/i18n/es.po deleted file mode 100644 index d5aacd581..000000000 --- a/account_direct_debit/i18n/es.po +++ /dev/null @@ -1,127 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_direct_debit -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-10-31 23:05+0000\n" -"PO-Revision-Date: 2014-10-31 23:05+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: account_direct_debit -#: model:ir.actions.act_window,help:account_direct_debit.action_debit_order_tree -msgid "A debit order is a debit request from your company to collect customer invoices. Here you can register all debit orders that should be done, keep track of all debit orders and mention the invoice reference and the partner the withdrawal should be done for." -msgstr "Una orden de cobro es una petición de dinero de su compañía para saldar las facturas de cliente. Aquí puede registrar todas las órdenes de cobro que se deban realizar, seguirles el rastro, y apuntar la referencia de factura y de la empresa para la que se debe hacer el cargo." - -#. module: account_direct_debit -#: field:account.move.line,amount_to_receive:0 -msgid "Amount to receive" -msgstr "Importe a cobrar" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/payment_line.py:133 -#, python-format -msgid "Can not reconcile" -msgstr "No puede ser conciliada" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/payment_line.py:134 -#, python-format -msgid "Cancelation of payment line '%s' has already been processed" -msgstr "" - -#. module: account_direct_debit -#: view:account.invoice:account_direct_debit.invoice_form -msgid "Debit Denied" -msgstr "Cobro denegado" - -#. module: account_direct_debit -#: view:account.invoice:account_direct_debit.view_account_invoice_filter -msgid "Debit denied" -msgstr "Cobro denegado" - -#. module: account_direct_debit -#: model:ir.actions.act_window,name:account_direct_debit.action_debit_order_tree -#: model:ir.ui.menu,name:account_direct_debit.menu_action_debit_order_form -msgid "Direct Debit Orders" -msgstr "Órdenes de cobro" - -#. module: account_direct_debit -#: model:account.payment.term,name:account_direct_debit.payment_term_direct_debit -msgid "Direct debit" -msgstr "Cobro" - -#. module: account_direct_debit -#: model:account.payment.term,note:account_direct_debit.payment_term_direct_debit -msgid "Direct debit in 14 days" -msgstr "Adeudo directo en 14 días" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/account_invoice.py:149 -#, python-format -msgid "Error !" -msgstr "Error" - -#. module: account_direct_debit -#: help:payment.line,storno:0 -msgid "If this is true, the debit order has been canceled by the bank or by the customer" -msgstr "Si la casilla está marcada, la orden de cobro ha sido cancelada por el banco o por el cliente" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_account_invoice -msgid "Invoice" -msgstr "Factura" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/account_invoice.py:154 -#, python-format -msgid "Invoice '%s': direct debit is denied." -msgstr "Factura '%s': adeudo directo denegado" - -#. module: account_direct_debit -#: view:payment.order:account_direct_debit.view_payment_order_form -msgid "Invoices" -msgstr "Facturas" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_account_move_line -msgid "Journal Items" -msgstr "Asientos contables" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_payment_line -msgid "Payment Line" -msgstr "Línea de pago" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_payment_order -msgid "Payment Order" -msgstr "Orden de pago" - -#. module: account_direct_debit -#: view:payment.order:account_direct_debit.view_payment_order_form -msgid "Select invoices to collect" -msgstr "Seleccione facturas" - -#. module: account_direct_debit -#: view:account.invoice:account_direct_debit.view_account_invoice_filter -msgid "Show only invoices with state Debit denied" -msgstr "Mostrar sólo facturas con el cobro denegado" - -#. module: account_direct_debit -#: field:payment.line,storno:0 -msgid "Storno" -msgstr "Storno" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/account_invoice.py:150 -#, python-format -msgid "You cannot set invoice '%s' to state 'debit denied', as it is still reconciled." -msgstr "No puede establecer la factura '%s' al estado 'cobro denegado', ya que ya se encuentra conciliada." diff --git a/account_direct_debit/i18n/nl.po b/account_direct_debit/i18n/nl.po deleted file mode 100644 index 659a5e48e..000000000 --- a/account_direct_debit/i18n/nl.po +++ /dev/null @@ -1,155 +0,0 @@ -# Dutch translation for banking-addons -# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 -# This file is distributed under the same license as the banking-addons package. -# FIRST AUTHOR , 2013. -# -msgid "" -msgstr "" -"Project-Id-Version: banking-addons\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-10-25 16:01+0000\n" -"PO-Revision-Date: 2013-12-03 11:31+0000\n" -"Last-Translator: Erwin van der Ploeg (BAS Solutions) \n" -"Language-Team: Dutch \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2014-05-31 06:02+0000\n" -"X-Generator: Launchpad (build 17031)\n" - -#. module: account_direct_debit -#: model:account.payment.term,note:account_direct_debit.payment_term_direct_debit -msgid "Direct debit in 14 days" -msgstr "Incasso opdracht in 14 dagen" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_payment_order -msgid "Payment Order" -msgstr "Betalingsopdracht" - -#. module: account_direct_debit -#: view:payment.order:0 -msgid "Select Invoices to Collect" -msgstr "Selecteer openstaande posten ter incasso" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_payment_line -msgid "Payment Line" -msgstr "Betaalregel" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/model/payment_line.py:140 -#, python-format -msgid "Can not reconcile" -msgstr "Kan niet afletteren" - -#. module: account_direct_debit -#: view:account.invoice:0 -msgid "Debit Denied" -msgstr "Incasso geweigerd" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/model/account_invoice.py:147 -#, python-format -msgid "Error !" -msgstr "Fout !" - -#. module: account_direct_debit -#: view:account.invoice:0 -msgid "Show only invoices with state Debit denied" -msgstr "Laat alleen facturen zien waarvan de incasso is geweigerd" - -#. module: account_direct_debit -#: view:payment.order:0 -msgid "" -"{'invisible':['|',('state','!=','draft'),('payment_order_type', '!=', " -"'payment')]}" -msgstr "" -"{'invisible':['|',('state','!=','draft'),('payment_order_type', '!=', " -"'payment')]}" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_account_move_line -msgid "Journal Items" -msgstr "Boekingen" - -#. module: account_direct_debit -#: view:account.invoice:0 -msgid "Debit denied" -msgstr "Incasso geweigerd" - -#. module: account_direct_debit -#: model:ir.actions.act_window,name:account_direct_debit.action_debit_order_tree -#: model:ir.ui.menu,name:account_direct_debit.menu_action_debit_order_form -msgid "Direct Debit Orders" -msgstr "Incasso opdracht" - -#. module: account_direct_debit -#: model:account.payment.term,name:account_direct_debit.payment_term_direct_debit -msgid "Direct debit" -msgstr "Incasso opdracht" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/model/account_invoice.py:148 -#, python-format -msgid "" -"You cannot set invoice '%s' to state 'debit denied', as it is still " -"reconciled." -msgstr "" -"Het is niet mogelijk om factuur '%s' in status 'Incasso geweigerd' te " -"zetten, omdat deze nog is afgeletterd." - -#. module: account_direct_debit -#: code:addons/account_direct_debit/model/account_invoice.py:152 -#, python-format -msgid "Invoice '%s': direct debit is denied." -msgstr "Factuur '%s': Incasso geweigerd" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/model/payment_line.py:141 -#, python-format -msgid "Cancelation of payment line '%s' has already been processed" -msgstr "Het annuleren van de betaalopdrachtregel '%s' is al verwerkt" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_payment_order_create -msgid "payment.order.create" -msgstr "payment.order.create" - -#. module: account_direct_debit -#: field:payment.line,storno:0 -msgid "Storno" -msgstr "Storno" - -#. module: account_direct_debit -#: help:payment.line,storno:0 -msgid "" -"If this is true, the debit order has been canceled by the bank or by the " -"customer" -msgstr "" -"Indien aangevinkt is de incasso opdracht al geannuleerd dor de bank of de " -"klant." - -#. module: account_direct_debit -#: model:ir.actions.act_window,help:account_direct_debit.action_debit_order_tree -msgid "" -"A debit order is a debit request from your company to collect customer " -"invoices. Here you can register all debit orders that should be done, keep " -"track of all debit orders and mention the invoice reference and the partner " -"the withdrawal should be done for." -msgstr "" -"Een incasso opdracht is een opdracht van uw bedrijf aan uw klant voor het " -"incasseren van openstaande posten. Hier kunt u alle incasso opdrachten " -"invoeren die moeten worden uitgevoerd en overzicht houden op alle incasso " -"opdrachten. Tevens voert u hier de factuurreferentie en klant in waar de " -"afschrijving moet plaatsvinden." - -#. module: account_direct_debit -#: field:account.move.line,amount_to_receive:0 -msgid "Amount to receive" -msgstr "Bedrag te ontvangen" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_account_invoice -msgid "Invoice" -msgstr "Factuur" diff --git a/account_direct_debit/i18n/pt_BR.po b/account_direct_debit/i18n/pt_BR.po deleted file mode 100644 index acffc125e..000000000 --- a/account_direct_debit/i18n/pt_BR.po +++ /dev/null @@ -1,127 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * account_direct_debit -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-10-31 23:05+0000\n" -"PO-Revision-Date: 2014-10-31 23:05+0000\n" -"Last-Translator: Danimar Ribeiro \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: account_direct_debit -#: model:ir.actions.act_window,help:account_direct_debit.action_debit_order_tree -msgid "A debit order is a debit request from your company to collect customer invoices. Here you can register all debit orders that should be done, keep track of all debit orders and mention the invoice reference and the partner the withdrawal should be done for." -msgstr "A ordem de débito é um pedido de débito de sua empresa para coletar faturas de clientes. Aqui você pode registrar todas as ordens de débito que devem ser feitas, manter o controle de todas as ordens de débito e mencionar a referência da fatura e o parceiro que a retirada deve ser feita." - -#. module: account_direct_debit -#: field:account.move.line,amount_to_receive:0 -msgid "Amount to receive" -msgstr "Total a receber" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/payment_line.py:133 -#, python-format -msgid "Can not reconcile" -msgstr "Não pode ser reconciliado" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/payment_line.py:134 -#, python-format -msgid "Cancelation of payment line '%s' has already been processed" -msgstr "Cancelamento da linha de pagamento '%s' já foi processado" - -#. module: account_direct_debit -#: view:account.invoice:account_direct_debit.invoice_form -msgid "Debit Denied" -msgstr "Débito negado" - -#. module: account_direct_debit -#: view:account.invoice:account_direct_debit.view_account_invoice_filter -msgid "Debit denied" -msgstr "Débito negado" - -#. module: account_direct_debit -#: model:ir.actions.act_window,name:account_direct_debit.action_debit_order_tree -#: model:ir.ui.menu,name:account_direct_debit.menu_action_debit_order_form -msgid "Direct Debit Orders" -msgstr "Débito direto autorizado" - -#. module: account_direct_debit -#: model:account.payment.term,name:account_direct_debit.payment_term_direct_debit -msgid "Direct debit" -msgstr "Débito direto" - -#. module: account_direct_debit -#: model:account.payment.term,note:account_direct_debit.payment_term_direct_debit -msgid "Direct debit in 14 days" -msgstr "Débito direto em 14 dias" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/account_invoice.py:149 -#, python-format -msgid "Error !" -msgstr "Erro !" - -#. module: account_direct_debit -#: help:payment.line,storno:0 -msgid "If this is true, the debit order has been canceled by the bank or by the customer" -msgstr "Se estiver marcado, a ordem de débito foi cancelada pelo banco ou pelo cliente" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_account_invoice -msgid "Invoice" -msgstr "Fatura" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/account_invoice.py:154 -#, python-format -msgid "Invoice '%s': direct debit is denied." -msgstr "Fatura '%s': débito direto negado." - -#. module: account_direct_debit -#: view:payment.order:account_direct_debit.view_payment_order_form -msgid "Invoices" -msgstr "Faturas" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_account_move_line -msgid "Journal Items" -msgstr "Itens de diário" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_payment_line -msgid "Payment Line" -msgstr "Linha de pagamento" - -#. module: account_direct_debit -#: model:ir.model,name:account_direct_debit.model_payment_order -msgid "Payment Order" -msgstr "Ordem de pagamento" - -#. module: account_direct_debit -#: view:payment.order:account_direct_debit.view_payment_order_form -msgid "Select invoices to collect" -msgstr "Selecione as faturas" - -#. module: account_direct_debit -#: view:account.invoice:account_direct_debit.view_account_invoice_filter -msgid "Show only invoices with state Debit denied" -msgstr "Mostrar apenas faturas com o Débito negado" - -#. module: account_direct_debit -#: field:payment.line,storno:0 -msgid "Storno" -msgstr "Estorno" - -#. module: account_direct_debit -#: code:addons/account_direct_debit/models/account_invoice.py:150 -#, python-format -msgid "You cannot set invoice '%s' to state 'debit denied', as it is still reconciled." -msgstr "Você não pode setar a fatura '%s' para o estado 'Negado' após ela estar conciliada." diff --git a/account_direct_debit/models/__init__.py b/account_direct_debit/models/__init__.py deleted file mode 100644 index ffb948151..000000000 --- a/account_direct_debit/models/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from . import account_payment -from . import payment_line -from . import account_move_line -from . import account_invoice diff --git a/account_direct_debit/models/account_invoice.py b/account_direct_debit/models/account_invoice.py deleted file mode 100644 index 66c30ac53..000000000 --- a/account_direct_debit/models/account_invoice.py +++ /dev/null @@ -1,165 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2011 - 2013 Therp BV (). -# -# All other contributions are (C) by their respective contributors -# -# All Rights Reserved -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -""" -This module adds support for Direct debit orders as applicable -in the Netherlands. Debit orders are advanced in total by the bank. -Amounts that cannot be debited or are canceled by account owners are -credited afterwards. Such a creditation is called a storno. - -Invoice workflow: - -1 the sale leads to - 1300 Debtors 100 - 8000 Sales 100 - -Balance: - Debtors 2000 | - Sales | 2000 - -2 an external booking takes place - 1100 Bank 100 - 1300 Debtors 100 - This booking is reconciled with [1] - The invoice gets set to state 'paid', and 'reconciled' = True - -Balance: - Debtors 1900 | - Bank 100 | - Sales | 2000 - -This module implements the following diversion: - -2a the invoice is included in a direct debit order. When the order is - confirmed, a move is created per invoice: - - 2000 Transfer account 100 | - 1300 Debtors | 100 - Reconciliation takes place between 1 and 2a. - The invoice gets set to state 'paid', and 'reconciled' = True - -Balance: - Debtors 0 | - Transfer account 2000 | - Bank 0 | - Sales | 2000 - -3a the direct debit order is booked on the bank account - -Balance: - 1100 Bank 2000 | - 2000 Transfer account | 2000 - Reconciliation takes place between 3a and 2a - -Balance: - Debtors 0 | - Transfer account 0 | - Bank 2000 | - Sales | 2000 - -4 a storno from invoice [1] triggers a new booking on the bank account - 1300 Debtors 100 | - 1100 Bank | 100 - -Balance: - Debtors 100 | - Transfer account 0 | - Bank 1900 | - Sales | 2000 - - The reconciliation of 2a is undone. The booking of 2a is reconciled - with the booking of 4 instead. - The payment line attribute 'storno' is set to True and the invoice - state is no longer 'paid'. - -Two cases need to be distinguisted: - 1) If the storno is a manual storno from the partner, the invoice is set to - state 'debit_denied', with 'reconciled' = False - This module implements this option by allowing the bank module to call - - netsvc.LocalService("workflow").trg_validate( - uid, 'account.invoice', ids, 'debit_denied', cr) - - 2) If the storno is an error generated by the bank (assumingly non-fatal), - the invoice is reopened for the next debit run. This is a call to - existing - - netsvc.LocalService("workflow").trg_validate( - uid, 'account.invoice', ids, 'open_test', cr) - - Should also be adding a log entry on the invoice for tracing purposes - - self._log_event(cr, uid, ids, -1.0, 'Debit denied') - - If not for that funny comment - "#TODO: implement messages system" in account/invoice.py - - Repeating non-fatal fatal errors need to be dealt with manually by checking - open invoices with a matured invoice- or due date. -""" - -from openerp.osv import orm -from openerp.tools.translate import _ - - -class AccountInvoice(orm.Model): - _inherit = "account.invoice" - - def _register_hook(self, cr): - """ - Adding a state to the hardcoded state list of the inherited - model. The alternative is duplicating the field definition - in columns but only one module can do that! - - Maybe apply a similar trick when overriding the buttons' 'states' - attributes in the form view, manipulating the xml in fields_view_get(). - """ - self._columns['state'].selection.append( - ('debit_denied', 'Debit denied')) - return super(AccountInvoice, self)._register_hook(cr) - - def action_debit_denied(self, cr, uid, ids, context=None): - for invoice_id in ids: - if self.test_paid(cr, uid, [invoice_id], context): - number = self.read( - cr, uid, invoice_id, ['number'], context=context)['number'] - raise orm.except_orm( - _('Error !'), - _("You cannot set invoice '%s' to state 'debit " - "denied', as it is still reconciled.") % number) - self.write(cr, uid, ids, {'state': 'debit_denied'}, context=context) - for inv_id, name in self.name_get(cr, uid, ids, context=context): - message = _("Invoice '%s': direct debit is denied.") % name - self.log(cr, uid, inv_id, message) - return True - - def test_undo_debit_denied(self, cr, uid, ids, context=None): - """ - Called from the workflow. Used to unset paid state on - invoices that were paid with bank transfers which are being cancelled - """ - for invoice in self.read(cr, uid, ids, ['reconciled'], context): - if not invoice['reconciled']: - return False - return True diff --git a/account_direct_debit/models/account_move_line.py b/account_direct_debit/models/account_move_line.py deleted file mode 100644 index 2f10ec351..000000000 --- a/account_direct_debit/models/account_move_line.py +++ /dev/null @@ -1,121 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# This module (C) 2011 - 2013 Therp BV (). -# (C) 2011 Smile Benelux (). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from operator import itemgetter -from openerp.osv import fields, orm - - -class AccountMoveLine(orm.Model): - _inherit = "account.move.line" - - def _amount_to_receive(self, cr, uid, ids, name, arg=None, context=None): - """Return the amount still to receive regarding all the debit orders - (excepting canceled orders). - This is the reverse from amount_to_pay() in - account_payment/account_move_line.py - """ - if not ids: - return {} - cr.execute("""SELECT ml.id, - CASE WHEN ml.amount_currency > 0 - THEN ml.amount_currency - ELSE ml.debit - END - - (SELECT coalesce(sum(amount_currency),0) - FROM payment_line pl - INNER JOIN payment_order po - ON (pl.order_id = po.id) - WHERE move_line_id = ml.id - AND pl.storno is false - AND po.state != 'cancel') AS amount - FROM account_move_line ml - WHERE id IN %s""", (tuple(ids),)) - r = dict(cr.fetchall()) - return r - - def _to_receive_search(self, cr, uid, obj, name, args, context=None): - """Reverse of account_payment/account_move_line.py:_to_pay_search(). - """ - if not args: - return [] - line_obj = self.pool.get('account.move.line') - search_context = dict(context or {}, all_fiscalyear=True) - query = line_obj._query_get(cr, uid, context=search_context) - where = ' and '.join(map(lambda x: '''(SELECT - CASE WHEN l.amount_currency > 0 - THEN l.amount_currency - ELSE l.debit - END - coalesce(sum(pl.amount_currency), 0) - FROM payment_line pl - INNER JOIN payment_order po ON (pl.order_id = po.id) - WHERE move_line_id = l.id - AND pl.storno is false - AND po.state != 'cancel' - ) %(operator)s %%s ''' % {'operator': x[1]}, args)) - sql_args = tuple(map(itemgetter(2), args)) - - cr.execute(('''SELECT id - FROM account_move_line l - WHERE account_id IN (select id - FROM account_account - WHERE type=%s AND active) - AND reconcile_id IS null - AND debit > 0 - AND ''' + where + ' and ' + query), ('receivable',) + sql_args) - res = cr.fetchall() - if not res: - return [('id', '=', '0')] - return [('id', 'in', map(lambda x:x[0], res))] - - def line2bank(self, cr, uid, ids, payment_type=None, context=None): - """I have to inherit this function for direct debits to fix the - following issue : if the customer invoice has a value for - 'partner_bank_id', then it will take this partner_bank_id - in the payment line... but, on a customer invoice, - the partner_bank_id is the bank account of the company, - not the bank account of the customer ! - """ - pay_mode_obj = self.pool['payment.mode'] - if payment_type: - pay_mode = pay_mode_obj.browse( - cr, uid, payment_type, context=context) - if pay_mode.type.payment_order_type == 'debit': - line2bank = {} - bank_type = pay_mode_obj.suitable_bank_types( - cr, uid, pay_mode.id, context=context) - for line in self.browse(cr, uid, ids, context=context): - line2bank[line.id] = False - if line.partner_id: - for bank in line.partner_id.bank_ids: - if bank.state in bank_type: - line2bank[line.id] = bank.id - break - return line2bank - return super(AccountMoveLine, self).line2bank( - cr, uid, ids, payment_type=pay_mode.id, context=context) - - _columns = { - 'amount_to_receive': fields.function( - _amount_to_receive, method=True, - type='float', string='Amount to receive', - fnct_search=_to_receive_search), - } diff --git a/account_direct_debit/models/account_payment.py b/account_direct_debit/models/account_payment.py deleted file mode 100644 index 702477107..000000000 --- a/account_direct_debit/models/account_payment.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -from openerp.osv import orm - - -class PaymentOrder(orm.Model): - _inherit = 'payment.order' - - def test_undo_done(self, cr, uid, ids, context=None): - """Called from the workflow. Used to unset done state on - payment orders that were reconciled with bank transfers - which are being cancelled - """ - for order in self.browse(cr, uid, ids, context=context): - if order.payment_order_type == 'debit': - for line in order.line_ids: - if line.storno: - return False - return super(PaymentOrder, self).test_undo_done( - cr, uid, ids, context=context) diff --git a/account_direct_debit/models/payment_line.py b/account_direct_debit/models/payment_line.py deleted file mode 100644 index 0da003002..000000000 --- a/account_direct_debit/models/payment_line.py +++ /dev/null @@ -1,131 +0,0 @@ -# -*- coding: utf-8 -*- -from openerp import api, exceptions, models, fields, _, workflow - - -class PaymentLine(models.Model): - _inherit = 'payment.line' - - @api.multi - def debit_storno(self, amount, currency, storno_retry=True): - """The processing of a storno is triggered by a debit - transfer on one of the company's bank accounts. - This method offers to re-reconcile the original debit - payment. For this purpose, we have registered that - payment move on the payment line. - - Return the (now incomplete) reconcile id. The caller MUST - re-reconcile this reconcile with the bank transfer and - re-open the associated invoice. - - :param payment_line_id: the single payment line id - :param amount: the (signed) amount debited from the bank account - :param currency: the bank account's currency *browse object* - :param boolean storno_retry: when True, attempt to reopen the invoice, - set the invoice to 'Debit denied' otherwise. - :return: an incomplete reconcile for the caller to fill - :rtype: database id of an account.move.reconcile resource. - """ - self.ensure_one() - reconcile_obj = self.env['account.move.reconcile'] - line = self - reconcile = reconcile_obj.browse([]) - if (line.transit_move_line_id and not line.storno and - self.env['res.currency'].is_zero( - currency, ( - (line.transit_move_line_id.credit or 0.0) - - (line.transit_move_line_id.debit or 0.0) + amount))): - # Two different cases, full and partial - # Both cases differ subtly in the procedure to follow - # Needs refractoring, but why is this not in the OpenERP API? - # Actually, given the nature of a direct debit order and storno, - # we should not need to take partial into account on the side of - # the transit_move_line. - if line.transit_move_line_id.reconcile_partial_id: - reconcile_partial = \ - line.transit_move_line_id.reconcile_partial_id - reconcile = line.transit_move_line_id.reconcile_id - if len(reconcile.line_partial_ids) == 2: - # reuse the simple reconcile for the storno transfer - reconcile_partial.write({ - 'line_id': [(6, 0, line.transit_move_line_id.id)], - 'line_partial_ids': [(6, 0, [])] - }) - else: - # split up the original reconcile in a partial one - # and a new one for reconciling the storno transfer - reconcile_partial.write({ - 'line_partial_ids': [(3, line.transit_move_line_id.id)] - }) - reconcile = reconcile_obj.create({ - 'type': 'auto', - 'line_id': [(6, 0, line.transit_move_line_id.id)] - }) - elif line.transit_move_line_id.reconcile_id: - reconcile = line.transit_move_line_id.reconcile_id - if len(line.transit_move_line_id.reconcile_id.line_id) == 2: - # reuse the simple reconcile for the storno transfer - reconcile.write({ - 'line_id': [(6, 0, [line.transit_move_line_id.id])], - }) - else: - # split up the original reconcile in a partial one - # and a new one for reconciling the storno transfer - reconcile = line.transit_move_line_id.reconcile_id - partial_ids = [x.id for x in reconcile.line_id - if x.id != line.transit_move_line_id.id] - reconcile.write({ - 'line_partial_ids': [(6, 0, partial_ids)], - 'line_id': [(6, 0, [])], - }) - reconcile = reconcile_obj.create({ - 'type': 'auto', - 'line_id': [(6, 0, line.transit_move_line_id.id)] - }) - # mark the payment line for storno processed - if reconcile: - self.write({'storno': True}) - # put forth the invoice workflow - if line.move_line_id.invoice: - activity = (storno_retry and 'open_test' or - 'invoice_debit_denied') - workflow.trg_validate( - self.env.uid, 'account.invoice', - line.move_line_id.invoice.id, activity, self.env.cr) - return reconcile.id - - @api.multi - def get_storno_account_id(self, amount, currency): - """Check the match of the arguments, and return the account associated - with the storno. - Used in account_banking interactive mode - - :param payment_line_id: the single payment line id - :param amount: the (signed) amount debited from the bank account - :param currency: the bank account's currency *browse object* - :return: an account if there is a full match, False otherwise - :rtype: database id of an account.account resource. - """ - self.ensure_one() - account_id = False - if (self.transit_move_line_id and not self.storno and - self.env['res.currency'].is_zero( - currency, ( - (self.transit_move_line_id.credit or 0.0) - - (self.transit_move_line_id.debit or 0.0) + amount))): - account_id = self.transit_move_line_id.account_id.id - return account_id - - @api.one - def debit_reconcile(self): - """Raise if a payment line is passed for which storno is True.""" - if self.storno: - raise exceptions.except_orm( - _('Can not reconcile'), - _('Cancelation of payment line \'%s\' has already been ' - 'processed') % self.name) - return super(PaymentLine, self).debit_reconcile() - - storno = fields.Boolean( - 'Storno', readonly=True, - help="If this is true, the debit order has been canceled by the bank " - "or by the customer") diff --git a/account_direct_debit/static/description/icon.png b/account_direct_debit/static/description/icon.png deleted file mode 100644 index 3a0328b51..000000000 Binary files a/account_direct_debit/static/description/icon.png and /dev/null differ diff --git a/account_direct_debit/views/account_invoice.xml b/account_direct_debit/views/account_invoice.xml deleted file mode 100644 index 76a46e128..000000000 --- a/account_direct_debit/views/account_invoice.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - account.invoice.form - account.invoice - - - - - - - - - account.invoice.select direct debit - account.invoice - search - - - - - - - - - diff --git a/account_direct_debit/views/account_payment.xml b/account_direct_debit/views/account_payment.xml deleted file mode 100644 index 8570789da..000000000 --- a/account_direct_debit/views/account_payment.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - [('payment_order_type', '=', 'payment')] - {'search_payment_order_type': 'payment'} - - - - Direct Debit Orders - payment.order - form - tree,form - {'search_payment_order_type': 'debit', - 'default_payment_order_type': 'debit'} - - [('payment_order_type', '=', 'debit')] - A debit order is a debit request from your company to collect customer invoices. Here you can register all debit orders that should be done, keep track of all debit orders and mention the invoice reference and the partner the withdrawal should be done for. - - - - - - payment.order.form - payment.order - - - - -
- - - -
-
- - [('payment_order_type', '=', payment_order_type)] - -
-
-
- - - Payment Lines - payment.line - - - - - - - - - -
-
diff --git a/account_direct_debit/views/payment_mode.xml b/account_direct_debit/views/payment_mode.xml deleted file mode 100644 index 043990df0..000000000 --- a/account_direct_debit/views/payment_mode.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - payment.mode.form.inherit - payment.mode - - - - - - - - - - diff --git a/account_direct_debit/views/payment_mode_type.xml b/account_direct_debit/views/payment_mode_type.xml deleted file mode 100644 index 54c14367d..000000000 --- a/account_direct_debit/views/payment_mode_type.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - view.payment.mode.type.tree - payment.mode.type - - - - - - - - - - view.payment.mode.type.form - payment.mode.type - - - - - - - - - - diff --git a/account_direct_debit/wizard/__init__.py b/account_direct_debit/wizard/__init__.py deleted file mode 100644 index cbcdda94a..000000000 --- a/account_direct_debit/wizard/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import payment_order_create diff --git a/account_direct_debit/wizard/payment_order_create.py b/account_direct_debit/wizard/payment_order_create.py deleted file mode 100644 index 3b26562b6..000000000 --- a/account_direct_debit/wizard/payment_order_create.py +++ /dev/null @@ -1,41 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2013 Therp BV (). -# -# All other contributions are (C) by their respective contributors -# -# All Rights Reserved -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, api - - -class PaymentOrderCreate(models.TransientModel): - _inherit = 'payment.order.create' - - @api.multi - def extend_payment_order_domain(self, payment_order, domain): - super(PaymentOrderCreate, self).extend_payment_order_domain( - payment_order, domain) - if payment_order.payment_order_type == 'debit': - domain += ['|', - ('invoice', '=', False), - ('invoice.state', '!=', 'debit_denied'), - ('account_id.type', '=', 'receivable'), - ('amount_to_receive', '>', 0)] - return True diff --git a/account_direct_debit/workflow/account_invoice.xml b/account_direct_debit/workflow/account_invoice.xml deleted file mode 100644 index d3099e85d..000000000 --- a/account_direct_debit/workflow/account_invoice.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - debit_denied - action_debit_denied() - function - - - - - - - invoice_debit_denied - - - - - - test_undo_debit_denied() - undo_debit_denied - - - - - - open_test - - - diff --git a/account_import_line_multicurrency_extension/i18n/en.po b/account_import_line_multicurrency_extension/i18n/en.po new file mode 100644 index 000000000..341574911 --- /dev/null +++ b/account_import_line_multicurrency_extension/i18n/en.po @@ -0,0 +1,58 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_import_line_multicurrency_extension +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:15+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: English (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/en/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: en\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_import_line_multicurrency_extension +#: code:addons/account_import_line_multicurrency_extension/models/bank_statement.py:42 +#, python-format +msgid "Amount on line %s is not set. \n" +msgstr "Amount on line %s is not set. \n" + +#. module: account_import_line_multicurrency_extension +#: model:ir.model,name:account_import_line_multicurrency_extension.model_account_bank_statement +msgid "Bank Statement" +msgstr "Bank Statement" + +#. module: account_import_line_multicurrency_extension +#: model:ir.model,name:account_import_line_multicurrency_extension.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "Bank Statement Line" + +#. module: account_import_line_multicurrency_extension +#: model:ir.model,name:account_import_line_multicurrency_extension.model_account_statement_from_invoice_lines +msgid "Entries by Statement from Invoices" +msgstr "Entries by Statement from Invoices" + +#. module: account_import_line_multicurrency_extension +#: code:addons/account_import_line_multicurrency_extension/models/bank_statement.py:45 +#, python-format +msgid "" +"Error on bank statement: \n" +" %s" +msgstr "Error on bank statement: \n %s" + +#. module: account_import_line_multicurrency_extension +#: view:account.move.line:account_import_line_multicurrency_extension.view_move_line_tree_bank_statement +#: view:account.statement.from.invoice.lines:account_import_line_multicurrency_extension.view_account_statement_from_invoice_lines_over +msgid "Move lines" +msgstr "Move lines" + +#. module: account_import_line_multicurrency_extension +#: view:account.bank.statement:account_import_line_multicurrency_extension.view_bank_statement_form +msgid "Reconcile" +msgstr "Reconcile" diff --git a/account_import_line_multicurrency_extension/i18n/pt_BR.po b/account_import_line_multicurrency_extension/i18n/pt_BR.po new file mode 100644 index 000000000..46657085a --- /dev/null +++ b/account_import_line_multicurrency_extension/i18n/pt_BR.po @@ -0,0 +1,59 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_import_line_multicurrency_extension +# +# Translators: +# danimaribeiro , 2016 +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 01:03+0000\n" +"Last-Translator: danimaribeiro \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_import_line_multicurrency_extension +#: code:addons/account_import_line_multicurrency_extension/models/bank_statement.py:42 +#, python-format +msgid "Amount on line %s is not set. \n" +msgstr "Total da linha %s não foi setado.\n" + +#. module: account_import_line_multicurrency_extension +#: model:ir.model,name:account_import_line_multicurrency_extension.model_account_bank_statement +msgid "Bank Statement" +msgstr "Extrato bancário" + +#. module: account_import_line_multicurrency_extension +#: model:ir.model,name:account_import_line_multicurrency_extension.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "Linha do extrato bancário" + +#. module: account_import_line_multicurrency_extension +#: model:ir.model,name:account_import_line_multicurrency_extension.model_account_statement_from_invoice_lines +msgid "Entries by Statement from Invoices" +msgstr "Entradas por extrato de fatura" + +#. module: account_import_line_multicurrency_extension +#: code:addons/account_import_line_multicurrency_extension/models/bank_statement.py:45 +#, python-format +msgid "" +"Error on bank statement: \n" +" %s" +msgstr "Erro no extrato: %s" + +#. module: account_import_line_multicurrency_extension +#: view:account.move.line:account_import_line_multicurrency_extension.view_move_line_tree_bank_statement +#: view:account.statement.from.invoice.lines:account_import_line_multicurrency_extension.view_account_statement_from_invoice_lines_over +msgid "Move lines" +msgstr "Movimentações" + +#. module: account_import_line_multicurrency_extension +#: view:account.bank.statement:account_import_line_multicurrency_extension.view_bank_statement_form +msgid "Reconcile" +msgstr "Reconciliar" diff --git a/account_import_line_multicurrency_extension/i18n/sl.po b/account_import_line_multicurrency_extension/i18n/sl.po new file mode 100644 index 000000000..9defc30d0 --- /dev/null +++ b/account_import_line_multicurrency_extension/i18n/sl.po @@ -0,0 +1,59 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_import_line_multicurrency_extension +# +# Translators: +# Matjaž Mozetič , 2016 +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 04:51+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: account_import_line_multicurrency_extension +#: code:addons/account_import_line_multicurrency_extension/models/bank_statement.py:42 +#, python-format +msgid "Amount on line %s is not set. \n" +msgstr "Znesek v vrstici %s ni nastavljen. \n" + +#. module: account_import_line_multicurrency_extension +#: model:ir.model,name:account_import_line_multicurrency_extension.model_account_bank_statement +msgid "Bank Statement" +msgstr "Bančni izpisek" + +#. module: account_import_line_multicurrency_extension +#: model:ir.model,name:account_import_line_multicurrency_extension.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "Postavka bančnega izpiska" + +#. module: account_import_line_multicurrency_extension +#: model:ir.model,name:account_import_line_multicurrency_extension.model_account_statement_from_invoice_lines +msgid "Entries by Statement from Invoices" +msgstr "Vnosi po izpisku iz računov" + +#. module: account_import_line_multicurrency_extension +#: code:addons/account_import_line_multicurrency_extension/models/bank_statement.py:45 +#, python-format +msgid "" +"Error on bank statement: \n" +" %s" +msgstr "Napaka na bančnem izpisku: \n %s" + +#. module: account_import_line_multicurrency_extension +#: view:account.move.line:account_import_line_multicurrency_extension.view_move_line_tree_bank_statement +#: view:account.statement.from.invoice.lines:account_import_line_multicurrency_extension.view_account_statement_from_invoice_lines_over +msgid "Move lines" +msgstr "Postavke premikov" + +#. module: account_import_line_multicurrency_extension +#: view:account.bank.statement:account_import_line_multicurrency_extension.view_bank_statement_form +msgid "Reconcile" +msgstr "Uskladi" diff --git a/account_payment_blocking/__openerp__.py b/account_payment_blocking/__openerp__.py index 168730efe..891b4c09a 100644 --- a/account_payment_blocking/__openerp__.py +++ b/account_payment_blocking/__openerp__.py @@ -22,7 +22,7 @@ ############################################################################## { 'name': 'account banking payment blocking', - 'version': '8.0.0.1.0', + 'version': '8.0.1.0.0', 'category': 'Banking addons', 'summary': """ Prevent invoices under litigation to be proposed in payment orders. diff --git a/account_payment_blocking/i18n/es.po b/account_payment_blocking/i18n/es.po new file mode 100644 index 000000000..c9a5b9ddc --- /dev/null +++ b/account_payment_blocking/i18n/es.po @@ -0,0 +1,28 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_payment_blocking +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:15+0000\n" +"Last-Translator: <>\n" +"Language-Team: Spanish (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_payment_blocking +#: model:ir.model,name:account_payment_blocking.model_account_invoice +msgid "Invoice" +msgstr "Factura" + +#. module: account_payment_blocking +#: field:account.invoice,blocked:0 field:account.invoice,draft_blocked:0 +msgid "No Follow Up" +msgstr "" diff --git a/account_payment_blocking/i18n/nl.po b/account_payment_blocking/i18n/nl.po new file mode 100644 index 000000000..781e2a704 --- /dev/null +++ b/account_payment_blocking/i18n/nl.po @@ -0,0 +1,28 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_payment_blocking +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:15+0000\n" +"Last-Translator: <>\n" +"Language-Team: Dutch (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_payment_blocking +#: model:ir.model,name:account_payment_blocking.model_account_invoice +msgid "Invoice" +msgstr "Factuur" + +#. module: account_payment_blocking +#: field:account.invoice,blocked:0 field:account.invoice,draft_blocked:0 +msgid "No Follow Up" +msgstr "" diff --git a/account_payment_blocking/i18n/pt_BR.po b/account_payment_blocking/i18n/pt_BR.po new file mode 100644 index 000000000..a3d2d86bd --- /dev/null +++ b/account_payment_blocking/i18n/pt_BR.po @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_payment_blocking +# +# Translators: +# danimaribeiro , 2016 +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 01:01+0000\n" +"Last-Translator: danimaribeiro \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_payment_blocking +#: model:ir.model,name:account_payment_blocking.model_account_invoice +msgid "Invoice" +msgstr "Fatura" + +#. module: account_payment_blocking +#: field:account.invoice,blocked:0 field:account.invoice,draft_blocked:0 +msgid "No Follow Up" +msgstr "Sem acompanhamento" diff --git a/account_payment_blocking/i18n/sl.po b/account_payment_blocking/i18n/sl.po new file mode 100644 index 000000000..8a666a35f --- /dev/null +++ b/account_payment_blocking/i18n/sl.po @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_payment_blocking +# +# Translators: +# Matjaž Mozetič , 2016 +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-08 05:00+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: account_payment_blocking +#: model:ir.model,name:account_payment_blocking.model_account_invoice +msgid "Invoice" +msgstr "Račun" + +#. module: account_payment_blocking +#: field:account.invoice,blocked:0 field:account.invoice,draft_blocked:0 +msgid "No Follow Up" +msgstr "Brez opominov" diff --git a/account_payment_blocking/model/account_invoice.py b/account_payment_blocking/model/account_invoice.py index c48621cae..2367f7d83 100644 --- a/account_payment_blocking/model/account_invoice.py +++ b/account_payment_blocking/model/account_invoice.py @@ -33,6 +33,20 @@ class account_invoice(orm.Model): ('invoice.id', '=', invoice_id)], context=context) + def _update_blocked(self, cr, uid, invoice, value, context=None): + if context is None: + context = {} + else: + context = context.copy() + if invoice.move_id.id: + move_line_ids = self._get_move_line(cr, uid, invoice.id, + context=context) + # work with account_constraints from OCA/AFT: + context.update({'from_parent_object': True}) + self.pool.get('account.move.line')\ + .write(cr, uid, move_line_ids, {'blocked': value}, + context=context) + def _set_move_blocked(self, cr, uid, ids, name, field_value, arg, context=None): if context is None: @@ -40,15 +54,16 @@ class account_invoice(orm.Model): if isinstance(ids, (int, long)): ids = [ids] for invoice in self.browse(cr, uid, ids, context=context): - if invoice.move_id.id: - move_line_ids = self._get_move_line(cr, uid, invoice.id, - context=context) - assert len(move_line_ids) == 1 - # work with account_constraints from OCA/AFT: - context.update({'from_parent_object': True}) - self.pool.get('account.move.line')\ - .write(cr, uid, move_line_ids, {'blocked': field_value}, - context=context) + self._update_blocked(cr, uid, invoice, field_value, + context=context) + + def action_move_create(self, cr, uid, ids, context=None): + res = super(account_invoice, self).action_move_create(cr, uid, ids, + context=context) + for invoice in self.browse(cr, uid, ids, context=context): + self._update_blocked(cr, uid, invoice, invoice.draft_blocked, + context=context) + return res def _get_move_blocked(self, cr, uid, ids, name, arg, context=None): res = {} @@ -58,10 +73,10 @@ class account_invoice(orm.Model): if invoice.move_id.id: move_line_ids = self._get_move_line(cr, uid, invoice.id, context=context) - assert len(move_line_ids) == 1 - move_line = self.pool.get('account.move.line')\ - .browse(cr, uid, move_line_ids, context=context)[0] - res[invoice.id] = move_line.blocked + move_lines = self.pool.get('account.move.line')\ + .browse(cr, uid, move_line_ids, context=context) + res[invoice.id] = move_lines and\ + all(line.blocked for line in move_lines) or False else: res[invoice.id] = False return res @@ -72,4 +87,5 @@ class account_invoice(orm.Model): type='boolean', string='No Follow Up', states={'draft': [('readonly', True)]}), + 'draft_blocked': fields.boolean(string='No Follow Up'), } diff --git a/account_payment_blocking/model/payment_order_create.py b/account_payment_blocking/model/payment_order_create.py index 5fffcd8cf..70bb22255 100644 --- a/account_payment_blocking/model/payment_order_create.py +++ b/account_payment_blocking/model/payment_order_create.py @@ -20,15 +20,16 @@ # ############################################################################## -from openerp.osv import orm +from openerp import api, models -class payment_order_create(orm.TransientModel): +class PaymentOrderCreate(models.TransientModel): _inherit = 'payment.order.create' + @api.multi def extend_payment_order_domain( - self, cr, uid, ids, payment_order, domain, context=None): - super(payment_order_create, self).extend_payment_order_domain( - cr, uid, ids, payment_order, domain, context=context) + self, payment_order, domain): + super(PaymentOrderCreate, self).extend_payment_order_domain( + payment_order, domain) domain += [('blocked', '!=', True)] return True diff --git a/account_payment_blocking/tests/test_account_banking_payment_blocking.py b/account_payment_blocking/tests/test_account_banking_payment_blocking.py index 45c7fefe7..1d59920e7 100644 --- a/account_payment_blocking/tests/test_account_banking_payment_blocking.py +++ b/account_payment_blocking/tests/test_account_banking_payment_blocking.py @@ -24,13 +24,14 @@ import openerp.tests.common as common from openerp import workflow -def create_simple_invoice(self, cr, uid, context=None): +def create_simple_invoice(self, cr, uid, payment_term=False, context=None): partner_id = self.ref('base.res_partner_2') product_id = self.ref('product.product_product_4') return self.registry('account.invoice')\ .create(cr, uid, {'partner_id': partner_id, 'account_id': self.ref('account.a_recv'), + 'payment_term': payment_term, 'journal_id': self.ref('account.expenses_journal'), 'invoice_line': [(0, 0, {'name': 'test', @@ -57,6 +58,8 @@ class TestAccountBankingPaymentBlocking(common.TransactionCase): move_line_obj = self.registry('account.move.line') invoice_id = create_simple_invoice(self, self.cr, self.uid, context=self.context) + invoice_obj.write(self.cr, self.uid, [invoice_id], + {'draft_blocked': True}) workflow.trg_validate(self.uid, 'account.invoice', invoice_id, 'invoice_open', self.cr) invoice = invoice_obj.browse(self.cr, self.uid, [invoice_id], @@ -66,12 +69,40 @@ class TestAccountBankingPaymentBlocking(common.TransactionCase): ['payable', 'receivable']), ('invoice.id', '=', invoice.id)]) move_line = move_line_obj.browse(self.cr, self.uid, move_line_ids)[0] + self.assertTrue(move_line.blocked) self.assertEqual(invoice.blocked, move_line.blocked, 'Blocked values are not equals') move_line_obj.write(self.cr, self.uid, move_line_ids, - {'blocked': True}) + {'blocked': False}) invoice = invoice_obj.browse(self.cr, self.uid, [invoice_id], context=self.context)[0] move_line = move_line_obj.browse(self.cr, self.uid, move_line_ids)[0] self.assertEqual(invoice.blocked, move_line.blocked, 'Blocked values are not equals') + + def test_invoice_payment_term(self): + invoice_obj = self.registry('account.invoice') + move_line_obj = self.registry('account.move.line') + payment_term_advance = self.ref('account.account_payment_term_advance') + invoice_id = create_simple_invoice(self, self.cr, self.uid, + payment_term=payment_term_advance, + context=self.context) + invoice_obj.write(self.cr, self.uid, [invoice_id], + {'draft_blocked': True}) + workflow.trg_validate(self.uid, 'account.invoice', invoice_id, + 'invoice_open', self.cr) + invoice = invoice_obj.browse(self.cr, self.uid, [invoice_id], + context=self.context)[0] + move_line_ids = move_line_obj\ + .search(self.cr, self.uid, [('account_id.type', 'in', + ['payable', 'receivable']), + ('invoice.id', '=', invoice.id)]) + move_lines = move_line_obj.browse(self.cr, self.uid, move_line_ids) + self.assertTrue( + move_lines and all(line.blocked for line in move_lines) or False) + move_line_obj.write(self.cr, self.uid, move_line_ids, + {'blocked': False}) + invoice = invoice_obj.browse(self.cr, self.uid, [invoice_id], + context=self.context)[0] + self.assertEqual(invoice.blocked, False, + 'Blocked values are not equals') diff --git a/account_payment_blocking/view/account_invoice_view.xml b/account_payment_blocking/view/account_invoice_view.xml index 09e6a1ba8..759dbf7a6 100644 --- a/account_payment_blocking/view/account_invoice_view.xml +++ b/account_payment_blocking/view/account_invoice_view.xml @@ -7,7 +7,8 @@ - + +
diff --git a/account_payment_include_draft_move/README.rst b/account_payment_include_draft_move/README.rst deleted file mode 100644 index 6d70ac802..000000000 --- a/account_payment_include_draft_move/README.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :alt: License: AGPL-3 - -Account Payment Draft Move -========================== - -Include draft moves in account payments - -Add payment order line from unposted move lines. -With account_default_draft_move, this module allows to add move lines -to payment orders before making the periodic process of posting all moves. - -Installation -============ - -This module depends on : -* account_banking_payment_export - -This module is part of the OCA/bank-payment suite. - -Configuration -============= - -There is nothing to configure. - -Usage -===== - -A new payment order allow to select draft journal items related to an invoice. - -For further information, please visit: - - * https://www.odoo.com/forum/help-1 - -Known issues / Roadmap -====================== - - * No known issues. - -Bug Tracker -=========== - -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. - -Credits -======= - -Contributors ------------- - -* Adrien Peiffer -* Alexandre Fayolle - -Maintainer ----------- - -.. image:: http://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: http://odoo-community.org - -This module is maintained by the OCA. - -OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. - -To contribute to this module, please visit http://odoo-community.org. \ No newline at end of file diff --git a/account_payment_include_draft_move/__init__.py b/account_payment_include_draft_move/__init__.py deleted file mode 100644 index 62da7f088..000000000 --- a/account_payment_include_draft_move/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# -############################################################################## -# -# Authors: Adrien Peiffer -# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from . import wizard diff --git a/account_payment_include_draft_move/__openerp__.py b/account_payment_include_draft_move/__openerp__.py deleted file mode 100644 index c6aa38216..000000000 --- a/account_payment_include_draft_move/__openerp__.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# -############################################################################## -# -# Authors: Adrien Peiffer -# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -{ - "name": "Account Payment Draft Move", - "version": "8.0.1.0.0", - "author": "ACSONE SA/NV,Odoo Community Association (OCA)", - "website": "http://www.acsone.eu", - "images": [], - "category": "Accounting", - "depends": ["account_banking_payment_export"], - "data": [], - "demo": [], - "test": [], - "licence": "AGPL-3", - 'installable': False, - "active": False, -} diff --git a/account_payment_include_draft_move/static/description/icon.png b/account_payment_include_draft_move/static/description/icon.png deleted file mode 100644 index 3a0328b51..000000000 Binary files a/account_payment_include_draft_move/static/description/icon.png and /dev/null differ diff --git a/account_payment_include_draft_move/wizard/__init__.py b/account_payment_include_draft_move/wizard/__init__.py deleted file mode 100644 index e087871c3..000000000 --- a/account_payment_include_draft_move/wizard/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# -############################################################################## -# -# Authors: Adrien Peiffer -# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from . import payment_order_create diff --git a/account_payment_include_draft_move/wizard/payment_order_create.py b/account_payment_include_draft_move/wizard/payment_order_create.py deleted file mode 100644 index 5564a2040..000000000 --- a/account_payment_include_draft_move/wizard/payment_order_create.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# -############################################################################## -# -# Authors: Adrien Peiffer -# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from openerp import models, api - -POSTED_MOVE_DOMAIN = ('move_id.state', '=', 'posted') - - -class PaymentOrderCreate(models.TransientModel): - _inherit = 'payment.order.create' - - @api.multi - def extend_payment_order_domain(self, payment_order, domain): - if POSTED_MOVE_DOMAIN in domain: - pos = domain.index(POSTED_MOVE_DOMAIN) - domain[pos] = (1, '=', 1) - return super(PaymentOrderCreate, self)\ - .extend_payment_order_domain(payment_order, domain) diff --git a/account_payment_mode/README.rst b/account_payment_mode/README.rst new file mode 100644 index 000000000..ac0f3a6e4 --- /dev/null +++ b/account_payment_mode/README.rst @@ -0,0 +1,54 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +==================== +Account Payment Mode +==================== + +This module adds a new object *account.payment.mode*. In Odoo v8, this object was part of the *account_payment* module from the official addons, but this module was dropped by the editor in Odoo v9. This object is also designed to replace the *payment.method* object of the *sale\_payment\_method* module of the `e-commerce `_ OCA project in v9. + +Configuration +============= + +To configure this module, you need to go to the menu *Account > Configuration > Management > Payment Mode*. + +Usage +===== + +This module doesn't add any feature, but it is used by several other modules. + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/173/9.0 + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Contributors +------------ + +* Alexis de Lattre + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/account_payment_mode/__init__.py b/account_payment_mode/__init__.py new file mode 100644 index 000000000..cde864bae --- /dev/null +++ b/account_payment_mode/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models diff --git a/account_payment_mode/__openerp__.py b/account_payment_mode/__openerp__.py new file mode 100644 index 000000000..fc3acdf48 --- /dev/null +++ b/account_payment_mode/__openerp__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (). +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + 'name': 'Account Payment Mode', + 'version': '9.0.1.0.0', + 'license': 'AGPL-3', + 'author': "Akretion,Odoo Community Association (OCA)", + 'website': 'https://github.com/OCA/bank-payment', + 'category': 'Banking addons', + 'depends': ['account'], + 'data': [ + 'security/ir.model.access.csv', + 'views/account_payment_method.xml', + 'views/account_payment_mode.xml', + 'views/res_partner_bank.xml', + 'views/res_partner.xml', + ], + 'demo': ['demo/payment_demo.xml'], + 'installable': True, +} diff --git a/account_payment_mode/demo/payment_demo.xml b/account_payment_mode/demo/payment_demo.xml new file mode 100644 index 000000000..a00c13b34 --- /dev/null +++ b/account_payment_mode/demo/payment_demo.xml @@ -0,0 +1,110 @@ + + + + + + Fiducial Banque + FIDCFR21XXX + 38 rue Sergent Michel Berthet + 69009 + Lyon + + + + + La Banque Postale + PSSTFRPPXXX + 115 rue de Sèvres + 75007 + Paris + + + + + Société Générale + SOGEFRPPXXX + 1 avenue du Roi Fabien 1er + 75008 + Paris + + + + + BNP Paribas Fortis Charleroi + GEBABEBB03A + Charleroi + + + + + + FR76 4242 4242 4242 4242 4242 424 + + + + + + FR20 1242 1242 1242 1242 1242 124 + + + + + + FR66 1212 1212 1212 1212 1212 121 + + + + + + BE96 9988 7766 5544 + + + + + + + + Credit Transfer to Suppliers + + variable + + + + + Direct Debit of suppliers from Société Générale + + variable + + + + + Direct Debit of suppliers from La Banque Postale + + variable + + + + + Inbound Credit Trf Société Générale + + variable + + + + + Inbound Credit Trf La Banque Postale + + variable + + + + + Direct Debit of customers + + variable + + + + + + diff --git a/account_payment_mode/models/__init__.py b/account_payment_mode/models/__init__.py new file mode 100644 index 000000000..ae4c3c001 --- /dev/null +++ b/account_payment_mode/models/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- + +from . import account_payment_method +from . import account_payment_mode +from . import account_journal +from . import res_partner_bank diff --git a/account_payment_mode/models/account_journal.py b/account_payment_mode/models/account_journal.py new file mode 100644 index 000000000..e9150c523 --- /dev/null +++ b/account_payment_mode/models/account_journal.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields + + +class AccountJournal(models.Model): + _inherit = 'account.journal' + + def _default_outbound_payment_methods(self): + all_out = self.env['account.payment.method'].search([ + ('payment_type', '=', 'outbound')]) + return all_out + + def _default_inbound_payment_methods(self): + all_in = self.env['account.payment.method'].search([ + ('payment_type', '=', 'inbound')]) + return all_in + + outbound_payment_method_ids = fields.Many2many( + default=_default_outbound_payment_methods) + inbound_payment_method_ids = fields.Many2many( + default=_default_inbound_payment_methods) diff --git a/account_payment_mode/models/account_payment_method.py b/account_payment_mode/models/account_payment_method.py new file mode 100644 index 000000000..748027a4d --- /dev/null +++ b/account_payment_mode/models/account_payment_method.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api + + +class AccountPaymentMethod(models.Model): + _inherit = 'account.payment.method' + _rec_name = 'display_name' + + code = fields.Char( + string='Code (Do Not Modify)', + help="This code is used in the code of the Odoo module that handle " + "this payment method. Therefore, if you change it, " + "the generation of the payment file may fail.") + active = fields.Boolean(string='Active', default=True) + bank_account_required = fields.Boolean( + string='Bank Account Required', + help="Activate this option if this payment method requires you to " + "know the bank account number of your customer or supplier.") + display_name = fields.Char( + compute='compute_display_name', + store=True, string='Display Name') + + @api.multi + @api.depends('code', 'name', 'payment_type') + def compute_display_name(self): + for method in self: + method.display_name = u'[%s] %s (%s)' % ( + method.code, method.name, method.payment_type) + + _sql_constraints = [( + 'code_payment_type_unique', + 'unique(code, payment_type)', + 'A payment method of the same type already exists with this code' + )] diff --git a/account_payment_mode/models/account_payment_mode.py b/account_payment_mode/models/account_payment_mode.py new file mode 100644 index 000000000..a1d2e60eb --- /dev/null +++ b/account_payment_mode/models/account_payment_mode.py @@ -0,0 +1,100 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api, _ +from openerp.exceptions import ValidationError + + +class AccountPaymentMode(models.Model): + """This corresponds to the object payment.mode of v8 with some + important changes. It also replaces the object payment.method + of the module sale_payment_method of OCA/e-commerce""" + _name = "account.payment.mode" + _description = 'Payment Modes' + _order = 'name' + + name = fields.Char(string='Name', required=True, translate=True) + company_id = fields.Many2one( + 'res.company', string='Company', required=True, ondelete='restrict', + default=lambda self: self.env['res.company']._company_default_get( + 'account.payment.mode')) + bank_account_link = fields.Selection([ + ('fixed', 'Fixed'), + ('variable', 'Variable'), + ], string='Link to Bank Account', required=True, + help="For payment modes that are always attached to the same bank " + "account of your company (such as wire transfer from customers or " + "SEPA direct debit from suppliers), select " + "'Fixed'. For payment modes that are not always attached to the same " + "bank account (such as SEPA Direct debit for customers, wire transfer " + "to suppliers), you should choose 'Variable', which means that you " + "will select the bank account on the payment order. If your company " + "only has one bank account, you should always select 'Fixed'.") + fixed_journal_id = fields.Many2one( + 'account.journal', string='Fixed Bank Journal', + domain=[('type', '=', 'bank')], ondelete='restrict') + # I need to use the old definition, because I have 2 M2M fields + # pointing to account.journal + variable_journal_ids = fields.Many2many( + 'account.journal', + 'account_payment_mode_variable_journal_rel', + 'payment_mode_id', 'journal_id', + string='Allowed Bank Journals', + domain=[('type', '=', 'bank')]) + payment_method_id = fields.Many2one( + 'account.payment.method', string='Payment Method', required=True, + ondelete='restrict') # equivalent v8 field : type + payment_type = fields.Selection( + related='payment_method_id.payment_type', readonly=True, store=True, + string="Payment Type") + payment_method_code = fields.Char( + related='payment_method_id.code', readonly=True, store=True, + string='Payment Method Code') + active = fields.Boolean(string='Active', default=True) + # I dropped sale_ok and purchase_ok fields, because it is replaced by + # payment_type = 'inbound' or 'outbound' + # In fact, with the new v9 datamodel, you MUST create 2 payment modes + # for wire transfer : one for wire transfer from your customers (inbound) + # and one for wire transfer to your suppliers (outbound) + note = fields.Text(string="Note", translate=True) + + @api.multi + @api.constrains( + 'bank_account_link', 'fixed_journal_id', 'payment_method_id') + def bank_account_link_constrains(self): + for mode in self: + if mode.bank_account_link == 'fixed': + if not mode.fixed_journal_id: + raise ValidationError(_( + "On the payment mode '%s', the bank account link is " + "'Fixed' but the fixed bank journal is not set") + % mode.name) + else: + if mode.payment_method_id.payment_type == 'outbound': + if ( + mode.payment_method_id.id not in + mode.fixed_journal_id. + outbound_payment_method_ids.ids): + raise ValidationError(_( + "On the payment mode '%s', the payment method " + "is '%s', but this payment method is not part " + "of the payment methods of the fixed bank " + "journal '%s'") % ( + mode.name, + mode.payment_method_id.name, + mode.fixed_journal_id.name)) + else: + if ( + mode.payment_method_id.id not in + mode.fixed_journal_id. + inbound_payment_method_ids.ids): + raise ValidationError(_( + "On the payment mode '%s', the payment method " + "is '%s' (it is in fact a debit method), " + "but this debit method is not part " + "of the debit methods of the fixed bank " + "journal '%s'") % ( + mode.name, + mode.payment_method_id.name, + mode.fixed_journal_id.name)) diff --git a/account_payment_mode/models/res_partner_bank.py b/account_payment_mode/models/res_partner_bank.py new file mode 100644 index 000000000..4e9b0a2a5 --- /dev/null +++ b/account_payment_mode/models/res_partner_bank.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields + + +class ResPartnerBank(models.Model): + _inherit = 'res.partner.bank' + + # I also have to change the label of the field in the view + # I store the field, so that we can do groupby and search on it + acc_type = fields.Char(string='Bank Account Type', store=True) diff --git a/account_payment_mode/security/ir.model.access.csv b/account_payment_mode/security/ir.model.access.csv new file mode 100644 index 000000000..0ff4035ea --- /dev/null +++ b/account_payment_mode/security/ir.model.access.csv @@ -0,0 +1,5 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +account.access_account_payment_method,Read access on account.payment.method to Invoice user,account.model_account_payment_method,account.group_account_invoice,1,0,0,0 +access_account_payment_method_full,Full access on account.payment.method to Financial Manager,account.model_account_payment_method,account.group_account_manager,1,1,1,1 +access_account_payment_mode_read,Read access on account.payment.mode to Employees,model_account_payment_mode,base.group_user,1,0,0,0 +access_account_payment_mode_full,Full access on account.payment.mode to Financial Manager,model_account_payment_mode,account.group_account_manager,1,1,1,1 diff --git a/account_payment_mode/views/account_payment_method.xml b/account_payment_mode/views/account_payment_method.xml new file mode 100644 index 000000000..f467f01f6 --- /dev/null +++ b/account_payment_mode/views/account_payment_method.xml @@ -0,0 +1,63 @@ + + + + + + + account_payment_method.form + account.payment.method + +
+ + + + + + + +
+
+
+ + + account_payment_method.tree + account.payment.method + + + + + + + + + + + account_payment_method.search + account.payment.method + + + + + + + + + + + + + + Payment Methods + account.payment.method + tree,form + + + + +
+
diff --git a/account_payment_mode/views/account_payment_mode.xml b/account_payment_mode/views/account_payment_mode.xml new file mode 100644 index 000000000..aa67cb2ec --- /dev/null +++ b/account_payment_mode/views/account_payment_mode.xml @@ -0,0 +1,72 @@ + + + + + + account.payment.mode.form + account.payment.mode + +
+ + + + + + + + + + + + + +
+
+
+ + + account.payment.mode.tree + account.payment.mode + + + + + + + + + + + + + account.payment.mode.search + account.payment.mode + + + + + + + + + + + + + + Payment Modes + account.payment.mode + tree,form + + + + +
+
diff --git a/account_payment_mode/views/res_partner.xml b/account_payment_mode/views/res_partner.xml new file mode 100644 index 000000000..b4e308840 --- /dev/null +++ b/account_payment_mode/views/res_partner.xml @@ -0,0 +1,23 @@ + + + + + + + + account_payment_mode.res_partner_form + res.partner + + + + {'invisible': [('parent_id', '!=', False)]} + + + + + + + diff --git a/account_payment_mode/views/res_partner_bank.xml b/account_payment_mode/views/res_partner_bank.xml new file mode 100644 index 000000000..ebdc48ec2 --- /dev/null +++ b/account_payment_mode/views/res_partner_bank.xml @@ -0,0 +1,45 @@ + + + + + + + account_payment_mode.res_partner_bank_form + res.partner.bank + + + + + + + + + + account_payment_mode.res_partner_bank_tree + res.partner.bank + + + + + + + + + + account_payment_mode.res_partner_bank_search + res.partner.bank + + + + + + + + + + + + + diff --git a/account_payment_mode_term/__openerp__.py b/account_payment_mode_term/__openerp__.py index d75f5c555..8fb5c61ce 100644 --- a/account_payment_mode_term/__openerp__.py +++ b/account_payment_mode_term/__openerp__.py @@ -26,7 +26,7 @@ { 'name': 'Account Banking - Payments Term Filter', - 'version': '8.0.0.1.1', + 'version': '8.0.0.1.2', 'license': 'AGPL-3', 'author': "Banking addons community,Odoo Community Association (OCA)", 'website': 'https://github.com/OCA/banking', diff --git a/account_payment_mode_term/i18n/es.po b/account_payment_mode_term/i18n/es.po new file mode 100644 index 000000000..ae8906a33 --- /dev/null +++ b/account_payment_mode_term/i18n/es.po @@ -0,0 +1,38 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_payment_mode_term +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:15+0000\n" +"Last-Translator: <>\n" +"Language-Team: Spanish (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_payment_mode_term +#: help:payment.mode,payment_term_ids:0 +msgid "Limit selected invoices to invoices with these payment terms" +msgstr "" + +#. module: account_payment_mode_term +#: view:payment.mode:account_payment_mode_term.view_payment_mode_form_inherit +msgid "Optional filter by payment term" +msgstr "" + +#. module: account_payment_mode_term +#: model:ir.model,name:account_payment_mode_term.model_payment_mode +msgid "Payment Mode" +msgstr "Modo de pago" + +#. module: account_payment_mode_term +#: field:payment.mode,payment_term_ids:0 +msgid "Payment terms" +msgstr "" diff --git a/account_payment_mode_term/i18n/fr.po b/account_payment_mode_term/i18n/fr.po new file mode 100644 index 000000000..d64527128 --- /dev/null +++ b/account_payment_mode_term/i18n/fr.po @@ -0,0 +1,38 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_payment_mode_term +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:15+0000\n" +"Last-Translator: <>\n" +"Language-Team: French (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_payment_mode_term +#: help:payment.mode,payment_term_ids:0 +msgid "Limit selected invoices to invoices with these payment terms" +msgstr "" + +#. module: account_payment_mode_term +#: view:payment.mode:account_payment_mode_term.view_payment_mode_form_inherit +msgid "Optional filter by payment term" +msgstr "" + +#. module: account_payment_mode_term +#: model:ir.model,name:account_payment_mode_term.model_payment_mode +msgid "Payment Mode" +msgstr "Mode de paiement" + +#. module: account_payment_mode_term +#: field:payment.mode,payment_term_ids:0 +msgid "Payment terms" +msgstr "" diff --git a/account_payment_mode_term/i18n/nl.po b/account_payment_mode_term/i18n/nl.po new file mode 100644 index 000000000..887a1ba03 --- /dev/null +++ b/account_payment_mode_term/i18n/nl.po @@ -0,0 +1,38 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_payment_mode_term +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:15+0000\n" +"Last-Translator: <>\n" +"Language-Team: Dutch (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_payment_mode_term +#: help:payment.mode,payment_term_ids:0 +msgid "Limit selected invoices to invoices with these payment terms" +msgstr "" + +#. module: account_payment_mode_term +#: view:payment.mode:account_payment_mode_term.view_payment_mode_form_inherit +msgid "Optional filter by payment term" +msgstr "" + +#. module: account_payment_mode_term +#: model:ir.model,name:account_payment_mode_term.model_payment_mode +msgid "Payment Mode" +msgstr "Betaalwijze" + +#. module: account_payment_mode_term +#: field:payment.mode,payment_term_ids:0 +msgid "Payment terms" +msgstr "" diff --git a/account_payment_mode_term/i18n/sl.po b/account_payment_mode_term/i18n/sl.po new file mode 100644 index 000000000..c4f40219b --- /dev/null +++ b/account_payment_mode_term/i18n/sl.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_payment_mode_term +# +# Translators: +# Matjaž Mozetič , 2016 +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-08 05:48+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: account_payment_mode_term +#: help:payment.mode,payment_term_ids:0 +msgid "Limit selected invoices to invoices with these payment terms" +msgstr "Omeji izbrane računa na račune s temi plačilnimi pogoji" + +#. module: account_payment_mode_term +#: view:payment.mode:account_payment_mode_term.view_payment_mode_form_inherit +msgid "Optional filter by payment term" +msgstr "Opcijski filter po plačilnem pogoju" + +#. module: account_payment_mode_term +#: model:ir.model,name:account_payment_mode_term.model_payment_mode +msgid "Payment Mode" +msgstr "Metoda plačila" + +#. module: account_payment_mode_term +#: field:payment.mode,payment_term_ids:0 +msgid "Payment terms" +msgstr "Plačilni pogoji" diff --git a/account_payment_mode_term/models/payment_order_create.py b/account_payment_mode_term/models/payment_order_create.py index b61639081..1422c7e21 100644 --- a/account_payment_mode_term/models/payment_order_create.py +++ b/account_payment_mode_term/models/payment_order_create.py @@ -24,16 +24,16 @@ # ############################################################################## -from openerp.osv import orm +from openerp import api, models -class payment_order_create(orm.TransientModel): +class payment_order_create(models.TransientModel): _inherit = 'payment.order.create' - def extend_payment_order_domain( - self, cr, uid, ids, payment_order, domain, context=None): + @api.multi + def extend_payment_order_domain(self, payment_order, domain): super(payment_order_create, self).extend_payment_order_domain( - cr, uid, ids, payment_order, domain, context=context) + payment_order, domain) # apply payment term filter if payment_order.mode.payment_term_ids: domain += [ diff --git a/account_payment_order/README.rst b/account_payment_order/README.rst new file mode 100644 index 000000000..b752fee40 --- /dev/null +++ b/account_payment_order/README.rst @@ -0,0 +1,82 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License: AGPL-3 + +===================== +Account Payment Order +===================== + +This module adds support for payment orders and debit orders. + +Installation +============ + +This module depends on: + +* account_payment_partner +* base_iban +* document + +This modules is part of the OCA/bank-payment suite. + +Configuration +============= + +This module adds several options on Payment Modes, cf Accounting > Configuration > Management > Payment Modes. + +Usage +===== + +You can create a Payment Order via the menu Accounting > Payments > Payment Orders and then select the move lines to pay. + +You can create a Debit Order via the menu Accounting > Payments > Debit Orders and then select the move lines to debit. + +This module also adds a button *Add to Payment Order* on supplier invoices and a button *Add to Debit Order* on customer invoices. + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/173/9.0 + +Known issues / Roadmap +====================== + + * no known issues + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Contributors +------------ + +* Stéphane Bidoul +* Alexis de Lattre +* Pedro M. Baeza +* Adrien Peiffer +* Stefan Rijnhart +* Laurent Mignon +* Alexandre Fayolle +* Danimar Ribeiro +* Erwin van der Ploeg +* Raphaël Valyi +* Sandy Carter +* Angel Moya + +Maintainer +---------- + +.. image:: http://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: http://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/account_banking_payment_export/__init__.py b/account_payment_order/__init__.py similarity index 100% rename from account_banking_payment_export/__init__.py rename to account_payment_order/__init__.py diff --git a/account_payment_order/__openerp__.py b/account_payment_order/__openerp__.py new file mode 100644 index 000000000..60f7dda5a --- /dev/null +++ b/account_payment_order/__openerp__.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# © 2009 EduSense BV () +# © 2011-2013 Therp BV () +# © 2013-2014 ACSONE SA (). +# © 2014-2016 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2016 Akretion (). +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + 'name': 'Account Payment Order', + 'version': '9.0.1.0.0', + 'license': 'AGPL-3', + 'author': "ACSONE SA/NV, " + "Therp BV, " + "Serv. Tecnol. Avanzados - Pedro M. Baeza, " + "Akretion, " + "Odoo Community Association (OCA)", + 'website': 'https://github.com/OCA/bank-payment', + 'category': 'Banking addons', + 'depends': [ + 'account_payment_partner', + 'base_iban', # for manual_bank_tranfer + 'document', # to see the attachments on payment.order + ], + 'data': [ + 'security/payment_security.xml', + 'security/ir.model.access.csv', + 'wizard/account_payment_line_create_view.xml', + 'wizard/account_invoice_payment_line_multi_view.xml', + 'views/account_payment_mode.xml', + 'views/account_payment_order.xml', + 'views/account_payment_line.xml', + 'views/bank_payment_line.xml', + 'views/account_move_line.xml', + 'views/ir_attachment.xml', + 'views/account_invoice_view.xml', + 'data/payment_seq.xml', + ], + 'demo': ['demo/payment_demo.xml'], + 'installable': True, +} diff --git a/account_banking_payment_export/data/payment_mode_type.xml b/account_payment_order/data/payment_mode_type.xml similarity index 100% rename from account_banking_payment_export/data/payment_mode_type.xml rename to account_payment_order/data/payment_mode_type.xml diff --git a/account_payment_order/data/payment_seq.xml b/account_payment_order/data/payment_seq.xml new file mode 100644 index 000000000..9f89b95af --- /dev/null +++ b/account_payment_order/data/payment_seq.xml @@ -0,0 +1,38 @@ + + + + + + + + + Bank Payment Line + bank.payment.line + L + 5 + + + + + Payment Line + account.payment.line + P + 5 + + + + + Payment Order + account.payment.order + PAY + 4 + + + + + + diff --git a/account_payment_order/demo/payment_demo.xml b/account_payment_order/demo/payment_demo.xml new file mode 100644 index 000000000..1644a907a --- /dev/null +++ b/account_payment_order/demo/payment_demo.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/account_payment_order/i18n/es.po b/account_payment_order/i18n/es.po new file mode 100644 index 000000000..1e8e5d91a --- /dev/null +++ b/account_payment_order/i18n/es.po @@ -0,0 +1,488 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_payment_export +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:14+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Spanish (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/res_partner_bank.py:17 +#: code:addons/account_banking_payment_export/models/res_partner_bank.py:31 +#, python-format +msgid "" +"A valid BIC contains 8 or 11 caracters. The BIC '%s' contains %d caracters, " +"so it is not valid." +msgstr "Un BIC válido contiene 8 u 11 caracteres. El BIC '%s' contiene %d caracteres, por lo que no es válido." + +#. module: account_banking_payment_export +#: field:payment.mode,active:0 field:payment.mode.type,active:0 +msgid "Active" +msgstr "Activo" + +#. module: account_banking_payment_export +#: field:bank.payment.line,amount_currency:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Amount" +msgstr "Importe" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_res_bank +msgid "Bank" +msgstr "Banco" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_res_partner_bank +msgid "Bank Accounts" +msgstr "Cuentas de banco" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_form +#: field:payment.line,bank_line_id:0 +msgid "Bank Payment Line" +msgstr "Línea de pago bancario" + +#. module: account_banking_payment_export +#: field:bank.payment.line,name:0 +msgid "Bank Payment Line Ref" +msgstr "Ref. de la línea de pago bancario" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_tree +#: model:ir.actions.act_window,name:account_banking_payment_export.bank_payment_line_action +#: model:ir.model,name:account_banking_payment_export.model_bank_payment_line +#: view:payment.order:account_banking_payment_export.view_payment_order_form +#: field:payment.order,bank_line_ids:0 +msgid "Bank Payment Lines" +msgstr "Líneas de pago bancario" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "Cancel" +msgstr "Cancelar" + +#. module: account_banking_payment_export +#: field:payment.mode.type,code:0 +msgid "Code" +msgstr "Código" + +#. module: account_banking_payment_export +#: field:bank.payment.line,communication:0 +msgid "Communication" +msgstr "Comunicación" + +#. module: account_banking_payment_export +#: field:bank.payment.line,company_id:0 +msgid "Company" +msgstr "Compañía" + +#. module: account_banking_payment_export +#: field:bank.payment.line,create_uid:0 field:payment.manual,create_uid:0 +#: field:payment.mode.type,create_uid:0 +msgid "Created by" +msgstr "Creado por" + +#. module: account_banking_payment_export +#: field:bank.payment.line,create_date:0 field:payment.manual,create_date:0 +#: field:payment.mode.type,create_date:0 +msgid "Created on" +msgstr "Creado en" + +#. module: account_banking_payment_export +#: selection:payment.mode.type,payment_order_type:0 +msgid "Debit" +msgstr "Cobro" + +#. module: account_banking_payment_export +#: selection:payment.order,payment_order_type:0 +msgid "Direct debit" +msgstr "Adeudo directo (cobro)" + +#. module: account_banking_payment_export +#: selection:payment.mode,default_date_type:0 +msgid "Due" +msgstr "Vencimiento" + +#. module: account_banking_payment_export +#: selection:payment.order.create,date_type:0 +msgid "Due Date" +msgstr "Fecha de vencimiento" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Entry Information" +msgstr "Información del asiento" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:152 +#, python-format +msgid "Entry Lines" +msgstr "Líneas de pago" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:74 +#, python-format +msgid "Error" +msgstr "Error" + +#. module: account_banking_payment_export +#: field:payment.mode,type:0 +msgid "Export type" +msgstr "Tipo de exportación" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "General Information" +msgstr "Información General" + +#. module: account_banking_payment_export +#: field:payment.mode,group_lines:0 +msgid "Group lines in payment orders" +msgstr "Agrupar líneas en las órdenes de pago" + +#. module: account_banking_payment_export +#: field:bank.payment.line,id:0 field:payment.manual,id:0 +#: field:payment.mode.type,id:0 +msgid "ID" +msgstr "ID" + +#. module: account_banking_payment_export +#: help:payment.mode,group_lines:0 +msgid "" +"If this mark is checked, the payment order lines will be grouped when validating the payment order before exporting the bank file. The grouping will be done only if the following fields matches:\n" +"* Partner\n" +"* Currency\n" +"* Destination Bank Account\n" +"* Communication Type (structured, free)\n" +"* Payment Date\n" +"(other modules can set additional fields to restrict the grouping.)" +msgstr "Si esta casilla está marcada, las líneas de las órdenes de pago serán agrupadas cuando se valide la orden de pago antes de la exportación al archivo bancario. La agrupación se realizará sólo si los siguientes campos casan:\n* Empresa\n* Moneda\n* Cuenta bancaria destino\n* Tipo de comunicacion (estructurada, libre)\n* Fecha de pago\n(otros módulo pueden establecer campos adicionales para restringir la agrupación.)" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Information" +msgstr "Información" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_account_invoice +msgid "Invoice" +msgstr "Factura" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Journal Entry" +msgstr "Asiento contable" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +#: model:ir.model,name:account_banking_payment_export.model_account_move_line +msgid "Journal Items" +msgstr "Apuntes contables" + +#. module: account_banking_payment_export +#: field:payment.mode,default_journal_ids:0 +#: field:payment.order.create,journal_ids:0 +msgid "Journals Filter" +msgstr "Filtro de diarios" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order +msgid "Keep empty for using all journals" +msgstr "Dejar vacío para usar todos los diarios" + +#. module: account_banking_payment_export +#: field:bank.payment.line,write_uid:0 field:payment.manual,write_uid:0 +#: field:payment.mode.type,write_uid:0 +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: account_banking_payment_export +#: field:bank.payment.line,write_date:0 field:payment.manual,write_date:0 +#: field:payment.mode.type,write_date:0 +msgid "Last Updated on" +msgstr "Última actualización en" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +msgid "Line grouping" +msgstr "Agrupación de líneas" + +#. module: account_banking_payment_export +#: field:payment.mode,default_invoice:0 field:payment.order.create,invoice:0 +msgid "Linked to an Invoice or Refund" +msgstr "Vinculado a una factura o factura rectificativa" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "Manual payment" +msgstr "Pago manual" + +#. module: account_banking_payment_export +#: selection:payment.mode,default_date_type:0 +msgid "Move" +msgstr "Asiento" + +#. module: account_banking_payment_export +#: selection:payment.order.create,date_type:0 +#: field:payment.order.create,move_date:0 +msgid "Move Date" +msgstr "Fecha del asiento" + +#. module: account_banking_payment_export +#: field:payment.mode.type,name:0 +msgid "Name" +msgstr "Nombre" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +#: field:payment.mode,note:0 +msgid "Note" +msgstr "Descripción" + +#. module: account_banking_payment_export +#: field:bank.payment.line,order_id:0 +msgid "Order" +msgstr "Orden" + +#. module: account_banking_payment_export +#: field:payment.mode.type,payment_order_type:0 +msgid "Order type" +msgstr "Tipo de orden" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Owner Account" +msgstr "Cuenta propietario" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Partner Bank Account" +msgstr "Cuenta bancaria" + +#. module: account_banking_payment_export +#: selection:payment.mode.type,payment_order_type:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +#: selection:payment.order,payment_order_type:0 +msgid "Payment" +msgstr "Pago" + +#. module: account_banking_payment_export +#: model:ir.actions.act_window,name:account_banking_payment_export.action_payment_mode_type +#: model:ir.ui.menu,name:account_banking_payment_export.menu_payment_mode_type +msgid "Payment Export Types" +msgstr "Tipos de exportación de pagos" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_line +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Payment Line" +msgstr "Línea de pago" + +#. module: account_banking_payment_export +#: field:bank.payment.line,payment_line_ids:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Payment Lines" +msgstr "Líneas de pago" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_mode +msgid "Payment Mode" +msgstr "Modo de pago" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_mode_type +msgid "Payment Mode Type" +msgstr "Tipo del modo de pago" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_order +msgid "Payment Order" +msgstr "Orden de pago" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:59 +#, python-format +msgid "Payment Order Export" +msgstr "Exportación de la orden de pago" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:245 +#, python-format +msgid "Payment Orders" +msgstr "Órdenes de pago" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form +#: help:payment.mode.type,name:0 +msgid "Payment Type" +msgstr "Tipo de pago" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_tree +msgid "Payment Types" +msgstr "Tipos de pago" + +#. module: account_banking_payment_export +#: field:payment.order,payment_order_type:0 +msgid "Payment order type" +msgstr "Tipo de la orden de pago" + +#. module: account_banking_payment_export +#: field:payment.mode.type,ir_model_id:0 +msgid "Payment wizard" +msgstr "Asistente de pago" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "" +"Please execute payment order manually, and click OK when succesfully sent." +msgstr "Ejecute la orden de pago manualmente (fuera del sistema), y pulse en Aceptar cuando la haya tramitado correctamente." + +#. module: account_banking_payment_export +#: field:payment.mode,default_populate_results:0 +#: field:payment.order.create,populate_results:0 +msgid "Populate Results Directly" +msgstr "Incluir los resultados directamente" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_form +msgid "Related Payment Lines" +msgstr "Líneas de pago relacionadas" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +msgid "Select Move Lines to Pay - Default Values" +msgstr "Selección de los apuntes - Valores por defecto" + +#. module: account_banking_payment_export +#: help:payment.mode,type:0 +msgid "Select the Export Payment Type for the Payment Mode." +msgstr "Seleccione el tipo de exportación de pago para el modo de pago." + +#. module: account_banking_payment_export +#: help:payment.mode.type,ir_model_id:0 +msgid "" +"Select the Payment Wizard for payments of this type. Leave empty for manual " +"processing" +msgstr "Seleccione el asistente de pago para los pagos de este tipo. Déjelo vacío para un procesado manual." + +#. module: account_banking_payment_export +#: field:payment.mode,purchase_ok:0 +msgid "Selectable on purchase operations" +msgstr "Seleccionable en operaciones de compra" + +#. module: account_banking_payment_export +#: field:payment.mode,sale_ok:0 +msgid "Selectable on sale operations" +msgstr "Seleccionable en operaciones de venta" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_manual +msgid "Send payment order(s) manually" +msgstr "Enviar la(s) orden(es) de pago manualmente" + +#. module: account_banking_payment_export +#: help:payment.mode.type,code:0 +msgid "Specify the Code for Payment Type" +msgstr "Especifica el código para el tipo de pago" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_invoice.py:16 +#, python-format +msgid "Structured Reference" +msgstr "Referencia esctructurada" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form +#: field:payment.mode.type,suitable_bank_types:0 +msgid "Suitable bank types" +msgstr "Tipos de cuentas bancarias adecuadas" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:152 +#, python-format +msgid "The amount for Partner '%s' is negative or null (%.2f) !" +msgstr "El importe para el empresa '%s' es negativo o nulo (%.2f) !" + +#. module: account_banking_payment_export +#: help:payment.mode.type,payment_order_type:0 +msgid "" +"This field determines if this type applies to customers (Debit) or suppliers" +" (Payment)" +msgstr "Este campo determina si este tipo aplica a clientes (Cobro) o a proveedores (Pago)" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_tree +msgid "Total Amount" +msgstr "Importe total" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Total Credit" +msgstr "Total haber" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Total Debit" +msgstr "Total debe" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Total in Company Currency" +msgstr "Total en moneda de la compañía" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Transaction Information" +msgstr "Información de transacción" + +#. module: account_banking_payment_export +#: field:payment.mode,default_date_type:0 +#: field:payment.order.create,date_type:0 +msgid "Type of Date Filter" +msgstr "Filtro de tipo de fecha" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:75 +#, python-format +msgid "You can only combine payment orders of the same type" +msgstr "Sólo puede combinar órdenes de pago del mismo tipo" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "launch_wizard" +msgstr "Asistente" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "" +"{\n" +" 'invisible': [('state', '!=', 'draft')]}" +msgstr "{\n 'invisible': [('state', '!=', 'draft')]}" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order_lines +msgid "" +"{'display_credit': context.get('display_credit', False),'display_debit': " +"context.get('display_debit', False),'journal_type': 'sale', 'tree_view_ref' " +": " +"'account_banking_payment_export.payment_order_populate_view_move_line_tree'}" +msgstr "{'display_credit': context.get('display_credit', False),'display_debit': context.get('display_debit', False),'journal_type': 'sale', 'tree_view_ref' : 'account_banking_payment_export.payment_order_populate_view_move_line_tree'}" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order +msgid "" +"{'required': [('date_type', '=', 'due')], 'invisible': [('date_type', '!=', " +"'due')]}" +msgstr "{'required': [('date_type', '=', 'due')], 'invisible': [('date_type', '!=', 'due')]}" diff --git a/account_payment_order/i18n/fr.po b/account_payment_order/i18n/fr.po new file mode 100644 index 000000000..a7efd5fd1 --- /dev/null +++ b/account_payment_order/i18n/fr.po @@ -0,0 +1,488 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_payment_export +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:14+0000\n" +"Last-Translator: <>\n" +"Language-Team: French (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/res_partner_bank.py:17 +#: code:addons/account_banking_payment_export/models/res_partner_bank.py:31 +#, python-format +msgid "" +"A valid BIC contains 8 or 11 caracters. The BIC '%s' contains %d caracters, " +"so it is not valid." +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode,active:0 field:payment.mode.type,active:0 +msgid "Active" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,amount_currency:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Amount" +msgstr "" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_res_bank +msgid "Bank" +msgstr "" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_res_partner_bank +msgid "Bank Accounts" +msgstr "" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_form +#: field:payment.line,bank_line_id:0 +msgid "Bank Payment Line" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,name:0 +msgid "Bank Payment Line Ref" +msgstr "" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_tree +#: model:ir.actions.act_window,name:account_banking_payment_export.bank_payment_line_action +#: model:ir.model,name:account_banking_payment_export.model_bank_payment_line +#: view:payment.order:account_banking_payment_export.view_payment_order_form +#: field:payment.order,bank_line_ids:0 +msgid "Bank Payment Lines" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "Cancel" +msgstr "Annuler" + +#. module: account_banking_payment_export +#: field:payment.mode.type,code:0 +msgid "Code" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,communication:0 +msgid "Communication" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,company_id:0 +msgid "Company" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,create_uid:0 field:payment.manual,create_uid:0 +#: field:payment.mode.type,create_uid:0 +msgid "Created by" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,create_date:0 field:payment.manual,create_date:0 +#: field:payment.mode.type,create_date:0 +msgid "Created on" +msgstr "" + +#. module: account_banking_payment_export +#: selection:payment.mode.type,payment_order_type:0 +msgid "Debit" +msgstr "" + +#. module: account_banking_payment_export +#: selection:payment.order,payment_order_type:0 +msgid "Direct debit" +msgstr "" + +#. module: account_banking_payment_export +#: selection:payment.mode,default_date_type:0 +msgid "Due" +msgstr "" + +#. module: account_banking_payment_export +#: selection:payment.order.create,date_type:0 +msgid "Due Date" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Entry Information" +msgstr "" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:152 +#, python-format +msgid "Entry Lines" +msgstr "" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:74 +#, python-format +msgid "Error" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode,type:0 +msgid "Export type" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "General Information" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode,group_lines:0 +msgid "Group lines in payment orders" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,id:0 field:payment.manual,id:0 +#: field:payment.mode.type,id:0 +msgid "ID" +msgstr "" + +#. module: account_banking_payment_export +#: help:payment.mode,group_lines:0 +msgid "" +"If this mark is checked, the payment order lines will be grouped when validating the payment order before exporting the bank file. The grouping will be done only if the following fields matches:\n" +"* Partner\n" +"* Currency\n" +"* Destination Bank Account\n" +"* Communication Type (structured, free)\n" +"* Payment Date\n" +"(other modules can set additional fields to restrict the grouping.)" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Information" +msgstr "" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_account_invoice +msgid "Invoice" +msgstr "" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Journal Entry" +msgstr "" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +#: model:ir.model,name:account_banking_payment_export.model_account_move_line +msgid "Journal Items" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode,default_journal_ids:0 +#: field:payment.order.create,journal_ids:0 +msgid "Journals Filter" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order +msgid "Keep empty for using all journals" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,write_uid:0 field:payment.manual,write_uid:0 +#: field:payment.mode.type,write_uid:0 +msgid "Last Updated by" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,write_date:0 field:payment.manual,write_date:0 +#: field:payment.mode.type,write_date:0 +msgid "Last Updated on" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +msgid "Line grouping" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode,default_invoice:0 field:payment.order.create,invoice:0 +msgid "Linked to an Invoice or Refund" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "Manual payment" +msgstr "" + +#. module: account_banking_payment_export +#: selection:payment.mode,default_date_type:0 +msgid "Move" +msgstr "" + +#. module: account_banking_payment_export +#: selection:payment.order.create,date_type:0 +#: field:payment.order.create,move_date:0 +msgid "Move Date" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode.type,name:0 +msgid "Name" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +#: field:payment.mode,note:0 +msgid "Note" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,order_id:0 +msgid "Order" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode.type,payment_order_type:0 +msgid "Order type" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Owner Account" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Partner Bank Account" +msgstr "" + +#. module: account_banking_payment_export +#: selection:payment.mode.type,payment_order_type:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +#: selection:payment.order,payment_order_type:0 +msgid "Payment" +msgstr "" + +#. module: account_banking_payment_export +#: model:ir.actions.act_window,name:account_banking_payment_export.action_payment_mode_type +#: model:ir.ui.menu,name:account_banking_payment_export.menu_payment_mode_type +msgid "Payment Export Types" +msgstr "" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_line +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Payment Line" +msgstr "Ligne de paiement" + +#. module: account_banking_payment_export +#: field:bank.payment.line,payment_line_ids:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Payment Lines" +msgstr "" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_mode +msgid "Payment Mode" +msgstr "Mode de paiement" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_mode_type +msgid "Payment Mode Type" +msgstr "" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_order +msgid "Payment Order" +msgstr "" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:59 +#, python-format +msgid "Payment Order Export" +msgstr "" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:245 +#, python-format +msgid "Payment Orders" +msgstr "Ordres de paiement" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form +#: help:payment.mode.type,name:0 +msgid "Payment Type" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_tree +msgid "Payment Types" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.order,payment_order_type:0 +msgid "Payment order type" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode.type,ir_model_id:0 +msgid "Payment wizard" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "" +"Please execute payment order manually, and click OK when succesfully sent." +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode,default_populate_results:0 +#: field:payment.order.create,populate_results:0 +msgid "Populate Results Directly" +msgstr "" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_form +msgid "Related Payment Lines" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +msgid "Select Move Lines to Pay - Default Values" +msgstr "" + +#. module: account_banking_payment_export +#: help:payment.mode,type:0 +msgid "Select the Export Payment Type for the Payment Mode." +msgstr "" + +#. module: account_banking_payment_export +#: help:payment.mode.type,ir_model_id:0 +msgid "" +"Select the Payment Wizard for payments of this type. Leave empty for manual " +"processing" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode,purchase_ok:0 +msgid "Selectable on purchase operations" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode,sale_ok:0 +msgid "Selectable on sale operations" +msgstr "" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_manual +msgid "Send payment order(s) manually" +msgstr "" + +#. module: account_banking_payment_export +#: help:payment.mode.type,code:0 +msgid "Specify the Code for Payment Type" +msgstr "" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_invoice.py:16 +#, python-format +msgid "Structured Reference" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form +#: field:payment.mode.type,suitable_bank_types:0 +msgid "Suitable bank types" +msgstr "" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:152 +#, python-format +msgid "The amount for Partner '%s' is negative or null (%.2f) !" +msgstr "" + +#. module: account_banking_payment_export +#: help:payment.mode.type,payment_order_type:0 +msgid "" +"This field determines if this type applies to customers (Debit) or suppliers" +" (Payment)" +msgstr "" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_tree +msgid "Total Amount" +msgstr "Montant total" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Total Credit" +msgstr "" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Total Debit" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Total in Company Currency" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Transaction Information" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode,default_date_type:0 +#: field:payment.order.create,date_type:0 +msgid "Type of Date Filter" +msgstr "" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:75 +#, python-format +msgid "You can only combine payment orders of the same type" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "launch_wizard" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "" +"{\n" +" 'invisible': [('state', '!=', 'draft')]}" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order_lines +msgid "" +"{'display_credit': context.get('display_credit', False),'display_debit': " +"context.get('display_debit', False),'journal_type': 'sale', 'tree_view_ref' " +": " +"'account_banking_payment_export.payment_order_populate_view_move_line_tree'}" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order +msgid "" +"{'required': [('date_type', '=', 'due')], 'invisible': [('date_type', '!=', " +"'due')]}" +msgstr "" diff --git a/account_payment_order/i18n/nl.po b/account_payment_order/i18n/nl.po new file mode 100644 index 000000000..de3fae574 --- /dev/null +++ b/account_payment_order/i18n/nl.po @@ -0,0 +1,488 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_payment_export +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 00:15+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Dutch (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/nl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/res_partner_bank.py:17 +#: code:addons/account_banking_payment_export/models/res_partner_bank.py:31 +#, python-format +msgid "" +"A valid BIC contains 8 or 11 caracters. The BIC '%s' contains %d caracters, " +"so it is not valid." +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode,active:0 field:payment.mode.type,active:0 +msgid "Active" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,amount_currency:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Amount" +msgstr "" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_res_bank +msgid "Bank" +msgstr "" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_res_partner_bank +msgid "Bank Accounts" +msgstr "" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_form +#: field:payment.line,bank_line_id:0 +msgid "Bank Payment Line" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,name:0 +msgid "Bank Payment Line Ref" +msgstr "" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_tree +#: model:ir.actions.act_window,name:account_banking_payment_export.bank_payment_line_action +#: model:ir.model,name:account_banking_payment_export.model_bank_payment_line +#: view:payment.order:account_banking_payment_export.view_payment_order_form +#: field:payment.order,bank_line_ids:0 +msgid "Bank Payment Lines" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "Cancel" +msgstr "Annuleren" + +#. module: account_banking_payment_export +#: field:payment.mode.type,code:0 +msgid "Code" +msgstr "Code" + +#. module: account_banking_payment_export +#: field:bank.payment.line,communication:0 +msgid "Communication" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,company_id:0 +msgid "Company" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,create_uid:0 field:payment.manual,create_uid:0 +#: field:payment.mode.type,create_uid:0 +msgid "Created by" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,create_date:0 field:payment.manual,create_date:0 +#: field:payment.mode.type,create_date:0 +msgid "Created on" +msgstr "" + +#. module: account_banking_payment_export +#: selection:payment.mode.type,payment_order_type:0 +msgid "Debit" +msgstr "" + +#. module: account_banking_payment_export +#: selection:payment.order,payment_order_type:0 +msgid "Direct debit" +msgstr "Incasso-opdracht" + +#. module: account_banking_payment_export +#: selection:payment.mode,default_date_type:0 +msgid "Due" +msgstr "" + +#. module: account_banking_payment_export +#: selection:payment.order.create,date_type:0 +msgid "Due Date" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Entry Information" +msgstr "" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:152 +#, python-format +msgid "Entry Lines" +msgstr "" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:74 +#, python-format +msgid "Error" +msgstr "Fout" + +#. module: account_banking_payment_export +#: field:payment.mode,type:0 +msgid "Export type" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "General Information" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode,group_lines:0 +msgid "Group lines in payment orders" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,id:0 field:payment.manual,id:0 +#: field:payment.mode.type,id:0 +msgid "ID" +msgstr "" + +#. module: account_banking_payment_export +#: help:payment.mode,group_lines:0 +msgid "" +"If this mark is checked, the payment order lines will be grouped when validating the payment order before exporting the bank file. The grouping will be done only if the following fields matches:\n" +"* Partner\n" +"* Currency\n" +"* Destination Bank Account\n" +"* Communication Type (structured, free)\n" +"* Payment Date\n" +"(other modules can set additional fields to restrict the grouping.)" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Information" +msgstr "" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_account_invoice +msgid "Invoice" +msgstr "Factuur" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Journal Entry" +msgstr "" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +#: model:ir.model,name:account_banking_payment_export.model_account_move_line +msgid "Journal Items" +msgstr "Boekingen" + +#. module: account_banking_payment_export +#: field:payment.mode,default_journal_ids:0 +#: field:payment.order.create,journal_ids:0 +msgid "Journals Filter" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order +msgid "Keep empty for using all journals" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,write_uid:0 field:payment.manual,write_uid:0 +#: field:payment.mode.type,write_uid:0 +msgid "Last Updated by" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,write_date:0 field:payment.manual,write_date:0 +#: field:payment.mode.type,write_date:0 +msgid "Last Updated on" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +msgid "Line grouping" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode,default_invoice:0 field:payment.order.create,invoice:0 +msgid "Linked to an Invoice or Refund" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "Manual payment" +msgstr "Handmatige betaling" + +#. module: account_banking_payment_export +#: selection:payment.mode,default_date_type:0 +msgid "Move" +msgstr "" + +#. module: account_banking_payment_export +#: selection:payment.order.create,date_type:0 +#: field:payment.order.create,move_date:0 +msgid "Move Date" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode.type,name:0 +msgid "Name" +msgstr "Naam" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +#: field:payment.mode,note:0 +msgid "Note" +msgstr "" + +#. module: account_banking_payment_export +#: field:bank.payment.line,order_id:0 +msgid "Order" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode.type,payment_order_type:0 +msgid "Order type" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Owner Account" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Partner Bank Account" +msgstr "" + +#. module: account_banking_payment_export +#: selection:payment.mode.type,payment_order_type:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +#: selection:payment.order,payment_order_type:0 +msgid "Payment" +msgstr "Betaling" + +#. module: account_banking_payment_export +#: model:ir.actions.act_window,name:account_banking_payment_export.action_payment_mode_type +#: model:ir.ui.menu,name:account_banking_payment_export.menu_payment_mode_type +msgid "Payment Export Types" +msgstr "" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_line +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Payment Line" +msgstr "Betaalregel" + +#. module: account_banking_payment_export +#: field:bank.payment.line,payment_line_ids:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Payment Lines" +msgstr "" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_mode +msgid "Payment Mode" +msgstr "Betaalwijze" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_mode_type +msgid "Payment Mode Type" +msgstr "Betaalwijze soort" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_order +msgid "Payment Order" +msgstr "Betalingsopdracht" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:59 +#, python-format +msgid "Payment Order Export" +msgstr "Betaalopdracht export" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:245 +#, python-format +msgid "Payment Orders" +msgstr "Betaalopdrachten" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form +#: help:payment.mode.type,name:0 +msgid "Payment Type" +msgstr "Betaalwijze" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_tree +msgid "Payment Types" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.order,payment_order_type:0 +msgid "Payment order type" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode.type,ir_model_id:0 +msgid "Payment wizard" +msgstr "Betaalwizard" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "" +"Please execute payment order manually, and click OK when succesfully sent." +msgstr "Voer de betaalopdracht handmatig uit en klik OK, wanneer succesvol verzonden." + +#. module: account_banking_payment_export +#: field:payment.mode,default_populate_results:0 +#: field:payment.order.create,populate_results:0 +msgid "Populate Results Directly" +msgstr "" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_form +msgid "Related Payment Lines" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +msgid "Select Move Lines to Pay - Default Values" +msgstr "" + +#. module: account_banking_payment_export +#: help:payment.mode,type:0 +msgid "Select the Export Payment Type for the Payment Mode." +msgstr "" + +#. module: account_banking_payment_export +#: help:payment.mode.type,ir_model_id:0 +msgid "" +"Select the Payment Wizard for payments of this type. Leave empty for manual " +"processing" +msgstr "Selecteer de wizard voor het verwerken van betalingen van dit type. Laat leeg voor handmatige verwerking." + +#. module: account_banking_payment_export +#: field:payment.mode,purchase_ok:0 +msgid "Selectable on purchase operations" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode,sale_ok:0 +msgid "Selectable on sale operations" +msgstr "" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_manual +msgid "Send payment order(s) manually" +msgstr "Verzend betaalopdrachten handmatig" + +#. module: account_banking_payment_export +#: help:payment.mode.type,code:0 +msgid "Specify the Code for Payment Type" +msgstr "Geef de code op voor het betaaltype" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_invoice.py:16 +#, python-format +msgid "Structured Reference" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form +#: field:payment.mode.type,suitable_bank_types:0 +msgid "Suitable bank types" +msgstr "Geschikte banktypen" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:152 +#, python-format +msgid "The amount for Partner '%s' is negative or null (%.2f) !" +msgstr "" + +#. module: account_banking_payment_export +#: help:payment.mode.type,payment_order_type:0 +msgid "" +"This field determines if this type applies to customers (Debit) or suppliers" +" (Payment)" +msgstr "" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_tree +msgid "Total Amount" +msgstr "Totaalbedrag" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Total Credit" +msgstr "" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Total Debit" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Total in Company Currency" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Transaction Information" +msgstr "" + +#. module: account_banking_payment_export +#: field:payment.mode,default_date_type:0 +#: field:payment.order.create,date_type:0 +msgid "Type of Date Filter" +msgstr "" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:75 +#, python-format +msgid "You can only combine payment orders of the same type" +msgstr "U kunt alleen betalingsopdrachten van dezelfde soort combineren" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "launch_wizard" +msgstr "launch_wizard" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "" +"{\n" +" 'invisible': [('state', '!=', 'draft')]}" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order_lines +msgid "" +"{'display_credit': context.get('display_credit', False),'display_debit': " +"context.get('display_debit', False),'journal_type': 'sale', 'tree_view_ref' " +": " +"'account_banking_payment_export.payment_order_populate_view_move_line_tree'}" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order +msgid "" +"{'required': [('date_type', '=', 'due')], 'invisible': [('date_type', '!=', " +"'due')]}" +msgstr "" diff --git a/account_payment_order/i18n/pt_BR.po b/account_payment_order/i18n/pt_BR.po new file mode 100644 index 000000000..1de801dc1 --- /dev/null +++ b/account_payment_order/i18n/pt_BR.po @@ -0,0 +1,489 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_payment_export +# +# Translators: +# danimaribeiro , 2016 +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-08 00:46+0000\n" +"PO-Revision-Date: 2016-04-06 01:30+0000\n" +"Last-Translator: danimaribeiro \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/res_partner_bank.py:17 +#: code:addons/account_banking_payment_export/models/res_partner_bank.py:31 +#, python-format +msgid "" +"A valid BIC contains 8 or 11 caracters. The BIC '%s' contains %d caracters, " +"so it is not valid." +msgstr "Um código de banco válido contém de 8 a 11 caracteres. O BIC '%s' contém %d caracteres, ou seja não é válido" + +#. module: account_banking_payment_export +#: field:payment.mode,active:0 field:payment.mode.type,active:0 +msgid "Active" +msgstr "Ativo" + +#. module: account_banking_payment_export +#: field:bank.payment.line,amount_currency:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Amount" +msgstr "Total" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_res_bank +msgid "Bank" +msgstr "Banco" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_res_partner_bank +msgid "Bank Accounts" +msgstr "Contas bancárias" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_form +#: field:payment.line,bank_line_id:0 +msgid "Bank Payment Line" +msgstr "Linha de pagamento bancário" + +#. module: account_banking_payment_export +#: field:bank.payment.line,name:0 +msgid "Bank Payment Line Ref" +msgstr "Referência do pagamento" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_tree +#: model:ir.actions.act_window,name:account_banking_payment_export.bank_payment_line_action +#: model:ir.model,name:account_banking_payment_export.model_bank_payment_line +#: view:payment.order:account_banking_payment_export.view_payment_order_form +#: field:payment.order,bank_line_ids:0 +msgid "Bank Payment Lines" +msgstr "Linhas de pagamento bancária" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "Cancel" +msgstr "Cancelar" + +#. module: account_banking_payment_export +#: field:payment.mode.type,code:0 +msgid "Code" +msgstr "Código" + +#. module: account_banking_payment_export +#: field:bank.payment.line,communication:0 +msgid "Communication" +msgstr "Comunicação" + +#. module: account_banking_payment_export +#: field:bank.payment.line,company_id:0 +msgid "Company" +msgstr "Empresa" + +#. module: account_banking_payment_export +#: field:bank.payment.line,create_uid:0 field:payment.manual,create_uid:0 +#: field:payment.mode.type,create_uid:0 +msgid "Created by" +msgstr "Criado por" + +#. module: account_banking_payment_export +#: field:bank.payment.line,create_date:0 field:payment.manual,create_date:0 +#: field:payment.mode.type,create_date:0 +msgid "Created on" +msgstr "Criado em" + +#. module: account_banking_payment_export +#: selection:payment.mode.type,payment_order_type:0 +msgid "Debit" +msgstr "Débito" + +#. module: account_banking_payment_export +#: selection:payment.order,payment_order_type:0 +msgid "Direct debit" +msgstr "Débito direto" + +#. module: account_banking_payment_export +#: selection:payment.mode,default_date_type:0 +msgid "Due" +msgstr "Vence em" + +#. module: account_banking_payment_export +#: selection:payment.order.create,date_type:0 +msgid "Due Date" +msgstr "Data de vencimento" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Entry Information" +msgstr "Registro de informação" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:152 +#, python-format +msgid "Entry Lines" +msgstr "Linhas de pagamento" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:74 +#, python-format +msgid "Error" +msgstr "Erro" + +#. module: account_banking_payment_export +#: field:payment.mode,type:0 +msgid "Export type" +msgstr "Tipo de exportação" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "General Information" +msgstr "Informação geral" + +#. module: account_banking_payment_export +#: field:payment.mode,group_lines:0 +msgid "Group lines in payment orders" +msgstr "Agrupar linhas nas ordens de pagamento" + +#. module: account_banking_payment_export +#: field:bank.payment.line,id:0 field:payment.manual,id:0 +#: field:payment.mode.type,id:0 +msgid "ID" +msgstr "ID" + +#. module: account_banking_payment_export +#: help:payment.mode,group_lines:0 +msgid "" +"If this mark is checked, the payment order lines will be grouped when validating the payment order before exporting the bank file. The grouping will be done only if the following fields matches:\n" +"* Partner\n" +"* Currency\n" +"* Destination Bank Account\n" +"* Communication Type (structured, free)\n" +"* Payment Date\n" +"(other modules can set additional fields to restrict the grouping.)" +msgstr "Se marcado, as linhas das ordens serão agrupadas quando validadas antes de exportar o arquivo do banco. O agrupamento será feito apenas se os campos forem iguais:\n* Parceiro\n* Moeda\n* Conta bancária destino\n* TIpo de comunicação\n* Data do pagamento\n(outros módulos podem adicionar campos adicionais)" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Information" +msgstr "Informação" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_account_invoice +msgid "Invoice" +msgstr "Fatura" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Journal Entry" +msgstr "Entrada do diário" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +#: model:ir.model,name:account_banking_payment_export.model_account_move_line +msgid "Journal Items" +msgstr "Itens de Diário" + +#. module: account_banking_payment_export +#: field:payment.mode,default_journal_ids:0 +#: field:payment.order.create,journal_ids:0 +msgid "Journals Filter" +msgstr "Filtro de diário" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order +msgid "Keep empty for using all journals" +msgstr "Manter vazio para usar todos os diários" + +#. module: account_banking_payment_export +#: field:bank.payment.line,write_uid:0 field:payment.manual,write_uid:0 +#: field:payment.mode.type,write_uid:0 +msgid "Last Updated by" +msgstr "Última Atualização por" + +#. module: account_banking_payment_export +#: field:bank.payment.line,write_date:0 field:payment.manual,write_date:0 +#: field:payment.mode.type,write_date:0 +msgid "Last Updated on" +msgstr "Última Atualização em" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +msgid "Line grouping" +msgstr "Agrupamento de linha" + +#. module: account_banking_payment_export +#: field:payment.mode,default_invoice:0 field:payment.order.create,invoice:0 +msgid "Linked to an Invoice or Refund" +msgstr "Vinculado a uma fatura ou reembolso" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "Manual payment" +msgstr "Pagamento manual" + +#. module: account_banking_payment_export +#: selection:payment.mode,default_date_type:0 +msgid "Move" +msgstr "Movimentação" + +#. module: account_banking_payment_export +#: selection:payment.order.create,date_type:0 +#: field:payment.order.create,move_date:0 +msgid "Move Date" +msgstr "Data da movimentação" + +#. module: account_banking_payment_export +#: field:payment.mode.type,name:0 +msgid "Name" +msgstr "Nome" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +#: field:payment.mode,note:0 +msgid "Note" +msgstr "Nota" + +#. module: account_banking_payment_export +#: field:bank.payment.line,order_id:0 +msgid "Order" +msgstr "Ordem" + +#. module: account_banking_payment_export +#: field:payment.mode.type,payment_order_type:0 +msgid "Order type" +msgstr "Tipo de ordem" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Owner Account" +msgstr "Dono da conta" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Partner Bank Account" +msgstr "Conta bancária parceiro" + +#. module: account_banking_payment_export +#: selection:payment.mode.type,payment_order_type:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +#: selection:payment.order,payment_order_type:0 +msgid "Payment" +msgstr "Pagamento" + +#. module: account_banking_payment_export +#: model:ir.actions.act_window,name:account_banking_payment_export.action_payment_mode_type +#: model:ir.ui.menu,name:account_banking_payment_export.menu_payment_mode_type +msgid "Payment Export Types" +msgstr "Tipos de exportação dos Pagamentos" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_line +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Payment Line" +msgstr "Linha de Pagamento" + +#. module: account_banking_payment_export +#: field:bank.payment.line,payment_line_ids:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Payment Lines" +msgstr "Linhas do pagamento" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_mode +msgid "Payment Mode" +msgstr "Modo de pagamento" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_mode_type +msgid "Payment Mode Type" +msgstr "Tipo do Modo de Pagamento" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_order +msgid "Payment Order" +msgstr "Ordem de Pagamento" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:59 +#, python-format +msgid "Payment Order Export" +msgstr "Exportação da Ordem de Pagamento" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:245 +#, python-format +msgid "Payment Orders" +msgstr "Ordens de Pagamento" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form +#: help:payment.mode.type,name:0 +msgid "Payment Type" +msgstr "Tipo de pagamento" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_tree +msgid "Payment Types" +msgstr "Tipos de pagamento" + +#. module: account_banking_payment_export +#: field:payment.order,payment_order_type:0 +msgid "Payment order type" +msgstr "Tipo da ordem de pagamento" + +#. module: account_banking_payment_export +#: field:payment.mode.type,ir_model_id:0 +msgid "Payment wizard" +msgstr "Assistente para Pagamentos" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "" +"Please execute payment order manually, and click OK when succesfully sent." +msgstr "Por favor execute a ordem de pagamento manualmente, e clique OK quando terminar de enviar." + +#. module: account_banking_payment_export +#: field:payment.mode,default_populate_results:0 +#: field:payment.order.create,populate_results:0 +msgid "Populate Results Directly" +msgstr "Popular resultados diretamente" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_form +msgid "Related Payment Lines" +msgstr "Linhas relacionadas do pagamento" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +msgid "Select Move Lines to Pay - Default Values" +msgstr "Selecionar os movimentos para pagar - Valores padrão" + +#. module: account_banking_payment_export +#: help:payment.mode,type:0 +msgid "Select the Export Payment Type for the Payment Mode." +msgstr "Selecione os tipos de pagamento que permitem exportação para o Modo de Pagamento." + +#. module: account_banking_payment_export +#: help:payment.mode.type,ir_model_id:0 +msgid "" +"Select the Payment Wizard for payments of this type. Leave empty for manual " +"processing" +msgstr "Selecione o Assistente de Pagamento para pagamentos deste tipo. Deixe vazio para processamento manual" + +#. module: account_banking_payment_export +#: field:payment.mode,purchase_ok:0 +msgid "Selectable on purchase operations" +msgstr "Selecionável em operações de compra" + +#. module: account_banking_payment_export +#: field:payment.mode,sale_ok:0 +msgid "Selectable on sale operations" +msgstr "Selecionável em operações de venda" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_manual +msgid "Send payment order(s) manually" +msgstr "Enviar a(s) ordem(s) de pagamento manualmente" + +#. module: account_banking_payment_export +#: help:payment.mode.type,code:0 +msgid "Specify the Code for Payment Type" +msgstr "Especifique o código para o Tipo de Pagamento" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_invoice.py:16 +#, python-format +msgid "Structured Reference" +msgstr "Referência estruturada" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form +#: field:payment.mode.type,suitable_bank_types:0 +msgid "Suitable bank types" +msgstr "Tipos de contas bancárias adequadas" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:152 +#, python-format +msgid "The amount for Partner '%s' is negative or null (%.2f) !" +msgstr "O total para o parceiro '%s' é negativo ou nulo (%.2f) !" + +#. module: account_banking_payment_export +#: help:payment.mode.type,payment_order_type:0 +msgid "" +"This field determines if this type applies to customers (Debit) or suppliers" +" (Payment)" +msgstr "Este campo determina se este tipo se aplica a clientes (Cobrança) ou a fornecedores (Pagamentos)" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_tree +msgid "Total Amount" +msgstr "Valor total" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Total Credit" +msgstr "Total de crédito" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Total Debit" +msgstr "Total débito" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Total in Company Currency" +msgstr "Total na moeda da empresa" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Transaction Information" +msgstr "Informação da transação" + +#. module: account_banking_payment_export +#: field:payment.mode,default_date_type:0 +#: field:payment.order.create,date_type:0 +msgid "Type of Date Filter" +msgstr "Tipo de filtro de data" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:75 +#, python-format +msgid "You can only combine payment orders of the same type" +msgstr "Você pode combinar ordens de pagamento do mesmo tipo" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "launch_wizard" +msgstr "launch_wizard" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "" +"{\n" +" 'invisible': [('state', '!=', 'draft')]}" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order_lines +msgid "" +"{'display_credit': context.get('display_credit', False),'display_debit': " +"context.get('display_debit', False),'journal_type': 'sale', 'tree_view_ref' " +": " +"'account_banking_payment_export.payment_order_populate_view_move_line_tree'}" +msgstr "" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order +msgid "" +"{'required': [('date_type', '=', 'due')], 'invisible': [('date_type', '!=', " +"'due')]}" +msgstr "" diff --git a/account_payment_order/i18n/sl.po b/account_payment_order/i18n/sl.po new file mode 100644 index 000000000..202b59504 --- /dev/null +++ b/account_payment_order/i18n/sl.po @@ -0,0 +1,489 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_banking_payment_export +# +# Translators: +# Matjaž Mozetič , 2016 +msgid "" +msgstr "" +"Project-Id-Version: bank-payment (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-18 10:57+0000\n" +"PO-Revision-Date: 2016-04-19 08:59+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-bank-payment-8-0/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/res_partner_bank.py:17 +#: code:addons/account_banking_payment_export/models/res_partner_bank.py:31 +#, python-format +msgid "" +"A valid BIC contains 8 or 11 caracters. The BIC '%s' contains %d caracters, " +"so it is not valid." +msgstr "Veljavna BIC koda vsebuje 8 do 11 znakov. BIC '%s' vsebuje %d znakov, zato ni veljavna." + +#. module: account_banking_payment_export +#: field:payment.mode,active:0 field:payment.mode.type,active:0 +msgid "Active" +msgstr "Aktivno" + +#. module: account_banking_payment_export +#: field:bank.payment.line,amount_currency:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Amount" +msgstr "Znesek" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_res_bank +msgid "Bank" +msgstr "Banka" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_res_partner_bank +msgid "Bank Accounts" +msgstr "Bančni računi" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_form +#: field:payment.line,bank_line_id:0 +msgid "Bank Payment Line" +msgstr "Postavka bančnega plačila" + +#. module: account_banking_payment_export +#: field:bank.payment.line,name:0 +msgid "Bank Payment Line Ref" +msgstr "Sklic postavke bančnega plačila" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_tree +#: model:ir.actions.act_window,name:account_banking_payment_export.bank_payment_line_action +#: model:ir.model,name:account_banking_payment_export.model_bank_payment_line +#: view:payment.order:account_banking_payment_export.view_payment_order_form +#: field:payment.order,bank_line_ids:0 +msgid "Bank Payment Lines" +msgstr "Postavke bančnih plačil" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "Cancel" +msgstr "Preklic" + +#. module: account_banking_payment_export +#: field:payment.mode.type,code:0 +msgid "Code" +msgstr "Koda" + +#. module: account_banking_payment_export +#: field:bank.payment.line,communication:0 +msgid "Communication" +msgstr "Komunikacija" + +#. module: account_banking_payment_export +#: field:bank.payment.line,company_id:0 +msgid "Company" +msgstr "Družba" + +#. module: account_banking_payment_export +#: field:bank.payment.line,create_uid:0 field:payment.manual,create_uid:0 +#: field:payment.mode.type,create_uid:0 +msgid "Created by" +msgstr "Ustvaril" + +#. module: account_banking_payment_export +#: field:bank.payment.line,create_date:0 field:payment.manual,create_date:0 +#: field:payment.mode.type,create_date:0 +msgid "Created on" +msgstr "Ustvarjeno" + +#. module: account_banking_payment_export +#: selection:payment.mode.type,payment_order_type:0 +msgid "Debit" +msgstr "Breme" + +#. module: account_banking_payment_export +#: selection:payment.order,payment_order_type:0 +msgid "Direct debit" +msgstr "Neposredno breme" + +#. module: account_banking_payment_export +#: selection:payment.mode,default_date_type:0 +msgid "Due" +msgstr "Zapadlost" + +#. module: account_banking_payment_export +#: selection:payment.order.create,date_type:0 +msgid "Due Date" +msgstr "Datum zapadlosti" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Entry Information" +msgstr "Podatki o vnosu" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:152 +#, python-format +msgid "Entry Lines" +msgstr "Postavke vnosa" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:74 +#, python-format +msgid "Error" +msgstr "Napaka" + +#. module: account_banking_payment_export +#: field:payment.mode,type:0 +msgid "Export type" +msgstr "Tip izvoza" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "General Information" +msgstr "Splošne informacije" + +#. module: account_banking_payment_export +#: field:payment.mode,group_lines:0 +msgid "Group lines in payment orders" +msgstr "Združevanje postavk v plačilnih nalogih" + +#. module: account_banking_payment_export +#: field:bank.payment.line,id:0 field:payment.manual,id:0 +#: field:payment.mode.type,id:0 +msgid "ID" +msgstr "ID" + +#. module: account_banking_payment_export +#: help:payment.mode,group_lines:0 +msgid "" +"If this mark is checked, the payment order lines will be grouped when validating the payment order before exporting the bank file. The grouping will be done only if the following fields matches:\n" +"* Partner\n" +"* Currency\n" +"* Destination Bank Account\n" +"* Communication Type (structured, free)\n" +"* Payment Date\n" +"(other modules can set additional fields to restrict the grouping.)" +msgstr "Če označeno, se postavke plačilnega naloga združujejo ob overjanju plačilnega naloga pred izvozom v bančno datoteko. Združevanje se izvede le ob ujemanju naslednjih polj:\n* Partner\n* Valuta\n* Ciljni bančni račun\n* Tip komunikacije (strukturirana, prosta)\n* Datum plačila\n(drugi moduli lahko nastavijo tudi dodatna polja za omejevanje grupiranja)" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Information" +msgstr "Informacija" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_account_invoice +msgid "Invoice" +msgstr "Račun" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Journal Entry" +msgstr "Dnevniški vnos" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +#: model:ir.model,name:account_banking_payment_export.model_account_move_line +msgid "Journal Items" +msgstr "Dnevniške postavke" + +#. module: account_banking_payment_export +#: field:payment.mode,default_journal_ids:0 +#: field:payment.order.create,journal_ids:0 +msgid "Journals Filter" +msgstr "Dnevniški filter" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order +msgid "Keep empty for using all journals" +msgstr "Pustite prazno za uporabo vseh dnevnikov" + +#. module: account_banking_payment_export +#: field:bank.payment.line,write_uid:0 field:payment.manual,write_uid:0 +#: field:payment.mode.type,write_uid:0 +msgid "Last Updated by" +msgstr "Zadnji posodobil" + +#. module: account_banking_payment_export +#: field:bank.payment.line,write_date:0 field:payment.manual,write_date:0 +#: field:payment.mode.type,write_date:0 +msgid "Last Updated on" +msgstr "Zadnjič posodobljeno" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +msgid "Line grouping" +msgstr "Združevanje postavk" + +#. module: account_banking_payment_export +#: field:payment.mode,default_invoice:0 field:payment.order.create,invoice:0 +msgid "Linked to an Invoice or Refund" +msgstr "Vezano na račun ali vračilo" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "Manual payment" +msgstr "Ročno plačilo" + +#. module: account_banking_payment_export +#: selection:payment.mode,default_date_type:0 +msgid "Move" +msgstr "Premik" + +#. module: account_banking_payment_export +#: selection:payment.order.create,date_type:0 +#: field:payment.order.create,move_date:0 +msgid "Move Date" +msgstr "Datum premika" + +#. module: account_banking_payment_export +#: field:payment.mode.type,name:0 +msgid "Name" +msgstr "Naziv" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +#: field:payment.mode,note:0 +msgid "Note" +msgstr "Opomba" + +#. module: account_banking_payment_export +#: field:bank.payment.line,order_id:0 +msgid "Order" +msgstr "Nalog" + +#. module: account_banking_payment_export +#: field:payment.mode.type,payment_order_type:0 +msgid "Order type" +msgstr "Tip naloga" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Owner Account" +msgstr "Račun lastnika" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Partner Bank Account" +msgstr "Bančni račun partnerja" + +#. module: account_banking_payment_export +#: selection:payment.mode.type,payment_order_type:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +#: selection:payment.order,payment_order_type:0 +msgid "Payment" +msgstr "Plačilo" + +#. module: account_banking_payment_export +#: model:ir.actions.act_window,name:account_banking_payment_export.action_payment_mode_type +#: model:ir.ui.menu,name:account_banking_payment_export.menu_payment_mode_type +msgid "Payment Export Types" +msgstr "Tipi izvoza plačil" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_line +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Payment Line" +msgstr "Plačilna postavka" + +#. module: account_banking_payment_export +#: field:bank.payment.line,payment_line_ids:0 +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Payment Lines" +msgstr "Plačilne postavke" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_mode +msgid "Payment Mode" +msgstr "Metoda plačila" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_mode_type +msgid "Payment Mode Type" +msgstr "Tip metode plačila" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_order +msgid "Payment Order" +msgstr "Plačilni nalog" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:59 +#, python-format +msgid "Payment Order Export" +msgstr "Izvoz plačilnega naloga" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/wizard/payment_order_create.py:245 +#, python-format +msgid "Payment Orders" +msgstr "Plačilni nalogi" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form +#: help:payment.mode.type,name:0 +msgid "Payment Type" +msgstr "Tip plačila" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_tree +msgid "Payment Types" +msgstr "Tipi plačil" + +#. module: account_banking_payment_export +#: field:payment.order,payment_order_type:0 +msgid "Payment order type" +msgstr "Tip plačilnega naloga" + +#. module: account_banking_payment_export +#: field:payment.mode.type,ir_model_id:0 +msgid "Payment wizard" +msgstr "Čarovnik za plačila" + +#. module: account_banking_payment_export +#: view:payment.manual:account_banking_payment_export.view_payment_manual_form +msgid "" +"Please execute payment order manually, and click OK when succesfully sent." +msgstr "Ročno izvedite plačilni nalog in kliknite 'V redu' po uspešnem pošiljanju." + +#. module: account_banking_payment_export +#: field:payment.mode,default_populate_results:0 +#: field:payment.order.create,populate_results:0 +msgid "Populate Results Directly" +msgstr "Neposredno zapolni rezultate" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_form +msgid "Related Payment Lines" +msgstr "Povezane plačilne postavke" + +#. module: account_banking_payment_export +#: view:payment.mode:account_banking_payment_export.view_payment_mode_form_inherit +msgid "Select Move Lines to Pay - Default Values" +msgstr "Izbira postavk premikov za plačilo - privzete vrednosti" + +#. module: account_banking_payment_export +#: help:payment.mode,type:0 +msgid "Select the Export Payment Type for the Payment Mode." +msgstr "Izbira tipa izvoza plačila za metodo plačila." + +#. module: account_banking_payment_export +#: help:payment.mode.type,ir_model_id:0 +msgid "" +"Select the Payment Wizard for payments of this type. Leave empty for manual " +"processing" +msgstr "Izbira čarovnika za plačila za plačila tega tipa. Pustite prazno za ročno obdelavo." + +#. module: account_banking_payment_export +#: field:payment.mode,purchase_ok:0 +msgid "Selectable on purchase operations" +msgstr "Izbirno pri nabavnih operacijah" + +#. module: account_banking_payment_export +#: field:payment.mode,sale_ok:0 +msgid "Selectable on sale operations" +msgstr "Izbirno pri prodajnih operacijah" + +#. module: account_banking_payment_export +#: model:ir.model,name:account_banking_payment_export.model_payment_manual +msgid "Send payment order(s) manually" +msgstr "Ročno pošiljanje plačilnega naloga (plačilnih nalogov)" + +#. module: account_banking_payment_export +#: help:payment.mode.type,code:0 +msgid "Specify the Code for Payment Type" +msgstr "Določi kodo za tip plačila" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_invoice.py:16 +#, python-format +msgid "Structured Reference" +msgstr "Strukturiran sklic" + +#. module: account_banking_payment_export +#: view:payment.mode.type:account_banking_payment_export.view_payment_mode_type_form +#: field:payment.mode.type,suitable_bank_types:0 +msgid "Suitable bank types" +msgstr "Ustrezni tipi bank" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:152 +#, python-format +msgid "The amount for Partner '%s' is negative or null (%.2f) !" +msgstr "Znesek za partnerja '%s' je negativen ali ničen (%.2f) !" + +#. module: account_banking_payment_export +#: help:payment.mode.type,payment_order_type:0 +msgid "" +"This field determines if this type applies to customers (Debit) or suppliers" +" (Payment)" +msgstr "To polje določa, če se ta tip nanaša na kupce (breme) ali dobavitelje (plačilo )" + +#. module: account_banking_payment_export +#: view:bank.payment.line:account_banking_payment_export.bank_payment_line_tree +msgid "Total Amount" +msgstr "Skupni znesek" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Total Credit" +msgstr "Skupaj dobroimetje" + +#. module: account_banking_payment_export +#: view:account.move.line:account_banking_payment_export.payment_order_populate_view_move_line_tree +msgid "Total Debit" +msgstr "Skupaj breme" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Total in Company Currency" +msgstr "Skupaj v valuti družbe" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "Transaction Information" +msgstr "Podatki o transakciji" + +#. module: account_banking_payment_export +#: field:payment.mode,default_date_type:0 +#: field:payment.order.create,date_type:0 +msgid "Type of Date Filter" +msgstr "Tip datumskega filtra" + +#. module: account_banking_payment_export +#: code:addons/account_banking_payment_export/models/account_payment.py:75 +#, python-format +msgid "You can only combine payment orders of the same type" +msgstr "Kombinirate lahko le plačilne naloge istega tipa" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "launch_wizard" +msgstr "launch_wizard" + +#. module: account_banking_payment_export +#: view:payment.order:account_banking_payment_export.view_payment_order_form +msgid "" +"{\n" +" 'invisible': [('state', '!=', 'draft')]}" +msgstr "{\n 'invisible': [('state', '!=', 'draft')]}" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order_lines +msgid "" +"{'display_credit': context.get('display_credit', False),'display_debit': " +"context.get('display_debit', False),'journal_type': 'sale', 'tree_view_ref' " +": " +"'account_banking_payment_export.payment_order_populate_view_move_line_tree'}" +msgstr "{'display_credit': context.get('display_credit', False),'display_debit': context.get('display_debit', False),'journal_type': 'sale', 'tree_view_ref' : 'account_banking_payment_export.payment_order_populate_view_move_line_tree'}" + +#. module: account_banking_payment_export +#: view:payment.order.create:account_banking_payment_export.view_create_payment_order +msgid "" +"{'required': [('date_type', '=', 'due')], 'invisible': [('date_type', '!=', " +"'due')]}" +msgstr "{'required': [('date_type', '=', 'due')], 'invisible': [('date_type', '!=', 'due')]}" diff --git a/account_banking_payment_export/models/account_invoice.py b/account_payment_order/migrations/8.0.0.1.166/pre-migrate.py similarity index 56% rename from account_banking_payment_export/models/account_invoice.py rename to account_payment_order/migrations/8.0.0.1.166/pre-migrate.py index 89da3b71b..870747844 100644 --- a/account_banking_payment_export/models/account_invoice.py +++ b/account_payment_order/migrations/8.0.0.1.166/pre-migrate.py @@ -1,11 +1,7 @@ # -*- coding: utf-8 -*- ############################################################################## # -# Copyright (C) 2014 ACSONE SA (). -# -# All other contributions are (C) by their respective contributors -# -# All Rights Reserved +# This module copyright (C) 2015 Therp BV (). # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -22,14 +18,20 @@ # ############################################################################## -from openerp import api, models, _ - -class AccountInvoice(models.Model): - _inherit = 'account.invoice' - - @api.model - def _get_reference_type(self): - rt = super(AccountInvoice, self)._get_reference_type() - rt.append(('structured', _('Structured Reference'))) - return rt +def migrate(cr, version): + cr.execute( + 'SELECT count(attname) FROM pg_attribute ' + 'WHERE attrelid = ' + '( SELECT oid FROM pg_class WHERE relname = %s ) ' + 'AND attname = %s', + ('payment_order', 'total')) + if cr.fetchone()[0] == 0: + cr.execute('alter table payment_order add column total numeric') + cr.execute( + 'update payment_order ' + 'set total=totals.total ' + 'from ' + '(select order_id, sum(amount_currency) total ' + 'from payment_line group by order_id) totals ' + 'where payment_order.id=totals.order_id') diff --git a/account_payment_order/models/__init__.py b/account_payment_order/models/__init__.py new file mode 100644 index 000000000..650494570 --- /dev/null +++ b/account_payment_order/models/__init__.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- + +from . import account_payment_mode +from . import account_payment_order +from . import account_payment_line +from . import bank_payment_line +from . import account_move +from . import account_move_line +from . import account_invoice +from . import res_bank diff --git a/account_payment_order/models/account_invoice.py b/account_payment_order/models/account_invoice.py new file mode 100644 index 000000000..e9cd0fe85 --- /dev/null +++ b/account_payment_order/models/account_invoice.py @@ -0,0 +1,110 @@ +# -*- coding: utf-8 -*- +# © 2013-2014 ACSONE SA (). +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api, _ +from openerp.exceptions import UserError + + +class AccountInvoice(models.Model): + _inherit = 'account.invoice' + + payment_order_ok = fields.Boolean( + related='payment_mode_id.payment_order_ok', readonly=True) + + @api.model + def _get_reference_type(self): + rt = super(AccountInvoice, self)._get_reference_type() + rt.append(('structured', _('Structured Reference'))) + return rt + + @api.model + def line_get_convert(self, line, part): + """Copy supplier bank account from invoice to account move line""" + res = super(AccountInvoice, self).line_get_convert(line, part) + if line.get('type') == 'dest' and line.get('invoice_id'): + invoice = self.browse(line['invoice_id']) + if invoice.type in ('in_invoice', 'in_refund'): + res['partner_bank_id'] = invoice.partner_bank_id.id or False + return res + + @api.multi + def _prepare_new_payment_order(self): + self.ensure_one() + vals = {'payment_mode_id': self.payment_mode_id.id} + return vals + + @api.multi + def create_account_payment_line(self): + apoo = self.env['account.payment.order'] + aplo = self.env['account.payment.line'] + result_payorder_ids = [] + action_payment_type = 'debit' + for inv in self: + if inv.state != 'open': + raise UserError(_( + "The invoice %s is not in Open state") % inv.number) + if not inv.payment_mode_id: + raise UserError(_( + "No Payment Mode on invoice %s") % inv.number) + if not inv.move_id: + raise UserError(_( + "No Journal Entry on invoice %s") % inv.number) + if not inv.payment_order_ok: + raise UserError(_( + "The invoice %s has a payment mode '%s' " + "which is not selectable in payment orders.")) + payorders = apoo.search([ + ('payment_mode_id', '=', inv.payment_mode_id.id), + ('state', '=', 'draft')]) + if payorders: + payorder = payorders[0] + new_payorder = False + else: + payorder = apoo.create(inv._prepare_new_payment_order()) + new_payorder = True + result_payorder_ids.append(payorder.id) + action_payment_type = payorder.payment_type + count = 0 + for line in inv.move_id.line_ids: + if line.account_id == inv.account_id and not line.reconciled: + paylines = aplo.search([ + ('move_line_id', '=', line.id), + ('state', '!=', 'cancel')]) + if not paylines: + line.create_payment_line_from_move_line(payorder) + count += 1 + if count: + if new_payorder: + inv.message_post(_( + '%d payment lines added to the new draft payment ' + 'order %s which has been automatically created.') + % (count, payorder.name)) + else: + inv.message_post(_( + '%d payment lines added to the existing draft ' + 'payment order %s.') + % (count, payorder.name)) + else: + raise UserError(_( + 'No Payment Line created for invoice %s because ' + 'it already exists or because this invoice is ' + 'already paid.') % inv.number) + action = self.env['ir.actions.act_window'].for_xml_id( + 'account_payment_order', + 'account_payment_order_%s_action' % action_payment_type) + if len(result_payorder_ids) == 1: + action.update({ + 'view_mode': 'form,tree,pivot,graph', + 'res_id': payorder.id, + 'views': False, + }) + else: + action.update({ + 'view_mode': 'tree,form,pivot,graph', + 'domain': "[('id', 'in', %s)]" % result_payorder_ids, + 'views': False, + }) + return action diff --git a/account_payment_order/models/account_move.py b/account_payment_order/models/account_move.py new file mode 100644 index 000000000..1fda02896 --- /dev/null +++ b/account_payment_order/models/account_move.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields + + +class AccountMove(models.Model): + _inherit = 'account.move' + + payment_order_id = fields.Many2one( + 'account.payment.order', string='Payment Order', copy=False, + readonly=True) diff --git a/account_payment_order/models/account_move_line.py b/account_payment_order/models/account_move_line.py new file mode 100644 index 000000000..d87b57351 --- /dev/null +++ b/account_payment_order/models/account_move_line.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +# © 2014-2016 Akretion (Alexis de Lattre ) +# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api + + +class AccountMoveLine(models.Model): + _inherit = 'account.move.line' + + partner_bank_id = fields.Many2one( + 'res.partner.bank', string='Partner Bank Account', + help='Bank account on which we should pay the supplier') + bank_payment_line_id = fields.Many2one( + 'bank.payment.line', string='Bank Payment Line', + readonly=True) + + @api.multi + def _prepare_payment_line_vals(self, payment_order): + self.ensure_one() + assert payment_order, 'Missing payment order' + aplo = self.env['account.payment.line'] + # default values for communication_type and communication + communication_type = 'normal' + communication = self.move_id.name or '-' + # change these default values if move line is linked to an invoice + if self.invoice_id: + if self.invoice_id.reference_type != 'none': + communication = self.invoice_id.reference + ref2comm_type =\ + aplo.invoice_reference_type2communication_type() + communication_type =\ + ref2comm_type[self.invoice_id.reference_type] + else: + if ( + self.invoice_id.type in ('in_invoice', 'in_refund') and + self.invoice_id.reference): + communication = self.invoice_id.reference + if self.currency_id: + currency_id = self.currency_id.id + amount_currency = self.amount_residual_currency + else: + currency_id = self.company_id.currency_id.id + amount_currency = self.amount_residual + # TODO : check that self.amount_residual_currency is 0 + # in this case + if payment_order.payment_type == 'outbound': + amount_currency *= -1 + vals = { + 'order_id': payment_order.id, + 'partner_bank_id': self.partner_bank_id.id, + 'partner_id': self.partner_id.id, + 'move_line_id': self.id, + 'communication': communication, + 'communication_type': communication_type, + 'currency_id': currency_id, + 'amount_currency': amount_currency, + # date is set when the user confirms the payment order + } + return vals + + @api.multi + def create_payment_line_from_move_line(self, payment_order): + aplo = self.env['account.payment.line'] + for mline in self: + aplo.create(mline._prepare_payment_line_vals(payment_order)) + return diff --git a/account_payment_order/models/account_payment_line.py b/account_payment_order/models/account_payment_line.py new file mode 100644 index 000000000..a938cc7c6 --- /dev/null +++ b/account_payment_order/models/account_payment_line.py @@ -0,0 +1,138 @@ +# -*- coding: utf-8 -*- +# © 2015-2016 Akretion - Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api, _ +from openerp.exceptions import UserError + + +class AccountPaymentLine(models.Model): + _name = 'account.payment.line' + _description = 'Payment Lines' + + name = fields.Char(string='Payment Reference', readonly=True, copy=False) + order_id = fields.Many2one( + 'account.payment.order', string='Payment Order', + ondelete='cascade', select=True) + company_id = fields.Many2one( + related='order_id.company_id', store=True, readonly=True) + company_currency_id = fields.Many2one( + related='order_id.company_currency_id', store=True, readonly=True) + payment_type = fields.Selection( + related='order_id.payment_type', store=True, readonly=True) + bank_account_required = fields.Boolean( + related='order_id.payment_method_id.bank_account_required', + readonly=True) + state = fields.Selection( + related='order_id.state', string='State', + readonly=True, store=True) + move_line_id = fields.Many2one( + 'account.move.line', string='Journal Item', + ondelete='restrict') + ml_maturity_date = fields.Date( + related='move_line_id.date_maturity', readonly=True) + currency_id = fields.Many2one( + 'res.currency', string='Currency of the Payment Transaction', + required=True, + default=lambda self: self.env.user.company_id.currency_id) + # v8 field : currency + amount_currency = fields.Monetary( + string="Amount", currency_field='currency_id') + amount_company_currency = fields.Monetary( + compute='compute_amount_company_currency', + string='Amount in Company Currency', readonly=True, + currency_field='company_currency_id') # v8 field : amount + partner_id = fields.Many2one( + 'res.partner', string='Partner', required=True, + domain=[('parent_id', '=', False)]) + partner_bank_id = fields.Many2one( + 'res.partner.bank', string='Partner Bank Account', required=False, + ondelete='restrict') # v8 field : bank_id + date = fields.Date(string='Payment Date') + communication = fields.Char( + string='Communication', required=True, + help="Label of the payment that will be seen by the destinee") + communication_type = fields.Selection([ + ('normal', 'Free'), + ], string='Communication Type', required=True, default='normal') + # v8 field : state + bank_line_id = fields.Many2one( + 'bank.payment.line', string='Bank Payment Line', readonly=True) + + _sql_constraints = [( + 'name_company_unique', + 'unique(name, company_id)', + 'A payment line already exists with this reference ' + 'in the same company!' + )] + + @api.model + def create(self, vals): + if vals.get('name', 'New') == 'New': + vals['name'] = self.env['ir.sequence'].next_by_code( + 'account.payment.line') or 'New' + return super(AccountPaymentLine, self).create(vals) + + @api.multi + @api.depends( + 'amount_currency', 'currency_id', 'company_currency_id', 'date') + def compute_amount_company_currency(self): + for line in self: + if line.currency_id and line.company_currency_id: + line.amount_company_currency = line.currency_id.with_context( + date=line.date).compute( + line.amount_currency, line.company_currency_id) + + @api.multi + def payment_line_hashcode(self): + self.ensure_one() + bplo = self.env['bank.payment.line'] + values = [] + for field in bplo.same_fields_payment_line_and_bank_payment_line(): + values.append(unicode(self[field])) + # Don't group the payment lines that are attached to the same supplier + # but to move lines with different accounts (very unlikely), + # for easier generation/comprehension of the transfer move + values.append(unicode(self.move_line_id.account_id or False)) + # Don't group the payment lines that use a structured communication + # otherwise it would break the structured communication system ! + if self.communication_type != 'normal': + values.append(unicode(self.id)) + hashcode = '-'.join(values) + return hashcode + + @api.onchange('partner_id') + def partner_id_change(self): + partner_bank = False + if self.partner_id.bank_ids: + partner_bank = self.partner_id.bank_ids[0] + self.partner_bank_id = partner_bank + + @api.onchange('move_line_id') + def move_line_id_change(self): + if self.move_line_id: + vals = self.move_line_id._prepare_payment_line_vals(self.order_id) + vals.pop('order_id') + for field, value in vals.iteritems(): + self[field] = value + else: + self.partner_id = False + self.partner_bank_id = False + self.amount_currency = 0.0 + self.currency_id = False + self.communication = False + + def invoice_reference_type2communication_type(self): + """This method is designed to be inherited by + localization modules""" + # key = value of 'reference_type' field on account_invoice + # value = value of 'communication_type' field on account_payment_line + res = {'none': 'normal'} + return res + + @api.multi + def draft2open_payment_line_check(self): + self.ensure_one() + if self.bank_account_required and not self.partner_bank_id: + raise UserError(_( + 'Missing Partner Bank Account on payment line %s') % self.name) diff --git a/account_payment_order/models/account_payment_mode.py b/account_payment_order/models/account_payment_mode.py new file mode 100644 index 000000000..263117b96 --- /dev/null +++ b/account_payment_order/models/account_payment_mode.py @@ -0,0 +1,135 @@ +# -*- coding: utf-8 -*- +# © 2009 EduSense BV () +# © 2011-2013 Therp BV () +# © 2014-2016 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2016 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api, _ +from openerp.exceptions import ValidationError + + +class AccountPaymentMode(models.Model): + """This corresponds to the object payment.mode of v8 with some + important changes""" + _inherit = "account.payment.mode" + + payment_order_ok = fields.Boolean( + string='Selectable in Payment Orders', default=True) + no_debit_before_maturity = fields.Boolean( + string="Disallow Debit Before Maturity Date", + help="If you activate this option on an Inbound payment mode, " + "you will have an error message when you confirm a debit order " + "that has a payment line with a payment date before the maturity " + "date.") + # Default options for the "payment.order.create" wizard + default_payment_mode = fields.Selection([ + ('same', 'Same'), + ('same_or_null', 'Same or empty'), + ('any', 'Any'), + ], string='Payment Mode on Invoice', default='same') + default_journal_ids = fields.Many2many( + 'account.journal', string="Journals Filter") + default_invoice = fields.Boolean( + string='Linked to an Invoice or Refund', default=False) + default_target_move = fields.Selection([ + ('posted', 'All Posted Entries'), + ('all', 'All Entries'), + ], string='Target Moves', default='posted') + default_date_type = fields.Selection([ + ('due', 'Due'), + ('move', 'Move'), + ], default='due', string="Type of Date Filter") + group_lines = fields.Boolean( + string="Group Lines in Payment Orders", default=True, + help="If this mark is checked, the payment order lines will be " + "grouped when validating the payment order before exporting the " + "bank file. The grouping will be done only if the following " + "fields matches:\n" + "* Partner\n" + "* Currency\n" + "* Destination Bank Account\n" + "* Communication Type (structured, free)\n" + "* Payment Date\n" + "(other modules can set additional fields to restrict the " + "grouping.)") + generate_move = fields.Boolean( + string='Generate Accounting Entries On File Upload', default=True) + offsetting_account = fields.Selection([ + ('bank_account', 'Bank Account'), + ('transfer_account', 'Transfer Account'), + ], string='Offsetting Account', default='bank_account') + transfer_account_id = fields.Many2one( + 'account.account', string='Transfer Account', + domain=[('internal_type', '=', 'other'), ('reconcile', '=', True)], + help="Pay off lines in 'file uploaded' payment orders with a move on " + "this account. You can only select accounts of type regular " + "that are marked for reconciliation") + transfer_journal_id = fields.Many2one( + 'account.journal', string='Transfer Journal', + help='Journal to write payment entries when confirming ' + 'payment/debit orders of this mode') + move_option = fields.Selection([ + ('date', 'One move per payment date'), + ('line', 'One move per payment line'), + ], string='Move Option', default='date') + + @api.multi + @api.constrains( + 'generate_move', 'offsetting_account', + 'transfer_account_id', 'transfer_journal_id', 'move_option') + def transfer_move_constrains(self): + for mode in self: + if mode.generate_move: + if not mode.offsetting_account: + raise ValidationError(_( + "On the payment mode '%s', you must select an " + "option for the 'Offsetting Account' parameter") + % mode.name) + elif mode.offsetting_account == 'transfer_account': + if not mode.transfer_account_id: + raise ValidationError(_( + "On the payment mode '%s', you must " + "select a value for the 'Transfer Account'.") + % mode.name) + if not mode.transfer_journal_id: + raise ValidationError(_( + "On the payment mode '%s', you must " + "select a value for the 'Transfer Journal'.") + % mode.name) + if not mode.move_option: + raise ValidationError(_( + "On the payment mode '%s', you must " + "choose an option for the 'Move Option' " + "parameter.") % mode.name) + + @api.onchange('payment_method_id') + def payment_method_id_change(self): + if self.payment_method_id: + ajo = self.env['account.journal'] + aj_ids = [] + if self.payment_method_id.payment_type == 'outbound': + aj_ids = ajo.search([ + ('type', 'in', ('purchase_refund', 'purchase'))]).ids + elif self.payment_method_id.payment_type == 'inbound': + aj_ids = ajo.search([ + ('type', 'in', ('sale_refund', 'sale'))]).ids + self.default_journal_ids = [(6, 0, aj_ids)] + + @api.onchange('generate_move') + def generate_move_change(self): + if self.generate_move: + # default values + self.offsetting_account = 'bank_account' + self.move_option = 'date' + else: + self.offsetting_account = False + self.transfer_account_id = False + self.transfer_journal_id = False + self.move_option = False + + @api.onchange('offsetting_account') + def offsetting_account_change(self): + if self.offsetting_account == 'bank_account': + self.transfer_account_id = False + self.transfer_journal_id = False diff --git a/account_payment_order/models/account_payment_order.py b/account_payment_order/models/account_payment_order.py new file mode 100644 index 000000000..93777b9f2 --- /dev/null +++ b/account_payment_order/models/account_payment_order.py @@ -0,0 +1,440 @@ +# -*- coding: utf-8 -*- +# © 2009 EduSense BV () +# © 2011-2013 Therp BV () +# © 2016 Serv. Tecnol. Avanzados - Pedro M. Baeza +# © 2016 Akretion (Alexis de Lattre - alexis.delattre@akretion.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api, _ +from openerp.exceptions import UserError, ValidationError + + +class AccountPaymentOrder(models.Model): + _name = 'account.payment.order' + _description = 'Payment Order' + _inherit = ['mail.thread'] + _order = 'id desc' + + name = fields.Char( + string='Number', readonly=True, copy=False) # v8 field : name + payment_mode_id = fields.Many2one( + 'account.payment.mode', 'Payment Mode', required=True, + ondelete='restrict', track_visibility='onchange', + readonly=True, states={'draft': [('readonly', False)]}) + payment_type = fields.Selection([ + ('inbound', 'Inbound'), + ('outbound', 'Outbound'), + ], string='Payment Type', readonly=True, required=True) + payment_method_id = fields.Many2one( + 'account.payment.method', related='payment_mode_id.payment_method_id', + readonly=True, store=True) + company_id = fields.Many2one( + related='payment_mode_id.company_id', store=True, readonly=True) + company_currency_id = fields.Many2one( + related='payment_mode_id.company_id.currency_id', store=True, + readonly=True) + bank_account_link = fields.Selection( + related='payment_mode_id.bank_account_link', readonly=True) + journal_id = fields.Many2one( + 'account.journal', string='Bank Journal', ondelete='restrict', + readonly=True, states={'draft': [('readonly', False)]}, + track_visibility='onchange') + allowed_journal_ids = fields.Many2many( + 'account.journal', compute='_compute_allowed_journals', readonly=True, + string='Selectable Bank Journals') + # The journal_id field is only required at confirm step, to + # allow auto-creation of payment order from invoice + company_partner_bank_id = fields.Many2one( + related='journal_id.bank_account_id', string='Company Bank Account', + readonly=True) + state = fields.Selection([ + ('draft', 'Draft'), + ('open', 'Confirmed'), + ('generated', 'File Generated'), + ('uploaded', 'File Uploaded'), + ('cancel', 'Cancel'), + ], string='Status', readonly=True, copy=False, default='draft', + track_visibility='onchange') + date_prefered = fields.Selection([ + ('now', 'Immediately'), + ('due', 'Due Date'), + ('fixed', 'Fixed Date'), + ], string='Payment Execution Date Type', required=True, default='due', + track_visibility='onchange', readonly=True, + states={'draft': [('readonly', False)]}) + date_scheduled = fields.Date( + string='Payment Execution Date', readonly=True, + states={'draft': [('readonly', False)]}, track_visibility='onchange', + help="Select a requested date of execution if you selected 'Due Date' " + "as the Payment Execution Date Type.") + date_generated = fields.Date(string='File Generation Date', readonly=True) + date_uploaded = fields.Date(string='File Upload Date', readonly=True) + generated_user_id = fields.Many2one( + 'res.users', string='Generated by', readonly=True, ondelete='restrict', + copy=False) + payment_line_ids = fields.One2many( + 'account.payment.line', 'order_id', string='Transaction Lines', + readonly=True, states={'draft': [('readonly', False)]}) + # v8 field : line_ids + bank_line_ids = fields.One2many( + 'bank.payment.line', 'order_id', string="Bank Payment Lines", + readonly=True) + total_company_currency = fields.Monetary( + compute='_compute_total', store=True, readonly=True, + currency_field='company_currency_id') + bank_line_count = fields.Integer( + compute='_bank_line_count', string='Number of Bank Lines', + readonly=True) + move_ids = fields.One2many( + 'account.move', 'payment_order_id', string='Journal Entries', + readonly=True) + + @api.multi + @api.constrains('payment_type', 'payment_mode_id') + def payment_order_constraints(self): + for order in self: + if ( + order.payment_mode_id.payment_type and + order.payment_mode_id.payment_type != order.payment_type): + raise ValidationError(_( + "The payment type (%s) is not the same as the payment " + "type of the payment mode (%s)") % ( + order.payment_type, + order.payment_mode_id.payment_type)) + + @api.multi + @api.constrains('date_scheduled') + def check_date_scheduled(self): + today = fields.Date.context_today(self) + for order in self: + if order.date_scheduled: + if order.date_scheduled < today: + raise ValidationError(_( + "On payment order %s, the Payment Execution Date " + "is in the past (%s).") + % (order.name, order.date_scheduled)) + + @api.one + @api.depends( + 'payment_line_ids', 'payment_line_ids.amount_company_currency') + def _compute_total(self): + self.total_company_currency = sum( + self.mapped('payment_line_ids.amount_company_currency') or [0.0]) + + @api.multi + @api.depends('bank_line_ids') + def _bank_line_count(self): + for order in self: + order.bank_line_count = len(order.bank_line_ids) + + @api.multi + @api.depends('payment_mode_id') + def _compute_allowed_journals(self): + for order in self: + allowed_journal_ids = False + if order.payment_mode_id: + mode = order.payment_mode_id + if mode.bank_account_link == 'fixed': + allowed_journal_ids = mode.fixed_journal_id + else: + allowed_journal_ids = mode.variable_journal_ids + order.allowed_journal_ids = allowed_journal_ids + + @api.model + def create(self, vals): + if vals.get('name', 'New') == 'New': + vals['name'] = self.env['ir.sequence'].next_by_code( + 'account.payment.order') or 'New' + if vals.get('payment_mode_id'): + payment_mode = self.env['account.payment.mode'].browse( + vals['payment_mode_id']) + vals['payment_type'] = payment_mode.payment_type + if payment_mode.bank_account_link == 'fixed': + vals['journal_id'] = payment_mode.fixed_journal_id.id + return super(AccountPaymentOrder, self).create(vals) + + @api.onchange('payment_mode_id') + def payment_mode_id_change(self): + journal_id = False + if self.payment_mode_id: + if self.payment_mode_id.bank_account_link == 'fixed': + journal_id = self.payment_mode_id.fixed_journal_id + self.journal_id = journal_id + + @api.multi + def action_done(self): + self.write({ + 'date_done': fields.Date.context_today(self), + 'state': 'done', + }) + return True + + @api.multi + def cancel2draft(self): + self.write({'state': 'draft'}) + return True + + @api.multi + def action_cancel(self): + for order in self: + order.write({'state': 'cancel'}) + order.bank_line_ids.unlink() + return True + + @api.model + def _prepare_bank_payment_line(self, paylines): + return { + 'order_id': paylines[0].order_id.id, + 'payment_line_ids': [(6, 0, paylines.ids)], + 'communication': '-'.join( + [line.communication for line in paylines]), + } + + @api.multi + def draft2open(self): + """ + Called when you click on the 'Confirm' button + Set the 'date' on payment line depending on the 'date_prefered' + setting of the payment.order + Re-generate the bank payment lines + """ + bplo = self.env['bank.payment.line'] + today = fields.Date.context_today(self) + for order in self: + if not order.journal_id: + raise UserError(_( + 'Missing Bank Journal on payment order %s.') % order.name) + if not order.payment_line_ids: + raise UserError(_( + 'There are no transactions on payment order %s.') + % order.name) + # Delete existing bank payment lines + order.bank_line_ids.unlink() + # Create the bank payment lines from the payment lines + group_paylines = {} # key = hashcode + for payline in order.payment_line_ids: + payline.draft2open_payment_line_check() + # Compute requested payment date + if order.date_prefered == 'due': + requested_date = payline.ml_maturity_date or today + elif order.date_prefered == 'fixed': + requested_date = order.date_scheduled or today + else: + requested_date = today + # No payment date in the past + if requested_date < today: + requested_date = today + # inbound: check option no_debit_before_maturity + if ( + order.payment_type == 'inbound' and + order.payment_mode_id.no_debit_before_maturity and + payline.ml_maturity_date and + requested_date < payline.ml_maturity_date): + raise UserError(_( + "The payment mode '%s' has the option " + "'Disallow Debit Before Maturity Date'. The " + "payment line %s has a maturity date %s " + "which is after the computed payment date %s.") % ( + order.payment_mode_id.name, + payline.name, + payline.ml_maturity_date, + requested_date)) + # Write requested_date on 'date' field of payment line + payline.date = requested_date + # Group options + if order.payment_mode_id.group_lines: + hashcode = payline.payment_line_hashcode() + else: + # Use line ID as hascode, which actually means no grouping + hashcode = payline.id + if hashcode in group_paylines: + group_paylines[hashcode]['paylines'] += payline + group_paylines[hashcode]['total'] +=\ + payline.amount_currency + else: + group_paylines[hashcode] = { + 'paylines': payline, + 'total': payline.amount_currency, + } + # Create bank payment lines + for paydict in group_paylines.values(): + # Block if a bank payment line is <= 0 + if paydict['total'] <= 0: + raise UserError(_( + "The amount for Partner '%s' is negative " + "or null (%.2f) !") + % (paydict['paylines'][0].partner_id.name, + paydict['total'])) + vals = self._prepare_bank_payment_line(paydict['paylines']) + bplo.create(vals) + self.write({'state': 'open'}) + return True + + @api.multi + def generate_payment_file(self): + """Returns (payment file as string, filename)""" + self.ensure_one() + if self.payment_method_id.code == 'manual': + return (False, False) + else: + raise UserError(_( + "No handler for this payment method. Maybe you haven't " + "installed the related Odoo module.")) + + @api.multi + def open2generated(self): + self.ensure_one() + payment_file_str, filename = self.generate_payment_file() + action = {} + if payment_file_str and filename: + attachment = self.env['ir.attachment'].create({ + 'res_model': 'account.payment.order', + 'res_id': self.id, + 'name': filename, + 'datas': payment_file_str.encode('base64'), + 'datas_fname': filename, + }) + simplified_form_view = self.env.ref( + 'account_payment_order.view_attachment_simplified_form') + action = { + 'name': _('Payment File'), + 'view_mode': 'form', + 'view_id': simplified_form_view.id, + 'res_model': 'ir.attachment', + 'type': 'ir.actions.act_window', + 'target': 'current', + 'res_id': attachment.id, + } + self.write({ + 'date_generated': fields.Date.context_today(self), + 'state': 'generated', + 'generated_user_id': self._uid, + }) + return action + + @api.multi + def generated2uploaded(self): + for order in self: + if order.payment_mode_id.generate_move: + order.generate_move() + self.write({ + 'state': 'uploaded', + 'date_uploaded': fields.Date.context_today(self), + }) + return True + + @api.multi + def _prepare_move(self): + if self.payment_type == 'outbound': + ref = _('Payment order %s') % self.name + else: + ref = _('Debit order %s') % self.name + if self.payment_mode_id.offsetting_account == 'bank_account': + journal_id = self.journal_id.id + elif self.payment_mode_id.offsetting_account == 'transfer_account': + journal_id = self.payment_mode_id.transfer_journal_id.id + vals = { + 'journal_id': journal_id, + 'ref': ref, + 'payment_order_id': self.id, + 'line_ids': [], + } + return vals + + @api.multi + def _prepare_move_line_offsetting_account( + self, amount, bank_payment_lines): + if self.payment_type == 'outbound': + name = _('Payment order %s') % self.name + else: + name = _('Debit order %s') % self.name + date_maturity = bank_payment_lines[0].date + if self.payment_mode_id.offsetting_account == 'bank_account': + account_id = self.journal_id.default_debit_account_id.id + elif self.payment_mode_id.offsetting_account == 'transfer_account': + account_id = self.payment_mode_id.transfer_account_id.id + vals = { + 'name': name, + 'partner_id': False, + 'account_id': account_id, + 'credit': (self.payment_type == 'outbound' and + amount or 0.0), + 'debit': (self.payment_type == 'inbound' and + amount or 0.0), + 'date_maturity': date_maturity, + } + return vals + + @api.multi + def _prepare_move_line_partner_account(self, bank_line): + # TODO : ALEXIS check don't group if move_line_id.account_id + # is not the same + if bank_line.payment_line_ids[0].move_line_id: + account_id =\ + bank_line.payment_line_ids[0].move_line_id.account_id.id + else: + if self.payment_type == 'inbound': + account_id =\ + bank_line.partner_id.property_account_receivable_id.id + else: + account_id =\ + bank_line.partner_id.property_account_payable_id.id + if self.payment_type == 'outbound': + name = _('Payment bank line %s') % bank_line.name + else: + name = _('Debit bank line %s') % bank_line.name + vals = { + 'name': name, + 'bank_payment_line_id': bank_line.id, + 'partner_id': bank_line.partner_id.id, + 'account_id': account_id, + 'credit': (self.payment_type == 'inbound' and + bank_line.amount_currency or 0.0), + 'debit': (self.payment_type == 'outbound' and + bank_line.amount_currency or 0.0), + } + return vals + + @api.multi + def generate_move(self): + """ + Create the moves that pay off the move lines from + the payment/debit order. + """ + self.ensure_one() + am_obj = self.env['account.move'] + # prepare a dict "trfmoves" that can be used when + # self.payment_mode_id.move_option = date or line + # key = unique identifier (date or True or line.id) + # value = bank_pay_lines (recordset that can have several entries) + trfmoves = {} + for bline in self.bank_line_ids: + hashcode = bline.move_line_offsetting_account_hashcode() + if hashcode in trfmoves: + trfmoves[hashcode] += bline + else: + trfmoves[hashcode] = bline + + company_currency = self.env.user.company_id.currency_id + for hashcode, blines in trfmoves.iteritems(): + mvals = self._prepare_move() + total_amount = 0 + for bline in blines: + total_amount += bline.amount_currency + if bline.currency_id != company_currency: + raise UserError(_( + "Cannot generate the account move when " + "the currency of the payment (%s) is not the " + "same as the currency of the company (%s). This " + "is not supported for the moment.") + % (bline.currency_id.name, company_currency.name)) + + partner_ml_vals = self._prepare_move_line_partner_account( + bline) + mvals['line_ids'].append((0, 0, partner_ml_vals)) + trf_ml_vals = self._prepare_move_line_offsetting_account( + total_amount, blines) + mvals['line_ids'].append((0, 0, trf_ml_vals)) + move = am_obj.create(mvals) + blines.reconcile_payment_lines() + move.post() diff --git a/account_payment_order/models/bank_payment_line.py b/account_payment_order/models/bank_payment_line.py new file mode 100644 index 000000000..a1533f6ad --- /dev/null +++ b/account_payment_order/models/bank_payment_line.py @@ -0,0 +1,145 @@ +# -*- coding: utf-8 -*- +# © 2015 Akretion - Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api, _ +from openerp.exceptions import UserError + + +class BankPaymentLine(models.Model): + _name = 'bank.payment.line' + _description = 'Bank Payment Lines' + + name = fields.Char( + string='Bank Payment Line Ref', required=True, + readonly=True) + order_id = fields.Many2one( + 'account.payment.order', string='Order', ondelete='cascade', + select=True) + payment_type = fields.Selection( + related='order_id.payment_type', string="Payment Type", + readonly=True, store=True) + state = fields.Selection( + related='order_id.state', string='State', + readonly=True, store=True) + payment_line_ids = fields.One2many( + 'account.payment.line', 'bank_line_id', string='Payment Lines', + readonly=True) + partner_id = fields.Many2one( + 'res.partner', related='payment_line_ids.partner_id', + readonly=True, store=True) # store=True for groupby + # Function Float fields are sometimes badly displayed in tree view, + # see bug report https://github.com/odoo/odoo/issues/8632 + # But is it still true in v9 ? + amount_currency = fields.Monetary( + string='Amount', currency_field='currency_id', + compute='_compute_amount', store=True, readonly=True) + currency_id = fields.Many2one( + 'res.currency', required=True, readonly=True, + related='payment_line_ids.currency_id') # v8 field: currency + partner_bank_id = fields.Many2one( + 'res.partner.bank', string='Bank Account', readonly=True, + related='payment_line_ids.partner_bank_id') # v8 field: bank_id + date = fields.Date( + related='payment_line_ids.date', readonly=True) + communication_type = fields.Selection( + related='payment_line_ids.communication_type', readonly=True) + communication = fields.Char( + string='Communication', required=True, + readonly=True) + company_id = fields.Many2one( + related='order_id.payment_mode_id.company_id', store=True, + readonly=True) + + @api.model + def same_fields_payment_line_and_bank_payment_line(self): + """ + This list of fields is used both to compute the grouping + hashcode and to copy the values from payment line + to bank payment line + The fields must have the same name on the 2 objects + """ + same_fields = [ + 'currency_id', 'partner_id', + 'partner_bank_id', 'date', 'communication_type'] + return same_fields + + @api.multi + @api.depends('payment_line_ids', 'payment_line_ids.amount_currency') + def _compute_amount(self): + for line in self: + line.amount_currency = sum( + line.mapped('payment_line_ids.amount_currency')) + + @api.model + @api.returns('self') + def create(self, vals): + if vals.get('name', 'New') == 'New': + vals['name'] = self.env['ir.sequence'].next_by_code( + 'bank.payment.line') or 'New' + return super(BankPaymentLine, self).create(vals) + + @api.multi + def move_line_offsetting_account_hashcode(self): + """ + This method is inherited in the module + account_banking_sepa_direct_debit + """ + self.ensure_one() + if self.order_id.payment_mode_id.move_option == 'date': + hashcode = self.date + else: + hashcode = unicode(self.id) + return hashcode + + @api.multi + def reconcile_payment_lines(self): + for bline in self: + if all([pline.move_line_id for pline in bline.payment_line_ids]): + bline.reconcile() + else: + bline.no_reconcile_hook() + + @api.multi + def no_reconcile_hook(self): + """This method is designed to be inherited if needed""" + return + + @api.multi + def reconcile(self): + self.ensure_one() + amlo = self.env['account.move.line'] + transit_mlines = amlo.search([('bank_payment_line_id', '=', self.id)]) + assert len(transit_mlines) == 1, 'We should have only 1 move' + transit_mline = transit_mlines[0] + assert not transit_mline.reconciled,\ + 'Transit move should not be reconciled' + lines_to_rec = transit_mline + for payment_line in self.payment_line_ids: + + if not payment_line.move_line_id: + raise UserError(_( + "Can not reconcile: no move line for " + "payment line %s of partner '%s'.") % ( + payment_line.name, + payment_line.partner_id.name)) + if payment_line.move_line_id.reconciled: + raise UserError(_( + "Move line '%s' of partner '%s' has already " + "been reconciled") % ( + payment_line.move_line_id.name, + payment_line.partner_id.name)) + if ( + payment_line.move_line_id.account_id != + transit_mline.account_id): + raise UserError(_( + "For partner '%s', the account of the account " + "move line to pay (%s) is different from the " + "account of of the transit move line (%s).") % ( + payment_line.move_line_id.partner_id.name, + payment_line.move_line_id.account_id.code, + transit_mline.account_id.code)) + + lines_to_rec += payment_line.move_line_id + + lines_to_rec.reconcile() diff --git a/account_payment_order/models/res_bank.py b/account_payment_order/models/res_bank.py new file mode 100644 index 000000000..44dd6ecdb --- /dev/null +++ b/account_payment_order/models/res_bank.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# © 2015-2016 Akretion - Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, api, _ +from openerp.exceptions import ValidationError + + +class ResBank(models.Model): + _inherit = 'res.bank' + + @api.multi + @api.constrains('bic') + def check_bic_length(self): + for bank in self: + if bank.bic and len(bank.bic) not in (8, 11): + raise ValidationError(_( + "A valid BIC contains 8 or 11 characters. The BIC '%s' " + "contains %d characters, so it is not valid.") + % (bank.bic, len(bank.bic))) + +# in v9, on res.partner.bank bank_bic is a related of bank_id.bic diff --git a/account_payment_order/security/ir.model.access.csv b/account_payment_order/security/ir.model.access.csv new file mode 100644 index 000000000..753793646 --- /dev/null +++ b/account_payment_order/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_account_payment_order,Full access on account.payment.order to Payment Manager,model_account_payment_order,group_account_payment,1,1,1,1 +access_account_payment_line,Full access on account.payment.line to Payment Manager,model_account_payment_line,group_account_payment,1,1,1,1 +access_bank_payment_line,Full access on bank.payment.line to Payment Manager,model_bank_payment_line,group_account_payment,1,1,1,1 diff --git a/account_payment_order/security/payment_security.xml b/account_payment_order/security/payment_security.xml new file mode 100644 index 000000000..cb5ce34f2 --- /dev/null +++ b/account_payment_order/security/payment_security.xml @@ -0,0 +1,39 @@ + + + + + + + Accounting / Payments + + + + + + + + + + + + Payment mode multi-company rule + + ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])] + + + + + + diff --git a/account_banking_payment_export/static/description/icon.png b/account_payment_order/static/description/icon.png similarity index 100% rename from account_banking_payment_export/static/description/icon.png rename to account_payment_order/static/description/icon.png diff --git a/account_banking_payment_transfer/test/data.yml b/account_payment_order/test/data.yml similarity index 100% rename from account_banking_payment_transfer/test/data.yml rename to account_payment_order/test/data.yml diff --git a/account_banking_payment_transfer/test/test_partial_payment_refunded.yml b/account_payment_order/test/test_partial_payment_refunded.yml similarity index 61% rename from account_banking_payment_transfer/test/test_partial_payment_refunded.yml rename to account_payment_order/test/test_partial_payment_refunded.yml index cf476f155..529a04e88 100644 --- a/account_banking_payment_transfer/test/test_partial_payment_refunded.yml +++ b/account_payment_order/test/test_partial_payment_refunded.yml @@ -42,7 +42,7 @@ quantity: 1.0 journal_id: account.expenses_journal - - Make sure that the type is in_invoice + Make sure that the type is in_refund - !python {model: account.invoice}: | self.write(cr, uid, ref("account_refund_supplier_refunded"), {'type': 'in_refund'}) @@ -51,67 +51,38 @@ - !workflow {model: account.invoice, action: invoice_open, ref: account_refund_supplier_refunded} - - I reconcile the invoice and the refund -- - !record {model: account.move.line.reconcile, id: account_move_line_reconcile0}: - trans_nbr: 2 - credit: 600.0 - debit: 200.0 - writeoff: -400.0 -- - Then I click on the 'Partial Reconcile' button -- - !python {model: account.move.line.reconcile}: | - move_line_obj = self.pool.get('account.move.line') - inv_obj = self.pool.get('account.invoice') - invoice_move_id = inv_obj.browse(cr, uid, ref("account_invoice_supplier_refunded")).move_id.id - refund_move_id = inv_obj.browse(cr, uid, ref("account_refund_supplier_refunded")).move_id.id - debit_line_id = move_line_obj.search(cr, uid, [('move_id', '=', refund_move_id),('debit', '=', 200)])[0] - credit_line_id = move_line_obj.search(cr, uid, [('move_id', '=', invoice_move_id),('credit', '=', 600)])[0] - ids = [debit_line_id, credit_line_id] - partial_reconcile = self.trans_rec_reconcile_partial_reconcile(cr, uid, [ref('account_move_line_reconcile0')], { - 'active_model': 'account.move.line', 'active_ids': ids, 'tz': False, 'active_id': ids[1]}) - move_line = move_line_obj.browse(cr, uid, ids) - assert move_line[0].reconcile_partial_id, "Partial reconcilation is not done" -- - I check that the invoice balance (residual) is now 400 -- - !assert {model: account.invoice, id: account_invoice_supplier_refunded, severity: error, string: Invoice residual should be 400.}: - - residual == 400 - - amount_total == 600 -- - I create a payment order on which I will select the invoice I created + I create a payment order - !record {model: payment.order, id: partial_payment_order_1}: mode: account_banking_payment_transfer.payment_mode0 - date_prefered: 'due' + date_prefered: 'now' - - !record {model: payment.order.create, id: payment_order_create_1}: - duedate: !eval time.strftime('%Y-%m-%d') -- - I search for the invoice entries to make the payment. -- - !python {model: payment.order.create}: | - self.search_entries(cr, uid, [ref("payment_order_create_1")], { - "active_model": "payment.order", "active_ids": [ref("partial_payment_order_1")], - "active_id": ref("partial_payment_order_1"), }) -- - I create payment lines entries. + I run the select move line to pay wizard - !python {model: payment.order.create}: | + context = { + "active_model": "payment.order", + "active_ids": [ref("partial_payment_order_1")], + "active_id": ref("partial_payment_order_1"), + } + wiz_id = self.create(cr, uid, {}, context=context) + self.search_entries(cr, uid, [wiz_id], context=context) + mline_ids = [] invoice = self.pool.get('account.invoice').browse(cr, uid, ref("account_invoice_supplier_refunded")) for l in invoice.move_id.line_id: if not l.debit and l.credit: - move_line = l + mline_ids.append(l.id) break - self.write(cr, uid, [ref("payment_order_create_1")], {'entries': [(6,0,[move_line.id])]}) - self.create_payment(cr, uid, [ref("payment_order_create_1")], { - "active_model": "payment.order", "active_ids": [ref("partial_payment_order_1")], - "active_id": ref("partial_payment_order_1")}) + refund = self.pool.get('account.invoice').browse(cr, uid, ref("account_refund_supplier_refunded")) + for l in refund.move_id.line_id: + if not l.credit and l.debit: + mline_ids.append(l.id) + break + self.write(cr, uid, [wiz_id], {'entries': [(6, 0, mline_ids)]}) + self.create_payment(cr, uid, [wiz_id], context=context) pay_obj = self.pool.get('payment.order') pay = pay_obj.browse(cr, uid, ref('partial_payment_order_1')) - assert pay.line_ids[0].amount_currency == 400 - assert pay.total == 400 + assert len(pay.line_ids) == 2 - I confirm the payment order. - @@ -121,6 +92,7 @@ - !assert {model: payment.order, id: partial_payment_order_1, severity: error, string: Payment Order should be 'Confirmed'.}: - state == 'open' + - total == 400.0 - I create the wizard for paying the payment - @@ -159,4 +131,4 @@ !assert {model: account.invoice, id: account_invoice_supplier_refunded, severity: error, string: Invoice residual should be 0.}: - residual == 0 - amount_total == 600 - - state == 'paid' \ No newline at end of file + - state == 'paid' diff --git a/account_banking_payment_transfer/test/test_partial_payment_transfer.yml b/account_payment_order/test/test_partial_payment_transfer.yml similarity index 77% rename from account_banking_payment_transfer/test/test_partial_payment_transfer.yml rename to account_payment_order/test/test_partial_payment_transfer.yml index f32b9a84d..2e7a05a7c 100644 --- a/account_banking_payment_transfer/test/test_partial_payment_transfer.yml +++ b/account_payment_order/test/test_partial_payment_transfer.yml @@ -25,31 +25,26 @@ - !workflow {model: account.invoice, action: invoice_open, ref: account_invoice_supplier_partial} - - I create a payment order on which I will select the invoice I created + I create a payment order - !record {model: payment.order, id: partial_payment_order_2}: mode: account_banking_payment_transfer.payment_mode0 date_prefered: 'due' - - !record {model: payment.order.create, id: payment_order_create_2}: - duedate: !eval time.strftime('%Y-%m-%d') -- - I search for the invoice entries to make the payment. -- - !python {model: payment.order.create}: | - self.search_entries(cr, uid, [ref("payment_order_create_2")], { - "active_model": "payment.order", "active_ids": [ref("partial_payment_order_2")], - "active_id": ref("partial_payment_order_2"), }) -- - I create payment lines entries. + I run the select move line to pay wizard - !python {model: payment.order.create}: | + context = { + "active_model": "payment.order", + "active_ids": [ref("partial_payment_order_2")], + "active_id": ref("partial_payment_order_2"), + } + wiz_id = self.create(cr, uid, {}, context=context) + self.search_entries(cr, uid, [wiz_id], context=context) invoice = self.pool.get('account.invoice').browse(cr, uid, ref("account_invoice_supplier_partial")) move_line = invoice.move_id.line_id[0] - self.write(cr, uid, [ref("payment_order_create_2")], {'entries': [(6,0,[move_line.id])]}) - self.create_payment(cr, uid, [ref("payment_order_create_2")], { - "active_model": "payment.order", "active_ids": [ref("partial_payment_order_2")], - "active_id": ref("partial_payment_order_2")}) + self.write(cr, uid, [wiz_id], {'entries': [(6, 0, [move_line.id])]}) + self.create_payment(cr, uid, [wiz_id], context=context) pay_obj = self.pool.get('payment.order') pay = pay_obj.browse(cr, uid, ref('partial_payment_order_2')) assert pay.line_ids @@ -118,29 +113,24 @@ !record {model: payment.order, id: partial_partial_payment_order_2}: mode: account_banking_payment_transfer.payment_mode0 date_prefered: 'due' -- - !record {model: payment.order.create, id: partial_payment_order_create_2}: - duedate: !eval time.strftime('%Y-%m-%d') - I search for the invoice entries to make the payment. - !python {model: payment.order.create}: | - self.search_entries(cr, uid, [ref("partial_payment_order_create_2")], { - "active_model": "payment.order", "active_ids": [ref("partial_partial_payment_order_2")], - "active_id": ref("partial_partial_payment_order_2"), }) -- - I create payment lines entries. -- - !python {model: payment.order.create}: | + context = { + "active_model": "payment.order", + "active_ids": [ref("partial_partial_payment_order_2")], + "active_id": ref("partial_partial_payment_order_2"), + } + wiz_id = self.create(cr, uid, {}, context=context) + self.search_entries(cr, uid, [wiz_id], context=context) invoice = self.pool.get('account.invoice').browse(cr, uid, ref("account_invoice_supplier_partial")) for l in invoice.move_id.line_id: if not l.debit and l.credit: move_line = l break - self.write(cr, uid, [ref("partial_payment_order_create_2")], {'entries': [(6,0,[move_line.id])]}) - self.create_payment(cr, uid, [ref("partial_payment_order_create_2")], { - "active_model": "payment.order", "active_ids": [ref("partial_partial_payment_order_2")], - "active_id": ref("partial_partial_payment_order_2")}) + self.write(cr, uid, [wiz_id], {'entries': [(6,0,[move_line.id])]}) + self.create_payment(cr, uid, [wiz_id], context=context) pay_obj = self.pool.get('payment.order') pay = pay_obj.browse(cr, uid, ref('partial_partial_payment_order_2')) assert len(pay.line_ids) == 1 @@ -198,29 +188,24 @@ !record {model: payment.order, id: partial_partial_payment_order_3}: mode: account_banking_payment_transfer.payment_mode0 date_prefered: 'due' -- - !record {model: payment.order.create, id: partial_payment_order_create_3}: - duedate: !eval time.strftime('%Y-%m-%d') - I search for the invoice entries to make the payment. - !python {model: payment.order.create}: | - self.search_entries(cr, uid, [ref("partial_payment_order_create_3")], { - "active_model": "payment.order", "active_ids": [ref("partial_partial_payment_order_3")], - "active_id": ref("partial_partial_payment_order_3"), }) -- - I create payment lines entries. -- - !python {model: payment.order.create}: | + context = { + "active_model": "payment.order", + "active_ids": [ref("partial_partial_payment_order_3")], + "active_id": ref("partial_partial_payment_order_3"), + } + wiz_id = self.create(cr, uid, {}, context=context) + self.search_entries(cr, uid, [wiz_id], context=context) invoice = self.pool.get('account.invoice').browse(cr, uid, ref("account_invoice_supplier_partial")) for l in invoice.move_id.line_id: if not l.debit and l.credit: move_line = l break - self.write(cr, uid, [ref("partial_payment_order_create_3")], {'entries': [(6,0,[move_line.id])]}) - self.create_payment(cr, uid, [ref("partial_payment_order_create_3")], { - "active_model": "payment.order", "active_ids": [ref("partial_partial_payment_order_3")], - "active_id": ref("partial_partial_payment_order_3")}) + self.write(cr, uid, [wiz_id], {'entries': [(6, 0, [move_line.id])]}) + self.create_payment(cr, uid, [wiz_id], context=context) pay_obj = self.pool.get('payment.order') pay = pay_obj.browse(cr, uid, ref('partial_partial_payment_order_3')) assert len(pay.line_ids) == 1 @@ -265,12 +250,3 @@ assert sum_credit == 0 assert inv.residual == 0 assert inv.state == 'paid' - - - - - - - - - diff --git a/account_banking_payment_transfer/test/test_payment_method.yml b/account_payment_order/test/test_payment_method.yml similarity index 86% rename from account_banking_payment_transfer/test/test_payment_method.yml rename to account_payment_order/test/test_payment_method.yml index a20db04d4..4a74dd895 100644 --- a/account_banking_payment_transfer/test/test_payment_method.yml +++ b/account_payment_order/test/test_payment_method.yml @@ -2,7 +2,7 @@ I create a supplier invoice - !record {model: account.invoice, id: account_invoice_supplier0, view: account.invoice_supplier_form}: - check_total: 450.0 + check_total: 1005.55 partner_id: base.res_partner_4 reference_type: none type: in_invoice @@ -35,34 +35,29 @@ - state == 'open' - type == 'in_invoice' - - I create a payment order on which I will select the invoice I created + I create a payment order - !record {model: payment.order, id: payment_order_0}: mode: account_banking_payment_transfer.payment_mode0 date_prefered: 'due' - - !record {model: payment.order.create, id: payment_order_create_0}: - duedate: !eval time.strftime('%Y-%m-%d') -- - I search for the invoice entries to make the payment. -- - !python {model: payment.order.create}: | - self.search_entries(cr, uid, [ref("payment_order_create_0")], { - "active_model": "payment.order", "active_ids": [ref("payment_order_0")], - "active_id": ref("payment_order_0"), }) -- - I create payment lines entries. + I run the select move line to pay wizard - !python {model: payment.order.create}: | + context = { + "active_model": "payment.order", + "active_ids": [ref("payment_order_0")], + "active_id": ref("payment_order_0"), + } + wiz_id = self.create(cr, uid, {}, context=context) + self.search_entries(cr, uid, [wiz_id], context=context) invoice = self.pool.get('account.invoice').browse(cr, uid, ref("account_invoice_supplier0")) entries = [] for move_line in invoice.move_id.line_id: if move_line.credit and not move_line.debit: entries.append((6, 0, [move_line.id])) - self.write(cr, uid, [ref("payment_order_create_0")], {'entries': entries}) - self.create_payment(cr, uid, [ref("payment_order_create_0")], { - "active_model": "payment.order", "active_ids": [ref("payment_order_0")], - "active_id": ref("payment_order_0")}) + self.write(cr, uid, [wiz_id], {'entries': entries}) + self.create_payment(cr, uid, [wiz_id], context=context) pay_obj = self.pool.get('payment.order') pay = pay_obj.browse(cr, uid, ref('payment_order_0')) for line in pay.line_ids: @@ -161,4 +156,4 @@ I check that the payment is done - !assert {model: payment.order, id: payment_order_0, severity: error, string: Payment Order should be done}: - - state == 'done' \ No newline at end of file + - state == 'done' diff --git a/account_payment_order/views/account_invoice_view.xml b/account_payment_order/views/account_invoice_view.xml new file mode 100644 index 000000000..2ca7919ff --- /dev/null +++ b/account_payment_order/views/account_invoice_view.xml @@ -0,0 +1,62 @@ + + + + + + + + account_payment_order.invoice_form + account.invoice + + + + + + + + + + + + account_payment_order.invoice_supplier_form + account.invoice + + + + + + + + + + + + + + diff --git a/account_payment_order/views/account_move_line.xml b/account_payment_order/views/account_move_line.xml new file mode 100644 index 000000000..1179fe817 --- /dev/null +++ b/account_payment_order/views/account_move_line.xml @@ -0,0 +1,28 @@ + + + + + + + + + + account_payment_order.move_line_form + account.move.line + + + + + + + + + + + + diff --git a/account_payment_order/views/account_payment_line.xml b/account_payment_order/views/account_payment_line.xml new file mode 100644 index 000000000..c1155ac03 --- /dev/null +++ b/account_payment_order/views/account_payment_line.xml @@ -0,0 +1,69 @@ + + + + + + + account.payment.line.form + account.payment.line + +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + account.payment.line.tree + account.payment.line + + + + + + + + + + + + + + + + + + + Payment Lines + account.payment.line + tree,form + {'account_payment_line_main_view': True} + + + +
+
diff --git a/account_payment_order/views/account_payment_mode.xml b/account_payment_order/views/account_payment_mode.xml new file mode 100644 index 000000000..951c59bf3 --- /dev/null +++ b/account_payment_order/views/account_payment_mode.xml @@ -0,0 +1,66 @@ + + + + + + + account_payment_order.account.payment.mode.form + account.payment.mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + account_payment_order.account.payment.mode.tree + account.payment.mode + + + + + + + + + + account_payment_order.account.payment.mode.search + account.payment.mode + + + + + + + + + + diff --git a/account_payment_order/views/account_payment_order.xml b/account_payment_order/views/account_payment_order.xml new file mode 100644 index 000000000..eec3c0e83 --- /dev/null +++ b/account_payment_order/views/account_payment_order.xml @@ -0,0 +1,163 @@ + + + + + + + account.payment.order.form + account.payment.order + +
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+
+
+
+ + + account.payment.order.tree + account.payment.order + + + + + + + + + + + + + + + + account.payment.order.search + account.payment.order + + + + + + + + + + + + + + + + + + + account.payment.order.graph + account.payment.order + + + + + + + + + + account.payment.order.pivot + account.payment.order + + + + + + + + + + + Payment Orders + account.payment.order + tree,form,pivot,graph + [('payment_type', '=', 'outbound')] + {'default_payment_type': 'outbound'} + + + + Debit Orders + account.payment.order + tree,form,pivot,graph + [('payment_type', '=', 'inbound')] + {'default_payment_type': 'inbound'} + + + + + + + + +
+
diff --git a/account_payment_order/views/bank_payment_line.xml b/account_payment_order/views/bank_payment_line.xml new file mode 100644 index 000000000..f5ce6742a --- /dev/null +++ b/account_payment_order/views/bank_payment_line.xml @@ -0,0 +1,83 @@ + + + + + + + bank.payment.line.form + bank.payment.line + +
+ + + + + + + + + + + + + + + +
+
+
+ + + bank.payment.line.tree + bank.payment.line + + + + + + + + + + + + + + + + + bank.payment.line.search + bank.payment.line + + + + + + + + + + + + + + + Bank Payment Lines + bank.payment.line + tree,form + {'bank_payment_line_main_view': True} + + + + +
+
diff --git a/account_payment_order/views/ir_attachment.xml b/account_payment_order/views/ir_attachment.xml new file mode 100644 index 000000000..98f5ac991 --- /dev/null +++ b/account_payment_order/views/ir_attachment.xml @@ -0,0 +1,32 @@ + + + + + + + ir.attachment.simplified.form + ir.attachment + +
+ + +
+
+
+ +
+
diff --git a/account_banking_payment_export/views/payment_order_create_view.xml b/account_payment_order/views/payment_order_create_view.xml similarity index 100% rename from account_banking_payment_export/views/payment_order_create_view.xml rename to account_payment_order/views/payment_order_create_view.xml diff --git a/account_payment_order/wizard/__init__.py b/account_payment_order/wizard/__init__.py new file mode 100644 index 000000000..1262d2ded --- /dev/null +++ b/account_payment_order/wizard/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import account_payment_line_create +from . import account_invoice_payment_line_multi diff --git a/account_payment_order/wizard/account_invoice_payment_line_multi.py b/account_payment_order/wizard/account_invoice_payment_line_multi.py new file mode 100644 index 000000000..0abd67669 --- /dev/null +++ b/account_payment_order/wizard/account_invoice_payment_line_multi.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# © 2016 Akretion () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, api + + +class AccountInvoicePaymentLineMulti(models.TransientModel): + _name = 'account.invoice.payment.line.multi' + _description = 'Create payment lines from invoice tree view' + + @api.multi + def run(self): + self.ensure_one() + assert self._context['active_model'] == 'account.invoice',\ + 'Active model should be account.invoice' + invoices = self.env['account.invoice'].browse( + self._context['active_ids']) + action = invoices.create_account_payment_line() + return action diff --git a/account_payment_order/wizard/account_invoice_payment_line_multi_view.xml b/account_payment_order/wizard/account_invoice_payment_line_multi_view.xml new file mode 100644 index 000000000..b8a0447f2 --- /dev/null +++ b/account_payment_order/wizard/account_invoice_payment_line_multi_view.xml @@ -0,0 +1,31 @@ + + + + + + + + + account_invoice_payment_line_multi.form + account.invoice.payment.line.multi + +
+

This wizard will create payment lines for the selected invoices:

+
    +
  • if there are existing draft payment orders for the payment modes of the invoices, the payment lines will be added to those payment orders
  • +
  • otherwise, new payment orders will be created (one per payment mode).
  • +
+
+
+
+
+
+ + +
+
diff --git a/account_payment_order/wizard/account_payment_line_create.py b/account_payment_order/wizard/account_payment_line_create.py new file mode 100644 index 000000000..16fe79cbd --- /dev/null +++ b/account_payment_order/wizard/account_payment_line_create.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +# © 2009 EduSense BV () +# © 2011-2013 Therp BV () +# © 2014-2015 ACSONE SA/NV () +# © 2015-2016 Akretion () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api, _ + + +class AccountPaymentLineCreate(models.TransientModel): + _name = 'account.payment.line.create' + _description = 'Wizard to create payment lines' + + order_id = fields.Many2one( + 'account.payment.order', string='Payment Order') + journal_ids = fields.Many2many( + 'account.journal', string='Journals Filter') + target_move = fields.Selection([ + ('posted', 'All Posted Entries'), + ('all', 'All Entries'), + ], string='Target Moves') + allow_blocked = fields.Boolean( + string='Allow Litigation Move Lines') + invoice = fields.Boolean( + string='Linked to an Invoice or Refund') + date_type = fields.Selection([ + ('due', 'Due Date'), + ('move', 'Move Date'), + ], string="Type of Date Filter", required=True) + due_date = fields.Date(string="Due Date") + move_date = fields.Date( + string='Move Date', default=fields.Date.context_today) + payment_mode = fields.Selection([ + ('same', 'Same'), + ('same_or_null', 'Same or Empty'), + ('any', 'Any'), + ], string='Payment Mode') + move_line_ids = fields.Many2many( + 'account.move.line', string='Move Lines') + + @api.model + def default_get(self, field_list): + res = super(AccountPaymentLineCreate, self).default_get(field_list) + context = self.env.context + assert context.get('active_model') == 'account.payment.order',\ + 'active_model should be payment.order' + assert context.get('active_id'), 'Missing active_id in context !' + order = self.env['account.payment.order'].browse(context['active_id']) + mode = order.payment_mode_id + res.update({ + 'journal_ids': mode.default_journal_ids.ids or False, + 'target_move': mode.default_target_move, + 'invoice': mode.default_invoice, + 'date_type': mode.default_date_type, + 'payment_mode': mode.default_payment_mode, + 'order_id': order.id, + }) + return res + + @api.multi + def _prepare_move_line_domain(self): + self.ensure_one() + journals = self.journal_ids or self.env['account.journal'].search([]) + domain = [('reconciled', '=', False), + ('company_id', '=', self.order_id.company_id.id), + ('journal_id', 'in', journals.ids)] + if self.target_move == 'posted': + domain += [('move_id.state', '=', 'posted')] + if not self.allow_blocked: + domain += [('blocked', '!=', True)] + if self.date_type == 'due': + domain += [ + '|', + ('date_maturity', '<=', self.due_date), + ('date_maturity', '=', False)] + elif self.date_type == 'move': + domain.append(('date', '<=', self.move_date)) + if self.invoice: + domain.append(('invoice_id', '!=', False)) + if self.payment_mode: + if self.payment_mode == 'same': + domain.append( + ('payment_mode_id', '=', self.order_id.payment_mode_id.id)) + elif self.payment_mode == 'same_or_null': + domain += [ + '|', + ('payment_mode_id', '=', False), + ('payment_mode_id', '=', self.order_id.payment_mode_id.id)] + + if self.order_id.payment_type == 'outbound': + # For payables, propose all unreconciled credit lines, + # including partially reconciled ones. + # If they are partially reconciled with a supplier refund, + # the residual will be added to the payment order. + # + # For receivables, propose all unreconciled credit lines. + # (ie customer refunds): they can be refunded with a payment. + # Do not propose partially reconciled credit lines, + # as they are deducted from a customer invoice, and + # will not be refunded with a payment. + domain += [ + ('credit', '>', 0), + # '|', + ('account_id.internal_type', '=', 'payable'), + # '&', + # ('account_id.internal_type', '=', 'receivable'), + # ('reconcile_partial_id', '=', False), # TODO uncomment + ] + elif self.order_id.payment_type == 'inbound': + domain += [ + ('debit', '>', 0), + ('account_id.internal_type', '=', 'receivable'), + ] + # Exclude lines that are already in a non-cancelled + # and non-uploaded payment order; lines that are in a + # uploaded payment order are proposed if they are not reconciled, + paylines = self.env['account.payment.line'].search([ + ('state', 'in', ('draft', 'open', 'generated')), + ('move_line_id', '!=', False)]) + if paylines: + move_lines_ids = [payline.move_line_id.id for payline in paylines] + domain += [('id', 'not in', move_lines_ids)] + return domain + + @api.multi + def populate(self): + domain = self._prepare_move_line_domain() + lines = self.env['account.move.line'].search(domain) + self.move_line_ids = lines + action = { + 'name': _('Select Move Lines to Create Transactions'), + 'type': 'ir.actions.act_window', + 'res_model': 'account.payment.line.create', + 'view_mode': 'form', + 'target': 'new', + 'res_id': self.id, + 'context': self._context, + } + return action + + @api.onchange( + 'date_type', 'move_date', 'due_date', 'journal_ids', 'invoice') + def move_line_filters_change(self): + domain = self._prepare_move_line_domain() + res = {'domain': {'move_line_ids': domain}} + return res + + @api.multi + def create_payment_lines(self): + if self.move_line_ids: + self.move_line_ids.create_payment_line_from_move_line( + self.order_id) + return True diff --git a/account_payment_order/wizard/account_payment_line_create_view.xml b/account_payment_order/wizard/account_payment_line_create_view.xml new file mode 100644 index 000000000..de7d836d0 --- /dev/null +++ b/account_payment_order/wizard/account_payment_line_create_view.xml @@ -0,0 +1,65 @@ + + + + + + + account_payment_line_create.form + account.payment.line.create + +
+ + + + + + + + + + +