Daily updates from Odoo
Friday, June 19, 2026
21 changes · master
Enhancements to existing features
This update correctly classifies the Company Executive's meal voucher as a benefit, aligning with payroll best practices. Previously, it was treated as a salary input, which has now been corrected. This change ensures accurate reporting and compliance.
Original PR description
The meal voucher for the Company Executive is a salary input and should be a benefit. Task: 6303114
This update enhances the task planning process within the Gantt view by adding a helper that prevents empty dialogs when creating new tasks. This improves the user experience and reduces potential confusion for users adding tasks from the Gantt chart.
Original PR description
This commit adds a custom no-content helper to the dialog opened when planning tasks from the Gantt view. task-3613715
This update enhances navigation between sold assets and related customer invoices. Now, invoices linked to a sold asset are directly accessible from the asset's record, and vice versa, streamlining workflows for sales and accounting teams. This improves visibility and efficiency in managing related transactions.
Original PR description
This commit improves the navigation from a sold asset to the customer invoice and vice versa. A reference link of the sold asset is added to the chatter of each invoice used in sale. Also, all invoices used in sale are added as reference link to the asset's chatter. task-4413649 Forward-Port-Of: odoo/enterprise#118665
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
Features or functions removed from Odoo
This update removes a redundant feature related to payment processing through payment terminals. The removal of fast payments using these terminals made a previous override unnecessary, streamlining the system. This change improves efficiency and reduces potential complexity.
Original PR description
We removed fast payments using payment terminals, making the `fastPayments` method override useless. see odoo/odoo#270240 task-6303855 Forward-Port-Of: odoo/enterprise#120766 Forward-Port-Of: odoo/enterprise#120672
Code cleanup and technical improvements
This update refines the controller for account bank statement imports, addressing previous issues caused by shared logic with the main accounting module. By using a more targeted controller and removing unnecessary code, the import process is now more reliable and efficient.
Original PR description
account_bank_statement_import_view was using the same controller used in account.move which caused some wrong behavior when some logic isn't shared between both modules, now account_bank_statement_import uses a generic controller that doesn't add unneeded behavior. As well as removing all of the account move classes from bank statement import and using generic ones or ones specific to account bank statement import. task-5892419 Forward-Port-Of: odoo/enterprise#120639 Forward-Port-Of: odoo/enterprise#117476