← Back to team overview

banking-addons-team team mailing list archive

[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','&lt;', time.strftime('%%Y-%%m-%%d 23:59:59')), ('date','&gt;=', 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','&lt;', time.strftime('%%Y-%%m-%%d 23:59:59')),('date','&gt;=',(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