跳至内容
菜单
此问题已终结
3 回复
12606 查看

In the latest Odoo, usage of Api decorators (api.onchange) to perform onchange functionalities eases our job,

however I wonder how to call such onchange methods into another method, by passing those required parameters.


Let me take an example of SaleOrderLine object& its onchange method, say product_id_change

Standard definition of product_id_change is something like as follows:

@api.onchange('product_id')    
def product_id_change(self):
if not self.product_id:
return {'domain': {'product_uom': []}}
...


Now, say in my custom module/method, am trying to call this onchange method, as it would be easier to create Sale-Order-line using those returned vals.

If it was traditional method, then I could have simply called it by passing its parameter as follows

sol_obj.product_id_change(PRODUCT_ID)

which would have returned those desired vals, however since we happen to use API decorator, I wonder how to pass those parameter.


形象
丢弃
编写者 最佳答案

Solution:

For those who are looking for the same.


linevals = {'product_id': PRODUCT_ID, ...} # basic needed data for the execution of Onchange-Method

line = self.env['sale.order.line'].new(linevals)
line.product_id_change()
linevals = line._convert_to_write({name: line[name] for name in line._cache})
形象
丢弃
最佳答案

Hi deep

Here is how with an example

https://www.odoo.com/es_ES/forum/ayuda-1/question/how-to-get-a-virtual-recordset-from-an-ordinary-recordset-111286#answer-111330

形象
丢弃
编写者

Wow, worked like a charm, after little changes, Will be adding it here for future reference. Thank you.

相关帖文 回复 查看 活动
1
4月 24
2756
0
11月 23
1179
2
12月 22
7386
2
1月 17
8281
1
12月 22
4041