переопределить виджет в стоке odoo

В модуле Stock страница сканера штрих-кода обрабатывается widget.js и picking.xml через qweb.

Мне нужно переопределить поведение, чтобы добавить функциональные возможности. До сих пор мне удалось переопределить xml:

<templates id="template" xml:space="preserve">
 <t t-extend="PickingEditorWidget">
     <t t-jquery="#js_packconf_select" t-operation="after">
         <p>Hello World!</p>
     </t>
 </t>
</templates>

но о части js я застрял. Мне нужно переопределить поведение некоторых функций внутри PickingEditorWidget, но в widget.js он сначала содержится внутри объекта openerp.stock, а затем весь openerp.stock перезаписывается функцией:

openerp.stock = function(openerp) {
  openerp.stock = openerp.stock || {};
  openerp_picking_widgets(openerp);
}

Я видел такой код в каждом модуле, тогда как я могу изменить, как (например) работает эта функция, не переписывая весь файл stock/widget.js с моими небольшими изменениями?

this.$('.js_pack_configure').click(function(){
  ....
})

Я не эксперт в JS и не мог понять...

РЕДАКТИРОВАТЬ:

Я поместил в манифест своего модуля стандартный модуль в зависимостях, теперь я вижу объект PickingEditorWidget, но все же не могу заставить его работать с моими изменениями

мой код (widget.js):

function openerp_picking_widgets_extended(instance){

var module = instance.mrp_extended;

module.PickingEditorWidgetExtended = instance.stock.PickingEditorWidget.include({
    renderElement: function(){
        this.$('.js_pack_configure').click(function(){
            <my code>
        });
        this.$('.js_validate_pack').click(function(){
            <my code>
        });
        this._super();
    },
});

}

openerp.mrp_extended = function(openerp) {
  openerp.mrp_extended = openerp.mrp_extended || {};
  openerp_picking_widgets_extended(openerp);
}

person Alessandro Ruffolo    schedule 06.04.2017    source источник


Ответы (1)


Я исправил свой код следующим образом:

....
module.PickingEditorWidgetExtended = instance.stock.PickingEditorWidget.include({
    renderElement: function(){
        this._super();
....
person Alessandro Ruffolo    schedule 06.04.2017