diff --git a/mis_builder/models/mis_builder.py b/mis_builder/models/mis_builder.py
index 3872233a..44a0671c 100644
--- a/mis_builder/models/mis_builder.py
+++ b/mis_builder/models/mis_builder.py
@@ -639,6 +639,32 @@ class MisReportInstance(models.Model):
'target': 'new',
}
+ @api.multi
+ def print_pdf(self):
+ self.ensure_one()
+ data = {'context': self.env.context}
+ 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,
+ 'data': data,
+ }
+
+ @api.multi
+ def export_xls(self):
+ self.ensure_one()
+ return {
+ 'name': 'MIS report instance XLS report',
+ 'model': 'mis.report.instance',
+ 'type': 'ir.actions.report.xml',
+ 'report_name': 'mis.report.instance.xls',
+ 'report_type': 'xls',
+ '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/report_mis_report_instance.py b/mis_builder/report/report_mis_report_instance.py
index 44cfbeb8..33f55511 100644
--- a/mis_builder/report/report_mis_report_instance.py
+++ b/mis_builder/report/report_mis_report_instance.py
@@ -35,6 +35,9 @@ class Report(models.Model):
@api.v7
def get_pdf(self, cr, uid, ids, report_name, html=None, data=None,
context=None):
+ if not ids and context.get('active_ids') and\
+ report_name == 'mis_builder.report_mis_report_instance':
+ ids = context.get('active_ids')
if ids:
report = self._get_report_from_name(cr, uid, report_name)
obj = self.pool[report.model].browse(cr, uid, ids,
diff --git a/mis_builder/static/src/js/mis_builder.js b/mis_builder/static/src/js/mis_builder.js
index df369e06..e23d2a6f 100644
--- a/mis_builder/static/src/js/mis_builder.js
+++ b/mis_builder/static/src/js/mis_builder.js
@@ -6,21 +6,67 @@ openerp.mis_builder = function(instance) {
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;
+ context = {}
+ if (this.mis_report_instance_id){
+ context['active_ids'] = [this.mis_report_instance_id];
+ }
+ return context
+ },
+ print: function() {
+ var self = this
+ context = new instance.web.CompoundContext(self.build_context(), self.get_context()|| {})
+ new instance.web.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
+ context = new instance.web.CompoundContext(self.build_context(), self.get_context()|| {})
+ new instance.web.Model("mis.report.instance").call(
+ "export_xls",
+ [self.mis_report_instance_id],
+ {'context': context}
+ ).then(function(result){
+ self.do_action(result).done(function(result){
+ a = 2;
+ });
+ });
+ },
+ generate_content: function() {
+ var self = this
+ context = new instance.web.CompoundContext(self.build_context(), self.get_context()|| {})
new instance.web.Model("mis.report.instance").call(
"compute",
- [self.getParent().dataset.context.active_id],
- {'context': new instance.web.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",
},
@@ -31,10 +77,11 @@ openerp.mis_builder = function(instance) {
if (drilldown) {
var period_id = JSON.parse($(event.target).data("period-id"));
var val_c = JSON.parse($(event.target).data("expr"));
+ context = new instance.web.CompoundContext(self.build_context(), self.get_context()|| {})
new instance.web.Model("mis.report.instance.period").call(
"drilldown",
[period_id, val_c],
- {'context': new instance.web.CompoundContext()}
+ {'context': context}
).then(function(result) {
if (result) {
self.do_action(result);
@@ -44,5 +91,19 @@ openerp.mis_builder = function(instance) {
},
});
+ instance.web.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);
+ }
+ }
+ });
+
instance.web.form.custom_widgets.add('mis_report', 'instance.mis_builder.MisReport');
}
diff --git a/mis_builder/static/src/xml/mis_widget.xml b/mis_builder/static/src/xml/mis_widget.xml
index 5cfd9994..a09c653d 100644
--- a/mis_builder/static/src/xml/mis_widget.xml
+++ b/mis_builder/static/src/xml/mis_widget.xml
@@ -1,62 +1,67 @@
-
-
+
-
+
+
+
+
+
+
+
+
+
+