2016-03-08 76 views
1

目前,我正在致力于POS定制。我已经做了差不多,但坚持在这个问题。如何将域过滤器应用于Many2One字段使用Odoo JS?

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,并在处方按钮点击,它只显示处方是与特定的选定的客户有关。现在,它显示所有处方,因为我无法正确设置过滤器域。此外.....

我已经尝试过使用.query().filter()解决我的问题JS。但得到一些错误,而如果我把静态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

当您点击处方按钮时,您是否可以将选定客户的相关处方列表从python传递给js?或使用js获取相关处方列表? –

回答

1

您可以尝试使用域这样的领域:

_columns = { 

'prescriptions_ids': fields.one2many('res.prescriptions','prescription_id','Prescriptions', domain="[('prescription_id', '=', 51)]"), 
} 

变化51与另一列相对于

+0

感谢您的答案但我想通过JS中的这个过滤器域。插件方面它工作正常但我想要这个东西在POS, **完成。filter([['prescription_id','=',51]])** //这里我想通过选定的合作伙伴的处方和它的动态不是静态ID ... !!! –

+0

你改变“51”你的领域ID例如 domain =“[('prescription_id','=',prescription_id)]” –

+0

早些时候我说,它在完美的工作方面没有必要传递域名。想在JS中解决这个问题,想在JS中通过这个过滤器域。 –

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 
+0

谢谢你Rawly。,这里on_change方法不起作用,因为我想在JS中使用这个东西..在POS中,客户名单在那里,选择特定的客户,点击处方按钮,所以它会显示所有相关的处方顾客..!!! –

+0

@AyAzMansuri'on_change'方法应该用于'prescription_id',我使用了与我的模型相同的aproch,所以它应该可以工作。我希望你在'JS'中找到一个解决方案 – Zety

相关问题