Odoo Help


how to call a fields.function from another object function?

on 7/13/16, 7:28 AM 1,592 views

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.


Techno-Functional Associate with 7+ years of experience in Odoo (formerly known as OpenERP).

On 7/14/16, 2:41 AM

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.

    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.

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

1 follower(s)


Asked: 7/13/16, 7:28 AM
Seen: 1592 times
Last updated: 7/18/16, 6:29 AM