diff --git a/mis_builder/models/mis_builder.py b/mis_builder/models/mis_builder.py
index b3b8fb15..e48c0586 100644
--- a/mis_builder/models/mis_builder.py
+++ b/mis_builder/models/mis_builder.py
@@ -603,6 +603,30 @@ class MisReportInstance(models.Model):
'target': 'new',
}
+ @api.multi
+ def print_pdf(self):
+ self.ensure_one()
+ return {
+ 'name': 'MIS report instance QWEB PDF report',
+ 'model': 'mis.report.instance',
+ 'type': 'ir.actions.report.xml',
+ 'report_name': 'mis_builder.report_mis_report_instance',
+ 'report_type': 'qweb-pdf',
+ 'context': self.env.context,
+ }
+
+ @api.multi
+ def export_xls(self):
+ self.ensure_one()
+ return {
+ 'name': 'MIS report instance XLSX report',
+ 'model': 'mis.report.instance',
+ 'type': 'ir.actions.report.xml',
+ 'report_name': 'mis.report.instance.xlsx',
+ 'report_type': 'xlsx',
+ 'context': self.env.context,
+ }
+
@api.multi
def compute(self):
assert len(self) == 1
diff --git a/mis_builder/report/mis_builder_xls.py b/mis_builder/report/mis_builder_xls.py
index df3d3ee5..903acb74 100644
--- a/mis_builder/report/mis_builder_xls.py
+++ b/mis_builder/report/mis_builder_xls.py
@@ -61,7 +61,7 @@ class MisBuilderXls(report_xls):
# get the computed result of the report
data = self.pool.get('mis.report.instance').compute(
- self.cr, self.uid, objects[0].id)
+ self.cr, self.uid, objects[0].id, self.context)
# Column headers
header_name_list = ['']
diff --git a/mis_builder/report/mis_builder_xlsx.py b/mis_builder/report/mis_builder_xlsx.py
index 9aee3685..be7793aa 100644
--- a/mis_builder/report/mis_builder_xlsx.py
+++ b/mis_builder/report/mis_builder_xlsx.py
@@ -23,6 +23,7 @@
##############################################################################
from openerp.addons.report_xlsx.report.report_xlsx import ReportXlsx
+from openerp.report import report_sxw
import logging
_logger = logging.getLogger(__name__)
@@ -91,4 +92,4 @@ class MisBuilderXslx(ReportXlsx):
MisBuilderXslx('report.mis.report.instance.xlsx',
- 'mis.report.instance')
+ 'mis.report.instance', parser=report_sxw.rml_parse)
diff --git a/mis_builder/static/src/js/mis_builder.js b/mis_builder/static/src/js/mis_builder.js
index 3f314781..24daa055 100644
--- a/mis_builder/static/src/js/mis_builder.js
+++ b/mis_builder/static/src/js/mis_builder.js
@@ -5,6 +5,7 @@ var core = require('web.core');
var form_common = require('web.form_common');
var Model = require('web.DataModel');
var data = require('web.data');
+var ActionManager = require('web.ActionManager');
var MisReport = form_common.FormWidget.extend({
/**
@@ -16,21 +17,67 @@ var MisReport = form_common.FormWidget.extend({
init: function() {
this._super.apply(this, arguments);
this.mis_report_data = null;
+ this.mis_report_instance_id = false;
},
start: function() {
this._super.apply(this, arguments);
var self = this;
+ self.mis_report_instance_id = self.getParent().dataset.context.active_id
+ self.getParent().dataset.context['no_destroy'] = true;
+ self.generate_content();
+ },
+
+ get_context: function() {
+ var self = this;
+ var context = {}
+ if (this.mis_report_instance_id){
+ context['active_ids'] = [this.mis_report_instance_id];
+ }
+ return context
+ },
+
+ print: function() {
+ var self = this
+ var context = new data.CompoundContext(self.build_context(), self.get_context()|| {})
+ new Model("mis.report.instance").call(
+ "print_pdf",
+ [self.mis_report_instance_id],
+ {'context': context}
+ ).then(function(result){
+ self.do_action(result);
+ });
+ },
+ export_pdf: function() {
+ var self = this
+ var context = new data.CompoundContext(self.build_context(), self.get_context()|| {})
+ new Model("mis.report.instance").call(
+ "export_xls",
+ [self.mis_report_instance_id],
+ {'context': context}
+ ).then(function(result){
+ self.do_action(result).done(function(result){
+ });
+ });
+ },
+ generate_content: function() {
+ var self = this
+ var context = new data.CompoundContext(self.build_context(), self.get_context()|| {})
new Model("mis.report.instance").call(
"compute",
- [self.getParent().dataset.context.active_id],
- {'context': new data.CompoundContext()}
+ [self.mis_report_instance_id],
+ {'context': context}
).then(function(result){
self.mis_report_data = result;
self.renderElement();
});
},
-
+ renderElement: function() {
+ this._super();
+ var self = this;
+ self.$(".oe_mis_builder_print").click(_.bind(this.print, this));
+ self.$(".oe_mis_builder_export").click(_.bind(this.export_pdf, this));
+ },
events: {
"click a.mis_builder_drilldown": "drilldown",
},
@@ -54,6 +101,18 @@ var MisReport = form_common.FormWidget.extend({
},
});
+ActionManager.include({
+ dialog_stop: function (reason) {
+ var self = this
+ if (self.dialog_widget && self.dialog_widget.dataset && self.dialog_widget.dataset.context) {
+ var context = self.dialog_widget.dataset.context
+ if (!context['no_destroy']) {
+ this._super.apply(this, arguments);
+ }
+ } else {
+ this._super.apply(this, arguments);
+ }
+ }
+});
core.form_custom_registry.add('mis_report', MisReport);
-
});
diff --git a/mis_builder/static/src/xml/mis_widget.xml b/mis_builder/static/src/xml/mis_widget.xml
index 5cfd9994..b668e8d1 100644
--- a/mis_builder/static/src/xml/mis_widget.xml
+++ b/mis_builder/static/src/xml/mis_widget.xml
@@ -1,62 +1,67 @@
-
-
+
+
-
+
+
+
+
+
+
+
+
+