Ir al contenido
Menú
Se marcó esta pregunta
1 Responder
6812 Vistas

I have an onchange function that creates an order line on the sales order, which fires when I put a discount value in the global_discount_rate field. The function is:

@api.onchange('global_discount_rate', 'global_discount_type')
def calculate_discount(self):

I need to call this onchange function from a function that I am attaching to a button in the same view. But I don't know the correct way to do it. I tried the following:
Attemp 1:

def create_line(self):
...
    self.calculate_discount()

Attemp 2:

def create_line(self):
...
linevals = {
'global_discount_rate': disc,
'global_discount_type': self.global_discount_type
}
line = self.env['sale.order'].new(self)
line.calculate_discount()
linevals = line._convert_to_write(line._cache)

Neither creates the line I need in the sales order











Avatar
Descartar
Mejor respuesta

Hi,
You can call the function from anywhere using it’s object. The onchange function calculate_discount() is defined in ‘sale.order’, then you can call it with a sale.order object. In your code, if the self is contain an object of sale.order then you can call it like this:
self.calculate_discount()

And if there's an another field order_id which is stored sale order object then
self.order_id.calculate_discount()

Regards

Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
0
ago 20
7688
3
ene 18
5597
1
jul 25
2521
2
dic 24
21132
0
sept 24
1021