Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
1 Răspunde
6987 Vizualizări

Hi friends,

I have to call sale_order fields.function names _amount_all from another button function for less the discount amount from total amount when validating sale order.Please help me in this situation.

Imagine profil
Abandonează
Cel mai bun răspuns

In Odoo 8 and above.

One cannot trigger the computational fields without the change in values of its dependent fields.

Say in case of SaleOrder,  "_amount_all" method is depended on the field value price_subtotal present in its child class i.e. in SaleOrderLine, So unless and until the value of price_subtotal is changed, the function will not be triggered. which is actually a good functionality, because it avoids unnecessary triggers and writing values into the database.


Now coming to your requirement, if am not wrong you have a discount_field in SaleOrder and upon specifying a value you want the same to be reflected in Total Amount of SaleOrder.

So why not inherit _amount_all in your custom module and concatenate the discount_field into @api.depends as shown below.

    @api.depends('discount_field')
    def _amount_all(self):
        super(SaleOrder, self)._amount_all()
        for order in self:
            order.amount_total -= order.discount_field


Am sure this way you can achieve your requirement, but if you still wanted to trigger the computation field, and if you using Odoo 8 then all you need to do is add recompute = True in the context while calling write method as below.

context = dict(self._context, recompute=True)

 Note: In Odoo 9, recompute doesn't work.

Imagine profil
Abandonează
Related Posts Răspunsuri Vizualizări Activitate
0
apr. 24
1885
4
nov. 23
6015
0
oct. 23
1759
0
dec. 22
2647
2
dec. 23
19379