9
9
10
10
from odoo import api , fields , models , _
11
11
from odoo .exceptions import ValidationError , UserError
12
+ from odoo .tools .safe_eval import safe_eval
12
13
13
14
from .aep import AccountingExpressionProcessor as AEP
14
15
16
+
15
17
_logger = logging .getLogger (__name__ )
16
18
17
19
@@ -431,6 +433,30 @@ def _default_company_id(self):
431
433
date_from = fields .Date (string = "From" )
432
434
date_to = fields .Date (string = "To" )
433
435
temporary = fields .Boolean (default = False )
436
+ mis_report_view = fields .Text (string = 'MIS Report view' ,
437
+ compute = '_compute_mis_report_view' )
438
+
439
+ def _compute_mis_report_view (self ):
440
+ """This method is dummy because we use this field as a placeholder
441
+ to render the actual mis report instance in the html format using the
442
+ widget"""
443
+ for rec in self :
444
+ rec .mis_report_view = ""
445
+
446
+ @api .model
447
+ def get_mis_report_view_html (self ):
448
+ mis_report_data = self .compute ()
449
+ rcontext = {}
450
+ rcontext ['mis_report_data' ] = mis_report_data
451
+ rcontext ['mis_report_data' ]['report_name' ] = self .name
452
+ rcontext ['mis_instance_id' ] = self .id
453
+ return self .env .ref (
454
+ 'mis_builder.MisReportInstance' ).render (rcontext )
455
+
456
+ @api .multi
457
+ def get_mis_report_view_from_id (self ):
458
+ for rec in self :
459
+ return rec .get_mis_report_view_html ()
434
460
435
461
@api .onchange ('company_id' , 'multi_company' )
436
462
def _onchange_company (self ):
@@ -527,43 +553,31 @@ def _onchange_dates(self):
527
553
self .date_to != self .date_range_id .date_end :
528
554
self .date_range_id = False
529
555
530
- @api .multi
531
- def preview (self ):
532
- self .ensure_one ()
533
- view_id = self .env .ref ('mis_builder.'
534
- 'mis_report_instance_result_view_form' )
535
- return {
536
- 'type' : 'ir.actions.act_window' ,
537
- 'res_model' : 'mis.report.instance' ,
538
- 'res_id' : self .id ,
539
- 'view_mode' : 'form' ,
540
- 'view_type' : 'form' ,
541
- 'view_id' : view_id .id ,
542
- 'target' : 'current' ,
543
- }
544
-
545
556
@api .multi
546
557
def print_pdf (self ):
547
558
self .ensure_one ()
559
+ context = dict (self .env .context , active_ids = self .ids )
548
560
return {
549
561
'name' : 'MIS report instance QWEB PDF report' ,
550
562
'model' : 'mis.report.instance' ,
551
- 'type' : 'ir.actions.report.xml ' ,
563
+ 'type' : 'ir.actions.report' ,
552
564
'report_name' : 'mis_builder.report_mis_report_instance' ,
553
565
'report_type' : 'qweb-pdf' ,
554
- 'context' : self . env . context ,
566
+ 'context' : context ,
555
567
}
556
568
557
569
@api .multi
558
570
def export_xls (self ):
559
571
self .ensure_one ()
572
+ context = dict (self .env .context , active_ids = self .ids )
560
573
return {
561
574
'name' : 'MIS report instance XLSX report' ,
562
575
'model' : 'mis.report.instance' ,
563
- 'type' : 'ir.actions.report.xml ' ,
564
- 'report_name' : 'mis.report.instance.xlsx ' ,
576
+ 'type' : 'ir.actions.report' ,
577
+ 'report_name' : 'mis_builder.mis_report_instance_xlsx ' ,
565
578
'report_type' : 'xlsx' ,
566
- 'context' : self .env .context ,
579
+ 'report_file' : 'mis_report_instance' ,
580
+ 'context' : context ,
567
581
}
568
582
569
583
@api .multi
@@ -675,6 +689,21 @@ def _compute_matrix(self):
675
689
kpi_matrix .compute_sums ()
676
690
return kpi_matrix
677
691
692
+ @api .multi
693
+ def preview (self ):
694
+ self .ensure_one ()
695
+ view_id = self .env .ref ('mis_builder.'
696
+ 'mis_report_instance_result_view_form' )
697
+ return {
698
+ 'type' : 'ir.actions.act_window' ,
699
+ 'res_model' : 'mis.report.instance' ,
700
+ 'res_id' : self .id ,
701
+ 'view_mode' : 'form' ,
702
+ 'view_type' : 'form' ,
703
+ 'view_id' : view_id .id ,
704
+ 'target' : 'current' ,
705
+ }
706
+
678
707
@api .multi
679
708
def compute (self ):
680
709
self .ensure_one ()
@@ -684,6 +713,7 @@ def compute(self):
684
713
@api .multi
685
714
def drilldown (self , arg ):
686
715
self .ensure_one ()
716
+ arg = safe_eval (arg )
687
717
period_id = arg .get ('period_id' )
688
718
expr = arg .get ('expr' )
689
719
account_id = arg .get ('account_id' )
0 commit comments