In the native version of Odoo, it is possible to set a Credit Limit per customer, however, it is limited only to setting the Credit Limit amount and showing Informative messages on the Sales Order and Invoice in case the limit is exceeded for the selected customer. 

This functionality is not sufficient in many cases and a more comprehensive solution is needed. Functionality that will provide more control over the financial risk but at the same time flexibility in setting up and detailed overview of it. The module that allows all these is the Account Financial Risk module.

Security

From a security perspective, the module has two access groups User and Manager. Even though the User group is specified as read-only access to the Financial Risk data we couldn’t find integration of it in the codebase in version 16 at the time of reviewing the module.
The Manager group, on the other side, provides full access to the Financial Risk functionality. Additionally, the users with this group can overpass partner risk exceptions during Invoice confirmation. However, this group is not enough to see the tab Financial Risk in the Customer form view. That means to have full access to the features from this module it is required to have both Financial Risk Manager and Billing Administrator/Accountant groups. The accounting group is controlling the view of the Financial Risk tab.

Financial Risk Tab

Once the module is installed in the system the tab Financial Risk can be found in the Partner form view. The Tab contains a complete overview of the financial risk for the particular customer.

Financial Risk Tab

On the left side can be found the General Limits section which contains the type of credit limits that can be included in the Customer’s Financial Risk, together with the current amount for each of them. The available types of credit limits are:

  • Draft Invoices
  • Open Invoices/Principal Balance
  • Unpaid Invoices/Principal Balance
  • Other Account Open Amount
  • Other Account Unpaid Amount

Unpaid Invoices/Principal Balance type by default includes move lines with account same as the customer’s receivable account which are not reconciled and their due date is passed.
However, the module introduces an option of specifying additional margin before a move line is considered as Unpaid. This configuration is per company and can be found on the accounting configuration page under the name Maturity Margin. The value specified for this setting represents the number of additional days before a move line is considered unpaid.
"Other Account" limit types are move lines with account different than the customer’s receivable account which are with not past date or passed respectively. The Maturity Margin is taken into consideration for the Other Account Unpaid Amount as well.
At the bottom of the General Limits section, there is info about the Risk Remaining and the Total Risk for the customer, which is a sum of all included limits for that customer.

On the right side, can be found the Specific Limits section. In this section can be specified different limits for each type of credit limit.

Additionally, in the Info section it is possible to set a general credit limit per Customer. This limit is overpassed when the total amount that the customer owns from the selected General Limits is bigger than the set credit limit. Furthermore next to the Credit Limit is available the date when it was last updated.
Also in this section can be set the Credit Limit Currency. The available options for it are the following:

  • Company Currency
  • Receivable Currency
  • Pricelist Currency
  • Manual Credit Currency.

In case of selecting the Manual Credit Currency, an additional currency field is shown where the needed currency can be selected. Another available field in this section is Credit Policy, which is only informative and is not used anywhere in the system.

Invoice Confirmation

In case a customer exceeds a certain limit on confirmation of an Invoice “Partner risk exceeded” modal is shown. If the user has the Financial Risk Manager group there is an option in the modal to overpass the Risk Exception and continue with the Confirmation. Otherwise, the Confirmation will be blocked until the Financial Risk Exception for the customer is resolved.
Additionally for cases where this type of limitation is not needed there is a setting that allows invoices to be confirmed for customers with exceeded credit limits by all users that have access rights to confirm invoices. This feature can be enabled by selecting the option “Allow invoice validation over the risk” on the invoicing/accounting configuration page.

Financial Data Overview

The module allows a simple way of overviewing the financial data that is contributing to the current financial risk calculation for a customer. By clicking on the number next to each type of general limit will open the “Financial Risk Information” view, from which can be opened the list of Account Move Lines that are contributing to the Financial Risk for each account. This view can be opened by clicking on the number next to the name of the account.

This module is a great addition to the existing accounting features in Odoo. However, It is only related to the accounting part of the system and will not limit any action related to the Sales Order. In case such a feature is needed, a great addition to this module is the Sale Financial Risk module.

