Daily updates from Odoo
Friday, July 25, 2025
17 changes · master
Enhancements to existing features
The food delivery configuration fields no longer allow users to quickly create new configuration entries from the product setup screens. This keeps setup more controlled and prevents accidental or unnecessary configuration records.
Original PR description
*= pos_urban_piper_enhancements -------------------------------------------------- In this commit, Removed the quick create option for the `Available on food delivery` field as we don't require the config creation from this field. task: 4951290
The AI discussion tools were adjusted to stay compatible with a related platform change that removes direct message author data. This helps keep AI actions in conversations working reliably after the underlying messaging update.
Original PR description
PR community: https://github.com/odoo/odoo/pull/219890
The AI features in Discuss were updated to use the latest way of reading a member's availability status. This keeps AI-related chat actions aligned with the main platform changes and helps prevent inconsistencies after the underlying status logic changed.
Original PR description
This commit adapts the code to the new member.im_status getter. PR community: https://github.com/odoo/odoo/pull/220066
WhatsApp discussion channels now send only the information relevant to each channel type. This reduces unnecessary network data and helps keep related checks simpler and easier to maintain.
Original PR description
This commit updates the `_to_store_defaults` of the discuss channel model only to return data that makes sense according to the channel type. This will reduce the payload size on the network but also clean the many tests that list useless fields. task-4883062 community: https://github.com/odoo/odoo/pull/220095
User selection fields now rely on the standard creation flow instead of showing redundant quick-create options. This reduces confusion because creating a user still requires an email, so the streamlined flow leads users to the same complete setup screen when needed.
Original PR description
- Since an email is mandatory when creating a user, the `quick_create` option automatically falls back to `create_and_edit`. As a result, from the user's perspective, both `quick_create` and `create_and_edit` effectively serve the same purpose. - This PR removes both of the options from wherever we have used them with the Many2xAvatarUser widget. Task-4613146
Point of Sale testing tools were improved so teams can more easily validate store services, model data, and standalone components. This helps reduce regressions in PoS-related features across appointment, IoT, restaurant, payment, and delivery integrations, with no direct change expected for end users.
Original PR description
Improved test hoots in PoS to test model and service functions. It is now possible to access the `pos_store` via `getService(“pos”)`. This will automatically load mocked data and information on the various models. Components can also be mounted independently of the rest of the application, so that their functions can be tested. For the moment, only `point_of_sale` models are loaded, but the implementation is designed to be patched from other PoS modules. Forward-Port-Of: odoo/enterprise#90339 Forward-Port-Of: odoo/enterprise#90234
Resolved issues and error corrections
This update adjusts an automated test for Mexican point-of-sale invoicing so it no longer fails because of an irrelevant generated identifier. It helps keep validation reliable without changing any customer-facing invoicing behavior.
Original PR description
Fix the test file for pos order then invoice request to match the expected XML structure, by ignoring the `UUID` attribute in the `TimbreFiscalDigital` element because it is not relevant for the test and can cause issues with the test validation. build_error https://runbot.odoo.com/runbot/build/83409879 Forward-Port-Of: odoo/enterprise#88756
This fixes a display issue on the shop page where products sold by subscription could show the same price twice. Customers now see a clearer, more professional product listing, reducing confusion during browsing and purchase decisions.
Original PR description
This PR fixes an issue where the product price was displayed twice on the `/shop` page of a product with a subscription type. task-4954676 Issue: <img width="618" height="271" alt="image" src="https://github.com/user-attachments/assets/e00adabf-ecfb-4424-8c2a-3b7413cbeee3" /> Forward-Port-Of: odoo/enterprise#90924
The Luxembourg payroll settings now reflect the latest accident insurance bonus-malus factors required by local regulations. This helps companies use the correct payroll configuration and avoid relying on an outdated 0.9 factor.
Original PR description
**Problem**: =========== Bonus-Malus Factor l10n_lu_accident_insurance_factor, the value 0.9 is no longer used according to an update in Luxembourg regulations. Found the legal documentation from Luxembourg's social security institutions page: https://www.secu.lu/assurance-accidents/reglements/ **To Reproduce**: ================== -> install l10n_lu_hr_payroll -> switch to Luxembourg company -> settings -> filter with Bonus-Malus Factor **Solution**: ============== Update Bonus-Malus Factor https://github.com/odoo/upgrade/pull/8088 opw-4818034
This fix prevents an error when users or integrations access signing requests that are not in the shared state. Non-shared requests now safely show no sharing link instead of triggering a traceback, improving reliability for administrators and connected systems.
Original PR description
### Issue Commit [58425a0](https://github.com/odoo/enterprise/commit/58425a0022c79f2c45f23fdd5a5476d8c20a887e) introduced a new field `share_link` in `sign.request` that gets computed for requests…
### Issue Commit [58425a0](https://github.com/odoo/enterprise/commit/58425a0022c79f2c45f23fdd5a5476d8c20a887e) introduced a new field `share_link` in `sign.request` that gets computed for requests that are in the 'shared' state. However this compute method fails for requests not in the 'shared' state leading to a traceback error. This commit fixes it by setting the default as False for the sign.request records that do not have state='shared' so the traceback error is handled. This can be reproduced in v17 and above by: 1. Open any sign.request record that isn't in the shared state 2. Enable Developer Mode 3. Using the debug icon, click on view record data The traceback will be visible here which mentions that the compute method failed to assign It can also be re-produced by using an xml-rpc / json-rpc ORM call to search_read the sign.request records that does not have state = 'shared' ### Before https://github.com/user-attachments/assets/24c07f2a-2398-44b4-8969-30abb576876a ### After https://github.com/user-attachments/assets/e92b1212-5405-4b98-ba41-c81b2ac547d7 [opw-4864159](https://www.odoo.com/odoo/project/49/tasks/4864159) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#90576
Fixed an issue in the Gantt schedule where clicking Today after choosing a one-day custom range could create an invalid date range. This ensures navigation arrows continue to work correctly for resource bookings and similar planning views.
Original PR description
Steps to reproduce ================== - Go to Appointments > Schedule > Resources Bookings - Select a custom range with the same start date and stop date - Click apply - Click on Today - Use the next arrow => Nothing changes Cause of the issue ================== If there is 0 day between the start and stop dates, clicking on today will have the stop date before the start date. opw-4754203 Forward-Port-Of: odoo/enterprise#88919
This change moves Point of Sale configuration tests into the Enterprise POS module where the related functionality belongs. It helps keep automated checks aligned with the correct product area, reducing build issues and improving release reliability without changing user-facing behavior.
Original PR description
move tests for POS configuration settings from point_of_sale to pos_enterprise refer to this commit :https://github.com/odoo/odoo/pull/215611/commits/0074d743451834424706608fc76f32b0df9c5f1c build_error-227602 Forward-Port-Of: odoo/enterprise#89351 Forward-Port-Of: odoo/enterprise#88742
The Partner Commission module can now be installed even if the default Services product category was deleted. This prevents an installation failure and lets businesses continue setting up commissions without needing to restore that category first.
Original PR description
Currently, a ParseError is arising when the user installs the `partner_commission` module after deleting the `Services` in Product Categories/Configuration. Steps to reproduce: --- - Install…
Currently, a ParseError is arising when the user installs the `partner_commission` module after deleting the `Services` in Product Categories/Configuration.
Steps to reproduce:
---
- Install `Invoicing` application (without demo data).
- Invoicing > Configuration > Product Categories > Delete `Services`
- Now install `partner_commission` module
Traceback:
---
```py
ValueError: External ID not found in the system: product.product_category_services
ParseError: while parsing /home/odoo/src/enterprise/saas-18.4/partner_commission/data/data.xml:3, somewhere inside <record id="product_commission" model="product.product">
<field name="name">Commission</field>
<field name="purchase_ok" eval="True"/>
<field name="categ_id" ref="product.product_category_services"/>
<field name="type">service</field>
</record>
```
The error occurs because the user deleted `Services` in Product Categories, and then tried to install the other module.
This commit resolves the error by providing a False value for the field if the product category is missing.
sentry-6754387015
Forward-Port-Of: odoo/enterprise#90598The Belgian certified POS setup now shows the correct required cash rounding value in its validation message. This helps users configure Belgian Blackbox POS settings accurately and avoids confusion during setup.
Original PR description
The message `"The rounding method must be set to 0.5 and HALF-UP"` was wrong in `pos_blackbox_be/models/pos_config.py`
```py
def _check_cash_rounding(self):
if not self.cash_rounding:
raise ValidationError(_("Cash rounding must be enabled"))
if (
self.rounding_method.rounding != 0.05
or self.rounding_method.rounding_method != "HALF-UP"
):
raise ValidationError(
_("The rounding method must be set to 0.05 and HALF-UP")
)
```
It should be `"The rounding method must be set to 0.05 and HALF-UP"` as indicated in that documentation :
https://www.odoo.com/documentation/17.0/applications/finance/fiscal_localizations/belgium.html?highlight=blackbox#certified-pos-system
It's the same for 18.0
I also added the field for translation into `pos_blackbox_be.pot`
opw-4862967
Forward-Port-Of: odoo/enterprise#90321
Forward-Port-Of: odoo/enterprise#87496This update makes automated checks for the report editor more dependable by waiting more reliably for scrolling to finish. It reduces occasional false test failures, helping development and release validation run more smoothly without changing user-facing behavior.
Original PR description
Linked tests: - `test_add_field_blank_report` - `test_field_placeholder` These tests contained scroll-related indeterminacies that caused them to fail from time to time. This was due to the fact that we were modifying the scroll and we used this code to make sure it was done: ```js await new Promise(requestAnimationFrame); ``` However, sometimes this wasn't enough, so we now use `waitUntil`, which is more robust https://runbot.odoo.com/odoo/runbot.build.error/181989 runbot-181989 Forward-Port-Of: odoo/enterprise#90806
Fixed how Helpdesk tickets created from the website contact form handle the description field. The field is now hidden when it would be the only extra field, and its label uses the visitor's selected language when shown.
Original PR description
## Short functional explanation of the issue When a ticket is created and there are no additional fields, the only field in the ticket is the description field. Moreover, it is not translated. ##…
## Short functional explanation of the issue When a ticket is created and there are no additional fields, the only field in the ticket is the description field. Moreover, it is not translated. ## Reproduction Steps 1. Go to the general settings. Add a language where the term "description" differs from the english word (for example, Spanish). Do the same for the website settings. 2. Go to the website app. Scroll down and change the language. Then, click on the translated "contact us" tab. Fill the form and send the ticket. 3. Go to the helpdesk app and open the ticket you just created. ### Expected behavior The description field shouldn't show, as it appears in the description page. The field should only show if there are additional fields on the "contact us" page. ### Unexpected behavior The description field shows, untranslated. ## Origin of the issue In the ticket code, the field.name is used, instead of the field .field_description, which is translatable. Moreover, there isn't a condition checking if the field should appear or not. -- opw-4876726 Forward-Port-Of: odoo/enterprise#88913
Code cleanup and technical improvements
The helpdesk website knowledge base search was reorganized behind the scenes to use a newer interaction structure. This should preserve the existing customer experience while making the feature easier to maintain and improve in future updates.