Tuesday, December 2, 2025
8 changes · saas-18.2
Resolved issues and error corrections
This update resolves an issue where changes to spreadsheet sale inputs were unexpectedly lost due to system updates or user actions. The fix ensures that input values are correctly saved and reflected, providing a more reliable user experience for updating sales data. This improves data accuracy and reduces potential data loss.
Original PR description
Currently, the FieldSync record input suffers from two issues: 1) The input value can be reset by parasitic renders While the user is inputting a value, if they did not confirm it and a global render occurs (other user joining the session, dragging the mouse on the grid), the input value will be reset to the one stored in the plugin, therefore erasing the last change of the user 2) In Chrome-based navigators, users can change the value of the input by using their mouse scrolling wheel. Such action *does not* trigger an `onChange` event; which means that the new value is never directly saved. Both issues are addressed in this commit by keeping an internal state inside the component `FieldSyncSidePanel` and ensure this state is properly reflected in the plugin once we stop editing the input. Task-5123069 Forward-Port-Of: odoo/enterprise#96431
This update fixes a bug that occurred when users duplicated approvers within an approval request. The duplication caused a system error, preventing users from accessing the request. The fix ensures that duplicate approvers are handled correctly, eliminating the error and improving the approval process stability.
Original PR description
When User duplicates the approver for any approval request and tries to open that approval request, A traceback will appear. Steps to reproduce the error: - Activate the developer mode - Go to Approvals > Create a new approval request > add any approver > Save - Click on the ``View`` button in the approver line - Now, In the Form view > Actions > Duplicate - Go back to that approval request through breadcrumbs Traceback: ``` ValueError: Expected singleton: approval.approver(1, 3) ``` https://github.com/odoo/enterprise/blob/83b6c0e1c052b08bd23c5e009773b5a3148ddeec/approvals/models/approval_request.py#L270 When the customer duplicates the approver, ``user_id`` will be also duplicated. So, Now Same User is linked with multiple approver. So, It will lead to the above traceback. sentry-6642840799 Forward-Port-Of: odoo/enterprise#87164
This update fixes a critical issue preventing correct XML generation for Colombian e-invoices related to the 'INC Bolsas' plastic bags tax. The changes add a dedicated logic flow to accurately report this tax, ensuring compliance with DIAN requirements and preventing validation errors. This allows invoices with plastic bags tax to be successfully submitted.
Original PR description
Before PR: -The plastic bags tax (INC Bolsas) was not handled by a specific flow. -This resulted in incorrect XML generation for Colombian e-invoices, leading to validation errors from the DIAN. After PR: -Dedicated logic flow has been added to correctly handle the INC Bolsas tax. -Generated XML now correctly reports this tax in a separate `TaxTotal` block. -It populates the `BaseUnitMeasure` and `PerUnitAmount` fields with the fixed tax rate per bag. Impact: -Colombian e-invoices that include plastic bags tax are now generated correctly. -Ensures compliance with DIAN's specific requirements for this nominal tax. -Prevents validation errors and allows for successful submission of invoices containing this tax. task-5086926 Forward-Port-Of: odoo/enterprise#95311
This update corrects a bug where the Shop Floor view incorrectly reset its default filters when a new work center was added to a production. Now, the system maintains the expected default filters (All MO and My WO) regardless of the work center being accessed, ensuring a consistent and intuitive user experience. This improves workflow efficiency for production managers.
Original PR description
Issue: ---------------------------------- When accessing a work order in a work center not included in the default selection on the shop floor, the system would change the default view by removing…
Issue: ---------------------------------- When accessing a work order in a work center not included in the default selection on the shop floor, the system would change the default view by removing `All MO` and `My WO`, disrupting the expected behavior for users. Steps to reproduce: ---------------------------------- - Open the Shop Floor view and note the default filters like All MO and My WO. - Access a production whose work order is in a work center not included in the current selection, and move it to that work center. - Observe that the view reloads and the default filters are removed, showing only the newly added work center. With this commit: ---------------------------------- The function is fixed to keep default selections like All MO and My WO when adding a new work center. These were previously removed because they aren't stored and weren't re-added. Now, the new work center is added without altering the default view. Task-id: [4392236](https://www.odoo.com/odoo/project/966/tasks/4392236) Forward-Port-Of: odoo/enterprise#76102
This update resolves an issue preventing payroll officers from accessing salary offers. The fix prevents access errors when opening offers by intelligently handling permission restrictions related to candidate records. This ensures payroll officers can continue to perform their duties without needing recruitment rights.
Original PR description
steps to reproduce: - Install l10n_be_hr_contract_salary - Log in as a payroll officer (without recruitment rights) - Go to Payroll > Contracts > Offers - Open any offer - Notice an 'Access Error' appears: You are not allowed to access 'Candidate' (hr.candidate) records. cause: The module tries to read `employee_id.candidate_id.partner_id` in offer computations. Since payroll officers lack recruitment rights accessing `hr.candidate` triggers an access error. fix: Wrap candidate access in try/except to handle missing permissions. - If accessible, candidate partner data is used as before. - If not accessible, skip without raising an error. This allows payroll officers to open and generate salary offers without requiring recruitment rights. task - 5039712 Forward-Port-Of: odoo/enterprise#95869
This update resolves a critical issue causing export generation failures in the payroll data. The fix corrects a naming mismatch between field references and model definitions, ensuring accurate Prisma code retrieval. A new test suite has been implemented to guarantee the reliability of the export process.
Original PR description
The export generation crashed due to a mismatch between field names — the code was referencing employee_ids, while the model actually defines employee_id. Since the Prisma code is now stored on the employee model, the logic was updated to correctly access the employee_id field and retrieve the related Prisma code. Additionally, a comprehensive test suite was added to validate Prisma code behavior, including: - validation of code length for employees, companies, and work entry types, - handling of codes across different companies, - and the complete Prisma export flow (from work entry creation and validation to export file generation). task-5153727 Forward-Port-Of: odoo/enterprise#96743
This update optimizes how Odoo calculates mobility budgets for Belgian employees. By switching to a more efficient search method, the calculation process is now significantly faster, particularly for larger datasets. This improves the overall performance and responsiveness of the HR module.
Original PR description
- optimized the method `_compute_l10n_be_mobility_budget_amount` to use binary search instead of linear loop task-id: 5173389 Forward-Port-Of: odoo/enterprise#99505
This update resolves an issue where archived companies were still visible to administrators within the Documents app. The fix ensures that normal users cannot access documents from archived companies, maintaining data security and privacy. This change was implemented to align with best practices for company archiving and user permissions.
Original PR description
**Steps to reproduce:** - Install Documents app - Create a bunch of companies with their own folders - Archive the companies - Try to open Documents app with admin - Access Error is raised **Issue:** Archived companies not properly taken into account in the search permission. **Fix:** Explicitly check of archived status for the folders company. The behavior is that normal users won't see documents from archived companies but admins still can. From related PR: > Also need to ensure archived companies are not removed from the admin search > domain even if the user has `active_test=False` related: https://github.com/odoo/enterprise/commit/b7e6acba60e50c86627b177a86b357d2bb956cbc opw-5127040 Forward-Port-Of: odoo/enterprise#100133