Friday, October 17, 2025
12 changes · 18.0
Enhancements to existing features
Delivery order references no longer include the customer reference from the sales order. This prevents the customer reference from appearing twice on delivery slips and keeps order tracking clearer and more reliable when customer references change.
Original PR description
The origin field reliably tracks related orders, but including the customer reference caused issues: - The delivery slip displayed the customer reference twice. - Updating the customer reference in a sale order did not update the origin, making it unreliable for tracking. This change removes the customer reference from the origin, while keeping it structured for related orders. opw-5134111
This update makes automated Chrome shutdown during testing more reliable when rare browser communication errors occur. It helps prevent stuck test builds and leftover browser processes, improving build infrastructure stability without changing user-facing features.
Original PR description
In some instances, Chrome can apparently fail CDTP calls with "Execution context was destroyed". According to the internet this mostly happens because of navigation events, here it's not clear if…
In some instances, Chrome can apparently fail CDTP calls with "Execution context was destroyed". According to the internet this mostly happens because of navigation events, here it's not clear if this is in response to `stop`-ing the page, or a pre-existing navigation directive interfereing with the stop-ing of the browser. I tried reproducing locally under the assumption that the `Page.stopLoading` might be the cause but got nowhere[^1]. This issue seems extremely infrequent, and in most cases is but a minor annoyance, an error appears on the corresponding build, and that's it. However if the error occurs during `ChromeBrowser.stop` then the browser is not terminated, which on runbot prevents the docker image from shutting down properly, and leaves zombie builds. Therefore make `ChromeBrowser.stop` more resilient to errors in the initial section so that we do terminate the browser even if the "graceful CDTP shutdown" fails. While at it, add a fallback to kill the browser if it does not terminate gracefully. https://runbot.odoo.com/odoo/error/233442 [^1]: and the error only happening in 18.0 and later when `Page.stopLoading` was present long before that makes it likely the proximal cause is in the code being run, especially as all the errors sampled from the builds list are related to pos and the failure are immediately preceded by ongoing HTTP requests Forward-Port-Of: odoo/odoo#232060
Resolved issues and error corrections
The project sharing customer preview now follows the same timesheet visibility rules as the actual portal. This prevents non-validated timesheets from appearing in previews when invoicing is limited to validated timesheets, reducing confusion for customers and staff.
Original PR description
Issue: Due to this issue, in the project sharing, the customer preview doesn't reflect the actual behaviour of the portal view. It shows non-validated timesheets even if invoicing policy is validated timesheets only. To reproduce: Cause: Fix: opw-5155281
Administrators can now retry or cancel SMS messages sent automatically by the system without being blocked by an access error. This helps support and operations teams resolve delivery-related SMS issues directly from technical settings when needed.
Original PR description
## Issue: In debug mode, the administrator could not resend or cancel an SMS that was sent by the system (e.g. delivery confirmation) using the `Retry` / `Cancel` button in the Technical Settings An…
## Issue: In debug mode, the administrator could not resend or cancel an SMS that was sent by the system (e.g. delivery confirmation) using the `Retry` / `Cancel` button in the Technical Settings An Access Error was raised ## Cause: When using the `Retry` or `Cancel` button, the method `_update_sms_notifications()` is called and finds `mail.notifications` records to update However, `notifications.write()` triggers an Access Error because only the recipient of a `mail.notification` is allowed to modify it: https://github.com/odoo/odoo/blob/98610ea2a1369b84b10adb8913c5d7725a0fad67/addons/mail/security/mail_security.xml#L184-L192 This happens even when the user has the rights to resend or cancel the SMS ## Steps to reproduce: - Install an app like stock_sms to create blocking entries - Create and confirm a Delivery - Choose Send SMS - Enable developer mode - Search for the technical settings SMS - Retry sending the automatically sent SMS opw-4904157 Forward-Port-Of: odoo/odoo#230733
This fixes how rounding differences are distributed in Mexican electronic invoicing so amounts stay matched to the correct invoice lines or tax factors. It helps prevent small calculation mismatches that could affect generated CFDI documents.
Original PR description
Before this commit, the factors were sorted and the amounts_to_distribute were build according this order. However, almost all calls to this method is zipping target_factors with amounts_to_distribute and both are no longer in the same order.
This fixes an issue where some sales payment validation transactions skipped important follow-up processing. The change preserves the intended prevention of unnecessary emails while ensuring confirmed transactions still complete their standard post-validation steps.
Original PR description
Versions -------- - 18.0+ Issue ----- `super` isn't called on `_post_process` for confirmed validation transactions. Cause ----- A fix that prevented the sending of mail for validation transactions added a `continue` in a loop, which skips over the `super` call in the loop. Solution -------- Instead of `continue`, add an `if` check to see if we want to send mail.
This fix ensures EPC SEPA QR codes use the payment reference in the free communication field instead of the customer reference. This helps payment information match the intended accounting reference and reduces confusion during reconciliation.
Original PR description
The aim of this commit is replacing the usage of customer reference for the free communication in EPC SEPA QR Code for the payment reference. task-5122875 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Swedish localization demo data now uses a properly formatted IBAN for the sample bank journal. This prevents confusion or validation issues when businesses test Swedish accounting workflows with demo data.
Original PR description
This commit replace the wrong `SE0826566594158439377422` IBAN by `SE5850000000014938684140` The actual IBAN of the sweden bank journal demo data is not following the official format, which is: - Country code: 'SE' -> **OK** - Valid checksum digit: '58' -> **OK** - Valid bank code: '5000' -> **KO**, '2656' is not a valid SE bank code - n zeros to fill the IBAN: '0000' -> **KO**, it's missing the zeros - Account number: '14938684140' -> **OK** Linked:https://github.com/odoo/enterprise/pull/95463 task-5107240
The search bar will no longer automatically focus and open the keyboard on tablet devices. This avoids an unnecessary interruption for tablet users while keeping the intended behavior on mobile phones, with a test added to prevent regressions.
Original PR description
This commit fixes the usage of the 'mobile' param in the useAutofocus hook, which incorrectly focused the input on tablets, instead of only enabling it on mobile devices. A test has been added as well to cover this use case. task-5169698
Users dragging an unsupported file into Sign will now see only one warning message instead of a duplicate. This removes confusion when starting from an empty document view while keeping the existing upload behavior unchanged.
Original PR description
Issue: - When no documents exist and a user drags/drops a non-PDF file, the warning pop-up appears twice instead of once. - This happened when there were no documents in the view (when actionhelper is visible). Root Cause: - The `useSignViewButtons` hook was used in both the main view (List/Kanban) and the SignActionHelper component. - When a file was dropped, both components received the bus event and attempted to upload the file independently. - This caused duplicate processing and duplicate warning popups. Solution: - Added condition on bus call to distinguish between components. - Modified the bus event handler to skip processing in SignActionHelper components. - This ensures only the main view component handles file uploads from drag-and-drop. Impact: - Users now see the warning pop-up only once when uploading invalid files - Maintains all existing functionality while fixing the duplicate behavior task-5103284
The Documents dashboard now counts Inbox items based on the designated internal folder rather than an inbox tag. This makes the KPI more accurate and consistent for users, while also making related tests safer with demo data.
Original PR description
After a discussion about what should be considered the inbox folder on earlier versions, it appears that the `kpi.provider:get_kpi_summary` method should return the count of documents in the folder having the external identifier `documents.documents_internal_folder`, instead of selecting the documents with the inbox tag. As some documents might be referenced by foreign keys in demo data, we also avoid to unlink the documents in the tests to avoid potential errors in the test suites. Runbot-build-error-id: [231787](https://runbot.odoo.com/odoo/runbot.build.error/231787) Task-id: [5062431](https://www.odoo.com/odoo/project.task/5062431) Forward-Port-Of: odoo/enterprise#95699
Dynamic placeholders in mailing content now keep their intended inline placement after a mailing becomes read-only, such as once it has been sent. This prevents unwanted line breaks around personalized fields, helping sent emails preserve the layout users designed.
Original PR description
In editable fields, the Web Editor currently adds the data-oe-t-inline attribute to items that are identified as needing to be displayed inline However, this attribute is added by the editor and removed on save. As a result, if the previously-editable field is ever set to readonly (for example: a mailing that is sent no longer allows users to edit its body), then the inline property appears to be lost: an inline dynamic attribute suddenly looks like it's on its own line. Steps to reproduce: - Create a mailing - Add a dynamic attribute in the middle of a line - Send the mailing - You will see a carriage return directly before and after the dynamic attribute Fix: The mass_mailing html field now applies the current inlining logic to readonly HTML. task-4852246 Forward-Port-Of: odoo/odoo#227651