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

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.

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

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.

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
0
thg 4 24
1850
4
thg 11 23
5936
0
thg 10 23
1707
0
thg 12 22
2611
2
thg 12 23
19288