Thursday, July 30, 2026
6 changes · 19.0
Resolved issues and error corrections
Swiss employee payslips now show the contract withdrawal date instead of a related version end date. This prevents incorrect departure information when the two dates differ, improving payroll document accuracy.
Original PR description
The Withdrawal Date in the payslip of CH employees was printing the date_end relative to the version related to the payslip. Instead, it should print the end of the contract of that version, since they can be different. The end date of the contract is in l10n_ch_withdrawal. Task: 6398291 Forward-Port-Of: odoo/enterprise#124848
This fix prevents Swiss BVG-LPP pension fund numbers from being included in status check requests. It helps ensure payroll declaration status queries use the expected information and avoid errors with Swiss payroll processing.
Original PR description
Forward-Port-Of: odoo/enterprise#126040
Studio report editing now keeps a paragraph in place when its last character is deleted. This prevents unintended layout changes and makes report editing more predictable for users.
Original PR description
Problem: In Studio reports, deleting the last character of a paragraph removes the entire paragraph. Cause: `cleanEmptyStructuralContainers` removes the empty paragraph because it is considered empty. Solution: Disable `cleanEmptyStructuralContainers` for reports same as website builder. Steps to reproduce: - Create a new report. - Add multiple paragraphs. - Leave one paragraph with a single character. - Delete the character. - Observe that the paragraph is removed. task-6368965 Forward-Port-Of: odoo/enterprise#124834
The Timesheets overtime indicator now keeps the selected unit, such as days, even when users switch to another language. This prevents employees and managers from seeing misleading remaining-time values caused by translated unit names.
Original PR description
Steps to reproduce: ------------------- 1. Install Timesheets. 2. Create a new employee with a fully fixed working schedule (40h/week). 3. Open Timesheets > All Timesheets and create a new timesheet…
Steps to reproduce: ------------------- 1. Install Timesheets. 2. Create a new employee with a fully fixed working schedule (40h/week). 3. Open Timesheets > All Timesheets and create a new timesheet in the past week for this employee (e.g. 8 hours). 4. Observe the overtime indicator for the employee (it shows 32 hrs) (Click the left arrow to display it). 5. Change the timesheet encoding unit to "Days / Half-Days". 6. Return to Timesheets and observe the overtime indicator (it now correctly shows 4 days). 7. Install a language other than English (e.g. French). 8. Return to Timesheets and observe the overtime indicator again. Issue: -------- The remaining time value changes unexpectedly and displays 32 hours instead of 4 days. Cause: --------- In `get_timesheet_and_working_hours_for_employees`, the code determines whether the timesheet UoM is expressed in days by comparing the UoM name with the string `"days"`. Since UoM names are translatable, this comparison becomes invalid when the user language changes (e.g. `"jours"` in French), causing the logic to skip the day conversion and return values in hours instead. https://github.com/odoo/enterprise/blob/c48290e90fdeadf4f9ca8c44b035e601e7ed380a/timesheet_grid/models/hr_employee.py#L165-L169 Solution: ----------- Compare the timesheet UoM record with the day UoM record directly instead of relying on translated string values. see commit: https://github.com/odoo/enterprise/commit/5fbf194c5056566453a124812fd2614edfe19a82 opw-6279133 Forward-Port-Of: odoo/enterprise#125909 Forward-Port-Of: odoo/enterprise#120595
This fixes an issue where clicking analytic plan amounts in the trial balance could fail because the action data was in the wrong format. Users can now drill into the related analytic entries as expected, reducing disruption when reviewing financial reports.
Original PR description
To reproduce (in master, didn't test the earliest but it's not in 17.0):
- Open the trial balance
- Set the Analytic Plans to one plan
- Click on a cell inside the columns of the plan
Using odoo shell in 17.0:
```
>>> from odoo.addons.web.controllers.utils import clean_action
>>> action = clean_action(self.env.ref('analytic.account_analytic_line_action_entries')._get_action_dict(), env=self.env)
>>> type(action['context'])
<class 'str'>
```Belgian Blackbox POS configurations can no longer have their POS ID changed while a sales session is open. This prevents inconsistent compliance settings during active operations and aligns the POS ID behavior with existing Blackbox restrictions.
Original PR description
Just like the Blackbox cannot be changed on a POS config with an open session, the POS ID should not be changeable either.