Daily updates from Odoo
Friday, February 20, 2026
28 changes · master
New functionality added to Odoo
This update introduces sample data for the industry_fsm module, specifically focusing on allocated hours and timesheets. This new data will populate the tasks analysis reports, providing a better starting point for understanding project timelines and resource allocation. It's a helpful addition for initial demonstrations and testing.
Original PR description
This commit adds some demo data to the industry_fsm with a focus on adding allocated hours and timesheets in order to populate the tasks analysis. taskid:3514457
This update allows employees to correct inaccurate personal information within the system. Following changes in version 18.0, personal details are now managed through the 'My Preferences' menu. This commit adds two new fields to this menu, ensuring employees can maintain accurate records.
Original PR description
In versions after 18.0, the Personal Info tab on the employee form has been removed for public user, and only a limited set of details is now available under the My Preferences menu. While this keeps the interface minimal, employees should still be able to review and update certain personal details if they are incorrect. This commit adds two payroll-related fields to My Preferences. Related community PR: https://github.com/odoo/odoo/pull/248428 task: 5920455
Enhancements to existing features
This update enhances the way AI responses are displayed in our chat interface, focusing on readability and a more polished look. Key changes include formatting AI messages for better clarity, adding code highlighting, and streamlining the chat window layout for a more intuitive user experience.
Original PR description
Format AI messages so they more efficiently utilize the space given to them + they look better. Task-5164382
This update streamlines the way helpdesk emails are handled by redirecting users to the relevant ticket record. By updating access actions, this change ensures a smoother and more accurate user experience within the helpdesk system. It addresses a previous issue related to ticket routing.
Original PR description
Purpose ======= Use `_redirect_to_record` from the mail controller (that internally uses `_get_access_action`), and update the access actions for the models used in the mail plugins. Task-5473802
This update optimizes the storage of spreadsheet and dashboard documents within Odoo, reducing their file size without sacrificing readability. A new feature allows for easy debugging by downloading both compressed and uncompressed versions, and a verification menu checks the compression process. Currently, the uncompressed version remains stored in the database.
Original PR description
Changing the storage of spreadsheet/dashboards and all other odoo spreadsheet documents to a more compressed version, while staying human readable-ish. Add a way to download the non compressed version of the spreadsheet as well as the compressed version, for debugging purposes. Add an menu to vefity the compression: it will load the spreadsheet multiple times and provide feedback if the compression doesn't work. For now we only store the uncompressed version in the database (like before) Task: 5489478
This update enhances the Gantt chart by allowing users to open a form dialog directly when they double-click on a task cell. This simplifies the process of creating or editing related records, streamlining workflow and improving user efficiency within the Gantt chart view.
This update improves the sales order process by now allowing users to select rental products when adding items outside of the rental app. Previously, this was restricted, creating an inconsistent experience and limiting a common business use case – selling products with rental options. This change enhances usability and flexibility.
Original PR description
When you select a product to add to the sales order outside the rental app, you can't select a product with a rental periodicity set. This is incosistent with the fact that you can sales and subscriptions products from sales, subscriptions, or rental app. It is also not very obvious that setting a rental periodicity will have this behaviour, and it is a valid usecase that you would be selling a product that you also offer for rent. For all these reasons, it is better to show rental products when selecting a product outside the rental app in the sale order. task-5887963
This update optimizes the storage of spreadsheet documents within Odoo, reducing their file size without sacrificing readability. A new feature allows for easy debugging by providing access to both compressed and uncompressed versions of the files. This change improves performance and storage efficiency.
Original PR description
Changing the storage of spreadsheet/dashboards and all other odoo spreadsheet documents to a more compressed version, while staying human readable-ish. Add a way to download the non compressed version of the spreadsheet as well as the compressed version, for debugging purposes. Add an menu to vefity the compression: it will load the spreadsheet multiple times and provide feedback if the compression doesn't work. For now we only store the uncompressed version in the database (like before) Task: 5489478
This update enhances the user experience when viewing VoIP call durations. Call durations are now displayed in a more easily understandable format (e.g., minutes and seconds) within call history and VoIP views. The live in-call timer remains in its current digital format for accurate timing.
Original PR description
Switch call duration displays to a human-readable format in VoIP views and recent history, while keeping the live in-call timer in digital format. task-5951753
Resolved issues and error corrections
This update resolves an issue where editing a value in a report would cause calculation errors. The fix ensures that report data is correctly processed when external values are modified, improving report accuracy and reliability. This impacts report generation and data consistency.
Original PR description
// Bug The following flow failed: 1) Create a report with 3 lines: - Line 1: using the "domain" engine - Line 2: using the "external" engine, with subformula="editable" - Line 3: an aggregation…
// Bug
The following flow failed:
1) Create a report with 3 lines:
- Line 1: using the "domain" engine
- Line 2: using the "external" engine, with subformula="editable"
- Line 3: an aggregation summing lines 1 and 2
2) Open the report, and edit the amount in line 2
===> Error message, stating Line 1 cannot be evaluated while evaluating Line 3's formula.
// Cause of the issue
When editing a manual value, to avoid recomputing the whole report uselessly, the client sends the column_groups_totals that were computed to render report back to the server. When modifying the external value, that data structure is used to get the results of all other expressions, and reevaluate the aggregations that depend on the modified external value. json is used to send the column_group_totals.
json conversion always forces the keys to be strings. In the past, this was no problem, since the column_group_totals' keys were column group keys, which were also strings server-side. However, https://github.com/odoo/enterprise/commit/ec3581cd759d8c4e03db9e08f6f95546e5724e1f now makes those key indices of a list, hence integers. So, when column_group_totals were sent from the client, they basically were ignored, since none of their keys matched any column group index, causing the bug.This update corrects a bug in the Indian payroll configuration, specifically preventing automatic payslip creation when new employees are generated. It also adjusts the default basic salary percentage to 50%, ensuring benefit updates only affect gross salary and employer costs, maintaining the employee's wage and payroll structure.
Original PR description
- Prevent automatic payslip creation when an employee is generated from an offer. - Fix the default Indian basic salary percentage to 50% instead of 60%. - Ensure benefit amounts are treated as additional employer payments and do not rebalance the employee’s wage or basic salary in the salary configurator. After this change, benefit updates only impact gross salary and employer cost, while the wage remain unchanged. task-[5501683](https://www.odoo.com/odoo/project/1251/tasks/5501683)
This update resolves an issue causing tour failures related to inconsistent state updates within the stock barcode module. The changes streamline tour execution, improve performance, and address a concurrency error, ensuring smoother and more reliable barcode scanning workflows. This enhances the user experience for inventory management.
Original PR description
Removes the `undeterministicTour_doNotCopy` from `stock_barcode` tours and fixes them to avoid the undeterministic error. This commit makes also minor changes like: - Removing useless `timeout`; - Using the new URL action path instead of old long action URL; - Creating records in batch when possible; - Renaming some tours to use the same name than the related python test; - Removing records created in specific test to use the records created in the setup instead. This PR also fixes a race condition which happened in `stock_barcode_mrp` `MainComponent` `saveFormView` .
This update fixes a bug in the Belgian payroll system that was causing incorrect calculations for meal vouchers and private car benefits on payslips. By assigning the correct work entry type, the system now accurately reflects these benefits, ensuring accurate reporting and compliance.
Original PR description
In this commit, we fixed the data of the existing Belgian structure types by setting the right work entry type as default_work_entry_type_id. Belgian's structure types should have the correct attendance work entry type to consider the meal vouchers and the private car in the benefits and payslip lines Before this change, the belgian payslips will have quantity 0 for meal vouchers and private car. After this change, the belgian payslips will have the correct quantity for both meal vouchers and private car. task-5946425
This update resolves an issue impacting the MRP Gantt view, specifically by reverting to a reliable view and introducing a new Work Center calendar. It also enhances the display of work orders and allows users to manage blocked workorders more effectively, improving overall planning efficiency.
Original PR description
- Use the old 'workcenter' gantt view rather than the 'production' (and remove it) - Create a new Work Center calendar - Add variant name in workorder display name - Add the falsy label to employee_assigned_ids (for Gantt view mainly) - Restore the possibility of not planning the 'blocked by' workorders - Reload after Plan in Gantt view task: 5946267
This update optimizes the recurring invoice process, resulting in faster performance and more reliable invoice generation. By streamlining data access and improving matching algorithms, the system now handles subscriptions more efficiently, reducing potential errors and improving overall user experience.
Original PR description
Before this commit, the recurring invoice process did extra searches, duplicated context handling, and used slower filtering logic. The parent line detection also rebuilt comparisons each time, which could lead to wrong matches or slow performance. After this commit, grouped subscriptions are merged more cleanly, context is applied once, closed orders are tracked with a set, and invoice lines are grouped by order for faster access. Parent line lookup now uses a precomputed map for quicker and safer matching. taskid-5265275
This update fixes a technical issue that previously caused errors when closing a Point of Sale (POS) session if the partner's address (street or postal code) was missing. Now, the system gracefully handles these empty address fields, ensuring a smoother POS session closure and preventing disruptions to order processing. This improves the reliability of the German POS certification process.
Original PR description
Before this commit, if a POS order was created with a partner that had an empty street or postal code, the system would raise an error when closing the POS session. opw-5897334 Forward-Port-Of: odoo/enterprise#106300
This update fixes a discrepancy in accounting calculations within the Point of Sale (POS) module for the Mexican tax reporting (l10n_mx_edi_pos) functionality. Previously, the POS was not correctly processing assets, leading to inaccurate amounts compared to calculations performed in Python. This change ensures consistent and accurate financial reporting.
Original PR description
Before this commit, the needed assets were not correctly loaded in the POS, which caused the amounts to be different from the ones computed in python. opw-5935191 Forward-Port-Of: odoo/enterprise#107657
This update addresses a potential issue where global invoices sent from the POS in Mexico could fail to send correctly, leading to duplicate documents being submitted to the SAT portal. Increasing the timeout for communication with the SW sapien system helps ensure these invoices are reliably processed, preventing errors and maintaining compliance. This resolves a reported problem impacting invoice accuracy.
Original PR description
**Fix:** Increase the read timeout for POST requests to SW sapien PAC. It may prevent timeout issue when sending a global invoice from the POS with a lot of POS orders that could lead to duplicated documents on the SAT portal when retrying to send the global invoice again. opw-5347962 Forward-Port-Of: odoo/enterprise#107735
This update removes an unnecessary step in the HR payroll process, streamlining operations and improving performance. Additionally, the commit addresses minor formatting issues identified by a code quality tool, ensuring consistent and maintainable code. This change focuses on internal efficiency within the HR payroll module.
Original PR description
Before this commit, a useless call to `generate_work_entries` was made since the result needs to be assigned to a variable in order to be used. This commit also fixes the 2 ruff formatting warnings in the file (useless import + ambiguous variable name)
This update resolves a bug where the minimum wage warning wasn't displayed correctly for employees without assigned jobs in the Belgian payroll system. The fix removed a redundant condition within the payroll calculation, ensuring the warning appears as expected when a low salary is set for employees lacking a job assignment. This ensures accurate payroll reporting for Belgian companies.
Original PR description
Steps to reproduce: - Open an employee on the Employees app for a Belgian company - On the payroll tab, set the salary to lower than the minimum wage for an employee that has no job - The warning will not show unless the employee has a job set to him Cause of the bug: - Condition inside _compute_l10n_be_is_below_scale function returned false if an employee had no job Fix done: - Removed unneccessary condition task-5424012
This update adjusts how accents are handled in CFDI documents for Mexico, aligning with SAT regulations. Previously, all accents were removed, which was incorrect. Now, users can individually exempt partner records from accent sanitization, ensuring accurate data submission to the tax authority.
Original PR description
An improvement in September (PR #95207) began removing accents from legal names in CFDI documents, since we assume most customers did not include accents in their legal names. However, this change…
An improvement in September (PR #95207) began removing accents from legal names in CFDI documents, since we assume most customers did not include accents in their legal names. However, this change prevented all accents (save `ñ` and `Ñ`) from being sent to the SAT. The SAT does allow accents in legal names. Please refer to [Anexo 20 Guía de llenado de los comprobantes fiscales digitales por Internet](http://omawww.sat.gob.mx/tramitesyservicios/Paginas/documentos/Anexo_20_Guia_de_llenado_CFDI.pdf), pg 17 for an example. Because of this, several PRs have been merged to prevent individual accents from being sanitized (PRs #96043, #106557, and #107859). This fix aims to remove these individual exemptions. Instead, individual `res.partner` records can be exempted from accent sanitization entirely through the field `l10n_mx_edi_sanitize_name`. This commit also adds a server action (visible in debug mode) to mass-exempt `res.partner` records from accent sanitization. [opw-5915515](https://www.odoo.com/odoo/project.task/5915515)
This update ensures Odoo's payroll system fully complies with Belgian ONSS (Organisatie voor Sociale Verzekeringen) regulations. It includes improvements to carbon emission calculations, ATN (BIK) car taxes, and employee data tracking, ultimately improving accuracy and adherence to local tax laws.
This update resolves an issue where test runs were repeatedly generating unnecessary assets, slowing down the testing process. By adding a specific asset bundle to the test generation list, we've eliminated this redundancy and significantly improved test performance. This change ensures tests run more efficiently and reliably.
Original PR description
During tests runs, lazy loaded assets are generated on the fly, and eventually multiple hundred of times (i.e. +/- 150 times on runbot). This commit adds the `web_studio.studio_assets` bundle to the pregeneration list to avoid regenerating during tests runs. Forward-Port-Of: odoo/enterprise#107147
This update clarifies the visibility of specific fields within the Belgian payroll and fleet modules. Previously, generic fields were consolidated across all countries, but this change restores the original design, keeping all BE-specific fiscal logic within the Belgian module. This ensures accurate reporting and compliance for our Belgian clients.
Original PR description
This branch only hides BE-specific fields in l10n_be_hr_payroll_fleet (they remain defined/used there and are invisible for non‑BE companies). On master (19.3) those generic fields (can_be_requested, default_car_value) were refactored into hr_payroll_fleet so payroll+fleet consumers across all countries can use them; BE fiscal logic stays in l10n_be_hr_payroll_fleet task-5906656 Forward-Port-Of: odoo/enterprise#107620 Forward-Port-Of: odoo/enterprise#106456
This update fixes a technical issue in the account return process where incorrect check codes were being processed. The fix ensures that only the intended checks are executed, preventing potential errors and maintaining accurate reporting. While previously shielded by a safeguard, this change reinforces the system's reliability.
Original PR description
the check codes to ignore was wrongly defined, leading to contain records instead of 'code', plus having the exact opposite of what it was supposed to contains, i.e. codes that aren't supposed to be run at the current state of the return. However, it didn't have any impact functionally because it was "protected" by the function _should_run_checks(), which might disapear in the future. Forward-Port-Of: odoo/enterprise#107158
Features or functions removed from Odoo
This update removes compatibility with an older version of the PyPDF2 library. This change ensures Odoo Enterprise utilizes the latest, more secure PDF handling capabilities. It primarily affects internal processes related to document generation and management within Odoo.
Code cleanup and technical improvements
This update refactors how WhatsApp interactions are managed within Odoo Enterprise. Previously, WhatsApp targeted business partners; now, it focuses on individual users, leading to more accurate and personalized communication. This change enhances the user experience and improves the reliability of WhatsApp integrations.
Original PR description
Enterprise counter-part. task-5946430 https://github.com/odoo/odoo/pull/249095
This update standardizes the names of key resources used within Odoo's HTML editor interface. The changes, driven by a community contribution, improve consistency and simplify future maintenance. This ensures a more robust and manageable codebase for the editor functionality.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/236109 \*: `accountant_knowledge`, `ai`, `ai_website_livechat`, `knowledge`, `web_studio`, `website_sale_renting`. This adapts resources to the name and definition changes made in the Community PR for this task. task-5207637