Passa al contenuto
Menu
È necessario essere registrati per interagire con la community.
La domanda è stata contrassegnata
3 Risposte
12658 Visualizzazioni

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.


Avatar
Abbandona
Autore Risposta migliore

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})
Avatar
Abbandona
Risposta migliore

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

Avatar
Abbandona
Autore

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

Post correlati Risposte Visualizzazioni Attività
1
apr 24
2789
0
nov 23
1231
2
dic 22
7426
2
gen 17
8295
1
dic 22
4104