Daily updates from Odoo
Monday, April 20, 2026
5 changes
1 change
Resolved issues and error corrections
If the connection drops while waiting for a Viva.com payment confirmation, the POS now keeps checking instead of stopping too early. This reduces the risk of a customer being charged on Viva.com without the payment being confirmed in the point of sale, while also showing a one-time warning that connectivity was lost.
Original PR description
When a payment was sent to Viva.com and the connection dropped before receiving confirmation, the polling loop in waitForPaymentConfirmation would stop because _handleOdooConnectionFailure set the payment status to "retry" and rejected the promise. This left the payment debited on Viva's side but unconfirmed in the POS. Now the polling uses a direct silent ORM call instead of _call_viva_com to avoid triggering _handleOdooConnectionFailure. On connection failure, the poll silently retries on the next interval until a definitive success/failure response is received. A one-time warning notification informs the user that connectivity was lost. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#259564
1 change
Enhancements to existing features
Assigning a chart of accounts or fiscal localization now uses less memory and finishes much faster on large databases. The optimization helps avoid memory limit errors and improves performance for customers with very large product catalogs.
Original PR description
## Summary This PR optimizes memory consumption and execution time when assigning a **Chart of Accounts** or **Fiscal Localization**. By moving filtering logic to the database and preventing…
## Summary This PR optimizes memory consumption and execution time when assigning a **Chart of Accounts** or **Fiscal Localization**. By moving filtering logic to the database and preventing expensive field prefetching, we've achieved a **60% reduction in peak memory** and cut execution time by more than half on large datasets. ## The Problem Assigning a chart template was hitting memory limits on databases with a high volume of products (e.g., 2M+). Two main bottlenecks were identified: * **Inefficient filtering**: Loading all `product.template` <-> `tax` relations into the cache and filtering in-memory using python instead of using SQL. * **Excessive prefetching**: Accessing `product.product` fields (like `write_date`) inside the compute function triggered a cache miss that prefetched all product fields, consuming significant memory. ## Improvements * **SQL Filtering:** Pushed the `product_template` filtration logic to the SQL layer to reduce the amount of data loaded into the memory. * **Prefetching Prevention:** Optimized the compute logic to avoid triggering unnecessary field prefetching on `product.product`. --- ## Benchmarks *Tested using `memray` on a customer database with ~2 million products.* | Scenario | Duration | Peak Memory | Total Allocations | | :--- | :--- | :--- | :--- | | **Baseline (Before)** | 10:23.4 | 3.6 GB | 9,954,480 | | **Optimized Prefetching Only** | 10:21.0 | 2.3 GB | 9,292,271 | | **SQL Filtering Only** | 06:30.2 | 3.0 GB | 8,865,050 | | **Combined (Final Result)** | **04:59.6** | **1.4 GB** | **8,213,374** | ### Key Results: * **Memory Saved:** ~2.2 GB (61% reduction) * **Time Saved:** ~5.5 minutes (52% faster) OPW-6070666 Forward-Port-Of: odoo/odoo#259304
3 changes
New functionality added to Odoo
AI agents can now help create one or multiple records in the database, with user confirmation required before anything is saved. This expands agent capabilities while keeping users in control through previews and approval steps.
Original PR description
This commit adds the tools and topics that allow the agents to create new records on the database. Specifically, it adds: - One tool "Create records", that allow to create one (or multiple) records at once. This tool must be confirmed by the user (similarly to the `Update records`. - One topic "Create records", that contains the instructions to use the new `Create records` tool. - Some utilities for previewing the records that are going to be created by the agent. task-5153871
A new AI assistant helps users edit website pages by adding and modifying content, images, headers, footers, and styling through conversational requests. This makes website creation and updates faster and more accessible for users without requiring manual page editing skills.
Original PR description
Introduction of an AI agent to edit the website page being edited. __What it can currently do__ - Add some snippets to the page and edit them on the fly. - Make any modifications on the header,…
Introduction of an AI agent to edit the website page being edited. __What it can currently do__ - Add some snippets to the page and edit them on the fly. - Make any modifications on the header, footer and wrap element. - Add some images given by the user or fetched from Unsplash - Read and write user_custom_rules.scss - Generate pictures __What it cannot currently do__ - Change theme and use tools from the editor - Add some JavaScript to the page - etc. __Basic flow__ Every time the user sends a message, the context given in the prompt is updated with the page information and content as well as the CSS variable values of the theme. When asking for a change on the page, the agent can use a tool to retrieve the HTML of standard snippets, it can also search for images. When it has everything it needs, it will call the tool to apply changes on the page. It has a lot of liberty to do so as it can add and replace any element with arbitrary (sanitized) HTML. Community PR: odoo/odoo#258133 task-5411100
AI agents and AI-powered server actions can now search the web to answer requests with more current information and include more reliable source links. The update also limits agent access to sensitive system models and makes AI server action logs shorter and easier to read.
Original PR description
Purpose: -------- Allow agents and AI server actions to search for info on the web when answering a user request. Since Gemini does not support web grounding with tool calls, one added a web…
Purpose: -------- Allow agents and AI server actions to search for info on the web when answering a user request. Since Gemini does not support web grounding with tool calls, one added a web grounding tool (and use it for every provider for consistency). This also allows to keep the web search in a separate context with more specific instructions. The tool will make an independent request to the LLM without any tools but with the web_grounding feature enabled. LLMs are really bad at recopying URLs and tend to hallucinate links. Therefore, the sources are inserted in the tool result using a uuid, and stored in the session state so that when the main agent references a source, it needs to reference a uuid instead of the source's url. These uuid's are then replaced by the source's urls manually using the mapping stored in the session state. Web Search can be added on AI agents by using the dedicated Web Search topic, and on server actions of type "AI" by adding the Web Search tool. The AI APIs request time out was increased to 90 seconds as the web searches might take some time. ### Models restrictions Some models are now non-accessible by the agents. For example, there's no reason to give the ability to the agent to access private keys; nor to allow it to edit views or access rights. If it is really necessary then these should be dedicated AI tools (eg. to avoid breaking views or to create attachments), or the agent should ask for confirmation to access some values. There is no real usecase at this moment so the access to these models is currently simply restricted. By default, every model starting with 'ir.' is restricted. Other models can be restricted by adding them in the AI_MODELS_BLOCKLIST set. To restrict access to these models, the AI tools **must** use the method `_parse_domain` method defined on `ai.agent`. Task-6025732