Daily updates from Odoo
Thursday, October 16, 2025
16 changes · master
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
Resolved issues and error corrections
Fixes several issues in the document extraction correction screen, including crashes when switching columns, missed line matches, disappearing selection boxes on images, and inaccurate selection while scrolling. This makes manual correction of extracted documents smoother and less disruptive for users.
Original PR description
**[FIX] iap_extract: fix crash when clicking on another column of x2many** When a x2many field is filled using the rectangular selection tool, a crash could occur when the component is busy filling…
**[FIX] iap_extract: fix crash when clicking on another column of x2many** When a x2many field is filled using the rectangular selection tool, a crash could occur when the component is busy filling the values for a field and the user clicks on another column. This happened because the `getNewRecordValues` function was using the current value of `this.activeBoxType` to get the value for the new record. This is incorrect as `this.activeBoxType` can change when the user clicks on another column of the x2many. --- **[FIX] iap_extract: fix line matching in manual correction component** In the logic that handles the matching of selected boxes with existing lines, it was assumed that the existing lines were sorted from top to bottom, but that wasn't guaranteed. When it's not sorted, the out-of-order existing lines couldn't be match to the selected boxes. --- **[FIX] iap_extract: fix loss of focus when clicking on image viewer** When the attachment showed by the viewer is an image and the selected field is a date, a click on the image (to start a rectangular selection or to click a box) would cause a loss of focus on the field which caused the boxes to disappear, making it unusable. This happened because the date fields are displaying a calendar popup which listens on the `pointerdown` event to hide itself when the click occurs outside of it. This causes the loss of focus of the field which hides the boxes. On top of this, we also need to prevent the propagation of the click event when it occurs on the box layers, as it also causes the loss of focus on x2many fields (there is a global click event listener that exits the edit mode when the click occurs on another element). These issues weren't noticed before as they only occur on image attachments. On PDFs, the viewer is embedded in an iframe that prevents the `pointerdown` and `click` events to be visible to the main document. --- **[FIX] iap_extract: fix rectangular selection on scrollable images** The rectangular selection needs to be adjusted when the user scrolls while selecting boxes. This was already properly handled for PDFs, but not for image attachments. Forward-Port-Of: odoo/enterprise#96975
This fixes how Odoo Studio identifies the original view structure when simplifying customized screens. It helps prevent incorrect Studio view processing in cases where an inherited view is also treated as a main view, improving reliability for affected customizations.
Original PR description
Since commit 52f27c457e50a61c3b11c59e3fdd5ddd383f1317, the normalize function applies on `self` (ir.ui.view) and can take a string representing the arch to normalize. The normalization then occurs on the combination of the two, outputing a simplified version of the arch passed as a string in arguments. The base arch (`combined_arch`) is retrieved from self. Before this commit, this was done by controlling on self.inherit_id, which did not cover all bases to retrieve the main view's combined arch without the studio inheritance. After this commit, this is done by controlling on self.mode, because an inherited view can also be a root view. opw-5154217 Forward-Port-Of: odoo/enterprise#96992
Social app users can now post Twitter comments with images without upload errors, because the image type is correctly sent to Twitter. Comment drafts are also preserved when adding emojis or attachments, reducing accidental text loss while replying or editing comments.
Original PR description
Issue 1 ======= Steps to reproduce ----------------------- 1. Go to the Social app. 2. Create or Select any twitter post. 3. Add a comment to that post with an image. 4. Press Enter. ---> An error…
Issue 1
=======
Steps to reproduce
-----------------------
1. Go to the Social app.
2. Create or Select any twitter post.
3. Add a comment to that post with an image.
4. Press Enter.
---> An error notification will be shown.
When adding an image in a post comment to Twitter, the image was not uploaded properly because the MIME type was not set, and it defaulted to `application/octet-stream`.
This caused the following error:
```
{"errors": [{"parameters": {"$.media_type": ["'application/octet-stream'"]},
"message": "$.media_type: does not have a value in the enumeration
[video/mp4, video/webm, video/mp2t, video/quicktime, text/srt, text/vtt,
model/gltf-binary, model/vnd.usdz+zip, image/jpeg, image/gif, image/bmp,
image/png, image/webp, image/pjpeg, image/tiff]"}], "title": "Invalid Request",
"detail": "One or more parameters to your request was invalid.",
"type": "https://api.twitter.com/2/problems/invalid-request"}
```
From the above error, it's clear that Twitter only accepts specific MIME types.
This fix ensures the image has the correct MIME type so it can be uploaded without issues.
-------------------------------------------------------------------------------------------------------------------------------
Issue 2
=======
Steps to Reproduce
------------------------------
1. Select any post from social feed.
2. Add text comment or edit existing comment.
3. Upload file or add emoji.
=> The comment text is cleared/reset to its initial value.
Technical
------------------------------
With commit [1] we added `t-att-value` which sets the value of the textarea
on every re-render of the component.
After this commit
------------------------------
The initial value is only set once when component is mounted.
Removed `remove image` button for attachment while posting comments.
[1] https://github.com/odoo/enterprise/commit/ced5e88f433b7b9a8e1429259cd8bb6594b34852
Task-4845385
Forward-Port-Of: odoo/enterprise#91995This fixes a crash in Odoo Studio when users add a related monetary field on the same model, including its currency field. The change lets the Studio setup flow complete as expected, reducing disruption when customizing business screens.
Original PR description
In studio, add a related field to a monetary on the current model (ie without dotnames) Before this commit, it crashed. This because of c57c247490f0f58c8746af47ce035c28137faf97 After this commit, the flow works as expected opw-5147572 Forward-Port-Of: odoo/enterprise#97214
This fix corrects how the Belgian reporting partner form is linked so the required citizen identification field can be found during module updates. It prevents update failures and server errors when installing or upgrading the Belgian reports functionality.
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:
```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'}
```Annual Statements can now include localized report variants even when those variants are made up of multiple sections. This prevents errors during setup or upgrades and keeps the correct local financial reports available automatically.
Original PR description
The "Annual Statements" report comes with additional code at create() and write() of account.report, so that any new localized variant of the Balance Sheet, Trial Balance or Profit & Loss will automatically replace its root report in the Annual Statements report's sections. The idea behind that is to "magically" replace those generic reports by the right variant when it's created. The problem with that came when you tried adding a variant to one of those reports that was itself a composite report. In such case, you got a traceback stating a composite report's sections could not have sections themselves. We indeed only support one level of hierarchy for composite reports. We solve the issue by adding all the sections of such composite variant to the Annual Statements instead of adding the variant itself. Bug originally reported by Upgrade, here https://github.com/odoo/upgrade/pull/8571 . Forward-Port-Of: odoo/enterprise#97145
Fixes an issue where returning a regular product included in a rental order could leave the sale order showing the wrong delivered quantity. This improves accuracy for deliveries, returns, and related invoicing in rental workflows.
Original PR description
**Issue**: Returning a non-rental product in a rental order does not correctly update the delivered quantity. **Steps to reproduce**: - Enable rental transfers via Settings > Rental. - Create a…
**Issue**: Returning a non-rental product in a rental order does not correctly update the delivered quantity. **Steps to reproduce**: - Enable rental transfers via Settings > Rental. - Create a rental order with (in that order!): - A rental product - A non-rental product - Confirm the rental order. - Open the related sale order. - Go to the delivery and validate it. - Return the delivery and validate the return. - Observe that the delivered quantity in the sale order is incorrect. **Cause**: The [_get_outgoing_incoming_moves](https://github.com/odoo/odoo/blob/ea6776f095d556e3429d2b847a66f78f2e866380/addons/sale_stock/models/sale_order_line.py#L200C17-L200C85) method fails to detect incoming moves when the destination location has `usage='internal'` (as in rental flows), instead of `customer` (see [_is_outgoing()](https://github.com/odoo/odoo/blob/ea6776f095d556e3429d2b847a66f78f2e866380/addons/stock/models/stock_location.py#L464)). This causes the delivery quantity not to be decremented on return. **Solution**: Relax `_is_incoming()` logic to consider moves as incoming if they come from a rental and go to an internal location. opw-4894358 Forward-Port-Of: odoo/enterprise#97067 Forward-Port-Of: odoo/enterprise#91825
This fix updates access settings so Swiss payroll-related employee fields use the correct payroll user permissions. HR officers can now access employee records as expected, preventing related automated workflow failures.
Original PR description
Some fields on the version were still with the hr_user group where they should be payroll_user. This was causing some tour to fail when an HR officer tries to access an employee. Build error: https://runbot.odoo.com/odoo/runbot.build.error/233204 Forward-Port-Of: odoo/enterprise#97175 Forward-Port-Of: odoo/enterprise#97096
Features or functions removed from Odoo
The WhatsApp module no longer includes demo data that conflicted with test data and did not provide useful business value. This helps keep testing and sample setups cleaner and reduces avoidable errors in demo environments.
Original PR description
Conflicts with test data, and according to tde these demo data make no sense as they do nothing useful. Closes #86194 https://runbot.odoo.com/odoo/error/223071 Forward-Port-Of: odoo/enterprise#97138
Code cleanup and technical improvements
Enterprise modules were updated to work with a related platform change where currency rate lookups now also include the rate date. This keeps reports, subscriptions, and localization documents aligned with the latest shared behavior without changing day-to-day workflows.
Original PR description
Now _get_rates() returns also the rate date. Change the enterprise usage. task-5109447 https://github.com/odoo/odoo/pull/228442 https://github.com/odoo/upgrade/pull/8593