Daily updates from Odoo
Tuesday, February 24, 2026
27 changes · master
Enhancements to existing features
This update replaces a less efficient caching method (`lru_cache`) with a simpler, more reliable caching approach. This change optimizes the performance of the Delivery Ups module, leading to faster processing times and a smoother user experience. It's a routine performance enhancement.
Original PR description
On an argument-less function, `lru_cache` is strictly worse. Forward-Port-Of: odoo/enterprise#108100
This update improves the performance of the Work Entry Attendance module by adjusting how the system counts queries during work entry generation. Specifically, it addresses a change in the system's logic that now creates work entries for weekend holidays, leading to increased query activity. This ensures the system continues to function efficiently.
Original PR description
This PR updates the expected query count for regenerate_work_entries in the Work Entry Attendance module. Due to the new functionality that creates work entries for weekend holidays, additional queries are now triggered during work entry generation. task-4907728
This update improves the user experience by automatically opening avatar cards when a follower is clicked in the follower list. Previously, users were directed to a partner form view, which was less intuitive. This change streamlines the process of viewing follower information.
Original PR description
The tours are updated to reflect the new behaviour where clicking on a follower opens the avatar card for users instead of the partner form view task-5873738 Forward-Port-Of: odoo/enterprise#107393
This update modifies the company settings wizard within the Odoo Enterprise module. The change shifts the focus to using company-specific data, aligning with best practices. This adjustment could potentially impact module uninstallation processes.
Original PR description
In this commit, we changed the configure company settings wizard view from res.config.settings to res.company All the used fields are related to res.company, this can have side effects during module uninstallation (for example). task-5933795
Resolved issues and error corrections
This update fixes a bug preventing users from searching the Colombian Daily Journal (Libro Diario). The issue was caused by missing data in the journal entries, which blocked the search bar. Now, all journal entries are searchable by move, partner, account, and label.
Original PR description
Steps to reproduce: 1. Open the Colombian Daily Journal (Libro Diario). 2. Type a move name or partner in the search bar. 3. Observe that no results are returned. Cause: Report lines were generated with an empty 'name' attribute. The accounting report framework uses this field for client-side filtering. Empty names make the search bar non-functional. Solution: Populate the 'name' field with move, partner, account, and label data. This enables the frontend search bar to match against these strings. opw-5495558 Forward-Port-Of: odoo/enterprise#106179
This update prevents unnecessary errors from being raised when the Codabox sync process (CRON) encounters temporary issues. This change improves the reliability of the system by avoiding automatic disabling of the sync process due to repeated errors, ensuring data stays synchronized when servers are briefly unavailable.
Original PR description
In case of a failure/downtime from the IAP/Codabox servers, an error is currently being raised. Although this is useful when manually clicking the Fetch button to see what happens, in the context of a CRON it's much less desirable as multiple failures from a CRON will automatically disable it which is not useful as the servers might be back up later on. Now, instead, we only raise if we're not in a CRON environment. opw-5922549 Forward-Port-Of: odoo/enterprise#107798
This update resolves a crash issue that occurred when using the pivot table autofill feature with invalid data. The fix ensures that autofill functionality remains stable while preventing tooltips from causing a system-wide error. This improves the reliability of pivot table data analysis.
Original PR description
If you try to autofill a pivot cell that has an invalid relational id in its domain (eg. `=PIVOT.HEADER(1, "stage_id", 99999999)`), the autofill actually works but the tooltip make everything crash. Task: [5913754](https://www.odoo.com/web#id=5913754&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#107807 Forward-Port-Of: odoo/enterprise#106601
This update resolves a technical issue preventing an 'add inputs' button from appearing on Swiss payroll payslips. This ensures accurate and complete payroll reporting for our Swiss clients. The fix addresses inconsistencies introduced after a recent update.
Original PR description
don't show add inputs button on payslips on the swiss localization. Forward-Port-Of: odoo/enterprise#107958
This update optimizes the creation of global invoices in the Mexican EDI module. By changing the wizard to a 'TransientModel,' data is no longer permanently stored in the database, leading to a more efficient and streamlined process. This change resolves a previous issue and enhances performance.
Original PR description
Change to TransientModel so a wizard is not permanently stored in db when creating a global invoice. Forward-Port-Of: odoo/enterprise#107950 Forward-Port-Of: odoo/enterprise#107244
This update fixes an issue where the 'Update Rental Prices' button disappeared after saving rental orders. The fix adds a field to the view that ensures the button remains visible when a rental period is adjusted. This ensures users can always update rental prices as needed.
Original PR description
Steps to produce: --- - Install `sale_renting` module. - Rental > Open any order > Change the rental period. - Save the record. Issue: --- - After saving the order, the `Update Rental Prices` button becomes invisible. Root cause: --- - The field `show_update_duration`, which controls the visibility of the button, is not present in the view. As a result, when the record is saved, the field is not included in the form data and its value is not properly maintained, causing the button to become invisible. - The field is removed from the view in this [commit]. Solution: --- - Added the `show_update_duration` field to the view to ensure its value is properly maintained. This allows the `Update Rental Prices` button to remain visible when applicable. [commit]: https://github.com/odoo/enterprise/commit/b90bbdef10a7a37fb065626ba995811ab388c7a1 opw-5937145 --- Forward-Port-Of: odoo/enterprise#108157 Forward-Port-Of: odoo/enterprise#107621
This update resolves an accounting error in the UK and Netherlands versions of Odoo by ensuring tax receivable and payable accounts are distinct. Previously, the same account was used, leading to incorrect reporting of tax balances. This fix ensures accurate tax reporting and avoids potential accounting discrepancies.
Original PR description
Forward-Port-Of: odoo/enterprise#94191
This update ensures that payslips created on-the-fly are automatically linked to the corresponding pay run. Previously, this connection was missing, causing potential data inconsistencies. This change improves the accuracy and reliability of payroll reporting.
Original PR description
**Description:** When creating a Pay Run on the fly from an off cycle payslip, the payslip should be properly linked to the created Pay Run. **Implementation:** . Update hr_payslip create() method to link it to the on-fly created payrun task-5959481
This update resolves a technical issue identified by the Odoo runbot testing system. The change ensures that work entries accurately reflect planned scheduling slots, preventing failures caused by adjustments to the slot calculation logic. This improves the reliability of the work entry planning feature.
Original PR description
update the test to ensure that workentries match the plannning slots rather than a literal value which will fail if the slot calc change Task: 5705528
This update enhances the automated process for merging duplicate partner records. Previously, large duplicate groups would cause system crashes. Now, the system processes up to 3 partners daily, distributing larger groups across multiple runs to prevent performance issues and ensure a smoother merging process.
Original PR description
Before this commit, automatic partner merging would crash when trying to merge more than 3 duplicates at once because the base merge wizard enforces a 3-partner safety limit. After this commit, the cron processes only 3 partners per day (2 source + 1 destination), leaving remaining duplicates for subsequent runs. This spreads large merge groups across multiple days. task-5864653
This pull request reverts a recent change to the web_studio UI test suite. The previous modification incorrectly checked for an exact element count of three, rather than verifying that the element appears at least three times. This reversion ensures the test suite accurately reflects the expected behavior of the web_studio feature.
Original PR description
Revert modifications made in https://github.com/odoo/odoo/pull/245680 With that modification, we checked that element is exactly 3 times, But this is not the same to check that the element is at least preset 3 times..
This update streamlines how leave entries are created in the Gantt view. Previously, users could add or replace existing entries, but this has been simplified to only adding new entries. This change aligns with recent updates to attendance work entries and improves the overall user experience.
Original PR description
Before this change, the shortcut behavior field had two options: add and replace allowing leave entries in the Gantt view to either add to or replace existing entries. This change completes a missing part of the Work Entries Apocalypse task. Since attendance work entries are no longer created by default, we no longer need different shortcut behaviors. Work entries should always be added, not replaced. Therefore, the shortcut_behavior field has been removed, and add is now the only behavior. Task-5942542
This update adjusts the layout of rental periods within Sales Orders to align with a recent change in how Sales Order headers are displayed. Moving the rental period field after the commitment date restores proper alignment and ensures a cleaner, more organized Sales Order view for rental agreements. This improves usability and clarity.
Original PR description
Before this commit: The `sale_renting` module inserted the `rental_period` field between `payment_term_id` and `commitment_date`. After the community change moving `commitment_date` to the Sales Order header, the `rental_period` field appeared in between fields. After this commit: Moved the `rental_period` field after `commitment_date` in the Sales Order header. task-5892894 See Also: Community PR:https://github.com/odoo/odoo/pull/246689
This update removes a confusing counter in the 'Logged On' column of grouped VoIP call reports. The change was implemented by hiding the counter using a CSS rule within the specific VoIP call list view. This simplifies the reporting experience for users.
Original PR description
Since [1], grouped VoIP call rows show a counter in the "Logged On" column. Added a scoped class on the VoIP calls list view and a CSS rule to hide that group header counter only in this view. I did not find a native list view parameter or option to disable it. [1]: https://github.com/odoo/enterprise/commit/ab2377ebf7d21c6bcb5fcde0e6e4c105c75c29cd task-5955136
A technical issue preventing the Payroll data update cron job from running correctly has been fixed. This update addressed a situation where the system was trying to access a missing file, causing an error. This ensures the payroll data is updated reliably after module installation.
Original PR description
When the ``Payroll: Update data`` cron is executed after installing the ``l10n_lu_hr_payroll`` module, a traceback is raised. Steps to reproduce the error: - Install ``l10n_lu_hr_payroll`` module - Run the ``Payroll: Update data`` cron Traceback: ```py FileNotFoundError: [Errno 2] No such file or directory: '/home/odoo/src/enterprise/saas-19.1/l10n_lu_hr_payroll/data/hr_payslip_input_type_data.xml' ``` In commit [1], ``hr_payslip_input_type_data.xml`` file was removed. However, it is still being referenced in the code below here. https://github.com/odoo/enterprise/blob/4174108cb98a9fd84a012ff9dca81ae322c5f338/l10n_lu_hr_payroll/models/hr_payslip.py#L209 As a result, when the ``Payroll: Update data`` cron runs, the system attempts to update a file that no longer exists, causing a FileNotFoundError. [1]: https://github.com/odoo/enterprise/commit/0fecd57652c8c72a4fb91d44bd0c5d75f621541a sentry-7278209115 Forward-Port-Of: odoo/enterprise#108068
This update fixes an issue where non-sale enabled products were incorrectly appearing in sales orders. The change ensures that only products designated for sale are selectable, preventing errors and improving order accuracy. This resolves a potential confusion for users creating sales orders.
Original PR description
Steps to produce: --- - Install `sale_renting` and `sale_management` modules. - Go to `Sales > Products > Products`. - Create a product and disable the Sales option (`sale_ok = False`). - Create a…
Steps to produce:
---
- Install `sale_renting` and `sale_management` modules.
- Go to `Sales > Products > Products`.
- Create a product and disable the Sales option (`sale_ok = False`).
- Create a Sales Order and try to add that product.
Issue:
--
- Even though the product is not sale-enabled (`sale_ok = False`), it is still selectable in the Sales Order.
Root cause:
---
- At [1], The issue occurs because `super_domain` was not always included.
- When `order_is_rental` is True, `super_domain + []` happens,
so only `super_domain` is applied.
- But when `order_is_rental` is False, instead of
`super_domain + [('rent_periodicity', '=', False)]`, only
`[('rent_periodicity', '=', False)]` was returned, and
`super_domain` was ignored.
- Because of this, base conditions from `super_domain` like
`sale_ok = True` were not applied.
Solution:
---
- Add parentheses around the conditional expression to ensure proper evaluation order and correct domain construction, so only products with `sale_ok = True` are selectable.
[1] https://github.com/odoo/enterprise/blob/abfde5f253c4c52d3a734ca8dafe6f8ed261cf75/sale_renting/models/sale_order_line.py#L49
opw-5902403
---
Forward-Port-Of: odoo/enterprise#107639This update resolves a technical issue preventing users from correctly selecting documents within the document creation dialog in the Enterprise module. The fix involved correcting a broken XPath expression, ensuring the dialog functions as intended and improving the user experience. This change ensures seamless document integration.
Original PR description
task-5952598 Forward-Port-Of: odoo/enterprise#107954
This update resolves an issue where the payroll sheet calculation would fail if there were any warnings present. The change allows the payroll sheet to be generated even with warnings, ensuring accurate payroll processing. This improves the reliability of the HR payroll module.
Original PR description
Revert https://github.com/odoo/enterprise/pull/104137 Forward-Port-Of: odoo/enterprise#108340
This update resolves a testing issue that prevented users from validating Arabic VAT invoices. The change uses elevated permissions (sudo) when writing temporary files, ensuring the testing environment functions correctly regardless of user access rights. This improves the reliability of the Arabic VAT invoice validation process.
Original PR description
This pull request makes a minor update to the `_dummy_afip_validation` method in `account_move.py`, improving its reliability for testing environments. * Testing reliability: The method now uses `sudo()` when writing dummy AFIP fields, ensuring that the operation succeeds even if the current user lacks write permissions. Without this fix, if the user doesn't belong to group "base system", it won't be able to validate invoices in testing environment. <img width="1258" height="454" alt="image" src="https://github.com/user-attachments/assets/522bfd9d-33be-4bcd-a60b-ef4c09a8e0d6" /> Forward-Port-Of: odoo/enterprise#107937
Features or functions removed from Odoo
This update removes unnecessary demo data from the Odoo Enterprise payroll module. This simplifies the system for new installations and reduces the amount of data that needs to be managed. The change improves the overall user experience and streamlines the setup process.
This update removes a redundant dependency on the SMS module within the sale_subscription module. Previously, customers were forced to install SMS even if they didn't need it, leading to unnecessary resource usage. This change streamlines the subscription module and allows customers to uninstall SMS without impacting their subscription functionality.
Original PR description
The sale_subscription module historically depended on the sms module to support creating alerts based on the health of a subscription contract. However, this capability is no longer supported in the current version, rendering the dependency obsolete. Currently, this dependency only serves to force the installation of the SMS module for customers who may not need it, preventing them from uninstalling SMS without losing Subscription functionality. This commit removes the hard dependency on 'sms' from the manifest and cleans up the associated access rights (ACLs) and artifacts that are no longer needed. Task-ID: 5103920
Code cleanup and technical improvements
This update removes unnecessary URL redirects from website tour scripts. These redirects were causing delays and were redundant since the same functionality is handled elsewhere. This change streamlines the onboarding process and improves website performance.
Original PR description
The URL key in a tour's JavaScript file implies a redirect to that URL once the browser opens. If this URL is the same as the one used in `start_tour()` (Python), then it serves no purpose. It's even detrimental because it implies a redirect (and therefore a waste of time). The URL key in the JS file is (for now) only used for onboarding tours. This key will be defined later in the .xml file for onboarding tours. That's why we're removing the URL keys from the registries here.
This update streamlines the testing process for the Documents module by moving tests to run after the initial installation. This change reduces the overall testing time, improving development efficiency. It addresses a historical practice of running tests during installation, which was no longer necessary.
Original PR description
Some tests where running at install by default for historical reasons, this commit moves them post install to speedup testing time.