review of the computed table to get a more readable dict result. Allow to compare column with any column of the table.
parent
3a67910a6c
commit
c047f52614
|
@ -32,6 +32,7 @@ from openerp.osv import orm, fields
|
|||
from openerp.tools.safe_eval import safe_eval
|
||||
from openerp.tools.translate import _
|
||||
from openerp import tools
|
||||
from collections import OrderedDict
|
||||
|
||||
|
||||
class AutoStruct(object):
|
||||
|
@ -535,42 +536,47 @@ class mis_report_instance(orm.Model):
|
|||
r = self.browse(cr, uid, _ids, context=context)
|
||||
context['state'] = r.target_move
|
||||
|
||||
res = {}
|
||||
content = OrderedDict()
|
||||
#empty line name for header
|
||||
header = OrderedDict()
|
||||
header[''] = {'kpi_name': '', 'cols': []}
|
||||
|
||||
rows = []
|
||||
#initialize lines with kpi
|
||||
for kpi in r.report_id.kpi_ids:
|
||||
rows.append(dict(name=kpi.name,
|
||||
description=kpi.description))
|
||||
res['rows'] = rows
|
||||
content[kpi.name] = {'kpi_name': kpi.description, 'cols': []}
|
||||
|
||||
cols = []
|
||||
report_instance_period_obj = self.pool.get('mis.report.instance.period')
|
||||
kpi_obj = self.pool.get('mis.report.kpi')
|
||||
for period in r.period_ids:
|
||||
current_col = dict(name=period.name,
|
||||
values=report_instance_period_obj._compute(cr, uid, period, context=context),
|
||||
date=period.duration > 1 and
|
||||
_('from %s to %s' % (period.period_from and period.period_from.name
|
||||
or self._format_date(cr, uid, period.date_from, context=context),
|
||||
period.period_to and period.period_to.name
|
||||
or self._format_date(cr, uid, period.date_to, context=context)))
|
||||
or period.period_from and period.period_from.name or period.date_from)
|
||||
cols.append(current_col)
|
||||
# add comparison column
|
||||
for compare_col in period.comparison_column_ids:
|
||||
column1 = current_col
|
||||
for col in cols:
|
||||
if col['name'] == compare_col.name:
|
||||
column2 = col
|
||||
continue
|
||||
compare_values = {}
|
||||
for kpi in r.report_id.kpi_ids:
|
||||
compare_values[kpi.name] = {'val_r': kpi_obj._render_comparison(kpi,
|
||||
column1['values'][kpi.name]['val'],
|
||||
column2['values'][kpi.name]['val'])}
|
||||
cols.append(dict(name='%s - %s' % (period.name, compare_col.name),
|
||||
values=compare_values,
|
||||
date=''))
|
||||
res['cols'] = cols
|
||||
|
||||
return res
|
||||
period_values = {}
|
||||
|
||||
for period in r.period_ids:
|
||||
# add the column header
|
||||
header['']['cols'].append(dict(name=period.name,
|
||||
date=period.duration > 1 and
|
||||
_('from %s to %s' %
|
||||
(period.period_from and period.period_from.name
|
||||
or self._format_date(cr, uid, period.date_from, context=context),
|
||||
period.period_to and period.period_to.name
|
||||
or self._format_date(cr, uid, period.date_to, context=context)))
|
||||
or period.period_from and period.period_from.name or period.date_from))
|
||||
# compute kpi values
|
||||
values = report_instance_period_obj._compute(cr, uid, period, context=context)
|
||||
period_values[period.name] = values
|
||||
for key in values:
|
||||
content[key]['cols'].append(values[key])
|
||||
|
||||
# add comparison column
|
||||
for period in r.period_ids:
|
||||
for compare_col in period.comparison_column_ids:
|
||||
# add the column header
|
||||
header['']['cols'].append(dict(name='%s - %s' % (period.name, compare_col.name), date=''))
|
||||
column1_values = period_values[period.name]
|
||||
column2_values = period_values[compare_col.name]
|
||||
for kpi in r.report_id.kpi_ids:
|
||||
content[kpi.name]['cols'].append({'val_r': kpi_obj._render_comparison(kpi,
|
||||
column1_values[kpi.name]['val'],
|
||||
column2_values[kpi.name]['val'])})
|
||||
|
||||
return {'header': header,
|
||||
'content': content}
|
||||
|
|
|
@ -5,38 +5,38 @@
|
|||
<thead>
|
||||
<tr class="oe_list_header_columns">
|
||||
<th class="oe_list_header_char"></th>
|
||||
<th t-foreach="widget.mis_report_data.cols" t-as="col" class="oe_list_header_char rallign">
|
||||
<t t-foreach="widget.mis_report_data.header" t-as="h">
|
||||
<th t-foreach="h_value.cols" t-as="header" class="oe_list_header_char rallign">
|
||||
<div>
|
||||
<t t-esc="col.name"/>
|
||||
<t t-esc="header.name"/>
|
||||
</div>
|
||||
<div>
|
||||
<t t-esc="col.date"/>
|
||||
<t t-esc="header.date"/>
|
||||
</div>
|
||||
</th>
|
||||
</t>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr t-foreach="widget.mis_report_data.rows" t-as="row">
|
||||
<tr t-foreach="widget.mis_report_data.content" t-as="c">
|
||||
<th>
|
||||
<div>
|
||||
<t t-esc="row.description"/>
|
||||
<t t-esc="c_value.kpi_name"/>
|
||||
</div>
|
||||
</th>
|
||||
<td t-foreach="widget.mis_report_data.cols" t-as="col" class="rallign">
|
||||
<t t-foreach="col.values" t-as="value">
|
||||
<t t-if="value == row.name">
|
||||
<label t-att="{'title': value_value.val_c}" class=" oe_form_label_help oe_align_right">
|
||||
<t t-esc="value_value.val_r"/>
|
||||
</label>
|
||||
</t>
|
||||
</t>
|
||||
<td t-foreach="c_value.cols" t-as="value" class="rallign">
|
||||
<label t-att="{'title': value_value.val_c}" class=" oe_form_label_help oe_align_right">
|
||||
<t t-esc="value_value.val_r"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td class="oe_list_footer" />
|
||||
<td t-foreach="widget.mis_report_data.cols" class="oe_list_footer" />
|
||||
<t t-foreach="widget.mis_report_data.header" t-as="f">
|
||||
<td t-foreach="f_value.cols" class="oe_list_footer" />
|
||||
</t>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
|
Loading…
Reference in New Issue