Tuesday, December 2, 2025
25 changes · master
Enhancements to existing features
This update improves the efficiency of IoT display updates by intelligently determining if a URL change is needed. Previously, updates were triggered unnecessarily, but now the system only updates the URL when a screen rotation is requested, streamlining the process and reducing unnecessary network traffic. This results in a more responsive and reliable IoT experience.
Original PR description
To avoid updating the URL of the IoT display when we only want to rotate the screen, we now check which value changed before sending the request.
This update replaces the fa_book icon in knowledge article search results with the article's specific emoji, enhancing visual clarity. Crucially, the article body is now also displayed, providing users with complete information. This improves the user experience when searching for knowledge articles.
Original PR description
Before this commit, when a knowledge article appeared in the search results, if an image or icon was displayed for that result, it was represented with the fa_book icon. Also the body of the article was not shown. Now, when an article is shown, it is represented with the emoji defined specifically for that article. The body of the article is also showed. Part of task-4029264. linked with [this PR 192032](https://github.com/odoo/odoo/pull/192032)
This update adjusts the way the quantity input is handled within the product catalog modules (industry_fsm_sale and industry_fsm_stock) to align with recent changes made by the Odoo community. This ensures consistent functionality and a better user experience for entering product quantities.
Original PR description
*: industry_fsm_sale, industry_fsm_stock Adapt to the changes made in community where the DOM for the quantity input is reworked. task-4671411 Community: https://github.com/odoo/odoo/pull/236932
This update aligns the Odoo Enterprise MRP Work Order module with recent community changes. Specifically, a new parameter has been added to ensure compatibility and proper integration with updated functionality, streamlining the creation of work order catalogs. This ensures consistent behavior across all Odoo Enterprise versions.
Original PR description
With this commit: --------------------------- - Added a child_field parameter to the _get_new_catalog_line_values method to align with the changes made in the community. This ensures compatibility and proper integration with the updated function. Task Id: 4737887 Community PR: [228145](https://github.com/odoo/odoo/pull/228145)
This update refines how Odoo's editor handles data saving. The `o_editable` class has been renamed to `o_savable` to align with the editor's internal processes. This change ensures smoother editing experiences across several modules, including appointment scheduling and marketing automation.
Original PR description
[IMP] appointment, *: rename the o_editable class by o_savable *: marketing_automation, marketing_automation_website_sale, website_appointment, website_helpdesk This commit renames the `o_editable` class by `o_savable`. It also removes this class from the template as it is a system class handled by the editor. In most cases, the editor will add the `o_savable` class on those elements when entering in edit mode as the elements already have the `o_mail_wrapper_td` class (that is used as a `o_editable_selectors`). task-5248483
This update simplifies the VoIP code by removing redundant `async/await` calls. This optimization improves the overall performance and stability of the VoIP feature within Odoo Enterprise. The change is considered a routine improvement.
Resolved issues and error corrections
This update addresses a minor technical issue that was causing a runbot error in our point-of-sale (POS) system. The fix involved adjusting test timing and simplifying the verification process to ensure order acceptance times are correctly recorded. This improves the reliability of the POS functionality.
Original PR description
in this commit: - Fixed the `_acceptOrder, _dispatchOrder, _completeOrder` test, which could fail due to minor timing delays. - Updated the assertion to only verify that `orderAcceptTime` is not empty. runbot-error-234594 Forward-Port-Of: odoo/enterprise#100942
Code cleanup and technical improvements
This update clarifies the internal naming of a key component within the Point of Sale (POS) module. The change, named `iot_fdm_be_id`, improves code readability and maintainability. This is a routine refactoring to enhance the overall stability and development process of the POS system.
Original PR description
For clarity, we renamed `iface_fiscal_data_module` to `iot_fdm_be_id`.
Miscellaneous changes
This pull request contains preliminary work (wip) on updating the VoIP softphone's call history functionality. Changes were made to the JavaScript and XML files related to this feature, likely to improve the user interface or functionality of the call history display. Further development and testing are needed.
This pull request addresses several bugs and inconsistencies within Odoo's product tour functionality. The changes improve the user experience by correcting display issues and ensuring tours function as intended across different Odoo modules. This resolves minor usability problems and enhances the overall reliability of product demonstrations.
This update resolves an issue where closing the '/article' dialog in the Knowledge editor caused the page to jump back to the top. The fix ensures the dialog's focus is properly managed during closing, eliminating this disruptive scroll behavior. This improves the user experience when editing long articles.
Original PR description
Problem: When editing a long Knowledge article and executing the `/article` command, closing the dialog automatically scrolls the page to the top. Cause: This happens because `useActiveElement` inside the `Dialog` component runs its cleanup function when the dialog unmounts. While unmounting, `document.activeElement` is `body`, so the cleanup tries to focus back the `oldActiveElement`, which is the `editable`, and this resets the selection and causes the scroll jump. Solution: Set the selection when closing the dialog, ensuring the `editable` remains the `document.activeElement` during cleanup, preventing the focus reset. Steps to reproduce: - Edit a long article further down the page. - Use the `/article` command. - Dismiss the dialog. → The page scrolls back to the top. opw-4797567 Forward-Port-Of: odoo/enterprise#100634
This update resolves an issue where the system would fail to print payslips for employees who didn't have a contract assigned. The fix ensures that a contract is required to generate a payslip, preventing errors and improving data accuracy. This change ensures consistent payslip generation.
Original PR description
An error occurs while printing a payslip for an employee who does not have a contract. Steps to reproduce the error: - Install the ``hr_payroll`` module - Create an employee without contract - Create a payslip for that employee > Compute Sheet > Print Traceback: ``` Error while rendering the template: TypeError: '<' not supported between instances of 'datetime.date' and 'bool' ``` https://github.com/odoo/enterprise/blob/368a81a277b2fa7c5eac7c63addd0d75ec89111b/hr_payroll/views/report_payslip_templates.xml#L70 Here, ``version_id.contract_date_start`` will be ``False`` when the employee does not have a contract, which leads to the above traceback. Solution: User can not print payslip without running contract. sentry-6922017511 Forward-Port-Of: odoo/enterprise#96374
This update resolves a technical problem identified during testing of the l10n_ch_hr_payroll module. Specifically, a freeze time error was corrected, ensuring the accuracy of payroll calculations within the Swiss tax system. This ensures the system is functioning correctly and generating accurate reports.
Original PR description
Forward-Port-Of: odoo/enterprise#100953
This update resolves an error that prevented users from accessing the Time Off overview in the Gantt view when an employee lacked a defined working schedule. The fix skips unnecessary calculations when a working schedule is missing, preventing the 'AttributeError' and ensuring the feature functions correctly for all employees. This improves the user experience and prevents data access issues.
Original PR description
Currently, an error occurs when an employee has no working schedule set and the user tries to open the Time Off overview in the Gantt view. **Steps to Reproduce:** 1. Install `hr_holidays_gantt` with demo data. 2. Remove the **Working Hours**(Payroll section) of **Marc Demo**. 3. Navigate to: Time off > Overview. **Error:** `AttributeError - 'bool' object has no attribute 'upper'` **Cause:** The error occurs because at [1], the contract does not have a `resource_calendar_id` (working schedule) assigned. As a result, it attempts to access attributes of a False value, causing the error. **Fix:** This commit skips the computation when the contract does not have a working schedule set. [1] - https://github.com/odoo/enterprise/blob/db049f42ad4c2c291b2d64a9e637cd2292c280e8/hr_holidays_gantt/models/hr_leave.py#L204 sentry-7017326141 Forward-Port-Of: odoo/enterprise#100730
This update resolves a technical issue within Odoo's Web Studio tool that prevented accurate field choices from being displayed. The fix ensures that the system correctly utilizes data, improving the reliability of the user interface when creating and editing forms. This change enhances the overall user experience within Web Studio.
Original PR description
In this commit, we fix the `getFieldChoices` method. This method takes `this.props.node.field`, whereas it can be called from `onWillUpdateProps`. All other methods take this into account except for `getFieldChoices()`. As a result, `this.props.node` could be outdated when needed. This commit fixes this error.
This update corrects a technical issue within the Odoo Enterprise reporting system. Previously, the way data was aggregated in reports didn't guarantee a consistent order, which could lead to inaccurate results. This change enforces order within the aggregation, ensuring reliable reporting data.
Original PR description
The array_agg does not enforce an order by default. It causes issues when we want to check the result. Let's enforce it now runbot-error-234281
This update resolves a performance issue related to a field in the Helpdesk module by switching to a new widget. The change ensures the field functions smoothly and efficiently, maintaining the quality of the Helpdesk experience for users. This is a technical fix to optimize performance.
Original PR description
This commit adapts the definition of the field using the `badge_rotting` widget since that widget no longer extend to SelectionBadge widget due to a perfomance issue. Forward-Port-Of: odoo/enterprise#99943
This update fixes a problem that prevented the Acerata payroll export file from generating correctly when the employee name was missing. The fix uses the display name field, which is always populated, and includes a new test suite to ensure the export process works reliably. This ensures accurate payroll reporting.
Original PR description
When generating the export file, a traceback occurred because the name field was empty. The logic has been updated to use the display_name field instead, ensuring the export runs correctly, as it is always set to a value. However, the display_name sometimes is just a date, so I depended on a customizable new lable to show the employee to this version. Additionally, a comprehensive test suite was added to validate Acereta code behavior, including: - validation of code length for employees, companies, and work entry types, - handling of codes across different companies, - and the complete Acereta export flow (from work entry creation and validation to export file generation). task-5153727 Forward-Port-Of: odoo/enterprise#100987 Forward-Port-Of: odoo/enterprise#96823
This update resolves a bug that prevented correct configuration of payroll within the Odoo Enterprise system. The fix involved adjusting how a specific field is used across modules to ensure compatibility and proper functionality. This change improves the reliability of HR payroll processes.
Original PR description
…act_salary A runbot build error was reported for one of my tests: https://runbot.odoo.com/odoo/runbot.build.error/233591 The issue was because the field `hide_in_offer` was used in a module where it did not exist. I have overridden the function to make it call the field when it was installed, and moved the logic using it to that inheriting function. task-5350522 Forward-Port-Of: odoo/enterprise#100986 Forward-Port-Of: odoo/enterprise#100190
This update corrects a bug in the ESIC payroll calculation. It now ensures that ESIC contributions are only applied to employees with gross salaries below 21,000 rupees, aligning with current regulations. This change improves payroll accuracy and compliance.
Original PR description
### Before this commit, ESIC amount is applied to all cases, which is wrong. ### After merge of this commit, It should apply to employees with gross salaries less than 21000 rupees. task-5038256 Forward-Port-Of: odoo/enterprise#99996
This update corrects a potential issue where delivery IoT reports weren't verifying the existence of associated IoT devices before printing. This change ensures that reports only generate when valid IoT device data is present, preventing errors and improving report reliability. It's a minor fix focused on data integrity.
Original PR description
As `delivery_iot.ir_action_report` is overriding `iot.ir_action_report` and bypassing the IoT device record existance check, we need to also check in delivery IoT. Forward-Port-Of: odoo/enterprise#100994
This update adds a section to the employee form to display relevant documents. Previously, important document fields were missing from this view. This enhancement improves employee record management and provides a more complete view of employee information.
Original PR description
- These fields were not available in the employee form view. - create a new section named 'Documents' under the Personal Tab in employee form view - added the fields in the employee form view task-5366982 Forward-Port-Of: odoo/enterprise#100956 Forward-Port-Of: odoo/enterprise#100869
This update resolves a crash that occurred when users attempted to validate signed documents. The issue stemmed from a missing field in the system after a related module was uninstalled. The fix adds a graceful bypass to handle the missing field, ensuring smooth signature validation.
Original PR description
The system will crash with an error when the user tries to validate the signature. **Steps to produce:** - Install `Sign, Employee Contracts, and Documents` apps with demo data. - Go to Apps and…
The system will crash with an error when the user tries to validate the signature.
**Steps to produce:**
- Install `Sign, Employee Contracts, and Documents` apps with demo data.
- Go to Apps and uninstall the `hr_contract_sign`module.
- Send any employee a sign request for a document.
- When the employee tries to validate and send the document, the error appears.
**Error:**
`KeyError: 'sign_request_ids'
ValueError: Invalid field hr.employee.sign_request_ids in condition ('sign_request_ids', 'in', [1])`
**Cause:**
- When `sign` route is called, then we try to search field `sign_request_ids` in `hr_employee`. but we can see the field `sign_request_ids` is defined in `hr_contract_sign` module.
- And user removed the `hr_contract_sign` module, so the field no longer exists. in the hr_employee model.
**Solution:**
- Added a graceful bypass when `sign_request_ids` is missing,
**sentry-6819182542**
Forward-Port-Of: odoo/enterprise#100796
Forward-Port-Of: odoo/enterprise#95449This update resolves a technical problem preventing users from accessing sales commission achievement reports. Previously, the system couldn't reliably determine if the necessary temporary database view was available, leading to errors. Now, the system checks both the existence and availability of the view, ensuring consistent report access.
Original PR description
In the commission module, the achievements are computed with a temporary SQL view. These view have limited visibility inside a SQL session. Before this commit, we checked the existence of a temporary view with the following SQL request: SELECT viewname FROM pg_catalog.pg_views WHERE viewname='sale_commission_achievement_report_view' This simple query would return the existence of the view but not its availability in the current session. As a result, when the user tried to access the report values, SELECT * FROM sale_commission_achievement_report_view would result in an error as the temporary view would not be available in all the running sessions. Only the one which created the temporary view would be able to access the data. After this commit, the existence and the availability of the view is checked to make sure that it is possible to fetch the results in the current session. task-5378382 Forward-Port-Of: odoo/enterprise#101070
This update fixes a technical issue that prevented the 'fuel_type' selection field in the HR contract model from being properly translated. By directly using the variable for options, this change ensures all available fuel types can be localized, improving the user experience for Belgian users.
Original PR description
The selection field `fuel_type` in the `hr.contract` model was not properly translatable, because it used a function yielding static strings for the options. This commit changes the field to use the variable directly, allowing them to be translated. Forward-Port-Of: odoo/enterprise#101046 Forward-Port-Of: odoo/enterprise#100748