Перейти к содержимому
Меню
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Этот вопрос был отмечен
1 Ответить
6983 Представления

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.

Аватар
Отменить
Лучший ответ

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.

Аватар
Отменить
Related Posts Ответы Просмотры Активность
0
апр. 24
1883
4
нояб. 23
6013
0
окт. 23
1759
0
дек. 22
2647
2
дек. 23
19371