The module is maintained by the Odoo Community Association (OCA).

In addition is a short video with the module’s features.



Accounting Functional
Modules Review


The technical menu can be found on the settings page and it is visible only in developer mode. The menu contains more than 16 sections, some of which are visible only if a particular application is installed. For example, the “Calendar” section is shown only if the “Calendar” module is installed.

Instead of going over all options available in the menu, We will try to provide a broad understanding of the types of configuration options and data that can be found there. This way will be more clear where to look the next time when need to find a specific setting or data in the system.

Organization

The submenus in the Technical menu are typically organized into well-named sections that make it intuitive for users to find the appropriate submenu. The available sections may differ based on the installed modules, but the following are commonly found:

  • Discuss
  • Email
  • Phone / SMS
  • Actions
  • IAP
  • User Interface
  • Database Structure
  • Automation
  • Reporting
  • Sequences & Identifiers
  • Parameters
  • Privacy
  • Resources
  • Calendar

While many of the sections in the menu are self-explanatory, some may require more attention. Therefore, we will focus on those and provide a brief overview of them.

Features

The features that the Technical menu provides, similar to the features in the Developer Mode, can be divided into two main groups:

  • Configuration settings and
  • Data overview and modification

Configuration Settings

The Technical menu contains a wide range of system configuration options. Here are some of them:

  • Setting up Outgoing and Incoming email servers
  • Creating or modifying email and SMS templates
  • Creating or updating scheduled actions that will be executed on a predefined period
  • Creating different automation actions based on conditions.
  • Configuring the "System Parameters." Some of these parameters are also available for editing in a more user-friendly format from other parts of the system.
  • Configuring company resources
  • Setting up different In-App Purchase (IAP) accounts

Data overview and modification

In addition to the system configuration options, the Technical menu also provides access to and an overview of important data in the system. This makes it easier to understand the system and manage it directly from the user interface. The data available in the Technical menu can be divided into two main categories:

  • Technical data
  • Functional data

Technical Data

Technical data refers to the data that is crucial for the proper functioning of the system. The submenus that hold some of the most important technical data are:

  • Models: This submenu provides an overview of the data models defined in the system, along with information about their attributes, related fields, access rights, record rules, and views.
  • Fields: This view lists all the fields specified in the system. It is particularly helpful when the name of the field is known, but the model is not. For each field the​re can be found information about its related attributes.
  • Views: It contains all the available XML views and provides information about their definition and related attributes. Under the view definition, are specified all the fields that need to be shown in the view, their placement as well as additional attributes. Using the attributes can be applied different rules for the elements in the view, for example, they can make a field required, visible or hidden, read-only or editable, etc.
  • Actions: They define the behavior of the system in response to the user's actions. In Odoo there are several different types of actions including "Window Actions", "Server Actions", “Client Actions”, "URL Actions", "Report Actions", and “Automated Actions”. For most of these actions are available separate submenus
  • Menus: All the menus defined in the system can be found in this submenu. The menus usually trigger an action in the system which depending on its type can open a particular view or trigger some other part of the application
  • Access Rights and Record rules: These are essential components of Odoo's security system and ensure that each user can only see the data that corresponds to their profile.

It is important to note that the “Models” and “Fields” cannot be edited from the user interface, while the changes done to the “Views”, “Actions”, and “Menus“ might be overridden when the module is updated. However, the Access Rights and Record Rules can be edited, and their updates will be permanent in most cases.

Functional Data

The functional data available from the Technical menu includes data created by the users and the system as a result of user actions. Here are some examples of such data:

  • Messages: All different types of messages created in the system are listed in this view.
  • Followers: The view provides a complete overview of all followers related to all models in the system.
  • Emails: All sent and scheduled emails can be found here. However, it should be noted that if the "Auto Delete" option is selected in the email template used for the email, it will be auto-deleted once sent.
  • Activities: This view lists all existing activities created by the users in the system.
  • Attachments: All attachments created in the system can be found in this view.
  • Identifiers: All external XML ids which are related to data in the system are listed under this submenu.
  • User-defined filters: All custom filters saved from the user interface can be found in this view.

