Skip to Content
Home Blog Odoo Tips and Tricks
Odoo Tips and Tricks Odoo Tips and Tricks

Odoo Tips and Tricks

Odoo, famously known as the Open-Source Enterprise Resource Planning Software was founded in 2005. It is a Module-Based system which has been developed to support almost every functionality of the businesses.

An ERP acts as a technical solution to automate the entire process of your business. It allows you to gain insights and controls over the various departments of your business like HR, Sales, Purchase, Accounting, Social Media Management, CRM, etc.

Odoo would allow you to compile all of the information from these departments and provide it in a single platform- your Odoo Database.


If you are an Odoo Developer, you might come across situations where you may get stuck or come across a hurdle. As Odoo Partners, Kanak Infosystems LLP. understands the trouble and that is exactly why we have come up with our little tips and tricks in this blog. These partner tricks will help you and will definitely save up your time.

🎯 Ready to take your Odoo game to the next level? Discover our top tips & tricks and start implementing them now.... 


Odoo Hacks: A comprehensive list of Tips and Tricks


1. To calculate the number of lines in your module we have two commands:

(1) ./odoo-bin cloc -p <module-path> : this will give you the total number of lines your module contains.

(2) ./odoo-bin cloc -p <module-path> -v : this will give you the total number of lines of each file your module contains.

these files are excluded from the odoo cloc by default:

​__manifest__.py or __openerp__.py

the xml files included in demo or demo_xml section of the manifest

contents of static/lib

tests which are defined in tests and static/tests

and also excluded files from odoo cloc command by declaring cloc_exlude in manifest

for example:

"cloc_exlude":[

"models/res_partner.py",

"data/*.xml",

]

Odoo Hacks
Odoo Hacks

2. "selection_badge" Widget

If you want to display the selection field like a badge selection, then this widget can be useful.

Applicable on which types of fields?

Answer: Can be applied only on selection type field

Syntax:

<field name="detailed_type" widget="selection_badge"/>


selection badge widget

3. In Odoo16 Early Payment Discount Feature is Added In Payment Terms.

If someone is doing a payment before the Due date, then they will get a discount in a payable amount.


early payment discount
early payment discount
early payment discount
early payment discount

4. How to debug QWeb templates in odoo?

By putting t-debug="pdb" in the XML template to debug the template code. It is the same as the set_trace() method of python debugger.

NOTE: Need to enable --log-level=debug in terminal then only you can debug the XML template.

Syntax:

<t t-debug="pdb"/>


5. Custom Icon on State Widget.

In order to add custom icons to a state like selection field in tree view you can use widget event_icon_selection in selection field and in options set icons for specific value of selection field which will show custom icons in view as value of field changes.


custom icon on state widget
custom icon on state widget

6. In odoo 16 one more feature has been added called Storno accounting.

You can enable this feature from Accounting Setting, using this feature, we can use negative debit or credit amounts to reverse original journal account entries.

storno accounting
storno accounting
storno accounting
storno accounting

7. In Order to deal with features like copy-generated URLs, developers can use the widget "CopyClipboardChar" in the attribute of the field in view.

copy clipboardchar
copy clipboardchar

This will show a copy-compatible field in view for the user to easily use to URL for refereeing purposes.


8. When creating a field in the database, Indexing is a very useful feature because the data is stored like an array, and the new values are added one by one. So if you search for a particular string, it can take a very long time to search for the last value present in the array. So to improve the speed and better sorting, the indexing method is used in fields in Odoo.

In Odoo 16, there are 3 methods of indexing introduced for fields.

1)btree or True (True was already present in earlier versions)

2)btree_not_null

3)trigram

For example,

name = fields.Char(string="Order Reference", index='trigram')

Adding Index to the fields make the storing and searching of the values in the database faster.


9. No more '_name_search' for simple search using multiple fields. Odoo16 has a new parameter as a '_rec_names_search'.

odoo 16

=======

class AccountMove(models.Model):

_name = "account.move"

_inherit = ['portal.mixin', 'mail.thread', 'mail.activity.mixin', 'sequence.mixin']

_description = "Journal Entry"

_order = 'date desc, name desc, id desc'

_mail_post_access = 'read'

_check_company_auto = True

_sequence_index = "journal_id"

