Monday, February 23, 2026
17 changes · saas-18.3
Enhancements to existing features
This update optimizes the creation of global invoices in the Mexican tax reporting module. By changing the wizard's storage method to 'TransientModel', the system no longer permanently stores the wizard data when a global invoice is created. This improves performance and reduces unnecessary database usage.
Original PR description
Change to TransientModel so a wizard is not permanently stored in db when creating a global invoice. Forward-Port-Of: odoo/enterprise#107950 Forward-Port-Of: odoo/enterprise#107244
Resolved issues and error corrections
This update resolves an issue where task descriptions were being duplicated within the project form. The root cause was a default field content being incorrectly appended. This change ensures that task descriptions are displayed accurately and consistently in the project app, improving the user experience.
Original PR description
Steps to reproduce: =================== 1. Go to website > contact us page 2. Submit a new task with description. 3. View the Description in the project app. -> The description field is already shown in the form by default. You will find another time it is repeated. Cause: ====== The default field content is always appended to the form content. Solution: ========= Avoid adding description to the description field content. opw-5868382 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#246952
Documentation and clarification updates
This pull request confirms that the developer has signed a Corporate License Agreement (CLA) for Odoo. The change involves a documentation update to record this signature, ensuring compliance with Odoo's contribution guidelines. This is a standard legal process for contributions to the Odoo project.
Original PR description
@pedrobaeza --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248793
This update prevents unnecessary errors from being triggered when the Codabox sync process (CRON) encounters temporary issues. Previously, repeated errors would halt the process, even if the servers were later restored. Now, errors are only reported when manually triggering the sync, ensuring a smoother and more reliable operation.
Original PR description
In case of a failure/downtime from the IAP/Codabox servers, an error is currently being raised. Although this is useful when manually clicking the Fetch button to see what happens, in the context of a CRON it's much less desirable as multiple failures from a CRON will automatically disable it which is not useful as the servers might be back up later on. Now, instead, we only raise if we're not in a CRON environment. opw-5922549 Forward-Port-Of: odoo/enterprise#107798
This update corrects a minor oversight in the system's invoice matching tolerance settings. The change ensures accurate reconciliation of bank statements with invoices, preventing potential discrepancies and improving financial reporting. This fix addresses a technical detail that could have impacted data accuracy.
Original PR description
During this commit:https://github.com/odoo/enterprise/commit/15d26e62f14bb0224712a1712b47ebe16c3b8702 we forgot to change one part of the hardcoded tolerance. task-5952881
This update prevents test instability caused by unintentionally adding methods to models during testing. The change ensures that tests run reliably by enforcing the use of patchers for test-specific method modifications, avoiding conflicts between tests. This improves overall system stability and reduces the risk of unexpected behavior.
Original PR description
Setting methods on models during tests and not removing them afterwards can cause misbehaviour of other tests. Setting mock or test-specific methods is not an issue but it should be done via patchers. https://runbot.odoo.com/odoo/error/237983 Forward-Port-Of: odoo/odoo#249005 Forward-Port-Of: odoo/odoo#247151
This update resolves an issue where test patches within Odoo models were causing instability. The team has moved these patches to the instance level, aligning with best practices and addressing a detection error. This improves the reliability of our testing process.
Original PR description
Otherwise they trip the on-test-side-effect-detector (at least in its current incarnation). Forward-Port-Of: odoo/enterprise#107653 Forward-Port-Of: odoo/enterprise#106948
This update resolves a problem where products weren't loading correctly when switching between companies within the POS Loyalty module. The fix prevents errors caused by trying to load products directly, ensuring all products are accessible regardless of the company setting. This improves the reliability of the POS Loyalty system.
Original PR description
Step to reproduce - install `pos_loyalty` and have two companies - for this record: `loyalty.gift_card_product_50` set company_id = company1 - switch to company b and start pos Observation: - no products are loaded Cause: - `browse()` was used to load records `gift_card_product_50` and `ewallet_product_50` - when any of them is restricted on one company it fails to load whole model Fix: - Instead of directly loading them, we use `search()` to avoid `AccessError` so that rest of the products can be loaded. - Gift card is still not shown as expected opw-5449466 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a previous issue where searching for archived accounts didn't display their associated journal entries. Now, users can view all journal items, regardless of whether an account is archived, providing a more complete financial record. This improves reporting and analysis accuracy.
Original PR description
This commit makes it possible to see the journal items for archived account when searching for the account. Previously, when searching for an account that is archived, its journal items weren't shown. task-5905559 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where stock quantities were being rounded incorrectly when scanning barcodes on delivery orders. Specifically, the system was adding too little stock, leading to discrepancies in order fulfillment. This ensures more accurate stock tracking and reduces the risk of order errors.
Original PR description
To reproduce the issue: - Create a stock quantity of product1 for example of 275.84 kg in PACK1 - Create a delivery order of 3.6 kg - Go to the delivery order on stock barcode - Scan PACK1 - The new line is created as 272.2399999999 Forward-Port-Of: odoo/enterprise#107933 Forward-Port-Of: odoo/enterprise#89300
This update resolves an issue preventing custom fields from being added to attendee registration forms. Previously, a change in the system required a specific data type for registration fields, causing errors. This fix allows for more flexible customization of the registration process, enabling developers to easily add and manage additional attendee information without impacting core functionality.
Original PR description
Before the addition of identification questions like "name", "email", and "phone" in the commit [1] as event questions instead of having them static, we could add custom data, such as fields for the address, with static inputs in the form. After that addition, it's no longer possible because the registration gives us the following error when trying to convert data that isn't a M2o ID or an Integer value:
invalid literal for int() with base 10
By adding the check for the field's type, we can still add custom fields with static fields in the template, as an alternative, given that there's no question type for other fields.
[1]: https://github.com/odoo/odoo/commit/6b8daa880c
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#244378This update fixes an issue where the phone number input field on mobile devices was difficult to edit due to overlapping buttons. The fix hides the utility button labels, allowing the input field to take up the full screen width and improving the user experience. This ensures consistent and easy phone number entry on mobile.
Original PR description
Steps to reproduce: 1. Install `contacts` 2. Create an individual contact with a phone number 3. Try to edit the phone number on the mobile Issue: - Unable to edit in mobile view Cause: - On mobile…
Steps to reproduce:
1. Install `contacts`
2. Create an individual contact with a phone number
3. Try to edit the phone number on the mobile
Issue:
- Unable to edit in mobile view
Cause:
- On mobile devices, the utility buttons (Call, SMS, WhatsApp) inside the phone widget consume significant horizontal space. Due to the flex layout, this forces the actual phone input field to shrink too much, making it hard/impossible to view or edit the number.
Solution:
- Hide the text labels of the utility buttons to save space, showing only the icons
- make input's width 100% on mobile screens in partner form
<table>
<thead>
<tr>
<th>Before</th>
<th>After</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">
<img
src="https://github.com/user-attachments/assets/a620d417-119e-4e28-a62b-f63031e72598"
alt="Before"
width="500"
/>
</td>
<td align="center">
<img width="500" height="354" alt="image" src="https://github.com/user-attachments/assets/6adc4c77-767d-491d-a468-8463c0f77666" />
</td>
</tr>
</tbody>
</table>
opw-5489021This update ensures inactive taxes are accurately displayed in fiscal position mappings. Previously, inactive taxes were inconsistently shown, causing potential reporting issues. The fix corrects a discrepancy in how tax information is accessed, ensuring accurate fiscal position calculations.
Original PR description
Observed issue: inactive taxes are shown in "Replaces" `original_tax_ids` field if the form view of a tax is opened through "Configuration"->"Taxes", but not shown under "Replaces" in a fiscal position tree view, nor are they shown in the same "Replaces" field of the tax form view when opened from the fiscal position tree view. Cause: the fiscal position link calls `action_open_related_taxes` on partner (path `/account.tax/[id]`), while the "Configuration"->"Taxes" calls `action_tax_form` on tax (path `/taxes/[id]`), which has additional context element `'active_test': False` among others. Solution: adding the context to the fiscal position action produces the desired behavior, but it might break something else as it affects the whole view. task-5917667 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a bug where the AI Composer was incorrectly displaying an out-of-office banner when the user was on leave. The fix prevents the AI thread from defaulting to the user as a correspondent, ensuring the banner only appears when a real person is unavailable.
Original PR description
**Purpose of this PR:** `ai_composer` threads were falling back to self-chat correspondent logic, - `if 0 correspondents and channel_member_ids.length === 1 -> return that only member (self-chat fallback)`. so `thread.correspondent` became the current user. this made _**out-of-office banner appear**_ on AI conversations when self is on leave. before: <img width="406" height="162" alt="image" src="https://github.com/user-attachments/assets/bb45a084-5de1-4eea-8f72-a3cf5a9012c8" /> after: <img width="391" height="192" alt="image" src="https://github.com/user-attachments/assets/743b12d8-465f-419f-83e3-b92df78af3c4" /> task-4882415
This update ensures that internal users viewing message links within slides are consistently directed to the backend form view, aligning with other portal documents. Previously, internal users were incorrectly redirected to the website page. This change maintains a unified user experience across all portal content.
Original PR description
Since #202555, a message link in slides redirects internal users to the website page if it's published. To ensure consistency with other documents in the portal, this commit redirects internal users to the backend form view of the slides. Portal and public users continue to be redirected to the published website page. Forward-Port-Of: odoo/odoo#249720
This update resolves a crash in the Delivery Slip report when printed in languages other than English. The issue stemmed from the report using English labels for key fields. The fix now correctly uses the technical field names for tracking information, ensuring the report functions reliably across all supported languages.
Original PR description
Steps to reproduce: 1. Switch the partner language to Spanish. 2. Print the Delivery Slip. 3. The report crashes due to translated XPath anchors. Cause: XPath targeted hardcoded English strings 'Tracking Number' and 'Total Weight'. Solution: Target technical fields o.carrier_tracking_ref and o.shipping_weight instead of text labels. opw-5493498 Forward-Port-Of: odoo/odoo#248679
This update resolves an issue where automatic digitization of split expenses in Odoo Enterprise triggered redundant and costly OCR requests. This was impacting users' IAP credit consumption, particularly when automatic digitization was enabled. The fix ensures OCR is only performed on the original expense document.
Original PR description
OCR should only be performed on the original document. Enabling it on splits leads to redundant OCR requests and unnecessary IAP credit consumption. This is particularly important when automatic digitization is enabled, as it triggers a paid request for every split generated, leading to unexpected costs for the user. The same bug was fixed in version 19.0 and up (commit 0688575), but it couldn't be backported as the `split_expense_origin_id` field doesn't exist in version 18.0. opw-[5930791](https://www.odoo.com/odoo/project/2068/tasks/5930791) Forward-Port-Of: odoo/enterprise#107992 Forward-Port-Of: odoo/enterprise#107789