Модуль Odoo, JS модели игнорируют определение унаследованной функции - PullRequest
1 голос
/ 17 апреля 2019

У меня есть модуль 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);
    },
});

он вызывает функцию финализации модуля точки продаж, поэтому, вот что я сделал, я переопределил все используемые функции и также финализировал (), но пока я вызываю супер функцию, эффекты Mine'а переопределяются оригинальнымиодин.

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 (), и почему вызов метода финализации супер модели отменяет мой, а не наоборот?

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...