Friday, March 13, 2026
15 changes · master
Resolved issues and error corrections
This update adds a warning to the system when a customer manually changes payroll rules defined in data files. This prevents accidental overrides of standard rules and ensures customers always have access to the latest, approved settings. Users can then reset the rule to re-apply the current data files.
Original PR description
Usually, rules that are defined in the data of modules are automatically updates on the customers database even if they modified those rules manually. To prevent overriding the modifications by the customers, we add a warning when a rule from data has been modified by the user. The user can then choose to reset the rule, thus upgrading it again from the current data files. Task: 5917278
A recent update resolved an error preventing demo users without payroll permissions from accessing the attendance app. The fix involved adding a check to prevent unnecessary data requests, ensuring the app functions correctly for all users. This improves the user experience and prevents disruptions to payroll processes.
Original PR description
Steps : - Settings -> Users -> Manage Users -> marc demo - make sure the demo user has no rights over HR apps - go into debug mode -> check "User: Read his own attendances" - Connect using the demo…
Steps : - Settings -> Users -> Manage Users -> marc demo - make sure the demo user has no rights over HR apps - go into debug mode -> check "User: Read his own attendances" - Connect using the demo user. - Try to access the attendance app or to click the monthly hours smart button from it's own employee form view. - you'll get an access error. Reason : - The `PayRunMixin` patches Attendance views globally and injects the `PayRunLayout`. Upon mounting, `PayRunLayout` unconditionally fetch the Kanban architecture for `hr.payslip.run`. This triggered a `get_views` RPC call that the backend rejected for users without Payroll rights. Solution : - Added an asynchronous ACL check inside the `onWillStart` hook of `PayRunLayout`. If the user does not have the `hr_payroll.group_hr_payroll_user` group, or if there is no active `payrun_id` in the context, the component aborts the `loadViews` request early, preventing the RPC call and the resulting crash. Task - 5965727
This update resolves a technical issue where the Odoo Enterprise system would crash or display warnings due to missing view IDs. It also adds a calendar icon to date-type fields in the sidebar, improving clarity and usability for users. This ensures a more stable and intuitive experience.
Original PR description
Before this commit, the component would crash or throw warnings when the optional view ID was missing. The sidebar list also lacked a clear visual indicator for date-type fields. After this commit, the view ID is correctly marked as optional to prevent those errors. We also map the calendar icon to date items so they're easier to identify. taskid-6018352
This update corrects a technical issue in the timesheet grid that prevented proper task state resets. Adding a missing 'super()' call ensures the parent method executes correctly, maintaining the integrity of timesheet data. This resolves a minor bug impacting timesheet accuracy.
Original PR description
The `_onchange_project_id` override was missing a `super()` call, which prevented the parent method (responsible for resetting the task state) from executing. This commit adds the missing super call. task-4210148
This update resolves an issue preventing users from successfully exporting new modules through the Odoo Studio tour. The change removes a problematic flag and adds a wait step to ensure the home menu is fully loaded, guaranteeing a smoother and more reliable experience for users.
Original PR description
This commit marks the 'can_export_new_module' tour as stable by removing the 'undeterministicTour_doNotCopy' flag. A new step has been added to wait for the home menu to be fully loaded before proceeding to open Studio.
This update corrects a visual problem with the appointment form grid, ensuring that all appointment details are displayed correctly. The change prevents a broken layout that was impacting user experience when viewing appointment records. This ensures consistent and accurate appointment data display.
Original PR description
opw-6036938
This update corrects a bug where copying product records after creation didn't function correctly due to a context key. Previously, tests were incorrectly passing, masking a fundamental problem. The fix ensures tests accurately reflect product creation behavior, improving overall system reliability.
Original PR description
Copy of `product.product` records wasn't working as expected when called on records returned by a `create` call, as they had a context key disabling product creation. Since this is now fixed (see counterpart PR), some enterprise tests were failing as they wrongly assumed the copy worked as expected, previously making some assertions succeed regardless of the absence of a product.
This update ensures all Odoo reports consistently include the 'has_sublines' key in their results. Previously, some reports lacked this key, causing confusion for developers and potential issues with report functionality. This change improves the reliability and predictability of our reporting engine.
Original PR description
Some reports doesn't return the has_sublines key in their results which can be confusing for developers and can be a source of issues. This PR ensures that it's not the case anymore. task-id: 4896816
A recent update caused crashes when creating and saving YouTube posts in Odoo. This fix removes outdated references to a 'name' attribute within the social_youtube module, resolving the issue. The change ensures stable post creation without impacting core functionality.
Original PR description
Bug: Following recent changes introduced in saas-19.2, creating and saving a YouTube post causes the flow to crash. Cause: A refactoring in the social module removed the `utm.source.mixin` dependency from the `social_post` model. This consequently removed the `name` attribute from the model. However, `social_youtube` still expected this attribute to exist, triggering the crash. Solution: Remove all references to the `name` attribute within the `social_youtube` module. We opted not to reintroduce the attribute on the model because it did not add significant functionality and has been superseded by other attributes. Forward-Port-Of: odoo/enterprise#109203
This update fixes an issue where customers could inadvertently set subscription start dates to 'false,' leading to incorrect invoicing. The change prevents users from removing the start date, ensuring subscriptions are properly billed and tracked. This maintains accurate subscription records and prevents revenue discrepancies.
Original PR description
**Issue** Some customers were removing the `start_date` of subscriptions, leading to the subscription being considered free on the next invoicing. While there are legitimate use cases to edit the `start_date` of a running subscription, it should probably not be removed. opw-5325303 Forward-Port-Of: odoo/enterprise#104925
This update resolves an error that prevented the generation of customer statement reports. The issue stemmed from a missing domain variable, causing a type error. The fix ensures the domain is always provided, guaranteeing correct report output and preventing failed email previews and PDF generation.
Original PR description
**Steps to reproduce:** * Install the **l10n_my_reports** module. * Go to `Accounting > Reporting > Partner Ledger`. * Change report to `Customer Statement`. * Add data in the report and click Send. * In the email template, set the `dynamic reports` as `statement of accounts` under the options tab. * Click Preview. **Observed behavior:** * Error: `TypeError: Domain() invalid argument type for domain: None` * Email preview fails and PDF cannot be generated. **Cause:** * The `statement_account_document` template uses `filtered_domain(domain)` but the domain variable was not being passed to the template context by the `_get_report_values` method, resulting in None being passed to `filtered_domain()`. **Fix:** * Ensure domain is always present in the report context, defaulting to an empty list when not provided. * Added safe handling for missing data and context parameters. opw-5880385 Forward-Port-Of: odoo/enterprise#107400
This update fixes a potential issue with Instagram polls by ensuring the system only requests the poll's ID after it's successfully published. Previously, attempting to retrieve the ID prematurely could cause errors. The changes include updated tests to simulate the Instagram API's behavior and prevent future problems, ensuring poll data is reliably fetched.
Original PR description
Follow-up to 06256aa02cb92378933edd638259dd725a2d04c1 The Instagram API returns an error if the `ig_id` field is requested while the container is still processing. This commit splits the container status check into two steps: 1. Poll for `status_code` only to determine the current state. 2. If the status is `PUBLISHED`, perform a second request to fetch the `ig_id`. Updated the test mocks to simulate this restriction, ensuring that requesting `ig_id` on a non-published container results in a 400 error to prevent future regressions. opw-5081325 Forward-Port-Of: odoo/enterprise#110094
This update fixes a technical issue preventing HR modules from properly customizing VoIP contact information. The change ensures VoIP data aligns with how it's stored in the system, maintaining consistency and allowing for future flexibility in how VoIP interacts with other business processes. This improves the reliability of VoIP data across the enterprise.
Original PR description
`_store_voip_fields` was directly adding `"im_status"` to the stored partner fields. This bypassed `_store_im_status_fields`, so module overrides (notably HR-related ones) could not extend/adjust the IM status payload. Use `_store_im_status_fields(res)` from `_store_voip_fields` instead of hardcoding `"im_status"`. Also align the VoIP mock server `res.partner` contact payload with the real store payload by including the same contact fields and IM status data (`partner_share`, `im_status`, `im_status_access_token`, etc.). This keeps VoIP aligned with the extensibility contract and keeps tests on the same data shape as runtime. [H>A] Forward-Port-Of: odoo/enterprise#110070
A minor bug fix has been implemented to ensure the correct field for account numbers is being used in the account_online_payment module. This prevented a technical error and ensures data is processed accurately. The change improves system stability.
Original PR description
Due to an oversight during https://github.com/odoo/enterprise/pull/109070, the old field `sanitized_acc_number` was used instead of the new one `sanitized_account_number` This causes a traceback. No task ID Forward-Port-Of: odoo/enterprise#110266
This update corrects a calculation error in the HRA (House Rent Allowance) rules for Indian employees. The change ensures that HRA percentages are accurately applied, aligning with standard India payroll practices. This update improves the consistency and accuracy of employee compensation calculations.
Original PR description
… fields - compute HRAMN from categories['BASIC'] with result_rate = l10n_in_hra_percentage * 100 - add python condition to skip the rule when HRA percentage is zero - keeps ind_emp behavior consistent with regular India payroll rules task-5964270 Forward-Port-Of: odoo/enterprise#108507