Daily updates from Odoo
Wednesday, June 10, 2026
24 changes · master
New functionality added to Odoo
This update introduces two new work entry types for Belgium payroll – ‘Public Holiday Working (Without Recovery)’ and ‘Public Holiday Working (To Recover)’. These additions allow for more accurate tracking of employee time worked during public holidays, ensuring compliance with Belgian labor laws and improving payroll reporting.
Original PR description
[IMP] l10n_be_hr_payroll: new public holiday time work entry type I added two new work entry type Public Holiday Working (Without Recovery) and Public Holiday Working (To Recover) task - 6275564
This update introduces an automated system for generating and posting payslips for certain employee types, such as company executives, where payroll data is rarely reviewed by HR. A daily cron action now checks for these types with approaching closing dates and automatically creates and validates payruns, streamlining the payroll process.
Original PR description
For some employee types e.g. company executive, payslips are most of the time always the same and not managed by any HR people (as they can not see the payroll data of company executives), so we need a mechanism to automate the generation of the payslips. This PR adds an option on employee type to automatically post the payslip run when the closing date is reached. It does so through a cron action that runs daily and checks if there are employee types with auto post enabled and a closing date reached, then creates and validates payruns for those employee types. task-6191997
Enhancements to existing features
This update enhances the employee calendar view within payslips by automatically graying out days with no scheduled attendance or when an employee isn't assigned to work. This provides a clearer visual representation of an employee's working hours, simplifying payroll processing. The change was implemented to improve the accuracy and usability of the payroll system.
Original PR description
In this commit, expected: - Gray out the calendar when no attendance is scheduled or the employee is not supposed to work Step to produce - Create Working Hours schedule, remove Friday under working hours tab - Assign the working hours schedule to employee - Create new payslip for employee - Click Calender SmartButton to see Employee Calender View from Payslip task: 6260186
This update clarifies how half-day work periods are displayed on payslips. Previously, half-days were grouped with full days, making it difficult to understand total work hours. Now, half-day entries are clearly separated, providing a more accurate and transparent view of employee earnings.
Original PR description
In order to clearly distinguish work days that extended full day or half day, the worked days under the payslips will not display both entries as separate types with the half days flagged Task: 5975762 Forward-Port-Of: odoo/enterprise#118869 Forward-Port-Of: odoo/enterprise#112328
This update enhances the visual presentation of the holiday attest report within the Odoo Enterprise system. The changes focus on reworking the layout to improve readability and clarity for users reviewing employee holiday information. This ensures accurate and easily understandable reports for payroll and HR processes.
Original PR description
This commit reworks the layout of the holiday attest report. task-5936242
Resolved issues and error corrections
This update resolves a test failure caused by incorrectly formatted data being passed. Specifically, the system was sending raw PDF content instead of the expected base64 encoded data, leading to an error. This fix ensures the tests run correctly and maintains data integrity.
Original PR description
This commit fixes an error when running the `test_employee_job_change` test on Python 3.14, which is stricter about base64 validation. Ultimately, the root issue was that raw PDF content was being passed when a base64 representation was actually expected (which is obviously invalid base64). runbot-938173 Forward-Port-Of: odoo/enterprise#119786 Forward-Port-Of: odoo/enterprise#118523
This update resolves a potential error in the Hong Kong payroll calculation that could have occurred when specific conditions were met (null resource calendar or zero hours per week). The fix adds a check to prevent division by zero, ensuring accurate payroll processing for Hong Kong employees. This improves the reliability of the payroll system.
Original PR description
. Add a check for a null resource calendar and zero hours per week. task-6229271 Forward-Port-Of: odoo/enterprise#117685
This update fixes a visual issue with the indeterminate checkbox in the Enterprise version of Odoo. The change ensures the checkbox's indicator is consistently visible across all environments, resolving a prior workaround. This improves the overall user experience and consistency.
Original PR description
The indeterminate checkbox is a [standard API](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/:indeterminate#:~:text=true%3B%0A%7D-,Result,-Play) (JS and CSS only as @pparidans…
The indeterminate checkbox is a [standard API](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/:indeterminate#:~:text=true%3B%0A%7D-,Result,-Play) (JS and CSS only as @pparidans noted), which has been implemented in Odoo in a couple of different ways, and is currently not working out-of-the-box (enterprise only): ------ PROBLEMS: - Original implementation was with JS because of a (now fixed) owl issue: see [ web/static/src/search/search_panel/search_panel.xml](https://github.com/odoo/odoo/blob/c0c82927f2e7e2a54749a0e081d8a03b9ef654e2/addons/web/static/src/search/search_panel/search_panel.xml#L99-L103) & https://github.com/odoo/owl/issues/713 - The new intended odoo-api for the indeterminate checkbox (`t-att-indeterminate` or `<Checkbox indeterminate="...")` doesn't work with enterprise installed because: `web_enterprise/static/src/scss/bootstrap_overridden.scss` sets `$component-active-color: unset !default;` & Bootstrap's uses `$form-check-input-indeterminate-color: $component-active-color` therefore resolves to `unset`, making the dash invisible. -> This was fixed in studio only (odoo/enterprise#81372) but should apply globally. ------ FIXES: - Refactor the JS workaround to use the `t-att-indeterminate`, simplifying the code in `web` (with the help of owl magic) - Apply the studio fix globally to enterprise module (we keep the studio fix with custom svg because the color pattern of studio is a bit different, so removing the custom svg makes the UI look less good). Community PR: https://github.com/odoo/odoo/pull/268491
This update consolidates three separate rules related to unpaid leave into a single, more efficient process. This change creates a central source of truth for calculating unpaid days, improving accuracy and reducing complexity in payroll processing. The update also includes a related test to ensure the new rule functions correctly.
Original PR description
Purpose: As of now, we have 3 seperate rules and all of them deal with the same deductable items which is (Unpaid leave). so instead of doing that, we need to have one source of truth for unpaid days. Current behavior: - dropped the out of contract salary rule - removed the fully unpaid sick leaves from sick leave deduction rule - grouped unapid leaves, unpaid sick leaves and out of contract days under one rule - reintroduced deleted test task-id: 6229123
This update strengthens the validation process for recruitment integration settings. Specifically, a required label has been added to the integration_state_selection field, ensuring data integrity and preventing errors. This improves the reliability of the recruitment process by enforcing correct configuration.
Original PR description
This commit adds a label to the option of the field integration_state_selection. The label is a mandatory property and an error is thrown if it is not given.
This update streamlines the payment refresh button in the Odoo Enterprise system. Previously, the button was always visible, leading to unnecessary system calls. Now, it only appears for payments that are actively being processed (pending or unsigned), optimizing performance and reducing strain on the system.
Original PR description
… batches The refresh button was always shown, which could cause unnecessary calls to OdooFin if the payment is finalised (accepted, rejected or canceled). With this change, the button is shown only for payments in progress (pending or unsigned). task-6103900 Forward-Port-Of: odoo/enterprise#113182
This update fixes a technical issue that caused a traceback when generating the annual report within the knowledge app. The fix ensures proper handling of component data, preventing errors during loading and improving the user experience. This resolves a minor performance concern.
Original PR description
Before this commit: when going to the annual report from the knowledge app, select the balance sheet, there's a traceback loading the embedded component. The reason is the props is being reassigned inside the component. Related commit: 8bde58bd2ec1b4925552cebcf5fb3159d88eea00 After this commit: we properly create a value for the translated name in the component and its template. task-6292898
This update streamlines the context keys used when creating accounting entries for work orders. Previously, multiple keys performed similar functions, leading to potential confusion. This change consolidates and clarifies the context, ensuring more reliable and predictable accounting processes.
Original PR description
Replace the `employee_change_id` context key passed when calling `_create_analytic_entry` by adding an optionnal parameter, `previous_employee_id`. Community PR: odoo/odoo#265722 Upgrade PR: odoo/upgrade#10288
Features or functions removed from Odoo
This update removes a redundant and potentially confusing option within the enterprise sale timesheet functionality. Previously, users could input negative values on timesheets, a feature that was later disabled but remained as an option. This change simplifies the system and aligns with current best practices.
Original PR description
- The '03_timesheet_revenues' option was available because it was previously possible to create timesheet with negative values.This feature was later removed, but the option was left. - removed 03_timesheet_revenues from the possible billable types. task-4610889
This update removes jQuery, a legacy JavaScript library, from all Odoo Enterprise modules. This simplifies the codebase, improves performance, and reduces potential security vulnerabilities. The change was driven by a community contribution and aligns with Odoo's ongoing efforts to modernize its technology stack.
Original PR description
[REM] *: remove jQuery from all assets *: knowledge, pos_iot, pos_self_order_iot, sign This commit removes jQuery in every asset where it was still included and clean comments still referencing old jQuery logic. Precision: `web._assets_jquery` can be removed from `_get_url_to_cache` as it's not used anymore since odoo/enterprise@c120aa2a7e8. Community PR: odoo/odoo#250982 task-5187485
Code cleanup and technical improvements
This update refactors the Web Studio module to use a more modern and efficient approach to data handling. Specifically, it utilizes 'contextvars' to manage data within the module, leading to better performance and maintainability. This change improves the underlying code structure without impacting how users interact with Web Studio.
Original PR description
https://github.com/odoo/odoo/pull/256688
This update modernizes how Odoo Enterprise tracks relationships between records using Owl 3's signal system. It replaces older 't-ref' references with the new Owl 3 signals, ensuring compatibility with the latest Odoo version. This change improves the stability and future-proofing of the Enterprise Companion.
Original PR description
## `t-ref` string refs → Owl 3 signals (enterprise companion) Enterprise side of the Owl 2 → Owl 3 ref-semantics migration. Pairs with the community PR of the same branch name (`master-tref-pr-3-nby`). ### Scope **Leaf 1** companion — enterprise consumers of the migrated mail/web components. ### Notes - Rebased onto current enterprise `master` (2026-06-10). - Community PR: odoo/odoo#269266
This update modernizes how Odoo Enterprise tracks related records by migrating to Owl 3's signal-based referencing system. This change improves the underlying architecture and ensures compatibility with future Owl releases. It primarily impacts components used in the Enterprise Companion.
Original PR description
## `t-ref` string refs → Owl 3 signals (enterprise companion) Enterprise side of the Owl 2 → Owl 3 ref-semantics migration. Pairs with the community PR of the same branch name (`master-tref-pr-4-nby`). ### Scope **Leaf 2** companion — enterprise consumers of `AutoComplete` / input hooks. ### Notes - Rebased onto current enterprise `master` (2026-06-10). - Community PR: odoo/odoo#269267
This update modernizes the way Odoo Enterprise tracks signatures by transitioning to Owl 3's signaling system. It improves the underlying architecture for signature requests, aligning with the latest Owl version and ensuring compatibility with future updates. This change primarily impacts the Enterprise Companion module.
Original PR description
## `t-ref` string refs → Owl 3 signals (enterprise companion) Enterprise side of the Owl 2 → Owl 3 ref-semantics migration. Pairs with the community PR of the same branch name (`master-tref-pr-6-nby`). ### Scope **Leaf 6** companion — sign `ControlPanel` / `NameAndSignature` adaptation. ### Notes - Rebased onto current enterprise `master` (2026-06-10). - Community PR: odoo/odoo#269269
This pull request updates the way attachment previews are handled across several Odoo modules, specifically incorporating a new syntax for OWL 3. This change improves the consistency and reliability of attachment previews within the Enterprise edition, ensuring better functionality for users.
Original PR description
Enterprise counter-part. task-6255532 https://github.com/odoo/enterprise/pull/118962
This update simplifies how controllers access website-related data. Previously, a function called `get_current_website` was used, which has been replaced with a more direct method leveraging the Odoo environment. This change ensures consistent website functionality across various modules and improves maintainability.
Original PR description
All locations that used `get_current_website` can be replaced in the controllers because `website_id` is automatically present in the `context` for routes with the attribute `website=True`.
This update simplifies invoice processing by merging the `l10n_co_dian` module into the core `l10n_co_edi` module. Additionally, the `l10n_co_edi_mandate` module is also integrated, streamlining the system and reducing complexity. This change improves maintainability and aligns with the primary invoice delivery method.
Original PR description
Since the main, and only, way to send invoice is using dian it only makes sense to merge the `l10n_co_dian` module into the main `l10n_co_edi` module. Since the `l10n_co_edi_mandate` module was only introduced as a separate module because of stable policy we also merge it into `l10n_co_edi`. task-5113421
This update refactors internal code within several Odoo modules to utilize a new 'plugin' architecture. This change enhances modularity and flexibility, allowing for easier future updates and integrations within the Odoo platform. It primarily impacts the underlying structure of various modules, improving maintainability and scalability.
This update streamlines the Odoo IoT device model by removing redundant information like manufacturer and device subtype. This change simplifies the underlying code, making it easier to maintain and update, which ultimately reduces development time and potential issues.
Original PR description
This commit aims to simplify the IoT device model by removing unnecessary data such as: - manufacturer, - device subtype (was only used for printers), As usual, the goad is to reduce complexity of the code to improve maintainability. see odoo/odoo#258127