2016-03-08 79 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

相關問題