_rec_names_search = ['name', 'partner_id.name', 'ref']


10. Odoo backend to have increment/decrement options for integer field.

1. Syntax for simple increment/decrement option:

<field name="your_integer_field" options='{"type": "number"}' />

2. Syntax for increment/decrement option with step:

<field name="your_integer_field" options='{"type": "number", 鈥渟tep鈥: 5}' />


11. Odoo 16: how to load new fields in pos models.

method prefix is fix ex: loader_params after added model name like _loader_params_res_partner

ex for _loader_params_modelname

and methods defined in possession model


example to load new field in pos model:

def _loader_params_pos_payment_method(self):

​result = super()._loader_params_pos_payment_method()

result['search_params']['fields'].append('pos_mercury_config_id')

​return result

def _loader_params_model_name(self):

​result = super()._loader_params_model_name()

result['search_params']['fields'].append('new_field_name')

​return result


12. Odoo support javascript files -

1- Plain javascript files (no module system) - plain javascript files do not offer the benefits of a module system, so one needs to be careful about the order in the bundle (since the browser will execute them precisely in that order).

2- Native javascript module - Most new Odoo javascript code should use the native javascript module system. This is simpler and brings the benefits of a better developer experience with better integration with the IDE. There is a very important point to know: Odoo needs to know which files should be translated into Odoo modules and which files should not be translated. This is an opt-in system: Odoo will look at the first line of a JS file and check if it contains the string @odoo-module. If so, it will automatically be converted to an Odoo module.

3- Odoo modules (using a custom module system) - Odoo has defined a small module system (located in the file addons/web/static/src/js/boot.js, which needs to be loaded first). The Odoo module system, inspired by AMD, works by defining the function defined on the global odoo object. We then define each javascript module by calling that function. In the Odoo framework, a module is a piece of code that will be executed as soon as possible. It has a name and potentially some dependencies. When its dependencies are loaded, a module will then be loaded as well. The value of the module is then the return value of the function defining the module.


13. If the module is having any external python dependency, then we can define it in manifest (as below), so if your server didn't have installed the library, by clicking on the "Install" button on the module, will give you the warning that external dependency is not installed.

'external_dependencies': {

  ​'python': ['pyqrcode']

}

If you want to install an external library in odoo.sh automatically then you need to add a "requirements.txt" file with the proper version of the external library(as below) in the branch(not in module). So when you push the module on odoo.sh odoo will auto install the external library.

requirements.txt file should have below content:

pyqrcode==1.2.1


14. Xpath element named "move", The position='move' has been introduced to move an element in an inherited view.

It's used as:

<field name="target_field" position="after">

​<field name="my_field" position="move"/>

</field>

In the above example my_field is placed after target_field in the parent form. So now we can inherit and have the ability to manipulate fields order in views, not only add new fields.


15. In odoo 16.0, There is an option which has been added "Switch into refund/credit note" in Invoice/Bill form view Action, using this you can convert your invoice to credit not and bill to refund, it'll automatically change Accounting entry(database contain 1 entry), up to 15.0 you can cancel entry and you have to create a new one(database contain 2 entry).


Switch into refund/credit note
Switch into refund/credit note

16. In the inventory module under the configuration operation type, odoo added a new field called Create Backorder.

This is for those Users who may have less knowledge of management and might click on Cancel when asked if they want to create a backorder. That would create a mess in records,which would make it hard to detect or track them. The Create Backorder option forces the user to choose rather than cancel the backorder option.


create backorder

17. Create a module without creating a folder inside the folder, just go to the terminal and write this command ./odoo-bin scaffold module name should be mentioned: it automatically creates a module of mentioned name after scaffold.

Create a module

18. Fix warning - In odoo-16.0 log

When running the terminal, we get the warning 

fix warning

Go home>> open .odoorc file and change longpolling-port = 8072 change gevent-port = 8072

Fix warning
fix warning

19. Odoo16: Add precompute=True option in your Computed fields to compute value before Record Create, UpTo 15.0 version Computed field value was computed after Record Create.


20. In odoo-16.0, we can use Command instead of creating an environment. 

Like if we want to create an environment for sale order and use create and write function, then we will create an environment by 

self.env['sale.order'].create({}) or self.env['sale.order'].write({}), but instead of that we can use 

