banking-addons-team team mailing list archive
-
banking-addons-team team
-
Mailing list archive
-
Message #00230
[Merge] lp:~c2c/banking-addons/6.1-account_easy_reconcile-history into lp:banking-addons/bank-statement-reconcile-61
Guewen Baconnier @ Camptocamp has proposed merging lp:~c2c/banking-addons/6.1-account_easy_reconcile-history into lp:banking-addons/bank-statement-reconcile-61.
Commit message:
[ADD] account_easy_reconcile: add an history to keep the track of the move lines reconciled
Requested reviews:
Banking Addons Team (banking-addons-team)
For more details, see:
https://code.launchpad.net/~c2c/banking-addons/6.1-account_easy_reconcile-history/+merge/140844
Hi,
This is an improvement of the module account_easy_reconcile.
It adds an history to keep the track of the reconciled move lines on each reconciliation run.
--
https://code.launchpad.net/~c2c/banking-addons/6.1-account_easy_reconcile-history/+merge/140844
Your team Banking Addons Team is requested to review the proposed merge of lp:~c2c/banking-addons/6.1-account_easy_reconcile-history into lp:banking-addons/bank-statement-reconcile-61.
=== modified file 'account_easy_reconcile/__init__.py'
--- account_easy_reconcile/__init__.py 2012-06-13 14:41:36 +0000
+++ account_easy_reconcile/__init__.py 2012-12-20 09:16:30 +0000
@@ -22,3 +22,4 @@
import easy_reconcile
import base_reconciliation
import simple_reconciliation
+import easy_reconcile_history
=== modified file 'account_easy_reconcile/__openerp__.py'
--- account_easy_reconcile/__openerp__.py 2012-11-28 14:12:02 +0000
+++ account_easy_reconcile/__openerp__.py 2012-12-20 09:16:30 +0000
@@ -48,7 +48,10 @@
"category" : "Finance",
"init_xml" : [],
"demo_xml" : [],
- "update_xml" : ["easy_reconcile.xml"],
+ "update_xml" : [
+ "easy_reconcile.xml",
+ "easy_reconcile_history_view.xml",
+ ],
'license': 'AGPL-3',
"auto_install": False,
"installable": True,
=== modified file 'account_easy_reconcile/easy_reconcile.py'
--- account_easy_reconcile/easy_reconcile.py 2012-11-01 16:14:03 +0000
+++ account_easy_reconcile/easy_reconcile.py 2012-12-20 09:16:30 +0000
@@ -137,22 +137,39 @@
context=context))
return res
+ def _last_history(self, cr, uid, ids, name, args, context=None):
+ result = {}
+ for history in self.browse(cr, uid, ids, context=context):
+ # history is sorted by date desc
+ result[history.id] = history.history_ids[0].id
+ return result
+
_columns = {
'name': fields.char('Name', size=64, required=True),
'account': fields.many2one('account.account', 'Account', required=True),
'reconcile_method': fields.one2many('account.easy.reconcile.method', 'task_id', 'Method'),
'scheduler': fields.many2one('ir.cron', 'scheduler', readonly=True),
- 'rec_log': fields.text('log', readonly=True),
'unreconciled_count': fields.function(_get_total_unrec,
- type='integer', string='Fully Unreconciled Entries'),
+ type='integer', string='Unreconciled Entries'),
'reconciled_partial_count': fields.function(_get_partial_rec,
type='integer', string='Partially Reconciled Entries'),
+ 'history_ids': fields.one2many(
+ 'easy.reconcile.history',
+ 'easy_reconcile_id',
+ string='History'),
+ 'last_history':
+ fields.function(
+ _last_history,
+ string='Last History',
+ type='many2one',
+ relation='easy.reconcile.history',
+ readonly=True),
}
def copy_data(self, cr, uid, id, default=None, context=None):
if default is None:
default = {}
- default = dict(default, rec_log=False, scheduler=False)
+ default = dict(default, scheduler=False)
return super(account_easy_reconcile, self).copy_data(
cr, uid, id, default=default, context=context)
@@ -168,39 +185,69 @@
'filter': rec_method.filter}
def run_reconcile(self, cr, uid, ids, context=None):
+ def find_reconcile_ids(fieldname, move_line_ids):
+ if not move_line_ids:
+ return []
+ sql = ("SELECT DISTINCT " + fieldname +
+ " FROM account_move_line "
+ " WHERE id in %s "
+ " AND " + fieldname + " IS NOT NULL")
+ cr.execute(sql, (tuple(move_line_ids),))
+ res = cr.fetchall()
+ return [row[0] for row in res]
+
if context is None:
context = {}
- for rec_id in ids:
- rec = self.browse(cr, uid, rec_id, context=context)
- total_rec = 0
- total_partial_rec = 0
- details = []
- count = 0
+ for rec in self.browse(cr, uid, ids, context=context):
+ all_ml_rec_ids = []
+ all_ml_partial_ids = []
+
for method in rec.reconcile_method:
- count += 1
-
rec_model = self.pool.get(method.name)
auto_rec_id = rec_model.create(
cr, uid,
self._prepare_run_transient(cr, uid, method, context=context),
context=context)
- rec_ids, partial_ids = rec_model.automatic_reconcile(
+ ml_rec_ids, ml_partial_ids = rec_model.automatic_reconcile(
cr, uid, auto_rec_id, context=context)
- details.append(_('method %d : full: %d lines, partial: %d lines') % \
- (count, len(rec_ids), len(partial_ids)))
-
- total_rec += len(rec_ids)
- total_partial_rec += len(partial_ids)
-
- log = self.read(cr, uid, rec_id, ['rec_log'], context=context)['rec_log']
- log_lines = log and log.splitlines() or []
- log_lines[0:0] = [_("%s : %d lines have been fully reconciled" \
- " and %d lines have been partially reconciled (%s)") % \
- (time.strftime(DEFAULT_SERVER_DATETIME_FORMAT), total_rec,
- total_partial_rec, ' | '.join(details))]
- log = "\n".join(log_lines)
- self.write(cr, uid, rec_id, {'rec_log': log}, context=context)
+ all_ml_rec_ids += ml_rec_ids
+ all_ml_partial_ids += ml_partial_ids
+
+ reconcile_ids = find_reconcile_ids(
+ 'reconcile_id', all_ml_rec_ids)
+ partial_ids = find_reconcile_ids(
+ 'reconcile_partial_id', all_ml_partial_ids)
+
+ self.pool.get('easy.reconcile.history').create(
+ cr,
+ uid,
+ {'easy_reconcile_id': rec.id,
+ 'date': fields.datetime.now(),
+ 'reconcile_ids': [(4, rid) for rid in reconcile_ids],
+ 'reconcile_partial_ids': [(4, rid) for rid in partial_ids]},
+ context=context)
return True
+ def last_history_reconcile(self, cr, uid, rec_id, context=None):
+ """ Get the last history record for this reconciliation profile
+ and return the action which opens move lines reconciled
+ """
+ if isinstance(rec_id, (tuple, list)):
+ assert len(rec_id) == 1, \
+ "Only 1 id expected"
+ rec_id = rec_id[0]
+ rec = self.browse(cr, uid, rec_id, context=context)
+ return rec.last_history.open_reconcile()
+
+ def last_history_partial(self, cr, uid, rec_id, context=None):
+ """ Get the last history record for this reconciliation profile
+ and return the action which opens move lines reconciled
+ """
+ if isinstance(rec_id, (tuple, list)):
+ assert len(rec_id) == 1, \
+ "Only 1 id expected"
+ rec_id = rec_id[0]
+ rec = self.browse(cr, uid, rec_id, context=context)
+ return rec.last_history.open_partial()
=== modified file 'account_easy_reconcile/easy_reconcile.xml'
--- account_easy_reconcile/easy_reconcile.xml 2012-06-19 06:05:25 +0000
+++ account_easy_reconcile/easy_reconcile.xml 2012-12-20 09:16:30 +0000
@@ -20,6 +20,28 @@
<notebook colspan="4">
<page name="methods" string="Configuration">
<field name="reconcile_method" colspan = "4" nolabel="1"/>
+ <button icon="gtk-ok" name="run_reconcile" colspan="4"
+ string="Start Auto Reconcilation" type="object"/>
+ <button icon="STOCK_JUMP_TO" name="last_history_reconcile" colspan="2"
+ string="Display items reconciled on the last run" type="object"/>
+ <button icon="STOCK_JUMP_TO" name="last_history_partial" colspan="2"
+ string="Display items partially reconciled on the last run"
+ type="object"/>
+ </page>
+ <page name="history" string="History">
+ <field name="history_ids" nolabel="1">
+ <tree string="Automatic Easy Reconcile History">
+ <field name="date"/>
+ <!-- display the count of lines -->
+ <field name="reconcile_line_ids"/>
+ <button icon="STOCK_JUMP_TO" name="open_reconcile"
+ string="Go to reconciled items" type="object"/>
+ <!-- display the count of lines -->
+ <field name="partial_line_ids"/>
+ <button icon="STOCK_JUMP_TO" name="open_partial"
+ string="Go to partially reconciled items" type="object"/>
+ </tree>
+ </field>
</page>
<page name="information" string="Information">
<separator colspan="4" string="Simple. Amount and Name"/>
@@ -32,9 +54,6 @@
</page>
</notebook>
- <button icon="gtk-ok" name="run_reconcile" colspan = "4" string="Start Auto Reconcilation" type="object"/>
- <separator colspan="4" string="Log" />
- <field name="rec_log" colspan = "4" nolabel="1"/>
</form>
</field>
</record>
@@ -51,6 +70,13 @@
<field name="scheduler"/>
<field name="unreconciled_count"/>
<field name="reconciled_partial_count"/>
+ <button icon="gtk-ok" name="run_reconcile" colspan="4"
+ string="Start Auto Reconcilation" type="object"/>
+ <button icon="STOCK_JUMP_TO" name="last_history_reconcile" colspan="2"
+ string="Display items reconciled on the last run" type="object"/>
+ <button icon="STOCK_JUMP_TO" name="last_history_partial" colspan="2"
+ string="Display items partially reconciled on the last run"
+ type="object"/>
</tree>
</field>
</record>
=== added file 'account_easy_reconcile/easy_reconcile_history.py'
--- account_easy_reconcile/easy_reconcile_history.py 1970-01-01 00:00:00 +0000
+++ account_easy_reconcile/easy_reconcile_history.py 2012-12-20 09:16:30 +0000
@@ -0,0 +1,148 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Guewen Baconnier
+# Copyright 2012 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 <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv import orm, fields
+from openerp.tools.translate import _
+
+
+class easy_reconcile_history(orm.Model):
+ """ Store an history of the runs per profile
+ Each history stores the list of reconciliations done"""
+
+ _name = 'easy.reconcile.history'
+ _rec_name = 'easy_reconcile_id'
+ _order = 'date DESC'
+
+ def _reconcile_line_ids(self, cr, uid, ids, name, args, context=None):
+ result = {}
+
+ for history in self.browse(cr, uid, ids, context=context):
+ result[history.id] = {}
+
+ move_line_ids = []
+ for reconcile in history.reconcile_ids:
+ move_line_ids.extend(
+ [line.id
+ for line
+ in reconcile.line_id])
+ result[history.id]['reconcile_line_ids'] = move_line_ids
+
+ move_line_ids = []
+ for reconcile in history.reconcile_partial_ids:
+ move_line_ids.extend(
+ [line.id
+ for line
+ in reconcile.line_partial_ids])
+ result[history.id]['partial_line_ids'] = move_line_ids
+
+ return result
+
+ _columns = {
+ 'easy_reconcile_id': fields.many2one(
+ 'account.easy.reconcile', 'Reconcile Profile', readonly=True),
+ 'date': fields.datetime('Run date', readonly=True),
+ 'reconcile_ids': fields.many2many(
+ 'account.move.reconcile',
+ 'account_move_reconcile_history_rel',
+ string='Reconciliations', readonly=True),
+ 'reconcile_partial_ids': fields.many2many(
+ 'account.move.reconcile',
+ 'account_move_reconcile_history_partial_rel',
+ string='Partial Reconciliations', readonly=True),
+ 'reconcile_line_ids':
+ fields.function(
+ _reconcile_line_ids,
+ string='Reconciled Items',
+ type='many2many',
+ relation='account.move.line',
+ readonly=True,
+ multi='lines'),
+ 'partial_line_ids':
+ fields.function(
+ _reconcile_line_ids,
+ string='Partially Reconciled Items',
+ type='many2many',
+ relation='account.move.line',
+ readonly=True,
+ multi='lines'),
+ }
+
+ def _open_move_lines(self, cr, uid, history_id, rec_type='full', context=None):
+ """ For an history record, open the view of move line with
+ the reconciled or partially reconciled move lines
+
+ :param history_id: id of the history
+ :param rec_type: 'full' or 'partial'
+ :return: action to open the move lines
+ """
+ assert rec_type in ('full', 'partial'), \
+ "rec_type must be 'full' or 'partial'"
+
+ history = self.browse(cr, uid, history_id, context=context)
+
+ if rec_type == 'full':
+ field = 'reconcile_line_ids'
+ name = _('Reconciliations')
+ else:
+ field = 'partial_line_ids'
+ name = _('Partial Reconciliations')
+
+ move_line_ids = [line.id for line in getattr(history, field)]
+
+ return {
+ 'name': name,
+ 'view_mode': 'tree,form',
+ 'view_id': False,
+ 'view_type': 'form',
+ 'res_model': 'account.move.line',
+ 'type': 'ir.actions.act_window',
+ 'nodestroy': True,
+ 'target': 'current',
+ 'domain': unicode([('id', 'in', move_line_ids)]),
+ }
+
+ def open_reconcile(self, cr, uid, history_ids, context=None):
+ """ For an history record, open the view of move line
+ with the reconciled move lines
+
+ :param history_ids: id of the record as int or long
+ Accept a list with 1 id too to be
+ used from the client.
+ """
+ if isinstance(history_ids, (tuple, list)):
+ assert len(history_ids) == 1, "only 1 ID is accepted"
+ history_ids = history_ids[0]
+ return self._open_move_lines(
+ cr, uid, history_ids, rec_type='full', context=None)
+
+ def open_partial(self, cr, uid, history_ids, context=None):
+ """ For an history record, open the view of move line
+ with the partially reconciled move lines
+
+ :param history_ids: id of the record as int or long
+ Accept a list with 1 id too to be
+ used from the client.
+ """
+ if isinstance(history_ids, (tuple, list)):
+ assert len(history_ids) == 1, "only 1 ID is accepted"
+ history_ids = history_ids[0]
+ return self._open_move_lines(
+ cr, uid, history_ids, rec_type='partial', context=None)
=== added file 'account_easy_reconcile/easy_reconcile_history_view.xml'
--- account_easy_reconcile/easy_reconcile_history_view.xml 1970-01-01 00:00:00 +0000
+++ account_easy_reconcile/easy_reconcile_history_view.xml 2012-12-20 09:16:30 +0000
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data noupdate="0">
+
+ <record id="view_easy_reconcile_history_search" model="ir.ui.view">
+ <field name="name">easy.reconcile.history.search</field>
+ <field name="model">easy.reconcile.history</field>
+ <field name="type">search</field>
+ <field name="arch" type="xml">
+ <search string="Automatic Easy Reconcile History">
+ <filter icon="terp-go-today" string="Today"
+ domain="[('date','<', time.strftime('%%Y-%%m-%%d 23:59:59')), ('date','>=', time.strftime('%%Y-%%m-%%d 00:00:00'))]"
+ help="Todays' Reconcilations" />
+ <filter icon="terp-go-week" string="7 Days"
+ help="Reconciliations of last 7 days"
+ domain="[('date','<', time.strftime('%%Y-%%m-%%d 23:59:59')),('date','>=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d 00:00:00'))]"
+ />
+
+ <separator orientation="vertical"/>
+ <field name="easy_reconcile_id"/>
+ <field name="date"/>
+
+ <newline/>
+ <group expand="0" string="Group By...">
+ <filter string="Reconciliation Profile"
+ icon="terp-stock_effects-object-colorize"
+ domain="[]" context="{'group_by': 'easy_reconcile_id'}"/>
+ <filter string="Date" icon="terp-go-month" domain="[]"
+ context="{'group_by': 'date'}"/>
+ </group>
+ </search>
+ </field>
+ </record>
+
+ <record id="easy_reconcile_history_form" model="ir.ui.view">
+ <field name="name">easy.reconcile.history.form</field>
+ <field name="priority">16</field>
+ <field name="model">easy.reconcile.history</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Automatic Easy Reconcile History">
+ <field name="easy_reconcile_id"/>
+ <field name="date"/>
+ <group colspan="2" col="2">
+ <separator colspan="2" string="Reconcilations"/>
+ <field name="reconcile_ids" nolabel="1"/>
+ </group>
+ <group colspan="2" col="2">
+ <separator colspan="2" string="Partial Reconcilations"/>
+ <field name="reconcile_partial_ids" nolabel="1"/>
+ </group>
+ <group col="2" colspan="4">
+ <button icon="STOCK_JUMP_TO" name="open_reconcile" string="Go to reconciled items" type="object"/>
+ <button icon="STOCK_JUMP_TO" name="open_partial" string="Go to partially reconciled items" type="object"/>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <record id="easy_reconcile_history_tree" model="ir.ui.view">
+ <field name="name">easy.reconcile.history.tree</field>
+ <field name="priority">16</field>
+ <field name="model">easy.reconcile.history</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Automatic Easy Reconcile History">
+ <field name="easy_reconcile_id"/>
+ <field name="date"/>
+ <!-- display the count of lines -->
+ <field name="reconcile_line_ids"/>
+ <button icon="STOCK_JUMP_TO" name="open_reconcile"
+ string="Go to reconciled items" type="object"/>
+ <!-- display the count of lines -->
+ <field name="partial_line_ids"/>
+ <button icon="STOCK_JUMP_TO" name="open_partial"
+ string="Go to partially reconciled items" type="object"/>
+ </tree>
+ </field>
+ </record>
+
+ <record id="action_easy_reconcile_history" model="ir.actions.act_window">
+ <field name="name">Easy Automatic Reconcile History</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">easy.reconcile.history</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form</field>
+ </record>
+
+ <act_window
+ context="{'search_default_easy_reconcile_id': [active_id], 'default_easy_reconcile_id': active_id}"
+ id="act_easy_reconcile_to_history"
+ name="History Details"
+ groups=""
+ res_model="easy.reconcile.history"
+ src_model="account.easy.reconcile"/>
+
+ </data>
+</openerp>
=== modified file 'account_easy_reconcile/i18n/fr.po'
--- account_easy_reconcile/i18n/fr.po 2012-11-19 10:30:03 +0000
+++ account_easy_reconcile/i18n/fr.po 2012-12-20 09:16:30 +0000
@@ -1,69 +1,115 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
-# * account_easy_reconcile
+# * account_easy_reconcile
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 6.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-11-07 12:59+0000\n"
+"POT-Creation-Date: 2012-12-20 08:54+0000\n"
"PO-Revision-Date: 2012-11-07 12:59+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_easy_reconcile
+#: code:addons/account_easy_reconcile/easy_reconcile_history.py:103
+msgid "Reconciliations"
+msgstr "Lettrages"
+
+#. module: account_easy_reconcile
#: view:account.easy.reconcile:0
msgid "Information"
msgstr "Information"
#. module: account_easy_reconcile
-#: view:account.easy.reconcile.method:0
-msgid "Automatic Easy Reconcile Method"
-msgstr "Méthode de léttrage automatisé"
-
-#. module: account_easy_reconcile
-#: view:account.easy.reconcile:0
-msgid "Match one debit line vs one credit line. Do not allow partial reconcilation. 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
-#: view:account.easy.reconcile:0
-msgid "Log"
-msgstr "Historique"
-
-#. module: account_easy_reconcile
-#: view:account.easy.reconcile:0
-msgid "Match one debit line vs one credit line. Do not allow partial reconcilation. 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
-#: view:account.easy.reconcile:0
-msgid "Automatic Easy Reconcile"
-msgstr "Léttrage automatisé"
-
-#. 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 léttrage"
-
-#. module: account_easy_reconcile
-#: view:account.easy.reconcile:0
-msgid "Start Auto Reconcilation"
-msgstr "Lancer le léttrage automatisé"
+#: 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 view:easy.reconcile.history:0
+msgid "Go to partially reconciled items"
+msgstr "Voir les entrées partiellement lettrées"
+
+#. 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.model,name:account_easy_reconcile.model_easy_reconcile_simple_name
msgid "easy.reconcile.simple.name"
-msgstr "Léttrage automatisé.simple.Description"
+msgstr "easy.reconcile.simple.name"
#. module: account_easy_reconcile
#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_options
msgid "easy.reconcile.options"
-msgstr "Léttrage automatisé.options"
+msgstr "lettrage automatisé.options"
+
+#. module: account_easy_reconcile
+#: view:easy.reconcile.history:0
+msgid "Group By..."
+msgstr "Grouper par..."
+
+#. module: account_easy_reconcile
+#: view:account.easy.reconcile:0
+msgid "Task Information"
+msgstr "Information sur la tâche"
+
+#. module: account_easy_reconcile
+#: view:account.easy.reconcile:0
+msgid "Reconcile Method"
+msgstr "Méthode de lettrage"
+
+#. 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
+#: 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
+#: 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 ""
+"Match one debit line vs one credit line. Do not allow partial reconcilation. "
+"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
+#: 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
+#: 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:easy.reconcile.history:0
+msgid "Todays' Reconcilations"
+msgstr "Lettrages du jour"
#. module: account_easy_reconcile
#: view:account.easy.reconcile:0
@@ -71,30 +117,20 @@
msgstr "Simple. Montant et description"
#. module: account_easy_reconcile
-#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_simple
-msgid "easy.reconcile.simple"
-msgstr "Léttrage automatisé.simple"
-
-#. 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 "Léttrage automatisé"
-
-#. module: account_easy_reconcile
-#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_simple_reference
-msgid "easy.reconcile.simple.reference"
-msgstr "Léttrage automatisé.simple.réference"
-
-#. module: account_easy_reconcile
-#: view:account.easy.reconcile:0
-msgid "Reconcile Method"
-msgstr "Méthode de léttrage"
-
-#. module: account_easy_reconcile
-#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_base
-msgid "easy.reconcile.base"
-msgstr "Léttrage automatisé.base"
+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
#: view:account.easy.reconcile:0
@@ -104,15 +140,82 @@
#. module: account_easy_reconcile
#: model:ir.model,name:account_easy_reconcile.model_easy_reconcile_simple_partner
msgid "easy.reconcile.simple.partner"
-msgstr "Léttrage automatisé.simple.partenaire"
-
-#. module: account_easy_reconcile
-#: view:account.easy.reconcile:0
-msgid "Task Information"
-msgstr "Information sur la tâche"
+msgstr "easy.reconcile.simple.partner"
+
+#. module: account_easy_reconcile
+#: view:account.easy.reconcile:0
+msgid "Automatic Easy Reconcile"
+msgstr "Lettrage automatisé"
+
+#. module: account_easy_reconcile
+#: view:account.easy.reconcile:0
+msgid "Start Auto Reconcilation"
+msgstr "Lancer le lettrage automatisé"
+
+#. 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
+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.method:0
+msgid "Automatic Easy Reconcile Method"
+msgstr "Méthode de lettrage automatisé"
+
+#. module: account_easy_reconcile
+#: view:account.easy.reconcile:0
+msgid ""
+"Match one debit line vs one credit line. Do not allow partial reconcilation. "
+"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
+#: 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
+#: view:easy.reconcile.history:0
+msgid "Partial Reconcilations"
+msgstr "Lettrages partiels"
+
+#. 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
+#: code:addons/account_easy_reconcile/easy_reconcile_history.py:106
+msgid "Partial Reconciliations"
+msgstr "Lettrages partiels"
+
+#. 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 "Léttrage automatisé"
+msgstr "Lettrage automatisé"
+#~ msgid "Log"
+#~ msgstr "Historique"
=== modified file 'account_easy_reconcile/security/ir.model.access.csv'
--- account_easy_reconcile/security/ir.model.access.csv 2012-11-28 14:12:02 +0000
+++ account_easy_reconcile/security/ir.model.access.csv 2012-12-20 09:16:30 +0000
@@ -11,3 +11,5 @@
access_easy_reconcile_simple_name_acc_mgr,easy.reconcile.simple.name,model_easy_reconcile_simple_name,account.group_account_user,1,0,0,0
access_easy_reconcile_simple_partner_acc_mgr,easy.reconcile.simple.partner,model_easy_reconcile_simple_partner,account.group_account_user,1,0,0,0
access_easy_reconcile_simple_reference_acc_mgr,easy.reconcile.simple.reference,model_easy_reconcile_simple_reference,account.group_account_user,1,0,0,0
+access_easy_reconcile_history_acc_user,easy.reconcile.history,model_easy_reconcile_history,account.group_account_user,1,1,1,0
+access_easy_reconcile_history_acc_mgr,easy.reconcile.history,model_easy_reconcile_history,account.group_account_manager,1,1,1,1
Follow ups