Daily updates from Odoo
Wednesday, November 12, 2025
3 changes · 18.0
Enhancements to existing features
This update refreshes the official Luxembourg payroll rule numbers for 2025. It helps ensure payroll calculations stay aligned with the latest legal requirements and reduces the risk of incorrect withholding amounts.
Original PR description
Update the official numbers of the Luxembourg payroll rules for 2025. This is a backport of PR https://github.com/odoo/enterprise/pull/79805 task-5187202 Forward-Port-Of: odoo/enterprise#98763
This change makes finishing manufacturing work orders much faster by removing repeated calculations and duplicate database updates. It improves reliability for large batches of work orders and helps avoid slowdowns or memory issues when many records are processed at once.
Original PR description
- The `button_finish` method contained a variable intended to filter out moves whose `operation_id` matched the `operation_id` of the entire recordset of work orders passed to the function. However,…
- The `button_finish` method contained a variable intended to filter out moves whose `operation_id` matched the `operation_id` of the entire recordset of work orders passed to the function. However, this filtering was performed inside a loop iterating over all work orders, even though the result of the filtration did not depend on any single work order. Before this commit: - The filtration was executed repeatedly for each work order, despite being deterministic. - This unnecessary repetition caused performance degradation and multiple redundant updates to the `picked` field of the same moves, resulting in fake or redundant database writes. After this commit: - The filtration logic has been moved outside the iteration, ensuring that the update to the moves is performed only once, improving overall performance and preventing redundant updates. - The `end_all` method is now executed on the entire recordset of work orders at once, instead of being called individually for each iteration. The benchmark below is done on a recordset of workorders of size **500** and the number of moves returned from the filter were **100**. It set the picked field to be **True** for every workorder in the recordset, potentially triggering recomputation of some of the fields and doing more redundant SQL queries. opw-5092636 ### Benchmark Results | Scenario | Execution Time | | :--- | :--- | | **Before this Commit** | **Memory Error** | **After this Commit** | **22 seconds** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The point of sale payment screen now shows a “force done” option even when a payment line is stuck waiting on a terminal response. This helps cashiers continue serving customers instead of getting blocked by an unresponsive payment device.
Original PR description
If a payment line is stuck in a waiting state (e.g. payment terminal not responding to a request), we now display the "force done" button, to avoid blocking the user. Forward-Port-Of: odoo/odoo#235244