From a780bf124ce49c27b6d10f0d7766253a52a7a007 Mon Sep 17 00:00:00 2001 From: Damien Crier Date: Fri, 3 Jul 2015 15:54:15 +0200 Subject: [PATCH] [IMP] account_easy_reconcile: add tests [IMP] add translations [FIX] add decorator multi --- account_easy_reconcile/easy_reconcile.py | 7 +- .../easy_reconcile_history.py | 13 +- account_easy_reconcile/i18n/es.po | 434 +++++++++++++++++ account_easy_reconcile/i18n/fr.po | 451 ++++++++++++++++++ account_easy_reconcile/tests/__init__.py | 24 + .../tests/test_onchange_company.py | 63 +++ .../tests/test_reconcile.py | 136 ++++++ .../tests/test_reconcile_history.py | 78 +++ 8 files changed, 1196 insertions(+), 10 deletions(-) create mode 100644 account_easy_reconcile/i18n/es.po create mode 100644 account_easy_reconcile/i18n/fr.po create mode 100644 account_easy_reconcile/tests/__init__.py create mode 100644 account_easy_reconcile/tests/test_onchange_company.py create mode 100644 account_easy_reconcile/tests/test_reconcile.py create mode 100644 account_easy_reconcile/tests/test_reconcile_history.py diff --git a/account_easy_reconcile/easy_reconcile.py b/account_easy_reconcile/easy_reconcile.py index 0a8f50ed..579ed11f 100644 --- a/account_easy_reconcile/easy_reconcile.py +++ b/account_easy_reconcile/easy_reconcile.py @@ -292,15 +292,16 @@ class AccountEasyReconcile(models.Model): return True - @api.model - def _no_history(self, rec): +# @api.model +# def _no_history(self, rec): + def _no_history(self): """ Raise an `orm.except_orm` error, supposed to be called when there is no history on the reconciliation task. """ raise Warning( _('There is no history of reconciled ' - 'items on the task: %s.') % rec.name + 'items on the task: %s.') % self.name ) @api.model diff --git a/account_easy_reconcile/easy_reconcile_history.py b/account_easy_reconcile/easy_reconcile_history.py index b8a2c010..53d64aa8 100644 --- a/account_easy_reconcile/easy_reconcile_history.py +++ b/account_easy_reconcile/easy_reconcile_history.py @@ -40,11 +40,11 @@ class EasyReconcileHistory(models.Model): move_line_ids.extend(move_lines.ids) self.reconcile_line_ids = move_line_ids - move_line_ids = [] - for reconcile in self.reconcile_partial_ids: - move_lines = reconcile.mapped('line_partial_ids') - move_line_ids.extend(move_lines.ids) - self.partial_line_ids = move_line_ids + move_line_ids2 = [] + for reconcile2 in self.reconcile_partial_ids: + move_lines2 = reconcile2.mapped('line_partial_ids') + move_line_ids2.extend(move_lines2.ids) + self.partial_line_ids = move_line_ids2 easy_reconcile_id = fields.Many2one( 'account.easy.reconcile', @@ -68,14 +68,12 @@ class EasyReconcileHistory(models.Model): comodel_name='account.move.line', relation='account_move_line_history_rel', string='Reconciled Items', - multi='lines', _compute='_reconcile_line_ids' ) partial_line_ids = fields.Many2many( comodel_name='account.move.line', relation='account_move_line_history_partial_rel', string='Partially Reconciled Items', - multi='lines', _compute='_reconcile_line_ids' ) company_id = fields.Many2one( @@ -86,6 +84,7 @@ class EasyReconcileHistory(models.Model): related='easy_reconcile_id.company_id' ) + @api.multi def _open_move_lines(self, rec_type='full'): """ For an history record, open the view of move line with the reconciled or partially reconciled move lines diff --git a/account_easy_reconcile/i18n/es.po b/account_easy_reconcile/i18n/es.po new file mode 100644 index 00000000..b4897878 --- /dev/null +++ b/account_easy_reconcile/i18n/es.po @@ -0,0 +1,434 @@ +# Spanish 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. +# +msgid "" +msgstr "" +"Project-Id-Version: banking-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2014-01-21 11:55+0000\n" +"PO-Revision-Date: 2014-06-05 22:21+0000\n" +"Last-Translator: Pedro Manuel Baeza \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2014-06-06 06:36+0000\n" +"X-Generator: Launchpad (build 17031)\n" + +#. module: account_easy_reconcile +#: code:addons/account_easy_reconcile/easy_reconcile_history.py:101 +#: field:easy.reconcile.history,reconcile_ids:0 +#, python-format +msgid "Reconciliations" +msgstr "Conciliaciones" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +#: view:easy.reconcile.history:0 +msgid "Automatic Easy Reconcile History" +msgstr "Historial de conciliación automática sencilla" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Information" +msgstr "Información" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +#: view:easy.reconcile.history:0 +msgid "Go to partially reconciled items" +msgstr "Ir a los elementos parcialmente conciliados" + +#. module: account_easy_reconcile +#: help:account.easy.reconcile.method,sequence:0 +msgid "The sequence field is used to order the reconcile method" +msgstr "" +"El campo de secuencia se usa para ordenar los métodos de conciliación" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_history +msgid "easy.reconcile.history" +msgstr "easy.reconcile.history" + +#. module: account_easy_reconcile +#: model:ir.actions.act_window,help:account_easy_reconcile.action_account_easy_reconcile +msgid "" +"

