Daily updates from Odoo
Friday, July 10, 2026
9 changes · master
Enhancements to existing features
Point of Sale preparation displays can now be configured to create separate preparation orders for each product. This helps kitchen or prep teams organize work more clearly while keeping combo items grouped correctly with their main product.
Original PR description
In this commit: --- - This commit adds a split-per-product option on preparation displays, loads it in the PoS, and uses it to create separate preparation orders per product while keeping combo children attached to their parent line. related-https://github.com/odoo/odoo/pull/267412 task-6227300
VoIP call durations are now labeled and formatted more consistently in search filters, graphs, and pivot reports. This helps users understand whether duration values are shown in seconds or formatted time, reducing confusion when analyzing call activity.
Original PR description
Previous commits such as [1] worked towards a better uniformisation of the way we store and display duration values in VoIP. This commit hopefully takes care of the remaining issues: - Search view: custom filters (using the Domain component) would show things like "Duration" "greater than" "34", without any unit displayed. For that one, the only real possibility is to modify the label of the python field to "Duration (s)", so filters become clearer. It requires explicitly forcing labels to "Duration" everywhere else though. - Graph view: using widget="voip_duration" as in other views so that duration values are formatted properly. - Pivot view: using widget="voip_duration" as in other views so that duration values are formatted properly. [1]: https://github.com/odoo/enterprise/commit/906b0702daeddcc43782bc4234b18c8d01a29c8e task-6234431
This update moves Odoo Enterprise screens and website snippets to the new shared icon system. Users should see more consistent icons across accounting, website, appointments, knowledge, sign, studio, room booking, and related areas, while reducing reliance on older icon assets.
Original PR description
Community PR: odoo/odoo#275347 task-5901783
Field Service shift notes can now include rich formatting such as links, images, and clearer instructions instead of plain text only. Product descriptions are also added automatically, helping technicians see relevant job details directly in their shift instructions.
Original PR description
Currently, the **Note** field only supports plain **text**, limiting the ability to include rich content such as links, images, and formatted instructions. This commit converts the **Note** field to **HTML** and automatically displays the product description in it, making Field Service shift instructions richer and easier for technicians to follow. Task-6285798
Sales users can now choose a subscription plan directly for optional subscription products in the configurator, instead of always receiving the first available plan. When a plan is already set by a parent product or cart subscription, the selector is locked so optional items stay aligned with the existing subscription.
Original PR description
Previously, optional subscription products in the configurator dialog would default to the first available subscription plan. This behavior was restrictive and did not allow users to choose a different plan. This change introduces an inline plan selector displayed next to the price of each optional subscription product in the configurator dialog: - The selector is editable when no plan is enforced (i.e., no parent subscription product and no existing subscription in the cart). - The selector is locked when a plan is already defined, ensuring optional products inherit the parent subscription plan. task-6130917
Validated tax returns can now be reset more flexibly when later returns already exist, as long as the report does not rely on carryover values. This reduces extra work for accounting teams that need to correct and resubmit an earlier period without undoing every subsequent return.
Original PR description
Let's consider we have validated the return of our tax report for January and February. Then, we realize we made an error in January, and want to modify this return and resubmit it. Before this…
Let's consider we have validated the return of our tax report for January and February. Then, we realize we made an error in January, and want to modify this return and resubmit it. Before this commit, an error message blocked the direct resetting of January's return, because February's had been posted. To be able to reset January, it was necessary to reset all subsequent returns. This was annoying. Such fixes need to happen in many countries (while some other rather make the adjustments in the next period to declare, like Belgium). This restriction was originally introduced to avoid inconsistencies in case the returns declared from the previously submitted returns. Two features could create such cases: 1) tax amount to recover, which was directly deduced from the closing entry when it contained something to pay 2) carryover, which created external values able to impact the following periods => Case 1) is not true anymore. When an amount needs to be recovered, we just show the balance taking it into account on the following returns, but don't change anything to their closing at all. => Case 2) still holds. So, all we need to put under control is carryover, which is what we do now. If the report doesn't use carryover at all, its returns can all safely be reset, whatever the state of the rest of the return chain.
The Sources tab for AI agents now has a clearer mobile-friendly layout. Adding a source also uses the same dialog as the list view, making the experience more consistent and easier to use on smaller screens.
Original PR description
The Sources tab in the AI agent form did not provide a dedicated kanban layout, resulting in a poor view on smaller screens. This commit adds a structured kanban view for AI agent sources and updates the 'Add Source' action to open the same creation dialog as the list view, providing a more consistent user experience. task-6366399
The bank reconciliation widget now loads less unnecessary data, especially on very large databases. This should make opening and using bank reconciliation faster for accounting teams without changing their workflow.
Original PR description
When opening the bank rec widget on huge DB's, it takes
a lot of time to load everything.
This commit aims to improve the loading performances by
removing some JS fields:
1 - reconciled_lines_ids: We only use the first element of
this recordset in JS, so we add a new computed field
to only send 1 record to the JS
2 - hasAttachment: replace the long JS computation of
`get hasAttachment` with a python computed field.
3 - Replace matched_credit_ids and matched_debit_ids
with exchange_diff_partial_ids.
Linked:https://github.com/odoo/odoo/pull/269119
task-6275945
Forward-Port-Of: odoo/enterprise#119557The timesheet assistant now gives clearer guidance when setup issues prevent activity tracking, including distinguishing server and CORS problems and warning when the browser watcher is missing or inactive. It also improves suggested timesheet entries by showing better context, restoring ActivityWatch suggestions after deleted Odoo events, and choosing more relevant projects for calendar events.
Original PR description
Forward-Port-Of: odoo/enterprise#122340 Forward-Port-Of: odoo/enterprise#115859