Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to refresh the original / parent view after wizard actions in OpenERP?

Tags:

openerp

I have a view that list a lot of items. When the user selects anyone, an edition wizard appears with extended functionallity. Some actions of the wizard make it closed but parent view is not refreshed shows the old data.

I need that an action performed in a button of an OpenERP wizard view refresh the parent view.

I have tried:

def some_action(self, cr, uid, ids, context=None):
    ....
    res = {'type':'ir.actions.act_window_close', 'auto_refresh':'1' }
    return res

and tried this:

def some_action(self, cr, uid, ids, context=None):
    ....
    win_obj = self.pool.get('ir.actions.act_window')
    res = win_obj.for_xml_id(cr, uid, 'parent_module', 'parent_view', context)
    res = {'type':'ir.actions.act_window_close', 'auto_refresh':'1' }
    return res

and this:

def some_action(self, cr, uid, ids, context=None):
    ...
    mod_obj = self.pool.get('ir.model.data')
    view_rec = mod_obj.get_object_reference(cr, uid, 'hr_holidays', 'open_ask_holidays')
    view_id = view_rec and view_rec[1] or False
    return {
       'view_type': 'form',
       'view_id' : [view_id],
       'view_mode': 'form',
       'res_model': 'model.obj.here',
       'type': 'ir.actions.act_window',
       'context': context
    } 

but nothing works...

like image 975
yucer Avatar asked Jan 12 '23 11:01

yucer


2 Answers

The correct form is:

def some_action(self, cr, uid, ids, context=None):
    ....
    res = { 'type': 'ir.actions.client', 'tag': 'reload' }
    return res

I found it here:

"How to refresh the original view after wizard actions?". OpenERP Knowledge base

like image 141
yucer Avatar answered May 07 '23 00:05

yucer


Following @yucer provided link I found that it is possible to refresh fields values without reloading the view.

openerp.your_module_name = function (instance) {
    instance.web.ActionManager = instance.web.ActionManager.extend({

        ir_actions_act_close_wizard_and_refresh_view: function (action, options) {
            if (!this.dialog) {
                options.on_close();
            }
            this.dialog_stop();
            this.inner_widget.views[this.inner_widget.active_view].controller.reload();
            return $.when();
        },
    });
}

Call the action when closing the wizard view:

return { 'type' :  'ir.actions.act_close_wizard_and_refresh_view' }
like image 42
Kenly Avatar answered May 07 '23 02:05

Kenly