This question has been flagged

I'm trying to modify POS widget, getting the following error:


TypeError: screens.ActionpadWidget is not a function
at OdooClass.screens.ProductScreenWidget.include.start


I'm sure there is some mess with inheritance or syntax but have no idea where the key to solve it.

Below is my code:


odoo.define('my_pos.my_pos', function (require) {
"use strict";
    var screens = require('point_of_sale.screens');
    var models = require('point_of_sale.models');
    var core = require('web.core');
    var QWeb = core.qweb;
    var _t = core._t;
// ######################
// Product Screen Widget
// ######################
    screens.ProductScreenWidget.include({
        start: function(){
            var self = this;
            this.actionpad = new screens.ActionpadWidget(this,{});
            this.actionpad.replace(this.$('.placeholder-ActionpadWidget'));
            this.numpad = new screens.NumpadWidget(this,{});
            this.numpad.replace(this.$('.placeholder-NumpadWidget'));
            this.order_widget = new screens.OrderWidget(this,{
                numpad_state: this.numpad.state,
             });
            this.order_widget.replace(this.$('.placeholder-OrderWidget'));
            this.product_list_widget = new screens.ProductListWidget(this,{
                mouseover_product_action: function(product){ self.mouseover_product(product); },
                product_list: this.pos.db.get_product_by_category(0)
            });
            this.product_list_widget.replace(this.$('.placeholder-ProductListWidget'));
            this.product_categories_widget = new screens.ProductCategoriesWidget(this,{
                    product_list_widget: this.product_list_widget,
            });
            this.product_categories_widget.replace(this.$('.placeholder-ProductCategoriesWidget'));
            this.action_buttons = {};
            var classes = action_button_classes;
            for (var i = 0; i < classes.length; i++) {
                    var classe = classes[i];
                    if ( !classe.condition || classe.condition.call(this) ) {
                        var widget = new classe.widget(this,{});
                          widget.appendTo(this.$('.control-buttons'));
                         this.action_buttons[classe.name] = widget;
                    }
                }
                if (_.size(this.action_buttons)) {
                    this.$('.control-buttons').removeClass('oe_hidden');
                 }
             },
// What happens when Mouse over Product (just for test)
            mouseover_product: function(product) {
            this.gui.show_popup('error', {
                    'title': _t('Mouse over!'),
                    'body': _t('Watch your mouse man!')
                    });
            },
        });
});


Avatar
Discard