How to Add Inverse Function for Compute Fields in Odoo 18

December 13, 2024 by
admin


                                                                                                                 


How to Add Inverse Function for Compute Fields in Odoo 18


Overview
Odoo is a powerful and highly flexible ERP system.One of the key features of odoo is its ability to use computed fields, which allow you to automatically calculate values based on other fields. By default, In odoo computed fields are read-only, users can’t edit the field. If you want to allow users to edit, you can use inverse functions.
This blog will guide you through the process of adding an inverse function to computed fields in Odoo 18, enabling users to modify these fields while ensuring that any changes are reflected in dependent fields. 


Computed fields
  • A computed field is a field whose value is computed dynamically based on other fields. 
  • These fields are not directly stored in the database but are calculated using a function defined in the model. 
  • Computed fields are used when the value of the field is dependent on the value of other fields.
  • We use the decorator @api.depends for defining a computed field . 
  • Eg: computed field named ‘char1’which depends on fields char2 


   
    char1=fields.Char("Char1",compute="_compute_upper",inverse="_inverse_upper")
   	char2=fields.Char("Char2")
  
      	@api.depends('char2')
     	 def _compute_upper(self):
          for record in self:
            if record.char2:
                 record.char1 = record.char2.upper()
            else:
                 record.char1=""


Inverse Function
  • Since computed fields are readonly, we use inverse functions to make them editable.
  • Thus by using inverse functions Odoo can both calculate their values and update dependent fields when the computed field is changed.
  • Eg of inverse function for the above example:


    
   Class ExampleModel(models.Model):
       _name=’example.model’   

       char1=fields.Char("char1",compute="_compute_upper",inverse="_inverse_upper")
       char2=fields.Char("Char2")

  	   @api.depends('char2')
       def _compute_upper(self):
        for record in self:
          if record.char2:
            record.char1 = record.char2.upper()
          else:
            record.char1="”
                
       def _inverse_upper(self):
        for record in self:
          if record.char1:
            record.char2 = record.char1.lower()
          else:
            record.char2="”
            


  • In this example, the char1  is calculated using the '_compute_total' method, and the '_inverse_total' function updates the char2  when char1 is modified by the user.
  • We use the ‘inverse=_inverse_upper' argument , which defines a function to update the related fields when the computed field (total) is manually changed.


Conclusion
Computed fields in Odoo are incredibly useful for automating calculations and displaying dynamic values. However, when you need to allow users to manually adjust these fields, an inverse function becomes essential. It provides a way to control how computed fields are updated and how those updates affect other related fields.
In Odoo 18, adding an inverse function allows you to make computed fields editable while ensuring that changes propagate to other fields logically. By following the steps outlined in this blog, you can implement this feature effectively in your Odoo customizations and enhance the overall flexibility of your models.


If you are looking for an ERP implementation partner with diverse industry experience feel free to contact us. We have proven track record of successful implementations across various sectors including Odoo for Manufacturing, Odoo for Trading, Odoo for FMCG, Odoo for Oil & Gas, Odoo for Diary, Odoo for Pharma, Odoo for Cosmetic Clinic, Odoo for Contracting Companies, Odoo for HVAC, Odoo for Logistics, Odoo for Automobile, Odoo for Laundry, Odoo for Field Service, Odoo for E-Commerce & many more


ZestyBeanz offers Developer / Consultant outsourcing programs, Chat with us in Whatsapp and Hire Odoo Developers, Mobile Application Developers, Consultants.
#OdooKerala #OdooKochi #OdooTrivandrum #OdooERP #ProjectManagement #OdooVansales #HireOdooDeveloper
in R&D
# R&D