Conclusion

The technical menu is divided into multiple sections. It contains different configuration options and important data related to different aspects of the system. The data that can be found in this menu can be divided into two main categories: Technical data and Functional data. Technical data is essential for the proper functioning of the system and is largely created from the codebase. Functional data, on the other hand, is generated by users or the system as a result of user actions. Some of the key submenus with Technical data include Models, Fields, Views, Actions, Menus, Access Rights, and Record Rules, each providing insights into specific technical aspects of the system.

Functional Odoo 17 Odoo 18 Technical
Posts


The sequence of loading the views in Odoo is critical in the inheritance mechanism. The changes in the views are always applied following their order by priority​ and ID​. This means the views with the same priority will always be ordered by the ID​ that they have in the database. This makes the order of installing the modules in the database important for properly loading the views. In general, this is a problematic approach because not always we can have control over the sequence the modules are installed, especially when the system has multiple external modules from different sources. Basically, that is why sometimes some view modifications can work in some instances while failing in others.

In order to have more control over the sequence of loading the views in the system it is added priority​ field. Setting up the right value in this field can prevent many of the issues related to inheritance.

The value for the priority​ field mainly depends on three key factors:

  • The view that needs to be inherited,
  • The existing inheritance that the base view has
  • The requirements for the new view

In most of the cases having the biggest priority for the new view can be the right choice, however, there are cases when this is not the best option. Therefore it is always important to do a detailed analysis of the original view and its existing inheritance and on base of that to decide where to insert the new view in the process.

A common issue with view inheritance is when an element from the base view is removed in one of its inherited views while in the new view, this element is used as a position attribute. In this case, if the new view is added with the biggest priority​ value the server will start to complain because the element is removed from the base view before the changes for the new view are applied.

The priority of a new view can be set in the following way:

<odoo>
    <record id="view_order_form" model="ir.ui.view">
        <field name="model">sale.order</field>
        <field name="inherit_id" ref="sale.view_order_form"/>
		<field name="priority">18</field>
        <field name="arch" type="xml">
            <!-- Here goes the customization part -->
        </field>
    </record>
</odoo>

The same things related to priority apply when working with QWeb templates. The priority​ value for a new QWeb templates can be set as shown in the example below:

<odoo>
	<template id="products_description" inherit_id="website_sale.products" priority="55"><!-- Here goes the customization part -->
    </template>
</odoo>

The priority​ of a view can be updated from the UI using the "Views" menu in Settings or "Edit View" option in Developer Mode. The label for the priority​ field is "Sequence".

Odoo 17 Odoo 18 Technical
Tips

The Web Responsive module offers multiple visual improvements for a better UI/UX experience in the community edition. However, It is worth mentioning that Odoo 16 is already responsive and most of the things can be achieved from different screen sizes without any additional module.

The module has very well-documented features with GIF images for most of them, which helps to understand what the module offers.

The list of features is divided into three groups based on the device screen size:

  • Universal Features
  • Mobile-Specific Features
  • Desktop-Specific Features

Universal Features

Once the module is installed can be immediately noticed that the navigation menu is changed to a full-screen app menu. Additionally, a quick menu search is added at the top of it, which is auto-focused for desktop screens. This change makes the navigation through the system quicker and more convenient.

The next few improvements from this group are focused on the list and form views. In the list view, both the header and footer are made sticky. By default, Odoo only makes the header sticky for desktops. This change significantly improves the user experience when scrolling through long list views. Also, the checkboxes in the list view are slightly enlarged.

In the form view, the status bar is made sticky, making it accessible for any action without scrolling to the top of the screen

Mobile-Specific Features

The features in this section, which are not available in native Odoo 16, are mainly focused on optimizing screen space. Following that the buttons in the control panel are replaced with icons.

