Skip to content

Commit c388fe2

Browse files
committed
Add inverse detail option to instance
1 parent fcd2042 commit c388fe2

5 files changed

Lines changed: 17 additions & 7 deletions

File tree

mis_builder/models/kpimatrix.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -432,17 +432,20 @@ def compute_sums(self):
432432
tooltips=False,
433433
)
434434

435-
def iter_rows(self):
435+
def iter_rows(self, inverse_detail=False):
436436
"""Iterate rows in display order.
437437
438438
yields KpiMatrixRow.
439439
"""
440440
for kpi_row in self._kpi_rows.values():
441-
yield kpi_row
441+
if not inverse_detail:
442+
yield kpi_row
442443
detail_rows = self._detail_rows[kpi_row.kpi].values()
443444
detail_rows = sorted(detail_rows, key=lambda r: r.label)
444445
for detail_row in detail_rows:
445446
yield detail_row
447+
if inverse_detail:
448+
yield kpi_row
446449

447450
def iter_cols(self):
448451
"""Iterate columns in display order.
@@ -480,7 +483,7 @@ def get_account_name(self, account_id):
480483
self._load_account_names()
481484
return self._account_names[account_id]
482485

483-
def as_dict(self):
486+
def as_dict(self, inverse_detail=False):
484487
header = [{"cols": []}, {"cols": []}]
485488
for col in self.iter_cols():
486489
header[0]["cols"].append(
@@ -500,7 +503,7 @@ def as_dict(self):
500503
)
501504

502505
body = []
503-
for row in self.iter_rows():
506+
for row in self.iter_rows(inverse_detail=inverse_detail):
504507
if (
505508
row.style_props.hide_empty and row.is_empty()
506509
) or row.style_props.hide_always:

mis_builder/models/mis_report_instance.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,9 @@ def _compute_pivot_date(self):
563563
display_columns_description = fields.Boolean(
564564
help="Display the date range details in the column headers."
565565
)
566+
inverse_detail = fields.Boolean(
567+
help="Show detail before KPI.",
568+
)
566569
comparison_mode = fields.Boolean(
567570
compute="_compute_comparison_mode", inverse="_inverse_comparison_mode"
568571
)
@@ -869,7 +872,7 @@ def _compute_matrix(self):
869872
def compute(self):
870873
self.ensure_one()
871874
kpi_matrix = self._compute_matrix()
872-
return kpi_matrix.as_dict()
875+
return kpi_matrix.as_dict(inverse_detail=self.inverse_detail)
873876

874877
def drilldown(self, arg):
875878
self.ensure_one()

mis_builder/report/mis_report_instance_qweb.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,10 @@
7474
</div>
7575
</div>
7676
<div class="mis_tbody">
77-
<t t-foreach="matrix.iter_rows()" t-as="row">
77+
<t
78+
t-foreach="matrix.iter_rows(o.inverse_detail)"
79+
t-as="row"
80+
>
7881
<div
7982
t-if="not ((row.style_props.hide_empty and row.is_empty()) or row.style_props.hide_always)"
8083
class="mis_row"

mis_builder/report/mis_report_instance_xlsx.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def generate_xlsx_report(self, workbook, data, objects):
102102
row_pos += 1
103103

104104
# rows
105-
for row in matrix.iter_rows():
105+
for row in matrix.iter_rows(objects.inverse_detail):
106106
if (
107107
row.style_props.hide_empty and row.is_empty()
108108
) or row.style_props.hide_always:

mis_builder/views/mis_report_instance.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@
192192
<field name="no_auto_expand_accounts" />
193193
<field name="display_columns_description" />
194194
<field name="hide_analytic_filters" />
195+
<field name="inverse_detail" />
195196
</group>
196197
</page>
197198
</notebook>

0 commit comments

Comments
 (0)