Friday, May 30, 2025
19 changes
4 changes
Resolved issues and error corrections
Corrected a display issue where AI-related dropdown items could appear on top of pop-up dialogs, such as custom filter windows. This makes the interface clearer and prevents menus from blocking important dialog content while keeping the AI chat window visible when needed.
Original PR description
Steps to reproduce: - Install any module with exposed views (say sale_management) and the ai module. - Open any list view (say the Quotations) and type something in the search bar. - Dropdown menu…
Steps to reproduce: - Install any module with exposed views (say sale_management) and the ai module. - Open any list view (say the Quotations) and type something in the search bar. - Dropdown menu items will appear and click "Custom Filter" button from the items. - [ISSUE] The items are shown over the custom filter dialog. The issue is caused by the custom rules introduced in the ai module. In this commit, we're removing all the custom rules that overrides the overlay items. We shouldn't be controlling the `z-index` of those items. To ensure that the AI ChatWindow is still above the dialog that opens it, we reduce the `z-index` of the dialog to `$zindex-sticky=1020` (from `zindex-modal=1055`) and change the `z-index` of the ChatWindows to `$zindex-sticky + 1`. This works because the `.o-mail-ChatWindow` elements lives in the same "stacking context" as the `.o-overlay-item` that contains the dialog. In the dom (and in terms of stacking context) it roughly looks like the following: - html (root stacking context) - .o-overlay-item:has(.o_dialog) (z-index=1020) (under .o-overlay-container) - .o-mail-ChatWindow (z-index=1021) (under .o-mail-ChatHub) - .o-mail-ChatHub-bubbles (z-index=1020) With the above `z-index` values, the stacking will be: - .o-overlay-item:has(.o_dialog) - .o-mail-ChatHub-bubbles - .o-mail-ChatWindow (top most) The bubbles are not visible when the chat window is open, and when the chatwindow is minimized, the bubbles is still visible because it's above the dialog.
Closing the AI agent chat window no longer triggers an error. This improves the user experience by preventing a disruptive message when users dismiss the chat.
Original PR description
**Current behavior before PR:** Closing the AI agent chat window would throw an error because the code attempted to access the associated chatwindow after it had been deleted. **After this commit:** The issue is resolved by ensuring the chatwindow is not accessed after deletion, preventing the error.
This update corrects an automated test for UrbanPiper point-of-sale order handling so it selects the intended order during validation. It prevents test confusion caused by similar-looking order and session numbers, helping maintain confidence in the order flow.
Original PR description
In this fix, I updated the parameters passed to the `selectOrder` and `orderHasText` functions. Instead of using 3-digit sequence numbers (e.g., "001", "002"), I switched to 4-digit formatting (e.g., "0001", "0002") to avoid conflicts with the `session_id`, which was causing the wrong `order-row` to be selected. runbot-163111
Web Studio now handles button action setup correctly when users work in non-English languages. This prevents an error that blocked adding a method to a button and keeps the experience consistent with English.
Original PR description
Error occurs when adding method for a button via web studio for non-english translations. **Steps to reproduce:** * Install `web_studio` and change language to any `non-english` language * via Settings>Translations>Languages (we will use french) * Go to Apps>Any App>DropDown>`Info sur le module`>Studio>`Ajouter un bouton` * Select button>`Que doit faire le bouton?`>`Appeler une methode` * Mode> `button_immediate_install` `ValueError: not enough values to unpack (expected 2, got 1)` **Solution:** * This error does not occur in English translation instead it raises a `ValidationError` so we apply its logic to translated version as well. * We do this by removing `_t` from value in JS this would prevent translation of function name as function names are in English. **Sentry-6608410350**
1 change
Resolved issues and error corrections
This fixes the checkout flow when automatic receipt printing and skip preview are enabled in restaurant point of sale. After payment, users are now taken back to the expected floor screen and related receipt actions still run, reducing confusion and missed follow-up steps.
Original PR description
pos*: l10n_it_pos, whatsapp_pos When setting the options automatic receipt printing with skip preview screen in a pos restaurant, after the payment, the user is redirected to the default screen instead of the floor screen. Currently, some actions are not done during the skipping of the receipt screen. This commit make sure the actions are done when the skip preview screen is enabled. task-id: 4170340 Community PR: https://github.com/odoo/odoo/pull/202548
14 changes
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