Daily updates from Odoo
Friday, February 27, 2026
20 changes
6 changes
Enhancements to existing features
This update simplifies how businesses can tailor the product container element across different modules. Previously, customization required extensive code changes, limiting flexibility. Now, a dedicated method makes it easier to extend and maintain this functionality, ensuring future compatibility.
Original PR description
The product_container element may vary across modules and cannot be hardcoded. Modifying it currently requires overriding the entire add_to_cart method, which reduces flexibility and maintainability. This change extracts the product_container logic into a dedicated method, making it easier to extend and customize without duplicating the full add_to_cart implementation. This ensures better forward compatibility and modular extensibility. Enterprise PR: https://github.com/odoo/enterprise/pull/107343 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#249289
This update streamlines the user experience for accessing notification settings within the Discuss app. Previously, settings opened in a dialog, now they appear in a dropdown, creating a more consistent and user-friendly interface. Minor UI improvements have also been made for better visual harmony.
Original PR description
Before this PR, opening the notification settings from the thread action (In Discuss App) displayed them in a dialog, which made the UI less consistent with other thread actions. After this commit, opening the notification settings from the thread action displays them in a dropdown instead of a dialog, providing a more consistent and streamlined user experience. Task-5936685 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update streamlines the user experience by changing how notification settings are accessed from thread actions in the Discuss sidebar. Previously, settings opened in a dialog, now they open in a dropdown, creating a more consistent and user-friendly interface.
Original PR description
Before this PR, opening the notification settings from the thread action in the Discuss sidebar displayed them in a dialog, making the UI inconsistent with other thread actions. After this PR, the notification settings open in a dropdown instead of a dialog, ensuring a more consistent and streamlined user experience. community: https://github.com/odoo/odoo/pull/247352 task-5936685
This update clarifies the process for setting an out-of-office period by introducing separate start and end date fields. Previously, users could unintentionally create indefinite out-of-office periods due to a confusing workflow. This change simplifies the setup and reduces the risk of errors.
Original PR description
In the user preference panel, the end date of the out-of-office period is not displayed by default. To define an end date, users must first click the field and then select the "Range" option in the calendar picker. Because these steps are not intuitive, users may enter only a start date and omit the end date, inadvertently creating an unlimited out-of-office period. To address this issue, we will introduce two separate fields: one for the start date and one for the end date. The end date field will appear only after a start date has been selected. This approach clarifies the workflow, reduces the risk of incomplete entries, and keeps the form view concise. Task-5435466 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248651
This update enhances the Odoo inbox by streamlining the user interface and improving functionality. Specifically, it removes distracting elements, provides clearer notifications for bulk actions, and ensures all messages are properly displayed. These changes contribute to a more efficient and user-friendly email management experience.
Original PR description
This commit improves the UX of the inbox by: 1. Improving the copywrite of the empty inbox. 2. Removing the rainbow man animation. 3. Showing a toast notification upon marking all read giving the possibility to undo. 4. Allowing any message that got notified to the inbox to be marked as unread. 5. Adapted the spacing of messages with subject. task-5952525 | Before | After | | ------------- | ------------- | | <img width="564" height="235" alt="image" src="https://github.com/user-attachments/assets/fc937a48-9947-42ed-8f5c-77455a203702" /> | <img width="554" height="232" alt="image" src="https://github.com/user-attachments/assets/dc295e3e-57d3-4007-9aad-05f555943cba" />|
This update adjusts the website generator version to 2.4 to ensure compatibility with recent changes in the 19.2 release. This ensures the website continues to function correctly and reliably with the latest Odoo Enterprise features. It's a standard maintenance update.
Original PR description
Since some snippets changed in 19.2, we up the version to support them
1 change
Enhancements to existing features
This pull request streamlines the email composer by removing unnecessary features like video support and redundant highlighting, while also enhancing usability for replying and forwarding messages. It addresses several minor improvements and bug fixes to ensure a smoother and more reliable email experience.
Original PR description
Backport of fixes added in odoo/odoo#238694 - banners don't work in emails because of inline conversion, and we don't need them - video elements and iframes are also not supported, hence we can…
Backport of fixes added in odoo/odoo#238694 - banners don't work in emails because of inline conversion, and we don't need them - video elements and iframes are also not supported, hence we can remove the plugin entirely - the highlight inside the composer is redundant with the footer separator - "edit" should not be a quick option for admins on other users' messages, instead reply is more appropriate - signatures should be shown when composing replies and forwards as well - images already embedded into the body of a message don't need to be shown as attachments as well - images shown in the composer don't need to be big and legible by default, users can click on them as needed - when the author has no email and there is no email from (log not on a fresh db for example), replying should be possible - recipients should not be recomputed in the composer unless the user selected a template using specific recipients. This avoids picking a bunch of specific recipients only to lose them when picking a template. - when sending a reply immediately without touching the body, the reply content should still be quoted task-5013894 Forward-Port-Of: odoo/odoo#239679
1 change
Enhancements to existing features
This update makes the Gantt chart's date selection more responsive. Previously, date changes required clicking 'Apply' to update the display. Now, date selections update immediately in the UI, providing a smoother and more intuitive user experience. This change enhances usability and efficiency when working with project timelines.
Original PR description
- Previously, the Gantt scale selector only updated the displayed date range after the "Apply" button was clicked. This was because the template was bound to the component props rather than the local state. - This commit binds the date picker display to the local pickerValues state. Now, when a user selects a date in the picker, the UI updates immediately, while the actual data fetch remains deferred until "Apply" is clicked. Task: 5932671
1 change
Enhancements to existing features
This update streamlines test setup by centralizing it within test classes. This change improves the reliability and efficiency of our automated testing process, particularly for modules like L10n BE, HR Payroll, Timesheet Grid, and related areas. It ensures consistent test environments and reduces potential issues during development.
Original PR description
Forward-Port-Of: odoo/enterprise#108872 Forward-Port-Of: odoo/enterprise#108739
6 changes
Enhancements to existing features
This update allows users to easily negotiate salaries based on net amounts, making it simpler to understand employer costs and employee compensation. Previously, users had to manually calculate net figures, which is now streamlined for a better user experience. This change improves employee engagement and simplifies payroll simulations.
Original PR description
For users it is often easier to negotiate/talk with employee based on a net amount and simulate what will be the employer cost but currently the user has to do a simualtion base on monthly gross and search until he finds the net he wants. task-5925813
This update ensures that employee names are displayed in their full, correct length on pay run reports. Previously, names were truncated, which could lead to confusion and errors when reviewing payroll data. This change improves clarity and accuracy for HR and finance teams.
Original PR description
. Display Employee name in ful length on pay run listview task-5916582
This update standardizes timesheet data storage to always use hours in the database, simplifying calculations and improving accuracy. Previously, inconsistencies with day-based storage led to frontend errors. This change impacts several key modules related to timesheet management.
Original PR description
Impacted modules: - helpdesk_timesheet - timesheet_grid After this commit, timesheets will always be stored in hours in database, the field project_time_mode is therefore not needed anymore. task-3508445 related-https://github.com/odoo/odoo/pull/143171
This update simplifies the Hong Kong payroll module by fully integrating eMPF (employee MPF) support. Previously a temporary workaround, this change removes redundant code and aligns the module with current Hong Kong payroll standards. This improves the system's efficiency and reduces complexity.
Original PR description
Previously, `l10n_hk_hr_payroll_empf` was introduced in version 19 as a temporary solution for stable releases. Its purpose was to support the new system while hiding deprecated views and ensuring new users received the correct version via auto-installation. Now that the feature is fully supported, the separation is no longer necessary in master. This commit merges the `l10n_hk_hr_payroll_empf` logic directly into `l10n_hk_hr_payroll`. This simplifies the codebase and aligns the module with standard Hong Kong payroll requirements. The legacy provider-specific feature for Manulife is also removed. Task-5437968
This update enhances the Swiss payroll module's functionality within organizations with multiple companies. It restricts modifications to Swiss company settings and restores access to related features while ensuring appropriate error handling when accessed from the Swiss context. This improves the stability and usability of the module for businesses operating across different regions.
Original PR description
- Restrict all form modifications to Swiss companies. - Restore visibility of the related menu items, but raise appropriate errors when accessed from Swiss companies. Task: 5130161
This update streamlines the restaurant order process by automatically sending pending changes to the kitchen when an order is validated on the payment screen. Previously, a confirmation pop-up was required, but this change removes that step and simplifies the workflow for staff. This improves efficiency and reduces potential errors.
Original PR description
pos_*: pos_restaurant_preparation_display, l10n_de_pos_res_cert Before this commit: ========== - In restaurant mode, when navigating to the payment screen, if the order still had unsent changes for the kitchen, a confirmation pop-up was displayed before sending them. After this commit: ========== - Any pending changes are automatically sent to the kitchen upon validation on the payment screen, removing the need for the confirmation pop-up and streamlining the workflow. Related PR: - https://github.com/odoo/odoo/pull/237731 Task-5321557
3 changes
Enhancements to existing features
This update enhances GST return filing within Odoo's multi-branch system, specifically addressing scenarios where branches operate independently or share a parent company's GST identity. It prevents automatic return creation, guides users to process returns through the parent company, and alerts users to potential conflicts with the parent's GST information.
Original PR description
In a multi-branch GST environment, branches may either share the parent company’s GST identity or operate as independent legal entities. The following improvements align GST return creation/filing…
In a multi-branch GST environment, branches may either share the parent company’s GST identity or operate as independent legal entities. The following improvements align GST return creation/filing with the above logic: - In this commit, we are modifying the GSTR returns so that they will not be created automatically. - Allow independent automatic return creation for branches with a different GST number than the parent. This is the case when the branch company with a different GST number than the parent sets the account opening date - Block the branch having the same GST number as the parent. When creating manual returns. Allowing access to returns filing at the branch level would risk duplicate or inconsistent GSTR filings. Instead, users are guided to process such returns from the parent company using the Tax Unit mechanism. - Display an alert warning when a branch uses the same GST username as the parent, at the time when the user enters credentials in settings. Task-5369591
This update makes the Gantt chart's date selection process faster and more intuitive. Previously, users had to click 'Apply' to see changes; now, date selections update immediately in the UI. This enhances the user experience and allows for quicker adjustments to the chart's date range.
Original PR description
- Previously, the Gantt scale selector only updated the displayed date range after the "Apply" button was clicked. This was because the template was bound to the component props rather than the local state. - This commit binds the date picker display to the local pickerValues state. Now, when a user selects a date in the picker, the UI updates immediately, while the actual data fetch remains deferred until "Apply" is clicked. Task: 5932671 Forward-Port-Of: odoo/enterprise#107380
This update enhances the security and logging around exporting large amounts of data from Odoo spreadsheets. Specifically, it adds logging for common export activities like downloading and printing, and restricts access to frozen/XLSX spreadsheets to authorized users. This improves data tracking and protects sensitive information.
Original PR description
Forward-Port-Of: odoo/enterprise#108289 Forward-Port-Of: odoo/enterprise#85888
2 changes
Enhancements to existing features
This update enhances the 'Unpaid' bill filter in the accounting module to now include draft vendor bills, providing a more complete view of outstanding payments. Additionally, the system now correctly filters out journal entries from the 'Unpaid' filter, ensuring accurate reporting. This improves financial visibility and reporting accuracy.
Original PR description
In this commit: - Updated the `Unpaid` filter to show draft bills in addition to posted bills. The filter now includes all non-cancelled bills with payment status `Not Paid` or `Partially Paid`. - Backported the logic from 18.0 to ensure journal entries are filtered out by checking that type is not equal to `journal_entry`. task-5900283
This update significantly speeds up a core process within Odoo that identifies relevant bank accounts for financial reporting. By optimizing the data retrieval method, the system now completes this task in milliseconds instead of seconds, leading to faster reporting and a smoother user experience. This change focuses on internal performance improvements.
Original PR description
Before this commit, retrieving the `account_ids` from the properties in the method `_get_default_amls_matching_domain` involved searching for all the properties and calling the method `get_by_record` on each record. The `accounts` were fetched only to get the ids to add them to the `blaclisted_stock_account_ids`. Since, the domain had the condition `value_reference != False`, and the field holds the model name and the id of the record, we can directly fetch the `ids` by doing a read_group to eliminate possible duplicates and add the ids to a set of `account_ids`. This will eliminate a search to every record of the `properties` fetched which will improve the performance significantly. The benchmark done below was on a database that fetched **15630** properties and it was only tied to **two** accounts. | Scenario | Time (seconds) | |-----------|----------------| | **Before** | **7s** | | **After** | **27ms** | opw-5868236