Daily updates from Odoo
Friday, June 19, 2026
16 changes · master
Resolved issues and error corrections
This update fixes a visual glitch in the planning module where resource assignments would unexpectedly change when a form was refreshed. The change prevents the system from automatically assigning resources, ensuring users always see and manage their assigned resources as intended. This improves the user experience and data consistency.
Original PR description
Added a guard check in `default_get` to ensure the current user is only assigned when `resource_ids` is explicitly requested in the `fields` parameter. This prevents the web client from receiving unsolicited defaults and visually overwriting the explicitly saved resource when the browser is refreshed. Task: 6313650
This update fixes an issue where the Turkish e-Ledger CSV export was incorrectly using the trade registry number instead of the branch number (SUBENO). The change reads the correct branch number from the 'additional_identifiers' field, ensuring accurate reporting for Turkish businesses. This improves the reliability of financial data exports.
Original PR description
## Description of the issue/feature this PR addresses: The `BranchNumber` column in the Turkish e-Ledger CSV export was reading from `company.company_registry` (trade registry number) instead of the actual branch number. ## Current behavior before PR: `BranchNumber` is populated from `company.company_registry`, which is the trade registry number — not the branch number. ## Desired behavior after PR is merged: `BranchNumber` reads `TR_SUBE` from `additional_identifiers` on the company partner, which holds the branch number (SUBENO) following the migration from the old tag system. Community: https://github.com/odoo/odoo/pull/262960 task-5175991 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adjusts the automated tests within the Odoo Enterprise system to account for a recent change in how purchase order links are presented as warnings during autocomplete. Previously, these warnings were interfering with the test execution process. This change ensures the tests accurately reflect the new functionality and provides a more reliable testing environment.
Original PR description
Introduced some `mute_logger` as feedback of the PO link to a bill is now given from the autocomplete through a warning, which would disrupt the tests. Task-6172792
This update resolves a potential conflict in how product categories are filtered within the Odoo Enterprise system. The change updates an internal XPath expression to ensure smoother operation of the POS category search. This improves the reliability of product filtering for point-of-sale transactions.
Original PR description
In this commit: ================ - Updated the XPath from `pos_categ_ids` to `group_by_pos_categ_ids` to avoid conflicts with the POS category search filter mechanism. Task-6185999 Related community PR: odoo/odoo#263208
This update ensures the checksum for the EU IoT Scale Certification module aligns with recent changes in the core Odoo system. This adjustment is a necessary step to maintain compatibility and stability following an internal Odoo update. It’s a routine maintenance task.
Original PR description
This commit simply adjusts the checksum to align with the changes in odoo/odoo#269211. task-6273412 Forward-Port-Of: odoo/enterprise#120954
This update prevents the Timesheet Assistant from incorrectly matching events to projects or tasks with disabled timesheets. The change updates backend filtering and frontend data handling to ensure only active projects and tasks are considered, improving the accuracy of the assistant's recommendations. This resolves a potential issue where users could create confusing or inaccurate timesheet suggestions.
Original PR description
Currently, the Timesheet Assistant (ActivityWatch) can match events to projects or tasks that have timesheets disabled, either via Custom Rules or Historical Memory.
This commit resolves the issue across the entire pipeline:
- Backend: Updated `resolve_assistant_models_targets` to efficiently filter out records where `allow_timesheets` is False using a search domain.
- Frontend: Updated the `loadData` JS pipeline to intercept and wipe any project/task IDs rejected by the backend, ensuring they cleanly fall back into a single "Unmatched" group.
- Views: Added the `[('allow_timesheets', '=', True)]` domain to `project_id` and `task_id` fields in `aw.rule` views to prevent users from creating invalid rules.
Task: 6267401
Forward-Port-Of: odoo/enterprise#120490
Forward-Port-Of: odoo/enterprise#119403This update ensures the 'add-documents composer' dialog opens correctly within the PIP window when triggered from there. Previously, the dialog opened in the main window, causing a less intuitive user experience. This change improves usability and consistency within the Odoo interface.
Original PR description
**Current behavior before PR:** The add-documents composer action dialog opens in the main window when triggered from the PIP window because the required context is not provided. **Desired behavior after PR is merged:** The add-documents composer action dialog opens in the PIP window when triggered from the PIP window by providing the proper context to the dialog. task-[5149597](https://www.odoo.com/odoo/project/1519/tasks/5149597) Community: https://github.com/odoo/odoo/pull/264014
This update resolves an issue where the Odoo softphone would throw errors when receiving calls from numbers not linked to a contact. The fix ensures that creating tasks from these calls works as expected, and the 'Tasks' button is no longer displayed when a call lacks a contact.
Original PR description
**Problem:** Two linked errors occur in the Phone (VoIP) softphone when a call is made to or received from a number that is not linked to any contact. **Steps to reproduce:** 1. Receive or make a…
**Problem:** Two linked errors occur in the Phone (VoIP) softphone when a call is made to or received from a number that is not linked to any contact. **Steps to reproduce:** 1. Receive or make a call from the softphone using a phone number that is not linked to any existing contact. 2. Open the call's actions and click "Create" > "Task". -> A client error appears and the task is not created. 3. On a voip.call form whose Contact has been removed, click the "Tasks" smart button. -> A server error is raised. **Current behavior:** Step 2 raises "Cannot read properties of undefined (reading 'id')" and step 3 raises "ValueError: not enough values to unpack (expected 1, got 0)". **Expected behavior:** Creating a task from a contactless call should open the task form without a default contact, and the Tasks smart button should not be reachable when the call has no contact. **Cause of the issue:** Both code paths assume a call always has a linked partner. In `action_list_patch.js`, `getCreateTaskAction` only checks `shouldShowTaskButton` in its predicate but reads `this.contact.id` in its `onClick`; for a contactless call `this.contact` is undefined. In `voip_call.py`, `action_view_tasks` delegates to `self.partner_id.action_view_tasks()`, whose `ensure_one()` fails on the empty partner recordset. Unlike the softphone "view tasks" action, which is gated by `this.contact?.task_count`, the form stat button had no visibility guard. **Fix:** The create-task action now mirrors the existing contact and lead actions, which already build their context conditionally on `this.contact`, so a contactless call simply opens the task form with no default partner. The Tasks stat button is hidden when there are no tasks, matching the softphone predicate and ensuring the partner-less code path is never reached. opw-6246641 Forward-Port-Of: odoo/enterprise#119412
This update resolves a technical issue that caused tracebacks when printing invoices through IoT devices. The fix corrects how printer information is retrieved, preventing errors and ensuring invoices print correctly. Additionally, the update includes a security enhancement to redact sensitive data from logged websocket messages.
Original PR description
When printing invoices from PoS, using an IoT device, we get a traceback, as the orm call to read device infos gets the whole selected printers params (duplex, don't ask me again, printer ids) instead of the printer ids. Issue was introduced in odoo/enterprise#113128 We also take the opportunity to redact documents from logged websocket messages. task-6307690 opw-6284287 Forward-Port-Of: odoo/enterprise#120742
A visual glitch was causing the Timesheets Configuration menu to appear twice in the application. This update corrects a technical issue where the menu was incorrectly listed, ensuring a cleaner and more consistent user experience. This change improves the usability of the Timesheets module.
Original PR description
Steps to reproduce the issue: 1- Log in as a user with Timesheets Administrator access rights. 2- Go to Timesheets → Configuration. 3- Disable Timesheets Assistant (BETA) and save. 4- Refresh the page. The Configuration menu is displayed twice. After (Expected): The Configuration menu should be displayed only once in the Timesheets app. solution: Adjusted the config menu blacklisting condition to hide the unwanted menu --- task-6302568 Forward-Port-Of: odoo/enterprise#120609
This update corrects a bug where selection fields within the Odoo Studio were incorrectly flagged as required. The fix ensures that selection fields are only required when explicitly marked as such, improving usability and preventing unintended data restrictions. This resolves an issue impacting how users design forms and reports.
Original PR description
Before: any studio property using a SelectMenu (selection) component, without a `required: false` in the childProps, was implicitly required because the check used `required !== false`, which evaluates `undefined` as truthy. After: `required` is only applied when explicitly set to `true`. task-5226503 Forward-Port-Of: odoo/enterprise#120782 Forward-Port-Of: odoo/enterprise#120037
This update resolves an error that occurred when generating payment reports for Swiss companies. The issue arose when the required module ('hr_payroll_account_iso20022') wasn't installed, leading to a system error. Now, the system correctly handles the report generation process regardless of this module's presence.
Original PR description
*=l10n_ch_hr_payroll,hr_payroll_account_iso20022 When clicking the create payment report button on a payslip for a Swiss company, a traceback occurs if the ``hr_payroll_account_iso20022`` module is…
*=l10n_ch_hr_payroll,hr_payroll_account_iso20022 When clicking the create payment report button on a payslip for a Swiss company, a traceback occurs if the ``hr_payroll_account_iso20022`` module is not installed. Steps to reproduce the error: - Install ``l10n_ch_hr_payroll`` module - Switch to CH Company - Create an Employee and running contract for it - Go to Payroll > Payslip > All payslips > Create a new payslip > Set the employee > Confirm > Create payment report Traceback: ```py ValueError: Wrong value for hr.payroll.payment.report.wizard.export_format: 'iso20022_ch' ``` https://github.com/odoo/enterprise/blob/7792926504a823590fbbe574a96994002a92fc17/l10n_ch_hr_payroll/models/hr_payslip.py#L383 https://github.com/odoo/enterprise/blob/7792926504a823590fbbe574a96994002a92fc17/l10n_ch_hr_payroll/models/hr_payslip_run.py#L13 Here, ``iso20022_ch`` is passed as ``export_format``, However, ``iso20022_ch`` is added to the selection field in the ``hr_payroll_account_iso20022`` module at [1]. When that module is not installed, the selection value does not exist, leading to the above error. [1]: https://github.com/odoo/enterprise/blob/7792926504a823590fbbe574a96994002a92fc17/hr_payroll_account_iso20022/wizard/hr_payroll_payment_report_wizard.py#L11 sentry-7391832811 Forward-Port-Of: odoo/enterprise#120825 Forward-Port-Of: odoo/enterprise#113277
This update resolves an error that occurred when refreshing Facebook statistics for users. The issue stemmed from a system error where a failed request returned 'None', causing a calculation to fail. This fix ensures that the statistics refresh process is more robust and reliable, preventing disruptions to user data.
Original PR description
Traceback: ```py TypeError: unsupported operand type(s) for -: 'NoneType' and 'int' ``` Cause: https://github.com/odoo/enterprise/blob/f6c5ce7de737794a675d1b2485dd5c1a9ed0cb17/social_facebook/models/social_account.py#L92-L108 ``meta_run_request_batch()`` may return ``None`` for failed requests. In that case, ``page_global_stats`` is ``None``, leading to ``fan_count`` being ``None``. The statistics computation then calls ``_compute_trend()`` with a ``None`` value, causing the above traceback. https://github.com/odoo/enterprise/blob/f6c5ce7de737794a675d1b2485dd5c1a9ed0cb17/social/models/social_account.py#L143-L144 sentry-7545763666 Forward-Port-Of: odoo/enterprise#120733
This update resolves a technical problem preventing the 'XML Polizas (SAT)' export from working correctly for the Mexican accounting reports. The fix ensures the exported file is formatted correctly, allowing users to download the necessary financial reports. This improves the reliability of the reporting process.
Original PR description
How to reproduce it: - Install l10n_mx_reports and select Innovacion Company - Go to accounting app > reporting and Open the General Ledger report - Trigger the "XML Polizas (SAT)" export, fill in…
How to reproduce it: - Install l10n_mx_reports and select Innovacion Company - Go to accounting app > reporting and Open the General Ledger report - Trigger the "XML Polizas (SAT)" export, fill in the wizard (export type and order/process number) and click Export - A traceback is raised instead of downloading the file: TypeError: ... report_data: use BinaryValue instead of bytes This error happens because export_xml writes the generated file to the report_data field as raw bytes. After the introduction of BinaryValue, no longer accepts bytes values (unless raw field) for Binary fields and now expects a BinaryValue, causing the traceback. The write was modified on refactoring PR, but not correctly and there wasn't a test targeting the url action part so it was not flagged. This commit fixes the issue by wrapping the content in BinaryBytes (since is a BinaryValue) before assigning it to report_data and added tests covering the single and multiple period cases. task-6297731 Forward-Port-Of: odoo/enterprise#120339
This update resolves a minor issue with the marketing automation dashboard by correcting calculations for key engagement metrics. Specifically, the formulas for calculating 'engagement rate' and 'engagement rate n-1' have been adjusted to handle potential errors and ensure accurate reporting of mailing statistics. This improves the reliability of the dashboard data.
Original PR description
This commit fixes two issues:
- KPI engagement rate ('Mailing Statistics'!B16) should be =iferror((B7+B9)/B10),0)
- KPI engagement rate n-1 ('Mailing Statistics'!C16) should be =iferror((C7+C9)/C10),0)
Task: 5418449
Forward-Port-Of: odoo/enterprise#120962This update corrects a technical issue where the system was unintentionally unfolding financial lines when opening the chat interface. This change ensures a smoother and more efficient user experience, preventing potential performance impacts. The fix focuses on optimizing the chat functionality within the account accounting module.
Original PR description
Before this commit, open_chatter use the selectStatementLine function that will unfold the line. But we don't want the unfold when opening the chatter. task-6306311 Forward-Port-Of: odoo/enterprise#120847