\n" +" Click to add a reconciliation profile.\n" +"

\n" +" A reconciliation profile specifies, for one account, how\n" +" the entries should be reconciled.\n" +" You can select one or many reconciliation methods which will\n" +" be run sequentially to match the entries between them.\n" +"

\n" +" " +msgstr "" +"

\n" +"Pulse para añadir un pefil de conciliación.\n" +"

\n" +"Un perfil de conciliación especifica, para una cuenta, como\n" +"los apuntes deben ser conciliados.\n" +"Puede seleccionar uno o varios métodos de conciliación que\n" +"serán ejecutados secuencialmente para casar los apuntes\n" +"entre ellos.\n" +"

\n" +" " + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_options +msgid "easy.reconcile.options" +msgstr "easy.reconcile.options" + +#. module: account_easy_reconcile +#: view:easy.reconcile.history:0 +msgid "Group By..." +msgstr "Agrupar por..." + +#. module: account_easy_reconcile +#: field:account.easy.reconcile,unreconciled_count:0 +msgid "Unreconciled Items" +msgstr "Apuntes no conciliados" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_base +msgid "easy.reconcile.base" +msgstr "easy.reconcile.base" + +#. module: account_easy_reconcile +#: field:easy.reconcile.history,reconcile_line_ids:0 +msgid "Reconciled Items" +msgstr "Elementos conciliados" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile,reconcile_method:0 +msgid "Method" +msgstr "Método" + +#. module: account_easy_reconcile +#: view:easy.reconcile.history:0 +msgid "7 Days" +msgstr "7 días" + +#. module: account_easy_reconcile +#: model:ir.actions.act_window,name:account_easy_reconcile.action_easy_reconcile_history +msgid "Easy Automatic Reconcile History" +msgstr "Historial de la conciliación automática sencilla" + +#. module: account_easy_reconcile +#: field:easy.reconcile.history,date:0 +msgid "Run date" +msgstr "Fecha ejecucción" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "" +"Match one debit line vs one credit line. Do not allow partial " +"reconciliation. The lines should have the same amount (with the write-off) " +"and the same reference to be reconciled." +msgstr "" +"Casa una línea del debe con una línea del haber. No permite conciliación " +"parcial. Las líneas deben tener el mismo importe (con el desajuste) y la " +"misma referencia para ser conciliadas." + +#. module: account_easy_reconcile +#: model:ir.actions.act_window,name:account_easy_reconcile.act_easy_reconcile_to_history +msgid "History Details" +msgstr "Detalles del historial" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Display items reconciled on the last run" +msgstr "Mostrar elementos conciliados en la última ejecucción" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,name:0 +msgid "Type" +msgstr "Tipo" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile,company_id:0 +#: field:account.easy.reconcile.method,company_id:0 +#: field:easy.reconcile.history,company_id:0 +msgid "Company" +msgstr "Compañía" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,account_profit_id:0 +#: field:easy.reconcile.base,account_profit_id:0 +#: field:easy.reconcile.options,account_profit_id:0 +#: field:easy.reconcile.simple,account_profit_id:0 +#: field:easy.reconcile.simple.name,account_profit_id:0 +#: field:easy.reconcile.simple.partner,account_profit_id:0 +#: field:easy.reconcile.simple.reference,account_profit_id:0 +msgid "Account Profit" +msgstr "Cuenta de ganancias" + +#. module: account_easy_reconcile +#: view:easy.reconcile.history:0 +msgid "Todays' Reconcilations" +msgstr "Conciliaciones de hoy" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Simple. Amount and Name" +msgstr "Simple. Cantidad y nombre" + +#. module: account_easy_reconcile +#: field:easy.reconcile.base,partner_ids:0 +#: field:easy.reconcile.simple,partner_ids:0 +#: field:easy.reconcile.simple.name,partner_ids:0 +#: field:easy.reconcile.simple.partner,partner_ids:0 +#: field:easy.reconcile.simple.reference,partner_ids:0 +msgid "Restrict on partners" +msgstr "Restringir en las empresas" + +#. module: account_easy_reconcile +#: model:ir.actions.act_window,name:account_easy_reconcile.action_account_easy_reconcile +#: model:ir.ui.menu,name:account_easy_reconcile.menu_easy_reconcile +msgid "Easy Automatic Reconcile" +msgstr "Conciliación automática simple" + +#. module: account_easy_reconcile +#: view:easy.reconcile.history:0 +msgid "Today" +msgstr "Hoy" + +#. module: account_easy_reconcile +#: view:easy.reconcile.history:0 +msgid "Date" +msgstr "Fecha" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile,last_history:0 +msgid "Last History" +msgstr "Último historial" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Configuration" +msgstr "Configuración" + +#. module: account_easy_reconcile +#: field:easy.reconcile.history,partial_line_ids:0 +msgid "Partially Reconciled Items" +msgstr "Elementos parcialmente conciliados" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_simple_partner +msgid "easy.reconcile.simple.partner" +msgstr "easy.reconcile.simple.partner" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,write_off:0 +#: field:easy.reconcile.base,write_off:0 +#: field:easy.reconcile.options,write_off:0 +#: field:easy.reconcile.simple,write_off:0 +#: field:easy.reconcile.simple.name,write_off:0 +#: field:easy.reconcile.simple.partner,write_off:0 +#: field:easy.reconcile.simple.reference,write_off:0 +msgid "Write off allowed" +msgstr "Desajuste permitido" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Automatic Easy Reconcile" +msgstr "Conciliación automática sencilla" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile,account:0 +#: field:easy.reconcile.base,account_id:0 +#: field:easy.reconcile.simple,account_id:0 +#: field:easy.reconcile.simple.name,account_id:0 +#: field:easy.reconcile.simple.partner,account_id:0 +#: field:easy.reconcile.simple.reference,account_id:0 +msgid "Account" +msgstr "Cuenta" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,task_id:0 +msgid "Task" +msgstr "Tarea" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile,name:0 +msgid "Name" +msgstr "Nombre" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Simple. Amount and Partner" +msgstr "Simple. Cantidad y empresa" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Start Auto Reconcilation" +msgstr "Iniciar conciliación automática" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_simple_name +msgid "easy.reconcile.simple.name" +msgstr "easy.reconcile.simple.name" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,filter:0 +#: field:easy.reconcile.base,filter:0 +#: field:easy.reconcile.options,filter:0 +#: field:easy.reconcile.simple,filter:0 +#: field:easy.reconcile.simple.name,filter:0 +#: field:easy.reconcile.simple.partner,filter:0 +#: field:easy.reconcile.simple.reference,filter:0 +msgid "Filter" +msgstr "Filtro" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "" +"Match one debit line vs one credit line. Do not allow partial " +"reconciliation. The lines should have the same amount (with the write-off) " +"and the same partner to be reconciled." +msgstr "" +"Casa una línea del debe con una línea del haber. No permite conciliación " +"parcial. Las líneas deben tener el mismo importe (con el desajuste) y la " +"misma empresa para ser conciliadas." + +#. module: account_easy_reconcile +#: field:easy.reconcile.history,easy_reconcile_id:0 +msgid "Reconcile Profile" +msgstr "Perfil de conciliación" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_account_easy_reconcile_method +msgid "reconcile method for account_easy_reconcile" +msgstr "Método de conciliación para account_easy_reconcile" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Start Auto Reconciliation" +msgstr "Iniciar auto-conciliación" + +#. module: account_easy_reconcile +#: code:addons/account_easy_reconcile/easy_reconcile.py:233 +#, python-format +msgid "Error" +msgstr "Error" + +#. module: account_easy_reconcile +#: code:addons/account_easy_reconcile/easy_reconcile.py:258 +#, python-format +msgid "There is no history of reconciled items on the task: %s." +msgstr "No hay histórico de elementos conciliados en la tarea: %s" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "" +"Match one debit line vs one credit line. Do not allow partial " +"reconciliation. The lines should have the same amount (with the write-off) " +"and the same name to be reconciled." +msgstr "" +"Casa una línea del debe con una línea del haber. No permite conciliación " +"parcial. Las líneas deben tener el mismo importe (con el desajuste) y el " +"mismo nombre para ser conciliadas." + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,account_lost_id:0 +#: field:easy.reconcile.base,account_lost_id:0 +#: field:easy.reconcile.options,account_lost_id:0 +#: field:easy.reconcile.simple,account_lost_id:0 +#: field:easy.reconcile.simple.name,account_lost_id:0 +#: field:easy.reconcile.simple.partner,account_lost_id:0 +#: field:easy.reconcile.simple.reference,account_lost_id:0 +msgid "Account Lost" +msgstr "Cuenta de pérdidas" + +#. module: account_easy_reconcile +#: view:easy.reconcile.history:0 +msgid "Reconciliation Profile" +msgstr "Perfil de conciliación" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +#: field:account.easy.reconcile,history_ids:0 +msgid "History" +msgstr "Historial" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +#: view:easy.reconcile.history:0 +msgid "Go to reconciled items" +msgstr "Ir a los elementos conciliados" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Profile Information" +msgstr "Información del perfil" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile.method:0 +msgid "Automatic Easy Reconcile Method" +msgstr "Método de conciliación automática sencilla" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Simple. Amount and Reference" +msgstr "Simple. Cantidad y referencia" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Display items partially reconciled on the last run" +msgstr "Mostrar elementos conciliados parcialmente en la última ejecucción" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,sequence:0 +msgid "Sequence" +msgstr "Secuencia" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_simple +msgid "easy.reconcile.simple" +msgstr "easy.reconcile.simple" + +#. module: account_easy_reconcile +#: view:easy.reconcile.history:0 +msgid "Reconciliations of last 7 days" +msgstr "Conciliaciones de los últimos 7 días" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,date_base_on:0 +#: field:easy.reconcile.base,date_base_on:0 +#: field:easy.reconcile.options,date_base_on:0 +#: field:easy.reconcile.simple,date_base_on:0 +#: field:easy.reconcile.simple.name,date_base_on:0 +#: field:easy.reconcile.simple.partner,date_base_on:0 +#: field:easy.reconcile.simple.reference,date_base_on:0 +msgid "Date of reconciliation" +msgstr "Fecha de conciliación" + +#. module: account_easy_reconcile +#: code:addons/account_easy_reconcile/easy_reconcile_history.py:104 +#: field:easy.reconcile.history,reconcile_partial_ids:0 +#, python-format +msgid "Partial Reconciliations" +msgstr "Conciliaciones parciales" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,journal_id:0 +#: field:easy.reconcile.base,journal_id:0 +#: field:easy.reconcile.options,journal_id:0 +#: field:easy.reconcile.simple,journal_id:0 +#: field:easy.reconcile.simple.name,journal_id:0 +#: field:easy.reconcile.simple.partner,journal_id:0 +#: field:easy.reconcile.simple.reference,journal_id:0 +msgid "Journal" +msgstr "Diario" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_simple_reference +msgid "easy.reconcile.simple.reference" +msgstr "easy.reconcile.simple.reference" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_account_easy_reconcile +msgid "account easy reconcile" +msgstr "account easy reconcile" diff --git a/account_easy_reconcile/i18n/fr.po b/account_easy_reconcile/i18n/fr.po new file mode 100644 index 00000000..957765d4 --- /dev/null +++ b/account_easy_reconcile/i18n/fr.po @@ -0,0 +1,451 @@ +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# * account_easy_reconcile +# +msgid "" +msgstr "" +"Project-Id-Version: OpenERP Server 6.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-01-21 11:55+0000\n" +"PO-Revision-Date: 2014-03-21 15:25+0000\n" +"Last-Translator: Guewen Baconnier @ Camptocamp \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-22 06:49+0000\n" +"X-Generator: Launchpad (build 17017)\n" +"Language: \n" + +#. module: account_easy_reconcile +#: code:addons/account_easy_reconcile/easy_reconcile_history.py:101 +#: field:easy.reconcile.history,reconcile_ids:0 +#, python-format +msgid "Reconciliations" +msgstr "Lettrages" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +#: view:easy.reconcile.history:0 +msgid "Automatic Easy Reconcile History" +msgstr "Historique des lettrages automatisés" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Information" +msgstr "Information" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +#: view:easy.reconcile.history:0 +msgid "Go to partially reconciled items" +msgstr "Voir les entrées partiellement lettrées" + +#. module: account_easy_reconcile +#: help:account.easy.reconcile.method,sequence:0 +msgid "The sequence field is used to order the reconcile method" +msgstr "La séquence détermine l'ordre des méthodes de lettrage" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_history +msgid "easy.reconcile.history" +msgstr "easy.reconcile.history" + +#. module: account_easy_reconcile +#: model:ir.actions.act_window,help:account_easy_reconcile.action_account_easy_reconcile +msgid "" +"

