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