Daily updates from Odoo
Sunday, July 19, 2026
11 changes · master
Resolved issues and error corrections
Belgian payroll salary simulations now ignore earlier payslips from the same month when calculating amounts such as the employment bonus. This prevents past payroll data from skewing simulated results, giving HR teams a clearer estimate before running payroll.
Original PR description
Some computations such as the employment bonus rely on the previous payslips of the month. In case of salary simulation, we shouldn't take these into account to have an accurate result. task-6385091 Forward-Port-Of: odoo/enterprise#124314 Forward-Port-Of: odoo/enterprise#124081
This fixes an issue in the Sign app where signing requests could fail in debug mode when extra page comments were present. Users and testers should experience a more reliable signing flow without unexpected errors.
Original PR description
Use lastElementChild when retrieving the sign item from the target element. In debug mode, inherited templates may introduce HTML comments into the DOM. Since lastChild return a comment node, accessing classList on the returned node raises an error. Using lastElementChild ensures that the last HTML element is always retrieved, regardless of comment nodes in the DOM. Forward-Port-Of: odoo/enterprise#123991 Forward-Port-Of: odoo/enterprise#122106
Payroll frequency labels such as monthly or weekly are now marked for translation across core payroll and multiple country-specific payroll modules. This ensures employees and payroll users see these options in their selected language, improving clarity in localized employee forms.
Original PR description
Issue: ---------------------------------------- The values of the field `schedule_pay` aren't translated. Steps to reproduce: ---------------------------------------- - Switch the language to French - Open an employee form, "Paie" tab - The selection in the "Salaire" tab is not translated to French Cause: ---------------------------------------- When the selection values were moved to a method in 7a123d71925b25f26ba0a8abff0c4a159147bdd0. The strings were not declared as translatable. opw-6359395 Forward-Port-Of: odoo/enterprise#124661 Forward-Port-Of: odoo/enterprise#123718
The Rental Kanban view now correctly shows the New button alongside the custom dashboard. This removes a conflict that could prevent users from creating new rental records from that view, improving day-to-day usability.
Original PR description
The code that adds the custom dashboard conflicted with the code that adds the New button. The fix was already implemented for the list view but not for the Kanban view. This commit applies the same solution used for the list view to the Kanban view. original-task-6088445 Forward-Port-Of: odoo/enterprise#124625
Payroll processes now explicitly use only active employee-related versions when looking up records. This avoids incorrect results if inactive records are included by default, helping payroll and paid time off allocation stay accurate.
Original PR description
We cannot assume in methods that the active_test is set. Therefore, we should always add active=True in search domains. Forward-Port-Of: odoo/enterprise#124542 Forward-Port-Of: odoo/enterprise#124459
Users opening the template picker from an audit report article without a parent article will no longer see an error. Instead, the picker now opens normally and shows that no article template is available, keeping the audit report workflow usable.
Original PR description
Currently, users encounter a traceback when clicking the "Load a Template" button in the WYSIWYG article helper if the article is linked to an audit report and has no parent article. Steps to…
Currently, users encounter a traceback when clicking the "Load a Template" button in the WYSIWYG article helper if the article is linked to an audit report and has no parent article. Steps to reproduce: 1. Install `accountant_knowledge`. 2. Create and open a new audit report. 3. Delete all content from article (the root). 4. Click the "Load a Template" button in the helper. => Crash with `AssertionError: Invalid falsy real id.` The issue occurs because the method responsible for loading the annex to display (see: `get_suggested_templates`) expects at least one record in the recordset. When the article has no parent, the recordset is empty, causing the method to fail. Before attempting to load a template, we will check whether the article has a parent article. If no parent exists, no template will be provided to the template picker. In that case, the picker will display a helper message indicating that no article template is available to load. Task [link](https://www.odoo.com/odoo/project.task/6333859) Task-6333859 Forward-Port-Of: odoo/enterprise#121807
This fixes how salary contract updates choose the right template. When updating a contract, the system now uses the current contract version's template when available, or falls back to the offer's contract template, helping avoid incorrect document setup during HR contract changes.
Original PR description
contract update template should come from current version if any or from the offer's contract template. Task-6094733 Forward-Port-Of: odoo/enterprise#124638 Forward-Port-Of: odoo/enterprise#123450
Fixed a display issue where numeric column headers in financial reports had incorrect padding. This improves readability and keeps report columns visually aligned for users reviewing statements such as the Balance Sheet.
Original PR description
Due to `padding: 0.25rem 0.75rem !important;` To reproduce: - Open Balance Sheet - Check the Balance column numeric-header Forward-Port-Of: odoo/enterprise#124615
Refreshing an accounting report now clears any previous search stored in the session, so exported XLSX files match what users see on screen. This prevents confusion where a report appears to show all partners but the downloaded file still contains only results from an earlier search.
Original PR description
**Steps to reproduce:** - Install account_reports - Open "Partner Ledger" (make sure there are several partners) - Make a search to only display 1 partner - Download XLSX - Without changing the search text, refresh the page - Download XLSX again **Issue:** After refresh, the search text is empty and all the partners are displayed in the report. However, in the XLSX file, only the partner from the previous search is present. **Cause:** The current search is kept in the session and used when getting the XLSX. When refreshing or leaving the page, it's still kept in the session even if the search bar has been reset. opw-6333212 Forward-Port-Of: odoo/enterprise#124685
Code cleanup and technical improvements
This update removes duplicate leave-handling logic from Planning because the same behavior is already provided by a dependency. It reduces maintenance risk without changing expected user behavior.
Original PR description
After commit https://github.com/odoo/enterprise/commit/e0b126cb1ec80743ef06784e230320a1c50041e9, `_handle_flexible_leave_interval` is already implemented in `hr_holidays_gantt` and covers the same case previously handled in `planning_holidays`. https://github.com/odoo/enterprise/blob/7ed917c1de11e29257a726efd4dafe403b9efba1/hr_holidays_gantt/models/resource_calendar.py#L17-L20 Since `planning_holidays` depends on `hr_holidays_gantt`, the duplicate implementation in `planning_holidays` is no longer necessary. **opw-6243778** Forward-Port-Of: odoo/enterprise#124477 Forward-Port-Of: odoo/enterprise#119229
This update modernizes internal user interface references across Enterprise apps so they work with the newer Owl 3 framework. It is mainly a technical cleanup that helps keep accounting, banking, reporting, and related screens stable and maintainable, with no intended functional change for end users.
Original PR description
Enterprise counterpart of the community `master-tref-pr-3-nby` migration.
Convert bridged Owl-2 refs to native Owl 3 signals across the enterprise addons:
- `useRef("x")` -> `const xRef = signal(null)`
- `t-custom-ref="x"` -> `t-ref="this.xRef"` (expression)
- `this.xRef.el` -> `this.xRef()`
Enterprise call sites of the signal-aware community shared hooks (useAutofocus,
useDateTimePicker, useStudioRef, usePosition/useSortable, useVisible,
useActiveElement, …) now pass signals; files consuming inherited/forwarded
community signals read them via `()` instead of `.el`.
Left on the bridge to match community's PR-3 residuals (not migrated in
community either):
- ai/*, knowledge/* embedded components using `useEditableDescendants`
- planning `PlannedDateRangeWithAllocatedHours` xpath into `web.DateTimeField`
- `compiled_view_root` `useRef` in stock_barcode and web_studio form renderer
related-pr: https://github.com/odoo/odoo/pull/274706