Wednesday, September 3, 2025
17 changes · 18.0
Enhancements to existing features
This update makes automated tests for Mail and Live Chat more stable by using clearer page markers instead of visual styling details. It reduces the chance of false test failures when the interface design changes, helping teams validate releases with more confidence.
Original PR description
This commit updates the test selectors to use data-as-tab-id to avoid ambiguity. This change enhances the robustness of the tests by reducing their dependency on CSS classes. Using data-as-tab-id attributes provides a more stable and reliable way to select elements in the DOM for testing purposes. backport - https://github.com/odoo/odoo/pull/224974 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Attachment uploads in Mail now use a smarter method to identify file types. This helps the system recognize uploaded files more accurately, improving reliability when users share attachments.
Original PR description
Before this PR, the route `/mail/attachment/upload` did not set any mimetype, which lets _compute_mimetype handle it. This PR makes use of `_from_request_file` since it's smarter to determine the mimetype. task-5060707
The Peppol demo bill shown when fetching incoming bills in demo mode has been replaced with a clearer, more representative example. This helps users better understand what to expect from incoming Peppol bills during demonstrations or testing.
Original PR description
Replace Peppol demo bill that you get when fetching incoming bills in demo peppol mode. Forward-Port-Of: odoo/odoo#225086
This change adds a new preparation step in the Point of Sale payment flow before an order is sent to the backend. It helps localization teams apply required country-specific adjustments more reliably at the right moment, reducing custom workarounds.
Original PR description
Hi guys, I hope you could help us with this very simple PR which targets `point_of_sale` module. After implementing PoS localization module for Serbia and working with other teams on implementing countless more, we found that the `point_of_sale` module is missing a good place to perform just in time transformation/operation on the current order before syncing it with the backend. People are managing to implement it in different ways with more or less success in covering some of the flows, but in our humble opinion we have found maybe the best point and it's a simple hook on the payment screen which should be called before the order sync is invoked. Enterprise Support Ticket: 5057437 Cheers, Petar --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
The Discuss welcome screen now uses a shared application setting instead of temporary screen state to decide when it appears. This prevents inconsistent display behavior caused by page or component loading order, giving users a more predictable experience.
Original PR description
Before this commit, whether to display the welcome view was based on a component state, so it was dependent on the lifecycle of components This commit changes the condition so that it relies on the store which should prevent inconsistent state. https://runbot.odoo.com/odoo/error/111051
This update speeds up Odoo's internal test loading by avoiding an unnecessary tag check unless it is explicitly needed. It also helps prevent failures in environments where source files are not available, improving reliability for development and release validation.
Original PR description
`get_method_additional_tags` can be slow when there are a lot of test to load while the feature is only needed in rare cases. This commit removes the check if the corresponding tag is not in the config test-tags. This should also solve an issue when the sources are not available. Forward-Port-Of: odoo/odoo#225109 Forward-Port-Of: odoo/odoo#225061
When a user is archived, their activities are now found and removed even if they belong to a company that is not currently selected. This prevents old user activities from lingering and keeps activity lists accurate in multi-company setups.
Original PR description
**Steps to reproduce:**
- Set up one user with a new company
- With this user :
- Create sale order
- Create activity on the new sale order
- Go back to the admin user
- Disable the new company in the top right menu
- Archive the user
- Activities of the user are still present
**Issue:**
In `activities_to_delete = self.env['mail.activity'].search([('user_id', 'in', self.ids)])`, the access rights of the records used in the activities are checked, which means that the sale order domains are applied. If the given domain doesn't match (for example `('company_id', 'in', company_ids)` when the company_id is manually disabled), the search can miss the activity to unlink.
**Fix:**
Added `.sudo()` to ensure all of the user's activities of any company
are considered, overwriting the current company context.
opw-4716031
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#206813This update fixes an internal test issue so standalone tests correctly verify the expected time-handling mode. It helps keep Odoo's automated quality checks accurate and reduces the risk of unnoticed test gaps.
Original PR description
Standalone tests don't enter faketime mode. Forward-Port-Of: odoo/odoo#224077
Guided tours now wait for the screen update to finish after an action, such as opening a menu, before moving to the next step. This prevents tours from jumping backward or failing when page content changes quickly, making onboarding and automated guidance more stable.
Original PR description
Step to reproduce: - Create a tour - Add a step that click on a menuitem on the systray with a view already opened - Then add a step that click on the search bar of the view Before this commit, if the step of a tour was triggering an action (e.g.: a menuitem) and that the next step's trigger was finding an element on the view before the action has finished to update the view, then the tour was backwarding because the found element diseppeared when the new action loaded the new view. Now, the tour interactive wait that the action manager finish to update the view to be sure the get the right element for the step trigger. ISSUE: https://github.com/odoo/odoo/issues/214652 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Creating a debit note now keeps the chatter history clear by avoiding duplicate log messages. Users will see only the relevant debit note creation message, reducing confusion when reviewing accounting records.
Original PR description
* PROBLEM: install account_debit_note module, add a debit note -> check the log at chatter we will see 2 message, one is 'This entry has been duplicated from ...' and another is 'This debit note was created from..' * Fix by only keep one message log in that case * This continue work of https://github.com/odoo/odoo/pull/214302 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The wishlist checkout test now allows more time to finish, reducing false failures when the process runs slowly. This helps keep automated validation stable without changing the customer-facing wishlist experience.
Original PR description
Increase timeout for wishlist tour. As it was taking too long to complete. runbot-229616 Forward-Port-Of: odoo/odoo#219653
The Indian e-waybill stock view now shows errors and warnings with the correct alert colors, making important messages easier to understand. Access errors are also handled more reliably, reducing confusion when users encounter permission-related issues.
Original PR description
Before: --- Error and warning colors were mismatched in the e-waybill view. In this commit: --- Fixed the e-waybill view to correctly display error messages - Errors now display in red (alert-danger) :red_square: - Warnings now display in yellow (alert-warning) :yellow_square: AccessError now handled correctly. --- task-5050937 Forward-Port-Of: odoo/odoo#225078
The signature dialog now avoids showing auto-generated and hand-drawn signatures on top of each other. This prevents a confusing visual overlap and makes signing documents cleaner for users.
Original PR description
Fixed an issue where both the auto-generated and drawn signatures overlapped in the signature dialog. This was caused by the system automatically setting the user's default signature to the drawn one when opening the dialog. Now, the dialog no longer defaults to the drawn signature, preventing visual overlap and ensuring a cleaner user experience.
This update fixes an automated Planning app test by using today's date directly when editing schedule data. It helps keep quality checks stable so future changes can be validated reliably before release.
Original PR description
Now the tour use edit with the date of today and not a function runbot build error: 164213
Users no longer encounter an error when trying to link a document to a vehicle or other record type that has no existing records. The system now prevents the unsupported link action instead of opening a wizard that would crash, improving reliability in empty setups.
Original PR description
*= documents_fleet Currently, when user tries to link a document with a vehicle and if there is no vehicle exists an error is raised. **Steps to Reproduce:** 1) Install `documents_fleet`…
*= documents_fleet Currently, when user tries to link a document with a vehicle and if there is no vehicle exists an error is raised. **Steps to Reproduce:** 1) Install `documents_fleet` module(without Demo Data). 2) Open Documents App. 3) Upload a file in `Fleet` folder. 4) Select the uploaded file and click on `'Link to a vehicle'` button. Error: `ValueError: invalid literal for int() with base 10: 'False'` Root Cause: The `link_to_record` method attempts to find the first record of the target model to use as a default value when opening the linking wizard. If no records exist, the search returns an empty recordset, and accessing `.id` at [1], on it results in the value `False`. The code then incorrectly constructs a default reference string like `fleet.vehicle,False`. The wizard crashes when it tries to parse this string and convert the `False` part to an integer. Solution: This commit prevents error by ensuring that the user cannot link a document to a model without existing records. [1]- https://github.com/odoo/enterprise/blob/83640d21b2c31ed9d572c48e02a9aeea9eb1607b/documents/models/documents_workflow_rule.py#L113 sentry-6792079496 Forward-Port-Of: odoo/enterprise#91888
Spreadsheet ownership is now restricted so portal users cannot become owners when they are not allowed to edit shared spreadsheets. This prevents permission issues and keeps spreadsheet access aligned with internal user rules.
Original PR description
Following the discussion I had with @flch-odoo regarding https://github.com/odoo/enterprise/pull/92134 , Since Spreadsheets can not be shared in edit mode to non-internal users, we prevent them from becoming owners. opw-4753670
This fix ensures a quality control test has the required serial number printing permission when run without demo data. It prevents false test failures in isolated module runs, improving reliability for maintenance and validation workflows.
Original PR description
## Issue:
The test `test_receipt_validation_triggers_serial_number_label_print` fails when running `quality_control` alone without demo data
## Cause:
The user is missing the group `stock.group_production_lot`, that enable serial number printing
As a result, the condition `self.env.user.has_group('stock.group_production_lot')` in `stock.picking` `_get_autoprint_report_actions()` is not satisfied
The `button_validate()` in `stock.picking` will have an empty report_actions and will not print anything
The Demo data that allow the test to work is in `stock`
https://github.com/odoo/odoo/blob/9b08449f25cd16dc15117d305726380298c313d8/addons/stock/data/stock_demo.xml#L176-L182
## Steps to reproduce:
- Install only `quality_control` (no demo data)
- Run the test `test_receipt_validation_triggers_serial_number_label_print`
related-to: https://github.com/odoo/enterprise/pull/90134
opw-4790427