\n" +" Click to add a reconciliation profile.\n" +"

\n" +" A reconciliation profile specifies, for one account, how\n" +" the entries should be reconciled.\n" +" You can select one or many reconciliation methods which will\n" +" be run sequentially to match the entries between them.\n" +"

\n" +" " +msgstr "" +"

\n" +" Cliquez pour ajouter un profil de lettrage.\n" +"

\n" +" Un profil de lettrage spécifie, pour un compte, comment\n" +" les écritures doivent être lettrées.\n" +" Vous pouvez sélectionner une ou plusieurs méthodes de lettrage\n" +" qui seront lancées successivement pour identifier les écritures\n" +" devant être lettrées.

\n" +" " + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_options +msgid "easy.reconcile.options" +msgstr "lettrage automatisé.options" + +#. module: account_easy_reconcile +#: view:easy.reconcile.history:0 +msgid "Group By..." +msgstr "Grouper par..." + +#. module: account_easy_reconcile +#: field:account.easy.reconcile,unreconciled_count:0 +msgid "Unreconciled Items" +msgstr "Écritures non lettrées" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_base +msgid "easy.reconcile.base" +msgstr "easy.reconcile.base" + +#. module: account_easy_reconcile +#: field:easy.reconcile.history,reconcile_line_ids:0 +msgid "Reconciled Items" +msgstr "Écritures lettrées" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile,reconcile_method:0 +msgid "Method" +msgstr "Méthode" + +#. module: account_easy_reconcile +#: view:easy.reconcile.history:0 +msgid "7 Days" +msgstr "7 jours" + +#. module: account_easy_reconcile +#: model:ir.actions.act_window,name:account_easy_reconcile.action_easy_reconcile_history +msgid "Easy Automatic Reconcile History" +msgstr "Lettrage automatisé" + +#. module: account_easy_reconcile +#: field:easy.reconcile.history,date:0 +msgid "Run date" +msgstr "Date de lancement" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "" +"Match one debit line vs one credit line. Do not allow partial " +"reconciliation. The lines should have the same amount (with the write-off) " +"and the same reference to be reconciled." +msgstr "" +"Lettre un débit avec un crédit ayant le même montant et la même référence. " +"Le lettrage ne peut être partiel (écriture d'ajustement en cas d'écart)." + +#. module: account_easy_reconcile +#: model:ir.actions.act_window,name:account_easy_reconcile.act_easy_reconcile_to_history +msgid "History Details" +msgstr "Détails de l'historique" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Display items reconciled on the last run" +msgstr "Voir les entrées lettrées au dernier lettrage" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,name:0 +msgid "Type" +msgstr "Type" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile,company_id:0 +#: field:account.easy.reconcile.method,company_id:0 +#: field:easy.reconcile.history,company_id:0 +msgid "Company" +msgstr "" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,account_profit_id:0 +#: field:easy.reconcile.base,account_profit_id:0 +#: field:easy.reconcile.options,account_profit_id:0 +#: field:easy.reconcile.simple,account_profit_id:0 +#: field:easy.reconcile.simple.name,account_profit_id:0 +#: field:easy.reconcile.simple.partner,account_profit_id:0 +#: field:easy.reconcile.simple.reference,account_profit_id:0 +msgid "Account Profit" +msgstr "Compte de profits" + +#. module: account_easy_reconcile +#: view:easy.reconcile.history:0 +msgid "Todays' Reconcilations" +msgstr "Lettrages du jour" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Simple. Amount and Name" +msgstr "Simple. Montant et description" + +#. module: account_easy_reconcile +#: field:easy.reconcile.base,partner_ids:0 +#: field:easy.reconcile.simple,partner_ids:0 +#: field:easy.reconcile.simple.name,partner_ids:0 +#: field:easy.reconcile.simple.partner,partner_ids:0 +#: field:easy.reconcile.simple.reference,partner_ids:0 +msgid "Restrict on partners" +msgstr "Filtrer sur des partenaires" + +#. module: account_easy_reconcile +#: model:ir.actions.act_window,name:account_easy_reconcile.action_account_easy_reconcile +#: model:ir.ui.menu,name:account_easy_reconcile.menu_easy_reconcile +msgid "Easy Automatic Reconcile" +msgstr "Lettrage automatisé" + +#. module: account_easy_reconcile +#: view:easy.reconcile.history:0 +msgid "Today" +msgstr "Aujourd'hui" + +#. module: account_easy_reconcile +#: view:easy.reconcile.history:0 +msgid "Date" +msgstr "Date" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile,last_history:0 +msgid "Last History" +msgstr "Dernier historique" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Configuration" +msgstr "Configuration" + +#. module: account_easy_reconcile +#: field:easy.reconcile.history,partial_line_ids:0 +msgid "Partially Reconciled Items" +msgstr "Écritures partiellement lettrées" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_simple_partner +msgid "easy.reconcile.simple.partner" +msgstr "easy.reconcile.simple.partner" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,write_off:0 +#: field:easy.reconcile.base,write_off:0 +#: field:easy.reconcile.options,write_off:0 +#: field:easy.reconcile.simple,write_off:0 +#: field:easy.reconcile.simple.name,write_off:0 +#: field:easy.reconcile.simple.partner,write_off:0 +#: field:easy.reconcile.simple.reference,write_off:0 +msgid "Write off allowed" +msgstr "Écart autorisé" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Automatic Easy Reconcile" +msgstr "Lettrage automatisé" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile,account:0 +#: field:easy.reconcile.base,account_id:0 +#: field:easy.reconcile.simple,account_id:0 +#: field:easy.reconcile.simple.name,account_id:0 +#: field:easy.reconcile.simple.partner,account_id:0 +#: field:easy.reconcile.simple.reference,account_id:0 +msgid "Account" +msgstr "Compte" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,task_id:0 +msgid "Task" +msgstr "Tâche" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile,name:0 +msgid "Name" +msgstr "Nom" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Simple. Amount and Partner" +msgstr "Simple. Montant et partenaire" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Start Auto Reconcilation" +msgstr "Lancer le lettrage automatisé" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_simple_name +msgid "easy.reconcile.simple.name" +msgstr "easy.reconcile.simple.name" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,filter:0 +#: field:easy.reconcile.base,filter:0 +#: field:easy.reconcile.options,filter:0 +#: field:easy.reconcile.simple,filter:0 +#: field:easy.reconcile.simple.name,filter:0 +#: field:easy.reconcile.simple.partner,filter:0 +#: field:easy.reconcile.simple.reference,filter:0 +msgid "Filter" +msgstr "Filtre" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "" +"Match one debit line vs one credit line. Do not allow partial " +"reconciliation. The lines should have the same amount (with the write-off) " +"and the same partner to be reconciled." +msgstr "" +"Lettre un débit avec un crédit ayant le même montant et le même partenaire. " +"Le lettrage ne peut être partiel (écriture d'ajustement en cas d'écart)." + +#. module: account_easy_reconcile +#: field:easy.reconcile.history,easy_reconcile_id:0 +msgid "Reconcile Profile" +msgstr "Profil de réconciliation" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_account_easy_reconcile_method +msgid "reconcile method for account_easy_reconcile" +msgstr "Méthode de lettrage" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Start Auto Reconciliation" +msgstr "Lancer le lettrage automatisé" + +#. module: account_easy_reconcile +#: code:addons/account_easy_reconcile/easy_reconcile.py:233 +#, python-format +msgid "Error" +msgstr "Erreur" + +#. module: account_easy_reconcile +#: code:addons/account_easy_reconcile/easy_reconcile.py:258 +#, python-format +msgid "There is no history of reconciled items on the task: %s." +msgstr "Il n'y a pas d'historique d'écritures lettrées sur la tâche: %s." + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "" +"Match one debit line vs one credit line. Do not allow partial " +"reconciliation. The lines should have the same amount (with the write-off) " +"and the same name to be reconciled." +msgstr "" +"Lettre un débit avec un crédit ayant le même montant et la même description. " +"Le lettrage ne peut être partiel (écriture d'ajustement en cas d'écart)." + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,account_lost_id:0 +#: field:easy.reconcile.base,account_lost_id:0 +#: field:easy.reconcile.options,account_lost_id:0 +#: field:easy.reconcile.simple,account_lost_id:0 +#: field:easy.reconcile.simple.name,account_lost_id:0 +#: field:easy.reconcile.simple.partner,account_lost_id:0 +#: field:easy.reconcile.simple.reference,account_lost_id:0 +msgid "Account Lost" +msgstr "Compte de pertes" + +#. module: account_easy_reconcile +#: view:easy.reconcile.history:0 +msgid "Reconciliation Profile" +msgstr "Profil de réconciliation" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +#: field:account.easy.reconcile,history_ids:0 +msgid "History" +msgstr "Historique" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +#: view:easy.reconcile.history:0 +msgid "Go to reconciled items" +msgstr "Voir les entrées lettrées" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Profile Information" +msgstr "Information sur le profil" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile.method:0 +msgid "Automatic Easy Reconcile Method" +msgstr "Méthode de lettrage automatisé" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Simple. Amount and Reference" +msgstr "Simple. Montant et référence" + +#. module: account_easy_reconcile +#: view:account.easy.reconcile:0 +msgid "Display items partially reconciled on the last run" +msgstr "Afficher les entrées partiellement lettrées au dernier lettrage" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,sequence:0 +msgid "Sequence" +msgstr "Séquence" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_simple +msgid "easy.reconcile.simple" +msgstr "easy.reconcile.simple" + +#. module: account_easy_reconcile +#: view:easy.reconcile.history:0 +msgid "Reconciliations of last 7 days" +msgstr "Lettrages des 7 derniers jours" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,date_base_on:0 +#: field:easy.reconcile.base,date_base_on:0 +#: field:easy.reconcile.options,date_base_on:0 +#: field:easy.reconcile.simple,date_base_on:0 +#: field:easy.reconcile.simple.name,date_base_on:0 +#: field:easy.reconcile.simple.partner,date_base_on:0 +#: field:easy.reconcile.simple.reference,date_base_on:0 +msgid "Date of reconciliation" +msgstr "Date de lettrage" + +#. module: account_easy_reconcile +#: code:addons/account_easy_reconcile/easy_reconcile_history.py:104 +#: field:easy.reconcile.history,reconcile_partial_ids:0 +#, python-format +msgid "Partial Reconciliations" +msgstr "Lettrages partiels" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,journal_id:0 +#: field:easy.reconcile.base,journal_id:0 +#: field:easy.reconcile.options,journal_id:0 +#: field:easy.reconcile.simple,journal_id:0 +#: field:easy.reconcile.simple.name,journal_id:0 +#: field:easy.reconcile.simple.partner,journal_id:0 +#: field:easy.reconcile.simple.reference,journal_id:0 +msgid "Journal" +msgstr "Journal" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_simple_reference +msgid "easy.reconcile.simple.reference" +msgstr "easy.reconcile.simple.reference" + +#. module: account_easy_reconcile +#: model:ir.model,name:account_easy_reconcile.model_account_easy_reconcile +msgid "account easy reconcile" +msgstr "Lettrage automatisé" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,expense_exchange_account_id:0 +#: field:easy.reconcile.base,expense_exchange_account_id:0 +#: field:easy.reconcile.options,expense_exchange_account_id:0 +#: field:easy.reconcile.simple,expense_exchange_account_id:0 +#: field:easy.reconcile.simple.name,expense_exchange_account_id:0 +#: field:easy.reconcile.simple.partner,expense_exchange_account_id:0 +#: field:easy.reconcile.simple.reference,expense_exchange_account_id:0 +msgid "Loss Exchange Rate Account" +msgstr "Compte de perte de change" + +#. module: account_easy_reconcile +#: field:account.easy.reconcile.method,income_exchange_account_id:0 +#: field:easy.reconcile.base,income_exchange_account_id:0 +#: field:easy.reconcile.options,income_exchange_account_id:0 +#: field:easy.reconcile.simple,income_exchange_account_id:0 +#: field:easy.reconcile.simple.name,income_exchange_account_id:0 +#: field:easy.reconcile.simple.partner,income_exchange_account_id:0 +#: field:easy.reconcile.simple.reference,income_exchange_account_id:0 +msgid "Gain Exchange Rate Account" +msgstr "Compte de gain de change" diff --git a/account_easy_reconcile/tests/__init__.py b/account_easy_reconcile/tests/__init__.py new file mode 100644 index 00000000..15fad671 --- /dev/null +++ b/account_easy_reconcile/tests/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Author: Damien Crier +# Copyright 2015 Camptocamp SA +# +# 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 test_onchange_company +from . import test_reconcile_history +from . import test_reconcile diff --git a/account_easy_reconcile/tests/test_onchange_company.py b/account_easy_reconcile/tests/test_onchange_company.py new file mode 100644 index 00000000..815fd468 --- /dev/null +++ b/account_easy_reconcile/tests/test_onchange_company.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Author: Damien Crier +# Copyright 2015 Camptocamp SA +# +# 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.tests import common + + +class testOnChange(common.TransactionCase): + + def setUp(self): + super(testOnChange, self).setUp() + self.acc_setting_obj = self.registry('account.config.settings') + self.company_obj = self.registry('res.company') + # analytic defaults account creation + self.main_company = self.ref('base.main_company') + self.sec_company = self.company_obj.create( + self.cr, + self.uid, + { + 'name': 'Second company', + 'reconciliation_commit_every': 80, + } + ) + + def test_retrieve_analytic_account(self): + sec_company_commit = self.company_obj.browse( + self.cr, + self.uid, + self.sec_company).reconciliation_commit_every + main_company_commit = self.company_obj.browse( + self.cr, + self.uid, + self.main_company).reconciliation_commit_every + + res1 = self.acc_setting_obj.onchange_company_id( + self.cr, self.uid, [], self.sec_company) + + self.assertEqual(sec_company_commit, res1.get( + 'value', {}).get('reconciliation_commit_every', False)) + + res2 = self.acc_setting_obj.onchange_company_id( + self.cr, self.uid, [], self.main_company) + self.assertEqual(main_company_commit, res2.get( + 'value', {}).get('reconciliation_commit_every', False)) +# self.assertEqual(self.ref('account.analytic_agrolait'), res2.get( +# 'value', {}).get('reconciliation_commit_every', False)) diff --git a/account_easy_reconcile/tests/test_reconcile.py b/account_easy_reconcile/tests/test_reconcile.py new file mode 100644 index 00000000..72d2de4b --- /dev/null +++ b/account_easy_reconcile/tests/test_reconcile.py @@ -0,0 +1,136 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Author: Damien Crier +# Copyright 2015 Camptocamp SA +# +# 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.tests import common +from openerp import fields, exceptions + + +class testReconcile(common.TransactionCase): + + def setUp(self): + super(testReconcile, self).setUp() + self.rec_history_obj = self.registry('easy.reconcile.history') + self.easy_rec_obj = self.registry('account.easy.reconcile') + self.easy_rec_method_obj = ( + self.registry('account.easy.reconcile.method') + ) + self.easy_rec = self.easy_rec_obj.create( + self.cr, + self.uid, + { + 'name': 'AER2', + 'account': self.ref('account.a_salary_expense'), + } + ) + self.easy_rec_method = self.easy_rec_method_obj.create( + self.cr, + self.uid, + { + 'name': 'easy.reconcile.simple.name', + 'sequence': '10', + 'task_id': self.easy_rec, + } + ) + self.easy_rec_no_history = self.easy_rec_obj.create( + self.cr, + self.uid, + { + 'name': 'AER3', + 'account': self.ref('account.a_salary_expense'), + + } + ) + self.rec_history = self.rec_history_obj.create( + self.cr, + self.uid, + { + 'easy_reconcile_id': self.easy_rec, + 'date': fields.Datetime.now(), + } + ) + + def test_last_history(self): + easy_rec_last_hist = self.easy_rec_obj.browse( + self.cr, + self.uid, + self.easy_rec + ).last_history.id + self.assertEqual(self.rec_history, easy_rec_last_hist) + + def test_last_history_empty(self): + easy_rec_last_hist = self.easy_rec_obj.browse( + self.cr, + self.uid, + self.easy_rec_no_history + ).last_history.id + self.assertEqual(False, easy_rec_last_hist) + + def test_last_history_full_no_history(self): + with self.assertRaises(exceptions.Warning): + self.easy_rec_obj.last_history_reconcile( + self.cr, self.uid, [self.easy_rec_no_history]) + + def test_last_history_partial_no_history(self): + with self.assertRaises(exceptions.Warning): + self.easy_rec_obj.last_history_partial( + self.cr, self.uid, [self.easy_rec_no_history]) + + def test_open_unreconcile(self): + res = self.easy_rec_obj.open_unreconcile( + self.cr, + self.uid, + [self.easy_rec] + ) + self.assertEqual(unicode([('id', 'in', [])]), res.get('domain', [])) + + def test_open_partial_reconcile(self): + res = self.easy_rec_obj.open_partial_reconcile( + self.cr, + self.uid, + [self.easy_rec] + ) + self.assertEqual(unicode([('id', 'in', [])]), res.get('domain', [])) + + def test_prepare_run_transient(self): + res = self.easy_rec_obj._prepare_run_transient( + self.cr, + self.uid, + self.easy_rec_method_obj.browse( + self.cr, + self.uid, + self.easy_rec_method + ) + ) + self.assertEqual(self.ref('account.a_salary_expense'), + res.get('account_id', 0)) + + +class testReconcileNoEasyReconcileAvailable(common.TransactionCase): + + def setUp(self): + super(testReconcileNoEasyReconcileAvailable, self).setUp() + self.rec_history_obj = self.registry('easy.reconcile.history') + self.easy_rec_obj = self.registry('account.easy.reconcile') + +# def test_run_scheduler(self): +# with self.assertRaises(AssertionError): +# self.easy_rec_obj.run_scheduler( +# self.cr, self.uid) diff --git a/account_easy_reconcile/tests/test_reconcile_history.py b/account_easy_reconcile/tests/test_reconcile_history.py new file mode 100644 index 00000000..3c8a616d --- /dev/null +++ b/account_easy_reconcile/tests/test_reconcile_history.py @@ -0,0 +1,78 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Author: Damien Crier +# Copyright 2015 Camptocamp SA +# +# 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.tests import common +from openerp import fields + + +class testReconcileHistory(common.TransactionCase): + + def setUp(self): + super(testReconcileHistory, self).setUp() + self.rec_history_obj = self.registry('easy.reconcile.history') + self.easy_rec_obj = self.registry('account.easy.reconcile') + self.easy_rec = self.easy_rec_obj.create( + self.cr, + self.uid, + { + 'name': 'AER1', + 'account': self.ref('account.a_expense'), + + } + ) + self.rec_history = self.rec_history_obj.create( + self.cr, + self.uid, + { + 'easy_reconcile_id': self.easy_rec, + 'date': fields.Datetime.now(), + } + ) + + def test_assert_open_full_partial(self): + word = 'test' + with self.assertRaises(AssertionError): + self.rec_history_obj._open_move_lines( + self.cr, self.uid, [self.rec_history], word) + + def test_open_full_empty(self): + res = self.rec_history_obj._open_move_lines( + self.cr, self.uid, [self.rec_history], 'full') + self.assertEqual(unicode([('id', 'in', [])]), res.get( + 'domain', [])) + + def test_open_full_empty_from_method(self): + res = self.rec_history_obj.open_reconcile( + self.cr, self.uid, [self.rec_history]) + self.assertEqual(unicode([('id', 'in', [])]), res.get( + 'domain', [])) + + def test_open_partial_empty(self): + res = self.rec_history_obj._open_move_lines( + self.cr, self.uid, [self.rec_history], 'partial') + self.assertEqual(unicode([('id', 'in', [])]), res.get( + 'domain', [])) + + def test_open_partial_empty_from_method(self): + res = self.rec_history_obj.open_partial( + self.cr, self.uid, [self.rec_history]) + self.assertEqual(unicode([('id', 'in', [])]), res.get( + 'domain', []))