Thursday, October 23, 2025
13 changes · saas-18.2
Enhancements to existing features
This update suppresses misleading package-version warnings that appeared in certain Ubuntu Jammy environments. It keeps logs cleaner and helps teams focus on meaningful system issues without changing business functionality.
Original PR description
Apparently on jammy the pdfminer package returns nonsensical versions (the distribution for `pdfminer.six` yields `-VERSION-`, and inside the python code the `__version__` is `__VERSION__`). When trying to look up the distribution for the (invalid as a distribution name) `ldap`, as a fallback `pkg_resources` parses every package on the sys.path before returning a lookup failure. Doing so, it encounters `pdfminer` fails to parse its version as a `Version`, warns that that is deprecated, then parses it using the more lenient `LegacyVersion` and warns that this is also deprecated. Since this is a packaging issue in just jammy and we can't really do anything about it, just sweep the issue under the rug. https://runbot.odoo.com/odoo/error/163677 Forward-Port-Of: odoo/odoo#232650
This update includes VoIP-related modules in the project's automated code quality checks. It helps maintain consistency and reduce future issues in these modules, with no direct change for end users.
Original PR description
Forward-Port-Of: odoo/odoo#232484
This update improves performance when Odoo links sales orders to projects for reinvoicing. It helps avoid slower database scans, which can make related sales and project views respond faster in larger databases.
Original PR description
This commit adds an index on `project.project. reinvoiced_sale_order_id`, because the search in `sale.order. _compute_project_ids` might not be selective enough based on `sale_order_id`, which is a related field using `sale_line_id`. Since it's related, there is only a where clause on `sale_line_id IS NOT NULL`, which might not be selective enough and leads to a Seq. Scan of the `project_project` table. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232623
Resolved issues and error corrections
Invoice lists now correctly separate records when grouped by whether they were sent. This prevents users from seeing every invoice duplicated under both Sent and Not Sent groups, making invoice review and follow-up more reliable.
Original PR description
### Issue: The groups "Sent" and "Not Sent" display all the invoices. ### Steps to reproduce: - Go in Accounting > Customer > Invoices - Create a custom GroupBy with "Sent" - Unfold the groups: all invoices appear in each group ### Cause: `web_read_group` returns the groups with their length and the domain corresponding. When unfolding `web_search_read` uses the given domain to get the records to display. Here the issue comes from the domain returned, it contains `['move_sent_values', '=', 'sent']`, but `move_sent_values` is a computed field that doesn't have a `_search` method so the domain doesn't filter on this field. ### Solution: Add the method `_search_move_sent_values` to search on `is_move_sent`. opw-5164650 Forward-Port-Of: odoo/odoo#232400
Code cleanup and technical improvements
This update applies automated code quality cleanup to the VoIP area. It does not add or change business features, but helps keep the codebase easier to maintain and safer for future updates.
Original PR description
Forward-Port-Of: odoo/enterprise#97751
This fixes how Odoo's web test mock server handles custom responses, ensuring they are returned exactly as intended instead of being repackaged. It helps prevent misleading test results and supports more accurate validation of web behavior.
Original PR description
Before this commit, when an 'onRpc' handler would return a 'Response' object, it would still be wrapped in a JSON-RPC payload (under the 'result' key) if the "content-type" header specified that it was a JSON-RPC. However, if a 'Response' object is returned by the handler, it usually means that the response should be that object as-is, as it was created with the desired final parameters. This commit ensures that 'Response' values are returned as they are, instead of being wrapped in a JSON-RPC payload object. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232614
The website editor now correctly applies speed changes to animated background shapes. This restores expected slider behavior when customizing snippets, helping users fine-tune page visuals without manual workarounds.
Original PR description
Steps to reproduce: - Drop a snippet - Add a background shape (e.g. Rainy 05) - Use the slider to change the speed - Nothing happens This commit is adapting `CSS_ANIMATION_RULE_REGEX` as it was too restrictive, the space after the colon is now optional. task-5170549 Forward-Port-Of: odoo/odoo#231747
This fixes a small formatting issue in Odoo's web report layout where page numbers could split across two lines when using the Montserrat font. Printed or PDF documents using the folder layout now keep page numbering tidy and easier to read.
Original PR description
The folder layout is using the same footer than the `external_layout_standard` but when using Montserrat, the page number wraps in 2 lines on the folder layout. It's missing a `text-nowrap` class. task-4942402 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228391
Invoice previews no longer fail when a website page includes other embedded content, such as a map in the navigation bar. The fix ensures the accounting preview selects the correct invoice frame, preventing an error for users opening invoice previews.
Original PR description
Support the possibility of multiple iframes being present on the invoice preview page. Steps to reproduce ----- 1. Add a map block to the nav bar of the website. 2. Go to accounting and find an invoice. 3. Click preview and receive a traceback. Cause ----- The use of querySelector works if there is only one iframe element, but map blocks are also iframe elements so adding one with the website editor can cause the wrong iframe to be selected with querySelector. Solution ----- The iframe element that needs to be selected already has an id, so updating querySelector to getElementById resolves the issue. opw-ticket 5170640
Spanish point-of-sale receipts now correctly display the company’s state name instead of empty brackets. This avoids confusing or incomplete address information on simplified invoices and improves receipt accuracy for Spanish businesses.
Original PR description
**Steps to reproduce:** - Set a spanish company, set the state - Set the "Simplified Invoice" journal in the settings - Go to PoS and make a purchase - On the receipt, empty brackets are shown where the state should be **Why the fix:** Before this commit, we checked that the company had a state set, and if it had, we displayed *state_id[1]* between brackets. Even if the state_id existed, this is not the correct structure for the state_id, so *state_id[1]* did not exist, and we displayed only the brackets. We now display the correct state name, still between brackets. opw-5098212 Forward-Port-Of: odoo/odoo#230141
The Timesheets monthly grid now keeps overflowing text from appearing over the timer button area in total and footer rows. This improves readability when users increase text size and scroll across the grid.
Original PR description
Steps to reproduce: - Open timesheets and change to Month scale. - Increase text size a little bit. - Scroll to the right side Issue: - You can see runover text being visible in timer button cell of Total row and Footer row. Reason: - It is due to z-index problem as z-index-* is deprecated from https://github.com/odoo/odoo/pull/165568 (from saas-17.4+). Fix: - Replace it with Bootstrap z-index class notated as z-*(-1 to 3) task-4949182 Forward-Port-Of: odoo/enterprise#96371
Corrects the Chinese ASBE balance sheet so liabilities and related account lines are included in the right place. This helps businesses rely on accurate balanced financial reports and prevents false test failures around balance sheet validation.
Original PR description
Fixes the balance_sheet_balanced test for asbe where the wrong line was set as liability. Also fixes the report itself that was ignoring one line, and missing one account. task-5175789 Forward-Port-Of: odoo/enterprise#97460
Helpdesk users can now reapply the SLA status grouping in the SLA reporting view after removing it. This avoids needing to reload the page and makes report exploration smoother.
Original PR description
Currently, when the user opens the sla reporting view, if he removes the default grouping of sla_status, he has no way to get it back unless he reloads the view completly. This commit fixes this issue by adding the sla_status field to the group_by options. task-5076401 Forward-Port-Of: odoo/enterprise#95261