Friday, May 30, 2025
14 changes · 18.0
Resolved issues and error corrections
Odoo now avoids showing push notifications when a user is already focused on the relevant mail conversation. This reduces duplicate alerts and makes the Discuss/chat experience less distracting.
Original PR description
**Current behavior before PR:** Push notifications are shown even when the user is already viewing the same conversation in the Discuss app or in the ChatWindow. The Service Worker does not currently…
**Current behavior before PR:** Push notifications are shown even when the user is already viewing the same conversation in the Discuss app or in the ChatWindow. The Service Worker does not currently check whether the conversation is focused, leading to redundant and unnecessary notifications. **Desired behavior after PR is merged:** The Service Worker now intelligently checks the state of the Discuss and ChatWindow before displaying push notifications. Notifications are only shown when the user is not actively focused on the same conversation. The updated logic ensures: - Chat bubble minimized and tab focused → Show - Chat window open, tab focused, but a conversation not focus → Suppress - Chat window open, tab focused, the conversation is focused → Suppress This behavior is achieved by the Service Worker sending a message to the client window to get the active thread and its focus status before deciding whether to show a notification. This results in a cleaner user experience by avoiding redundant alerts when they’re not needed. task-[4582533](https://www.odoo.com/odoo/my-tasks/4582533) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This updates Odoo’s spreadsheet engine to the latest version, bringing targeted fixes for spreadsheet users. It improves autocomplete dropdown readability and addresses an issue with pivot charts when fields contain a mix of text and numbers, helping reports remain clearer and more reliable.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/d201086ee [REL] 18.0.31 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/d201086ee [REL] 18.0.31 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/ab92eab3c [REV] pivot: chart field with mix of text and numbers [Task: 4800411](https://www.odoo.com/odoo/2328/tasks/4800411) https://github.com/odoo/o-spreadsheet/commit/5831ad228 [FIX] autocomplete_dropdown: Improve dropdown readability [Task: 4813433](https://www.odoo.com/odoo/2328/tasks/4813433) Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Mehdi Rachico (mera) <mera@odoo.com> Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
A point of sale test now creates its branch company with the required country information. This prevents an unrelated certification check from interrupting the test, helping keep automated quality checks reliable.
Original PR description
The test `test_pos_branch_account` was failing due to a `UserError` raised from the `l10n_de_pos_cert` module, which requires that a country be set on the company before opening the POS UI (`open_ui`). Since the test creates a new `res.company` record to represent a branch, the required `country_id` was missing, causing the test to crash instead of evaluating the intended logic. This change sets the `country_id` on the created branch company. build_error-223267
This fixes an issue where using Ctrl+Enter in a Point of Sale text dialog could confirm the action twice. For restaurant users, this prevents duplicate items such as two floors being created from a single entry.
Original PR description
For the `TextInputPopup` component a feature was introduced in 2f5c5c15644412cfb6493c661b2f1b927c8cc7e2 that allows the user to confirm the popup by simply clicking enter. The problem is that the dialog itself has a hotkey on "CTRL+Enter" that will also confirm the popup. This means that if a user uses the "CTRL+Enter" hotkey, the popup will be confirmed twice. Steps to reproduce: 1. In restaurant, click the button to add a new floor 2. Write a name for the floor 3. Click "CTRL+Enter" 4. Observe that 2 floors with the given name were created instead of one. The fix: We stop the propagation of the event Task: 4698289 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents portal token access from changing the global chat user identity. It keeps live chat and portal conversations separate, avoiding stalled chatbots or messages appearing under the wrong user after redirects.
Original PR description
*: portal, portal_rating, test_mail_full. Before this commit, the chat bot could stop when redirecting to a page where the portal is enabled. Both the portal and live chat modules rely on the discuss store’s `self` field which identifies the authenticated user. However, the portal also supports authentication via a token in the URL, which temporarily identifies the user on a specific thread. Previously, the portal would overwrite the global `self` value, causing inconsistencies for other users of the store such as messages appearing as if sent by another user. Since token authentication is specific to portal threads, it should only affect actions on the granted thread without altering the global user identity. This fix prevents the portal from overwriting the global `self` value and instead returns the thread-specific `portal_partner` field. opw-4722466
Point of Sale settings now prevent users from creating a new cash rounding method directly from the POS configuration screen. This ensures rounding methods are set up through the proper accounting form, reducing errors during cash in/out operations and session closing.
Original PR description
Added `no_create` option to the `pos_rounding_method` field to enforce use of predefined `cash.rounding.method` form, avoiding bypass of required Profit & Loss accounts setup (which cause some issue when trying to cash in/out in POS or when trying to close the session). task-id: 4805617 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The change updates an internal website shop loyalty test so it is not affected by tax settings that include taxes in product prices. This helps keep automated checks reliable across different configurations without changing customer-facing behavior.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Install `website_sale_loyalty` without demo data; 2. configure taxes to be included in the price; 2. run `test_apply_coupon_with_multiple_rewards`. Issue ----- Test fails. Cause ----- The test compares the product's list price to the order subtotal. With `price_include` set to `True`, the product's `list_price` does include taxes, making the comparison invalid. Solution -------- Explicitly set `taxes_id` to `False` on products created for the test. Also ensure the pricelist & partner don't change in the test. runbot-223362
This fix prevents Point of Sale sessions from getting stuck when a loyalty reward has an invalid product rule. Instead, the shop opens normally and staff see a clear warning so they can continue serving customers while the reward configuration is corrected.
Original PR description
Problem: When there is a loyalty program with a reward on specific products and there is an error in the discount product domain or the domain is incompatible with the pos client, the pos session is…
Problem: When there is a loyalty program with a reward on specific products and there is an error in the discount product domain or the domain is incompatible with the pos client, the pos session is unable to open and keeps loading with an error visible on the console. This is because when the session tries to open, the compute_discount_product_ids method is called which runs into an error because it cannot use the domain. Ideally, the pos screen should still load and give an alert message saying “The reward "xxx” contains an error in its domain, your domain must be compatible with the PoS client” and after closing the popup, the pos shop can be used however this does not happen as the code line for deleting the erroneous loyalty reward runs into an error because the delete method expects a record but receives an id. The alert message written before never appears because this delete statement runs into an error.
Purpose: Passing the correct argument to the delete function so that the loyalty program with issues in domain can be properly deleted from loaded models. After this correction, the pos session will load and there will be an alert warning the user of the reward error.
Steps to Reproduce on Runbot:
1. Choose any discount program for the pos shop. Open the reward pop up and choose to put the discount on specific products.
2. Edit domain in the “Discount Product Domain” and put <Products> <contains> <screen> in the rule `[("product_variant_ids", "ilike", "screen")]`. We can see 3 records here on the reward.
3. Save and close the program screen. Open the pos shop and check the console. The screen keeps loading and there is a traceback error in the console.
opw-4350676
opw-4352567
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prSubcontracted manufacturing orders now automatically record the receipt that triggered their creation. This restores traceability between related manufacturing orders, making it easier for teams to follow subcontracting flows and investigate issues.
Original PR description
This commit ensures that the 'Source' field of a subcontracted MO is automatically filled with the name of the receipt that led to its creation. Steps to reproduce the bug: - Create a storable…
This commit ensures that the 'Source' field of a subcontracted MO is automatically filled with the name of the receipt that led to its creation.
Steps to reproduce the bug:
- Create a storable product “P3”:
- route: Drop-ship
- Vendor: vendor P3
- BoM:
- type: subcontracting
- Subcontractors: Vendor P3 - Components:
- P2:
- Vendor: Vendor P2
- Route: drop-ship subcontractor on order
- BoM:
- Type: Subcontracting
- subcontractor: Vendor P2
- Components:
- P1:
- Vendor: Vendor of product P1
- Route: Drop-ship subcontractor on order
- Create a quotation:
- Customer: Azure Interior
- Product: P3
- Confirm the quotation -> A purchase order is created for P3
- Open the PO
- Confirm it
- A purchase order is created for P2, and an MO is generated for P3
- Confirm the PO for P2 → an MO is created for P2
Problem:
The Origin field is not set for either MO, preventing the linkage between parent and child MOs.
Backport of:
https://github.com/odoo/odoo/commit/cca6c7abc1adcf688123a1e41033a3e25daf8d6a
opw-4788501This update corrects internal test checks for sales, purchasing, and stock transfer flows so they validate the right delivery steps. It helps prevent incorrect assumptions about shipments and internal transfers from hiding future issues.
Original PR description
The pick pickings are incorrect, because we get them from the next transfers of... the receipts. All next steps are wrong (some of the shippings are actually internal pickings) OPW-4552316
Receipts for Indian point-of-sale transactions now display the tax percentage alongside the tax type. This makes receipts clearer for customers and improves accuracy for tax transparency and compliance needs.
Original PR description
Before this commit: ==== - Previously, only the tax type was displayed on receipts and the tax percentage was missing for Indian localisation. Following this commit: ==== - The tax percentage is now displayed alongside the tax type on receipts, improving transparency and accuracy. task-4464136
The html editor module metadata no longer lists the author as lowercase "odoo" and will instead use the standard company name, Odoo S.A. This is a minor cleanup that keeps module information consistent and professionally presented.
Original PR description
Author was set as "odoo" (lowercase). This commit removes the author key so it fallbacks to the default one, i.e. Odoo S.A. This also aligns keys with previous commits like 42bad1a6 and ef7005f5. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The rental search block now sends selected product attributes in the format expected by the shop page. This ensures customers see properly filtered rental results when using configured attribute options, reducing confusion and improving product discovery.
Original PR description
Description: Currently, when an attribute is selected in the Rental Search snippet options, the generated URL uses the `attrib` parameter. However, the `/shop` route expects the parameter to be named `attribute_value`, so the filter is not applied correctly and the search results are not filtered as expected. Steps to reproduce: - Add the "Rental Search" snippet to a website page. - Configure the snippet and select an attribute value in the snippet options. - Check the resulting URL: it uses the incorrect `attrib` param, so the filter does not apply on /shop.
This update makes an automated field service worksheet test wait for a pop-up to open before interacting with it. This reduces false test failures caused by timing issues, helping keep releases and quality checks more reliable.
Original PR description
The fsm_task_form_tour tour was failing because the modal was not open when the test tried to select the element. This change add a wait step was to ensure the modal is open before trying to select the element. Avoiding flaky behavior caused by timing issues in the UI. build_error-163017