Odoo模块,js模型忽略继承的函数定义

时间:2019-04-17 14:10:40

标签: javascript inheritance odoo

我有这个具有忠诚度计划的odoo模块pos_dusal。 该模块将创建一个忠诚度计划,该计划将在销售点上出售的每种产品添加到客户的一定数量的忠诚度点,以便他以后可以将其交换为礼物...

我尝试继承它并添加自定义奖励规则,例如当达到1000忠诚度积分时,我们为客户提供10%的积分,依此类推。一切都正常,但是当我验证订单时,即使我使用与原样相同的过程来调用它,原始模块也会忽略我的修改。

这是原始视图中的对象顺序

var models = require('point_of_sale.models');

var _super = models.Order;
    var my_model = models.Order.extend({
    finalize: function(){
            var client = this.get_client();
            if ( client ) {
                console.log("\n +finalize super : ");
                client.loyalty_points =this.get_new_total_points();
            // The client list screen has a cache to avoid re-rendering
            // the client lines, and so the point updates may not be visible ...
            // We need a better GUI framework !
            this.pos.gui.screen_instances.clientlist.partner_cache.clear_node(client.id);
        }
        _super.prototype.finalize.apply(this,arguments);
    },
});

调用销售点模块的finalize函数, 因此,这就是我所做的事情,我重新定义了所有使用的函数,还定义了finalize(),但是当我调用超级函数时,我的效果被原始函数覆盖。

var models = require('point_of_sale.models');

var super_dusal_order = models.Order;
    models.Order = models.Order.extend({
    finalize: function(){
        var client = this.get_client();
        if ( client ) {
            console.log("\n ++++ custom.loyalty.program finalize function ++++");

                // The client list screen has a cache to avoid re-rendering
                // the client lines, and so the point updates may not be visible ...
                // We need a better GUI framework !

                client.loyalty_points = this.get_new_total_points();
                this.pos.gui.screen_instances.clientlist.partner_cache.clear_node(client.id);
            }
            super_dusal_order.prototype.finalize.apply(this,arguments);
        },
    });

我不知道为什么我们使用原型而不是super(),为什么调用超级模型的finalize方法会覆盖我的而不是相反?

致谢

0 个答案:

没有答案