This question has been flagged
1 Reply
3164 Views

This is how I print a report:

def yoursister(self, cr, uid, ids, context=None):
    """
    """
    return {
        'type': 'ir.actions.report.xml',
        'report_name': 'trescloud_ats_2013_report',
        'datas': {
            'model': 'sri.ats.2013',
            'res_ids': ids
        }
}

This method is executed from a wizard. How do I *also* avoid the wizard being closed?

Avatar
Discard
Best Answer

That couldn't be done in Odoo without an js extension, specifically you need to extend the js class "instance.web.ActionManager" to add a new action type with the same code of the ir_actions_report_xml. The following code need to be loaded in a js file and does the job by creating the action ir_actions_report_xml_no_close with the close dialog lines removed:

instance.web.ActionManager.include({
ir_actions_report_xml_no_close: function(action, options) {
var self = this;
instance.web.blockUI();
action = _.clone(action);
var eval_contexts = ([instance.session.user_context] || []).concat([action.context]);
action.context = instance.web.pyeval.eval('contexts',eval_contexts);
// iOS devices doesn't allow iframe use the way we do it,
// opening a new window seems the best way to workaround
if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {
var params = {
action: JSON.stringify(action),
token: new Date().getTime()
};
var url = self.session.url('/web/report', params);
instance.web.unblockUI();
$('<a href="'+url+'" target="_blank"></a>')[0].click();
return;
}
var c = instance.webclient.crashmanager;
return $.Deferred(function (d) {
self.session.get_file({
url: '/web/report',
data: {action: JSON.stringify(action)},
complete: instance.web.unblockUI,
success: function(){
d.resolve();
},
error: function () {
c.rpc_error.apply(c, arguments);
d.reject();
}
});
});
}
});

To use the new action you just need to change a little your return action in your method to return:

return {
'type': 'ir.actions.report.xml_no_close',
'report_name': 'trescloud_ats_2013_report',
'datas': {
'model': 'sri.ats.2013',
'res_ids': ids
}
}

Hope this helps

Avatar
Discard