Tuesday, November 25, 2025
24 changes · saas-18.2
Enhancements to existing features
Sales orders can now be filtered by sales team more efficiently, especially in databases with many orders. This helps users who work with team-based views or access rules experience faster loading times without changing existing workflows.
Original PR description
`team_id` might be used in filters to conditionally see related `sale.order` for a specific (or set of) sales teams. If the field isn't indexed, it's a Sequential Scan on `sale_order`, which can be a large table. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237116
Hardware device logs now record only the message type and device instead of entire websocket messages. This keeps logs smaller and easier to review, especially when print data contains large encoded content.
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 Forward-Port-Of: odoo/odoo#236651
This update enhances compatibility with newer IoT Boxes (v19.1+) by adding a check for the 'bb status' within the system's data status. This ensures seamless integration and prevents potential issues related to the latest IoT Box versions. It's a routine maintenance update to maintain compatibility.
Original PR description
We now check the bb status in `data.status` in addition to `data.status.status` to ensure compatibility with v19.1+ IoT Boxes. Forward-Port-Of: odoo/enterprise#100440
Resolved issues and error corrections
Pressing Backspace in an empty quote in the editor no longer removes the nearby table of contents. The empty quote is safely changed into a normal text area instead, helping users edit task descriptions without accidentally losing content.
Original PR description
### Steps to reproduce: - Create a new Project task. - Insert a Table of Contents (e.g., /tableofcontent). - Insert a quote below it (e.g., /blockquote). - Place the cursor at the start of the empty quote and press Backspace. - The Table of Contents is removed. ### Desired behavior after PR is merged: - Empty blockquote is converted into a base container when backspace is pressed. task-5246130 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#235087
Miscellaneous changes
The forward-port commit[^1] corrupted the POT file of this module. It resulted in a missing `msgstr` entry causing the `msgmerge` in Weblate to fail. This commit regenerates the POT file to fix the issue. [^1]: https://github.com/odoo/odoo/commit/4e51a4a259bbb36dbbd7f6aa59ba30280f97cd89 Forward-Port-Of: odoo/odoo#237031
Original PR description
The forward-port commit[^1] corrupted the POT file of this module. It resulted in a missing `msgstr` entry causing the `msgmerge` in Weblate to fail. This commit regenerates the POT file to fix the issue. [^1]: https://github.com/odoo/odoo/commit/4e51a4a259bbb36dbbd7f6aa59ba30280f97cd89 Forward-Port-Of: odoo/odoo#237031
The report editor now hides image resizing options in Studio reports because those size changes could not be reproduced correctly in generated PDFs. This avoids users spending time on formatting changes that would be ignored when printing or exporting reports.
Original PR description
Problem: When resizing an image in Studio within any report, the change is not reflected in the generated PDF. This happens because `wkhtmltopdf` does not support percentage-based `width` / `height` values, which are used by the resize tool (e.g., `width: 25%`). Solution: Disable the image resize option in Studio when editing reports, since the resulting `%` sizing cannot be rendered correctly in PDFs. Steps to reproduce: 1. Open Studio → Reports → open any report. 2. Add an image. 3. Resize it to 25%. 4. Save and print the PDF. 5. The image appears at its original size in the PDF. opw-5233052 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237088
Changing font size or color on linked text in the HTML editor no longer leaves behind empty link elements. This keeps edited content cleaner and prevents repeated formatting changes from accumulating hidden clutter in the page structure.
Original PR description
Steps to Reproduce: - Create a link in the editor (e.g., "abc"). - Select all and change the font size from 14 to 80. - Two empty <a> tags are created before and after the formatted…
Steps to Reproduce: - Create a link in the editor (e.g., "abc"). - Select all and change the font size from 14 to 80. - Two empty <a> tags are created before and after the formatted `<span><a></a></span>` with only FEFF Characters. - Change the font size again (e.g., back to 14). - Multiple empty <a> tags remain in the DOM. Description of the issue this PR addresses: - The empty <a> elements are created during `splitAroundUntil` because of FEFF characters inside links. The existing `removeFeffs` method only replaces FEFF with empty text nodes, so the issue persists and still results in empty anchors with just feffs. - This empty tags lead to the creation of more empty elements during formatting changes. Desired behavior after PR is merged: - Added a new utility method `removeEmptyTextNodes`, which removes empty text nodes and updates the cursor accordingly. This prevents empty anchor elements from being created when formatting links. task-5097770 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#229297
This fix makes the website editor’s hint and power buttons appear consistently in empty text areas and disappear once a Tab is inserted. It reduces confusing editor controls and makes formatting empty text blocks behave as users expect.
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 Forward-Port-Of: odoo/odoo#230979
This fix prevents imports from failing when a user lacks permission to view certain property definition details. The import process now safely skips inaccessible property information, improving reliability for users with limited access rights.
Original PR description
…ible https://github.com/odoo/odoo/pull/236037 ignores the properties field if we don't have access to the definition model at all. However, we should also check field groups to avoid crashing if the user cannot access the definition field because of group restrictions. Forward-Port-Of: odoo/odoo#236912
Restaurant point of sale now handles cases where closing a tab removes an empty payment line before showing the tip screen. This prevents an error screen and lets staff continue the payment flow smoothly when adding tips after payment.
Original PR description
Steps: --- - Enable Tips and "Add tip after payment" in restaurant. - Open a session and add any product(s). - Go to payment and add two card lines (first with full amount, second with 0). - Click on "Close Tab". Issue: --- - After redirecting to the Tip Screen, a traceback appears. Cause: --- - Clicking "Close Tab" clears all 0-amount payment lines. This can leave no selected payment line, but the Tip Screen still tries to access it. Fix: --- - Use the selected payment line if available, otherwise fallback to the first payment line. task-5095825 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227797
This fix makes Shift + Click text selection inside table cells behave as users expect, selecting only the intended text range. It also keeps selected text visible when hovering over table borders for resizing, reducing confusion while editing tables.
Original PR description
**Current behaviour before PR:** Steps to reproduce: - Create a table - Write a sentence in one of the cell - Put your caret somewhere in your sentence (e.g. "He[]llo wold") - Shift + click in the same sentence (e.g. "Hello wor[]ld") The expect result should be "He[llo wor]ld", but it's "[Hello wor]ld". This issue happens because in `onMousedown` method of table_plugin, cursor is set to the starting of `anchorNode`, which leads to wrong selection on shift + click. **Desired behaviour after PR:** This PR ensures that Shift + Click sets the selection in the same way as the default browser behavior. task-5152807 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230716
Step to reproduce: - for Spain localization, in developer mode: - Go to Balance sheet - Select either report 'Balance sheet - SMEs (ES) or Complete Balance Sheet (ES) - Click on the parameters button - Click on the "Accounts Coverage Report" Observation: - we receive a traceback ``` psycopg2.errors.InvalidTextRepresentation: invalid input syntax for type integer: "%(balance_sheet_11700_account)d" LINE 1: ...ccount_tag" WHERE ("account_account_tag"."id" IN ('%(balance... ``` Caus
Original PR description
Step to reproduce: - for Spain localization, in developer mode: - Go to Balance sheet - Select either report 'Balance sheet - SMEs (ES) or Complete Balance Sheet (ES) - Click on the parameters button…
Step to reproduce:
- for Spain localization, in developer mode:
- Go to Balance sheet
- Select either report 'Balance sheet - SMEs (ES) or Complete Balance Sheet (ES)
- Click on the parameters button
- Click on the "Accounts Coverage Report"
Observation:
- we receive a traceback
```
psycopg2.errors.InvalidTextRepresentation: invalid input syntax for type integer: "%(balance_sheet_11700_account)d"
LINE 1: ...ccount_tag" WHERE ("account_account_tag"."id" IN ('%(balance...
```
Cause:
- few records used a wrong format style for values of `domain_formula`
- These faulty domains were not [evaluated](https://github.com/odoo/odoo/blob/2070e30c540a066fb80851527e5e54e97fb23c4b/addons/account/models/account_report.py#L450-L453), but inserted into database as is.
- when browsing account.tag record using these domain, record ids were expected,
instead we got its string representation , causing traceback
https://github.com/odoo/enterprise/blob/8fa6fb27d2a79ee299361b281dc82182feee5860/account_reports/models/account_report.py#L5679-L5680
Fix:
- we fix the data file, which is properly evaluated and stored in database.
- Manifest's data file order is changed, so that account tags is loaded first.
opw-5224114
Forward-Port-Of: odoo/enterprise#98745A bug was causing image resizing within Odoo Studio reports to fail, resulting in PDFs displaying images at their original size. This fix disables the percentage-based resizing option, preventing incorrect rendering in PDFs due to limitations of the underlying PDF generation tool. This ensures consistent image display in generated reports.
Original PR description
Problem: When resizing an image in Studio within any report, the change is not reflected in the generated PDF. This happens because `wkhtmltopdf` does not support percentage-based `width` / `height` values, which are used by the resize tool (e.g., `width: 25%`). Solution: Disable the image resize option in Studio when editing reports, since the resulting `%` sizing cannot be rendered correctly in PDFs. Steps to reproduce: 1. Open Studio → Reports → open any report. 2. Add an image. 3. Resize it to 25%. 4. Save and print the PDF. 5. The image appears at its original size in the PDF. opw-5233052 Forward-Port-Of: odoo/enterprise#100301
This update corrects a technical issue in the Odoo Enterprise software related to the generation of Peru UBL XML invoices. Specifically, an error was preventing the correct formatting of the XML, now resolved by removing a problematic code addition. This ensures accurate invoice generation for Peruvian clients.
Original PR description
In the Peru UBL, adding a reference to a partner would cause an error from the OSE (code 3090). This was because the call to super in _get_partner_party_identification_vals_list would add the partner.ref as an ID, which is incorrect in the Peruvian context. Removed the call to super which did not bring any other information. ticket-5193233 Forward-Port-Of: odoo/enterprise#100043
This update fixes a potential issue where rental orders could incorrectly record more returned products than were initially picked up. The change ensures that returned quantities never exceed the quantity originally picked, improving order accuracy and preventing discrepancies in rental accounting. This resolves a previous bug reported by our team.
Original PR description
## Versions 17.0+ ## Issue It is possible to return more products than what has been picked in Rental. ## Steps to reproduce - Create a service product available for rent; - Create a rental SO for any partner: - Add 5 units of the created service; - Confirm the SO; - Pickup 5; - Return 4; - Return 4; - Check the SOL containing 5 delivered products and 8 returned products. opw-5259727 Forward-Port-Of: odoo/enterprise#100015
This update fixes an issue where the SAFT report incorrectly assigned the supplier's receivable account to customers. The fix changes the XML data to use the correct customer receivable account, ensuring accurate reporting for Romanian VAT returns. This resolves a discrepancy identified in previous reports.
Original PR description
### Issue: In the SAFT report both the Customer and the Supplier have the same account. ### Cause: In the XML there was probably a typo and both have `property_account_payable_id` as account. ### Solution: For the `Customers` node, use `property_account_receivable_id`. opw-5144009 Forward-Port-Of: odoo/enterprise#99196
This update corrects a technical issue where stopping audio playback in the VoIP feature triggered unwanted HTTP requests. The fix resets the audio element's source, eliminating the request and improving performance. This ensures a smoother user experience.
Original PR description
Setting the src of an element to null triggers a GET HTTP request to /null. This is not the intended behavior; we want to reset the source so that it is not linked to any file, but the browser interprets it as an attempt to load a file called "null". This commit fixes the problem by resetting the source using removeAttribute instead. [Task-5349985](https://www.odoo.com/odoo/project/5778/tasks/5349985) Forward-Port-Of: odoo/enterprise#100146
This update resolves an issue where opening a folder within 'My Drive' caused the entire 'My Drive' folder to unfold. Now, 'My Drive' will only unfold when its root folder is opened, improving the user experience and preventing unexpected folder expansions.
Original PR description
Steps to reproduce =================== - Go to the `All` section. - Open the folder hosted in the `My Drive`. - `My Drive` gets unfolded. To Be ===== - The` My Drive` folder should not be unfolded when opening folders inside it, like `Company`. Technical =========== - Earlier, we were sticking to the condition that allows other root folders to unfold when we open a folder inside it, except the `Company` folder. After this commit ================== - This commit addresses the issue, and now whenever we click on a certain folder it will not unfold until its root is unfolded. Task-5046161 Forward-Port-Of: odoo/enterprise#93718
This update resolves a bug where shared Knowledge articles weren't accessible to users when the website had multiple language settings. The fix corrects a URL rewriting issue, ensuring articles appear correctly regardless of the user's preferred language. This improves the usability of our knowledge sharing feature.
Original PR description
## Issue: When multiple languages are enabled on the website (English + another), sharing a public Knowledge article may block portal users from accessing it For example, if the website’s default…
## Issue: When multiple languages are enabled on the website (English + another), sharing a public Knowledge article may block portal users from accessing it For example, if the website’s default language is Spanish and the user opens the link, they are redirected to the home page and the article does not appear in the sidebar ## Cause: When accessing `/knowledge/article/...`, the `_match` route handler automatically rewrites the URL to `/en/knowledge/article/...` However, the website only recognizes `/es/knowledge/article/...`, so the rewritten URL is not valid As a result, the user falls back to `/knowledge/article/new`, which triggers a redirection to the home page ## Steps to reproduce: - Install Knowledge and Knowledge Website - Set Spanish and English (US) as available website languages - Set Spanish as default website language - Create an article in knowledge - Click Share and activate "Share to web" - Copy the link and open it in a private window (The article should be visible) - Log in as a Portal user - Open the link - The user is redirected to the home page and the article is missing from the sidebar opw-4916118 Forward-Port-Of: odoo/enterprise#96505
This update ensures that invoice lines are reconciled with the correct partner during point-of-sale transactions. Previously, reconciliation could incorrectly link invoices to different partners, leading to inaccurate reporting. This fix improves the reliability of sales data and reconciliation processes.
Original PR description
Invoice lines to be reconciled are not tailored to the single partner while the session lines do. That can cause reconciliation to happen between different partners. Backport of https://github.com/odoo/enterprise/pull/100131 task-5346644
This update resolves an issue where the company name used in tour tests for the l10n{cl_edi,br_edi}_pos modules was incorrect. This fix ensures that tour tests run properly and accurately reflect the company's information, improving the reliability of the testing process.
Original PR description
There was an error in the generic hooks, the company name was not the correct one. runbot-234336
This update streamlines account reporting settings for users in specific countries, ensuring relevant options are displayed based on their reporting needs. Previously, users had to manually determine acceptable fiscal year settings, which has now been automated to prevent confusion and ensure accurate reporting.
Original PR description
We're adding several countries to the settings, each time a user from this country has specific fiscal year and does non-monthly reporting. It's cumbersome, as we have to know in which country it's acceptable. At the same time, we don't want to show a setting if it's useless to the user. It will just confuse him. So, we should show this setting as soon as the report will complain: - If it's monthly and he does not start at the beginning of the month. - If he does non-monthly and does not end on 31st of December. We could be even more selective and also compute which months would be valid if in quarterly and other modes but we think it's fine for these cases. Forward-Port-Of: odoo/enterprise#100181
This update ensures kiosks only utilize payment methods explicitly configured for that device. Previously, kiosks would incorrectly prompt for unavailable payment options, leading to a poor user experience. This fix prevents errors and improves the kiosk's functionality by restricting payment method selection.
Original PR description
Ensure the kiosk only uses payment methods that are explicitly configured. **Steps to reproduce:** - Set up an online payment method (do not assign it to the kiosk) - Open a kiosk session. - Try to validate an order. **Issue:** - The kiosk prompts for an online payment method, even though none are configured. **Fix:** - Prevent loading of any unconfigured payment methods to the kiosk. Task: 4911495 Related: https://github.com/odoo/odoo/pull/217467
This update automatically activates the EC Sales List report menu item for Odoo Enterprise users in several European countries (Bulgaria, Cyprus, Czech Republic, Latvia, Malta, Poland, Romania). Previously, users in these regions had to manually enable the report, streamlining the reporting process and improving user experience.
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 Forward-Port-Of: odoo/enterprise#93939