Thursday, January 15, 2026
10 changes · saas-18.2
Resolved issues and error corrections
Product carousel items now use the cleaned product name, so internal product references no longer appear to shoppers in a specific free-text attribute setup. This keeps storefront product displays consistent and avoids exposing back-office reference codes.
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-pr
Forward-Port-Of: odoo/odoo#242791Italian delivery documents are now numbered before the delivery email and PDF are created. This ensures customers receive DDT reports with the correct document number instead of a missing or false value.
Original PR description
When validating a delivery, Odoo did not include the DDT number in the report, as it was generated after rendering the PDF/email. This fix changes the order to generate the DDT number before sending…
When validating a delivery, Odoo did not include the DDT number in the report, as it was generated after rendering the PDF/email. This fix changes the order to generate the DDT number before sending the email. Steps to reproduce: - Create a database with an Italian company and the `l10n_it_stock_ddt` module installed - Turn on `Settings > Inventory > Shipping > Email Confirmation` - Under `Settings > General Settings > Companies > Email Templates` click `Review all Templates` - Edit the `Shipping: Send by Email` template - Under the `Settings` tab, you find the `Dynamic reports` field (which is a `many2many`), add the `DDT report`. - Create a SO, validate it - On the top of the SO, you see the delivery button with one delivery, click it, then validate the delivery. - In the chatter you see the message that was sent, with the `DDT report` PDF attached, with `False` instead of the DDT name. - If you open the report, the title of the PDF is also missing the DDT name. Ticket [link](https://www.odoo.com/odoo/project.task/5364265) opw-5364265 Forward-Port-Of: odoo/odoo#243492
This update fixes a migration issue for companies upgrading from Odoo 16.0 with the Italian localization enabled. It prevents the upgrade from failing when an expected tax-related field is not present, making the migration process more reliable.
Original PR description
Migration from 16.0 fails because l10n_it_exempt_reason column does not exist Forward-Port-Of: odoo/odoo#240862
This fix prevents the editor from adding tab spacing to tables, attachments, banners, and other non-editable content when users select mixed content and press Tab. It keeps indentation limited to editable text-style blocks, reducing unwanted layout changes and stray tab characters.
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 Forward-Port-Of: odoo/odoo#241806
This update resolves an issue where users would encounter access errors when closing the 'Thank You' dialog after signing documents sent from records 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 Forward-Port-Of: odoo/enterprise#100961
This update corrects a technical issue that caused tracebacks when generating the Follow-up Report. It ensures that General (MISC) accounting entries are automatically set to 'no_followup', with an exception for payments originating from Point of Sale (POS) systems. This improves report stability and accuracy.
Original PR description
* Fix traceback when opening the follow-up report and customer statement. * General(MISC) entries should be no_followup by default. Except entries coming from pos should not be excluded from follow-ups.
This update ensures the website's product barcode lookup feature correctly handles products created without a category selection. It aligns with a recent community change that prevents automatic publishing of products when a category isn't specified, improving data consistency and preventing potential issues.
Original PR description
Align barcodelookup website test with the community change where products created from the website are not auto-published when no category is selected. opw:5408903 SEE ALSO: Community PR:https://github.com/odoo/odoo/pull/242779 Forward-Port-Of: odoo/enterprise#103778
This update resolves an issue where URLs were appearing twice in WhatsApp messages due to a formatting error in how the Odoo UI's clickable links were converted to plain text. The fix prevents duplication by excluding footnotes during the conversion process, ensuring URLs are displayed correctly in received messages. This improves user clarity and avoids potential confusion.
Original PR description
Steps to reproduce: 1. Set up whatsapp integration. 2. Send a direct message containing a URL. 3. Observe that the URL appears twice in the message received in whatsapp. Issue: This issue arises within the `_send_message` method, where we are taking the Markup body that we use within the Odoo UI to have a clickable URL, like `<a href="https://example.com">https://example.com</a>`. Then, the html2plaintext function duplicates by adding the footnote for the anchor tag, which "duplicates" the URL since the text within the anchor tag is the same as the URL itself. This results in a message body that contains the URL twice, leading to confusion for the user. Solution: This commit addresses the issue by backporting the solution to this problem introduced in odoo/odoo@a152910 and using the `include_references` parameter of the `html2plaintext` function to exclude footnotes from the conversion. opw-4936400 Forward-Port-Of: odoo/enterprise#101083
Features or functions removed from Odoo
This removes a leftover unused test file reference in the Saudi Arabia e-invoicing module. It is a small internal cleanup that helps keep the codebase tidy and avoids confusion for future maintenance.
Original PR description
In this [commit], the file name `test_account_move` is removed from `__init__.py`, but the file itself is not deleted. This commit cleans up an unused file reference. [commit]: https://github.com/odoo/odoo/commit/06e21763130d8fcefe9bb62a8b6525fd660874b4#diff-fa673cbfe1fe7ca858fc60e30493a49cc060c245a9a5c9f266ad2e92c9594a8fL6 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243530
Documentation and clarification updates
This pull request records an individual's Contributor License Agreement signature. It helps keep contribution records complete and supports legal compliance for accepting community contributions.
Original PR description
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241035