Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
10 Răspunsuri
30324 Vizualizări

Consider there is a form view say sale order. In sale order , there is a button which is not in its header...call button A. When button A clicks, it pop ups the wizard, wizard consists of a button say B. B having some functionality to update in the master or source record ie, in sale order. So when B clicks, it executes the function and wizard gets closed.

So my requirement is button B should not close the wizard after executing the function and source/ master record gets refreshed(source record: sale order form) in the button action itself.

Imagine profil
Abandonează
Cel mai bun răspuns

Hi Jasad,

As far as I know there is no such functionality in the framework at the moment. However, you can try with the following ActionManager extension which should be defined in the JS file within your module

Here for example: 'static/src/js/your_module_name.js'

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

        ir_actions_act_close_wizard_and_reload_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();
        },
    });
}

To use this action just return following when closing a wizard:

return { 'type' :  'ir.actions.act_close_wizard_and_reload_view' }

I hope this helps :-)

Cheers, Petar

Imagine profil
Abandonează

Thanks Man. That Helped.. :)

This action close works for ir.actions.act_window but not work for ir.actions.client? How to close the ir.actions.client to close? Thanks in advance.

Cel mai bun răspuns

FOR VERSION 13 2020

    ActionManager.include({

        _handleAction: function (action, options) {

            if (action.type === 'ir.actions.act_close_wizard_and_reload_attachments') {

                return this.ir_actions_act_close_wizard_and_reload_attachments();

            }

            return this._super(action, options);

        },


        ir_actions_act_close_wizard_and_reload_attachments: function (action, options) {

           this._closeDialog();

           //this.getCurrentController().widget.renderer.chatter._onReloadAttachmentBox();
            //reload your own object view or widget

        },

    });

in python
      return {'type': 'ir.actions.act_close_wizard_and_reload_attachments'}

Imagine profil
Abandonează
Cel mai bun răspuns

use this

return {
    'type': 'ir.actions.client',
    'tag': 'reload',  }
Imagine profil
Abandonează
Autor

Hi Sayed, This will reload the entire application. I dont want to do so. Just refreshing the main window.

Cel mai bun răspuns

I have gone from OpenERP 6.1 to Odoo11.
In OpenERP, nothing special was needed.
In Odoo11 I tried what he says Alexandro, but I do not get the expected performance.
Is there any way to get it in Odoo11?

Imagine profil
Abandonează

Hi Isidre,

This action was eventually converted into it's own module (``web_ir_actions_act_view_reload``) over at OCA github repository: https://github.com/OCA/web

You can use it with Odoo versions 11.0 and 12.0.

Kind Reagards,

Petar

Cel mai bun răspuns

Not working on odoo v9:

Action manager can't handle action of type ir.actions.act_close_wizard_and_refresh_view

  1. {flags: {…}, type: "ir.actions.act_close_wizard_and_refresh_view", context: {…}, menu_id: null}
    1. context:
      1. active_id:3
      2. active_ids:Array(1)
        1. 0:3
        2. length:1
        3. __proto__:Array(0)
      3. active_model:"sale.manage.variant"
      4. lang:"es_AR"
      5. params:{action318id9view_type"form"model"sale.order"_push_mefalse}
      6. search_disable_custom_filters:true
      7. tz:"Europe/Brussels"
      8. uid:1
      9. __proto__:Object
    2. flags:
      1. __proto__:Object
    3. menu_id:null
    4. type:"ir.actions.act_close_wizard_and_refresh_view"
    5. __proto__:
      1. constructor:ƒ Object()
      2. hasOwnProperty:ƒ hasOwnProperty()
      3. isPrototypeOf:ƒ isPrototypeOf()
      4. propertyIsEnumerable:ƒ propertyIsEnumerable()
      5. toLocaleString:ƒ toLocaleString()
      6. toString:ƒ toString()
      7. valueOf:ƒ valueOf()
      8. __defineGetter__:ƒ __defineGetter__()
      9. __defineSetter__:ƒ __defineSetter__()
      10. __lookupGetter__:ƒ __lookupGetter__()
      11. __lookupSetter__:ƒ __lookupSetter__()
      12. get __proto__:ƒ __proto__()
      13. set __proto__:ƒ __proto__()


Any idea why the action is not called?

Imagine profil
Abandonează
Cel mai bun răspuns

Continuing the work mentioned previously, the following works on Odoo 9:


odoo.define('my_module.action_manager', function(require) { 
  var action_manager = require('web.ActionManager');
  var MyModuleActionManager = action_manager.include({
    ir_actions_act_close_wizard_and_reload_view: function (action, options) {
      if (!this.dialog) {
        options.on_close();
      }
      this.dialog_stop();
      this.inner_widget.active_view.controller.do_reload();
      return $.when();
    },
  });
  return MyModuleActionManager; });
Imagine profil
Abandonează
Related Posts Răspunsuri Vizualizări Activitate
0
ian. 25
1111
1
mar. 21
4610
1
nov. 16
5779
1
mar. 15
5416
3
mar. 15
9663