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