Daily updates from Odoo
Thursday, October 16, 2025
29 changes
4 changes
Enhancements to existing features
Changes made to POS category names or display order are now sent to UrbanPiper when menus are synced again. This helps restaurants keep their online menus consistent without manual updates in UrbanPiper.
Original PR description
Before this commit: ----------------------------------------- - After syncing the menu, changes in a POS category (e.g., name or sequence) were not reflected in UrbanPiper when the menu was synced again. After this commit: ----------------------------------------- - Category updates (name or sequence) are now synced with UrbanPiper on subsequent menu syncs. Task-5122804 Forward-Port-Of: odoo/enterprise#96270
Italian electronic invoices are now sent one at a time instead of in large batches. This reduces timeout errors when many invoices are submitted together and helps prevent scheduled processing from getting stuck.
Original PR description
Some clients reported that when they send a full batch size=20 invoices at once, they get a timeout response and the cron job get's stuck. Processing invoices one by one instead of a full batch. IAP-apps PR: https://github.com/odoo/iap-apps/pull/1230 Task [link](https://www.odoo.com/odoo/project.task/5045529) task-5045529 Forward-Port-Of: odoo/odoo#231742 Forward-Port-Of: odoo/odoo#230146
The IoT client no longer waits for each message to the IoT Box to finish sending before continuing. This helps keep workflows more responsive when devices are communicating in the background.
Original PR description
In order to avoid blocking code execution when sending websocket messages to the IoT Box from the client, we stopped waiting for the `send_message` call to complete.
The Documents folder action menu now opens right away instead of waiting for all actions to load. Users also get quicker feedback when enabling embedded actions, with fewer repeated server updates during rapid changes.
Original PR description
The cogwheel which holds the folder actions was slow to open because it loads the actions at startup. To speedup it up, we backport the fix odoo/enterprise#90124 that allows the cogwheel to be open while loading the actions (instead of waiting that the actions are loaded). We also add a spinner while it is being loaded. When selecting action to embed for the folder, it was slow as well. To solve the problem, we toggle the action immediately (not waiting the answer of the server) and roll it back in case of failure. Finally, to limit the number of calls to the server, we only reload the search model if there are no pending toggle of action. So if you activate for example 5 actions in a row and the connection is slow enough, the search model will only be reloaded once instead of 5 times (when the 5 actions are toggled). Task-4828503 Forward-Port-Of: odoo/enterprise#94141
6 changes
Enhancements to existing features
POS category changes, such as renamed categories or updated display order, are now sent to UrbanPiper when the menu is synced again. This keeps online ordering menus aligned with in-store POS setup and reduces manual corrections.
Original PR description
Before this commit: ----------------------------------------- - After syncing the menu, changes in a POS category (e.g., name or sequence) were not reflected in UrbanPiper when the menu was synced again. After this commit: ----------------------------------------- - Category updates (name or sequence) are now synced with UrbanPiper on subsequent menu syncs. Task-5122804 Forward-Port-Of: odoo/enterprise#96270
Italian electronic invoices are now sent one at a time instead of in large batches. This reduces timeout errors with the SDI/IAP service and helps prevent scheduled processing jobs from getting stuck when many invoices are submitted.
Original PR description
Some clients reported that when they send a full batch size=20 invoices at once, they get a timeout response and the cron job get's stuck. Processing invoices one by one instead of a full batch. IAP-apps PR: https://github.com/odoo/iap-apps/pull/1230 Task [link](https://www.odoo.com/odoo/project.task/5045529) task-5045529 Forward-Port-Of: odoo/odoo#231665 Forward-Port-Of: odoo/odoo#230146
This update adds automated test coverage for the Turkish Nilvera e-invoice integration. It helps reduce the risk of future changes breaking invoice exchange behavior with the external Nilvera service.
Original PR description
There are no tests for the Turkish e-invoice module. This commit adds that. Task ID: 4655864 Forward-Port-Of: odoo/odoo#229980 Forward-Port-Of: odoo/odoo#216179
Users can now upload e-Receipt XML files exported from the Nilvera Portal directly from the Receipts list. Odoo creates draft receipts from the uploaded files and opens the generated receipts, reducing manual entry for Turkish e-dispatch workflows.
Original PR description
This PR introduces a new option to import e-Receipt XML files exported from the Nilvera Portal. - An "Upload e-Receipt (XML)" button is now added in the list view of Receipts (stock picking). - Upon upload, draft receipts are created based on the XML data. - After successful import, the user is redirected to a new view displaying the generated receipts. TaskID:4452521 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231600 Forward-Port-Of: odoo/odoo#217530
Users printing special shipping labels or documents without a linked IoT printer now see a clear error message instead of a technical crash. This helps warehouse and shipping teams understand what is missing and reduces support confusion.
Original PR description
Shipping Labels/Shipping Documents are empty reports created only to allow printing special documents from an IoT Printer. To prevent users from getting a traceback if they try printing it without linking an IoT Printer, we now raise a UserError. backport of odoo/enterprise#86818 Task: 4792491 Forward-Port-Of: odoo/enterprise#96054 Forward-Port-Of: odoo/enterprise#95794
The Documents folder action menu now opens immediately instead of waiting for all actions to load, with a spinner shown while loading continues. Selecting embedded folder actions also feels faster because changes appear right away, while unnecessary server refreshes are reduced during multiple quick selections.
Original PR description
The cogwheel which holds the folder actions was slow to open because it loads the actions at startup. To speedup it up, we backport the fix odoo/enterprise#90124 that allows the cogwheel to be open while loading the actions (instead of waiting that the actions are loaded). We also add a spinner while it is being loaded. When selecting action to embed for the folder, it was slow as well. To solve the problem, we toggle the action immediately (not waiting the answer of the server) and roll it back in case of failure. Finally, to limit the number of calls to the server, we only reload the search model if there are no pending toggle of action. So if you activate for example 5 actions in a row and the connection is slow enough, the search model will only be reloaded once instead of 5 times (when the 5 actions are toggled). Task-4828503 Forward-Port-Of: odoo/enterprise#94141
2 changes
Enhancements to existing features
Changes made to POS category names or ordering now carry over to UrbanPiper when the menu is synced again. This keeps online ordering menus aligned with the latest point-of-sale setup and reduces manual correction work.
Original PR description
Before this commit: ----------------------------------------- - After syncing the menu, changes in a POS category (e.g., name or sequence) were not reflected in UrbanPiper when the menu was synced again. After this commit: ----------------------------------------- - Category updates (name or sequence) are now synced with UrbanPiper on subsequent menu syncs. Task-5122804 Forward-Port-Of: odoo/enterprise#96270
The Documents folder action menu now opens right away instead of waiting for all available actions to load. Users also get quicker feedback when enabling folder actions, with fewer background server refreshes during multiple changes.
Original PR description
The cogwheel which holds the folder actions was slow to open because it loads the actions at startup. To speedup it up, we backport the fix odoo/enterprise#90124 that allows the cogwheel to be open while loading the actions (instead of waiting that the actions are loaded). We also add a spinner while it is being loaded. When selecting action to embed for the folder, it was slow as well. To solve the problem, we toggle the action immediately (not waiting the answer of the server) and roll it back in case of failure. Finally, to limit the number of calls to the server, we only reload the search model if there are no pending toggle of action. So if you activate for example 5 actions in a row and the connection is slow enough, the search model will only be reloaded once instead of 5 times (when the 5 actions are toggled). Task-4828503 Forward-Port-Of: odoo/enterprise#94141
6 changes
Enhancements to existing features
Two sample invoice documents have been moved from the Taxes subfolder to the main Finance folder. This keeps demo content better organized and makes finance documents easier to find in the expected location.
Original PR description
Move two invoice demo files from the 'Taxes' subfolder to the parent 'Finance' folder. This makes more sense as they are not relevant to taxes. Task-5075610
Asset invoice account searches now show clearer descriptions and better distinguish asset accounts from expense accounts, helping users choose the right account faster. The update also removes less useful details from the extended search view and corrects some Belgian account classifications for fixed assets.
Original PR description
It was hard to quickly find accounts to use on Asset Invoices (invoices where I buy something whose value I should depreciate over time):
- descriptions were lacking some examples
- it was hard to differentiate Expense and Asset accounts
- "Search More" view was displaying useless information
Also, some belgian account types were wrong (non-current assets instead of fixed assets).
task-id: 5123491The uninstall wizard now shows information about affected Studio customizations directly within the list of affected items instead of as a separate warning at the bottom. This makes the impact of uninstalling easier for users to understand before they proceed.
Original PR description
This commit builds upon https://github.com/odoo/odoo/pull/229087 to enhance the uninstall wizard UI related to Studio customizations. The warning alert previously shown at the bottom of the models list has been removed. Instead, information about affected customizations is now displayed as an additional item within the list of affected elements. task-5111398
The Rental Order button in the project topbar has been moved lower in the button order. This creates space for another related action to appear between Sales Orders and Rental Orders, making the topbar organization more flexible.
Original PR description
This commit alters the sequence set on the Rental Order embedded action to be able to put a new embedded action between Sales Order and Rental Orders ones in the project topbar. task-5164352
Point of Sale reporting now includes clearer delivery order insights for UrbanPiper integrations. Businesses can group results by delivery provider, track average preparation time, and see cancelled delivery order counts to better compare platform performance.
Original PR description
In this commit: === - Added support to group delivery order reports by provider (e.g., Zomato, UberEats). - Added field to track average preparation time. - Added field to calculate the number of cancelled delivery orders. task-4904372
Shared project Gantt charts now group tasks by their title instead of by stage. This makes it easier for users to quickly identify and follow individual tasks in shared project views.
Original PR description
Before this PR: --- The Gantt view in project sharing was grouped by stage, which made it difficult to visualize tasks directly by their titles. After this PR: --- The Gantt view in project sharing is now grouped by title, improving clarity for shared projects. task-5138906
4 changes
Enhancements to existing features
Changes made to POS category names or ordering now update correctly in UrbanPiper when menus are synced again. This keeps online menus aligned with in-store POS setup and reduces manual correction after category changes.
Original PR description
Before this commit: ----------------------------------------- - After syncing the menu, changes in a POS category (e.g., name or sequence) were not reflected in UrbanPiper when the menu was synced again. After this commit: ----------------------------------------- - Category updates (name or sequence) are now synced with UrbanPiper on subsequent menu syncs. Task-5122804 Forward-Port-Of: odoo/enterprise#96270
This update fine-tunes point-of-sale checks around preparation warning dialogs and simplifies how the partner button styling is handled. It helps keep POS workflows and automated validations more reliable without changing day-to-day business processes.
Original PR description
*: pos_restaurant_preparation_display, l10n_de_pos_res_cert, pos_settle_due This commit makes the following improvements: Adjusts the `discardOrderWarningDialog` tour step to check on the Product screen. Refactors the partner button class to use a getter instead of XML inheritance. Task-5116688
POS users can now change whether a product is available for food delivery directly from the product information popup. This helps restaurants react faster when items sell out or become available again, without leaving the POS workflow.
Original PR description
Before this commit: ------------------------- There was no way to change the food availability status of a product from the POS terminal. After this commit: ------------------------- Added an option in the POS UI product info popup to toggle the availability of products for configurations that support food delivery handling. Task: 4951476
Click and collect orders can now be placed for products that are out of stock when the business has chosen to keep selling them. This helps retailers avoid blocking eligible pickup sales and better support backorders or replenishment-based sales.
Original PR description
Allow selling with click and collect when a product is out of stock and continue selling. See also: - https://github.com/odoo/documentation/pull/14799
6 changes
Enhancements to existing features
The salary configurator sidebar now has better spacing between field labels and their tooltip icons. This small visual improvement makes the interface cleaner and easier to read for HR users.
Original PR description
In the salary configurator sidebar some fields have a tooltip to explain how the value is calculated, the icon for that tooltip had no margin between itself and the label. This commit adds a margin between them to make it more visually pleasing. Task ID: 5138530 Forward-Port-Of: odoo/enterprise#96483
Refreshing UrbanPiper webhooks from settings now also disconnects existing products from the POS and sends a fresh menu update to UrbanPiper. This helps keep the external delivery platform aligned with the latest point-of-sale menu data.
Original PR description
Following this commit: - On refreshing webhooks from settings, products will be unlinked from pos. - Fresh menu will be updated to Urbanpiper platform task-5163764
This update adds automated coverage for Indian e-invoicing when exports are made without a Letter of Undertaking and prices already include tax. It helps ensure the reported taxable base matches the invoice total, reducing the risk of incorrect compliance data.
Original PR description
Add test for export without LUT and price included tax, but base should be equal to invoice total.
This update adjusts how partner records are handled when sending accounting documents, reducing the risk of using the wrong customer or vendor context. It helps make the accounting document sending process more reliable without changing the user-facing workflow.
Original PR description
[IMP] account: Use a variable that is filled in to call a function. - The function is modified so that the “parents” variable does not call the “find_or_create” function, since a variable is being used that is filled in each pass of the ‘for’ loop with “res.partner”. Therefore, when “find_or_create” is called, self may have more than one “partner,” so the solution we have implemented is to change the ‘partner’ variable when the function is called and replace it with “self.env[‘res.partner’]”. https://github.com/odoo/odoo/blob/18.0/addons/account/models/account_move_send.py#L156
Changing inventory valuation settings on very large product categories is now much faster. This helps businesses avoid long waits or timeouts when updating stock valuation methods for categories with many product variants.
Original PR description
Changing a product.category's valuation from manual to real-time or real-time to manual does mainly two things. The first one is emptying the current stock and valuation. The second is to replenish…
Changing a product.category's valuation from manual to real-time or real-time to manual does mainly two things. The first one is emptying the current stock and valuation. The second is to replenish the stock according to the new valuation. This process can be heavy when the number of product.products related to the active product.category is big. This can happen when product.attributes are set to "Creation: Instantly" for instance. This commit aims at improving the overall speed of this change in some cases. A first optimization is to use `product_tmpl_id` to retrieve the `product_variant_ids`. When there are a lot of products, it's faster to explicitely use the delegated field `product_tmpl_id`. This avoids lots of calls to `__getitem`/`__setitem__` in `_compute_related`. The downside of doing this is that subsequent calls to `self.product_variant_ids` are gonna raise a CacheMiss. So we have to explicitely use `product_tmpl_id.product_variant_ids` every time. We argue that it's not really an issue here as retrieving the variant_ids from a product.product itself is not that frequent in the codebase. A second optimization is to avoid calling `product.qty_available` in `_compute_value_svl` in case `avg_cost = 0`. With an avg_cost of 0, the total_value is always going to be 0. So there's no point in calling the heavy compute method `_compute_quantities` to retrieve `qty_available` here. #### speedup In a database with 228 000 product.products linked to the same product.category, the time to switch the category valuation from manual to real-time: +15min (timeout) -> 18s --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The website editor now detects when a browser or device cannot support image filters and disables that option instead of showing an error. This keeps editing stable for users on systems without WebGL support, such as some Linux Chrome setups.
Original PR description
On recent versions of Chrome for Linux (v140+), the old SwiftShader software fallback for WebGL has been removed. As a result, new window.WebGLImageFilter() now throws if no GPU context is available, typically when WebGL is disabled or unsupported. Since the application cannot enable WebGL from JavaScript, this commit improves the user experience by detecting the absence of a WebGL context early and disabling image filters in edit mode. Instead of raising a traceback, the editor now skips the filter feature and can optionally display a friendly message explaining that WebGL is required to use image filters. This avoids runtime errors and ensures a more robust behavior on platforms where WebGL is unavailable. task-5117584 Forward-Port-Of: odoo/odoo#229705
1 change
Enhancements to existing features
French Point of Sale sessions are no longer limited to a single calendar day. This gives businesses more flexibility to keep a session open across several days when their operations require it, without being blocked by the previous daily restriction.
Original PR description
Before this commit: -------- - Point of Sale sessions were restricted to a single calendar day, preventing accumulation of data across multiple days in one session. After this commit: -------- - Removed the restriction that blocked sessions from overlapping several days. Task: 4735752