Daily updates from Odoo
Friday, March 13, 2026
25 changes · master
Enhancements to existing features
This update enhances the Odoo demo data by adding 'hr_responsible_id' values, replacing the default 'Oodobot' assignment. This provides a more realistic and useful demo environment for evaluating the planning module, aligning with best practices for demonstration data.
Original PR description
Changes: Added hr_responsible_id to the demo data as per the request since by default it's assigned to Oodobot it's better add real users to the demo data Com PR-244686 task-5602911
This update enhances the accuracy of Hong Kong payroll reports by rounding currency values to avoid potential errors when reporting to the IRD. The change ensures correct HKD reporting by using a more precise rounding method before converting to an integer, addressing a minor but important issue. Additionally, the rental system has been updated to fully support all officially recognized IRD rental benefit types.
This update simplifies the naming of joint committees within the Odoo Enterprise system. By removing redundant prefixes and moving data to a CSV file, the system is now more efficient and easier to maintain. This change improves data clarity and reduces complexity.
Original PR description
Almost all joint committees start with the same ""(Sub-)(Sub-)Joint Committee for (the)". This is unnecessary as the field is already called Joint Committee. This removes those unnecessary prefixes and also move the data to a csv for concise code. Task: 6025737
This update streamlines the Live Chat experience by reorganizing form views and standardizing the associated copy. The changes group related actions together for easier access and improve the overall clarity of the Live Chat interface. This enhancement aims to make Live Chat more intuitive and efficient for users.
Original PR description
community PR: https://github.com/odoo/odoo/pull/253027 This commit improves the form views related to Live Chat by: 1. Reordering the action buttons to group chat related actions together. 2. Harmonizing the Live Chat copywriting. task-6018898
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
Code cleanup and technical improvements
This update simplifies website configuration by moving option definitions from JavaScript to XML files. This change improves maintainability and consistency across the website modules, aligning with a new development standard. The core logic for website options is now managed through XML, streamlining the process and reducing complexity.
Original PR description
*: ai_website_livechat, website_appointment, website_sale_renting This commit adapts website_* options to the XML-first DSL introduced in `html_builder`/`website`. Core changes: - Option placement and attributes (`selector`, `title`, `groups`, `editableOnly`, ...) are now declared in `website.BuilderOptions` XML extensions. - JS plugins no longer register options via `builder_options` using `withSequence`; they stay focused on actions and services. - Option classes kept for behavior are linked through `static id` and registered in `website-options` registry when needed. - Obsolete JS-only option wrappers/plugins are removed when XML-only declarations are sufficient. For more information and context, read the community commit message. task-5358660
This update prepares the website templates for OWL3, a new technology that requires a specific syntax (.this) to access components within templates. The changes add this. to template variables, ensuring compatibility with the upcoming OWL3 update and maintaining consistent component referencing across various website modules.
Original PR description
In preparation for OWL3, where template variables will need to use .this to target component variables, we add this. to template variables that are targetting the component. Script PR: odoo#247965 https://github.com/odoo/odoo/pull/253364
This update simplifies how data is grouped within key Enterprise modules like Knowledge, Gantt, and Studio. The team has switched to using the standard JavaScript `Object.groupBy` method, aligning with recent changes in the core Odoo system. This improves efficiency and reduces potential future maintenance challenges.
Original PR description
**This PR:** Migrates Enterprise call sites to the native **`Object.groupBy`** API, following its removal from core. ### Key Changes * **Migration:** Updated call sites in Knowledge, Gantt, and Studio. * **Refactor:** Converted string criteria to callbacks and removed unused imports. **Task-5477775**
This update standardizes the naming of resources within several Odoo website plugins. Specifically, a naming inconsistency was corrected to improve code organization and maintainability. This change ensures a more consistent and manageable codebase for future development.
Original PR description
*: website_appointment, website_sale_renting This commit renames `so_content_addition_selector` to `so_content_addition_selectors` to enforce the use of coherent naming among plugin resources. Community PR: https://github.com/odoo/odoo/pull/247166 task-5363816
This update prepares our Odoo templates for OWL3 by adding the `.this` syntax to template variables. This is necessary because OWL3 requires template variables to explicitly target component variables, ensuring compatibility with the new rendering context. This change impacts several spreadsheet-related modules to ensure a smooth transition.
Original PR description
*documents_spreadsheet,hr_contract_salary,project_enterprise, sale_timesheet_enterprise,spreadsheet_dashboard_edition, spreadsheet_edition,spreadsheet_sale_management, test_spreadsheet_edition,timesheet_grid In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. Script PR: odoo/odoo#247965 task: OWL3 prep - add this. to template variables
This update prepares our Point of Sale system for OWL3, a new version of Odoo. It modifies template variables to use `.this`, which is now required to correctly target component variables. This ensures the POS system functions correctly with the updated Odoo version.
Original PR description
In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. Community PR: https://github.com/odoo/odoo/pull/253046 Script PR: odoo/odoo#247965 task: OWL3 prep - add this. to template variables