Monday, November 24, 2025
12 changes · 18.0
Enhancements to existing features
The system now logs only the message type and device for printer websocket events, instead of recording the full message payload. This reduces log noise and helps avoid oversized logs caused by large print data, making troubleshooting easier for support teams.
Original PR description
Before this commit, we logged the full websocket messages received at 'debug' level, and the action device at 'info' level. Logging the whole message causes the logs to be flooded with large base64 print data. After this commit, log the message type and device both at 'info' level. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Odoo now includes an additional application information field when sending payment requests to Adyen. This helps ensure the external platform details are transmitted correctly, improving compatibility and reliability of payment processing.
Original PR description
Add applicationInfo to the payload sent to Adyen, ensuring that externalPlatform is correctly transmitted. A test was added to verify that applicationInfo is present in the payload and that the payment request succeeds as expected. task-5157863 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#233075
Resolved issues and error corrections
This change ensures invoice lines created from quotation templates display product details in the same consistent way as regular sales orders. As a result, the product name and description now appear correctly separated in the invoice PDF, improving readability and avoiding confusion.
Original PR description
### Issue: In this issue, when a quotation template is used in sale order, the end line is missing between name and description in the invoice pdf. #### Steps to reproduce: 1- Install a db with sale…
### Issue: In this issue, when a quotation template is used in sale order, the end line is missing between name and description in the invoice pdf. #### Steps to reproduce: 1- Install a db with sale and invoicing installed 2- Create a quotation template, and add a description in the line. 3- Create a quotation with the created template. 4- Confirm the order and create an invoice for the sale order. 5- Print the pdf, as seen the name and description are shown in the same line, while if the sale order was created without a template, we would have seen the description from product in the next line. ### Cause: There is a mismatch between `line.name` when it's from template and when it's from product itself, causing this issue. In the case, the line is not coming from template we have: https://github.com/odoo/odoo/blob/aaad780e897e941a3d5cf9b3a881252907ba266a/addons/sale/models/sale_order_line.py#L405-L416 in which: https://github.com/odoo/odoo/blob/aaad780e897e941a3d5cf9b3a881252907ba266a/addons/sale/models/sale_order_line.py#L432-L435 https://github.com/odoo/odoo/blob/aaad780e897e941a3d5cf9b3a881252907ba266a/addons/product/models/product_product.py#L852-L861 Which means the name will be ```python product_id.display_name + product_id.description_sale + line._get_sale_order_line_multiline_description_variants() ``` While when the quotation is coming from template the name is: ```python template_line.name + line._get_sale_order_line_multiline_description_variants() ``` As `template_line.name` is the template line description, we can add the `product_id.display_name` in `_compute_name` so both logic match. opw-5130171
Miscellaneous changes
Two forward-port commits[^1],[^2] corrupted the POT files of these modules. They both resulted in missing `msgstr` entries causing the `msgmerge` in Weblate to fail. This commit regenerates the POT files to fix the issue. [^1]: https://github.com/odoo/odoo/commit/4e51a4a259bbb36dbbd7f6aa59ba30280f97cd89 [^2]: https://github.com/odoo/odoo/commit/f3286d792e17746d2330b5e06d5c5c8e01c52928
Original PR description
Two forward-port commits[^1],[^2] corrupted the POT files of these modules. They both resulted in missing `msgstr` entries causing the `msgmerge` in Weblate to fail. This commit regenerates the POT files to fix the issue. [^1]: https://github.com/odoo/odoo/commit/4e51a4a259bbb36dbbd7f6aa59ba30280f97cd89 [^2]: https://github.com/odoo/odoo/commit/f3286d792e17746d2330b5e06d5c5c8e01c52928
This update prevents a traceback when updating the analytic distribution of a locked manufacturing order that uses multiple analytic plans. It helps users avoid unexpected errors during accounting updates and keeps the workflow stable.
Original PR description
This commit only forward-ports the test ## Original issue: Updating the analytic distribution of a locked MO with multiple analytic plans raised an error, because `_create_analytic_entry()` only supports a single ID per key The issue was originally fixed in commit: https://github.com/odoo/enterprise/commit/c2648d6ff4a2f3e5234ff80a7f0ff77b2dbf4812 opw-4835165 Forward-Port-Of: odoo/enterprise#94101
The portal chatter rating widget now scrolls normally instead of staying fixed at the top and covering other elements. This makes the message area cleaner and easier to use when customers scroll through portal conversations.
Original PR description
Before this PR, the rating widget in the portal chatter overlapped other elements when scrolling because it was positioned as sticky at the top of the screen. This PR fixes the layout by adjusting the widget’s positioning, ensuring that only the composer remains sticky while the rating widget scrolls normally. Before: https://github.com/user-attachments/assets/4ad2eb34-0773-4812-ad74-cdb49f0bafa0 After: https://github.com/user-attachments/assets/f2e9df3e-7305-4582-b1e5-f7ec9fafea94 task-[5138987](https://www.odoo.com/odoo/project/1519/tasks/5138987)
This update corrects when editor hints and action buttons appear in empty paragraphs. It now hides them when a tab is present, and shows them properly when a paragraph only contains formatting marks like bold or italic tags, improving the editing experience and reducing confusion.
Original PR description
Description of the issue this PR addresses: - Hint and power buttons are incorrectly shown or hidden in empty blocks when the block contains a Tab or only empty formatting tags (`<strong>, <em>, <u>, <s>`). Current behavior before PR: - Pressing Tab in an empty block leaves the hint and buttons visible. - Empty paragraphs containing only formatting tags do not show the hint and buttons. Desired behavior after PR is merged: - Hint and power buttons are not shown when a block contains a Tab. - Hint and power buttons are correctly visible when a block contains only empty formatting tags. task-5062294 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixed an issue where placeholder text was not appearing in the Related Company field on contact forms. This improves clarity for users entering new contacts by showing the expected guidance text in the field.
Original PR description
**Issue:** Fields using the res_partner_many2one widget with a placeholder do not display the placeholder text. **Steps to reproduce:** 1. Install `contacts` module 2. Go to Contacts 3. Create new 'Individual' contact 4. Notice just below the name, Related Company field placeholder is not visible. **Cause:** Props are not passed correctly in PartnerAutoComplete component **Solution:** Use the correct prop reference (props.placeholder) when passing the placeholder to the PartnerAutoComplete component, ensuring it is properly rendered. opw-5153125 Forward-Port-Of: odoo/odoo#231445
Composite reports now correctly pass selected filter settings down to their sections, so the filter appears and works as expected in the user interface. This brings these reports in line with the standard behavior used by other report filters and avoids confusing inconsistencies for users.
Original PR description
When using a composite report whose sections aren't used independently, enabling that filter on the composite report needs to enable it on their sections as well, else it won't show in the UI. This is the standard behavior for all report filters. Forward-Port-Of: odoo/enterprise#100148
The color picker now correctly shows custom colors that were already used on the page, including for background colors. This restores the expected behavior and makes it easier for users to keep styling consistent when editing pages.
Original PR description
Before this commit, the colorpalette for the background color would not display custom colors already on the page. The issue appeared in 17.0 and worked in 16.0 before the conversion of wysiwyg to owl. github.com/https://github.com/odoo/odoo/pull/118966 The "getEditableCustomColors" method was not forwarded and therefore we used the default function, returning nothing. Steps to reproduce the issue: - Add a snippet - Set the background / font color of the snippet to a custom color - Add another snippet - Open the colorpicker for the text color (The colorpicker have access to the custom color set above) - Open the colorpicker for the background color (The colorpicker does not have access to the custom color set above) task-3806989 Forward-Port-Of: odoo/odoo#180335
The EC Sales List report menu is now enabled automatically for several EU country localizations instead of requiring manual activation. This reduces setup effort and helps businesses access the correct reporting options right away.
Original PR description
In this PR: - Added XML records to set the EC Sales List report menu item as active for some EU countries that previously required manual activation. Task-4885725
This update resolves an error that occurred when the system automatically cleaned up data related to withhold taxes. The issue stemmed from a technical limitation with how transient models were linked, preventing proper cleanup. The fix ensures data is correctly removed during the auto-vacuum process.
Original PR description
Currently an error occurs when auto-vacuum tries to clean up Withhold wizard which is a transient model but fails because it is still linked with Withhold lines wizard. **Steps to replicate:** *…
Currently an error occurs when auto-vacuum tries to clean up Withhold wizard which is a transient model but fails because it is still linked with Withhold lines wizard. **Steps to replicate:** * Install `l10n_ec_edi` and change company to `EC company` * Create invoice with customer `EC Company` > Set Payment Method (SRI) > Confirm * Add Withhold > Document number: `001-001-123456789` > Add lines > Create & Post * Set system time to future date > Run `Base: Auto-vacuum internal data`. Refer video [1] for replication steps. **Error:** `psycopg2.errors.ForeignKeyViolation:update or delete on table 'l10n_ec_wizard_account_withhold' violates foreign key constraint 'l10n_ec_wizard_account_withhold_line_wizard_id_fkey' on table 'l10n_ec_wizard_account_withhold_line' ` **Root cause:** * The error happens because Withhold Wizard [2] is a transient model that gets cleaned up by function [3] after reaching its max hours. * However, since [2] is linked to Withhold Wizard Lines [4], the cleanup fails, causing the error. **Solution:** * Unlink the lines first and then unlink the wizard. [1]: https://drive.google.com/file/d/1HethT8tpa3Ez0uwueUuKzW4F7KxEKOv_/view?usp=sharing [2]: https://github.com/odoo/enterprise/blob/2275fe560d5db0b5a21ffbc4d4c66264e4e12601/l10n_ec_edi/wizard/l10n_ec_wizard_account_withhold.py#L20 [3]: https://github.com/odoo/odoo/blob/e062c9b5773ed0710503c13627e60f8233fcd0a5/odoo/models.py#L7465-L7497 [4]: https://github.com/odoo/enterprise/blob/7ca0635d4c479a956bfae8fb60da8b50362fd99b/l10n_ec_edi/wizard/l10n_ec_wizard_account_withhold.py#L423-L427 sentry-6253783256