Daily updates from Odoo
Friday, August 8, 2025
22 changes · master
Enhancements to existing features
This update reorganizes shared discussion action settings used by live chat and related messaging features. It should make the messaging experience easier to maintain and more consistent across support conversations, with no major user-facing change expected.
This update organizes web client translation text more clearly across areas such as Documents Spreadsheet, Sign, and IAP Extract. It helps keep labels and messages easier to manage for multilingual users, with no expected change to everyday workflows.
The contact import template has been refreshed to make importing contact data easier for users. It now includes a ready-to-use example with demo data and validation coverage to help keep the template reliable over time.
Original PR description
This commit updates the contact import template following the change in 'base'. task-4875863
Audit report PDFs can now include account reports without showing duplicate page numbers. This improves readability and consistency when multiple documents are combined into one final report.
Original PR description
When generating audit reports, we compile a single, comprehensive PDF that includes all relevant documents and account reports attached to the articles. Each page in the final report is automatically numbered during generation. However, because account reports also include their own page numbers, this can lead to pages displaying two conflicting numbers: one from the account report and another from the audit report. To address this, we're introducing a new context variable in the account reports (named: `exclude_page_footer`). This allows the page footer to be disabled when needed. Disabling the account report's footer ensures that the final audit report is cleaner, more consistent, and easier for users to read. Task-4989809
The customer-facing preview buttons in Helpdesk and Field Service now use the shorter label “Preview” instead of “Customer Preview.” This keeps wording consistent across related screens and makes the interface simpler for users.
Original PR description
*: industry_fsm In this commit: - To maintain consistency, the buttons are renamed from "Customer Preview" to "Preview". task - 4567479
The field service task form now places priority and tags in a more convenient location. This helps users review and update key task information more easily during day-to-day field service work.
Original PR description
task-5003822
Users setting up Brazilian AvaTax will now see a non-blocking warning if another AvaTax account already exists in the database. This helps prevent credential synchronization issues while still allowing the user to continue when appropriate.
Original PR description
Before this PR: - No warning is shown if user is creating another avatax account in the DB. After this PR: - A non-blocking warning is shown if user tries to create another avatax account in the DB to prevent issues with credentials. Task: 4842897
Resolved issues and error corrections
This fix prevents an occasional error when users quickly leave an account return view while background checks are still running. It improves reliability by ensuring the page does not try to update a view that has already been closed.
Original PR description
Fix the following issue that could be triggered quite randomly. To reproduce it, the easiest way is to set a timeout between the 2 await functions in the function runCurrentReturnChecks() and…
Fix the following issue that could be triggered quite randomly.
To reproduce it, the easiest way is to set a timeout between
the 2 await functions in the function runCurrentReturnChecks()
and switching quickly from the audit kanban view to a return view
a few times.
The issue occurs because the refresh_check function might take
a few seconds to compute, and if the user leaves the view before
it finishes, the second await function was triggered on a
destroyed component.
UncaughtPromiseError
Uncaught Promise > Component is destroyed
Error: Component is destroyed
at Object.original (http://localhost:8069/web/assets/debug/web.assets_web.js:47514:31) (/web/static/src/core/utils/hooks.js:109)
at Object.fn (http://localhost:8069/web/assets/debug/web.assets_web.js:47507:21) (/web/static/src/core/utils/hooks.js:102)
at ORM.call (http://localhost:8069/web/assets/debug/web.assets_web.js:47524:52) (/web/static/src/core/utils/hooks.js:119)
at ORM.webRead (http://localhost:8069/web/assets/debug/web.assets_web.js:33931:21) (/web/static/src/core/orm_service.js:307)
at props.list.model.load (http://localhost:8069/web/assets/debug/web.assets_web.js:227868:55) (/account_reports/static/src/components/account_return/views/account_return_check_kanban_renderer.js:87)
at async props.list.model.load (http://localhost:8069/web/assets/debug/web.assets_web.js:227866:36) (/account_reports/static/src/components/account_return/views/account_return_check_kanban_renderer.js:85)
at async Object.onClose (http://localhost:8069/web/assets/debug/web.assets_web.js:102138:29) (/web/static/src/views/view_button/view_button_hook.js:95)
at async Object.doActionButton (http://localhost:8069/web/assets/debug/web.assets_web.js:106405:9) (/web/static/src/webclient/actions/action_service.js:1579)
at async execute (http://localhost:8069/web/assets/debug/web.assets_web.js:102144:21) (/web/static/src/views/view_button/view_button_hook.js:101)
at async executeButtonCallback (http://localhost:8069/web/assets/debug/web.assets_web.js:102072:15) (/web/static/src/views/view_button/view_button_hook.js:29)
task-4991558A test setup for Peru electronic invoicing now includes the required sales permission so it works reliably when demo data is not installed. This reduces false test failures and helps keep releases stable without changing day-to-day user workflows.
Original PR description
The new downpayment test failed in without demo due to missing sales group on the user. This fix adds the missing group. runbot-230456 Forward-Port-Of: odoo/enterprise#91740
Hong Kong payroll now uses the employee's standard name on payslips when surname and first name are not filled in. This prevents payslips from showing an empty or incorrect legal name, improving payroll document accuracy.
Original PR description
Explanation: In hong kong payroll, the legal name is joined by surname and first name. However both fields are not madatory therefore it will display False on Payslip. After this commit, it will display the name field when both surname and first name are not used. opw-4944968 Forward-Port-Of: odoo/enterprise#90250
The VoIP call timer now uses the user’s device timing consistently instead of comparing it with server timing. This prevents calls from appearing to start with a negative duration when device and server clocks are slightly out of sync.
Original PR description
It was reported that the timer for the call would sometimes start as a negative number. Examining the code that computes it suggests that the timestamp sent by the server was a few seconds in the future compared to luxon.DateTime.now() (client time). This discrepancy is most likely due to the clock skew between the client and the server. This commit adapts the code so that it only computes time based on client-side values, effectively preventing clock skew issues. Task-4930666 Forward-Port-Of: odoo/enterprise#91863 Forward-Port-Of: odoo/enterprise#91738
This fix prevents a Belgian payroll test from failing when the Accounting app is not installed. It makes the test setup more reliable for environments that only use Belgian payroll, without changing payroll functionality for users.
Original PR description
Reproduce: Run `TestPayrollSocialBalanceSheet` with only `l10n_be_hr_payroll` installed. Issue: The test setup uses `'account.journal'` to set a default account for cp200_salary_structure. Since `l10n_be_hr_payroll` does not depend on `account`, this raises an error when the account module is not installed. Fix: Add a check to ensure 'account.journal' exists in the environment before using it. Task: 5002551 Forward-Port-Of: odoo/enterprise#91881
The expiration panel now keeps the standard expiration message for upsell-related cases, while renewal expirations continue to use their separate handling. This avoids showing the wrong renewal-focused wording to customers when the expiration reason is an upsell.
Original PR description
Upsell expiration are not handled the same way as renewal expiration, so we can keep the default expiration message for any expiration reasons other than a renewal Forward-Port-Of: odoo/enterprise#91839 Forward-Port-Of: odoo/enterprise#91730
Invoice extraction tests now use a real PDF attachment instead of invalid file data. This prevents misleading error messages during automated test runs and helps keep build results clearer for teams monitoring system quality.
Original PR description
The tests that were using a PDF as attachment were causing this error to be logged on each of them: `Error when reading the pdf file (...)`. This happened because the attachment raw bytes weren't representing a valid PDF file. Related to runbot build error [230282](https://runbot.odoo.com/odoo/runbot.build.error/230282).
This update fixes an internal automated test for the Sign app that was failing after a recent change. It helps keep the development validation pipeline stable, reducing noise and delays for future updates.
Original PR description
Before this, after merge this PR : https://github.com/odoo/enterprise/pull/88774 the test `test_send_request_with_default_partner_id` failed because product_id was hardcoded. In this PR, fixes the test so it works correctly.
Demo employee contracts for Egypt, Saudi Arabia, and Turkey now use the appropriate local payroll structures. This prevents them from being incorrectly linked to Belgian payroll settings when Belgian payroll is also installed, improving reliability of demo and testing data.
Original PR description
*: eg, sa, tr - Assign the correct payroll structure to employee contracts in demo data to prevents incorrect assignment of the Belgian payroll structure when l10n_be is installed. Task: 4862722 Forward-Port-Of: odoo/enterprise#91958 Forward-Port-Of: odoo/enterprise#87409
This fixes an issue in Mexican electronic invoicing where invoices containing only a section or note line could not be saved because tax information was incorrectly required. Users can now save these invoice descriptions without encountering invalid field errors.
Original PR description
Issue: When we try to save an invoice with only a line section or line note, an error is thrown indicating invalid fields: invoice lines. This happens because the `l10n_mx_edi_tax_object` is required on account move lines. Purpose of this PR: Allow for line sections and line notes to be saved without tax objects. Steps to reproduce on Runbot: install l10n_mx switch to MX company and create an invoice with just a line section or line note save Invalid Fields error is raised opw-4987040 Forward-Port-Of: odoo/enterprise#91758
The Task Analysis report now keeps the field service filter when users drill down from the pivot view. This prevents unrelated tasks from appearing, making reporting counts and follow-up lists more accurate for field service teams.
Original PR description
Issue: - When the user drills down in the pivot view, all tasks are displayed. Cause: - The action was not passing the FSM project domain. Fix: - In this commit, we have passed the FSM project domain, so that only the relevant FSM tasks will be displayed during drill down. Steps to reproduce: - Install the industry_fsm module. - Go to Industry > Reporting > Task Analysis. - Group by Assignees. - Check any count column number and drill down. task-4688139 Forward-Port-Of: odoo/enterprise#83295
This fix improves the shop floor experience by ensuring the next production step is highlighted after completing an instruction step. It also shows all operators working on the same work order, so teams can clearly see who is active.
Original PR description
Two small fixes for shop floor UX. Please check the commits for details. task-5005167
Features or functions removed from Odoo
Obsolete setup options for creating repair orders from returns were removed from the field service repair configuration view. This keeps the interface aligned with the newer repair process, reducing outdated settings and maintenance overhead.
Original PR description
Removed obsolete XML elements related to the “Repair Order from Return” option from the operation type view. These elements are no longer relevant after the feature was replaced with a transfer-level server action in the repair module. The view definition is aligned with the updated repair flow, ensuring clean and maintainable XML. Task ID: [4778453](https://www.odoo.com/odoo/project/966/tasks/4778453)
Code cleanup and technical improvements
This update removes outdated label and expansion settings from search filter groupings across many Odoo Enterprise modules. It is an internal cleanup that helps keep search views consistent with the latest platform standards, with no expected change to day-to-day workflows.
Original PR description
Remove all the occurrences of string attribute from group in the search view. Also removed expand attribute wherever left from group in the search view. Community PR: https://github.com/odoo/odoo/pull/220023 Related PR: https://github.com/odoo/enterprise/pull/88229 (Remove expand attribute) task-4915069
Several website and eCommerce-related templates were updated to use the current recommended rendering method. This is an internal cleanup that helps keep the platform maintainable and aligned with supported standards, with no expected change for customers or day-to-day users.
Original PR description
\*: l10n_cl_edi_website_sale, l10n_mx_edi_website_sale, website_\* This commit updates all instances of the deprecated t-esc attribute within the web_editor and website modules to use the recommended t-out attribute. See also : - https://github.com/odoo/design-themes/pull/804 - https://github.com/odoo/odoo/pull/168191 task-3573251