The Gantt view is a convenient way to plan a project. It provides a complete picture of the project plan and simple interaction with the tasks. In Odoo 18 this is even better with the latest changes that Odoo added to the view.

The planning period is flexible and can be selected from the predefined periods or choose your own custom range. Also, the view for the selected period can be zoom-in and zoom-out during the planning process.

Additionally, it is possible to have all the tasks grouped by assignee, in that way it is possible to see all the tasks assigned to a user below their name.

Project Gantt View

Even the improvements from the previous version are noticeable the view is missing a few features that may be crucial for some users.

The view does not support sub-task planning at the moment. They are filtered out from the view. This can be a real problem for companies that do the planning on sub-tasks level. Hopefully, Odoo will introduce this functionality in the near future.

Once sub-tasks are introduced would be convenient to have the related sub-tasks just below their parent task so the user can see the parent task and sub-tasks together while planning.

The ordering at the moment is by planned date, which can be helpful in case when there are not many tasks in the view. However, when a task is moved to a different date, if the view contains a lot of tasks, it can be challenging to locate the updated task.

Also having a configurable colour scheme for the tasks would make it possible for the user to recognize the stage of the task or project based on the colour. It can be done by using the project’s color for the “All Tasks” view while a color set per stage in the views per project.

Functional Odoo 18 Project
Posts





Very often businesses that have a portfolio of projects within different industries need the option of categorizing the projects. However the core version of Odoo does not support such functionality, even though in some cases can be used the Tags option, however in that case it is difficult to group the project by category since the Tag field is many2many​.

The “Project Type” module makes this functionality possible. It is a very simple module that introduces the Type​ field in the Project and Task models. Each Project or Task can belong only to one Project Type. Once the projects are categorized they can be grouped using the Group By: Type​ option.

 Group By Project Type

The different project types can be set up in the Project > Configuration > Project Types​. Each Project Type can have multiple Subtypes. The available fields for each Project Type are:

  • Name
  • Code
  • Parent Type
  • Description
  • Can be applied for Projects
  • Can be applied for Tasks

The last two listed options are used to configure the Project Type where to be shown in Projects and/or Tasks. In the tab "Subtypes" can be found all the related Subtypes. Additionally, can be created new directly from there.

 Project Type Form View

The Project Manager group has full access rights to the Project Types, while every user in the system can see them in the projects and tasks.

One possible improvement for the module can be when a certain type is selected in a project, on creation of a related task the same Type to be selected as the default value, with option to be edited if needed. Because from a business perspective, it can be expected that the project's related tasks would have the same Project Type. To provide more flexibility this option can be customizable per Project Type.

The module is maintained by Odoo Community Association (OCA) and the latest available version is 17.0.1.0.0.

Functional Odoo 17 Project
Modules Review

In multi-company mode, there are cases when one field would need to store different values for each company.

An example of such fields are some of the accounting settings per product, such as Income Account and Expense Account.

In order for a field to be able to store different values per company it is required in the field definition to be set the attribute company_dependent​ to True​.

Part of the definition of the standard_price​ field which is another example in Odoo of such a field is shown below:

standard_price = fields.Float(
    string='Cost',
company_dependent=True, )

While from a user perspective, this functionality depends only on one parameter, the technical side of it is a bit more complex. These fields do not store their values in the related model’s table. Instead, they are using the ir.property​ table for that. When the value is set in the field, the backend will try to find an existing ir.property​ record that matches the model’s record, field and company. If there is no one it will create a new record with the following information:

  • name​: The name of the field
  • fields_id​: The ID of the field that holds the value
  • res_id​: The ID of the related model’s record
  • company_id​: The ID of the company
  • value_​: The value will be stored in one of the available value fields, depending on the type of the field. For example, the standard_price​ field's value will be stored in the value_float​ column.

Company-dependent fields are searchable and when a value is requested for them the system queries the ir.property​  table.

The list of all company-dependent values can be found at Settings > Technical > Parameters > Company Properties​, developer mode needs to be activated in order to see the Technical menu.

Odoo 17 Odoo 18 Technical
Posts

