Daily updates from Odoo
Friday, August 14, 2026
29 changes · master
Enhancements to existing features
The search view editor now hides fields that belong to the search panel from its suggestion list. This reduces confusion for users by only showing relevant fields when configuring search views.
Original PR description
The search view editor displays the fields from the search panel, which can be confusing for the user. This commit filter's out those fields from the autocompletion container. tasl-6366232
Belgian payroll salary rule categories for meal vouchers, representation fees, and private car reimbursements have been renamed to make their purpose clearer. This helps payroll users understand that these categories indicate eligibility, reducing confusion in configuration and reporting.
Original PR description
Meal Voucher, Representation Fees and Private Car Reimbursement categories were renamed from boolean fields and kept awkward, unclear names. Rename them to Meal Voucher Eligible, Representation Fees Eligible and Private Car Reimbursement Eligible. Task 6459956
Studio users can now choose which field is totaled in kanban views directly from the sidebar. This makes it easier to customize dashboards and boards without needing technical changes.
Original PR description
The `sum_field` cannot be set in kanban views through Studio. This commit exposes it as a new property in the sidebar. task-6366141
Belgian payroll users can now see Dimona information directly on the employee form when a Dimona environment is configured. Internal synchronization controls remain hidden in debug mode, so everyday users get the relevant information without exposing technical settings.
Original PR description
Dimona fields on the employee form were restricted to debug mode. Expose the Dimona group to standard users when a Dimona environment is configured, while keeping internal sync flags restricted to debug mode. Task: 6441891
Refused time off requests are now hidden from the Time step in payroll runs because they do not affect payroll calculations. This keeps the payroll review screen cleaner and helps payroll teams focus only on relevant absences.
Original PR description
Refused time off has no impact on the pay run, so there is no reason to keep showing it in that step. Exclude it from the action domain instead, so the request simply disappears once it is refused. task-6446029
The appraisal survey setup now shows placeholder text in the “Shared With” field. This small usability improvement helps users understand what information to enter when configuring survey sharing.
Original PR description
. Add a placeholder for Shared With field task-6439149
The Obox status widget now uses simple colored icons to show whether each connection type is available. This makes it easier for users to quickly understand websocket and local network connectivity at a glance.
Original PR description
We update the Obox status widget to only display icons with colors depending on wether the connection type is available. <img width="758" height="92" alt="image" src="https://github.com/user-attachments/assets/069962ee-a2b2-4c23-97d5-807b200e332a" />
Resolved issues and error corrections
The Swiss payroll time off form layout has been corrected so HR users can view and complete the form more easily. This reduces confusion when managing employee absences in the Swiss payroll module.
Original PR description
This commit fixes the layout of the time off form view for the Swiss payroll module. task-6275864
This fixes a small compatibility issue in the UK tax reporting screen after a recent reporting framework update. Businesses using UK reports should see the HMRC submission button read report settings correctly, reducing the risk of errors when preparing submissions.
Original PR description
https://github.com/odoo/enterprise/commit/5da8982a0edf9655ef622f1937ebe2cb72abff07 ([IMP] account_reports: Report Virtual Grids and Reactivalypse) made `AccountReportController.options` a signal but forget a caller that (probably) landed in master after the author started its PR (but before he closed it) https://github.com/odoo/enterprise/commit/f648605aac92fa6414bb7ab5f9a4347c3bf7aa05
The AI tools now avoid loading full file contents when reading records, preventing oversized requests and improving reliability. For website-related AI use, file fields can still be referenced through a URL when needed instead of raw data.
Original PR description
Instead of using the binary field raw content and overflowing the context, we are searching with `bin_size=True`. This way, result will contain only binary field's size, instead of the raw content. However, in ai_website it might be useful to have an address of the field, instead of its size, as ai might need to use it.
The self-order test flow was adjusted because the takeaway option is now selected automatically when it is the only available choice. This keeps the validation aligned with the current customer experience and avoids false test failures.
Original PR description
In this commit: - The takeaway preset is now automatically selected when it is the only available option. Remove the explicit "Takeaway" selection step from the tour to match the updated behavior. Task:6217791 Community PR : https://github.com/odoo/odoo/pull/274301 Forward-Port-Of: odoo/enterprise#127350 Forward-Port-Of: odoo/enterprise#122979
Corrects an incorrect classification used in Swiss withholding tax mutation reporting. This helps payroll declarations use the expected official values, reducing the risk of rejected or inaccurate submissions.
Original PR description
task-6116327 Forward-Port-Of: odoo/enterprise#127745
The Planning menu now appears in the intended order when Field Service is installed. This avoids confusion for users who navigate Planning while preserving the normal menu structure for installations without Field Service.
Original PR description
Ensure the Planning menus are displayed in the correct order when Field Service is installed, without affecting the standard Planning menu structure. task-6443397 Forward-Port-Of: odoo/enterprise#127377
This fixes an internal automated test for payroll pay runs so it waits for the correct page to finish loading before continuing. The change reduces false test failures and helps keep payroll development and releases reliable without changing end-user payroll behavior.
Original PR description
Currently in payroll_payrun_tour in hr_payroll module, if we put step_delay as paramater in tour test. the tour test will get fail, after the validation in payslip step. When return to Payrun View Page, the next step to click New Button and Select the Payrun in the Dropdown option. But New Button with dropdown only available in the Payslip steps. The reason it works in runboot before due to race conditions where the test still click new button in Payslip step, expected there is dropdown in this view. The reason it's not work in with step_delay, because step_delay make we have time to change the payrun view, when we trigger the new button, the button is no longer reflected to Payslip step but in PayRun View. In this PR, expected to wait the tour test to fully reload the Payrun View before click the New button, so it will work with or without step_delay. task-6455499 Forward-Port-Of: odoo/enterprise#127204
The Generate Sample Data button now works even when ActivityWatch is connected. Users can view generated sample events together with their real activity data, making demos and testing easier without disconnecting ActivityWatch.
Original PR description
Before this commit, the Generate Sample Data button only worked when the ActivityWatch server was unavailable. When ActivityWatch was running, users could only load real activity data. After this commit, clicking Generate Sample Data while ActivityWatch is connected injects the generated sample events alongside the real ActivityWatch events, allowing both to be displayed together. task-6373606 Forward-Port-Of: odoo/enterprise#126498 Forward-Port-Of: odoo/enterprise#124981
Australian Single Touch Payroll submissions now check that required payslips or employees are present before sending data to the ATO. Instead of an unexpected system error, users receive a clear validation message, helping them correct incomplete payroll records before submission.
Original PR description
When submitting payroll data to the ATO from an STP record without any payslips or employees, a traceback is raised. Steps to reproduce the error: - Install ``l10n_au_hr_payroll_account`` module -…
When submitting payroll data to the ATO from an STP record without any payslips or employees, a traceback is raised. Steps to reproduce the error: - Install ``l10n_au_hr_payroll_account`` module - Switch to ``My australian Company`` - Go to Payroll > Configuration > Settings > In Australian Localization, Set BMS ID > Set STP Responsible and his date of birth - Go to Payroll > Reporting > Single Touch Payroll > Create a new record > Set Payment Date > Submit to ATO > Sign & Submit to ATO Traceback: ```py IndexError: tuple index out of range ``` https://github.com/odoo/enterprise/blob/b0e48baaf99bdc4faefd2ffdd3bd5637fb548593/l10n_au_hr_payroll_account/models/l10n_au_stp.py#L228-L233 The traceback occurs because ``_get_fiscal_year_start()`` assumes that the STP record always contains at least one payslip or one employee. When these recordsets are empty, indexing the first element raises an IndexError. Solution: This commit validates that the required payslips or employees are present before the submission and raises a validation error instead of a traceback. Forward-Port-Of: odoo/enterprise#127733 Forward-Port-Of: odoo/enterprise#124096
This fix prevents the Sign app from crashing when a document field has an empty value and no automatic fallback value. Users can continue processing signature requests reliably even when optional fields are left blank.
Original PR description
Forward-Port-Of: odoo/enterprise#127426
Code cleanup and technical improvements
The Knowledge app sidebar code was updated to use the newer Owl 3 approach as part of Odoo's frontend framework migration. This is an internal modernization that helps keep the app compatible and maintainable without changing business workflows.
Original PR description
As part of the Owl 3 migration, replace onWillUpdateProps hook with the appropriate Owl 3 alternatives.
This update modernizes how several reporting features build their underlying data views, replacing an older internal approach with the newer standard method. Users should not see functional changes, but finance, ESG, helpdesk, HR, manufacturing, and localization reports benefit from a more maintainable foundation for future improvements.
Original PR description
https://github.com/odoo/odoo/pull/281202
This change streamlines how the account reconciliation screen opens the auto-reconcile wizard. It keeps the same user-facing behavior while making the underlying code easier to maintain and less likely to cause future issues.
Original PR description
Before this commit, a function to open the auto reconcile wizard was given to env to make it available in sub components. It's only needed in the child component which is defined in the same file. We can just write a simple hook that the two components would share instead of giving it in the env.
The holiday planning timeline was updated to align with the next version of Odoo's interface framework. This keeps the feature maintainable and helps reduce upgrade risks without changing day-to-day user behavior.
Original PR description
As part of the Owl 3 migration, replace deprecated onWillRender hooks with the appropriate Owl 3 alternatives.
This update modernizes how view button click behavior is managed in Data Cleaning and Web Studio. It aligns the code with newer framework conventions, making future maintenance safer while keeping the user experience unchanged.
Original PR description
… with hooks Replace the `onClickViewButton` environment-based pattern with properly named hook functions to follow owl3 conventions. Introduces `useViewButtonHandler()` and `provideViewButtonHandler()` as the new public API for managing view button click handlers, implemented via a `ViewButtonPlugin` that uses owl's plugin system. This replaces the previous approach of directly accessing and overriding `this.env.onClickViewButton` or using `useSubEnv()`.
This update modernizes how parts of Social, Twitter social streams, and Website Knowledge handle user interactions such as scrolling and clicks. It reduces the risk of stale event handlers and prepares these areas for the next version of Odoo's frontend framework without changing expected user behavior.
Original PR description
[REF] *: use useListener instead of useLayoutEffect Several places bind a DOM listener with a useLayoutEffect. useListener already handles that: given a ref, it binds the listener and cleans it up whenever the element changes or the component is destroyed. documents: the scroll listener on the parent root is a plain useListener; only the initial topOffset still needs an effect. social: the 'Connect Accounts' link of the no content helper had a click listener that was never removed. As the helper is added/removed along with the view content, delegate the click on the root element instead of binding the link itself. Community: https://github.com/odoo/odoo/pull/282048
This update standardizes an internal icon setting name across several Odoo apps to match the platform’s preferred naming convention. It should not change how users work, but it helps keep the interface code consistent and easier to maintain.
Original PR description
odoo/odoo#256840 introduced the `icon_class` prop to allow adding modifiers to Material Symbols icons inside OWL components. This commit refactor `icon_class` to `iconClass` to follow OWL's camelCase prop convention. Community PR: odoo/odoo#279807 task-5901783
The AI prompt interface was updated to align with the latest Odoo web framework requirements. This is an internal modernization that helps keep the AI module compatible and maintainable without changing day-to-day user workflows.
Original PR description
As part of the Owl 3 migration, replace onWillUpdateProps hook with the appropriate Owl 3 alternatives.
This update aligns document-related test and store data with what the server actually provides, reducing inconsistencies and preventing invalid extra information from being saved in the client store. It also centralizes some mock behavior used in document tests, making future maintenance more reliable without changing everyday user workflows.
Original PR description
Before this commit, three places hand the store data the server never sends, and the store keeps each extra key as a value no model declares:
- adding documents to a composer pushes the media info of the copied attachments, `res_id`, `public` and `original_id` included,
- the file viewer test answers `create_document` with a document shaped for a view,
- the test helper sets `store.odoobot` to `{ userId }`, a key res.partner does not have, so odoobot lands on a partner with no id.
This comes from a payload built for a view or for the media dialog being reused as store data: `_store_attachment_fields` sends neither `res_id` nor `public`, and `_store_document_fields` sends five fields.
This commit sends those fields in the first two, and drops the odoobot line, which `_init_store_data` already sends in `session.storeData`.
https://github.com/odoo/odoo/pull/282241The manufacturing work order display was updated to use newer platform behavior as part of the Owl 3 migration. This keeps the screen aligned with supported technology and reduces future maintenance risk without changing business functionality.
Original PR description
As part of the Owl 3 migration, replace deprecated onWillRender hooks with the appropriate Owl 3 alternatives.
This change updates several Project and Studio views to use the newer startup hook required by the latest interface framework. It preserves existing behavior while avoiding compatibility issues during the Owl 3 transition.
Original PR description
`useLayoutEffect` is gone in Owl 3: `@web/owl2/utils` re-exports `owl.useLayoutEffect`, which no longer exists. All four effects only depended on the element they styled, read through `resolveRefEl` so the dependency was never reactive. Those refs are bound to unconditional roots - the gantt grid div and the list/kanban renderer roots - so they are set once at mount and never swapped, making the effects one-shot already. Each callback only adds a class, which affects styling and not layout reads, so moving from a layout effect to the mount hook changes nothing observable. Community: https://github.com/odoo/odoo/pull/282053
This change updates the invoice and document extraction module to stay compatible with Odoo's newer interface framework. It is an internal modernization that helps keep the feature maintainable and reliable without changing day-to-day user workflows.
Original PR description
As part of the Owl 3 migration, replace onWillUpdateProps hook with the appropriate Owl 3 alternatives.