Furthermore, the avatar is removed from the chatter when sending a new message. This change creates extra space for the message composer, which is especially valuable on small screens.

Desktop-Specific Features

In the section related to desktop screens, a very useful feature is the option that expand the form sheets to full-width. This creates additional workspace on the screen, especially when the chatter is positioned at the bottom. The position of the chatter can be easily adjusted using the “Chatter Position” module.

Another feature in this group is the preview of attachments on the side. The user still has the option to maximize it if that is needed.

Furthermore, changing the colour of the chatter composer when the message is sent to external users is a very convenient functionality, however, this feature was not available on Firefox while we were testing the module.

The last modification that the module adds is about the keyboard shortcuts. After installation, the shortcuts Alt + [NUM]​ are replaced with Alt + Shift + [NUM]​. As it is stated in the documentation this change is done mainly to avoid conflict with the shortcut for Firefox Tab switching. It is very practical that on press of Alt​ the shortcuts are displayed on the screen which makes it easy to use.

This module provides valuable features, which make the work in Odoo even more convenient. However, the wide array of functionalities that the module contains might not align with every user's preferences. One idea to improve this could be to categorize these features into a few groups and offer them as optional choices. In that way, users can select the features that only apply to their needs.

From a technical standpoint, the module is actively maintained by the Odoo Community Association (OCA) and it is available from version 9 to 16.

In addition is a short video with the module’s features.


Functional
Modules Review


Security layers in Odoo

Understanding how the security system works in Odoo is crucial for effectively configuring user permissions and comprehending why certain data may or may not be visible to users within the system. This article provides an in-depth analysis of the security system in Odoo starting with users, groups, and element and data restrictions. 

Users

To better understand the security system in Odoo, we can visualize it as a series of interconnected layers that collectively create a comprehensive security solution.

At the core of the security system is the user layer. Each user is a fundamental component that controls the level of access and privileges for a particular visitor. Every visitor to the system has a corresponding user profile. Visitors who are not logged in are typically assigned to the public user profile. The user's role in the system is defined within their profile, where can be assigned different types of security groups for the user.

A user can access the system by logging in using a standard username and password mechanism. Additionally, for enhanced security, a two-factor authentication process is available.

Groups

The next layer in the security system is known as "Groups," which serve as a bridge between users and the access limitations defined for specific application’s elements or data. Essentially, groups correspond to roles that can be assigned to employees within the system.

Groups in Odoo are structured in a hierarchical manner, which allows the nesting of multiple groups within one another. When a user is assigned to a particular group, they will inherit any related groups as well

For example, in the Sales module, there are three groups created for different levels of access. The first one, "Sales / User: Own Documents Only," is the lowest level and is designed for users with the lowest access rights. The second group, "Sales / User: All Documents," is intended to provide more broad access rights and includes the first group as an inherited group. Finally, the third group, "Sales / Administrator," has the most extensive permissions within the sales application and has the "Sales / User: All Documents" group as an inherited group.

  1. Sales / User: Own Documents Only
  2. Sales / User: All Documents
  3. Sales / Administrator

So If a user is assigned to the first group, "Sales / User: Own Documents Only," they will only have access to that group within the system. However, if they are assigned to the second group, "Sales / User: All Documents," they will automatically inherit the first group as well. Similarly, if a user is assigned to the third group, "Sales / Administrator," the system will automatically assign them to both the first and second groups.

If a group has inherited groups they can be found in the "Inherited" tab of the group’s form view. Within the group form view, also can be found any related menus, views, access rights or record rules assigned to the group as well as any related users. This information can help to understand the level of security access that the group has in the system.

In Odoo, every group can be assigned to multiple users, and conversely, one user can be assigned to multiple groups which allows for flexible management of access rights.

Element Restrictions

Groups are an essential part of the access control system, but they cannot act on their own. They need to be linked to a component in the next layer to fully exercise their power. This layer contains two types of restrictions: 

  • Element restrictions
  • Data restrictions