In certain business scenarios, it is required to maintain audit logs on actions affecting the data in the system such as create​, read​, update​, and delete​ (CRUD).

Although the native version of Odoo does not support such functionality yet, there is a module maintained by OCA that covers these types of operations.

In this review, we will go through the options that the “Audit Log” module offers.

The latest available version of the module at the moment of writing is 17.0.1.0.0. Once the addon is installed in the system the related sub-menus can be found in the “Technical” menu.

There are five available sub-menus:

  • Rules
  • Logs
  • Log Lines
  • User Sessions
  • HTTPS Requests

Only the content in the first sub-menu, “Rules”, is customizable. While the rest of them are read-only list views that contain the different types of logs. The type of logs that each of them contains is closely related to their names.

For the module to start logging data, it is required to create a rule. Each rule is defined per model, which means that every model in the system will need a separate rule in order to log data. Except for the model name that needs to be selected, a rule has the following additional fields:

  • Name: The name of the rule, for example, if the logging is for sale.order​ model the name can be "Sales Order"
  • Type: Two available options “Full Log” which compares the data before and after the operation and logs both states, in this case, data from computed fields is logged as well, but because of the complexity of the operation, it can be a bit slower. On the other side the second option “Fast Log” logs only the new values for the changes made during the create​ and write​ operations, since this is much simpler it is also faster.
  • Capture Record: If selected, when the record is deleted the full info of the record will be added to the log, otherwise a simple log without any details for the record will be added. This option is possible only if the type “Full Log” is selected.
  • Action: This field is visible in debug mode, but even it is possible to edit it, on “Subscribe” action will be overridden by the “View Logs” action created for the rule.
  • Users to Exclude: Can be specified multiple users that need to be excluded from the logs
  • Fields to Exclude: Can be specified list of fields that need to be excluded from the logs
  • Log Reads: If selected, every time a user sees the model’s data a log will be created, by default is not selected
  • Log Writes: If selected, every time a user updates a record related to the model a log will be created
  • Log Deletes: If selected, when a user deletes a record related to the model a log will be created
  • Log Creates: If selected, when a user creates a new record related to the model a log will be created

The last three options are by default selected on the creation of a new rule.

After creating the rule, the next step is subscribing to it by using the "Subscribe" button. Once that is done, the system will start logging data according to the rule configuration.
The rule is editable only in the “Draft” state so in case if anything needs to be changed needs to be moved back to “Draft” using the “Unsubscribe” button.

Audit Log Rule Form View

From a security perspective, the module has two groups:

  • Auditlog User
  • Auditlog Manager

The first one allows users to see the logs from the record using the action “View Log”, which can be found in the record’s action menu. The users with this group have only read access to the logs.

The “Auditlog Manager” group adds full access rights to the related audit log models, however, a user can have access to the Audit log menus only if they have the “Administration Settings” group.

The logs are by default kept in the system for 6 months, but it is possible to change that in the "Auto-vacuum audit logs” scheduled action that can be found in Settings > Technical > Automation > Scheduled Actions​.

 Audit Log Auto-vacuum

The number 180​​ in the method model.autovacum(180)​​ is number of days that the logs need to be kept, by updating this number the period that the logs are kept in the system will be changed. 
Also, as a second parameter to this method, it is possible to add the number of logs that can be deleted per run, for each of the related models where the logs are stored. This parameter can be helpful in cases when there are too many logs that need to be removed at once. Because of this, Odoo can fail the task and not remove any of them. As a result of that the system can accumulate a large amount of logs, which can increase the size of the database and also slow down the system.
Therefore our recommendation is to ensure that the scheduled action is successfully running and it is set to remove a limited number of logs per run in shorter intervals. Finally should be tested manually if the action is working as expected once the settings are completed.
The "Auto-vacuum audit logs” is not enabled by default, therefore once the module is installed it needs to be enabled.

This module is a great addition to systems that require such functionality. Also, it is regularly maintained by the Odoo Community Association (OCA) which can assure that from a technical perspective is well build module with appropriate quality assurance checks.


Functional
Modules Review