[IMP] create history of reconciliations

This commit is contained in:
Guewen Baconnier @ Camptocamp
2012-12-19 14:07:07 +01:00
parent f66bd8c459
commit 3ff89320a1
3 changed files with 53 additions and 27 deletions

View File

@@ -144,7 +144,7 @@ class account_easy_reconcile(Model):
'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'),
}
@@ -168,39 +168,58 @@ 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)
return True
history_id = 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 {
'name':_("Reconciliations"),
'view_mode': 'tree,form', # FIXME: In OpenERP 6.1 we can't display
'view_id': False, # only the form, check in version 7.0
'view_type': 'form',
'res_model': 'easy.reconcile.history',
'type': 'ir.actions.act_window',
'nodestroy': True,
'target': 'current',
'domain': unicode([('id', '=', history_id)]),
}

View File

@@ -27,13 +27,19 @@ class easy_reconcile_history(orm.Model):
Each history stores the list of reconciliations done"""
_name = 'easy.reconcile.history'
_rec_name = 'easy_reconcile_id'
_order = 'date DESC'
_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', string='Reconciliations', readonly=True),
'account.move.reconcile',
'account_move_reconcile_history_rel',
string='Reconciliations', readonly=True),
'reconcile_partial_ids': fields.many2many(
'account.move.reconcile', string='Partial Reconciliations', readonly=True),
'account.move.reconcile',
'account_move_reconcile_history_partial_rel',
string='Partial Reconciliations', readonly=True),
}

View File

@@ -20,6 +20,7 @@
<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"
@@ -31,7 +32,7 @@
</field>
</record>
<record id="easy_easy_reconcile_history_form" model="ir.ui.view">
<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>
@@ -46,7 +47,7 @@
</field>
</record>
<record id="easy_easy_reconcile_history_tree" model="ir.ui.view">
<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>