They are designed to limit users' access to specific elements and data in the system.

Element restrictions are mainly defined in the codebase and can limit the view of buttons, fields, menus, and even entire views can be assigned to a group. This means that only users who are members of the particular group will be able to see that element. For example, only "Sales / Administrator" group may be able to view “Unlock” button in the Sales form view or the “Reporting” menu in the Sales application. Although these types of restrictions are usually defined in the codebase, they can be set from the UI as well, in the menus and views sections.

Data Restrictions

The second type of restriction is related to data models and is used to limit the user access to only the data that they have been granted permission to view, based on their assigned access groups. This type of restriction involves two layers of data control:

  • Access Rights
  • Record Rules.

Access Rights

Access Rights are responsible for the general control of the data stored in the data model. They define whether a user can read/write/create or delete the data related to that model. When defining access rights, it is enough to use the lowest level group, which will then be inherited by other groups. This means that other groups will also have the same access rights.

For instance, users with groups "Sales/Administrator" and "Sales/User: Own Documents Only" will both have the rights to read, create, write, and delete although the access rights are defined only for "Sales/User: Own Documents Only". However, if we take a look into the access rights defined for the “Public” group we can see that most of them have only read permissions because the group is expected to have minimal permissions in the system.

It is crucial to define access rights for each data model and assign appropriate groups to each. While it is possible to define access rights without a group, it is not recommended, especially for models holding sensitive data, as it would make the data accessible to anyone without any restrictions. It is always best to assign a group to every access right and give the minimum required rights.

Record Rules

While Access Rights are applied as a general rule for the entire data in the model, Record Rules filter the data at a more granular level. The Record Rules layer is designed to filter the data in the model based on predefined filters and to show only what a user should be able to see.

For example, let's consider the Sales groups again. A user with the group "Sales/User: Own Documents Only" can only see the sales orders where it is assigned as a salesperson, while a user with the group "Sales/User: All Documents" can see all sales orders in the system. To achieve this, there are two record rules defined.

The first rule is "Personal Orders," which is assigned to the "Sales/User: Own Documents Only" group. The domain in this rule is defined in such a way that records are filtered by the user who is assigned as a salesperson to the order. So the user can see only the orders to which they are assigned as a salesperson as well as all orders with an undefined salesperson.

The second rule is "All Orders," and as the name suggests, nothing is filtered from the records, so all orders can be seen by the users with the "Sales/User: All Documents" group.

Record Rules also have the option to limit different permissions, such as read, create, write, and delete. There may be cases where a user has the right to see the order but cannot perform any other actions on it. For example, “Portal” users can see their own orders, can edit them and remove them but they can not create a new order, so the order needs to be created for them by another user in the system.

If a group is not assigned to a rule, then the rule is considered a global rule and applies to all users. Global rules are mainly used to restrict data between different companies. For example, in the "Sales Order multi-company" rule, users can only see the orders created for the companies they are assigned to.

It is important to understand that global record rules are strict restrictions and cannot be overridden. On the other hand, record rules assigned to groups can further restrict global rules but can also be relaxed by additional group rules. This means that for a user to see a record, all global rules must be met, while for rules assigned to a group, at least one of the rules needs to be met. So, Record Rules apply to all users in that group, but can be extended by additional rules assigned to different groups.

Record Rules filtering process

Returning to the Sales example, users with the "Sales / User: All Documents" group can see all documents, despite also having the "Sales / User: Own Documents Only" group, because the record rule "All Orders" extends the rule "Personal Orders" with an additional domain that allows viewing all orders in the system.

 Conclusion

Every visitor is assigned to a user who is assigned to access groups that are related to both element and data restrictions. Element restrictions control what elements the user can see, such as buttons, fields, views, and menus, while data restrictions limit what data the user can access in the system. There are two layers of data control: Access Rights and Record Rules. Access Rights are responsible for general data control in the data model, while Record Rules filter data at a more granular level.

