Monday, April 27, 2026
17 changes · master
Enhancements to existing features
This update enhances the stability of the Odoo Spreadsheet Edition by introducing a singleton UUID generator. This ensures consistent and reliable unique identifiers across various spreadsheet components, preventing potential conflicts and improving data integrity. The change improves the overall reliability of the spreadsheet functionality.
This update enhances the stability of the Odoo Spreadsheet Edition by introducing a singleton UUID generator. This ensures consistent and reliable unique identifiers are used across various spreadsheet components, reducing potential conflicts and improving overall performance. The change improves the robustness of the spreadsheet functionality.
This update cleans up the appearance of the calendar side panel by removing the legend title and arranging status icons (Published/Draft) horizontally. This creates a cleaner and more organized view, improving usability for users.
Original PR description
Before: - Legend title was visible. - Status icons (Published/Draft) were stacked vertically. After: - Legend title is removed. - Status icons are placed horizontally side-by-side. task-5259081
Resolved issues and error corrections
This update fixes an issue where employees were incorrectly paid 80% for rest days when on sick leave. The change ensures that employees are paid their full wage on rest days, aligning with the definition of a sickness day. This corrects a payment discrepancy and ensures accurate payroll calculations.
Original PR description
Currently, if a sick leave is spread over a weekend, the work entry type set on the saturday and sunday will be the sick leave type. If an employee is entitled sickness allowance (which is paid 80%), it means that we will be paying them 80% for their rest days as well. However, as per the definition, a sickness day is a day on which an employee is absent from work by reason of being unfit due to injury or sickness. If an employee is not expected to be at work (rest day), that day cannot be considered a sickness day. If this rest day is paid (which is done by default in our module), we should thus pay the full wage on that day and not a reduced 80%. task-6079736 Forward-Port-Of: odoo/enterprise#115049 Forward-Port-Of: odoo/enterprise#113486
This update resolves a UI issue that occurred when sign templates included roles with assigned users. A technical change related to binary data handling caused errors during page loading, leading to a broken display. The fix converts binary data to a standard format for reliable rendering, ensuring a smooth user experience.
Original PR description
Version: - saas-19.3 Steps to reproduce: - Create sign template with one role. - Set 'assign to' value to that role. - Try to refresh the page or again open the template. Issue: - sign item and roles are not render on template properly and UI get broken. - ConnectionLostError occurs when loading sign template with 'assign to' value on role. Cause: - After recent changes, Binary fields (avatar_128/avatar_1920) now return BinaryValue objects instead of base64 strings. - These objects are not JSON serializable and cause UnicodeDecodeError during RPC response serialization. Solution: - Convert BinaryValue to base64 string using .to_base64() before returning in get_template_items_roles_info. task-6122941 Forward-Port-Of: odoo/enterprise#113911
A test within the Odoo Enterprise payroll module (l10n_in_payroll) was failing due to a missing employee type ID. This update correctly assigned a required employee type ID, resolving the test failure and ensuring accurate payroll calculations for Indian employees. This fix improves the stability and reliability of the payroll processing.
Original PR description
[FIX] l10n_in_payroll: fix missing employee type id
Bug reproduction: Go to master and try to run test_in_hr_version_percentage_computation test by installing l10n_in_hr_payroll only. It fails and throws an error.
Bug cause: The employee has not employee_type_id and when with Form is used, employee_type_id is a required field and must be filled in.
Bug solution: I assigned the Indian employee type as a employee_type_id
Runbot Error:
Link 1: https://runbot.odoo.com/odoo/error/241955
Link 2: https://runbot.odoo.com/odoo/error/242490
task - 6117742
Forward-Port-Of: odoo/enterprise#113692This update corrects a problem where the employee's salary wasn't correctly displayed when creating an offer from the employee form. The fix involved updating the context passed to the action, ensuring the correct salary information is now populated. This improves the accuracy of offer creation workflows.
Original PR description
task-5979287 Forward-Port-Of: odoo/enterprise#114957 Forward-Port-Of: odoo/enterprise#109067
This update fixes an issue where signature overlays were causing data loss in PDF documents. Now, the original PDF structure, including metadata and bookmarks, is fully preserved when signatures are added. This ensures consistent and accurate PDF documents.
Original PR description
Instead of rebuilding the PDF by copying content, metadata, and bookmarks, we now duplicate the original document first and then apply the signature overlays. This ensures the full structure and settings are preserved without loss. task-6083291 Forward-Port-Of: odoo/enterprise#115048 Forward-Port-Of: odoo/enterprise#114618
This update prevents unnecessary warnings from appearing when a task template is moved to a project that doesn't support timesheets. This change ensures a smoother workflow for users managing task templates and avoids distracting notifications. It addresses a previous issue identified in a related community pull request.
Original PR description
A task template should not trigger any warning about timesheets that remain in the previous project when changing its project to a non-timesheetable project. related Community PR: https://github.com/odoo/odoo/pull/230118 task-5140018
This update corrects a technical issue where a duplicate record was incorrectly introduced in the French reporting module (l10n_fr_reports). The fix removes this redundant record, ensuring accurate reporting data and preventing potential data inconsistencies. This resolves a minor technical problem.
Original PR description
this forward port wrongly introduced an already existing record https://github.com/odoo/enterprise/pull/114739 Forward-Port-Of: odoo/enterprise#114907
This update resolves a technical error in the processing of French tax returns (liasse fiscale). A missing call to the parent function caused a test failure, which has now been corrected. This ensures accurate reporting and compliance for French businesses using Odoo Enterprise.
Original PR description
When merging the sending of the liasse fiscale, super() wasn't called anymore in action_submit and led to an assertError in test_state_progression() test
```
FAIL: Subtest TestAccountReturn.test_state_progression (return_type=account.return.type(186,))
Traceback (most recent call last):
File "/data/build/enterprise/account_reports/tests/test_account_returns.py", line 2087, in test_state_progression
self.assertEqual(account_return.state, 'paid')
AssertionError: False != 'paid'
```
runbot-275061
Forward-Port-Of: odoo/enterprise#114585A recent change to the l10n_mx_edi module broke a key test related to rounding calculations for Mexican tax invoices. This update reverted the rounding mode to 'mixed', resolving the test failure. This ensures accurate tax calculations are being verified within the module.
Original PR description
https://github.com/odoo/odoo/pull/255574 change the rounding mode back to mixed. This break the test modified in this PR. opw-5963855 Forward-Port-Of: odoo/enterprise#114081
This update corrects a warning message that incorrectly flagged transactions using the Cash Basis accounting method as having an inactive Construction Industry Scheme. The fix ensures that CABA entries are properly excluded from this check, preventing unnecessary alerts and improving the accuracy of reporting. This change impacts users utilizing Cash Basis accounting and CIS reporting.
Original PR description
Currently, journal entries may be flagged for the CIS inactive partner check, causing unnecessary warning. Steps to reproduce: - Install l10n_uk_reports_cis. - Accounting > Configuration > Settings, enable "Cash Basis" - Open "20% CIS" Purchase tax - Set "Tax Exigibility" to "Based on Payment" and add a Cash Basis Transition Account - Set Outstanding account on the Bank journal - Create a partner and enable (Accounting tab) Construction Industry Scheme" - Create a vendor bill for this partner with a the 20% CIS tax - Register payment to the Bank journal - Open the created CABA entry Issue: Warning will be shown "Construction Industry Scheme hasn't been enabled for this vendor." Analysis: The warning flag is incorrectly triggered because the CABA entry has `invoice_line_ids` field set. However entries should be excluded by this check as it should only apply to purchase-related documents. opw-5942603 Forward-Port-Of: odoo/enterprise#113003
A minor bug preventing the generation of EC sales returns has been fixed. This issue arose after a recent update to the ec sales list report, and was caused by a simple typo. This ensures that sales returns are accurately tracked and reported.
Original PR description
With the rework of the ec sales list report(https://github.com/odoo/enterprise/commit/4096c1fcbd7f31f70153058d2e3f9eab6d82e356#diff-2f90e40d6e7b35681a4af03037e8e5ee0fddab2ba0876d9f148bf79786a91c29), the return generation of this type became generic but a small bug appeared. It was not generating anymore because of a typo. Forward-Port-Of: odoo/enterprise#114815
This pull request corrects a typographical error in a test file within the marketing automation module. These tests ensure the functionality of automated marketing campaigns. The fix improves the reliability of the testing process and prevents potential issues with campaign execution.
Original PR description
Forward-Port-Of: odoo/enterprise#115315
This update fixes a problem where Wise recipient matching failed due to differences in data like spacing or casing. Now, the system uses only financial details (account numbers, routing numbers, IBANs) for matching, ensuring accurate recipient identification. This improves the reliability of direct deposit payments.
Original PR description
Previously, _generate_wise_key included partner name and email in the matching key. If these differed between Odoo and Wise (e.g. trailing spaces, casing), the match would fail and a duplicate recipient was created. Use only financial identifiers (account type, routing number, account number) which are the actual unique identifiers for bank accounts. This is for example important with IBAN accounts as the won't have an email stored in Wise. From this we combine IBAN and SWIFT recipients into one non-US group. Forward-Port-Of: odoo/enterprise#115209 Forward-Port-Of: odoo/enterprise#113234
This update fixes an issue where the 'Hide lines at 0' feature was removing the report-level total line from printed reports like the Trial Balance. This commit ensures that total lines, even those without a parent, are always included when printing, providing a more complete and accurate report view. This improves the usability of our financial reporting tools.
Original PR description
When "Hide lines at 0" is enabled, printing e.g. the Trial Balance will drop the report-level "Total" line when printing. This commit fixes that. The issue was introduced in this commit[^1], which didn't consider total lines without a parent (i.e. root total lines). [^1]: https://github.com/odoo/enterprise/commit/7fec18b99eb2aa5ebc357dcad5f95f234db5b7d8 Forward-Port-Of: odoo/enterprise#115011 Forward-Port-Of: odoo/enterprise#114084