Фильтр клиентов в Odoo 13 POS

Мне нужно отфильтровать список клиентов в кнопке клиента Odoo 13 POS. Я написал код на js и добавил его в файл XML, но он не работает. Код указан ниже. Кто-нибудь может понять, где я ошибаюсь?

odoo.define('customer_filter_pos.customer_filter_pos', function (require) {

var models = require('point_of_sale.models');
var rpc = require('web.rpc');
models.load_fields('res.partner','parent_id');

var _super_posmodel = models.PosModel.prototype;

models.PosModel = models.PosModel.extend({
initialize: function (session, attributes) {
var partner_model = _.find(this.models, function(model){
return model.model === 'res.partner';
});
partner_model.domain.push(['parent_id','=',false]);
return _super_posmodel.initialize.call(this, session, attributes);
},
});

models.PosModel = models.PosModel.extend({

load_new_partners: function(load_new_partners){
var self = this;
var def = new $.Deferred();
var fields = _.find(this.models,function(model){ return model.model === 'res.partner'; }).fields;
var domain = [['customer','=',true],['write_date','>',this.db.get_partner_write_date()],['parent_id','=',false]];
rpc.query({
model: 'res.partner',
method: 'search_read',
args: [domain, fields],
}, {
timeout: 3000,
shadow: true,
})
.then(function(partners){
if (self.db.add_partners(partners)) { // check if the partners we got were real updates
def.resolve();
} else {
def.reject();
}
}, function(type,err){ def.reject(); });
return def;
}
});
});

person Pablo Escobar    schedule 17.06.2021    source источник


Ответы (1)


Вы можете попробовать этот код. Вы можете изменить домен по своему желанию. Спасибо @kenly, что он сказал мне, и это работает для меня.

var _super_pos_model = models.PosModel.prototype;
var _models = models.PosModel.prototype.models;

var _domain = [['id', '<=', 3]];
// partner model is the fifth element in models (index==4)
_models[4]['domain']  = function(self){ return _domain; };

models.PosModel = models.PosModel.extend({
     prepare_new_partners_domain: function(){
        var domain = _super_pos_model.prepare_new_partners_domain.apply(this, arguments);
        domain.push(..._domain);
        console.log("domain", domain);
        return domain;
    },
});

console.log("models", models.PosModel.prototype.models);

person Neural    schedule 17.06.2021