Daily updates from Odoo
Monday, October 6, 2025
26 changes
3 changes
Enhancements to existing features
The bank matching edit line wizard now shows only the line name instead of combining it with the reference. This keeps long references from disrupting the layout while still leaving reference details available in the kanban view.
Original PR description
Problem: - The reference field was displayed together with the bill name, causing misalignment when the reference is quite long in the edit line wizard. Solution: - Updated the edit line wizard to display only the line's name. - The reference remains visible in the kanban view, it is only removed in the edit line wizard. task-5113489 Forward-Port-Of: odoo/enterprise#95575
This update adds shared automated checks for multiple country-specific point of sale localizations, with flexible steps for countries that need special handling. It helps reduce the risk of regional sales and compliance flows breaking in future updates.
Original PR description
Thi commit add a generic tour that can be run in all pos l10n_modules. In some cases it requires some extra steps, this can be done with hooks. The hooks will execute different steps depending on the country the tour is run in. opw-4606788 Forward-Port-Of: odoo/odoo#229424 Forward-Port-Of: odoo/odoo#222232
This update adds shared automated checks for country-specific point-of-sale localization flows. It helps reduce the risk of localization issues in electronic invoicing and reporting across several countries by making validation more consistent.
Original PR description
Thi commit add a generic tour that can be run in all pos l10n_modules. In some cases it requires some extra steps, this can be done with hooks. The hooks will execute different steps depending on the country the tour is run in. opw-4606788 Forward-Port-Of: odoo/enterprise#95974 Forward-Port-Of: odoo/enterprise#91928
1 change
Enhancements to existing features
Bank reconciliation now creates the accounting move immediately when an XML file is uploaded. This makes the imported move lines available directly on the bank statement line, streamlining reconciliation work for accounting users.
Original PR description
When uploading a xml from the bank rec widget, the move will be created directly so we can put the move lines in the bank statement line. task-5107112
1 change
Enhancements to existing features
Brazilian service products now show the correct LC116 Code label instead of the product-focused Mercosul NCM Code label. This reduces confusion when configuring fiscal information for services and improves the explanatory tooltip.
Original PR description
Purpose:- - In Brazil, NCM is a code that has an acronym to specify the Mercosul Common Name for products, and for services, the right name is LC116 (Complementary Law 116), which specifies the federal code for a service. - But we have the same field `l10n_br_ncm_code_id` to configure both NCM for goods and LC116 for services and the same table can be used for both the cases. - So while configuring fiscal information for a service, user don't understand why it still shows the NCM label instead of LC116. Before this commit:- - Label `Mercosul NCM Code` was displayed for services confusing users. After this commit:- - Label `Mercosul NCM Code` is replaced with `LC116 Code` only for services. - Tooltip is also improved for better understanding. task-5096435 Forward-Port-Of: odoo/enterprise#96101 Forward-Port-Of: odoo/enterprise#95404
12 changes
Enhancements to existing features
AI-powered URL fetching now checks each website's robots.txt rules before accessing pages, using the Odoobot identity. This helps Odoo interact more politely with external websites, avoid disallowed content, and provide clearer feedback when access is blocked.
Original PR description
### Purpose Add `robots.txt` compliance to the `_fetch_url` helper. Before fetching any URL, we now check the site's `robots.txt` and ensure that our user agent (`Odoobot/1.0`) is allowed to access the requested path. ### Changes - Added `robots.txt` validation using `urllib.robotparser` - Respect disallow rules for the `Odoobot/1.0` user agent ### Why This ensures that our crawler behaves politely, avoids fetching disallowed resources, and provides more transparent failure reporting. --- **Task-ID:** 4779962
The bank matching edit line wizard now shows only the line name, preventing long references from disrupting the layout. References remain available in the kanban view, so users keep access to the information without cluttering the edit screen.
Original PR description
Problem: - The reference field was displayed together with the bill name, causing misalignment when the reference is quite long in the edit line wizard. Solution: - Updated the edit line wizard to display only the line's name. - The reference remains visible in the kanban view, it is only removed in the edit line wizard. task-5113489 Forward-Port-Of: odoo/enterprise#95575
The website editor’s +New screen now shows the correct pictograms for content options instead of generic icons. This makes the interface more consistent with the newer Odoo visual style and easier for users to scan.
Original PR description
This PR adds missing icons to the +new screen interface. Requires : https://github.com/odoo/odoo/pull/136274 task-2941442 ### Introducing pictograms to the UI : Since we now have pictograms to represent the different purposes of a module across the backend, we replace the `fa-icons` with these pictograms. Most of these pictograms have already been added, but some were missing.
The IoT device screens no longer show the unused “last sent value” widget or a hidden IP field. The connection type is repositioned to make device forms more balanced and easier to read, especially for receipt printers.
Original PR description
This PR removes the "last sent value" widget from the iot device views + also removes the always invisible "iot ip" field + also moves the connection type to the 1st column of the view to avoid 2nd column being bigger than the 1st for devices like receipt printers. Odoo PR: https://github.com/odoo/odoo/pull/229918 Forward-Port-Of: odoo/enterprise#96276
This update aligns several automated tests with a newer testing behavior that preserves data more safely during expected error checks. It helps keep validation runs stable and reduces false failures without changing everyday user workflows.
Original PR description
See community change, now assertRaisesRegex uses savepoint by default. https://github.com/odoo/odoo/pull/229046
The field service project setup screen has been simplified by removing an unnecessary timesheet product field and its label. This reduces visual clutter and makes the interface clearer for users configuring field service sales workflows.
Original PR description
Remove the `timesheet_product_id` field from the view and hide its label to streamline the interface and improve clarity for users. task-4581748
Lithuanian payroll benefits are now managed as configurable payroll properties instead of fixed rule amounts. This gives payroll teams more flexibility to model employee benefits and helps ensure salary rules apply the right values in more complex payroll scenarios.
VoIP call handling has been improved so that each active call keeps its own state instead of sharing one global state. This reduces the risk of call mix-ups or timing issues when users perform attended transfers involving more than one simultaneous call.
Original PR description
The original VoIP code was written under the assumption that there would only ever be one session at a time. Consequently, much of the session state was stored in a global object called the UserAgent. However, Odoo 19 implemented an attended transfer in VoIP, creating situations in which two sessions occur simultaneously. For this reason, the asynchronous code should no longer update session properties stored on the global UserAgent, as the session may have changed in the meantime, which could lead to race conditions. This commit moves some logic from the UserAgent to the Session, and ensures all callbacks are properly mapped to the relevant session. Forward-Port-Of: odoo/enterprise#95417
The OdooFin bank connection flow has been cleaned up to make it easier to maintain. It also now refreshes currency information when connecting an existing account, helping prevent missing currency labels on account amounts.
Original PR description
The aim of this commit is applying a technical cleaning of OdooFin connector client action. This action exists since the beginning of Odoo Fin and in an effort of cleaning the enterprise module, this commit tries to clean the javascript code. This commit also adds a call to the reloadCurrencies function in the connect_existing_account case to make sure that we have potential newly activated currency in the session. Without that change, connecting to an existing account with a deactivated currency will lead to amounts without their currency. task-5107780
Belgian payroll now includes dedicated records for joint committees and their categories, making employee payroll setup more structured and aligned with local labor classifications. This helps businesses manage Belgian HR payroll information more accurately and consistently across employee records.
Website pages can now be served from a high-level cache when it is safe to do so, reducing page rendering time and database load. The change includes safeguards to avoid caching pages that may contain dynamic or sensitive content, such as session-related sales data.
Original PR description
This commit introduces a high-level cache on the `website.page` model, similar to the one that existed before the `t-cache` directive was implemented in `ir.qweb`. This cache is designed to…
This commit introduces a high-level cache on the `website.page` model, similar to the one that existed before the `t-cache` directive was implemented in `ir.qweb`. This cache is designed to significantly improve performance by storing the HTML response of published pages, thereby reducing rendering time and database queries. The management and logic for this cache are placed directly on the `website.page` model, as it is the source of the HTML response for these records. This approach makes it easy to control caching behavior through a few new, overridable methods: - `_allow_to_use_cache`: Determines whether a page is allowed to be served from the cache based on the current request, URL, or session. For example, a page with a `sale.order` in the session would not use the cache. - `_allow_cache_insertion`: Checks if the generated HTML content is eligible for caching. This is useful for preventing sensitive or dynamic content from being stored. For instance, a page with a reference to a `sale.order` would not be inserted into the cache. - `_post_process_response_from_cache`: A hook called after a response is retrieved from the cache. This method allows for post-processing, such as incrementing counters or modifying HTTP headers, without regenerating the entire page. see https://github.com/odoo/odoo/pull/224487 see https://github.com/odoo/odoo/pull/88276 Forward-Port-Of: odoo/enterprise#94487
Changing a folder so it is not discoverable no longer automatically makes all documents inside require a direct link. This keeps folder-level visibility choices from unexpectedly restricting access to individual files, reducing confusion for users managing shared documents.
Original PR description
Changing the discoverability to not propagate to its children. Previously setting a folder to Discoverable to 'No' would result in all the files also requiring a link to access them, which is unwanted behaviour. Task-4996667 Forward-Port-Of: odoo/enterprise#93697
8 changes
Enhancements to existing features
The bank matching edit line wizard now shows only the line name instead of combining it with the reference. This keeps long references from disrupting the layout while still leaving the reference visible in the kanban view.
Original PR description
Problem: - The reference field was displayed together with the bill name, causing misalignment when the reference is quite long in the edit line wizard. Solution: - Updated the edit line wizard to display only the line's name. - The reference remains visible in the kanban view, it is only removed in the edit line wizard. task-5113489 Forward-Port-Of: odoo/enterprise#95575
Email handling now avoids loading large unnecessary message content into memory during common operations. This reduces the risk of out-of-memory failures and improves processing speed for mail-heavy databases, while keeping the same user-facing behavior.
Original PR description
Modifications are made around read, filtered, list comprehension. The read function usually does not prefetech fields other than stated. But in this case, since the fields are related fields from…
Modifications are made around read, filtered, list comprehension. The read function usually does not prefetech fields other than stated. But in this case, since the fields are related fields from another model, The fields of the other model are prefeteched. This includes the body which can be very big in size and cause an out of memory error. Filtered does not need other fields and keeps them unnecessarily in cache. List comprehension where it has a reference to specific field inside the model also triggers the prefetecher. Benchmark: | |Number of queries| SQL time| Python time|| |-------|----------------------------|----------------|---------------|-| |with prefetch| 82| 1.887 | 7.898| Out of memory| |Without prefetch| 120| 0.385 | 5.973| | The benchmark with the prefetch was done locally with increasing the memory limit. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#211075 Forward-Port-Of: odoo/odoo#183893
This update adds documentation for an internal testing utility used by the HTML editor team. It helps developers understand and use the tool more consistently, supporting more reliable future updates without changing the user experience.
Changing a folder to not be discoverable no longer automatically makes the files inside require a direct link. This keeps folder visibility settings from unexpectedly restricting access to existing documents, making document sharing behavior more predictable for users.
Original PR description
Changing the discoverability to not propagate to its children. Previously setting a folder to Discoverable to 'No' would result in all the files also requiring a link to access them, which is unwanted behaviour. Task-4996667
The spreadsheet selector grid now receives focus automatically when opened, so users can start interacting with it right away. This reduces extra clicks and makes spreadsheet editing feel smoother and faster.
Original PR description
Task: 5106371
IoT connections now reuse saved IoT box information so devices can continue receiving requests when the internet connection is unavailable. This reduces unnecessary server calls and improves reliability for connected hardware and self-ordering flows during network interruptions.
Original PR description
In order to make the `iot_http` service work offline, we cache the iot box records until there is a full action failure. This avoids useless orm calls and in the meantime, allow making requests to the iot box without internet connection. Community PR: odoo/odoo#226839 Forward-Port-Of: odoo/enterprise#93895
VoIP call recordings are now saved in a single audio channel instead of stereo. This reduces storage usage while keeping recordings suitable for typical business review and compliance needs.
Original PR description
Task-5082457
This change keeps the main company first while sorting the other selected companies in the user's session context. This reduces duplicate cache entries for equivalent requests, helping improve consistency and avoid unnecessary repeated processing.
Original PR description
The `allowed_company_ids` key encodes the ids of the companies the user is currently logged in. There's always a "main" company, the first one, which acts as default company. The order for the others is not relevant. Before this commit, those ids weren't sorted. This was a (small) problem for the rpc caches, because that list of ids is present in the context, which is stringified in the cache keys. So the same request but with `allowed_company_ids`, e.g., `[3,1,2]` and `[3,2,1]` would result in 2 different keys in the cache, and could thus lead to cache misses even though we already did the same request. This commit thus sorts the ids (except for the one). Task~5104126 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
1 change
Enhancements to existing features
Belgian partner lookups on the Peppol network now check the two most commonly used identifier types, improving the chance of finding the right participant. The update also removes outdated warnings about recommended identifiers because the mandatory identifier handling is now managed automatically by the access point service.
Original PR description
1. For belgian partner, we now check for 0208 and 9925 which are the two most used EAS when looking for partner existence on the Peppol network. 2. Remove the warnings about the recommended EAS: 0208 is now the mandatory EAS, this will be handled directly on IAP where the Peppol Access Point will try to register 0208 in all cases with an alias system. Note that we have always computed 0208 as recommended value in registration process. task-4852903 Forward-Port-Of: odoo/odoo#227431