Daily updates from Odoo
Tuesday, March 3, 2026
18 changes
2 changes
Enhancements to existing features
This update introduces a simpler way to run Odoo tests by allowing users to use the '-t' alias for the --test-tags command. This change streamlines the testing process and makes it more convenient for developers. It's a minor improvement that enhances developer workflow.
Original PR description
Backport of https://github.com/odoo/odoo/pull/234287 <img width="408" height="151" alt="image" src="https://github.com/user-attachments/assets/7f22826f-6887-432b-8baf-8a6778b9cadf" /> Forward-Port-Of: odoo/odoo#250283 Forward-Port-Of: odoo/odoo#249123
This update enhances the testing process by clarifying documentation related to specific error codes (E8502 and E8505). The changes provide clearer explanations and examples, ensuring consistent and accurate testing of Odoo's translations.
Original PR description
- Update documentation link for E8502. - Clarify why E8505 is in place and give an example. Forward-Port-Of: odoo/odoo#251444
2 changes
Enhancements to existing features
This update enhances the Odoo system's ability to identify and correct issues with internationalized text. Specifically, the documentation for two error codes (E8502 and E8505) has been clarified with examples, making it easier for developers to ensure accurate translations and a consistent user experience across different languages.
Original PR description
- Update documentation link for E8502. - Clarify why E8505 is in place and give an example. Forward-Port-Of: odoo/odoo#251444
This update ensures the IEPS tax breakdown is correctly displayed on Mexican CFDI invoices, aligning with SAT regulations. Specifically, it now accurately shows IEPS based on whether the invoice is a 'global invoice' or uses tax object 07, resolving inconsistencies in previous behavior.
Original PR description
This commit targets to modify the behaviour of IEPS breakdown on CFDI to follow on what is specified on SAT cfdi Tax Object Catalog. Now the IEPS will be displayed only considering if the CFDI is a global invoice, the value of the tax object and whether the check is set. The general idea is: - Is a global invoice? -> show IEPS - Is tax object 07? -> show IEPS - Has ieps breakdown but is not tax object 08? -> show IEPS - Anything else, don't. task-5953499 target: saas-18.4 -> master Forward-Port-Of: odoo/enterprise#108555
3 changes
Enhancements to existing features
This update simplifies the process for Italian businesses filing withholding tax returns. The default periodicity has been changed to monthly, aligning with Italian regulations and improving ease of use. This change reduces the administrative burden for users managing Italian tax compliance within Odoo Enterprise.
Original PR description
In Italy, withholding tax return periodicity is monthly. but it's hard to discover/configure. Default periodicity should be monthly. task-5985704
This update adjusts the Romanian tax reporting (l10n_ro_saft) to align with recent changes in the core Enterprise version (CE). The removal of obsolete taxes and the addition of new ones ensures accurate reporting for Romanian businesses using Odoo Enterprise. This update maintains compliance and improves the reliability of financial data.
Original PR description
Some taxes were no longer needed in CE, so they needed to be removed task-5411745 Forward-Port-Of: odoo/enterprise#108581 Forward-Port-Of: odoo/enterprise#106127
This update clarifies the documentation for two key gettext error codes (E8502 and E8505). Specifically, it provides a clearer explanation of E8505 and includes an illustrative example to improve understanding and usability for developers.
Original PR description
- Update documentation link for E8502. - Clarify why E8505 is in place and give an example. Forward-Port-Of: odoo/odoo#251444
9 changes
Enhancements to existing features
This update integrates an AI agent ('Odoo agent') to automatically create partner records during account creation. To ensure data accuracy, a new feature will be added to exclude specific partners from this automated retrieval process. This change enhances the efficiency of partner onboarding within the accounting module.
Original PR description
This commit: https://github.com/odoo/enterprise/commit/84d84687ac09abad698b1b00a445f69a0d896e5f introduce a new ai agent called "Odoo agent" and in the create method a partner is created from it. We will add a new function to blacklist some partner from the retrieve partner functionality task-5973417 Forward-Port-Of: odoo/enterprise#108871
This pull request updates Odoo to prepare for the upcoming OWL3 migration. A script has been run to replace all instances of 't-model' and 't-ref' with their 't-custom-' counterparts. This ensures compatibility with the new OWL3 version and avoids potential issues during the migration process.
Original PR description
WIP community: https://github.com/odoo/odoo/pull/246876
This update improves the payroll dashboard by replacing a previous selection field with a simple 'is in contract' toggle. This change clarifies the connection between payroll warnings and employee contracts, making the dashboard more intuitive. It also establishes a system for linking related fields, ensuring accurate data reporting.
Original PR description
This PR contains follow-up changes to the payroll dashboard rework, mainly replacing the `apply_to` selection field with an `is_in_contract` boolean field. This field is hidden unless the selected model on the warning has a link with contracts. The PR also adds a mechanism to define which models are connected to contracts and which field serves as the link, as the link might be a "nested" field like employee_id.contract_date_start. task-5880482
This update introduces stateful AI agents capable of updating records directly, enhancing user interaction and automation. Agents now preview changes and require confirmation before updates, improving data accuracy and streamlining workflows. Key improvements include batch record updates, support for Gemini 3.5 Flash, and optimized prompting for reasoning tasks.
Original PR description
Purpose: --------- Allow the agents to update records. Agents will always show a preview of the changes that will be done and require the user to confirm the suggested changes before updating the…
Purpose: --------- Allow the agents to update records. Agents will always show a preview of the changes that will be done and require the user to confirm the suggested changes before updating the records. To achieve this the agents framework has been refactored: The previous LLMApiService was entirely stateless, resulting in several significant functional and efficiency issues. This PR introduces the concept of an AI Session to hold the complete conversation history, thus resolving these problems and enabling new features like user-interactive tools. The primary issues resolved are: - Redundant tool calls: tools and their results were not included in the history, resulting in the LLM calling the same tool with the same args multiple time for the same context. - Inefficient reasoning: LLMs with reasoning capabilities would restart their thought processes on every new message because thinking signatures were lost. - Missing interactive tools: It was impossible to design tools that required pausing and confirmation from the user mid-flow. Technical Changes: ------------------ - Added a transient `ai.session` model, designed to store the complete history of user and model messages, including tool calls, tool responses, and model thinking signatures. This model is designed to be overridable to support different providers (e.g., ai.session.openai and ai.session.google). - The ai dict available inside every tool has new capabilities It carries (among others) - a `state` dict which enables tools to store and retrieve data across multiple tool calls - a `tool_request_message` used to store a message that will be shown to request usage of the tool to the user - a `tool_request_confirmed` boolean used to check if the user confirmed usage of the tool - the 'res_model' and 'res_id' of the record the session is linked to (when session is opened from a form view for example) - a `final_message` string allowing to "short-cut" and post a response as if it was the LLM's answer - Record information has been removed from the instructions to prevent prompt injection, and because the record data is dynamic. Instead, the record info is added as a context message along with the user message (that context message is not stored in the session history) - The "Is Ask Ai" and related code has been removed. Instead of searching for a potential agent that could do the "Ask AI" job, we use the one associated with the "systray" interface key for consistency Usage: ------- There are several ways to query a LLM depending on the needs: 1. ai_session `get_direct_response()` for basic one shot requests, without configurability from the UI. 2. ai_agent `generate_single_response()` for one shot requests, but with configurability through the usage of an agent and thus with support of agent related features (rag, topics, ...). Requests can be made from the frontend using the `/ai/generate_response` route (with an `interface_key` used to get the right agent) 3. ai_composer `action_launch_ai_chat()` for multi-turns interactions with the llm through a discuss channel. Sessions can be initialized from the frontend using the `launchAiChat` command. Task-5014794
This update bumps the default version of the website generator to 2.4 to ensure compatibility with recent changes in the 19.2 release. This ensures the website continues to function correctly and reliably. The change is driven by necessary updates to website snippets.
Original PR description
Since some snippets changed in 19.2, we up the version to support them Forward-Port-Of: odoo/enterprise#109044
This update modifies tests related to payroll to support the new automatic filling of work entries. This change ensures that work schedules are correctly populated with data from the company's source, streamlining the payroll process. It’s a key improvement for accurate payroll calculations.
Original PR description
In order to allow the automatic filling of work entries from the source work schedule of a company, some tests needed to be modified in order to cater for the new business logic. Task: 5949961
This update automatically updates the employee's sex and birthday fields in the UI when the NISS (National Identification System number) is changed. This ensures data consistency and accuracy, particularly when managing multiple companies within Odoo. The update only occurs if the new NISS value is valid.
Original PR description
The `sex` and `birthday` fields are defined in `hr` and cannot be overridden or converted to computed fields without breaking multicompany consistency. Add an `onchange` on `niss` to update `sex` and `birthday` in the UI when the NISS is modified. The update is performed only if the NISS is valid. Task: 5959156
This update improves the Employee Kanban view to display the employee's first contract date instead of the most recent contract date. This provides a clearer and more accurate view of an employee's tenure within the company. The change ensures consistency and simplifies tracking employee start dates.
Original PR description
Description of the issue/feature this PR addresses: On kanban, you see the start_contract_date of the latest version, but it should be the first contract date in the company Current behavior before PR: Desired behavior after PR is merged: . Display first contract date start on Employee Kanban view instead of start contract date of the latest version task-5481072 I confirm I have signed the CLA and read the PR guidelines at [www.odoo.com/submit-pr](http://www.odoo.com/submit-pr)
This update incorporates changes required by the Uruguayan tax authority (DGI) regarding Electronic Fiscal Receipts (CFE). Specifically, a new export option is added for mandated sales, and the transmission of key invoice details (amount, currency, exchange rate) from existing invoices is now required to ensure legal compliance.
Original PR description
Purpose: The DGI introduced changes in CFE version 25. The following changes below needs to be implemented for legal compliance.
Required Changes:
- Introduce a new selection value,("91", "Export under Mandate")for field, l10n_uy_edi_cfe_sale_mode. This option is required when documenting export operation performed as a mandating entity, where the definitive export will be carried out by a third party.
- The reference document(credit note or debit note) of an existing account move will need to send:
- Amount (MntCFEref)
- Currency (TpoMonedaRef)
- Exchange Rate (TpoCambioRef) if the currency is not Uruguayan Pesos
task-5419331
task-5419331
Forward-Port-Of: odoo/enterprise#108430
Forward-Port-Of: odoo/enterprise#1038812 changes
Enhancements to existing features
This update restricts the ‘Working Schedule Change’ wizard to only Belgian companies, streamlining the process for users. It also removes a redundant field and improves the user interface by adding padding to the time-off warning alert, enhancing the overall user experience.
Original PR description
- Show the “Working Schedule Change” wizard only for employees belonging to Belgian companies. - Remove the “Post Change Contract Creation” field from the working schedule change wizard. - Add extra right padding to the warning alert in the time-off section for improved UI spacing. task-5367812
This update enhances the generation of WPS files for Odoo Enterprise companies operating in the UAE, ensuring greater compliance with local regulations. The changes include improvements to data formatting, bank account linking, and report export capabilities, ultimately streamlining the payroll process for UAE-based businesses.
Original PR description
This commit aims to make the generation of wps files for AE companies more compliant and intuitive for the user, by: - Updating string for l10n_ae_employer_reference field - Domaining the company's salary bank account to accounts that belong to the company - Enabling the export of xlsx wps report - Preventing negative values in EVP section of the wps file - Adding constrains to the employer code as per expected format - Changing the names of allowance inputs - Adding a new category for evp rules - Making sure clearing number is only 9 digits as per expected format task-5884696