If a group is not assigned to a rule, the rule is considered a global rule and applies to all users. Global record rules are strict and cannot be overridden, while record rules assigned to groups can further restrict global rules but can also be relaxed by additional group rules.

Functional Odoo 17 Security Technical
Posts

The modals in Odoo by default are static, making it impossible to adjust their size or move their position. Which in some cases can be challenging for the users. Especially when dealing with modals that contain an extensive amount of data, such as a list view with numerous columns.

The Web Dialog Size module enables the modals to resize in width, with two possible options: the native size provided by Odoo and a full-width view. Once the module is installed the "Expand" icon can be found in the right corner of a modal just before the close button. On click of the icon the modal is resized to full-width and the icon is switched to a "Compressed" icon, on click of which the modal returns to its original size.

Additionally, it is possible the option full-width to be the default one. However, there is no available setting for it in the configuration settings, instead, a System Parameter needs to be created manually. 
The parameter can be added from the Technical menu which is available on the Settings page when developer mode is activated. By clicking on the System Parameters menu in the Parameters section a list view will be shown with all parameters available in the system. A new one can be created by clicking on the button New. The key for this parameter needs to be web_dialog_size.default_maximize​ while the value needs to be set to True​. 
It is important to mention that in case the module is not anymore needed and it is uninstalled from the system this parameter will need to be removed manually from the System Parameters table.

In addition to the resizing feature that this module provides, it also adds the draggable option for the modals. This means that the modals are no longer static and can be easily moved anywhere on the screen. This can be especially useful in situations where it's necessary to reference data on the screen while working within the modal.

This module is maintained by the Odoo Community Association and it is available for Odoo 16 and all previous versions.

In addition is a short video with the module’s features.


Functional
Modules Review

The chatter position in Odoo is not customizable. It adapts to the screen size, appearing on the right side for larger screens and at the bottom for smaller screens. However, when users don't frequently use the chatter, a significant portion of the main workspace remains underutilized. This area could be better utilized, especially in form views where a substantial amount of information needs to be displayed on the screen, particularly when there are nested tables, such as in the Sales Order form view.

The "Chatter Position" module, as the name suggests, introduces the ability to customize the placement of the chatter. This customization is user-specific and can be found in the user profile settings. The three available positioning options are:

  • Responsive
  • Bottom
  • Sided

Responsive

This is the default and natively supported option in Odoo. As previously mentioned, this choice automatically sets the chatter to either the side or bottom position, depending on the screen size.

Bottom

Setting the chatter to this position will place it always at the bottom, freeing up additional space for the form view. It is important to mention that changing the position of the chatter by default will not expand the workspace for the form view. To achieve that need to be installed one of the modules: Web Sheet Full Width or Web Responsive. I would recommend the latter, as it introduces a lot more tweaks and optimizations to the entire Odoo backend interface.

Sided

Selecting this option will keep the chatter permanently positioned at the side. However, this choice tends to be less favored, especially on smaller screens, where it can become less practical.

From a technical perspective, the module is maintained by Odoo Community Association (OCA) which has a well-established quality assurance system for all of its modules. This provides a strong assurance that the addons are technically very well implemented and maintained.
The module is available for Odoo 15 and 16 and it supports both Community & Enterprise Edition.

In addition is a short video on how to install the module and the options that it provides.


Functional
Modules Review

Every website developed with Odoo comes by default with a publicly available page that lists all installed addons in the system. Here are two methods how to hide this page:

1. Deactivating the Template for the Page:
   This approach hides all information on the page, displaying an empty page ​    when visitors attempt to access the URL.

  • The simplest way to disable the template is from the "Customize" tab in Edit Mode.
    Once the page is opened in edit mode the toggle for "Odoo Information" can be found in the "Customize" tab. By turning the toggle to Off the template for the page will be disabled.
  • Disable the template "Show Odoo Information" from the Technical Menu under the User Interface section: 
    Settings > Technical Menu > User Interface > Views.
    The view can be disabled by turning off the "Active" toggle.

