Thursday, April 2, 2026
10 changes · saas-18.2
Resolved issues and error corrections
This update resolves an issue where the default email template body wasn't loading correctly in the full composer view within the chatter. Previously, only the subject line was shown, leaving the body blank. The fix ensures the default template body is populated when the full composer is opened without user input, improving email communication functionality.
Original PR description
**Issue:** - When opening the full composer from the chatter, the body of the default email template is not loaded. Only the subject line from the template appears, while the body remains empty or…
**Issue:** - When opening the full composer from the chatter, the body of the default email template is not loaded. Only the subject line from the template appears, while the body remains empty or contains only the user's signature. **Steps to reproduce:** 1. Install `contact` 2. Open any contact form. 3. In the chatter, click 'Send message' and then expand button 4. Write a something in body, then save this as a new template. 5. Set this new template as the default (using Debug Mode > Set Default Values). 6. Click 'Send message' in the chatter, 7. Click the 'Full composer' (expand) button without typing anything. **Observed behavior:** - The full composer opens with the correct subject from the default template, but the body is empty. **Cause:** - The `onClickFullComposer` method always passes a `default_body` value in the context to the mail.compose.message wizard. Even if the chatter input is empty **Solution:** - Forward isBodyEmpty in the context from onClickFullComposer. If the user typed content, do nothing. If the body is empty and a default template is available, allow the backend to apply the default template by removing default_body. opw-5405056 Forward-Port-Of: odoo/odoo#239851
This update resolves a bug in the demo mode for branch companies using the Peppol integration. Previously, attempting to disconnect resulted in an error due to a missing button and subsequent safeguard blocking. Now, the demo mode functions correctly without requiring external calls, ensuring a smoother user experience.
Original PR description
V18.0 -> V18.4 When a branch company registers in demo mode, then tries to disconnect, the button that handles the disconnection was not added to the demo behavior so a real call was attempted, which was blocked by another safe guard resulting in an error, idealy in demo mode everything should work without having to make any external calls task-none Forward-Port-Of: odoo/odoo#257085
This update resolves an issue where the color selector in the HTML editor toolbar was behaving inconsistently. The toolbar is a popover, making it susceptible to these types of unpredictable behavior. This change ensures the color selector test is reliable and provides a more stable user experience.
Original PR description
The toolbar is a popover and is therefore affected by [1]. runbot-242071 [1] 54da715 Forward-Port-Of: odoo/odoo#256783
This update fixes an issue where boolean settings linked to configuration parameters were incorrectly interpreted as 'False' in the system. The change ensures that string values like "False" are correctly parsed as boolean values ('False') when setting configuration options, preventing unexpected behavior and ensuring accurate settings are displayed. This improves the reliability of configuration settings.
Original PR description
When a boolean field on `res.config.setting` tied to `ir.config_parameter` via `config_param` attribute, the value is incorrectly parse as param store `False` as `"False"` and later being shown as `True` on the setting form. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#257033
This update resolves an issue where users would receive an access error when creating private tasks. The fix ensures that a user is automatically added as a task follower upon creation, granting them necessary access rights. This prevents the error that occurred when a task was initially created without a project or assigned users.
Original PR description
When users would follow the following step as they are makeing a private task, they would be hit by an incorrect access error. Steps to reproduce: 1.Open the form view to create a new task. 2.Clear…
When users would follow the following step as they are makeing a private task, they would be hit by an incorrect access error. Steps to reproduce: 1.Open the form view to create a new task. 2.Clear the Project field. When empty, it should display the Private placeholder. 3.Ensure no user is assigned to the task. 4.Create the private task. 5.An access rights error occurs, stating that the user does not have permission to create the record. ⚠️ Note: This access rights error only occurs when the task is created directly as private. If a task is created normally and then its project_id and user_ids are removed afterward, no access rights error occurs. Root cause: When a task is created without a project_id and without assigned users, Odoo checks access rights on creation. Since no project members or assigned users exist, no user has access to the record, including the creator. This results in an access rights error during creation. This issue does not occur when modifying an existing task because, after creation, the creator is automatically added as a follower. As a follower, the creator retains access to the task even if it has no project and no assigned users. Fix (implemented): Tasks that have no assigned users and are not linked to any project (private tasks) did not make sense, as they were effectively assigned to nothing. To address this, we now require at least one user to be assigned to a task when it is not attached to a project. This change was made inside of the "project_task_view.xml" file in the "view_task_form_2" record Versions : 17.0 -> master Task [5403926](https://www.odoo.com/odoo/project/4105/tasks/5403926) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242216
This update corrects a bug that prevented the correct display of amounts in words for Czech users within Odoo. A temporary workaround was implemented to ensure the feature works correctly. This will be automatically resolved when Odoo is upgraded to use the latest version of the `num2words` library.
Original PR description
The `num2words` library has a bug in the language code they used for Czech (`cz` instead of `cs`). This commit adds a monkey patch to map the correct language code to the existing converter class, allowing the amount in words to work in Czech. The issue was fixed in version 0.5.14 of the library, so this patch can be removed once we use Ubuntu >= 25.10 (Python >= 3.13), that contains the fixed version of the library. [opw-6088697](https://www.odoo.com/odoo/project.task/6088697) Forward-Port-Of: odoo/odoo#257105 Forward-Port-Of: odoo/odoo#257031
This update corrects a broken view within the l10n_cl (Chilean accounting) module. The fix prevents issues during upgrades, particularly rolling releases, that could cause errors and require manual database checks. This ensures smoother operation for users of the Chilean accounting features.
Original PR description
There is a broken xpath in l10n_cl.report_invoice_document When the l10n_cl module is installed, it results in the faulty view being applied to v18 and later versions. This is particularly annoying because some rolling releases fail because a view with invalid locator is found. The view won't be disabled after a rolling release upgrade and many developers will be spared from checking the databases manually. Forward-Port-Of: odoo/odoo#253588
This update resolves a technical issue causing excessive memory usage in the account reports module. The fix ensures that report preloading stops when the component is destroyed, preventing a memory buildup that could impact performance. This improves the stability and responsiveness of the account reporting feature.
Original PR description
The preloading of sections would never stop, this is an issue since this would prevent the garbage collector from collecting this big class and all it's objects. We fix this by making sure to stop the reploading when the component is destroyed. It's important to do it this way rather than clearing the timeout as the destruction could happened when the report is loading so the timeout would be unset and a new one would be started. Forward-Port-Of: odoo/enterprise#112662 Forward-Port-Of: odoo/enterprise#112628
This update resolves an issue where the 'Move to Work Center' dialog would sometimes fail with an error. The fix allows the dialog to function correctly regardless of how it's opened – either by fetching work centers or using pre-loaded data. This ensures a smoother experience for users managing work orders.
Original PR description
**Steps to reproduce:** * Install the *Manufacturing (`mrp`)* module. * Enable *developer (debug) mode*. * Open the *Shop Floor* interface. * Select work center as `Assembly 1` * In the bottom-right…
**Steps to reproduce:**
* Install the *Manufacturing (`mrp`)* module.
* Enable *developer (debug) mode*.
* Open the *Shop Floor* interface.
* Select work center as `Assembly 1`
* In the bottom-right corner, click the *gear icon*.
* Select **Move to Work Center** from the *gear icon*.
**Observed behavior:**
* A traceback occurs when opening the *Move to Work Center* dialog.
* The following Owl error is raised:
`OwlError: Invalid props for component 'MrpWorkcenterDialog': 'loadWorkcenters' is missing (should be a function)
Error: Invalid props for component 'MrpWorkcenterDialog': 'loadWorkcenters' is missing (should be a function)`
**Cause:**
* `MrpWorkcenterDialog` is opened in *two different ways*:
https://github.com/odoo/enterprise/blob/7805022e77ff80a74563b7ff0032d8975c00b709/mrp_workorder/static/src/mrp_display/mrp_display.js#L469-L480
* One caller opens the dialog and provides `loadWorkcenters`.
In this flow, the dialog fetches work centers by calling this
function.
https://github.com/odoo/enterprise/blob/7805022e77ff80a74563b7ff0032d8975c00b709/mrp_workorder/static/src/mrp_display/dialog/mrp_menu_dialog.js#L68-L76
* Another caller opens the dialog and directly provides a
`workcenters` list. In this flow, the dialog already has the data
and does not need `loadWorkcenters`.
* Therefore, the real behavior is that `loadWorkcenters` is only
required *sometimes*, not always.
* However, the component props defined it as mandatory:
`loadWorkcenters: { type: Function }`
* In *debug mode*, Owl strictly validates component props by comparing
what the component declares in `static props` with what the caller
provides. When the dialog is opened without `loadWorkcenters`, Owl
detects that a required prop is missing and raises an
*Invalid props* error.
**Fix:**
* Mark `loadWorkcenters` as *optional* in the component props so the
dialog works correctly in both supported flows:
* Lazy loading of work centers via `loadWorkcenters`.
* Using preloaded `workcenters` data.
---
opw-6010261
Forward-Port-Of: odoo/enterprise#110361This update removes a confusing purple button pill that appeared on mobile devices when using Web Studio's approval features. This change improves the user experience for mobile users, preventing them from accidentally clicking on the pill instead of the intended action button. It's a simple fix to enhance usability.
Original PR description
Steps: - Install `web_studio` - Add an approval rule to any action in any form view (example preview button) - Open this form view - You will have a purple info pill in every action button in the form view This can be confusing for people wanting to click on the button on mobile but instead, they click on the purple pill + we don't even want this opw-5911667 Forward-Port-Of: odoo/enterprise#111770