Daily updates from Odoo
Thursday, February 12, 2026
4 changes · master
Enhancements to existing features
This update enhances the performance of Odoo's email and messaging features by optimizing database queries. Specifically, the system now checks for the existence of related records before performing certain operations, preventing slowdowns caused by how Odoo handles deleted records. This improves the overall responsiveness of email and messaging workflows.
Original PR description
In order to be defensive we have to check records linked to messages, notifications or activities exist before checking related information like display_name, or even to skip them in various flows. This happens notably due to DB-level cascade deletion that does not remove side records linked through (model, res_id) pairs. It implies some additional exist queries. Task-5138556 Forward-Port-Of: odoo/enterprise#105721 Forward-Port-Of: odoo/enterprise#101185
This update strengthens payroll security by restricting who can approve payslips. Assistants can still create and calculate payslips, but validation is now exclusively handled by Payroll Officers and Managers, ensuring greater accuracy and control over payroll processing. This change aligns with best practices for data protection and reduces potential errors.
Original PR description
Updated the access rights regarding payslip processing: 1. Assistants are no longer authorized to validate payslips. 2. Assistants retain the ability to create and compute payslips. 3. The validation step is now only a responsibility of Payroll Officers and Managers. Task-5376223
This update enhances the account reporting module by adding key features for auditing and reporting on financial data. Specifically, users can now filter audit reports by date, view cumulative balances during account audits, and access detailed information related to checks and move lines, improving financial transparency and compliance.
This update streamlines the reinvoicing process for subscription timesheets by centralizing the logic and optimizing how analytic lines are retrieved. Previously, the system checked each invoice line individually, which was slow. Now, it uses a more efficient approach, only performing detailed checks when necessary – specifically for subscription orders linked to timesheet products. This speeds up the reinvoicing process and improves overall system performance.
Original PR description
_* = helpdesk_sale_timesheet, sale_timesheet_enterprise This commit adapts the community changes that centralized the reinvoicing flow of analytic lines and renamed the field `timesheet_invoice_id`…
_* = helpdesk_sale_timesheet, sale_timesheet_enterprise This commit adapts the community changes that centralized the reinvoicing flow of analytic lines and renamed the field `timesheet_invoice_id` to `reinvoice_move_id` The main technical change concerns how analytic lines to reinvoice are retrieved Previously, analytic lines were always searched per invoice line. This was needed in some situations, because for subscription timesheets the valid date range can depend on the related sale order of each invoice line. With this change, the specific per-invoice-line logic is now only used when all of the following are true: * No explicit `timesheet_start_date` or `timesheet_end_date` is provided in the context * The invoice is linked to at least one sale order that: * is a subscription order * contains products delivered through timesheets. Only in this case do we compute date ranges from the related sale orders and search analytic lines separately per invoice line. In all other cases, the standard aggregated search from the parent implementation is used, which avoids unnecessary processing and speeds up reinvoicing flow. task-5490517 See Also: - https://github.com/odoo/odoo/pull/245216 - https://github.com/odoo/upgrade/pull/9366