Daily updates from Odoo
Saturday, July 19, 2025
8 changes · master
Enhancements to existing features
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
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