Tuesday, October 14, 2025
24 changes · 18.0
Enhancements to existing features
Opening the Point of Sale configuration page on tablets and phones no longer automatically brings up the on-screen keyboard. This makes navigation smoother by preventing an unwanted keyboard pop-up when users simply want to view or select a POS configuration.
Original PR description
Task: [#5016943](https://www.odoo.com/odoo/project/1737/tasks/5016943)
---
On tablets and phones, the search bar was autofocus when opening the POS config kanban view. This was causing the keyboard to open automatically, which was not a good user experience.
Now the search bar is not autofocus on touch devices for the POS config kanban view ('view_pos_config_kanban').The POS booking screen no longer automatically opens the device keyboard on tablets and phones. This makes the booking flow smoother for staff using touch devices by avoiding an unwanted interruption when the screen loads.
Original PR description
Task: [#5016943](https://www.odoo.com/odoo/project/1737/tasks/5016943) --- On tablets and phones, the search bar was autofocus when opening the booking screen in the POS frontend. This was causing the keyboard to open automatically, which was not a good user experience. Now the search bar is not autofocus on touch devices for the booking screen by creating a new controller to manage this.
A new automated test was added to confirm that matching India tax configurations produce equal tax amounts. This helps reduce the risk of future tax calculation regressions in accounting scenarios.
Original PR description
Added a missing test case in India tax computation, where both taxes have the same configuration as below: - amount: same for both taxes - price_include: True - include_base_amount: True - is_base_affected: False In this case, both tax amounts should be equal. This commit ensures that scenario is properly covered in the test suite.
Resolved issues and error corrections
Creating a website focused only on events will no longer automatically install ecommerce features. This keeps the website setup aligned with the user’s selected purpose and avoids adding unnecessary online store functionality.
Original PR description
Steps to reproduce: 1. Install website module 2. Select events in configurator 3. Build website. => Ecommerce is installed, which should not as it does not make sense with only the events. After this commit: - Ecommerce will no longer be installed when the events is configured. task-4922600 Forward-Port-Of: odoo/odoo#221527
Code cleanup and technical improvements
This change reorganizes how landed cost valuation adjustments are prepared so that custom Odoo modules can extend the process more easily. It does not change the day-to-day user workflow, but it improves maintainability and flexibility for future customizations.
Original PR description
Create 'cost adjustment stock valuation layer' and the preparing of its values with separate method to make it hookable for custom modules This was split from the initial PR https://github.com/odoo/odoo/pull/160527 cc @pfertyk --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227157
The Shop Floor Add Operator list now uses public employee information instead of private employee profiles. This prevents access warnings for users who are not allowed to view private employee details, keeping operator selection smoother without exposing restricted data.
Original PR description
The task 4762527 added a warning for users that were not allowed to access private employee profiles. The "Add Operator" button in mrp_workorder (Shop Floor) was relying on it. I had to change their list model from hr.employee to hr.employee.public This issues was raised by Aerospacelab in the following PR: https://github.com/odoo/odoo/pull/228623 task-5156702
This update removes a test assertion that could produce inconsistent results when checking mobile call behavior. It does not change the user experience, but helps keep automated validation more reliable for the Discuss app.
Original PR description
Before this commit ([1]), we were testing the absence of a button for mobile, but the test can lead to undeterministic behavior as `isMobileOS` is not reactive as we do not expect a live transition of userAgent, like from desktop to mobile, so testing for this behavior is not useful. A dedicated test for call mobile was introduced in v19 ([2]) https://runbot.odoo.com/odoo/runbot.build.error/233350 [1]: https://github.com/odoo/odoo/pull/177374 [2]: https://github.com/odoo/odoo/pull/218119
The Privacy Lookup action now checks for invalid email addresses before searching, preventing an unexpected error screen. Users are shown a clearer validation message instead, making the lookup process more reliable when contact data contains mistakes.
Original PR description
Currently, an error occurs when running a privacy lookup on a contact with an invalid email address. **Steps to reproduce:** - Install CRM modules. - Create a new contact with an invalid email…
Currently, an error occurs when running a privacy lookup on a contact with an invalid email address.
**Steps to reproduce:**
- Install CRM modules.
- Create a new contact with an invalid email address (missing @ - e.g; `demo`).
- In the contact form, click the gear icon and select "**Privacy Lookup**".
- Click on "**Lookup**" button.
**Error:**
```
UndefinedFunction
operator does not exist: character varying = boolean
LINE 55: WHERE email_normalized = false
^
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
```
**Cause:**
Here, Execution of the query fails because `email_normalized` is set to a Boolean value, which is being computed at [1]. And method `tools.email_normalize` returns `False` for invalid email inputs - [2].
**Fix:**
This commit raises an error if the email address is invalid before executing the query.
A similar case is already handled in the mail blacklisting module. ([Ref](https://github.com/odoo/odoo/blob/c7f86c3250c59130ae0b95c6847050d3a6fc7a6d/addons/mail/models/mail_blacklist.py#L29-L31)):
[1] - https://github.com/odoo/odoo/blob/e6c0e963c5379ba7ad8da00ba4ea6c2bb259d95c/addons/privacy_lookup/wizard/privacy_lookup_wizard.py#L49
[2] - https://github.com/odoo/odoo/blob/a729578afb7fed79aac2d622aae4da4c0917f8e5/odoo/tools/mail.py#L734-L735
sentry-6881416673This fix ensures that adding a lunch product to the cart only increases the quantity of the pending "To order" line, not items that were already ordered. It prevents accidental changes to completed lunch orders and keeps cart totals accurate.
Original PR description
**Issue**
When a user has two instances of the same product in their lunch cart, one with state "To order" and one with state "Ordered", and places a new order for that product, both the "To order" and "Ordered" records have their quantity incremented. Only the "To order" record should be updated.
**Steps to Reproduce**
- Add two lunch orders for the same product: one with state "To order" and one with state "Ordered".
- Place a new order for the same product.
- Observe that both records ("To order" and "Ordered") have their quantity incremented.
**Root Cause and Changes Made**
The _find_matching_lines method does not restrict the search to orders with state "new" ("To order"). As a result, it returns all matching records for the product, regardless of their state. When update_quantity is called, it updates the quantity for all these records.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis fixes a website layout issue where pages kept extra left spacing after a sidebar-style header was hidden. Business users and editors will see page content align correctly when the header is turned off, improving the visual consistency of edited websites.
Original PR description
Steps to reproduce the issue: - In edit mode, change the header template to use the "Sidebar" header (=> since it is a sidebar, the page content is shifted to the right) - Go to the theme tab and toggle the "Show Header" option so the header is removed => Bug: the page content is still shifted as if the sidebar were still present. This happens because the page still has padding-left for the header, although there's no header. task-5131064
Close buttons in pop-ups, side panels, and notifications now automatically use colors from the website's selected palette. This keeps these interface elements visually consistent with each website theme and improves readability across customized designs.
Original PR description
This commit makes `.btn-close` color dynamic based on the color palette of the website. Impacted components that are using `.btn-close`: `.modal` (e.g.: `.o_sale_product_configurator_dialog` `.offcanvas` (e.g.: `#o_wsale_offcanvas`) `.o_notification` task-4630175 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents empty duplicate eCommerce mega menu options from appearing in the website editor when no product categories exist. It avoids confusion for editors and prevents an error when selecting those unusable menu options.
Original PR description
When `website_sale` is installed but there are no eCommerce categories, all mega menu options will be shown twice in the web editor. When you use the duplicated one it's empty and you'll also get an error.
This fixes the internal value used when neutralizing Nemhandel users. It helps ensure the right electronic invoicing proxy users are handled during data neutralization, avoiding mismatches caused by an outdated or incorrect identifier.
Original PR description
The value to neutralize a user should be nemhandel and not l10n_dk_nemhandel --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Changing text color in the HTML editor now affects only the selected content, even when an icon is nearby. This prevents unintended color changes to larger surrounding sections and keeps page formatting more predictable.
Original PR description
After this [commit], we'd have an issue when we tried to change a color and there was an `fa` icon next to our selection. Instead of changing the color of only the selection it would change it for the closest element with `color`, `background-color`, or `background-image` style properties. To reproduce the bug: - Set selection on an element that has a color style property on its parent, and the parent has .fa icon but not directly on our element - Try to change its color => Color of the whole parent changes task-5107147 [commit]: https://github.com/odoo/odoo/commit/927f4b973932d14961c148e13473017651a60dc0
Images in website card snippets now correctly follow the same rounded corners as the card itself. This improves visual consistency and prevents card images from appearing misaligned or unfinished.
Original PR description
Specification: - Border radius on the image in the card snippet was not being applied correctly. - Border radius should be consistent with the card's border radius. After this commit: - The image inside the card snippet will now correctly inherit the border radius from the card. - This change ensures that the image appears rounded in the same way as the card itself. task-4848288 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an intermittent automated test failure in the Mail app related to discarding a message edit with the Escape key. It improves test reliability by ensuring the message editor is ready before the discard action is checked, helping avoid false failures in validation pipelines.
Original PR description
Before this commit, test "discard on pressing escape" failed non-deterministically with the following error: ``` Failed to find 0 of ".o-mail-Composer" (Timeout of 3 seconds). Found 1 instead. ``` This happens at the very last step of the test: we click on composer of message to have the focus, so that we can then press ESCAPE and discard the editing of message and thus remove the composer. The issue happens because while we click on composer, we don't await the composer being logically focused, which is necessary for the good working of the ESCAPE feature to discard the message editing. This commit fixes the issue by awaiting the composer is logically focused after click on composer, so that pressing ESCAPE is properly expected to cancel the editing and thus remove the composer. Fix runbot-error-233394
The website editor no longer shows the Countries Filter option on the partners page, where it does not apply. This prevents confusion for editors by keeping customer-page settings visible only where they actually work.
Original PR description
Scenario: - install website_customer and website_crm_partner_assign - go to /partners - in edit mode, disable the option "Countries Filter" Result: nothing happen Cause: there is no filter options on /partners page, but the options of /customers page are targetting class o_wcrm_filters_top that is common to both page, so they are shown on /partners incorrectly. Fix in stable: change the selector to only show options on /customers. Fix in master: in website_customer, change the o_wcrm_filters_top class to o_wc_filters_top class. opw-5102381 Forward-Port-Of: odoo/odoo#228575
This fixes an issue where Odoo Studio could create custom views based on the wrong inherited view. Customizations will now attach to the closest main view, helping avoid incorrect or fragile Studio changes.
Original PR description
…ry view Accidentally pass an inheriting view id to edit view. Before this commit, the studio view thus created inherited from the extension view After this commit, it inherits from the closest primary view. opw-4930800 Forward-Port-Of: odoo/enterprise#94747
Clearing text from the website search bar no longer reloads the search results page. This keeps existing results visible until the visitor chooses to run a new search, creating a smoother browsing experience.
Original PR description
Before this commit, clicking on the "x" button on the searchbar would refresh the page and remove the result immediatly. The user might want to keep the result if he does not do another search. This commit avoids refreshing the page when removing the input content. Steps to reproduce the bug: - Click on the search button in the navbar - Search "tree" - Press enter (You are redirected to /website/search) - Click on the "x" button to delete the input content (The page refresh) task-3570756 Forward-Port-Of: odoo/odoo#181506
This fixes an issue in Belgian reporting where a partner form field was linked to the wrong underlying view. It prevents update failures when accounting report modules are upgraded, improving reliability for Belgian reporting installations.
Original PR description
The citizen_identification field was added to the partner view in l10n_be_reports, but the form 281.50 view for this required field was incorrectly inheriting from the base partner view. That led to…
The citizen_identification field was added to the partner view in l10n_be_reports, but the form 281.50 view for this required field was incorrectly inheriting from the base partner view.
That led to a traceback when updating account_reports/l10n_be_reports modules in 19.0+ versions:
This fix PR is a backport requested from upgrade: https://github.com/odoo/enterprise/pull/92104#pullrequestreview-3144302023.
```py
Odoo Server Error
Occured on 86642809-master-all.runbot135.odoo.com on model ir.module.module on 2025-08-11 14:04:32 GMT
Traceback (most recent call last):
------- A lot of calls ------
convert_xml_import(env, module, fp, idref, mode, noupdate)
File "/data/build/odoo/odoo/tools/convert.py", line 745, in convert_xml_import
obj.parse(doc.getroot())
File "/data/build/odoo/odoo/tools/convert.py", line 616, in parse
self._tag_root(de)
File "/data/build/odoo/odoo/tools/convert.py", line 559, in _tag_root
f(rec)
File "/data/build/odoo/odoo/tools/convert.py", line 570, in _tag_root
raise ParseError(msg) from None # Restart with "--log-handler odoo.tools.convert:DEBUG" for complete traceback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
odoo.tools.convert.ParseError: while parsing /data/build/enterprise/account_followup/views/partner_view.xml:4
Error while parsing or validating view:
Element '<xpath expr="//field[@name='citizen_identification']">' cannot be located in parent view
View error context:
{'file': '/data/build/enterprise/account_followup/views/partner_view.xml',
'line': 1,
'name': 'res.partner.view.form',
'view': ir.ui.view(5824,),
'view.model': 'res.partner',
'view.parent': ir.ui.view(127,),
'xmlid': 'res_partner_view_form'}
```
Forward-Port-Of: odoo/enterprise#96855Fixed an issue where document icons on website pages could disappear when editing a translated version of the page. This keeps file links visually clear for visitors and editors across languages.
Original PR description
This commit permits to keep document icon visible during the translation of a website page. Steps to reproduce the issue: - Have a website in English (main) and French - Edit the website in the main lang (English) - Drop Image text block - Change the image to a document - Save - Edit the translation in French => The document logo becomes invisible. This commit fixes this issue. task-3626918 Forward-Port-Of: odoo/odoo#165109
This fix ensures the SEPA Direct Debit app automatically includes the payment component it needs. It prevents installation or update failures when that required payment functionality was not already installed.
Original PR description
In Odoo 18, the view `account_sepa_direct_debit.account_payment_register_form_inherit_account_sepa_direct_debit references ` the field `payment_method_code` from `account.payment.register`. This field is added to the model in the `account_payment` module, which is not among the dependencies of `account_sepa_direct_debit`. This means that if the `account_payment` module is not installed, the installation/update of `account_sepa_direct_debit` will also fail. Here’s a screenshot of the error (runbot) <img width="1498" height="857" alt="image" src="https://github.com/user-attachments/assets/c878b2d2-fcea-467f-bfaf-ff1d48481eb4" /> [OPW 5139827](https://www.odoo.com/es_ES/my/tasks/5139827) @moduon MT-11953
Project budget totals now use the same color logic as individual budget lines. This helps users quickly read budget status on project dashboards and cards without confusing mismatches.
Original PR description
#### Issue: - Color for project budget and total project budgets are inconsistent #### Step to reproduce: - In Settings: - activate Project > Timesheet - activate Accounting > Budget Management - Create a project - Go to Dashboard - Add a budget of type 'Expense' - Add a line with a positive amount #### Current Behavior: - Color for the budget is correct - Color for the total budget is wrong #### Expected behavior: - Color for the budget and total budget are consistent While computing budget color, expense budget are dealt as if they were negative. Therefore having a positive amount for purchase order result in some problem on the color of the total of different budgets. This commit creates temporary variables to compute progress of the global budget. Project cards in kanban view use the `total_budget_progress` field, so it also needed to be updated the same way. opw-4812468
This fixes a setup gap that caused a website blog test tour to fail when sample data was not installed. The change adds the needed blog records so the automated check runs reliably in clean environments, reducing false failures during validation.
Original PR description
With PR [1], the blog_tags_with_date tour was introduced, but the required demo data were missing, causing the tour to fail when executed in an environment without demo data. This commit adds the necessary demo records to ensure the tour runs successfully even when no demo data are present. [1]: https://github.com/odoo/odoo/pull/225845 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 Forward-Port-Of: odoo/odoo#230753