Friday, July 11, 2025
20 changes · saas-18.1
Enhancements to existing features
This change lets developers disable long-polling communication for hardware drivers so they can force and test websocket connections. It helps improve debugging of IoT device communication without changing normal business workflows.
Original PR description
In order to ease development/debugging lonpolling=>websocket fallback we added the possibility to disable longpolling calls in order to force the communication via websocket. Task: 4929877
The point of sale weighing dialog logic has been reorganized so it can be customized more easily. This is a minor internal improvement that supports tailored weighing flows without changing the standard user experience.
Original PR description
Enterprise PR: https://github.com/odoo/enterprise/pull/89280 This commit makes a small change to move the code that calls the weighing dialog into its own function. This is so it can more easily be overridden. task-4910716 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#217135
Resolved issues and error corrections
This fix prevents an automated mail discussion test from failing randomly by waiting until a reaction is fully removed before refreshing the page. It improves the reliability of validation checks without changing how users interact with the product.
Original PR description
Before this commit, tour "discuss_channel_public_tour" was failing non-deterministically at the following step: ``` .o-mail-Message:not(:has(.o-mail-MessageReaction)) ``` This happens because prio steps added a new reaction and asserted it was shown. It clicks on reaction to remove it and then page reload to see the reaction is gone. Problem is that it can reload page too fast and the RPC to remove the reaction did not have time to occurs. This commit fixes the issue by awaiting message no longer has reaction before page reload. Fixes runbot-error-227769 Forward-Port-Of: odoo/odoo#218132
The developer debug view no longer tries to load raw binary file contents, such as PDFs, when showing record data. This prevents connection errors for users inspecting attachments and keeps the system stable during troubleshooting.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Enable developer mode; 2. go to Settings / Technical / Database Structure / Attachments; 3. open a PDF attachement; 4. open developer tools; 5. click on Record / Data. Issue ----- > Connection lost. Trying to reconnect... Traceback in logger: > `UnicodeDecodeError: 'utf-8' codec can't decode byte ...` Cause ----- Commit 5ef4c07ada1b4 moved the `json_default` function from `date_utils` to `json`, with the purpose of letting it serialize objects besides `date` & `datetime`. When used for raw data of binary files like PDF, it encounters values that cannot be represented in UTF-8, and because `decode` defaults to strict error handling, an exception is thrown. Solution -------- When sending the `read` request to the ORM, only request fields of that aren't of type `binary` to ensure they're serializable. opw-4717657 Forward-Port-Of: odoo/odoo#209702
Employees in Indian companies can now open an approved time off request without triggering an access error. The fix prevents the system from trying to update leave details after approval, preserving normal access rules while keeping the form view usable.
Original PR description
**Steps to reproduce:** 1. Install l10n_in_hr_holidays and l10n_in 2. Switch to IN company 3. Create an employee related to Marc Demo in IN Company 4. Log in with Marc Demo and create a timeoff 5. Approve the timeoff by Mitchel admin 6. Open the form view of approved timeoff by Marc Demo **Issue:** - The _get_durations method in l10n_in_hr_holidays attempts to update the l10n_in_contains_sandwich_leaves field whenever it runs, including when opening the form view of an approved time off. This causes an access error, as updates are not allowed for Marc demo in the approved state. **Solution:** - Added a state check in the _get_durations method to prevent updating the field for approved records. opw-4741162 Forward-Port-Of: odoo/odoo#209233
The hardware drivers module now checks that certificate information received from Odoo is present before applying it. This prevents failed web server restarts caused by empty certificate data, improving reliability for connected hardware services.
Original PR description
We now ensure that the certificate data returned by odoo.com is not empty, to avoid nginx not restarting. Task: 492610 Forward-Port-Of: odoo/odoo#218325
Products using the store pickup option will now still show an out-of-stock message when unavailable. This helps shoppers understand availability clearly and reduces confusion during purchase decisions.
Original PR description
Before the commit, when a 'pick up in store' was published, the out-of-stock message was hidden to avoid confusion. However, customers want to benefit from it, and now we reintroduce it. opw-4791969 Forward-Port-Of: odoo/odoo#218284
This fixes a regression that prevented menu icons from using image formats other than PNG. Businesses can again use common formats such as JPG, SVG, GIF, WebP, and ICO for menu icons, restoring compatibility with earlier versions.
Original PR description
Description of the issue/feature this PR addresses: PR #135607 breaks support of image types other than `png` for menu icons. This puts back the support for previously supported image types. Current behavior before PR: You can't use a menu icon which has a type other than `png`. Desired behavior after PR is merged: You can use `gif`, `ico`, `jfif`, `jpeg`, `jpg`, `svg` and `webp` files like version `16.0`. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#218131
The Spanish localization module no longer fails to install if the default Service product category was previously deleted. This prevents setup interruptions by leaving the product category empty when the referenced category is missing.
Original PR description
Currently, an error occurs when the user installs the modules after deleting the 'Service' product category. **Steps to reproduce:** - Install the Inventory app. - Inventory > Configuration >…
Currently, an error occurs when the user installs the modules after deleting the 'Service' product category.
**Steps to reproduce:**
- Install the Inventory app.
- Inventory > Configuration > Categories > Delete 'Service'.
- Install the `l10n_es` module.
**Traceback:**
```
ValueError: External ID not found in the system: product.product_category_services
ParseError
while parsing /home/odoo/src/odoo/saas-18.3/addons/l10n_es/data/product_data.xml:3, somewhere inside <record id="product_dua_valuation_21" model="product. Product">
<field name="name">DUA VAT Valuation 21%</field>
<field name="default_code">DUA21</field>
<field name="categ_id" ref="product.product_category_services"/>
<field name="type">service</field>
<field name="sale_ok" eval="False"/>
<field name="purchase_ok" eval="True"/>
</record>
```
The error occurs because the user deleted the category and then installed the modules that reference the missing product category.
This commit resolves the error by providing a False value for the field if the product category is missing.
Sentry - 6710886848This fix hides actions such as starring or marking messages as read when a live chat conversation has not yet been saved. This prevents users from triggering errors while interacting with chatbot messages in temporary chat sessions.
Original PR description
**Before this PR:** the toggle-star and mark-as-read actions were visible on chatbot messages in a non-persisted livechat thread. Clicking these actions caused errors. This PR hides these actions when the thread is in a non-persisted state, preventing such errors. task-[4743758](https://www.odoo.com/odoo/project/1519/tasks/4743758) Forward-Port-Of: odoo/odoo#218196 Forward-Port-Of: odoo/odoo#214382
The India state list now shows the official name "Odisha" instead of the outdated "Orissa". This keeps contact address information aligned with Government of India naming guidelines and avoids confusion for users selecting Indian states.
Original PR description
<b>Steps to reproduce:</b> 1. Install the `Contacts` module. 2. Go to Contacts > Create a new contact. 3. Select country "India", then open the State dropdown. 4. Observe that "Orissa" appears instead of the updated name "Odisha". <b>Issue:</b> As per [Government of India guidelines](https://www.mha.gov.in/sites/default/files/2022-08/odishaAlterationAct2011%5B1%5D.pdf), the state name was officially changed from "Orissa" to "Odisha" in 2011. However, Odoo still uses the outdated name in the state selection. <b>Solution:</b> Update the name of the state from "Orissa" to "Odisha" in state records. <b>opw-4935633</b> Forward-Port-Of: odoo/odoo#218342
A purchase module test was updated to use a product type that is available without relying on inventory features. This prevents build failures and helps keep purchase testing stable for future updates.
Original PR description
`is_storable` is defined in `stock`. This test is located in `purchase`, that do not depend on `stock`. We use type='consu' instead. This change ensures that the product is created with the correct type. build_error-229762
This fix prevents existing activity type settings in Mail from being cleared when their linked model information is invalid. Instead, the system only raises a warning, reducing the risk of unnecessary configuration changes in stable environments.
Original PR description
Just warn models are invalid, but do not reset for stable. Data is not enforced hence no real issue with wrong models. Followup of odoo/odoo#156731 Forward-Port-Of: odoo/odoo#218549
A broken filter used during online payment setup was removed because it relied on information that is no longer searchable. This prevents failures or incorrect behavior when managing batch payments linked to online payment flows.
Original PR description
The aim of this commit is removing account_online_linked from the last domain which uses it. It couldn't work as we removed the search method. no task id Forward-Port-Of: odoo/enterprise#90028
The Peru stock reporting module now avoids an error that could stop users from generating Stock Move PLE valuation reports. This helps Peruvian companies complete required inventory reporting reliably when using future start dates.
Original PR description
Currently, an error occurs during the valuation of the Stock Move PLE reports. Steps to Reproduce: - Install the `l10n_pe_reports_stock` module. - Create a `new company` with the country set to…
Currently, an error occurs during the valuation of the Stock Move PLE reports. Steps to Reproduce: - Install the `l10n_pe_reports_stock` module. - Create a `new company` with the country set to `Peru`, and switch to this company. - Go to `Receipts` in `Inventory`, create a `new receipt`, and `validate` it. - Go to `Valuation` and click on `PLE Reports`. - Select the `start date` as the day after today, and click on `PLE 13.1`. `KeyError: 'category'` This error occurs during the valuation of the Stock Move PLE reports. In the query, we retrieve product_template.categ_id as category_id [1], but later category [2] is used to access category_id. Since the category key is not present in the line, this causes the error. [1] https://github.com/odoo/enterprise/blob/95d20fca13efa0977018b0dc260efd410891fce6/l10n_pe_reports_stock/wizard/stock_move_ple_report.py#L241 [2] https://github.com/odoo/enterprise/blob/95d20fca13efa0977018b0dc260efd410891fce6/l10n_pe_reports_stock/wizard/stock_move_ple_report.py#L303 This commit ensures that category_id is used in place of category for safe evaluation. sentry-6723761615 Forward-Port-Of: odoo/enterprise#89379
Indian localization reports now use the official state name "Odisha" instead of the outdated "Orissa". This keeps business reports aligned with Government of India naming guidelines and avoids outdated wording in compliance documents.
Original PR description
Issue: As per Government of India guidelines, the state name was officially changed from "Orissa" to "Odisha" in 2011. However, Odoo still uses the outdated name in report. Solution: Updated the records from "Orissa" to "Odisha". opw-4935633 Forward-Port-Of: odoo/enterprise#89947
Italian POS fiscal receipts and invoices no longer add a manual header because the fiscal printer already prints one automatically. This prevents customers from receiving receipts with two headers, making printed documents clearer and compliant with printer behavior.
Original PR description
The printer is already adding a header by default so we don't need to add one manually. Steps to reproduce: ------------------- * Setup an Italian fiscal printer in the POS * Open the POS and create a new order * Add a product and validate the order > Observation: The printed receipt has 2 headers. Why the fix: ------------ According to the Italian fiscal printer documentation, the header is automatically added by the printer, so we don't need to add it manually. Ticket before and after the fix:  opw-4794322 Forward-Port-Of: odoo/enterprise#89419
This fix ensures tests for stock barcode quantity updates include a user email address so notification sending works as expected. It helps prevent failures around notifying users when initial demand quantities change.
Original PR description
Updating the initial demand of a stock move notify the users. Without email address, the notification cannot be send. As the email address of the admin user is only fill in the demo data, this commit adds one specially for the test. runbot: 226778
Shipping labels sent to IoT-connected printers now include the expected print identifier. This prevents misleading printer errors while keeping label printing behavior unchanged.
Original PR description
Before this commit, the shipping label printing would send documents to the printer without using a print_id, which would cause an error (but the document would still print). After this commit, we send a print_id using a UUID just like for report printing, ensuring no error occurs on the IoT. opw-4829908 Forward-Port-Of: odoo/enterprise#89962 Forward-Port-Of: odoo/enterprise#89930
This update ensures the invoice option is selected before validating an order in the Italian point of sale flow. It prevents a validation error, helping sales proceed correctly without interruption.
Original PR description
## After this commit: - It ensure invoice checkbox is selected before validation, preventing the error and allowing the order to validate correctly. Runbot [link](https://runbot.odoo.com/odoo/runbot.build.error/159985) Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4916349) runbot-159985 task-4916349 Forward-Port-Of: odoo/enterprise#89486