Help

1

Using Onchange to change the domain of an existing field

Avatar
Leke Onile-ere

Hi how can i use onchange to change the domain of an already existing field. For example, if i want to make it so that when i select a vendor to create a purchase order the list of products i can choose is restricted to those that share a value with the vendor

@api.onchange('partner_id')
def onchange_product_list(self):
return {'domain': {'product_id': [('partner_id.supplier_code', '=', 'self.sup_product_code')]}}

This is what i have so far

Using Odoo v11

1 Comment
Avatar
Discard
Avatar
Yazeed
-

I'm facing the same issue but I couldn't understand the solution

How do you solve it?

3 Answers
2
Avatar
subbarao
Best Answer

Hello Leke,

Please try the following code in xml for product_id field 

inherit and update the existing domain

domain_new = old_domain + [('sup_product_code','=',parent.supplier_code)]

<field name="product_id' domain="domain_new"/>


before this add new field on Purchase Order supplier_code and update this field on partner onchange function.

1 Comment
Avatar
Discard
Avatar
Yazeed
-

I couldn't understand,

In where we add this: domain_new = old_domain + [('sup_product_code','=',parent.supplier_code)]

Could you please explain more

Thanks in advance

0
Avatar
Denis Lorenzo
Best Answer

Try this: 

return {'domain': {'product_id': [('partner_id.supplier_code', '=', self.sup_product_code)]}}

without quotes. I think everything else is correct

1 Comment
Avatar
Discard
Avatar
Leke Onile-ere
-

Hi Denis. My onchange method is in the purchase.order object however the field im trying to apply the domain to is in the purchase.order.line object how would i do this?

0
Avatar
Nitin Kantak
Best Answer

Apply a domain to the field which is in the purchase.order.line as follows:

return {'domain': {'product_id': [('partner_id.supplier_code''='self.order_id.sup_product_code)]}}

* here order_id is just an example . You have to mention many2one field in purchase.order.line containing object purchace.order . 

Avatar
Discard