Daily updates from Odoo
Wednesday, December 10, 2025
44 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 yearly salary report's user experience by aligning the report layout and adjusting formatting to handle larger salary figures (up to 10 digits). Previously, the report had alignment issues and would hide columns with large numbers. Now, the report starts on a new page for each employee's salary structure, ensuring clarity and readability.
Original PR description
Before this commit: Report The header and body are not aligned. The report hides column when digits exceed 8 digits The new salary structure of the same employee starts from the same page. After this commit: Align header and body layout. Adjust padding, DPI, and font size to adapt to up to 10 digits. The new salary structure starts on a new page. task-5363813
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 enhances the usability of Odoo's payroll reports by adding the ability to group data by key categories like employee, department, and pay run. This allows for more detailed and targeted reporting, simplifying payroll analysis and improving business insights.
Original PR description
This PR adds filters to reports to group them by (Employee, Department, Job Position, Payslip, Pay Run) which eases the usage of payroll reports. Task: 5367806
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 allows users to generate partner ledger and aged partner reports showing outstanding balances as of a specified future date (e.g., February 28, 2025). This provides more flexibility in analyzing financial positions and tracking open items, particularly for reporting on historical data.
Original PR description
Determine the outstanding balance at a future date (e.g., Feb 28, 2025) for all items that were open on a specific past date (e.g., Dec 31, 2024). To enable this, we modify the partner ledger reports: - Repurpose the existing unreconciled filter - This option is now activated with an "open on" date When the open on date is enabled, the partner ledger only displays the residual amounts (not debit, credit, balance) as before. Clicking `journal items` will go to a list view that uses the `open on` field and new `residual_at_date` fields (see community) The aged partner reports also have this option enabled, allowing a similar set of capabilities. for example view the aging buckets up to the end of 2024, but of those transactions, we only display what is open today. task-4708558
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 simplifies the process of creating and managing digital signatures. Users can now set default settings for sign items at the template level, reducing repetitive work and improving visibility into which roles are applied. The changes also enhance the overall user experience for sign template creation.
Original PR description
Before: - Users had to manually set readonly, mandatory, and alignment for every sign item individually. - There was no way to define these settings at the sign item type level. - On the sign template form, users could not see which sign item roles were added on template. After: - Users can now define readonly, mandatory, and alignment values directly on the sign item type. These values are automatically applied to all sign items created from that type, saving time and avoiding repetitive setup. - The sign template form now shows which sign item roles are used in the current template. - UI improvements for a smoother and more user-friendly experience. Impact: - Less repetitive work: users no longer need to configure the same settings for each sign item. - Better visibility: users can easily see which roles are linked to a template. task-5100986
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 financial reporting to allow auditors to easily identify outstanding debts at a specific point in time. The changes improve the accuracy of reports by reconciling debt balances, providing a clearer picture of financial obligations. This supports more efficient audit processes and compliance.
Original PR description
Auditors often need to find the portion of debt that is still open at a specific posterior date. task-4708558
This update enhances Odoo's reporting capabilities to allow auditors to accurately identify outstanding debts at a specific point in time. The changes update various reports to reflect a more precise reconciliation of financial data, addressing a common audit requirement. This improves the accuracy and reliability of financial reporting.
Original PR description
Auditors often need to find the portion of debt that is still open at a specific posterior date. task-4708558
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.
This update introduces a 'scheduled' state for sign requests, clarifying whether a request has been sent or is awaiting delivery. It also includes minor UI improvements to streamline the user flow and make the sign request process more intuitive. This enhances user experience and reduces potential confusion.
Original PR description
Added a new 'scheduled' state for sign requests to help users distinguish between requests that have been sent and those scheduled for future delivery. Also includes minor adjustments to enhance the overall user flow and usability. task-5159990
This update optimizes the website generation process by enabling the server to regularly check the database. This prevents delays and ensures the website is generated efficiently, leading to faster loading times for users.
Original PR description
This way the server can ping the db so that it can generate and avoid unnecessary waiting time.
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 fixes an issue where scanning a lot twice during the barcode picking process created an unnecessary backorder. The fix ensures that quantity updates are applied correctly to the relevant lines, preventing this error and streamlining the picking workflow. This improves order fulfillment accuracy.
Original PR description
**Steps to reproduce:** - create a product tracked by lot - create a lot with a quantity of 2 - create a new sale order - add two sale order lines, both for a quantity of 1 of the product - confirm -…
**Steps to reproduce:** - create a product tracked by lot - create a lot with a quantity of 2 - create a new sale order - add two sale order lines, both for a quantity of 1 of the product - confirm - open the picking in barcode - scan the stock location - scan the lot - scan the lot another time - validate **Current behavior:** a backorder is created **Expected behavior:** No back order should be created **Cause of the issue:** After scanning the lot for the first time we have the following situation: two lines : - one with a quantity of 1, qty_done of 1 and reserved_uom_qty of 1 - one with a quantity of 1, qty_done of 0 and reserved_uom_qty of 1 both lined grouped in a parent line with quantity of 1 qty_done of 1 and reserved_uom_qty of 2 All of this is correct. when scanning the lot for the second time: _findLine iterates through the lines to select the right line to use. _findLine calls _lineIsNotComplete on the first line to check if it's complete (this first line is complete). https://github.com/odoo/enterprise/blob/58d55868750b827a9d5ebd8b4ab2cc23c4445eca/stock_barcode/static/src/models/barcode_model.js#L1684 But _lineIsNotComplete will actually do the check on the parent line (which is not complete), so the return value will be true. https://github.com/odoo/enterprise/blob/58d55868750b827a9d5ebd8b4ab2cc23c4445eca/stock_barcode/static/src/models/barcode_picking_model.js#L1338 As a consequence, the quantity will be added in the first line and we will have a qty_done of 2 in the first line and a qty_done of 0 in the second line. Which will lead to the creation of a back order opw Forward-Port-Of: odoo/enterprise#101508 Forward-Port-Of: odoo/enterprise#99774
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 fixes an issue where customers subscribing to services could fail to process recurring payments due to missing country information. The change ensures subscriptions, even for services, correctly require a country to be set, preventing payment failures and improving the subscription process. This resolves a previous optimization that bypassed address forms for services.
Original PR description
## Versions 19.0+ ## Issue A customer subscribing to a service can checkout without filling its data (incl. country). This leads to a failure of the next payment and a message in the chatter telling…
## Versions
19.0+
## Issue
A customer subscribing to a service can checkout without filling its data (incl. country). This leads to a failure of the next payment and a message in the chatter telling that "Automatic payment failed. No country specified on payment_token's partner".
## Steps to reproduce
*Ensure Sales app is installed*
- Create a customer account without filling personal data in;
- Navigate to the shop:
- Look for a subscription service (ending with "SUB") and add it to cart;
- Go to the cart and click the checkout button (automatically bypassing the addresses form);
- Pay with Demo.
- Logout and sign in as admin user:
- Go to Sales and open the latest SO (related to the test user):
- Duplicate the SO and activate debug mode;
- Open "Other Info" tab:
- Change the subscription starting date for any date in the past;
- Set the Payment Token selecting the available one; - Confirm the order.
- Navigate to Scheduled Actions:
- Look for "Sale Subscription: generate recurring invoices and payments" action and open it:
- Click "Run Manually".
- Come back to the duplicated subscription SO and look at the chatter's last message:
- OdooBot's message tells that "Automatic payment failed. No country specified on payment_token's partner".
## Cause
Task 4307281 introduced address info bypass to fasten checkout for services but subscriptions, even for services, require the country to be set for recurring payments as per https://github.com/odoo/enterprise/blob/f40e24e67a1664a13acdd01578d8269d084ee421/sale_subscription/models/sale_order.py#L1751-L1757
opw-5268156
Forward-Port-Of: odoo/enterprise#101372This 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 enhances the deletion of salary rules that use employee properties. When a salary rule input is deleted, the associated employee data is also removed, and a confirmation prompt ensures the user understands the impact. This change improves data accuracy and prevents unintended data modifications.
Original PR description
When deleting a salary rule input configured as an employee property ( and ), the corresponding entry is now removed from the payroll structure definition (). If the deleted property was the only one in its section, the section is also removed. Additionally, a confirmation popup is shown when deleting such rules: 'This will delete all the property on the employees linked to this salary rule and their data. Are you sure you want to continue?' This behavior is restricted to employee properties only and does not affect payslips. Related task: 5135933
This update resolves an issue where the system incorrectly processed invoice sequences without spaces, leading to errors. The change utilizes a regular expression to reliably extract the folio number regardless of the sequence format (space, slash, or hyphen), ensuring accurate invoice processing for Chilean Electronic Invoices.
Original PR description
Before this commit, the method `_get_last_sequence` assumed that the document sequence always contained a space separator (e.g., "INV 12345") It attempted to extract the folio number using `res.split(" ")[-1]`.
If the sequence format did not contain a space, such as the standard Odoo format `INV/2025/01234`, the split would return the entire string. This caused a `ValueError` when trying to cast the non-numeric string to an integer:
ValueError: invalid literal for int() with base 10: 'INV/2025/01234'
This commit fixes the issue by using a regular expression to extract the last group of digits from the sequence string. This ensures the folio number is correctly retrieved regardless of the separator used (slash, space, or hyphen).
opw-5401509
Forward-Port-Of: odoo/enterprise#101665This update fixes an issue where attendance durations were incorrectly calculated when check-ins occurred before an employee's scheduled start time. Now, work entries are automatically generated upon attendance approval, streamlining the process and eliminating the need for manual intervention. This ensures accurate tracking of work hours and simplifies employee management.
Original PR description
Before this commit: - For an employee with a Working Schedule as the work entry source and a default overtime ruleset (which creates a specific work entry type for overtime hours), creating an…
Before this commit: - For an employee with a Working Schedule as the work entry source and a default overtime ruleset (which creates a specific work entry type for overtime hours), creating an attendance with a check-in earlier than the employee’s normal working schedule start was not handled correctly. The early portion was ignored, resulting in a wrong attendance work entry duration (e.g., 06:15 instead of 08:00). - Work entries were not created automatically when approving the attendance. The user had to click Reset to force the generation, which is not the intended workflow. After this commit: - Attendance boundaries are now correctly normalized against the employee’s Working Schedule, ensuring the full expected duration is taken into account, even when the check-in occurs before the official start time. - The overtime ruleset is applied correctly, and the generated intervals properly reflect both standard working hours and overtime hours. - Work entries are now automatically created upon approval of the attendance, removing the need for any manual Reset action. task-5082562 Forward-Port-Of: odoo/enterprise#100616
This update corrects a recent issue impacting Belgian payroll calculations. The change reverts a previous conversion of property values within the payroll system, ensuring accurate calculations for Belgian employees. This resolves a potential discrepancy in reported earnings and maintains compliance with local regulations.
Original PR description
task-5380276
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 reporting issue in the VAT Simple tax export. It now filters the report to include only standard VAT taxes, as defined by the `l10n_ar_vat_afip_code` field. This ensures more accurate financial reporting for Argentinian VAT compliance.
Original PR description
The VAT Simple tax export should only report tax amounts from taxes that are standard VAT taxes, not all taxes. This is represented in l10n_ar via the `l10n_ar_vat_afip_code` field on the tax group. opw-5385508 Forward-Port-Of: odoo/enterprise#101414
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
This update fixes an issue in the Hong Kong payroll module by changing the default account used for NET salary payments. The change ensures payslips can be generated correctly and avoids payment problems. A new 'Salaries & Wages Payable' account has been implemented for broader compatibility.
Original PR description
Fixes the default account for NET salary rules in the Hong Kong payroll, which is using the wrong account type and causes issues when trying to pay payslips. It is replaced by a new Salaries & Wages Payable account, and we also set it for the structures other than 'Monthly Pay' task-5042786 Forward-Port-Of: odoo/enterprise#100835
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