Command.create({}) or Command.write({}). 

We can import Command directly from odoo. The command will have the same environment as the current working model. We can also use this for creating One2many while creating demo data.

 

21. Widget: "many2one_barcode"

Widget for many2one fields allows to open the camera from a mobile device (Android/iOS) to scan a barcode.

Specialization of many2one field where the user is allowed to use the native camera to scan a barcode. Then it uses name_search to search this value.

If this widget is set and user is not using the mobile application, it will fallback to regular many2one (FieldMany2One)

Supported field types: many2one

Supported Odoo Versions: >=13.0

 

22. As of now on click of Many2one field it'll open Form View but,

To Open the Tree View on click of Many2one field follow these steps

1. Inherit Model in your module

    Ex: 

    class ProductProduct(models.Model):

        _inherit = 'product.product'

 

2. Override "get_formview_action" method in that model

    Ex:

        class ProductProduct(models.Model):

            _inherit = 'product.product'

 

            def get_formview_action(self, access_uid=None):

                return {

                    'name': self.name,

                    'type': 'ir.actions.act_window',

                    'res_model': self._name,

                    'view_type': 'list',

                    'view_mode': 'list',

                    'views': [(False, 'list')],

                    'context': dict(self._context),

                    'domain': [('id', 'in', self.ids)],

                }


23. heading: use of _auto in while declaring models

If we do not want ORM methods to work automatically, we use _auto = “False’ while declaring the model.  

For ex: class CustomModule(models.Model):    _name = ”custom.model”    _auto = False  By default it is True. 

Using this, we can change/modify the processes which are saving the data in the database normally. To save the date, we need to manually write the query in Python. 


24. It is possible to change the type of the input field based on the condition in xml

For ex:

<input type=”text” onfocus=”(this.type=’date’)” onfocusout=”(this.type=’text’)”/>

When this input field will be in focus it will behave as a date field but when it is not in focus it will behave as a text field. This will be useful when you wish to add a placeholder in a date field. However, it is not possible to add a placeholder into a date or time field, but using this you can now add a placeholder to the text field which on focus will act as a different type.

Not on focus

Change Type of the Input Field based on the Condition in XML

On Focus

Change Type of the Input Field Based on the Condition in XML


25. Using of (recursive=True) argument while defining fields: 

We can use recursive in Python while defining fields. If we have another field in our model that is in relation to the same model like somewhat parent_id and child_id. 

For example, if we want to compute name on the basis of parent_id and child_id in recursive format, then we can use this argument.

 

Using of (recursive=True) argument while defining fields

 

Using of (recursive=True) arument while defining fields

The above method will compute the complete_name of record recursively. This means when we access the particular record, it concatenates the parent record name recursive while computing current record name.

 

26. If you want to get JSON data for a particular model in Odoo 18, it's easy. You just need to modify the URL to retrieve the JSON data.

For example:

Odoo list view URL: http://localhost:8069/odoo/contacts?view_type=list

JSON URL: http://localhost:8069/json/contacts?view_type=list


Kanak Infosystems believes that these technical tips and tricks may come out handy for all the Odoo Developers out there, just like they have helped the Odoo Experts at the house of Kanak.

_________

📋 Upgrade your Odoo version now to enjoy a hassle-free and enhanced user experience. Don't miss out on the benefits of the latest version - act today!

Strong Integration Expertise

Modern ERP systems require seamless connectivity. Kanak specializes in integrations with payment gateways, banking reconciliation systems, eCommerce marketplaces, logistics APIs, HRMS & biometric devices, and CRM and communication tools.

Standard-First ERP Philosophy

One major reason businesses prefer Kanak is its "standard-first" implementation approach. Instead of over-customizing Odoo unnecessarily, Kanak focuses on upgrade-friendly implementations, lower technical debt, better system performance, faster deployment cycles, and long-term scalability.

Global ERP Experience

Kanak serves clients across USA, Middle East, Europe, Australia, Singapore, Malaysia, and 50+ countries - enabling them to handle multi-company setups, multi-currency operations, localization & compliance, and cross-border business workflows.

Best for: Any business requiring deep customization, complex integrations, industry-specific Odoo expertise, or a long-term ERP partner with proven global experience.

Banibro IT Solutions ​
Official Odoo PartnerChennai BasedSME Focused

