Tuesday, October 21, 2025
17 changes · 18.0
Enhancements to existing features
This update lets account report expressions be copied along with account reports. It makes duplicating and adapting financial reports easier, reducing manual setup work and helping maintain consistency.
Original PR description
This commit is a backport of [this commit](https://github.com/odoo/odoo/commit/9c0baadc4bb58a75d17ef6963a5acd5cf6c34036) initially targetting saas-18.1 which enables the copy of account report expressions. --- task-4728887 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
All Finnish tax report lines now have assigned codes. This helps export templates consistently identify each line, reducing the risk of missing or mismatched data in tax report exports.
Original PR description
The aim of this commit is adding code for all the tax report lines. Before, some lines didn't have any code set on it, now all these lines have a code. The change is motivated by the tax report export where we use the code as key in the dict given to the export template. task-5135868 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
This update makes the Latin American check payment search view point explicitly to the correct internal view. It reduces the chance of configuration conflicts when other modules contain similarly named views, helping ensure consistent behavior.
Original PR description
Description of the Issue/Feature this PR Addresses: To eliminate the risk of XML ID collisions. Using an unqualified external ID in a ref attribute can cause Odoo to load a view from an unintended module if the XML IDs are duplicated. Current Behavior Before PR: The search view uses an unqualified XML ID in the ref attribute, which relies on global resolution and can resolve to the wrong view. Desired Behavior After PR is Merged: The ref attribute uses the fully qualified external ID `l10n_latam_check.view_account_payment_search.` This ensures deterministic view loading by explicitly linking the reference to the correct view within the l10n_latam_check module. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Code cleanup and technical improvements
This update applies automated code cleanup to the VoIP area without changing customer-facing features. It helps keep the calling interface easier to maintain and reduces the risk of future issues.
Documentation and clarification updates
The corporate contributor agreement documentation for ForgeFlow was updated. This keeps Odoo's legal contribution records current and supports continued collaboration with the partner.
Original PR description
PR: https://github.com/odoo/enterprise/pull/97338
This update fixes and improves Odoo's internal Hoot testing tools and related web test infrastructure. It helps developers identify failed tests and server errors more clearly, reducing the risk of undetected issues while keeping changes limited to the testing ecosystem.
Original PR description
## Pull Request HOOT 38 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Odoo now recognizes Shopee orders that have been delivered but are still waiting for the buyer to confirm receipt. This prevents those delivery orders from being incorrectly shown as errors, giving teams a more accurate view of fulfillment status.
Original PR description
When the delivery order is delivered but not yet confirmed by the buyer, an error state is set in the delivery order. 'TO_CONFIRM_RECEIVE' should be included in the delivery status. It refers that the package is delivered but not confirmed by the buyer. It should not be regarded as an error state in Odoo. task_id: 4965896
The test framework now detects processes that are still running after a test finishes and logs them during server shutdown. This helps prevent automated test runs from hanging and improves reliability for release validation.
Original PR description
In some case a process could remain aive at the end of a tests In addition to possible race condition, this can also cause a program to remain stuck at the end of the tests. This commit proposes to - catch all remaining processes at the end of a base case. - log a message if a process is found at the shutdown of the server. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231942
A small internal adjustment was made to the Restaurant Point of Sale area to make a related enterprise change easier and safer to apply. This does not change day-to-day user behavior, but helps ensure the linked update can target the right screen element reliably.
Original PR description
In this commit: - We are adding a class to use XPath on the element in the related PR. related PR: - https://github.com/odoo/enterprise/pull/82282 task-4657597
Email loop checks now count only actual email messages, preventing users from being blocked because of unrelated internal messages. This helps ensure legitimate incoming emails continue to be processed unless they truly exceed the loop threshold.
Original PR description
When detecting loops with _detect_loop_sender if the count of these messages exceeds the LOOP_THRESHOLD, the next email from that user is blocked, even if the number of new emails alone hasn't yet crossed the threshold due to mail messages that are not email triggering the loop detection. This happens because it searches for messages in the mail.message model that share the same model name and author irrespective of the message type. To correct this, the function's search criteria must be modified to explicitly filter for messages where the message_type is set to 'email'. opw-5122962
Fixed an issue where mandatory matrix questions in surveys could crash if their description included a table. Surveys now correctly identify the matrix answer data, allowing users to complete these questions without errors.
Original PR description
A conflict occurs if a matrix question is set to "Mandatory answer" (questionRequired = True) and a table is also added to its description. The issue is that when the system evaluates a required matrix, it gets the subQuestionsIds by looking for the first table within the question's wrapper. If a table exists in the description, the system incorrectly tries to retrieve the IDs from that table. This action throws a traceback because the descriptive table does not contain any sub-question data. This commit fixes the issue by being more specific when looking for the table containing the subQuestionsIds. It adds a specific class to this table and uses it in the selector. An attribute selector, like 'table[data-sub-questions]', could also have been used as an alternative. opw-4931881 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#229909
SEPA Direct Debit mandate emails for sending and expiration now respect each customer's preferred language. This avoids English-only messages and improves communication clarity for international customers.
Original PR description
Sepa Direct Debit mandate: Sending and expiration emails were sent in English regardless of the customers' language. opw-4876792
This update adjusts an internal web interface test so it remains valid after a small browser behavior change in Chrome 140. There is no expected impact on users; it helps maintain reliable quality checks for the resizable panel feature.
Original PR description
In Chrome 140, a fix [^0] has been applied regarding the `offsetParent` property with a fixed position element. Due to this fix, a resizable panel's test failed by 1px. As this difference doesn't have a real functional impact, we adapted the test to accept both the pre/post fix values. Note: that it is also related to a clarification [^1] in the CSS spec [^2]. [^0]: https://chromium-review.googlesource.com/c/chromium/src/+/6774502 [^1]: https://github.com/w3c/csswg-drafts/issues/12352 [^2]: https://drafts.csswg.org/cssom-view/#dom-htmlelement-offsetparent
Form validation errors now show only one dialog even if users switch browser tabs repeatedly. This avoids confusing stacks of repeated error messages and keeps the form experience clearer.
Original PR description
On a form view, when there is a validation error and the user switches browser tabs multiple times, the dialog with the validation error keep popping multiple times causing the page to have multiple dialogs on top of one another. This commit solves this issue by preventing the form controller from creating multiple dialogs in case of a save error. task-5180610 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents errors when setting up quality points in manufacturing environments that do not use work orders. It ensures operation-specific checks only run when the relevant work order functionality is installed, improving reliability for affected configurations.
Original PR description
**Issue:** The attribute operation_id for quality.point is defined in the mrp_workorder module. However, quality_mrp module does not list mrp_workorder in its dependencies. As a result in a system where quality_mrp is installed but mrp_workorder is not, the following error is raised when evaluating the constrain for quality points mesured on Operations. `"'quality.point' object has no attribute 'operation_id'"` **Proposed solution:** Override the constraint in quality_mrp_workorder to include conditions related to operation_id, ensuring that it is only evaluated when the field is available.
This fix ensures that when a customer is selected after an online payment line is added in Point of Sale, the customer information is correctly saved once the payment is completed. This helps keep POS orders accurate and avoids missing customer details on paid transactions.
Original PR description
Before this commit, if a partner was selected after adding an online payment line, the partner was not synced after completing the online payment. opw-5098127 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The donation form now waits until currency information is ready before processing a donation click. This prevents rare crashes on slow connections and reduces accidental double submissions by showing a loading state while the form is preparing.
Original PR description
This fixes a very rare race condition in the `test_01_donation` tour... but it is actually surprising it is not more frequent than it is. Steps to reproduce: - Simulate a slow network (e.g. using Chrome DevTools) - Load a page with a donation snippet - Quickly fill in the donation form and click the submit button => You'll sometimes get a crash. Or a more precise one: - Add a 1 minute delay to the `/website/get_current_currency` route - Load a page with a donation snippet - Fill in the donation form and click the submit button once the page is fully loaded. => You'll definitely get a crash. This commit makes that button's handler async-protected, meaning it will now properly wait for what is needed (the currency) before proceeding, but it will also display a loading effect for the duration and prevent double clicking. Once the form is submitted, the loading effect is removed for stability safety. In master it can probably be improved. runbot-220885