Daily updates from Odoo
Thursday, December 18, 2025
14 changes
11 changes
Enhancements to existing features
This update enhances the depreciation schedule report by utilizing a new, more efficient engine. Previously, the report generated dynamic lines, which has now been replaced with pre-defined variants, streamlining the report generation process and improving performance.
Original PR description
This PR changes the depreciation schedule report to use custom engine instead of using dynamic lines. The group by custom filter is removed and instead the different grouped reports are variants of the depreciation schedule. task-4900446
This update enhances the performance of reports, particularly those with large datasets, by introducing a 'Load More' mechanism. It addresses previous issues with slow loading times and memory usage when generating detailed reports, now allowing users to load data in batches as needed.
Original PR description
======== CONTEXT ======== When unfolding a line of a report (typically for a groupby), it is possible many lines need to be rendered. When this number grows too big, it can create performance issues…
======== CONTEXT ========
When unfolding a line of a report (typically for a groupby), it is possible many lines need to be rendered. When this number grows too big, it can create performance issues (too much time and memory server-side ; too many lines to render in the browser client-side).
To alleviate those issues, two mechanisms had been implemented in previous versions of Odoo:
=> "Load more" (enabled via the load_more_limit field of account.report)
This feature was used by all report engines (so, it does not work for reports using a _dynamic_lines_generator), to essentially run a SQL LIMIT when computing the report. When the limit was reached, a limited number of sublines was shown, with an additional "load more" line at the end, allowing loading a new batch of them when clicked (possibly with another "load more" line for a next batch).
LIMITS:
- The "load more" line had no amount whatsoever; impossible to know what it contains with expanding it
- Navigation was poor, with the multiple successive "load more" lines
- The need to handle LIMIT and OFFSET in engines required additional complexity
- In case of multi-level groupby ("account_id,id", for example), only the terminal groupby
used the limit. If any intermediate groupby returned too many lines, we still displayed them all
=> Prefix groups (enabled via the prefix_groups_threshold field of account.report
Prefix groups worked on both engines and some reports with dynamic lines (typically the Partner Ledger, for which they were originally implemented). They basically always generated all the lines (without any kind of limit) server-side, before grouping them under unfoldable summary lines, that would do that recursively when unfolded, until the number of lines to show became manageable.
LIMITS:
- All lines were always generated before trimming them, so that means we still used a lot of memory. Also
time-wise, this was not optimal, as many calls to dict's get() function would be run for each line
(we had cases where it took a few seconds, just for that).
- Prefix were generated from line names ; it didn't work well when some records' display name did not
match their name in db (to compute the domain when expanding prefix lines)
- Depending on the content of db and field used in the line names, too many breaking corner cases were possible
======== NEW APPROACH ========
Prefix groups entirely disappear. They were still used by the Partner Ledger and Depreciation Schedule, which have just been rewritten (in different commit merged together with this one) to use custom engines instead, so that they can benefit from the "load more" instead.
"Load more" is now fully rewritten, and works very differently than before. It's essentially a hybrid approach mixing both previous features. Here are the key changes:
1) We don't use LIMIT and OFFSET at all in the engines anymore (both parameters disappear from engine functions). Instead, we generate all results and trim them, but we do that earlier than what prefix groups used to do. Here, we act on the engine's results, before generating the lines.
2) The "load more" line now displays how many sublines it summarizes, and sums the appropriate columns of those lines in order to display a relevant value in the report and improve clarity for the user.
3) "load more" now also works on intermediate levels, when using multi-level groupby. Reports wanting to modify this behavior for certain levels can do that through a custom handler, shadowing _report_expand_unfoldable_line_with_groupby, like the General Ledger and Trial balance do.
======== ADDITIONAL BENEFITS ========
This refactoring also paves the way for future possible improvements, because of the removal of offset and limit parameters from the engines:
- batching of groupby computations in SQL
- support groupby on aggregations
We'll work on those in the future.
task-4346024This update enhances asset reporting within Odoo Enterprise by incorporating data from the Enterprise-specific asset models. This change expands the reporting capabilities, providing a more complete view of asset information for financial analysis and management. The update maintains compatibility with the existing Community version.
Original PR description
Override the Community asset display helper to include logic based on `account.asset_model_ids`. This extends the base behavior while keeping the Community implementation independent from Enterprise-specific fields.
This update enhances the Gantt chart's card closing functionality by moving the close button to a sidebar. This change allows for more intuitive and efficient card closure within the Gantt view, improving user workflow.
Original PR description
In this commit, we move the close button of popover (that was below on the right) to put a side bar on the left. All the sidebar closes the card in gantt view.
This update introduces a new filter in the helpdesk system, allowing users to quickly identify tickets that haven't received a response. This improves efficiency by letting support teams prioritize tickets awaiting replies from customers or internal users. The filter focuses on tickets with the last message from a public or internal customer.
Original PR description
Currently, helpdesk users cannot quickly filter tickets that are still awaiting a response. This commit adds an 'Unanswered' filter to display tickets where: - The last message is from a public user, or from an internal user who is the ticket's customer. Note: ------ I haven’t used the **oldest_unanswered_customer_message_date** field in the filter because a value is set in oldest_unanswered_customer_message_date even when customer is empty. Also, when a helpdesk user is set as the customer on a ticket and posts a message, the oldest_unanswered_customer_message_date does not get updated. task-5138678
This update simplifies the way payslip reporting displays key information. The changes remove redundant data fields and restrict rate percentages to two decimal places, making the reports easier to read and understand for payroll and finance teams. This enhances the overall user experience for reporting on payroll data.
Original PR description
- Removing the fixed amount and percentage measures as they are redundant data as fixed_amount value is used to set the amount and the percentage values is used to set the rate - Restricting the rate percentage to 2 decimals in order to improve readability. Task: 5407645
This update streamlines the stage forms within the Helpdesk and Referral modules by unifying their layouts, reorganizing fields, and adding clear placeholders. This improves usability and clarity for users managing support tickets and recruitment processes.
Original PR description
Improve the stage form views by unifying every views, moving fields, hiding sequence field and adding placeholders. Task-5186979
This update simplifies the process of tracking changes within custom fields in Odoo Studio. Users can now easily enable or disable chatter tracking directly when creating new fields, eliminating the previous manual step. This enhancement improves efficiency and provides better visibility into field updates.
Original PR description
This commit introduces a `Track in chatter` option in Studio’s field properties sidebar. The option allows users to enable or disable chatter tracking when creating new custom fields directly from Studio. The feature is available in form views for most field types, excluding One2many, Binary, and Image fields. previously user have to open field's properties and manually set the value to enable order tracking. task-5173295
This update enhances the user experience when managing salary rules by changing how sections are searched. Instead of a pop-up window, clicking 'Search more...' now opens the full list of salary rule sections directly in the current window. This simplifies the process of adding and managing sections within salary rules.
Original PR description
Clicking "Search more..." on the input_section field in salary rules now opens the full hr.salary.rule.section list view in the current window instead of a dialog popup. Additionally, the struct_ids field now uses the many2many_tags widget. Task ID: 5068764
This update adjusts Odoo's document layout design based on recent community contributions. The system now supports new layout options like centered and dual layouts, while removing older, boxed layouts. This change improves the flexibility and visual appearance of reports and documents within Odoo.
Original PR description
*: web_studio, pos_blackbox_be, l10n_co_dian Adapt to the changes in community PR which removes `external_layout_bold`, `external_layout_boxed`, `external_layout_striped` and adds `external_layout_center`, `external_layout_dual`, `external_layout_lines` task-4916379 Requires: https://github.com/odoo/odoo/pull/237109, https://github.com/odoo/upgrade/pull/8916
This update adds a new test specifically for PFA (Pension Funds Agency) calculations related to maternity leaves within the Belgian HR payroll module. This ensures accurate processing of these payments, aligning with local regulations and improving the reliability of the system for our Belgian clients. The change is considered an important improvement.
Original PR description
Forward-Port-Of: odoo/enterprise#102344
2 changes
Enhancements to existing features
This update expands how SLAs are configured for helpdesk tickets, allowing other Odoo modules to adjust the criteria used to determine SLA deadlines. Previously, this was limited, but now it's enabled, providing greater flexibility and control over SLA management within the helpdesk system. This improves the accuracy and responsiveness of service level agreements.
Original PR description
Allow other modules to modify the _sla_find domain when adding SLAs to helpdesk tickets. This is already the case for extra and false domains, while the main domain is hardcoded up to this commit. Forward-Port-Of: odoo/enterprise#97501
This pull request enhances the visual appearance and usability of the account reports module. Specifically, it updates the selection badges, improves the styling of review states, and adds functionality to redirect users to relevant check views based on return status. These changes aim to provide a clearer and more intuitive reporting experience.
Original PR description
task-5155703
1 change
Enhancements to existing features
This update enhances the Peppol integration by allowing users to attach multiple documents. These documents are now embedded within the XML format using the <AdditionalDocumentReference> tag, streamlining the exchange of information for Peppol transactions. This improves efficiency and compliance for Peppol-related processes.
Original PR description
[IMP] account: multiple embed files peppol Backport of 4170f0e889b8aa0557b1ae4e456f053407570832 This commit allows user to send multiple attachments through peppol. The attachments will be embedded into the xml under the <AdditionalDocumentReference> tag task-5103539 closes odoo/odoo#234339