Daily updates from Odoo
Wednesday, February 25, 2026
25 changes · master
Enhancements to existing features
This update enhances the Monthly Hours feature by automatically displaying the calendar view as the default when the Monthly Hours smart button is clicked. This provides a more intuitive and user-friendly experience for tracking employee hours, making it easier to visualize attendance data.
Original PR description
Set the calendar view as the default for the Monthly Hours smart button. task-5176295
This update makes employee launch plans more resilient by issuing warnings instead of blocking if key information (manager, fleet, user) is missing. It also removes outdated responsible types, streamlining the system and improving clarity. This change ensures launch plans can still function effectively, even with incomplete employee configurations.
Original PR description
* = mail, hr_fleet, hr_sign Employee launch plans should work even if employee not well configured. Should not block if manager/fleet/user not set, just warn and assign to current user. This update also removes responsible types 'coach' and 'fleet_manager' and cleans up all related logic, validations, and references. This PR includes: - Changed blocking errors to warnings when manager/user not set. - Updated warning message strings to be shorter and clearer. - Removed 'coach' and 'fleet_manager' responsible types and associated codes. - Adjust some test cases accordingly. Task - 4879248
This update replaces generic placeholder images with new, consistent icon images throughout the Odoo Enterprise platform. This improves the visual appeal and clarity of various modules, enhancing the user experience. The changes address outdated icons and streamline the user interface.
This update enhances the performance of account reports by directly accessing data within the line dictionary. Previously, the system had to retrieve this information through a separate browse operation, which was a performance bottleneck. This change streamlines the process, resulting in faster report generation.
Original PR description
This commit will include the code in the line dict to allow the _custom_line_postprocessor function to access it directly and avoid a browse on the line object to retrieve the value. no task id
Resolved issues and error corrections
This update enhances the stability of performance tests within Odoo's HR modules (appointment_hr and hr_payroll). The changes address issues related to how data is prepared for testing, specifically around transaction management, resulting in more reliable test results. This improves the overall quality and confidence in these core HR functionalities.
Original PR description
https://github.com/odoo/odoo/pull/249309
This update resolves a display issue in the employee offer screen for the Belgium payroll localization. The contract type field was incorrectly appearing due to a previous addition by the localization module. This fix removes the unnecessary field addition, ensuring the correct offer screen display.
Original PR description
Bug reproduction: Ensure that belgium payroll localization is not installed, go to offer of employee, contract type field is not there. Bug cause: Contract type field does not exist in the model, it was adding to the view by l10n_be_hr_payroll. Bug solution: I added new field contract_type_id to the hr_contract_salary_offer model (to show it on UI). Solved from 17.0 Note: I need to fix after version 19.0, because by starting from 19.0, the Belgium one will try to add the same field to the view again task - 5500488 Forward-Port-Of: odoo/enterprise#108179 Forward-Port-Of: odoo/enterprise#104578
This update fixes an issue where trial websites were sometimes created multiple times. The changes ensure that a trial website is always associated with the original website requesting it, streamlining the process and preventing unnecessary website creation. A new, more reliable method for generating trial websites has also been implemented.
Original PR description
Forward-Port-Of: odoo/enterprise#107320
This update addresses usability issues in the mobile version of the bank reconciliation widget. Specifically, the layout has been adjusted to better accommodate the smaller screen size, and some secondary buttons have been moved to a dropdown menu to optimize space. This enhances the user experience on mobile devices.
Original PR description
The mobile style on bank rec widget is a bit buggy, this commit adds few improvements: 1 - When in mobile view, chatter is shown on the right (like in desktop view), but the screen is way too tight to display both chatter and st_lines at the same time. Solution: Display the chatter at the bottom of the screen. 2 - If the screen is too tight to show 2 primary buttons (Example: Set Partner & Set Account), We remove the "Set " on the buttons label to save some space. 3 - In tablet view, we don't have enought place to show all the secondary buttons we are showing in desktop view. This commit removes the reco model secondary buttons. (Now accessible in the dropdown menu) task-5114831 Forward-Port-Of: odoo/enterprise#96103
This update fixes issues with downloading Activitywatch, specifically adding a link for the Linux (Ubuntu) build and correcting the Windows link. It also improves how the system identifies the user's operating system, ensuring a smoother download experience.
Original PR description
This PR adds the download link for the Ubuntu build of activitywatch, fixes the windows link, and fixes the platform detection. Forward-Port-Of: odoo/enterprise#108079
This update resolves an error that prevented the generation of CFDI payslips in the Mexican payroll module. The fix updates a template reference to correctly display the employee's SSN, ensuring accurate payroll reporting. This change improves the reliability of the Mexican payroll functionality.
Original PR description
Steps to reproduce the issue: 1. Install the module `l10n_mx_hr_payroll_account_edi`. 2. Generate a payslip for an employee. 3. The following traceback is raised at the moment to click on "Generate…
Steps to reproduce the issue:
1. Install the module `l10n_mx_hr_payroll_account_edi`.
2. Generate a payslip for an employee.
3. The following traceback is raised at the moment to click on "Generate CFDI" button:
```py
File "/data/build/odoo/odoo/addons/base/models/ir_qweb.py", line 858, in _render_iterall raise
QWebError(qweb_error_info) from error odoo.addons.base.models.ir_qweb.QWebError: Error while rendering the
template: KeyError: 'l10n_mx_ssn' Template: l10n_mx_hr_payroll_account_edi.report_payslip_mx_cfdi Reference:
8166 Path: /t/t/div/t[2]/div[4]/table[2]/tbody/tr/td/div[5]/span[1]
Element: <span class="ms-1" t-field="o.version_id.l10n_mx_ssn"/>
```
---
To avoid moving the `l10n_mx_ssn` field from the `hr.employee` model to `hr.version`, the `t-field` in the template is updated to `o.employee_id.l10n_mx_ssn`.
This approach is valid because an employee's SSN rarely changes. If a modification is ever needed, it can be updated directly on the employee form, where the field is already tracked.
target: saas-19.2
task-5962423
Forward-Port-Of: odoo/enterprise#108398This update fixes a calculation error in the Belgian payroll system. Previously, meal vouchers and private car expenses were incorrectly reported with a quantity of zero on payslips. This change ensures accurate reporting of these benefits, aligning with Belgian regulations and providing correct financial data.
Original PR description
In this commit, we fixed the data of the existing Belgian structure types by setting the right work entry type as default_work_entry_type_id. Belgian's structure types should have the correct attendance work entry type to consider the meal vouchers and the private car in the benefits and payslip lines Before this change, the belgian payslips will have quantity 0 for meal vouchers and private car. After this change, the belgian payslips will have the correct quantity for both meal vouchers and private car. task-5946425 Forward-Port-Of: odoo/enterprise#108061
This update resolves an issue where sharing document templates with readonly fields caused errors. By separating validation logic and removing unnecessary security checks, the system now correctly handles shared template requests, ensuring seamless document sharing and collaboration. This improves the reliability of our document management features.
Original PR description
Currently, attempting to share a document template that contains readonly fields fails. When `_populate_constant_items` calls `_fill` to pre-fill these fields, `_fill` aggressively checks that the request state is 'sent'. Since shared links create requests in the 'shared' state, the transaction crashes. Additionally, `_fill` throws a `UserError` if not called with `sudo`, which inappropriately treats a developer/privilege error as an end-user error. This commit resolves the issue by separating concerns: - Moves the `state == 'sent'` validation out of the `_fill` helper and into `_sign` (the caller responsible for actual user signatures). - Removes the artificial `sudo` check in `_fill`, relying instead on standard ORM Access Errors to block unauthorized database writes. (only in master) Task: 5949263 Forward-Port-Of: odoo/enterprise#107898
This update resolves an issue related to the accurate reporting of cycle transportation declarations in Belgium's HR and payroll system. The changes ensure that tax calculations and reporting align with Belgian regulations, improving compliance and accuracy for businesses operating in Belgium.
Original PR description
Forward-Port-Of: odoo/enterprise#108173 Forward-Port-Of: odoo/enterprise#108069
This update ensures that the order of selection options within Odoo Sign templates is preserved when saving. Previously, options were scrambled due to a technical issue in how the system processed selections. This change corrects the underlying code to maintain the user's intended order, improving data consistency.
Original PR description
Steps to reproduce: 1. Open a Sign template. 2. Drag a 'Selection' field onto the document. 3. In the popover, type options in a specific order (e.g., Delta, Alpha, Beta). 4. Click save. 5. Re-open or inspect the data 6. observe the order is scrambled based on Database ID. Cause: The Python method used `list(set())` which is an unordered collection, losing the user's input sequence. Furthermore, the final `search().ids` call returned records sorted by primary key (ID) rather than the provided list order. Solution: Replace `set()` with `dict.fromkeys()` to deduplicate while preserving input order. opw-5896373 Forward-Port-Of: odoo/enterprise#108380 Forward-Port-Of: odoo/enterprise#107175
This update fixes a discrepancy in how invoice reports are generated across different localization versions (e.g., EC, MX). The changes ensure that address information displayed on invoices is consistent with the latest requirements for each region, improving accuracy and compliance.
Original PR description
Adapted each localization report invoice inheritance on the changes to address block Forward-Port-Of: odoo/enterprise#108426
This update resolves an issue where helpdesk users with limited access were unable to view tickets due to a restriction on accessing related stock records. The fix adds a necessary permission allowing helpdesk users to read ticket information, ensuring they can properly manage and access tickets. This improves usability for all helpdesk users.
Original PR description
To reproduce: ============= - install helpdesk_stock - with user having only User rights on helpdesk and nothing on other modules - try to access a ticket -> AccessError Problem: ======== when reading the ticket, the field `suitable_product_ids` is computed, and it requires read access to records the user doesn't have access to, which raises an AccessError. Solution: ========= Add the group `stock.group_stock_user` to the field, so that only users having access can read it. backport of https://github.com/odoo/enterprise/pull/59605 opw-5907657 Forward-Port-Of: odoo/enterprise#108139 Forward-Port-Of: odoo/enterprise#107291
This update corrects a technical issue related to how the system identifies active VoIP sessions. A previous change introduced new session types, and this fix ensures the system correctly searches for sessions in the updated session map. This improves the reliability of VoIP functionality.
Original PR description
In this PR: https://github.com/odoo/enterprise/pull/104426 session management was introduced that changed the concept of `mainSession` and `transferSession` in the userAgent. There was a missing cleanup in the function `isInProgress` that is still using the old main and transfer sessions. This commit fixes this bug by searching for the session in the new sessions map. Forward-Port-Of: odoo/enterprise#108526
This update resolves an issue where users with limited accounting access (read-only) were encountering errors when viewing invoices or partner details. The change ensures that the 'addenda_ids' field is only displayed to users who have the necessary permissions, improving stability and usability.
Original PR description
User with "read-only" access to accounting will trigger an error if they try to open an invoice or partner due to field addenda_ids. This commit aims to render this field only if the have the right to fetch it. opw-5931178 opw-5954244 Forward-Port-Of: odoo/enterprise#108332
This update ensures that essential products like 'settle due' and 'deposit' are automatically configured for all Point of Sale (POS) settings within the Odoo Enterprise system. Previously, these products were only available in POS sessions without open sessions, causing potential issues. Now, all POS configurations will have these products set, streamlining operations and preventing errors.
Original PR description
Before this commit, when the module pos_settle_due was installed, the special products (settle due, deposit, settle invoice) were only set on the POS configurations that did not have any open session. This could lead to issues when trying to use these products in a POS session of a configuration that did not have them set. Now, the special products are set on all POS configurations when installing the module. Community PR: https://github.com/odoo/odoo/pull/229074 Forward-Port-Of: odoo/enterprise#96788 Forward-Port-Of: odoo/enterprise#95789
This update corrects a restriction preventing HR officers from creating new employees in the Belgian version of the HR Payroll module. The fix utilizes 'sudo' to grant necessary access to a key field, allowing users with standard HR officer permissions to complete the employee creation process without encountering errors. This ensures seamless employee onboarding for our Belgian clients.
Original PR description
Steps to reproduce: - Install l10n_be_hr_payroll - Have a user with only HR officer rights - Try to create a new employee with that user (in BE) - You have an access error on the field l10n_be_resident_situation The field `l10n_be_resident_situation` has the HR Payroll officer group. This field is used on the inverse of the is_non_resident field, which is accessible to HR officers. This commit fixes the issue by using sudo to read the field's value. task-5779779 Forward-Port-Of: odoo/enterprise#108492 Forward-Port-Of: odoo/enterprise#104888
This update addresses a critical maintenance task, ensuring the tax code data within Odoo Enterprise is current. The tax codes haven't been updated in four years, and this fix ensures continued accurate tax calculations. A future enhancement will allow users to initiate this update automatically, but this immediate fix resolves the current data discrepancy.
Original PR description
It's been 4 years since the last update [1]. No codes were removed. At some point it would be nice to add this to the avatax_sync_company_params() method so it can be initiated by the user. But we need to update this file regardless, and the mechanism would need to be smart enough to not cause duplicates when e.g. the user has synced it themselves, we then update the csv and they then update the module. [1] https://github.com/odoo/enterprise/pull/30220 opw-5928245 Forward-Port-Of: odoo/enterprise#108209
Features or functions removed from Odoo
This update removes outdated data related to a 'warning count' field from several payroll modules. A recent update to the core payroll model no longer requires this data, so this change streamlines the system and reduces potential complexity. This is a routine maintenance task to keep the system clean and efficient.
Original PR description
A recent refactor of the hr_payroll_warning model removed the need for `warning_count`, so this commit removes it from the relative data. task-5945965
This update eliminates redundant error messages related to receipt printers on IoT devices. As the system no longer monitors printer status, these warnings have been removed from the software, streamlining the user experience and reducing potential notifications.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/249819 As we are no longer querying the status of the receipt printer on the IoT box, some of the error messages such as being low on paper will no longer be sent by the IoT. This commit removes the messages in the JS code too. Forward-Port-Of: odoo/enterprise#108459 Forward-Port-Of: odoo/enterprise#108109
This update removes a legacy feature used to access database information. Following a migration to version 19.0, a newer API is now available, making the previous user unnecessary. This cleanup improves system efficiency and reduces potential maintenance overhead.
Original PR description
Since odoo.com migrated to 19.0, the json2 API is available and therefore we don't need to provide an API user any more to retrieve the list of databases. 3d09f8e0c67904c824b23117c5622630b6fa0899 removed it from the code and the form view, but left the field on res.config.settings for view backward compatibility. With this commit, we finish the cleanup. Forward-Port-Of: odoo/enterprise#108081
This change simplifies the Frontdesk module by removing a redundant 'Invite teammates via email' option. Recent updates to the system's user interface widgets introduced this option, but it wasn't needed for the Frontdesk workflow. This ensures the user interface is cleaner and more focused on its core functionality.
Original PR description
In responsible_ids, we were using the ***many2many_avatar_user*** widget. After recent changes introduced in https://github.com/odoo/odoo/pull/209886, the widget now shows an ***"Invite teammates via email"*** option when creation is enabled ***(enabled: () => this.activeActions.create).*** Since creating new users from this field is not required in the Frontdesk flow, this commit adds the ***'no_create'*** option to disable record creation. As a result, the ***"Invite teammates via email"*** entry is no longer displayed. This ensures the field only allows selecting existing users and keeps the UI aligned with the intended behavior. Task-5929325