Daily updates from Odoo
Navigate
Branch
Saturday, July 19, 2025
24 changes
23 changes
Enhancements to existing features
Helpdesk live chat now relies on the existing user or guest name when starting a session, rather than passing a separate anonymous name. This simplifies the session setup flow and should make live chat behavior easier to maintain without changing the core customer experience.
Original PR description
This commit removes the anonymous_name param from the get_session route and uses the user or guest name in the relevant flows instead. It also cleans up the process of getting livechat channel values when getting the session. part of task-4675719 Related to : odoo/odoo#212150
The Create Batch Payment option is now shown directly in the payment list topbar instead of being hidden in the Actions menu. This makes batch payment creation quicker and easier for users who manage payments regularly.
Original PR description
This commit relocates the `Create Batch Payment` button from the Actions dropdown menu to the topbar in the account payment list view. By placing the button in the topbar, users can now access it more quickly. Task : 4891795
When a company changes the URL of its Odoo database, connected IoT boxes are now automatically informed of the new address. This helps avoid disruptions where paired devices would keep trying to contact the old URL, while protecting local test or pairing setups from being overwritten.
Original PR description
Before this commit, if a client renamed their SaaS database to use a different URL, it would cause paired IoT boxes to fail as they would try to contact the old URL to send devices etc. After this commit, when the `web.base.url` parameter is updated (which will happen the first time an admin logs in from the new URL), we send a websocket message to all IoT boxes informing them of the new URL. We don't do this if the new URL is localhost, as this would break the pairing. task-4879313
Subscription users now get a graph view to better visualize subscription data. This makes it easier for teams to spot trends and review subscription performance without relying only on list-based views.
Original PR description
task 4210212
Customers can now renew eligible subscriptions early and more easily reopen subscriptions that can still be restored. The portal wording and actions are clearer, while postpaid subscriptions are protected from advance payment mistakes.
Original PR description
Before: - Customers couldn't extend subscriptions early, with or without login. - Reopening a closed but reopenable subscription was not straightforward. - The 'Anticipate Payment' section and 'Automate payment' button lacked clarity. After: - Customers can extend subscriptions early (unless postpaid). - Renamed 'Anticipate Payment' to 'Extend until <date>' for clarity. - Replaced 'Automate payment' with 'Pay now', linking to the payment section. - Added 'Reopen' button for closed subscriptions, linking to the payment section.. task: 4656254
The Planning app now handles hidden resource relationship fields more efficiently to reduce memory usage. This supports better performance while preserving the information needed by the visible planning resource fields.
Original PR description
This commit is the counterpart of odoo/odoo#219598 where we force a limit of 1 on invisible x2many fields. Custom code can thus no longer safely read `records` to extract information like the list of ids in the relation. task-4921236
IoT box forms now show the box identifier to all users, not only in debug mode. This makes it easier to tell different IoT boxes apart while still allowing users to rename each record as needed.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/219589 Now that the IoT box hostname is no longer used, we will instead show the identifier to the user (without debug mode) so that they have a way of distinguishing IoT boxes. They can still rename the IoT box record to whatever they wish. task-4948953
Users can now open or close the VoIP softphone using a keyboard shortcut or the command palette. This makes call handling faster and easier, especially for users who rely on VoIP throughout the day.
Original PR description
This commit adds a data hotkey and command palette entry for toggling the VoIP Softphone. Previously, there was no shortcut or command to toggle the VoIP Softphone. Task - 4936059
The IoT app no longer shows a warning that an IoT Box has no linked subscription. Since certificates are now provided and renewed automatically at no cost, this warning was outdated and could confuse users.
Original PR description
As we now provide and renew certificates automatically and for free the "no subscription linked to your IoT Box" warning toaster makes no sense. This commit removes it. Forward-Port-Of: odoo/enterprise#90432
AI-powered features can now let a tool provide a final answer directly when it has enough information, without sending the request back for another AI response. This can make answers faster, reduce unnecessary AI usage, and let specialized tools return clearer completion messages.
Original PR description
The changes implement a new feature that allows AI tools to terminate response-generation loop early by returning an AITerminate object, which is useful for tools that can provide definitive answers without needing further LLM processing. This enables tools to: - Stop the conversation when they have a definitive answer - Prevent unnecessary LLM calls after tool execution - Return custom termination messages directly to users The implementation includes: - New AITerminate class in tools.py for signaling conversation end - Updated call_ai_tool to return termination status and message - Modified _generate_response to handle tool termination signals - Comprehensive tests demonstrating the new functionality
The automatic bank statement reconciliation process has been made more resilient. It can now report progress during longer runs and skip problematic statement lines instead of repeatedly failing, helping keep reconciliation automation running smoothly.
Original PR description
This commit aims at refactoring the following cron _cron_try_auto_reconcile_statement_lines The refactoring has 2 main purposes: 1. Start using progress notification API (to mitigate the cron being disabled after 5 failures) 2. Skip a record that caused an exception while in a cron (otherwise it would keep crashing on the same statement line) task-4900818 Forward-Port-Of: odoo/enterprise#90476 Forward-Port-Of: odoo/enterprise#88678
SEPA Direct Debit payment issues are now reported based on the payment state, making failures easier to understand and handle consistently. This improves reliability for payment follow-up, including subscription payment flows.
Original PR description
See community changes. task-3648413 See also: - https://github.com/odoo/odoo/pull/209685 - https://github.com/odoo/documentation/pull/13888
AI Fields now installs and works more seamlessly with Odoo’s AI capabilities, reducing duplicated assets and using the shared AI service for requests. Users get more reliable AI-generated field values, optional web grounding, and clearer explanations when the AI cannot confidently fill a field.
Original PR description
Purpose: --------- Add the ai module as dependency of the ai_fields module. This allows to - Auto install the AI fields and AI server actions when installing the AI module - Remove duplicate of the…
Purpose: --------- Add the ai module as dependency of the ai_fields module. This allows to - Auto install the AI fields and AI server actions when installing the AI module - Remove duplicate of the AI icon - Use the LLMApiService introduced in the ai module instead of the iap endpoint to make requests to LLM. The LLMApiService allows to enable extra parameters, especially web grounding and structured outputs. Structured outputs enforce the output type, which is more robust than describing the expected output in the system prompt. It also allows to ask the LLM to generate an "unresolved_cause" message that will be displayed in frontend, when the LLM can't provide a value confidently (because the user query is ambiguous). This allows to inform the user why the AI did not assign a value, instead of simply leaving the field empty or showing a generic error message. Note: AI fields currently only support openAI as Gemini's OpenAI compatibility does not support the responses API yet (which is needed to allow for web grounding only when needed). Task-4762422
Resolved issues and error corrections
The website rental sales test was adjusted to avoid an unreliable date picker interaction while checking rental duration changes. This helps keep automated quality checks stable so future updates can be validated more reliably without affecting customer-facing features.
Original PR description
remove click on datepicker in the wait step build-error-213702 Forward-Port-Of: odoo/enterprise#90355 Forward-Port-Of: odoo/enterprise#89873
Helpdesk reporting now opens ticket details correctly when users drill down from Ticket Analysis charts. The fix prevents report-only filters from being applied where they do not belong, avoiding errors and keeping analysis workflows usable.
Original PR description
Step to reproduce - Go to helpdesk - Go to Reporting > Ticket Analysis - Group by `Ticket` - Click on any of the blue bars Issue: since odoo/enterprise@d64db03f we now allow user to drill down to base model from report view, this causes issue when a field which is present in report model but not in base/main model. For now we directly pass the domain created for report view to base model. FIx: we remove such fields from domain and then load the view opw-4798353 related: https://github.com/odoo/odoo/pull/215167 Forward-Port-Of: odoo/enterprise#89488 Forward-Port-Of: odoo/enterprise#88356
The employee form now shows the Australian W3 reporting option again. This helps payroll teams keep employee reporting details accurate without needing a workaround.
Original PR description
"l10n_au_report_to_w3" was missing from the employee view. Forward-Port-Of: odoo/enterprise#89929
Additional automated tests were added for the Planning calendar to help ensure batch creation and deletion of records works as expected. This reduces the risk of regressions in scheduling workflows after recent calendar updates.
Original PR description
This commit's purpose is to add some testing for the task-4485911. This task implemented the use of the new framework tool that allows to create and delete records in batch in the calendar view. Some js customisation was needed in order to better fit our use case. Due to a short timing the testing is done in this followup commit instead of the initial task. task-4891810 target : saas-18.4 Forward-Port-Of: odoo/enterprise#89761
This fixes an issue where incoming VoIP calls could fail because the call status was not handled correctly when creating the call record. Users should now be able to receive calls more reliably without encountering this error.
Original PR description
This commit fixes an error that arises on incoming call because the front end tries to create data with the attribute `state` which is not defined in the called method `create_and_format`. This commit adds this attribute to the API of `create_and_format`.
The AI Composer now hides mention and channel suggestions that did not work in that context. This avoids confusing options for users and prevents errors when slash commands are used in AI Composer messages.
Original PR description
* = test_discuss_full_enterprise Disabled all @ (mentions) and # (channel) suggestions in ai_composer to prevent non-functional options. also prevents error when using / commands in ai_composer type of the channels. task-4918914 Forward-Port-Of: odoo/enterprise#89415
This fixes an issue where some marketing website sale snippets used outdated image shape identifiers, causing an error when users tried to transform those shapes. The change updates the identifiers so shape editing works reliably in affected snippets.
Original PR description
**Problem** Some snippets contain shapes whose ID starts with `web_editor` instead of `html_builder`. These IDs are not listed in `imageShapeDefinitions`, and this generates a traceback when trying to apply shape tranformations. **How to reproduce** 1. Insert the snippet `s_images_constellation` 2. Click on the bottom left image having the "Double Pill" shape 3. Click on any "Transform" button under the "Shape" row in the "Image" section 4. Problem: traceback pops up **Solution** This commit replaces `web_editor` with `html_builder`. See also the linked community PR [1] and the migration script [2]. [1]: https://github.com/odoo/odoo/pull/218837 [2]: https://github.com/odoo/upgrade/pull/8076 task-4367641
Code cleanup and technical improvements
The pull request updates the way Odoo stores and reuses data from background server requests, making the cache more flexible and easier to maintain. This should help keep screens responsive while reducing unnecessary data loading, with no expected change to everyday workflows.
Original PR description
This commit refactors and improves the RPC cache API.
- Changes the API for RPC and ORM from `cached` to `cache`;
- Renames and relocates the class `PersistentCache` to `RPCCache`. This class
contains all the relevant logic for the RPC cache (disk and ram);
- Changes the name of the parameter `onFinish` to `callback`;
- Allows the `RPCCache` to be used only with RAM cache (non-persistent);
- Introduces two parameters :
* `type`: to indicate whether the cache is `disk` or `ram` only;
* `update`: to indicate the frequency of the RPC calls:
- `once`: the RPC will be called once and store the result on the
ram. If the cache is disk, the IndexedDB value will return
the cached value, after which the RPC will be called;
- `always`: The RPC will be called each time.
task-id : 4935956The internal folder layout for website tour-related files has been reorganized to better match the main web module structure. This makes the codebase easier for developers to navigate and maintain, with no expected change for end users.
Original PR description
Currently, all files related to the tour system are located in a folder named tour_service. To make the file structure more consistent in the web_tour addon, we've created a structure similar to what's in /web.
Unused spreadsheet templates were removed, and version history files were reorganized into a dedicated folder. This is an internal cleanup that makes the spreadsheet edition code easier to maintain without changing day-to-day user behavior.
Original PR description
This commit cleans templates that are no longer used and also moves all version history related file into their own folder.
1 change
Resolved issues and error corrections
Odoo Discuss now keeps inbox and history usable when a notification refers to a record that has since been deleted. This prevents users from seeing a general message loading error and helps them continue reviewing their messages normally.
Original PR description
Before this commit, when a message notification from inbox or history has its related record deleted, the user couldn't load inbox or history. Steps to reproduce: - Have mitchell admin receive…
Before this commit, when a message notification from inbox or history has its related record deleted, the user couldn't load inbox or history. Steps to reproduce: - Have mitchell admin receive notification in Odoo - Install `mail_group` - Wait a few seconds to receive following user_notification from mail group: ``` on My Company News Hello, You have messages to moderate, please go for the proceedings. ``` - Go to related record then delete it - Go back to inbox or history => One of them show `An error occurred while fetching messages.` This happens because the related record is not a `mail.thread`, but still creates some `mail.message` to send user notifications. `mail.thread` cascade delete the messages in message list, but threadless records do not. Because the related record is deleted, these messages are attempted to be displayed in mailbox, but due to related record having no `display_name` by non-existing, the fetch data of inbox/history crashes with: ``` MissingError: Record does not exist or has been deleted ``` This commit fixes the issue by doing its best to show message even when the related record has been deleted. opw-4546920 Before  After 