Monday, September 28, 2026
4 changes · saas-18.4
Resolved issues and error corrections
This fixes a survey navigation issue where returning to a near-final question could leave the button in the wrong state. Users are now less likely to accidentally submit a survey early, improving completion accuracy and confidence.
Original PR description
On a potentially final survey question, the submit button's state is dynamically updated (from 'Submit' to 'Continue') if the selected answer triggers a subsequent conditional question. However, this dynamic check was not performed when a user navigated backwards to such a question. This could lead to a situation where the button incorrectly showed 'Continue'. If the user then selected an answer that did not trigger a new question, the survey would be prematurely and unexpectedly submitted. This is resolved by refactoring the logic that calculates these "triggering answers" into a shared helper method. This method is now invoked for both forward and backward navigation, ensuring the button's state is always correctly calculated before the page is rendered. Task-5114087
The Swiss payroll employee certificate field now hides non-Swiss certificate options when working with Swiss localization. This prevents users from selecting irrelevant certificate types and keeps payroll-related employee data aligned with Swiss requirements.
Original PR description
The certificate field on the employee model was being extended by the swiss localization to add the swiss-specific certificates. This was done using selection_add on the field which was causing the selection to also show the original values defined on the base employee model. We don't want to see the original values but only the swiss ones when we operate in the swiss localization. At the same time, we can't just override the field (without using selection_add) because a warning is triggered. Other possible solustions like using the result of a function or changing the type of the field to Many2one to use a domain are either not working on a record-per-record basis or not stable compliant. The only working solution for stable is to keep the selection_add working and filter the results in the views using the filterable_selection widget. Task: 5948460 Forward-Port-Of: odoo/odoo#250046
Swiss payroll employee forms now show only certificate options relevant to Swiss localization. This prevents users from accidentally selecting non-Swiss certificate types and keeps payroll data entry aligned with Swiss requirements.
Original PR description
The certificate field on the employee model was being extended by the swiss localization to add the swiss-specific certificates. This was done using selection_add on the field which was causing the selection to also show the original values defined on the base employee model. We don't want to see the original values but only the swiss ones when we operate in the swiss localization. At the same time, we can't just override the field (without using selection_add) because a warning is triggered. Other possible solustions like using the result of a function or changing the type of the field to Many2one to use a domain are either not working on a record-per-record basis or not stable compliant. The only working solution for stable is to keep the selection_add working and filter the results in the views using the filterable_selection widget. Task: 5948460 Forward-Port-Of: odoo/enterprise#107821
Canceled appointment bookings are now handled correctly when reducing a resource's capacity. This prevents inactive bookings from causing errors, making appointment resource management smoother for users.
Original PR description
Steps to reproduce: 1. Install `appointment` 2. Create an appointment type using resources 3. Create a resource with capacity `4` 4. Book an appointment on that resource with reserved capacity `4` 5.…
Steps to reproduce: 1. Install `appointment` 2. Create an appointment type using resources 3. Create a resource with capacity `4` 4. Book an appointment on that resource with reserved capacity `4` 5. Try to reduce the resource capacity 6. Cancel the appointment 7. Try again to reduce the resource capacity Current behavior: - Reducing the resource capacity raises: `The capacity used can not be lesser than the capacity reserved` Issue: - Canceled appointments still prevent lowering the resource capacity, even though the booking is no longer active. Cause: - Canceling an appointment only archives the related `calendar.event`, it does not remove the corresponding `appointment.booking.line`. That booking line keeps its previous `capacity_reserved` value, while `capacity_used` is a stored computed field depending on the resource capacity. When the resource capacity is reduced after cancellation, the archived booking line is recomputed with the new lower resource capacity and this violates the SQL constraint Solution: - For inactive booking lines: Set `capacity_used = capacity_reserved` opw-6036053 Forward-Port-Of: odoo/enterprise#112485