Wednesday, February 18, 2026
15 changes · saas-18.2
Enhancements to existing features
This update switches the GSP provider for Indian GST e-invoices to align with recent integration updates. This change ensures Odoo Enterprise continues to meet regulatory requirements for generating and submitting GST e-invoices in India. It’s a necessary update to maintain compliance.
Original PR description
Update the Indian localization to switch the GST e-invoice GSP (GST Suvidha Provider) configuration to a new provider as required by recent integration updates. This change ensures that GST credentials uses the new GSP configuration and aligns with updated operational requirements. Task: 5379879 Forward-Port-Of: odoo/enterprise#103984
Resolved issues and error corrections
Input fields now calculate their width based on their actual border and padding instead of relying on fixed assumptions or browser-specific checks. This prevents text fields from overflowing in browsers such as Safari and Firefox, improving visual consistency for users.
Original PR description
Before this PR, `autoresizeInput` used a fixed buffer of `5px` to compensate for input borders. This caused incorrect sizing when inputs had thicker borders, leading to overflow issues. Safari 16 and…
Before this PR, `autoresizeInput` used a fixed buffer of `5px` to compensate for input borders. This caused incorrect sizing when inputs had thicker borders, leading to overflow issues. Safari 16 and earlier versions did not include padding and border in `scrollWidth`. To work around this, browser detection via regex was used to add a hardcoded extra value. A similar issue appeared in Firefox 145, where scrollWidth also excluded padding and border, causing inputs to overflow again. After this PR, The buffer is no longer hardcoded. The border width is now calculated dynamically and applied correctly to the final width. Browser sniffing has been removed entirely. Instead, the logic detects at runtime whether scrollWidth includes padding; if not, the missing padding is added to the computed width. This makes the behavior consistent across browsers and prevents overflow without relying on user agent checks. task-[5412025](https://www.odoo.com/odoo/project/1519/tasks/5412025) Forward-Port-Of: odoo/odoo#241315
Checklist items now line up consistently with bullet and numbered lists in the editor. This fixes a visual mismatch that made indented checklist content look uneven in notes and edited pages.
Original PR description
The checklist has different indents than bullet list and numbered list. It should not be the case. This commit removes the extra indent from checklist entries. Steps to reproduce: - Go to a "To do" note - Create a checklist with indented items - Create a bullet list with indented items => Both list were not aligned task-5916723 Forward-Port-Of: odoo/odoo#247568
This fix stops file names in the static file box from being editable by default, preventing unexpected cursor movement and arrow-key behavior. Users can still edit a file name by clicking it directly, while normal navigation remains consistent when they are not editing.
Original PR description
### Purpose of this PR: - In the static file box, the file name is contenteditable by default, which leads to unexpected caret movement and arrow-key navigation behavior. - Change the behavior so that the file name is contenteditable="false" by default and becomes editable only when the user explicitly clicks on it. The editability is reverted when clicking outside of the file name. - This ensures consistent keyboard navigation while keeping the change limited to the static file box. task-5427329 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241591
Cancelling a dropship sale order no longer creates duplicate follow-up activities on the related purchase order. This keeps purchase teams from seeing redundant tasks and reduces confusion when handling cancellations.
Original PR description
**Steps to Reproduce** * Install `sale_management`, `purchase`, and `stock` with demo data. * In Inventory → Settings, enable `Dropshipping`. * Create a product: * Set a vendor under the Purchase…
**Steps to Reproduce**
* Install `sale_management`, `purchase`, and `stock` with demo data.
* In Inventory → Settings, enable `Dropshipping`.
* Create a product:
* Set a vendor under the Purchase tab.
* Set routes to `Dropshipping` and `Buy`
* Create and confirm a sale order for this product.
* Confirm the generated purchase order.
* Cancel the originating sale order.
* Go back to the linked purchase order.
**Observed behavior**
* Two activities are created on the purchase order when the sale order is cancelled.
**Cause**
* Both templates — `exception_on_so` (from sale_stock) and
`exception_purchase_on_sale_cancellation` (from sale_purchase)
are triggered during sale order cancellation.
* Each module overrides `_action_cancel` and triggers its corresponding exception template.
* When both modules are installed, both templates run.
https://github.com/odoo/odoo/blob/98da30375a5ae50a77d848b838781aa7247bd362/addons/sale_purchase/models/sale_order.py#L26-L32
https://github.com/odoo/odoo/blob/98da30375a5ae50a77d848b838781aa7247bd362/addons/sale_stock/models/sale_order.py#L206-L208
* The template `exception_purchase_on_sale_cancellation` should only be triggered
when the PO originates from an SO and the product is a service, but
the domain lacks the required product-type condition.
**Fix**
* Add the missing condition to ensure that `exception_purchase_on_sale_cancellation`
is not triggered for dropshipped products, preventing duplicate activities.
---
`NOTE` - This issue is resolved from version 19.0 in this [commit](https://github.com/odoo/odoo/pull/212679/changes/ede2898278220a3ba4d8910ef268fe59f1587c72)
---
opw-5153488
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#239569This fixes an editing issue where, after pressing backspace next to a button, typed text could appear outside the button even though the cursor looked like it was inside. Users editing notes or rich text content now get more predictable button text editing behavior.
Original PR description
When using backspace after a button, the cursor is visually displayed as being inside the button, but it a character is typed, it is inserted after the button, while it should be inside. What actually happens is that after backspace after a button, the selection is set around the FEFF that follows the button. This commit fixes this by putting the selection before the FEFF inside the button instead. Steps to reproduce: - Go to a "To do" note - Insert a button - Insert text after the button - Put cursor before text after button - Press backspace: the cursor is displayed inside the button - Type a letter => The letter was inserted after the button. task-5928806 Forward-Port-Of: odoo/odoo#248179
This fixes a filter issue where choosing “ends with” could incorrectly switch to “starts with” after the filter panel refreshed. Users creating custom filters, such as in Sign, will now see their selected operator preserved correctly.
Original PR description
Steps to reproduce ================== - Go to Sign - Add a custom filter - Select the Display Name field - Select the "ends with" operator -> The "starts with" operator ends up being selected Cause of the issue ================== The ends_with operator is a virtual operator that should be restored after a render opw-5714125 Forward-Port-Of: odoo/odoo#248908
Category images in the Point of Sale selector are now kept to a fixed share of each button, leaving enough room for the category name. This prevents oversized images from making categories hard to read or select during checkout.
Original PR description
Before this commit, when a category image was too large, it would overflow and take all the space dedicated to the category name. Now we set the width of the image to 1/3 of the button and the name to 2/3, so that the image never takes too much space. task-id: 5462315 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242054
The signature field now properly connects to the notification service it already relied on. This prevents errors when users interact with signature fields, improving reliability in forms that collect signatures.
Original PR description
The notification service is later used in this [method](https://github.com/odoo/odoo/blob/04f3473da52ec74f3955cadd58eb016537497d44/addons/web/static/src/views/fields/signature/signature_field.js#L120), but it was never declared so it was causing an error. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248602
This update ensures that all rates displayed on the printed payslip are formatted to a maximum of 4 decimal places. This improves the clarity and consistency of the payslip document, aligning with reporting requirements. The change was made to address a formatting issue.
Original PR description
This commit improves the payslip display by limiting all rates to 4 decimals max on the printed pdf payslip. Task: 5709739 Forward-Port-Of: odoo/enterprise#104915
This update resolves a visual issue in the employee offer screen for the Belgium payroll localization. The contract type field was incorrectly displayed when the localization wasn't installed. A new field was added to the model to correctly manage the display, ensuring the correct UI for users.
Original PR description
Bug reproduction: Ensure that belgium payroll localization is not installed, go to offer of employee, contract type field is not there. Bug cause: Contract type field does not exist in the model, it was adding to the view by l10n_be_hr_payroll. Bug solution: I added new field contract_type_id to the hr_contract_salary_offer model (to show it on UI). Solved from 17.0 Note: I need to fix after version 19.0, because by starting from 19.0, the Belgium one will try to add the same field to the view again task - 5500488 Forward-Port-Of: odoo/enterprise#104578
This update resolves a bug where autofilling pivot cells with incorrect relational IDs caused the application to crash. The fix ensures that autofill functionality continues to work while preventing tooltips from triggering errors. This improves the reliability of pivot table data entry.
Original PR description
If you try to autofill a pivot cell that has an invalid relational id in its domain (eg. `=PIVOT.HEADER(1, "stage_id", 99999999)`), the autofill actually works but the tooltip make everything crash. Task: [5913754](https://www.odoo.com/web#id=5913754&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#107502 Forward-Port-Of: odoo/enterprise#106601
This update corrects a visual issue on mobile devices where the public knowledge sidebar would overlap with article content while scrolling. The fix ensures the sidebar functions as a proper mobile overlay, providing a consistent and readable experience for users accessing knowledge articles on their phones. This improves usability and prevents a distracting visual problem.
Original PR description
Steps to reproduce: 1. Install `website_knowledge` 2. Create a long, scrollable knowledge article with 20 sub-articles. 3. Share the article publicly 4. Open the public link in mobile view (logged…
Steps to reproduce:
1. Install `website_knowledge`
2. Create a long, scrollable knowledge article with 20 sub-articles.
3. Share the article publicly
4. Open the public link in mobile view (logged out)
5. Toggle the sidebar using the top-left menu button
6. Scroll down
Issue:
- On mobile, the public sidebar overlaps with the article's content while scrolling.
Cause:
- the sidebar and its backdrop were positioned absolutely inside a flex container. Because they were not fixed to the viewport, the article content continued to scroll and render underneath the sidebar, causing visible overlap between the sidebar and the article body. Additionally, the sidebar’s internal scroll container was not explicitly positioned, which contributed to inconsistent scrolling behavior when the sidebar was open.
Solution:
- Update the public Knowledge sidebar css to behave as a proper mobile overlay by: Fixing the sidebar and its backdrop to the viewport using position: fixed, ensuring they are removed from the flex layout flow on mobile Explicitly positioning the sidebar’s internal scroll view to ensure correct scrolling behavior
<table>
<tr>
<td><strong>Before</strong></td>
<td><strong>After</strong></td>
</tr>
<tr>
<td><img width="725" height="901" alt="Before image" src="https://github.com/user-attachments/assets/33190684-5b52-4931-b01a-5044734c9cf0" /></td>
<td><img width="686" height="916" alt="After image" src="https://github.com/user-attachments/assets/610a5aef-3467-4215-a0a0-83607375a016" /></td>
</tr>
</table>
opw-5384026
Forward-Port-Of: odoo/enterprise#103135This update resolves an issue where archived employees were still visible in the attendance Gantt view. The change ensures that only currently active employees are displayed, improving data accuracy and clarity for HR reporting. This prevents confusion and ensures users only see relevant attendance information.
Original PR description
Steps to reproduce: 1. install `hr_attendance_gantt` 2. create an employee 3. make attendance records for the employee in the previous months 4. archive the employee When opening the gantt view of the attendance, a row appears for the archived employee, with no attendance showing up. This commit adds a constraint to only show the active employees. opw-5490119 Forward-Port-Of: odoo/enterprise#106486
This update addresses a recent finding that the SAT now accepts accented characters in tax documents. Previously, the system removed accents to align with SAT practices. This PR temporarily allows the ‘É’ character, acknowledging ongoing SAT acceptance of accented names as outlined in official guidelines.
Original PR description
An improvement in September (PR #95207) began removing accents from names in documents sent to the SAT, in order to comply with their own practices. In recent months, it has become clear that the SAT…
An improvement in September (PR #95207) began removing accents from names in documents sent to the SAT, in order to comply with their own practices. In recent months, it has become clear that the SAT does accept accents sometimes. First with umlauts on the `ü` in October (PR #96043), then all umlauts in February (PR #106557). As this PR has found another accepted accented character `É`, it may be necessary to undo the original improvment entirely. The [Anexo 20 Guía de llenado de los comprobantes fiscales digitales por Internet](http://omawww.sat.gob.mx/tramitesyservicios/Paginas/documentos/Anexo_20_Guia_de_llenado_CFDI.pdf), pg 17, indicates that accented characters are maintained in legal names. At least, `Í` is allowed. At this point in time I only added the exception for `É`. Steps to reproduce are [on the ticket](https://www.odoo.com/mail/message/999357619), as it requires a real person's tax information. [opw-5915515](https://www.odoo.com/odoo/project.task/5915515) Forward-Port-Of: odoo/enterprise#107677