@@ -26,16 +26,18 @@ class MisBuilderXlsx(models.AbstractModel):
2626 _description = "MIS Builder XLSX report"
2727 _inherit = "report.report_xlsx.abstract"
2828
29- def generate_xlsx_report (self , workbook , data , objects ):
29+ def _get_worksheet_name (self , mis_instance ):
30+ return mis_instance ._get_xlsx_report_name ()[:31 ]
31+
32+ def _generate_xlsx_one_report (self , workbook , mis_instance ):
3033 # get the computed result of the report
31- matrix = objects ._compute_matrix ()
34+ matrix = mis_instance ._compute_matrix ()
35+
3236 style_obj = self .env ["mis.report.style" ]
3337
3438 # create worksheet
35- report_name = "{} - {}" .format (
36- objects [0 ].name , ", " .join ([a .name for a in objects [0 ].query_company_ids ])
37- )
38- sheet = workbook .add_worksheet (report_name [:31 ])
39+ worksheet_name = self ._get_worksheet_name (mis_instance )
40+ sheet = workbook .add_worksheet (worksheet_name )
3941 row_pos = 0
4042 col_pos = 0
4143 # width of the labels column
@@ -48,13 +50,14 @@ def generate_xlsx_report(self, workbook, data, objects):
4850 header_format = workbook .add_format (
4951 {"bold" : True , "align" : "center" , "bg_color" : "#F0EEEE" }
5052 )
53+ report_name = mis_instance ._get_xlsx_report_name ()
5154 sheet .write (row_pos , 0 , report_name , bold )
5255 row_pos += 2
5356
5457 # filters
55- filter_descriptions = objects .get_filter_descriptions ()
58+ filter_descriptions = mis_instance .get_filter_descriptions ()
5659 if filter_descriptions :
57- for filter_description in objects .get_filter_descriptions ():
60+ for filter_description in mis_instance .get_filter_descriptions ():
5861 sheet .write (row_pos , 0 , filter_description )
5962 row_pos += 1
6063 row_pos += 1
@@ -79,7 +82,9 @@ def generate_xlsx_report(self, workbook, data, objects):
7982 else :
8083 sheet .write (row_pos , col_pos , label , header_format )
8184 col_width [col_pos ] = max (
82- col_width [col_pos ], len (col .label or "" ), len (col .description or "" )
85+ col_width [col_pos ],
86+ len (col .label or "" ),
87+ len (col .description or "" ),
8388 )
8489 col_pos += col .colspan
8590 row_pos += 1
@@ -174,3 +179,9 @@ def generate_xlsx_report(self, workbook, data, objects):
174179 min_col_pos = min (col_width .keys ())
175180 max_col_pos = max (col_width .keys ())
176181 sheet .set_column (min_col_pos , max_col_pos , data_col_width * COL_WIDTH )
182+
183+ return sheet
184+
185+ def generate_xlsx_report (self , workbook , data , objects ):
186+ for instance in objects :
187+ self ._generate_xlsx_one_report (workbook , instance )
0 commit comments