简体   繁体   English

Odoo 13 POS 中的客户过滤器

[英]Customer filter in Odoo 13 POS

I need to filter the Customer list in Odoo 13 POS customer button.我需要过滤 Odoo 13 POS 客户按钮中的客户列表。 I have written code in js and added it in XML file also but it's not working.我已经用 js 编写代码并将其添加到 XML 文件中,但它不起作用。 The code is mentioned below.代码在下面提到。 Can anybody figure out where I'm wrong?任何人都可以找出我错在哪里吗?

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;
}
});
});

You can try this code.You can change domain as you wish.Thanks @kenly that is he told me and it works for me.你可以试试这个代码。你可以随意更改域。谢谢@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);

This one should work for odoo 13,14 as the customer filter is called customer_rank and for the vendors it is called supplier_rank which should be a value greater than 0这个应该适用于 odoo 13,14,因为客户过滤器称为 customer_rank,对于供应商,它称为 supplier_rank,它应该是一个大于 0 的值

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

var _super_pos_model = 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']=[['customer_rank','>',0]];
    return _super_pos_model.initialize.call(this, session, attributes);
    },
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM