[MRG] Merge last 6.1 update and fixes

This commit is contained in:
Joel Grand-Guillaume
2012-12-20 14:39:54 +01:00
8 changed files with 528 additions and 115 deletions

View File

@@ -22,3 +22,4 @@
import easy_reconcile
import base_reconciliation
import simple_reconciliation
import easy_reconcile_history

View File

@@ -22,33 +22,45 @@
{
"name" : "Easy Reconcile",
"version" : "1.1",
"depends" : ["account", "base_scheduler_creator"
"depends" : ["account",
],
"author" : "Akretion,Camptocamp",
"description": """
This is a shared work between Akretion and Camptocamp in order to provide:
Easy Reconcile
==============
This is a shared work between Akretion and Camptocamp
in order to provide:
- reconciliation facilities for big volume of transactions
- setup different profiles of reconciliation by account
- each profile can use many methods of reconciliation
- this module is also a base to create others reconciliation methods
which can plug in the profiles
- a profile a reconciliation can be run manually or by a cron
- monitoring of reconcilation runs with a few logs
- this module is also a base to create others
reconciliation methods which can plug in the profiles
- a profile a reconciliation can be run manually
or by a cron
- monitoring of reconciliation runs with an history
which keep track of the reconciled entries
2 simple reconciliation methods are integrated in this module, the simple
reconciliations works on 2 lines (1 debit / 1 credit) and do not allows
partial reconcilation, they also match on 1 key, partner or entry name.
2 simple reconciliation methods are integrated
in this module, the simple reconciliations works
on 2 lines (1 debit / 1 credit) and do not allow
partial reconcilation, they also match on 1 key,
partner or entry name.
You may be interested to install also the account_advanced_reconciliation
module available at: https://code.launchpad.net/c2c-financial-addons
This latter add more complex reconciliations, allows multiple lines and partial.
You may be interested to install also the
``account_advanced_reconciliation`` module.
This latter add more complex reconciliations,
allows multiple lines and partial.
""",
"website" : "http://www.akretion.com/",
"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,

View File

@@ -137,25 +137,34 @@ class account_easy_reconcile(Model):
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)
return super(account_easy_reconcile, self).copy_data(
cr, uid, id, default=default, context=context)
def _prepare_run_transient(self, cr, uid, rec_method, context=None):
return {'account_id': rec_method.task_id.account.id,
'write_off': rec_method.write_off,
@@ -168,39 +177,69 @@ class account_easy_reconcile(Model):
'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 method in rec.reconcile_method:
count += 1
for rec in self.browse(cr, uid, ids, context=context):
all_ml_rec_ids = []
all_ml_partial_ids = []
for method in rec.reconcile_method:
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)))
all_ml_rec_ids += ml_rec_ids
all_ml_partial_ids += ml_partial_ids
total_rec += len(rec_ids)
total_partial_rec += len(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)
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)
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()

View File

@@ -15,11 +15,32 @@
<field name="account"/>
<field name="unreconciled_count"/>
<field name="reconciled_partial_count"/>
<field name="scheduler"/>
<separator colspan="4" string="Reconcile Method" />
<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 +53,6 @@ The lines should have the same amount (with the write-off) and the same partner
</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>
@@ -48,9 +66,15 @@ The lines should have the same amount (with the write-off) and the same partner
<tree string="Automatic Easy Reconcile">
<field name="name"/>
<field name="account"/>
<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>
@@ -61,7 +85,6 @@ The lines should have the same amount (with the write-off) and the same partner
<field name="res_model">account.easy.reconcile</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'wizard_object' : 'account.easy.reconcile', 'function' : 'action_rec_auto', 'object_link' : 'account.easy.reconcile' }</field>
</record>
@@ -109,16 +132,5 @@ The lines should have the same amount (with the write-off) and the same partner
<menuitem action="action_account_easy_reconcile" id="menu_easy_reconcile" parent="account.periodical_processing_reconciliation"/>
<!-- button on the left -->
<record id="ir_action_create_scheduler_in_easy_reconcile" model="ir.values">
<field name="key2">client_action_multi</field>
<field name="model">account.easy.reconcile</field>
<field name="name">Create a Scheduler</field>
<field eval="'ir.actions.act_window,%d'%ref('base_scheduler_creator.action_scheduler_creator_wizard')" name="value"/>
<field eval="True" name="object"/>
</record>
</data>
</openerp>

View File

@@ -0,0 +1,146 @@
# -*- 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 += [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 += [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)

View File

@@ -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>

View File

@@ -1,100 +1,136 @@
# 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é"
#: 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 "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)."
#: 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
#: 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é"
#: 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 "easy.reconcile.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
msgid "Simple. Amount and Name"
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é"
msgstr "Lettrage 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"
#: view:easy.reconcile.history:0
msgid "Today"
msgstr "Aujourd'hui"
#. 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"
#: view:easy.reconcile.history:0
msgid "Date"
msgstr "Date"
#. module: account_easy_reconcile
#: view:account.easy.reconcile:0
@@ -104,15 +140,82 @@ msgstr "Configuration"
#. 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"
msgstr "easy.reconcile.simple.partner"
#. module: account_easy_reconcile
#: view:account.easy.reconcile:0
msgid "Task Information"
msgstr "Information sur la tâche"
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"

View File

@@ -11,3 +11,5 @@ access_account_easy_reconcile_acc_mgr,account.easy.reconcile,model_account_easy_
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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
11 access_easy_reconcile_simple_name_acc_mgr easy.reconcile.simple.name model_easy_reconcile_simple_name account.group_account_user 1 0 0 0
12 access_easy_reconcile_simple_partner_acc_mgr easy.reconcile.simple.partner model_easy_reconcile_simple_partner account.group_account_user 1 0 0 0
13 access_easy_reconcile_simple_reference_acc_mgr easy.reconcile.simple.reference model_easy_reconcile_simple_reference account.group_account_user 1 0 0 0
14 access_easy_reconcile_history_acc_user easy.reconcile.history model_easy_reconcile_history account.group_account_user 1 1 1 0
15 access_easy_reconcile_history_acc_mgr easy.reconcile.history model_easy_reconcile_history account.group_account_manager 1 1 1 1