Daily updates from Odoo
Wednesday, December 10, 2025
28 changes · master
New functionality added to Odoo
This update adds a report to provide Mexican customers with proof of cancellation requests for their CFDI documents. Currently, the CFDI system doesn't reliably track cancellations, so this report fulfills a customer request for documentation and ensures compliance. It improves transparency and customer satisfaction related to Mexican tax regulations.
Original PR description
The CFDI system does not give you an up-to-date status of cancellations, so the end customer usually requests this document as proof that the cancellation was requested. So we create a new report to show this data. Task Id: 4557272 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update introduces a new field within Odoo's VoIP call records to track whether a call was recorded. This enhancement allows for better management and auditing of recorded calls, providing a more comprehensive history of communications. It improves compliance and reporting capabilities related to voice interactions.
Original PR description
Task-5408013
Enhancements to existing features
This update enhances the demo contract template used for HR payroll in India. The default settings – contract name, job title, department, and professional tax – have been updated to reflect more accurate and relevant information for Software Developers in the Research & Development IN department, specifically using Gujarat's professional tax rates. This ensures a more realistic and useful demo for users.
Original PR description
This commit ensures the demo contract template contains accurate and relevant default values. - Updated default contract name from "Default Contract" to "Software Developer" - Set default job name to "Experienced Developer" - Set default department to "Research & Development IN" - Set default Professional Tax to "Gujarat: Professional Tax" Task-5358391
This update enhances the Odoo VoIP system by providing clearer names for the arguments passed to its data retrieval methods. This improves code readability and maintainability, ensuring smoother operation and reducing potential errors within the VoIP features. It's a follow-up to a previous improvement.
Original PR description
Follow-up of #97788
This update improves the Odoo Enterprise system by adding a validation check for the 'Series' field in the Point of Sale (POS) settings. Previously, users could enter more than 3 digits, which could cause errors. Now, the system will prevent saving the configuration if the Series field exceeds this limit, ensuring data accuracy and preventing potential issues with the BR-EDI reports.
Original PR description
This commit adds an error on the Series field in the POS configuration. If the user enters more than 3 digits, a validation error message will appear and saving the configuration will be blocked until the value is corrected. task-5112103
This update simplifies the process of adding signatures to Knowledge documents by removing a dependency on the 'sign' module. The signature input now utilizes a standard 'web' dialog, reducing the overall size of the installation. Additionally, the signature plugin has been moved to the 'html_editor' module, further improving efficiency and reducing unnecessary dependencies.
Original PR description
To avoid installing `sign` when installing `accountant_knowledge`, the `SignatureInput` bloc will now use the `SignatureDialog` dialog from `web` instead of the `SignNameAndSignatureDialog` dialog from `sign`. Both dialogs let the user enter a signature, but `SignatureDialog` does not introduce any new dependencies in `accountant_knowledge`. Indeed, `accountant_knowledge` already depends on `web`. In addition to that, this PR moves the signature plugin from `sign` to `html_editor`. With this move, the `sign` module will no longer be required to insert signatures in Knowledge and Mass Mailing. COM: odoo/odoo#237131 Task-5347434
This update optimizes how Odoo retrieves spreadsheet data by implementing caching strategies using ETag headers and no-cache directives. This reduces unnecessary data transfers, leading to faster loading times and improved performance for users accessing spreadsheet data. It's a routine improvement to enhance the user experience.
Original PR description
With this commit, we improve the caching strategy for spreadsheet data responses by introducing the use of ETag headers and setting Cache-Control to no-cache. This change aims to optimize client-side fetching behavior, to avoid unnecessary data transfers if there are no changes. Task: 5265743
This update incorporates Finland's recent shift to a 13.5% tax rate for reporting purposes. The change adds a new line to the tax report, displaying both the 13.5% and 14% tax amounts, ensuring accurate financial reporting in line with current regulations.
Original PR description
as findland will replace 14% tax by a 13.5% tax, we had to include this in the finland tax report with a foldable line containing 13.5 and 14 tax tas-5324615
This update enhances the user experience of appraisal surveys by adding visual icons to the survey type selection. The changes streamline the survey interface and improve clarity for users. Additionally, a redundant custom component within the appointment module has been removed, aligning with a newer, more flexible design.
Original PR description
Icons where added to the UI selection of a survey type. These icons are stored in a computed field which is extended here to add the relevant icon for an appraisal Task-4778050
This update simplifies the company settings by moving the rental location field from the company form to the settings menu. This change improves the user experience by reducing clutter in debug mode and providing easier access to this specific setting. It's a minor improvement focused on usability.
Original PR description
- Make general account properties in settings company dependent. (removed in 18.4) - Move rental location to settings.
This update enhances the way knowledge articles are created by standardizing the use of HTML formatting. Switching to `fields.Html` ensures better security and allows for consistent HTML sanitization, improving the overall quality and safety of knowledge content.
Original PR description
It's a better practice to use `fields.Html` for text fields holding HTML code, to have by default the HTML sanitization at the lowest level possible.
Resolved issues and error corrections
This update corrects a discrepancy in the tests for Odoo's Hong Kong payroll module. The changes ensure the tests accurately reflect the specific salary property requirements for Hong Kong, leading to more reliable payroll calculations. This improves the overall accuracy and compliance of the system.
Original PR description
task-5380844
This update simplifies the appraisal process by removing a duplicate menu option within the Odoo Enterprise system. Previously, users could initiate an appraisal campaign through two different pathways, leading to unnecessary complexity. This change consolidates the launch process for a more intuitive user experience.
Original PR description
purpose: The way to launch an appraisal campaign is double, you can have it from the secondary button and from the cog wheel. Hence, removing it from the cog wheel as it's not necessary task-id: 5395096
This update fixes an issue where holiday pay recovery was incorrectly applied to employees with older contracts. The change ensures that holiday pay recovery is applied appropriately when contracts are reopened, reflecting the employee's status as a new hire.
Original PR description
Purpose ======= Normally contracts start and end dates should be configured without being closed and reopened at each version date. But, if it is the case, holiday pay recovery could be applied on older employees because it is considered the employee just joined the company, and there is an amount to recover. Forward-Port-Of: odoo/enterprise#101564
This update resolves an issue where clicking a Field Service record in the kanban view with the middle mouse button opened it in the same tab. The fix ensures that records now open in a new tab, improving user workflow and efficiency. This change was made to address a usability concern.
Original PR description
Steps to reproduce: 1. Install `industry_fsm` 2. Open Field service module 3. In the kanban view, click a record with the middle mouse button Issue: - The record opens in the same tab instead of a new tab. Cause: - `FsmMyTaskKanbanRecord` overrides `onGlobalClick` without propagating the `newWindow` argument, preventing the expected new-tab behavior. Solution: - Forward the `newWindow` parameter to the parent implementation to restore the correct handling of the middle mouse click opw-5351842 Forward-Port-Of: odoo/enterprise#100926
This update resolves a misleading warning banner that appeared when processing SEPA batch payments for partners without addresses. The system now correctly uses the linked employee's address, ensuring accurate report generation without unnecessary alerts. This improves the user experience and avoids confusion.
Original PR description
…oyee has an address Doing batch payment for sepa payment would generate a warning banner if the partner has no address ( city and country ) However in reality ( already working ) the xml report will be generated with the linked employee address in the case of absence of the partner address thus it should not show a warning. The change removes the warning in this case. task: 5266346 Forward-Port-Of: odoo/enterprise#99928
This update resolves an issue where the AI feature would crash when accessed during the forecast report generation process. The fix addresses a technical incompatibility between the AI's code and the type of action being used (ir.actions.client), preventing the error and ensuring the AI functionality remains stable.
Original PR description
Asking the AI while the user is in the ``ir.actions.client`` action (e.g., forecast report) triggers a traceback. Steps to reproduce the error: - Install ``Inventory`` module - Open any product > Click the forecast report smart button - Click the AI icon from the systray - Ask anything in AI Traceback: ```py AttributeError: 'ir.actions.client' object has no attribute 'search_view_id' ``` https://github.com/odoo/enterprise/blob/ba78913e01f215b44389a5bf0bca0e6886deab1e/ai/models/ai_agent.py#L770-L778 Here, only ``ir.actions.act_window`` actions have the ``search_view_id`` field, while ``ir.actions.client`` does not. So when the ``current_action`` is an ``ir.actions.client``, accessing ``search_view_id`` results in the above error. sentry-6942041136 Forward-Port-Of: odoo/enterprise#100609
This update makes the transcript field in VoIP calls read-only, preventing accidental modifications. This ensures the integrity of call recordings and improves data accuracy for reporting and analysis. This change enhances data reliability within the VoIP AI module.
Original PR description
Task-5404471
This update refines how ringtones are handled in the VoIP system. Previously, ringtones were a global setting, but now they are linked to individual user sessions, aligning with how ringtones are triggered by session activity. This improves system efficiency and accuracy.
Original PR description
Before this commit, ringtones were modeled as a global concept, but this is not correct: ringtones should be tied to a session. This becomes clear when you consider what triggers a ringtone: it's always linked to a progress in the lifecycle of a session. Guards such as `if (isActiveSession)` before playing or stopping ringtones are also a clear symptom of bad modeling, where some concerns are made global when they shouldn't be. After this commit, ringtones are tied to a session.
This update fixes a problem where running IoT tests were causing disruptions to other tests within Odoo. The change ensures that temporary modifications made during IoT testing are removed afterward, preventing interference and ensuring more reliable test results. This improves the stability and accuracy of our overall testing process.
Original PR description
Running iot tests may impact other tests due to monkeypatching done when importing iot_drivers (notably requests methods and http dispatchers). This commit ensures those patches are reverted at the end of the iot tests Runbot error [233918](https://runbot.odoo.com/odoo/runbot.build.error/233918)
This update corrects a display issue on the Odoo portal where users were seeing outdated document counts. Now, the portal only shows documents that are currently available for a user to sign, ensuring a more accurate and user-friendly experience. This improves clarity and prevents confusion for users managing sequential signing workflows.
Original PR description
Version: - 18.0 Steps to reproduce: - Install sign - Upload document. - Add multiple signers - Set a sequential signing order Issue: - When documents require sequential signing, portal users see a banner saying there’s a new document to sign, even if it’s not yet their turn. Solution: - Update the counter to show only the documents that the user can currently sign. Impact: - Portal users now only see documents when it’s their turn to sign. Task-5226240 Forward-Port-Of: odoo/enterprise#98671
This update fixes a technical error that prevented shipping rate calculations when a customer partner lacked address information (country, state, and city). The change ensures the system handles missing data gracefully, preventing errors and allowing users to accurately calculate shipping costs for all partners.
Original PR description
Currently, an error is raised when trying to fetch the shipping rate if the partner does not have the required geolocation fields (country, state, and city). **Steps to Reproduce:** 1. Install and…
Currently, an error is raised when trying to fetch the shipping rate if the partner does not have the required geolocation fields (country, state, and city). **Steps to Reproduce:** 1. Install and configure the **Envia Shipping** module. 2. Create a partner without an address (only name + phone). 3. Create quotation for that partner with a deliverable product (e.g; Conference Chair). 4. Click "**Add Shipping**", choose _Envia Shipping_ Method, and then click "**Get Rate**". **Error:** `TypeError - quote_from_bytes() expected bytes` **Cause:** At [1], the system tries to compute Envia shipping rates based on the partner’s country, state, and city. If any of these fields are not set, an error is raised. **Fix:** This commit adds a check for the required fields (country, state, and city). If any are missing, `_geolocate_zip` returns False, leading to a proper validation error instead of a traceback. - [2] [1] - https://github.com/odoo/enterprise/blob/f1a02626a1fbe76add104832e151c647307f3ae7/delivery_envia/models/envia_request.py#L591-L593 [2] - https://github.com/odoo/enterprise/blob/f1a02626a1fbe76add104832e151c647307f3ae7/delivery_envia/models/envia_request.py#L617-L624 sentry-7063870478 Forward-Port-Of: odoo/enterprise#100734
Features or functions removed from Odoo
This update removes outdated RPC services that were phased out in Odoo 19.0. This change improves system stability and prepares for future updates, aligning with the transition to newer, more efficient communication methods. The removal supports ongoing efforts to simplify Odoo's architecture.
Original PR description
The RPC services are all deprecated in 19.0. This work unexpose the `db` service from XMLRPC, it is still accessible from the /web/database/manager page. It also prepares the actual removal of xmlrpc by moving all the utilities we wanna keep outside of the `odoo.services` module. Documentation: https://www.odoo.com/documentation/19.0/developer/reference/external_api.html#migrating-from-xml-rpc-json-rpc Presentation at OXP-2025: https://youtu.be/Fe6Noh_G8KA
This update removes the 'activity_name' field from VoIP call records. This simplifies the data structure and reduces potential confusion for users. The change improves data consistency and streamlines reporting related to VoIP calls.
Original PR description
Remove activity_name field on voip.call Task-5349683
This update removes outdated boolean fields (`request_unit_half` and `request_unit_hours`) from the holiday request system. These fields were previously used but have been superseded by a more efficient method, streamlining the system and reducing potential complexity. This change improves data consistency and simplifies future updates.
Original PR description
The boolean fields `request_unit_half` and `request_unit_hours` are now unused, as their functionality is fully covered by `leave_type_request_unit`. They are therefore removed. task-5262190
Code cleanup and technical improvements
This update adjusts WhatsApp integration within Odoo Enterprise to align with a recent internal change. Specifically, it refactors code related to channel management, ensuring continued functionality after a restructuring of the Discuss app category. This change primarily impacts the WhatsApp messaging experience.
Original PR description
PR community: https://github.com/odoo/odoo/pull/239087
This pull request reorganizes Odoo's view management system by separating `ir.ui.view` from `ir.qweb`. This change enhances flexibility and simplifies future updates to Odoo Studio and related modules, allowing for more targeted modifications and improved performance.
This update refactors how queries are constructed within Odoo, specifically addressing deprecated methods for joining tables and ordering results. Using the recommended `Query.add_join` and `Query.order` ensures better performance and stability across various Odoo modules, particularly those related to financial reporting.
Original PR description
https://github.com/odoo/odoo/pull/238554