Daily updates from Odoo
Navigate
Branch
Wednesday, February 26, 2025
26 changes
Security fixes and vulnerability patches
HMRC submission XML is now generated from fixed application files instead of editable database templates. This reduces the risk of users accidentally or deliberately changing the format of data sent to HMRC, improving compliance and security for UK tax reporting.
Original PR description
The new method use rendering a template from file and not from Database anymore. So with this the user cannot change the template to be rendered to HMRC.
Enhancements to existing features
This update adjusts how project task filters are optimized behind the scenes. It helps keep searches and filtering reliable and efficient as the underlying Odoo system evolves, without changing day-to-day workflows for users.
Original PR description
Adapt usages of `Domain._optimize`. task-3864512 odoo/odoo#190922
This update adapts several Odoo Enterprise areas to work with a safer read-only system environment. It helps reduce accidental data changes in background operations and keeps accounting, inventory, signing, documents, payroll, localization, website, and helpdesk flows compatible with the core platform change.
Original PR description
odoo/odoo#188584 task-4201974
The sales order preview in the customer portal now hides the taxes column when AvaTax is active. This avoids showing tax details that are calculated through AvaTax, making portal previews clearer and less confusing for customers.
Original PR description
Adding a visibility condition for Avatax not being enabled to the taxes column in portal view of sales orders. task: 4423974
The IoT app now includes a button in its header to help users install the Windows IoT Box more easily. This reduces friction during setup and makes the installation option more visible to users managing IoT devices.
Original PR description
A button has been added in the IoT App header to ease installation of Windows IoT Box. Task: 4578271
This update keeps the rental sales app aligned with a related change in sales order routing. It updates internal tests so the system continues to validate rental sale behavior correctly after the route field structure changed.
Original PR description
To adapt for the changes in odoo/odoo#166512, the tests that use the old field `route_id` on `sale.order.line` (now `route_ids`) are modified accordingly. Task-3563242
Resolved issues and error corrections
Resource-based appointments will no longer automatically assign an organizer, preventing calendar sync problems where Microsoft requires the organizer to be part of the event. Notifications still come from an appropriate responsible user, and video call options are hidden for resource appointments to avoid unwanted calendar spam.
Original PR description
It does not make sense for resource appointments to have an organizer this causes issues with microsoft_sync as it requires the organizer to be a partner of the event for syncing purposes. Instead we don't set an organizer for resources, but we add a responsible getter so we can keep notifying users as a relevant regular user instead of odoobot task-4146850
This fix corrects how purchase orders are updated when the approvals integration is active. It avoids unnecessary database work and helps prevent incorrect updates behind the scenes, improving reliability without changing the user workflow.
Original PR description
The `write` method for `purchase.order` was not correctly overridden in `approvals_purchase`. This commit fixes it so as to avoid unnecessary db queries (i.e. `search` calls) and incorrect reassignment of the values of the `self` recordset. Also does a small improvement of using a defaultdict instead of manually recreating its logic for a normal dict. follow-up to: odoo/enterprise#71294 odoo/enterprise#79559
Features or functions removed from Odoo
The Belgian CODA banking module no longer keeps an unused note field on bank statements. This simplifies the underlying setup without changing any visible screens or day-to-day workflows.
Original PR description
This commit will remove the field coda_note on bank statement since the field is not even put in a view. task-4519041
Code cleanup and technical improvements
This update refactors and cleans internal code for India reporting features, including GST returns, asset handling, and related configuration flows. It is intended to improve maintainability and reliability without introducing major visible changes for business users.
Original PR description
Technical improvement and cleaning up some stuffs :broom:
This update removes an outdated internal testing flag and adjusts related automated tests and safeguards across several Odoo Enterprise apps. It helps keep the platform aligned with newer core behavior while reducing maintenance complexity, with no expected day-to-day impact for business users.
Original PR description
odoo/odoo#186884 task-4270485
Miscellaneous changes
### Steps to reproduce: - Create a project with 'Timesheets' option deactivated - Create a task with a planned start date and end date - Check the task in the gantt view, notice the allocated hours - Change the start or end date of the task - Notice allocated hours didn't change ### Current behavior before PR: This is happening because we are supposed to only compute the allocated hours when the task is getting created and after this we don't re-calculate it but the user can edit i
Original PR description
### Steps to reproduce: - Create a project with 'Timesheets' option deactivated - Create a task with a planned start date and end date - Check the task in the gantt view, notice the allocated hours -…
### Steps to reproduce: - Create a project with 'Timesheets' option deactivated - Create a task with a planned start date and end date - Check the task in the gantt view, notice the allocated hours - Change the start or end date of the task - Notice allocated hours didn't change ### Current behavior before PR: This is happening because we are supposed to only compute the allocated hours when the task is getting created and after this we don't re-calculate it but the user can edit it manually but if the 'Timesheets' option is false the allocated hours won't be shown in any form to be edited so only if the 'Timesheets' option is deactivated for the project we should re-compute the allocated hours ### Desired behavior after PR is merged: Add another condition where if the project allows timesheets we don't re-compute the allocated hours field if it doesn't allow timesheets we re-compute it. opw-4192775 Forward-Port-Of: odoo/enterprise#80047 Forward-Port-Of: odoo/enterprise#71681
**To replicate:** 1. Install a localization reports module (e.g. l10n_lu_reports) 2. Create two branches for the company in the localization: one with a different VAT, and another without VAT (it takes the same VAT as the closest parent with VAT) 3. In Accounting > Reporting > Tax Report 4. Select only the company with a different VAT. The button to export an XML is not enabled. 5. Select the parent company and the company without VAT. The button to export an XML is not enabled. **Issue:
Original PR description
**To replicate:** 1. Install a localization reports module (e.g. l10n_lu_reports) 2. Create two branches for the company in the localization: one with a different VAT, and another without VAT (it…
**To replicate:** 1. Install a localization reports module (e.g. l10n_lu_reports) 2. Create two branches for the company in the localization: one with a different VAT, and another without VAT (it takes the same VAT as the closest parent with VAT) 3. In Accounting > Reporting > Tax Report 4. Select only the company with a different VAT. The button to export an XML is not enabled. 5. Select the parent company and the company without VAT. The button to export an XML is not enabled. **Issue:** In some Tax Reports and EC Sales Reports with branch companies, the additional buttons are not enabled properly, even when all companies with the same VAT are selected. **Expected behavior:** If all branches with the same VAT are selected, export buttons should be available. **Cause of the problem:** In the tax report handler and EC sales report handler, `_custom_options_initializer()` calls the function `_enable_export_buttons_for_common_vat_groups_in_branches()`, which should enable the buttons if branches with the same VAT are selected. When extending `_custom_options_initializer()`, the call to super happens before extra buttons are added. These additional buttons are not included in the call to `_enable_export_buttons_for_common_vat_groups_in_branches()`. **Fix:** Instead of calling the function in _custom_options_initializer, add an option key to check and enable export buttons. This check is now done in `get_options()`, using the same logic previously applied in `_enable_export_buttons_for_common_vat_groups_in_branches`. As `get_options()` is called after the custom options initializer, all buttons are enabled if all branches with the same VAT are selected. task-4061157 Forward-Port-Of: odoo/enterprise#79227
Before this commit, the runbot would fail with Script Timeout when executing the `shared_sign_request_tour` tour. The main problem was the title of the modal being changed from "All done!" to "It's signed!" without updating the tour itself. The secondary problem was the limitation added in the tour of clicking a button inside a modal: this one is not allowed anymore. After this commit, we removed the 'Download button' trigger in the tour as it is not allowed anymore and updated the string
Original PR description
Before this commit, the runbot would fail with Script Timeout when executing the `shared_sign_request_tour` tour. The main problem was the title of the modal being changed from "All done!" to "It's signed!" without updating the tour itself. The secondary problem was the limitation added in the tour of clicking a button inside a modal: this one is not allowed anymore. After this commit, we removed the 'Download button' trigger in the tour as it is not allowed anymore and updated the string for the correct modal title in the tour, from "All done!" to "It's signed!". runbot-98514 Forward-Port-Of: odoo/enterprise#80070
Before this commit, the `shared_sign_request_tour` tour was failing in the clipboard check because the step just before clicked the toggle making it hidden, which was not necessary as it is already shared. After the commit, we no longer click the toggle to share the request as it already opens as shared. Additionally, we propagate the download button restriction from odoo/enterprise#80070. runbot-116600 Forward-Port-Of: odoo/enterprise#80146
Original PR description
Before this commit, the `shared_sign_request_tour` tour was failing in the clipboard check because the step just before clicked the toggle making it hidden, which was not necessary as it is already shared. After the commit, we no longer click the toggle to share the request as it already opens as shared. Additionally, we propagate the download button restriction from odoo/enterprise#80070. runbot-116600 Forward-Port-Of: odoo/enterprise#80146
The kanban has been reworked with https://github.com/odoo/odoo/pull/167751 and odoo/enterprise@23426182d92198cf977d7eecbfb3d47117d80c59 Before this commit when a field is empty (the record has no value for a field) in the kanban editor -- new version -- that field had no size and was virtually invisible. This was because one little line of code was missing to enable the feature of applying a placeholder in the empty field to make it visible. opw-4526492 Forward-Port-Of: odoo/enterprise
Original PR description
The kanban has been reworked with https://github.com/odoo/odoo/pull/167751 and odoo/enterprise@23426182d92198cf977d7eecbfb3d47117d80c59 Before this commit when a field is empty (the record has no value for a field) in the kanban editor -- new version -- that field had no size and was virtually invisible. This was because one little line of code was missing to enable the feature of applying a placeholder in the empty field to make it visible. opw-4526492 Forward-Port-Of: odoo/enterprise#80127 Forward-Port-Of: odoo/enterprise#79812
…emplate context if mail_notification_light is customized Steps to reproduce : ---- - customize mail_notification_light template with a field from record (with Studio or with inherited template) - confirm a Hr Appraisal or send a Hr Appraisal Survey Error before this commit : ---- - RPC error odoo.addons.base.models.ir_qweb.QWebException: Error while render the template KeyError: 'record' Template: mail.mail_notification_light Explanation : ---- We add the record in the template
Original PR description
…emplate context if mail_notification_light is customized Steps to reproduce : ---- - customize mail_notification_light template with a field from record (with Studio or with inherited template) - confirm a Hr Appraisal or send a Hr Appraisal Survey Error before this commit : ---- - RPC error odoo.addons.base.models.ir_qweb.QWebException: Error while render the template KeyError: 'record' Template: mail.mail_notification_light Explanation : ---- We add the record in the template context, therefore any field from the record can be called Forward-Port-Of: odoo/enterprise#74943
Since https://github.com/odoo/odoo/pull/191784 expression is depreciated in favor to Domain. This commit update the calls. Unfortunately, the new mechanism is not backward compatible and it does not work with aliases. As a result, we also have to remove all aliases to so and am. Forward-Port-Of: odoo/enterprise#80043
Original PR description
Since https://github.com/odoo/odoo/pull/191784 expression is depreciated in favor to Domain. This commit update the calls. Unfortunately, the new mechanism is not backward compatible and it does not work with aliases. As a result, we also have to remove all aliases to so and am. Forward-Port-Of: odoo/enterprise#80043
Couldn't: - read measurements from scales, - validate, skip, pass or fail quality checks with a footswitch. Tasks: 4432802 Forward-Port-Of: odoo/enterprise#79990 Forward-Port-Of: odoo/enterprise#76341
Original PR description
Couldn't: - read measurements from scales, - validate, skip, pass or fail quality checks with a footswitch. Tasks: 4432802 Forward-Port-Of: odoo/enterprise#79990 Forward-Port-Of: odoo/enterprise#76341
In the expense app, a button enables to refund an expense directly in the payslip. This button is however not visible for payroll manager, while the action behind is. This commit solves the issue. task-4570975 Forward-Port-Of: odoo/enterprise#80132 Forward-Port-Of: odoo/enterprise#79570
Original PR description
In the expense app, a button enables to refund an expense directly in the payslip. This button is however not visible for payroll manager, while the action behind is. This commit solves the issue. task-4570975 Forward-Port-Of: odoo/enterprise#80132 Forward-Port-Of: odoo/enterprise#79570
This commit updates the behavior of focusDate to ensure that scrolling stops when the start of the group containing the date is visible on the left side of the grid, rather than centering the focused date within the grid. Pressing the 'Today' button now follows the same logic but focuses on the current date instead of the group. Part of task-4571228 Forward-Port-Of: odoo/enterprise#80055
Original PR description
This commit updates the behavior of focusDate to ensure that scrolling stops when the start of the group containing the date is visible on the left side of the grid, rather than centering the focused date within the grid. Pressing the 'Today' button now follows the same logic but focuses on the current date instead of the group. Part of task-4571228 Forward-Port-Of: odoo/enterprise#80055
Forward-Port-Of: odoo/enterprise#80120
Original PR description
Forward-Port-Of: odoo/enterprise#80120
This commit is the counterpart to moving session_service to the backend folder instead of the core folder. Forward-Port-Of: odoo/enterprise#79948
Original PR description
This commit is the counterpart to moving session_service to the backend folder instead of the core folder. Forward-Port-Of: odoo/enterprise#79948
Due to input cell overflow, a stopgap solution was to always display demand and replenish cells on 2 lines when actual and forecasted/replenish were both activated. This is considered sub-optimal and this fix was made. When the view is loaded or reloaded due to manual changes, the DOM is updated depending on if overflow is detected in input cells. task 4420441 Forward-Port-Of: odoo/enterprise#73494
Original PR description
Due to input cell overflow, a stopgap solution was to always display demand and replenish cells on 2 lines when actual and forecasted/replenish were both activated. This is considered sub-optimal and this fix was made. When the view is loaded or reloaded due to manual changes, the DOM is updated depending on if overflow is detected in input cells. task 4420441 Forward-Port-Of: odoo/enterprise#73494
When we change the chart type/change the chart doamin from the side panel, there would be an error message `the model (odoo.model) of this chart is not valid`. Which was wrong, the model was valid but the data source was simply not loaded yet. This commit instead shows a loading spinner when the data source is loading. Task: [4564072](https://www.odoo.com/web#id=4564072&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#80029
Original PR description
When we change the chart type/change the chart doamin from the side panel, there would be an error message `the model (odoo.model) of this chart is not valid`. Which was wrong, the model was valid but the data source was simply not loaded yet. This commit instead shows a loading spinner when the data source is loading. Task: [4564072](https://www.odoo.com/web#id=4564072&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#80029 Forward-Port-Of: odoo/enterprise#79044
See community PR Steps to reproduce: - change your language to French (or any language which doesn't the week on Sundays) - insert a pivot into a spreadsheet - insert the dynamic version with =PIVOT(1) - change the row groups to "Day of week" - right click on any pivot value and "See records" => the day of week displayed in spreadsheet doesn't match the records. Task: 4591993 Forward-Port-Of: odoo/enterprise#80129 Forward-Port-Of: odoo/enterprise#79950
Original PR description
See community PR Steps to reproduce: - change your language to French (or any language which doesn't the week on Sundays) - insert a pivot into a spreadsheet - insert the dynamic version with =PIVOT(1) - change the row groups to "Day of week" - right click on any pivot value and "See records" => the day of week displayed in spreadsheet doesn't match the records. Task: 4591993 Forward-Port-Of: odoo/enterprise#80129 Forward-Port-Of: odoo/enterprise#79950