目前,我正在开展 POS自定义。我已经做了差不多但坚持这个问题。
Py文件:
class prescription(osv.osv):
_name = 'res.prescriptions'
_columns={
'prescription_id':fields.many2one('res.partner',"customer"),
}
class prescription_res_partner(osv.osv):
_inherit = 'res.partner'
_columns = {
'prescriptions_ids': fields.one2many('res.prescriptions','prescription_id','Prescriptions'),
}
我想做的是,当用户在POS中选择客户,点击 处方按钮时,它仅显示与特定所选客户相关的处方。目前,它显示所有处方,因为我无法正确设置过滤器域。也.....
我尝试使用 JS 中的 .query(), .filter()来解决我的问题。但是得到一些错误,而如果我把静态partner_id,那么它将显示给定静态partner_id的处方。我想为动态合作伙伴解决这个问题。它只显示选定合作伙伴的处方...... !!!
在JS文件中:
var def = new $.Deferred();
console.log("deffffffffffffff", def);
var fields = _.find(this.models,function(model){ return model.model === 'res.prescriptions'; });
new instance.web.Model('res.prescriptions')
.query(fields)
.filter([['prescription_id', '=', 51]]) // Here i pass static partner_id instead of this i want to pass dynamic partner_id
.limit(1000)
.all()
.then(function(prescriptions){
if (self.render_list_prescription(prescriptions)) { // Render selected partner's Prescription
def.resolve();
} else {
def.reject();
}
}, function(err,event){ event.preventDefault(); def.reject(); });
return def;
我花了将近3天的时间来解决这个问题,但未能实现这一目标。请帮我解决这个问题。再次非常感谢您的帮助.. !!!
答案 0 :(得分:1)
您可以尝试在以下字段中使用域名:
_columns = {
'prescriptions_ids': fields.one2many('res.prescriptions','prescription_id','Prescriptions', domain="[('prescription_id', '=', 51)]"),
}
使用关系
中的其他列更改51答案 1 :(得分:0)
您可以使用on_change
方法执行此操作。
prescription_ids = # search for prescriptions related to the selected customer
# self.pool.get('res.prescriptions').search(cr, uid, [('partner_id', '=', YOU SHOULD GET THE CUSTOMER ID)])
res['domain']['prescription_id'] = [('id', 'in', prescription_ids)]
return res