Wednesday, July 15, 2026
14 changes · master
Enhancements to existing features
The payroll pay run card now adapts to the actual space available inside the card, not just the browser window size. This makes the header, progress steps, KPI information, and action buttons behave more predictably on different screen sizes and reduces awkward wrapping or overflow.
Original PR description
The pay run header card was assembled by kanban XML inheritance and its responsive behaviour keyed off `ui.size` (the browser-window breakpoint). Regions shifted from one step to the next, and the…
The pay run header card was assembled by kanban XML inheritance and its responsive behaviour keyed off `ui.size` (the browser-window breakpoint). Regions shifted from one step to the next, and the free space and the buttons collapsed based on the window rather than the card's own width - folding while there was still room and overflowing when there wasn't. Rework it into a single OWL shell (PayrunCard) that owns four regions - name | KPIs | steps | buttons. Per-step views only fill the `payrun_kpis` slot and declare their `current_step`; the name block and step bubbles are declared once and reused. The kanban record owns one ResizeObserver that measures the card's actual width and each region's content width, then resolves the layout in priority order: the name truncates to its floor, the buttons collapse into the overflow menu, and finally the steps stack onto their own full-width row. The decision is recomputed only when the width changes, so toggling the layout - which only changes the height - cannot feed back and flicker at the boundary. task-6259171
Payroll administrators can now view and update the first payroll month directly in Payroll Settings. This makes it easier to correct or adjust the initial payroll setup after it has already been entered from the dashboard warning.
Original PR description
Currently, after set the first month of payroll on the dashboard warning. We can't modify it after nor the the information back. In this PR expected to add the first month of payroll in the Payroll Setting, Therefore, Users can modify after set it. task-6377702
Belgian payroll now handles youth and senior time off as separate categories, making payroll and leave tracking clearer. The update also adds checks to warn when youth time off seniority conditions may not be met and to prevent these allocations while regular paid time off remains available.
Original PR description
This PR: - Splits the youth and senior time off types into two different work entry types. - Adds a warning on the allocation of Youth Time Off if the employee does not have at least 1 month of seniority in the company at the beginning of the validity period for the allocation. - Prevents the allocation of youth or senior time offs if there is still paid time off available. task-6360468
Timesheet entry units are now controlled by timesheet settings instead of company-level settings. This makes time tracking behavior more consistent across related areas such as helpdesk, projects, sales timesheets, dashboards, and timesheet grids.
Original PR description
Adjust the `timesheet_encode_uom_id` to depend on timesheet settings, not from company --- # task cancelled task-5932762
The AI app form views and related controls were reorganized to make AI agents and their sources easier to manage. The update also adds native skills and lets agents update themselves, improving flexibility for businesses using AI workflows.
Recurring project tasks are now scheduled around assigned users’ workable days, working hours, leave, and contract dates. This helps teams plan recurring work more realistically while still allowing weekend-based recurrences when the original task was intentionally set on a weekend.
Original PR description
## Previous behavior: Recurrent tasks could still be scheduled on weekends, vacation days, or other non-working days. ## New expected behavior: Recurrent tasks are always scheduled based on the…
## Previous behavior: Recurrent tasks could still be scheduled on weekends, vacation days, or other non-working days. ## New expected behavior: Recurrent tasks are always scheduled based on the workable days and working hours of the users assigned to them. Workable days and hours are determined using the assigned users’ shared calendars. If the assigned users do not share the same calendar, the company calendar is used to resolve scheduling conflicts. If a user is on leave, the recurrent tasks they are assigned to are still scheduled, but the user is temporarily removed from the list of assigned users for the duration of their leave.This allows other individuals to take over the task when the user is on leave. Users are also removed from recurrent tasks when their contract start or end dates fall outside the task schedule since users shouldn't work with outdated contracts. ## Exception: This behavior can be overridden if the original recurrent task was initially scheduled on a weekend day (Saturday or Sunday). In this case, recurrent tasks behave exactly as before and may be scheduled on non-working days. This was made to ensure the end-users could have the final say on this behavior in the case it is unwanted. ## Reference: [task-4796700](https://www.odoo.com/odoo/project/4105/tasks/4796700)
Payroll warning settings can now show the same warning on both dashboards and employee or payroll record pages at the same time. This reduces duplicate setup work and makes important payroll alerts more consistently visible across supported country payroll modules.
Original PR description
Replace the `display_on` selection field with two distinct boolean fields: `display_on_dashboard` and `display_on_model`. This allows a single warning configuration to be displayed on both the dashboard and record views simultaneously, eliminating the need for data duplication. Update the view to show these choices as side-by-side checkboxes. Task: 6267499
Creating a shift from the Attendance Gantt view now uses the employee's expected daily working hours instead of defaulting to a full 24-hour shift. This prevents incorrect overnight shifts and avoids accidentally moving the end date to the next day.
Original PR description
Currently, when creating a new shift from the Gantt view in "Attendance", if the scale is "week" or higher, the shift will have a duration of 24 hours and span from 12:00 AM to 12:00 AM the next day. This will always be wrong, and also shifts the end date by a day. To resolve this issue, now if a new shift is created by clicking on a day (instead of dragging the click to select hours), editing the starting hour will automatically change the end hour to be start + expected hours per day. Task ID:6326685
Belgian payroll now supports restructuring social security reductions for up to three quarters instead of two. A new start date field helps track cases where an employee already received the reduction with a previous employer, improving payroll accuracy and compliance.
Original PR description
**What**: - Restructuring reduction can be received for 3 quarters previously it was only for 2 quarters - There is a chance that the person can get restructuring reduction from previous employer so added a new field 'restructuring_date_start' to know the start date of restructuring reduction task-6344925
The salary calculator now waits to show missing-field errors until users try to configure benefits or copy a link, instead of interrupting them while they are still editing. This makes the offer setup process smoother while still clearly listing required information before key actions can continue.
Original PR description
The salary calculator was showing validation errors while users were still filling in the form. This made the calculator harder to use. With this change: - Do not show validation errors while editing a simulation offer. - When the user clicks "Configure Benefits" or "Copy Link", validate all required fields and show an error listing any missing fields. - Remove the "Optional" placeholder from the employee field since it is required to use these actions. Task-6340556
Mexican payroll CFDI checks have been updated to match version 1.2e requirements. This helps ensure payslip XML data is validated correctly for taxable and exempt earnings, other salary income, and employment subsidy limits before reporting.
Original PR description
**. Perceptions – ImporteGravado / ImporteExento (XML Nodes)** For each Perception node, validate that: If ImporteExento = 0, then ImporteGravado > 0. If ImporteGravado = 0, then ImporteExento > 0. Both values cannot be 0 at the same time. These validations must be applied per Perception node, not at an aggregated level. **. TipoPercepcion = "038" (Other Salary Income) (XML Nodes)** When TipoPercepcion = "038": ImporteExento must always be 0. The amount must be recorded only in ImporteGravado. **. SubsidioCausado (XML Nodes)** Update the validation logic for the SubsidioCausado attribute based on NumDiasPagados: If NumDiasPagados ≤ 31, SubsidioCausado ≤ 628.00 If NumDiasPagados > 31, SubsidioCausado ≤ NumDiasPagados × 0.206 task-5412728 Forward-Port-Of: odoo/enterprise#121304
Hong Kong payroll salary rules have been consolidated so regular and casual employee structures can share common rules instead of maintaining duplicate versions. This reduces configuration complexity and should make payroll support and future updates easier while preserving the differences needed for MPF rules.
Original PR description
Recently, salary rules were updated to support more than one salary structure on a same rule. This change allows us to clean our structures and remove a lot of duplication between regular and casual employees. Both structures are 90% the same, besides MPF rules, so we now can really simplify it to facilitate support and reduce complexity task-6267295
Belgian payroll rules now reflect the legal change effective August 1, 2026: employees with less than six months of service have a one-week notice period whether they resign or are dismissed. This helps employers calculate end-of-collaboration notice durations correctly and consistently, including contracts that span the change date.
Original PR description
Starting from August 01 2026, the legal notice period will change if the employee has been working for their company less than six months: it will only be one week, no matter if the employee quit or was fired. Task: 6365099
Payment check reports now better explain cases where a check is written for less than the invoice total because an early payment discount was applied. This helps users and recipients understand the payment amount and keeps localized payment report layouts aligned.
Original PR description
Previously, the check amount didn't match the applied payment. This makes it clear why the a check for less than the total was written out. Because we change the layout of the payment report in community, we have to update some xpaths here. For MX, a `is_cfdi_signed` block was not migrated because it's dead code. That variable isn't defined anywhere. task-5172527