Banibro IT Solutions is known for its structured implementation methodology and business-focused ERP consulting approach. The company focuses on requirement analysis, workflow optimization, ROI-driven ERP planning, and seamless user adoption for SMEs and growing enterprises. 

Key Strengths
  • Business-centric consulting approach
  • ERP process alignment
  • Odoo customization for SMEs
  • Third-party integrations
  • Long-term support services

Best for: Small to mid-sized businesses in South India looking for practical and cost-effective Odoo implementations.

Serpent Consulting Services
Odoo Gold PartnerAhmedabad Based 10+ Years

Serpent Consulting Services has maintained a strong presence within the Odoo ecosystem for many years. The company specializes in Odoo consultation, migration services, custom development, integration support, and mid-sized enterprise deployments.

Key Strengths
  • Stable and structured implementation methodology
  • Strong upgrade compatibility focus
  • Long-term ERP maintainability
  • Reliable technical consulting

Best for: Mid-market companies needing structured Odoo consulting with long-term upgrade planning.

BrowseInfo
Odoo Best Partner India 20241200+ App Store Apps Ahmedabad Based

BrowseInfo is recognized for handling complex Odoo customization projects and enterprise-grade ERP deployments. The company works with businesses requiring multi-location operations, complex approval workflows, enterprise automation, and high-volume ERP environments.

Key Strengths
  • Large-scale implementation capabilities
  • Enterprise workflow customization
  • Odoo performance optimization
  • Scalable architecture support
  • Largest App Store module volume

Best for: Healthcare, retail, and businesses needing quick module deployment from the App Store.

Cybrosys Technologies
Official Odoo Partner​Kerala BasedTechnical Specialists

Cybrosys Technologies is widely known for its strong technical capabilities in the Odoo ecosystem. The company has extensive experience in module development, Odoo migrations, backend customization, technical optimization, and performance enhancement.

Key Strengths
  • Strong engineering and development capabilities
  • Odoo app and module development
  • Technical troubleshooting expertise
  • Version migration experience

Best for: Businesses needing heavy backend customization, complex module development, or technically intensive implementations.

Side-by-Side Comparison

How to Choose the Right Odoo Implementation Partner

Choosing the right Odoo consulting company is one of the most important decisions for ERP success. Here are the key factors every business should evaluate before signing a contract:


Odoo Experience

Choose a partner with proven implementation experience and long-term Odoo expertise. Look for 10+ years minimum for complex projects.


Industry Understanding

Industry-specific experience reduces implementation time and improves process alignment. Ask for case studies in your exact sector.


Certified Odoo Experts

Certified functional consultants and developers ensure better implementation quality. Ask how many team members hold current Odoo certifications.



Structured Methodology

A reliable partner provides requirement gathering, gap analysis, milestone planning, UAT, training, and go-live support as standard.


Integration Capabilities

Modern ERP needs connections with banking systems, logistics providers, HRMS, payment gateways, and eCommerce. Ask for live demos of past integrations.


Post-Go-Live Support

ERP implementation is not a one-time project. Get SLA response times in writing. Ask about AMC pricing and how version upgrades are handled.



Upgrade-Friendly Development

Excessive customization blocks future Odoo version upgrades. Good partners follow a standard-first approach — customizing only where it creates genuine value.


Scalability

Your ERP should grow with your business. Choose a partner who can support future module expansions, upgrades, and process improvements over 5–10 years.


⚠ Red flag: Any partner who gives a fixed-price quote without a discovery or requirements phase is underscoping your project. This almost always leads to scope creep, delays, and budget overruns. A serious partner insists on a requirements phase before quoting.

Odoo Community vs Enterprise — What's the Difference?

One of the most common questions businesses ask when evaluating Odoo is: What is the difference between Odoo Community and Odoo Enterprise?

For businesses planning long-term ERP scalability, Odoo Enterprise is usually the preferred choice. The added cost is offset by official support, automatic upgrades, and significantly more powerful modules.

How Much Does Odoo Implementation Cost in India?

Odoo implementation cost in India depends on multiple factors including number of users, modules required, customization complexity, integrations, data migration, industry workflows, and training requirements.

