Skip to content

Commit

Permalink
[IMP] mis_builder: allow to export multiple report in one xls
Browse files Browse the repository at this point in the history
  • Loading branch information
AnizR committed Jan 20, 2025
1 parent c2fc9de commit 650a65d
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 10 deletions.
8 changes: 7 additions & 1 deletion mis_builder/models/mis_report_instance.py
Original file line number Diff line number Diff line change
Expand Up @@ -770,7 +770,6 @@ def print_pdf(self):
)

def export_xls(self):
self.ensure_one()
return self.env.ref("mis_builder.xls_export").report_action(
self, data=dict(dummy=True)
) # required to propagate context
Expand Down Expand Up @@ -940,3 +939,10 @@ def _get_drilldown_action_name(self, arg):
return f"{kpi.description} - {account.display_name} - {period.display_name}"
else:
return f"{kpi.description} - {period.display_name}"

def _get_xlsx_report_name(self):
self.ensure_one()
return "{} - {}".format(
self.name,
", ".join([a.name for a in self.query_company_ids]),
)
26 changes: 17 additions & 9 deletions mis_builder/report/mis_report_instance_xlsx.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,17 @@ class MisBuilderXlsx(models.AbstractModel):
_description = "MIS Builder XLSX report"
_inherit = "report.report_xlsx.abstract"

def generate_xlsx_report(self, workbook, data, objects):
def _get_worksheet_name(self, mis_instance):
return mis_instance._get_xlsx_report_name()[:31]

def _generate_xlsx_one_report(self, workbook, mis_instance):
# get the computed result of the report
matrix = objects._compute_matrix()
matrix = mis_instance._compute_matrix()
style_obj = self.env["mis.report.style"]

# create worksheet
report_name = "{} - {}".format(
objects[0].name, ", ".join([a.name for a in objects[0].query_company_ids])
)
sheet = workbook.add_worksheet(report_name[:31])
worksheet_name = self._get_worksheet_name(mis_instance)
sheet = workbook.add_worksheet(worksheet_name)
row_pos = 0
col_pos = 0
# width of the labels column
Expand All @@ -48,13 +49,14 @@ def generate_xlsx_report(self, workbook, data, objects):
header_format = workbook.add_format(
{"bold": True, "align": "center", "bg_color": "#F0EEEE"}
)
report_name = mis_instance._get_xlsx_report_name()
sheet.write(row_pos, 0, report_name, bold)
row_pos += 2

# filters
filter_descriptions = objects.get_filter_descriptions()
filter_descriptions = mis_instance.get_filter_descriptions()
if filter_descriptions:
for filter_description in objects.get_filter_descriptions():
for filter_description in mis_instance.get_filter_descriptions():
sheet.write(row_pos, 0, filter_description)
row_pos += 1
row_pos += 1
Expand All @@ -79,7 +81,9 @@ def generate_xlsx_report(self, workbook, data, objects):
else:
sheet.write(row_pos, col_pos, label, header_format)
col_width[col_pos] = max(
col_width[col_pos], len(col.label or ""), len(col.description or "")
col_width[col_pos],
len(col.label or ""),
len(col.description or ""),
)
col_pos += col.colspan
row_pos += 1
Expand Down Expand Up @@ -174,3 +178,7 @@ def generate_xlsx_report(self, workbook, data, objects):
min_col_pos = min(col_width.keys())
max_col_pos = max(col_width.keys())
sheet.set_column(min_col_pos, max_col_pos, data_col_width * COL_WIDTH)

def generate_xlsx_report(self, workbook, data, objects):
for instance in objects:
self._generate_xlsx_one_report(workbook, instance)
11 changes: 11 additions & 0 deletions mis_builder/report/mis_report_instance_xlsx.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,15 @@
<field name="report_type">xlsx</field>
<field name="report_file">mis_report_instance</field>
</record>

<record model="ir.actions.server" id="mis_builder_print_xls_report">
<field name="name">Export XLS</field>
<field name="model_id" ref="mis_builder.model_mis_report_instance" />
<field name="binding_model_id" ref="mis_builder.model_mis_report_instance" />
<field name="binding_view_types">list</field>
<field name="state">code</field>
<field name="code">
action = records.export_xls()
</field>
</record>
</odoo>

0 comments on commit 650a65d

Please sign in to comment.