2. Disabling the Controller for the URL /website/info​:
    This change ensures that when visitors try to access the URL,
    a 404(Not Found) Page​ will be displayed.

  • Create a 404 redirect by navigating to:
    Website > Configuration > Redirects.
  • Configure the redirect action as 404 Not Found​ and set the URL From​ as /website/info.

Additionally, to prevent the page from being indexed by search engines, the Robots.txt​ file needs to be updated with a new rule: "Disallow: /website/info". This can be accomplished by going to:
Website > Configuration > Settings > SEO > Edit Robots.txt.

Functional Odoo 17
Tips

Odoo Developer Mode

The Developer Mode is a powerful tool in Odoo that provides access to a range of settings and options for both developers and admin users. This feature is crucial for configuring and maintaining the system properly. In this article, we will explore the Developer Mode from an admin user’s perspective and highlight the various features and settings it enables.

Activation

There are multiple ways to activate the Developer Mode in Odoo:

  1. The first option is from the Developer Tools section which is located at the bottom of the main Settings page. This section provides several Developer Mode options. The first option is most suitable for non-technical users, while the other two are aimed more towards developers.
  2. Another way to activate the Developer Mode is by adding the attribute “debug=1” to the URL.
  3. Also, there are browser extensions for Chrome and Firefox that can be used to activate the Developer Mode.

Personally, I prefer the last option as it is the most convenient and efficient for me.

Features

The features that the Developer Mode provides for admin users can be divided into two main groups:

  • Configuration settings and
  • Data overview and modification

Configuration Settings

When the Developer Mode is activated in Odoo, the user gains access to a range of system configuration options. These settings are located under the Configuration menu in each module or in the general configuration options available in the Technical menu within the main settings page.

To provide a better understanding of the types of configuration options available in this mode, let’s review a few examples:

  • In the Sales module, the configuration for Activity Types is only accessible in Developer Mode.
  • Setting up Tax Groups in the Invoicing/Accounting module can be done only in Developer Mode.
  • In the Technical menu, which is only available in this mode, there are multiple configuration options such as: 
    • Setting up Outgoing and Incoming email servers
    • Creating or modifying email and SMS templates
    • Creating or updating scheduled actions that will be executed on a predefined period of time
    • Configuring the System Parameters, some of these parameters are available for editing in a more user-friendly format from other parts of the system, while some of them can only be set from this section.
  • The Translation settings are also only available under Developer Mode. Within this menu, users can activate/deactivate different languages in the system, import new translations, and export existing ones.
  • Also in the User page, the Technical groups can only be set when Developer Mode is activated.

Data overview and modification

Another significant benefit of this mode is the access and overview of important data in the system. This contributes to an easier understanding of the whole system and a more manageable system directly from the user interface. To make it easier to comprehend, the data available through the Developer Mode, can be divided into two main categories:

  • Technical data
  • Functional data

Technical data

Technical data refers to the data that is crucial for the proper functioning of the system, and it can be accessed under the Technical menu. Some of the most important technical data that can be accessed are:

  • Models: It provides an overview of the data models defined in the system. For each model can be found information about its attributes, related fields, access rights, record rules, and views.
  • Fields: This view lists all the fields defined in the system. It is particularly helpful when the name of the field is known, but the model is not. For each field can be found information about its related attributes.
  • Views: It contains all the available XML views. For each view, can be found information about its attributes as well as the full definition of it. Under the view definition, are defined all the fields that need to be shown in the view, their placement in the view as well as some additional attributes, which introduce different rules for the elements in the view, for example, they can make a field required, visible or hidden, read-only or editable, etc.
  • Actions: They define the behavior of the system in response to the user’s actions. In Odoo there are a few different types of actions: Window Actions, Server Actions, Client Actions, URL Actions, Report Actions, and Automated Actions
  • Menus: All the menus defined in the system can be found in this view.
  • Access Rights and Record rules: These are an essential part of the security system in Odoo and ensure that each user can only see the data that corresponds to their profile.