Partner hourly rates in India typically range from ₹1,500 to ₹4,500 per hour depending on seniority and firm. Budget an additional 10–20% contingency for data cleanup and integration complexity. Note: Odoo Enterprise license costs (approximately ₹2,000–4,000 per user per month) are separate from implementation fees.

⚠ Important: Businesses should focus on implementation quality and long-term ROI — not just the lowest upfront pricing. A cheaper implementation that fails costs significantly more than a quality one done right the first time.

How Long Does Odoo Implementation Take?


Timeline depends on customization level, data migration complexity, user training, integration requirements, and internal approvals. An experienced Odoo partner significantly reduces delays and implementation risks through structured methodology and reusable configurations.

Why India Is a Global Leader in Odoo Consulting ?

India has become one of the world's strongest destinations for Odoo consulting and ERP implementation because of:

  • Highly skilled Odoo developers and consultants — India produces more Odoo-certified professionals than almost any other country
  • Competitive pricing with global service quality — Indian partners deliver enterprise-grade implementations at a fraction of Western market costs
  • Global delivery experience — top Indian partners have successfully delivered ERP projects across USA, Europe, Middle East, and Asia
  • Strong offshore support models — time zone coverage allows near-24/7 support for international clients
  • Large technical talent pool — continuous pipeline of Odoo-trained engineers and functional consultants
  • Enterprise implementation expertise — experience across manufacturing, retail, healthcare, logistics, and finance industries

Final Verdict — Which Odoo Partner Should You Choose?

The best Odoo implementation partner is not simply the company with the lowest pricing or biggest team. The right partner should understand your business processes, recommend scalable ERP strategies, minimize unnecessary customization, ensure smooth user adoption, provide long-term support, and deliver measurable ROI.

For businesses looking for a highly experienced, globally trusted, and scalable ERP consulting company, Kanak Infosystems LLP remains one of the strongest choices for Odoo implementation in India in 2026 — backed by 14+ years of experience, 500+ successful implementations, and one of India's largest Odoo App Store portfolios.

Frequently Asked Questions (FAQs)

Kanak Infosystems LLP. is considered one of the leading Odoo implementation partners in India due to its 14+ years of experience, 500+ implementations, 500+ apps on the Odoo App Store, global presence across 50+ countries, and a 95% client retention rate. Active since the TinyERP era, Kanak is among India's earliest Odoo partners.

Odoo implementation cost in India typically ranges from ₹3 lakh to ₹30 lakh+ depending on business size, modules, customization, and integrations. Small businesses (5–15 users) can expect ₹3–8 lakh. Mid-sized companies typically spend ₹10–25 lakh. Large enterprises may need ₹30 lakh or more. Odoo Enterprise license costs (approximately ₹1,000–2,000/user/month) are separate from implementation fees.

Basic implementations take 4–8 weeks. Mid-sized ERP deployments take 2–5 months. Enterprise-level implementations take 6–12 months. An experienced partner significantly reduces delays through structured methodology and reusable configurations.

Odoo Community is free and open-source with basic ERP functionality and community support. Odoo Enterprise is a paid subscription that includes advanced modules, official Odoo support, mobile app support, better UI/UX, Studio customization tools, and advanced accounting and reporting. For businesses planning long-term scalability, Odoo Enterprise is usually the preferred choice.

Evaluate: years of Odoo-specific experience, number of completed implementations, industry expertise relevant to your sector, certified developers, App Store contributions, client references in your industry, post-go-live support SLA, and customization philosophy. Good partners follow a standard-first approach to keep systems upgrade-friendly.

Yes. Odoo offers strong manufacturing capabilities including MRP, production planning, quality management, inventory tracking, barcode integration, and maintenance management. Kanak Infosystems has implemented Odoo for dozens of manufacturing companies across India and internationally.

Yes. Odoo is highly modular and scalable, making it suitable for startups, SMEs, and enterprises alike. Small businesses can start with just 1–2 apps and add more as they grow. With the right implementation partner, small businesses can go live in 4–6 weeks.

Businesses globally prefer Indian Odoo consulting companies because they offer highly skilled developers, competitive pricing with global service quality, extensive international ERP experience, strong offshore support models, and deep expertise across manufacturing, retail, healthcare, logistics, and finance industries.

Leave a Comment

Your email address will not be published.

Submit
Your comment is under review by our moderation team.