Friday, March 20, 2026
5 changes · 19.0
Enhancements to existing features
Accounting users can now add files or paste document links from the Documents app when using the Send & Print wizard for invoices. This brings invoicing closer to the standard email composer experience and makes it easier to include supporting documents without leaving the workflow.
Original PR description
The standard mail composer (e.g., used in Quotations) allows users to add files or paste links directly from the Documents app. However, this functionality was missing in the custom `account.move.send` wizard used for Invoicing and Accounting. This commit introduces the 'Add from Documents' feature to the Accounting Send & Print wizard. task- 5905930
This update lets businesses record multiple own-check payment lines within a single journal entry instead of creating separate split entries. It simplifies payment processing, improves accounting clarity, and helps payment and invoice statuses calculate more reliably.
Original PR description
This PR introduces an improvement to the account and l10n_latam_check modules that allows for multiple liquidity lines (one per check) to be recorded in a single journal entry. Currently, a split…
This PR introduces an improvement to the account and l10n_latam_check modules that allows for multiple liquidity lines (one per check) to be recorded in a single journal entry. Currently, a split journal entry is created for each liquidity line, which presents several disadvantages: Incorrect computation of payment and invoice states Simplified workflow: By using a single journal entry for all liquidity lines, the workflow is significantly simplified and accounting complexity is reduced. First step towards a refactor: This improvement is a first step towards a broader refactor that will allow adapting the own check flow in payment registration without the need to create journal entries. Changes made: Enhanced _synchronize_to_moves() method: - Allows for the creation and update of multiple liquidity lines within a single journal entry. - Removes excess liquidity lines if _prepare_move_line_default_vals() returns fewer lines than currently exist. - Account type-based counterparty identification: Replaces the previous position-based identification with an approach based on account types. - The starting index for extra line values is now dynamic, determined by the number of liquidity lines Removed _l10n_latam_check_split_move method: This method is no longer necessary given the new implementation that supports multiple liquidity lines in a single journal entry. Modified _prepare_move_line_default_vals() method: - Now returns one liquidity line for each registered own check, simplifying the generation of journal entries. Preserved _l10n_latam_check_unlink_split_move() method: Maintained for backward compatibility purposes, allowing payments containing split moves to be set to draft status. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Large sales orders now load and render more smoothly by avoiding repeated recalculations while displaying sections and order lines. This reduces waiting time and helps prevent the interface from slowing down when users work with many order lines.
Original PR description
This commit resolves a performance bottleneck that occurred when handling very large sale orders (e.g., ~200 order lines). Previously, the util function `getParentSectionRecord` determined the parent…
This commit resolves a performance bottleneck that occurred when handling very large sale orders (e.g., ~200 order lines). Previously, the util function `getParentSectionRecord` determined the parent (sub)section of an order line by iterating over all preceding order lines. Since this logic was executed for each order line, the overall complexity became O(n²). Moreover, this function was invoked inside the `shouldCollapse` method, which is used in multiple UI flows during rendering. As a result, large sale orders could cause noticeable UI slowdowns and block the main JavaScript thread. To address this, we now build a parent–child section mapping once per render in O(n) time. Subsequent lookups simply read from this mapping instead of recomputing the parent by scanning previous lines. This significantly reduces the computational cost and prevents UI blocking when working with large orders, leading to a much smoother rendering experience. opw-5865167 Benchmark: | No. records | Before | After | |----------------|---------------|--------------| | 150 | 1300ms | ~850ms | | Before | After | |---------------|--------------| | <img width="287" height="284" alt="image" src="https://github.com/user-attachments/assets/dd73ab18-3c53-4958-99b7-083dd5cd9e64" /> | <img width="311" height="277" alt="image" src="https://github.com/user-attachments/assets/b6e90fa3-85eb-4d72-b616-28aff9a938e8" />| --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Employee profile pages and related HR widgets now avoid unnecessary data lookups and repeated image downloads. This should make employee forms, attendance data, and organization charts load faster, especially in large companies with many employees.
Original PR description
task-6044049
This update prioritizes synchronization of a user's databases, ensuring they see their key performance indicators (KPIs) first. By changing the synchronization order, it reduces the risk of databases being queued unnecessarily, leading to a smoother and more responsive experience for users.
Original PR description
The aim of this commit is to make sure the dbs from the current user are synchronized first allowing the user to see his db kpi first. Before this commit: The dbs were synchronized according to the default order of `project.project`. After this commit: The user dbs get synchronized first reducing the risk for those to be queued in the CRON. task-id: 5951983