Tuesday, January 13, 2026
17 changes · 18.0
Enhancements to existing features
This update incorporates the latest Brazilian tax NCM (National Commerce) code requirements. The changes include appending 'DEPRECATED' to expiring codes and adding new codes to ensure accurate tax reporting for Brazilian businesses using Odoo Enterprise. This ensures compliance with current regulations.
Original PR description
This **PR** updates the NCM code list as per latest requirement. It appends `DEPRECATED` at the end of expires codes. Also it introduces a few new codes. **task**-5381617 Forward-Port-Of: odoo/enterprise#102009
This update adds two missing Unit of Measure (UoM) types – Minute (MIN) and Kilowatt hour (KWH) – required by UNECE Recommendation No. 20 for Peppol electronic invoices. Currently, Odoo defaulted to a generic 'Units' code, but this change ensures proper compliance with invoicing standards and supports localization modules that need these specific UoMs.
Original PR description
**Issue:** 2 UoM that is in the UNECE Recommendation No.20 for Peppol don't exist in Odoo: - MIN: Minute - KWH: Kilowatt hour Even if they are created manually, they are not used in the UBL/CII electronic invoices. Instead, the default code (i.e. "C62" for "Units" is used). Some localization modules create the "Kilowatt hour" UoM as they need it. (l10n_cl and l10n_tr_nilvera) So it's better to have a "generic" one available for every module. opw-5269119 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238342
Resolved issues and error corrections
Shopee has updated the API paths they use, which previously were used for testing within our Odoo Enterprise system. This update requires a change to our testing environment to ensure accurate and reliable results. This fix ensures our testing remains aligned with Shopee's current API standards.
Original PR description
Shopee has changed the API path and the original testing API paths are no longer valid.
This update ensures the 'Update Prices' button is only displayed when a pricelist is properly configured in the sales order. Previously, the button was incorrectly shown even without a pricelist, leading to potential pricing errors. This change improves data accuracy and simplifies the sales order process for users.
Original PR description
**Steps to produce:** - Install the `Sales` module. - Enable `Pricelists` in settings and set the `default quotation template`. - Create a new Sales Order. **Issue:** - The `Update Prices` button is…
**Steps to produce:** - Install the `Sales` module. - Enable `Pricelists` in settings and set the `default quotation template`. - Create a new Sales Order. **Issue:** - The `Update Prices` button is visible even when no pricelist is set on the sales order. **Root cause:** - In the onchange logic (see [1]), show_update_pricelist is set to True based solely on the presence of order lines, without checking whether a pricelist is defined. **Solution**: - Update the condition so that button is shown only when sale order line is present and the current pricelist value is not the previous one. [1]: https://github.com/odoo/odoo/blob/849ec71acbaea0061fd4b13888a486e4aebb6463/addons/sale/models/sale_order.py#L801-L803 Before: <img width="1215" height="466" alt="image" src="https://github.com/user-attachments/assets/f29b1ccf-eec8-4114-b4c9-a8083947ad28" /> After: <img width="1207" height="428" alt="image" src="https://github.com/user-attachments/assets/e358b633-d11b-413d-94c4-3837c430eac4" /> opw-5414897 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241812
This update ensures that the rating card feature only appears in portal chatter when a module specifically requests it. Previously, rating cards were displayed even when not intended, impacting user experience. This change improves consistency and avoids unnecessary visual elements.
Original PR description
*: test_mail_full Modules using portal rating can set an `data-display_rating` attribute when calling the portal chatter template to indicate whether they want the rating feature displayed. Currently, only two modules have this attribute set to true: ecommerce and elearning. For other modules that don't set this attribute, even if there is a rating, such as when rating a ticket in the helpdesk module, we don't want the rating card feature to be shown in portal chatter. This change ensures that the feature is only available if the module requests it. task-5347848
This update fixes a potential issue with how Odoo tours mock the Clipboard API, particularly in headless environments like Chrome. By delaying cleanup steps, the system now ensures the API call is fully processed before attempting to mock it, preventing delays or errors. This resolves compatibility issues with recent Chrome versions.
Original PR description
Reliably mocking Clipboard API calls in tours should be done in two steps: - the step that will actually do the call should do the patching, followed by the actual action. - the cleanup should only be done in the following step to ensure the action's listener has actually finished. This commit applies this principle to avoid the "cleanup" to be executed before the action's listener has actually reached the call to the Clipboard API (because of slower processing, slower network...), which would defeat the mocking purpose (and either get the browser to indefinitely wait for the user's clipboard usage approval or a permission error depending on the browser's default behavior). Note: this was mainly brought to light by the new Chrome 143+ default policy which revoke all permissions in headless mode. Forward-Port-Of: odoo/odoo#243280
This update fixes a potential issue with Odoo tours that use the Clipboard API. By ensuring the mocking happens before the API call, the system now correctly handles browser permissions and avoids delays or errors, particularly with recent Chrome updates. This improves the reliability of tours in headless environments.
Original PR description
Reliably mocking Clipboard API calls in tours should be done in two steps: - the step that will actually do the call should do the patching, followed by the actual action. - the cleanup should only be done in the following step to ensure the action's listener has actually finished. This commit applies this principle to avoid the "cleanup" to be executed before the action's listener has actually reached the call to the Clipboard API (because of slower processing, slower network...), which would defeat the mocking purpose (and either get the browser to indefinitely wait for the user's clipboard usage approval or a permission error depending on the browser's default behavior). Note: this was mainly brought to light by the new Chrome 143+ default policy which revoke all permissions in headless mode. Forward-Port-Of: odoo/enterprise#103971
This update resolves a validation error in Odoo Studio that occurred when users tried to add help tooltips to fields in the Contacts list view. The fix adds a necessary attribute to the field definition, allowing for proper customization and preventing the validation error. This ensures Odoo Studio users can configure helpful guidance for their data entries.
Original PR description
Steps to reproduce ================== - Install web_studio,contacts - Go to Contacts - Open the list view - Click on a field - Set a "Help tooltip" => Validation Error Invalid view Odoo Studio: res.partner.tree customization Cause of the issue ================== The help attribute is missing from the field definition opw-5379357 Forward-Port-Of: odoo/odoo#240261
This update resolves a bug in the website event booth registration tour that caused it to fail. The fix makes the tour more intuitive, mirroring the manual process and improving the user experience. It also streamlines the code for better readability and maintainability.
Original PR description
In this commit, we fix the tour webooth_exhibitor_register It stucks when click on OpenWood Demonstrator 2 because the trigger is not relevant. A user should never be able to click on an invisible input. So in tour, it's the same. Instead of click on div and then invisible input, click on label as you do when you run tour by hand. I'm taking advantage of this commit to remove trivial :enabled on button (implicit) and to change programmatic **run** to declarative **run** to use Hoot event and make them more readable.
This update resolves an issue where users would encounter access errors when closing the 'Thank You' dialog after signing a document from a record they couldn't access. The system now verifies read access to the related record before redirecting, ensuring a smoother sign-off experience for all users.
Original PR description
Version: - 18.0 Steps to reproduce: - Send a signature request to an internal user from a record that the signer cannot access. - The user signs the document and then tries to close the Thank You dialog. Before: - When a user signs a document sent from a record they don’t have access to, closing the "Thank You" dialog triggers an access error. - This happens because the system tries to open the related record after signing, but the signer does not have permission to view that record. After: - Now the system first checks if the signer has read access to the related record before redirecting. Impact: - Users will not see an access error message after signing a document. task-5353126
This update resolves an issue where the HTML editor incorrectly inserted tabs into various content blocks, causing formatting problems. The fix now ensures tabs are only applied to contenteditable paragraph elements, improving the editor's accuracy and user experience when working with mixed content types.
Original PR description
#### Description of the issue this PR addresses: - Tab indentation was applied to non-paragraph and non-contenteditable blocks, leading to incorrect indentation behavior when a selection contained mixed block types. #### Desired behavior after PR is merged: - Filter selected blocks to indent only contenteditable paragraph-related elements (h1–h6, p, pre, blockquote, and div.o-paragraph), while excluding blocks marked as contenteditable="false". #### Steps to Reproduce: - Open a new to-do record. - Insert: Table, Table of Content, Banners, attachment, (18.2 - Toggle List) - Select all editor content using Ctrl + A. - Press the Tab key multiple times. => Multiple editor tab characters are inserted at unintended positions. task-5452410 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where employee names were being incorrectly formatted in payroll reports. The system now correctly assigns first and last names based on the employee's input data, ensuring accurate reporting for Swiss payroll compliance. Updated test data reflects this corrected naming convention.
Original PR description
* Fix _compute_l10n_ch_legal_name method to correctly assign first_name and last_name from employee name (was previously reversed) * Update all SwissDEC test data to use correct "FirstName LastName" format instead of "LastName FirstName" to match the corrected computation logic task-5102851 Forward-Port-Of: odoo/enterprise#95252
This update corrects small errors in the calculations and formatting of the 2026 balance sheet and profit & loss reports for Danish accounting. These changes, identified as a development oversight, ensure the accuracy of financial reporting within the Odoo Enterprise system. No new functionality was added.
Original PR description
In this commit: https://github.com/odoo/enterprise/commit/0d431fe2cc6556a040888ecc5d6a71be4a435447 we introduce a new balance sheet report for 2026 but there was a mistake in the sign of a formula and in the text of a line. Same for the profit and loss, some errors in sign of accounts and naming. The errors don't come from a ticket but more of a logical fix, those errors were probably an oversight during development. no task id Forward-Port-Of: odoo/enterprise#103830
This update fixes an issue where placeholder hint text wrapped awkwardly on the HTML editor when space was limited. Now, the text is correctly truncated instead of wrapping, ensuring a cleaner and more professional appearance across different screen sizes. This improves the overall user experience.
Original PR description
Description of the issue this PR addresses: - The placeholder hint text wraps onto multiple lines when the cell width is reduced. - When there is insufficient horizontal space, the text should be truncated rather than wrapped. task-5480080 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a bug that caused incorrect display behavior for group chat channels (DMs with fewer than 3 members). Previously, the system incorrectly identified these channels, leading to misleading status indicators and notification issues. This fix ensures accurate channel representation and a better user experience.
Original PR description
Before this commit, the "correspondent" property of Thread would be computed for channels of type group (group DMs) having less than 3 members. This would lead to various confusing behaviours, including: 1. The "back on" banner being shown. 2. The chat bubble showing an IM status. 3. The notification item not showing the message author's name. This commit fixes the issues by not computing `correspondent` for channels of type group. task-5462395
This update corrects an issue where product references were appearing in the names of products displayed on the website's product carousel. This change ensures that product names are clean and consistent, improving the user experience for customers browsing products online. The fix was triggered by a specific configuration with a single value in a free text attribute.
Original PR description
**Issue**
When a product has a free text attribute with one value, the product reference appears in the name of the product on the product carousel.
**Expected behavior**
The product reference should not appear in the name of the product on the product carousel.
**Steps to reproduce**
1. Create a product to be sold online
2. Give it an internal reference
3. Add a free text attribute with one value
4. Set a product carousel on a website page
5. Disable "show variants" in the settings of the carousel
=> The product reference appears in the name of the product
**Note**
The issue happened only if the free text attribute has only one value, with more than one value, the product reference did not appear.
**Fix**
Updated the QWeb template to use the prepared clean title with data.get('display_name') instead of record.display_name
opw-5410822
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update removes unnecessary integer rounding from the monthly Italian VAT reports. The rounding, which was incorrectly applied due to a previous split of reporting functionality, has been corrected. This ensures accurate VAT calculations for monthly reporting, aligning with Italian tax regulations.
Original PR description
Integer rounding is only required on annual l10n_it VAT reports. It appears that it was incorrectly added to the monthly report when the two were split in [#193662](https://github.com/odoo/odoo/pull/193662). [opw-5292310](https://www.odoo.com/odoo/project.task/project.task/5292310)