It is important to note that the Models and Fields cannot be edited from the user interface, while the changes done to the Views, Actions, and Menus might be overridden when the module is updated. However, the Access Rights and Record Rules can be edited, and their updates will be permanent in most cases.

Additionally, technical data is also available for each field in the view. This means that users can examine each field directly in the view and review its basic information. This feature is useful when working on changes in the view and requiring information for a field, such as its technical name, type, model, relational model, context, and more. Users can access this information for each field by hovering over the small question mark symbols displayed on each of the fields.

Functional Data

The functional data available in the Developer Mode includes data created by the users and the system as a result of user actions. Admin users can access multiple views to review important data in the system. Here are some examples of such data:

  • Messages: This view lists all messages created in the system.
  • Followers: This view provides a complete overview of all followers related to all models in the system.
  • Emails: All sent and scheduled emails can be found here. However, it should be noted that if the email template used for the email is marked with the Auto Delete option, the email will be auto-deleted once sent.
  • Activities: This view lists all activities created by the users in the system.
  • Attachments: This view provides a list of all attachments in the system.
  • Payment Transactions: This view can be found under the Configuration menu in the Invoicing/Accounting module and lists all online transactions in the system.

Furthermore, Developer Mode can also reveal different view elements, such as fields, tabs, and sections that are not normally visible in the user interface. For instance, the Signature tab in the sales menu is only visible in Developer Mode. This is usually the case with sensitive data that is not necessary for regular users to see, but it can be useful to have an overview of it for special cases.

Developer Mode Menu

In Developer Mode, a small bug icon appears at the right corner of the main menu, just before the Conversations icon. This menu contains various options, some of which are more technical and mainly used by developers, we will focus only on the options which are useful for admin users.

Most of these options display technical or functional data for a particular view, model or record. For example:

  • Edit Action displays actions related to the particular view,
  • View Fields lists all fields related to the view,
  • View Access Rights and View Record Rules display access rights and security rules related to the particular model,
  • Get View shows the full view in XML format,
  • Edit View and Edit Search View display the views with all their attributes. The views can be edited from here, but the changes are usually overwritten when the module is updated.

Some of the functional data related to the particular record can be managed using this menu. Most of these options are available when the form view of the record is opened:

  • Managed Filters shows all custom filters for the model and allows the creation or modification of existing ones.
  • Set Defaults allows setting a default value for the model. For instance, if some values on the current record should be present on all future records, they can be set as default values, and the value will be automatically set whenever a new record is created.
  • View Metadata displays basic system information for the record, such as its ID in the database, the date it was created, and who created it. It also displays who last edited the record and when. Additionally, if the record has an external XML ID attached to it, it will be shown here. No Update indicates if this record is protected from updates from external XML data, meaning that if the record is edited and the module is updated, the changes will not be overwritten.
  • Managed Messages lists all messages related to the record. Each message can be edited or removed.
  • Managed Attachments displays all attachments added to the record. Similar to messages, they can be edited or removed from here.

The final two options in the Developer Mode menu are Become Superuser and Leave Developer Mode.
The first option, as the name implies, grants the user Superuser status in the system. This means that all access and record rules are ignored for that user. This option is useful when troubleshooting access rights issues.
The second option, Leave Developer Mode, disables the Developer Mode. This can be achieved in a few different ways, such as using the button Deactivate Developer Mode in the Developer Tools section or by clicking on the browser extension while Developer Mode is activated or simply by setting the “debug” attribute to 0 or removing it from the URL.

Conclusion

Despite its technical-sounding name, developer mode in Odoo is a valuable tool for both developers and admin users. It is an essential feature to properly configure the system and later maintain it.

While this article covers only a brief overview of the many options available in Developer Mode, the intention was not to provide all options but to highlight the type of configuration options and data that are accessible through this mode. In order to create a general understanding of the data and options available with it and where they can be found.

Functional Odoo 17
Posts