Daily updates from Odoo
Tuesday, February 24, 2026
45 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 integrates Odoo's payroll system with the Belgian Joint Committee, ensuring compliance with local regulations. It includes changes to rule parameters and data migration to reflect the Committee's requirements, improving payroll accuracy and reporting for Belgian users.
Original PR description
- add the connection of the Joint Committee on rule parameters - add scalegrid rule parameter - migrate scalegrid BE data Task: 5477497
This pull request enhances the testing framework for Odoo's website rental functionality. Changes include a more efficient test setup using setUpClass, streamlining test execution and reducing redundancy. The updates also address community changes and remove outdated common values, ensuring consistent and reliable rental testing.
This update optimizes the performance of Odoo's Studio view editor by eliminating an unnecessary database query. The change ensures that view information is stored directly within the view's key, leading to faster and more efficient operations. This improves the overall responsiveness of the Studio interface.
Original PR description
Because ir.ui.view.xml_id triggers an additional SQL request, it will be more efficient to have that information in the key field of the view.
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
This update enables businesses to export essential payroll reports for Egypt (EG) – specifically NOSI Form 2 and ETA Form 2 – in Excel format. This allows for easier compliance reporting and data sharing with tax authorities. Users may encounter errors if required fields are missing during the export process.
Original PR description
### AIM:
- This commit introduces a way to export NOSI Form 2 and ETA Form 2 for the
Egypt (EG) country.
### FLOW:
- NOSI Form 2:
- Go to Employee -> Reporting > Egypt NOSI Form2.
- While exporting NOSI Form 2, you may encounter a user error; this indicates
that some required fields are missing.
- To export ETA Form 2:
- Once a payslip is created and confirmed > Payment Report > In the export
format, select ETA Form 2.
- While exporting ETA Form 2, you may encounter warnings or errors on the
payslip; this indicates that certain required or optional fields must be
filled to export ETA Form 2 correctly.
### Key Updates:
- Added support to export NOSI Form 2 and ETA Form 2.
Task: 4510109This update simplifies the user interface by streamlining breadcrumbs and ensuring control panel buttons display correctly. By grouping older navigation steps and fixing button wrapping, the system is now easier to navigate and use, particularly in complex areas of the application.
Original PR description
*account_reports,documents_spreadsheet,industry_fsm_sale,web_studio Only the most recent breadcrumb remains visible, while older navigation steps are grouped under the dropdown to reduce clutter in deep navigation path. This keeps the breadcrumb clean in deep navigation paths. Control panel buttons now keep their text on one line so labels are easier to read and the layout stays even. task-5933463
This update enables users to download a required XML file for notifying the SGK (Social Security Institution) in Turkey when a new employee is hired. The changes include adding necessary fields, validation rules, and ensuring the generated XML adheres to SGK specifications, streamlining compliance for Turkish companies.
Original PR description
- In this task we are allowing user to download SGK Hiring Notice XML(TR country). - Required in Turkey company to notify SGK when an employee is hired. Key updates: - Added fields required for SGK XML export. - Added tooltips for all new fields. - Added validations with clear error messages when mandatory employee details are missing. - Generated XML follows SGK specifications. task-5002712
This update fixes an issue where the system incorrectly overstated End-of-Service (EOS) provisions for departing employees. A new rule now accurately reconciles accumulated EOS with the final benefit amount, ensuring correct accounting and reducing potential overpayments. This improves financial accuracy and reporting related to employee departures.
Original PR description
## Before: - End-of-Service provision is accumulated monthly and assumed to be fully payable upon employee departure. - However, this assumption is incorrect in certain cases where employees are either not entitled to EOS or entitled to a reduced amount. - Currently, the system does not reconcile the accumulated EOS provision with the actual EOS benefit paid at departure, leading to overstated provisions. ## After: - A new salary rule is introduced and triggered when a departure reason is defined and the employee is archived. - The rule reconciles the total EOS provision accumulated across previous payslips with the final EOS benefit amount calculated at termination. - When the payable EOS is lower than the accumulated provision, the difference is posted as a negative adjustment. Task-5440790
This update allows users to manually adjust the data extracted from expense documents (PDFs or images) by the OCR system. Previously, changes required a full re-scan. This enhancement improves accuracy and streamlines the expense reporting process.
Original PR description
This PR aims to add the functionality to manually correct the values parsed by the OCR for expense documents. After this commit, PDF or images of expense documents can now allow for manual correction using the data extracted by OCR service. task-5165853 related PR: https://github.com/odoo/odoo/pull/250135
Resolved issues and error corrections
This update ensures that timesheet entries with negative hours exceeding six digits are now properly validated, preventing incorrect data entry. Previously, users could add entries with excessively large negative values without any error message. This fix improves data accuracy and reliability within the timesheet tracking system.
Original PR description
Currently, a user can add a timesheet entry with a negative Hours Spent value `exceeding six digits`. **Steps to reproduce:** - Install the `timesheet_grid` module. - Open the `Timesheets` app and…
Currently, a user can add a timesheet entry with a negative Hours Spent value `exceeding six digits`. **Steps to reproduce:** - Install the `timesheet_grid` module. - Open the `Timesheets` app and click `Add a line`. - Set Hours Spent to a `negative` value with more than six digits (e.g., -1000000). **Observation:** The line is added without any warning, whereas entering a positive value with more than six digits correctly raises an `error`. **Root cause:** At [1], the constraint validates only positive values exceeding six digits. As a result, negative values with more than six digits are not checked and bypass the `UserError validation`. **Fix:** This commit updates the constraint to ensure the six-digit limit applies to both positive and negative values. [1]: https://github.com/odoo/enterprise/blob/660905872909405c0a07a8317b4eb0a42e5854ca/timesheet_grid/models/analytic.py#L46-L49 opw-5909417 Forward-Port-Of: odoo/enterprise#108182 Forward-Port-Of: odoo/enterprise#106781
This update optimizes the master production schedule (MPS) by fixing an issue where unnecessary data was being loaded during order processing. The change prevents the system from pulling in irrelevant product information, resulting in a significant speed improvement. The action replenish now completes successfully.
Original PR description
When traversing X2many fields (bom_ids, bom_line_ids) during prefetching in filtered, the _prefetch_ids data grew excessively. Prefetching bom lines pulled in IDs for lines belonging to all boms across all associated products, even though _skip_bom_line in this case only operates on the current product's context. Use prefetch() with no args to avoiding unnecessary record loading for unrelated boms. Benchmark: | |Before |After| |-----------------|-------|-----| |action_replenish |Timeout|577ms| Related ticket: opw-5928055 Forward-Port-Of: odoo/enterprise#107648
This update fixes an issue where OCR-extracted expense amounts weren't correctly converting to the company's standard currency (USD). The change ensures that the 'Total' amount accurately reflects the receipt's original currency value, using the correct exchange rate. This improves the accuracy of expense reporting.
Original PR description
Steps to reproduce: 1. Initialize an expense with a foreign currency (e.g., EUR). 2. Trigger OCR extraction on a receipt with a specific total. 3. Observe that both 'Total In Currency' and 'Total' (USD) are set to the same value. 4. The exchange rate is forced to 1.0, ignoring the system's exchange rate. Cause: The _fill_document_with_results method assigned the OCR total to both 'total_amount_currency' and 'total_amount' as a placeholder. This triggered the field's inverse logic during the write() call, causing Odoo to treat the input as a manual exchange rate override of 1:1. Solution: Remove the 1:1 placeholder assignment. The method now explicitly calculates 'total_amount' using the _convert() helper once the currency is identified, ensuring the company currency total reflects the actual system exchange rate. opw-5437611 Forward-Port-Of: odoo/enterprise#108089 Forward-Port-Of: odoo/enterprise#107534
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 resolves an issue where users within the 'Planning / User' group couldn't take open shifts. The fix ensures that the 'I Take It' button is consistently displayed for this group, allowing them to seamlessly accept shifts as intended. This improves the planning process for staff.
Original PR description
## Issue In the Planning app, users within the *Planning / User* groups could not take open shifts. The button *"I Take It"* would not be displayed when clicking on the shift. ## Steps to reproduce…
## Issue
In the Planning app, users within the *Planning / User* groups could not take open shifts. The button *"I Take It"* would not be displayed when clicking on the shift.
## Steps to reproduce
1. Install the *Planning* (`planning`) app
2. In the Planning app, as an admin, create and publish an open shift
3. Log in as a *User*, open the *Planning* app, and click on the open shift
4. **The _"I Take It"_ button is not displayed**
When logging in as a user who is **not** part of the *Planning / User* group, the *I Take It* button is displayed.
## Cause
The condition for the *I Take It* button to be displayed is the following:
https://github.com/odoo/enterprise/blob/301e3c40c3272a6ae89a1eb4387d7d244e1dc52c/planning/views/planning_views.xml#L282-L283
The condition that makes the button invisible is `not context.get('my_planning_action')`. When the user is part of *Planning / User*, the schedule they see when opening the *Planning* app is the *"Schedule by Resource"*, which has the following context:
https://github.com/odoo/enterprise/blob/301e3c40c3272a6ae89a1eb4387d7d244e1dc52c/planning/views/planning_views.xml#L716
When a user who **is not** part of the *Plannig / User* group opens the *Planning* app, they see their own schedule, where the context is different than in the first case:
https://github.com/odoo/enterprise/blob/301e3c40c3272a6ae89a1eb4387d7d244e1dc52c/planning/views/planning_views.xml#L636
Because the `my_planning_action` property is in the context (and all the other conditions are respected), the button is displayed.
opw-5451282
Forward-Port-Of: odoo/enterprise#104919This update ensures the MO filter remains active in the shopfloor search bar after a user clicks on a manufacturing order's header. Previously, clicking the header would remove the filter, causing confusion. This fix maintains the correct filter context, improving usability and workflow efficiency.
Original PR description
### Steps to reproduce: - Download MRP app. - Create a product and its corresponding BOM (including at least a single operation) - Create and confirm a manufacturing order for 1 unit of that product…
### Steps to reproduce: - Download MRP app. - Create a product and its corresponding BOM (including at least a single operation) - Create and confirm a manufacturing order for 1 unit of that product - Click on the Shop Floor smart button > Click on the header of the MO - The MO filter applied on the shopfloor search bar is removed ### Issue: The MO search filter is removed after you click the header of the workorder order. This bug was introduced by another commit https://github.com/odoo/enterprise/pull/94584/changes/c83ab24a8d037a339db8067c7e9794cba5c16eab to remove the filter when a workorder's barcode is scanned. Hence, https://github.com/odoo/enterprise/blob/67ff37a830202afb8c8914da6f7bc8d4972eefd4/mrp_workorder/static/src/mrp_display/mrp_display_record.js#L289-L292 the change resulted in the filter being removed every time the header is clicked. In the case where a user clicks to start the workorder, we need to keep the filter. ### Fix: Based on https://github.com/odoo/enterprise/blob/67ff37a830202afb8c8914da6f7bc8d4972eefd4/mrp_workorder/static/src/mrp_display/mrp_display_record.xml#L6-L8 `onClickHeader()` is called every time a shopfloor record is clicked, which (based on the reference in the previous section) removes the filter, then calls `startWorking()`. By removing `this.env.searchModel.removeMOFilter()` from this method, it's ensured that clicks preserve the user's current search context. For https://github.com/odoo/enterprise/blob/67ff37a830202afb8c8914da6f7bc8d4972eefd4/mrp_workorder/static/src/mrp_display/mrp_display.js#L248-L250 since the original workflow of removing the filter in case of a barcode scan should be kept, moving `removeMOFilter()` call here with the appropriate reference of `workorder.component.env.searchModel`matches the expected behaviour. opw-5877418 Forward-Port-Of: odoo/enterprise#107121
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
A technical problem with the Hong Kong payroll calendar was causing errors that prevented new employees from being created. This update corrects the calendar's setup to use the correct work entry types, resolving the issue and restoring functionality.
Original PR description
The resource calendar for Hong Kong doesn't work well at the moment. When the data is loaded, it picks the company from the env (usually a US one during db initialization) and the country from it. Using that country, it deduces the work entry type for the attendance_ids. At the moment, the result is that HK calendar ends up with US work entries, causing access errors in certain flow. (e.g. With hr_contract_salary installed you can no longer create employees). The solution is to explicitly set the company_ids to False as done in other countries to have the generic work entry set and bypass the issue. Forward-Port-Of: odoo/enterprise#108250
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 addresses several issues causing crashes related to tracking functionality within Odoo Enterprise. The team has focused on using accurate date/time data instead of strings, streamlining tests, and resolving a bug related to loop usage in multi-mode environments. These changes enhance the stability and reliability of the helpdesk, payroll, and expense tracking modules.
Original PR description
Forward-Port-Of: odoo/enterprise#108286
This update fixes a bug in the payrun process where clicking 'Continue' on validated steps would incorrectly block access to the next step. The fix corrects a misconfigured context key and ensures the increment logic only executes when the active step matches the stored step, improving the user experience.
Original PR description
Problem --------- If you click on Continue on a future step, it will validate all the previous step. If you click on Continue on a validated step it will not give you back the next step if it's already incremented Solution --------- The context key was wrong. The behavior of the increment was wrong too: the increment should be executed only if the current active step is the same as the stored step. task-5960023
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
This update enhances the skills evolution report to provide a more accurate and historical view of employee skill development. By tracking skill changes through a new data model, the report now aggregates average progress across the organization, offering a better understanding of overall skill trends and development needs.
Original PR description
. Fix & Refactor the Skills Evolution Report to provide an accurate, historical view of skill progression across the emplyees. Key changes include: . Historical Skill Tracking: The report now calculates skill evolution by querying hr_employee_skill for each employee, instead of relying on the previous skill level field (previous_skill_level_id). This ensures historical changes are correctly captured, even for skills added or updated over time. . Average Progress Across Employees: The report now aggregates the average progress of each skill across all active employees, providing a true organizational-level skill evolution metric. task-5106696
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 pull request is preparing Odoo for the upcoming Owl3 upgrade. It involves migrating code to align with Owl3's changes, primarily by updating import statements and utilizing compatibility files to ensure continued functionality. This is a necessary step to maintain compatibility with the Owl3 library.
Original PR description
This PR adds commits to prepare the support of the next version of owl. Owl3 has a lot of breaking change. A compatibility file with owl2 features that is removed or behaviour changed in owl3 is added and the features are imported from this compatibility file. The PR also adds an upgrade code file which has been used to make the current changes.
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.