Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
3 Trả lời
12650 Lượt xem

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.


Ảnh đại diện
Huỷ bỏ
Tác giả Câu trả lời hay nhất

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})
Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

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

Ảnh đại diện
Huỷ bỏ
Tác giả

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

Bài viết liên quan Trả lời Lượt xem Hoạt động
1
thg 4 24
2788
0
thg 11 23
1229
2
thg 12 22
7423
2
thg 1 17
8294
1
thg 12 22
4080