Monday, January 19, 2026
16 changes · saas-18.4
Enhancements to existing features
This update ensures that Thai province names within Odoo are displayed in their native Thai language. Previously, these names were stored in English, leading to inconsistencies. This change improves the accuracy and user experience for Odoo users in Thailand.
Original PR description
State names are not translatable in Odoo, so they should be stored in their native language for consistency. This PR updates all Thai provinces to use their native Thai names. task-5484432 Forward-Port-Of: odoo/odoo#243461
Resolved issues and error corrections
This update fixes a problem where Odoo inviter notifications were triggered for all invited users, including portal users, leading to unnecessary alerts. Now, inviter notifications only appear when an internal user connects for the first time, streamlining the process and improving the user experience. The notification message has also been updated for clarity.
Original PR description
**Description of the issue this PR addresses:** ------------------------------------------------ When a user was invited to Odoo, the inviter received a first-connection notification when the invited…
**Description of the issue this PR addresses:** ------------------------------------------------ When a user was invited to Odoo, the inviter received a first-connection notification when the invited user connected for the first time. This notification was triggered for **all user types**, including portal users. For portal users, this resulted in unnecessary toast notifications and chat window pop-ups. **Current behavior before PR:** --------------------------------- - The inviter is notified when any invited user connects for the first time. - This includes portal users. - Unnecessary notifications and chat pop-ups are shown for portal user connections. **Desired behavior after PR is merged:** ----------------------------------------- - The inviter is notified **only when an internal user** connects for the first time. - Portal users no longer trigger first-connection notifications. - The notification message is updated to: “[Username] just connected for the first time. Wish them luck!” **Task:** [4105780](https://www.odoo.com/odoo/project/1519/tasks/4105780) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242235
This update removes an unnecessary restriction that prevented users from inserting records into lists grouped by many2many fields. The change clarifies the process for adding records to these lists, improving usability and eliminating a frustrating limitation for users. This resolves a technical issue impacting the spreadsheet edition.
Original PR description
When we introduced the record-specific insertion from a list, we added a limitation on lists grouped by many2many fields but this limitation makes no sense, it only blocks the users without any clear reason. Task: 5267035 Forward-Port-Of: odoo/enterprise#103869 Forward-Port-Of: odoo/enterprise#103161
This update removes an unnecessary credit note warning from the GSTR report, streamlining the reporting process. Previously, a warning appeared when a credit note was linked to an invoice, but this has been corrected to ensure accurate GSTR reporting. The change ensures the GSTR report accurately reflects transactions.
Original PR description
This **PR** removes the credit note warning from the GSTR report, as it is not required at the report level. Additionally, when this warning is present on an invoice and the credit note is confirmed, the credit note is set to not checked. The warning will only be cleared once the credit note is posted and checked task-5469000 Forward-Port-Of: odoo/enterprise#104565 Forward-Port-Of: odoo/enterprise#102106
This update resolves a technical issue that caused translation tests to fail due to delays in loading sidebar content. By preloading translated elements, the sidebar now renders fully before tests begin, ensuring accurate and reliable test results. This improves the overall stability and efficiency of the translation process.
Original PR description
When opening the sidebar in translation mode, translated elements must be preloaded before the sidebar renders. Without preloading, the fetch requires an extra tick to complete, causing tests that immediately check sidebar content to fail because the sidebar isn't fully open yet. runbot-237540
This update fixes an issue where keyboard navigation within the website builder's image cropping tool was unreliable. Now, users can properly validate or dismiss the cropper using the 'Enter' and 'Escape' keys, significantly improving the user experience and accessibility. This ensures a smoother workflow for website content creation.
Original PR description
Steps to reproduce: - Select an image in the website builder. - Open the cropping tools. - Press Enter. - Try to discard the cropper. Before this commit, focus stayed on the toolbar crop button so `Enter` opened another cropper, `Escape` closed the sidebar, and the cropper buttons were not reachable via keyboard. After this commit, the cropper grabs focus and handles `Enter/Escape` itself so keyboard interactions validate or dismiss the cropper. task-5432043
This update ensures that when a customer's preferred delivery carrier is set (e.g., Azure Interior), it's automatically used when creating a shipping order. Previously, this functionality was broken, requiring manual carrier selection. This change improves the shipping process and reduces potential errors.
Original PR description
Steps to reproduce: - Create a storable product “P1” - Go to partner *Azure Interior*: - Set 'property_delivery_carrier_id' to any carrier - Create a sale order: - Customer: Azure Interior - Add 1 unit of P1 - Click on "Add shipping" Problem: Since this commit: https://github.com/odoo/odoo/pull/203955/files#diff-9f1fd37c63903c4c029f099d485a3f9831446850be55695a4603c05ef298885bL134-L137 the carrier defined on the partner is no longer loaded by default. Solution: Check if the carrier defined on the partner is among the allowed carriers, and if so, set it automatically. opw-5220118
This update corrects a data issue within the Odoo Enterprise system related to Chilean VAT (SII) reporting. Specifically, the necessary information for the 'Alto Hospicio' regional office has been added, ensuring accurate tax calculations and compliance. This ensures the system correctly handles transactions originating from this region.
Original PR description
Oficina Regional Alto Hospicio Comuna Alto Hospicio Región Taracapá Forward-Port-Of: odoo/enterprise#102712
A test related to inventory adjustments was failing intermittently due to a race condition caused by a lingering notification. This commit resolves the issue by automatically closing the notification message after the first adjustment, ensuring accurate test results. This improves the reliability of the inventory management process.
Original PR description
Before this commit, it could happen the test `test_inventory_packaging` fails sometime. It fails while checking the last assert: ```python self.assertEqual(self.product1.qty_available, 15.0) ``` The…
Before this commit, it could happen the test `test_inventory_packaging` fails sometime. It fails while checking the last assert: ```python self.assertEqual(self.product1.qty_available, 15.0) ``` The error message is: `AssertionError: 16.0 != 15.0` In the tour, we do a first inventory adjustment where we set the `proquct1` qty to 16, then we do a second inventory adjustment where we set its qty to 15. Now, the assert sometime fails because in the tour, the last step check the success message is visible: ```javascript trigger: ".o_notification_bar.bg-success", ``` The issue with that is that we already do a first inventory adjstment and its success notification is still visible while processing the second inventory adjustment, creating a race condition. To fix that, we just need to close the first notification message, and to do so, this commit back-ports and uses the step utils' method `checkNotificationMessage` (see [1]) since this method checks a notification message is there and close it. [1]: https://github.com/odoo/enterprise/pull/101495 runbot-build-error: [227692](https://runbot.odoo.com/odoo/runbot.build.error/227692) Forward-Port-Of: odoo/enterprise#104481
This update fixes an issue where order processing within picking batches wasn't functioning correctly. The change ensures that order lines are accurately linked to picking IDs by using the ID field instead of the field itself, resolving a fundamental comparison problem within the Odoo system. This improves the reliability of order fulfillment.
Original PR description
Ordering recordset based on relationnal field should always take the relational field's `.id` instead of the field itself. This is due to the BaseModel `__gt__` override comparing if a set is included into another and not if the `id` is bigger that the other `id`. runbot : 237512 Forward-Port-Of: odoo/enterprise#104561
This update resolves an issue where Odoo couldn't process XML invoices for customer invoices if the 'CustomizationID' tag was missing. The tag is a required element in UBL files, so this fix ensures invoices are correctly imported and processed, preventing import failures.
Original PR description
[FIX] account_edi_ubl_cii: xml import error customization id This error happens when the user tries to import an xml invoice in accounting > customer > invoice and the CustomizationID tag is empty. The cause of this is the CustomizationID tag that exists in the file, but it's empty. This tag is mandatory in a ubl file, so we cannot process the file if it's empty. opw-5238398 Forward-Port-Of: odoo/odoo#236668
This update fixes a bug in the website builder where changing a setting would incorrectly open the 'Edit' tab instead of the 'Theme' tab. The fix reorganizes the code to ensure the correct tab is displayed after a setting change, improving the user experience.
Original PR description
In commit 281ce591d4271a15dc867b439365cb41e9dee0b4, the condition for the `initiaTab` introduced a mistake: the actual value is ignored, and a truthy value is interpreted as `blocks`. This commit fixes the operation order and move the logic to a single place. Steps to reproduce: - Open website builder - Go to "Theme" tab - Change an option that reloads (like "Show header" in last section) - Bug: it goes to "Edit" (aka customize) tab task-5722163
This update corrects a technical issue where the website's payment providers were incorrectly linked to multiple companies, causing errors during testing. The fix ensures that each payment provider is associated with the correct website company, resolving the test failure and improving data consistency.
Original PR description
What is fixed ------------- The test_payment_provider_visibility_with_portal didn't pass due to a multi company issue. In demo data, "Demo" payment provider exists for different companies which led the search method to return every one of them. Trying to assign the shop website id to each of them then raises an error as their company_id are inconsistent. The fix ------------- We now ensure only one provider is selected and its company is the same as the website's company. Runbot error : 237822 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where invalid warehouse locations triggered repeated geolocation requests to OpenStreetMap. Now, when geolocation fails for an invalid address, a default coordinate is set, preventing further unnecessary requests and improving system performance. This ensures smoother location selection for users.
Original PR description
When a warehouse location had no coordinates, a request to geolocate the address was made to OpenStreetMap every time the location selector was open. However, when the address was invalid, the geolocation failed, and no coordinates were set, which caused further geolocation requests being continuously sent. This commit changes the geolocation behavior to set invalid coordinates for the address when the request fails, thus disabling future geolocation attempts for that address. Forward-Port-Of: odoo/odoo#244439
This update fixes an issue where clicking links within the Odoo chat window on mobile devices caused the window to remain open and block the newly opened page. The change automatically folds the chat window after a link click, ensuring users can immediately view the linked content. This enhances usability and prevents frustration for mobile users.
Original PR description
Clicking on an odoo link in the chat window will take the user to the related page in odoo. However, in mobile view, the chat window remains unfolded and covers the entire page, so the user can't see the newly opened page below the chat window unless they fold the chat window. This change fixes this by folding the chat window in mobile view when clicking an odoo link inside the chat window. task-4762503 Forward-Port-Of: odoo/odoo#244383 Forward-Port-Of: odoo/odoo#208440
This update resolves an issue where the l10n_mx_edi module was encountering a 'singleton error' when multiple invoices referenced the same payment method. The fix ensures that the system correctly handles these scenarios, preventing errors and improving data accuracy for Mexican electronic invoicing reports.
Original PR description
- for more then one records having same code it's raising an singleton error at fetching the name - error: ```py File "/home/odoo/src/odoo/odoo/addons/base/models/ir_qweb.py", line 753, in…
- for more then one records having same code it's raising an singleton error at fetching the name
- error:
```py
File "/home/odoo/src/odoo/odoo/addons/base/models/ir_qweb.py", line 753, in _render_iterall
for item in frame.iterator:
File "<6403>", line 6097, in template_l10n_mx_edi_report_invoice_document_6403
File "<6403>", line 6083, in template_l10n_mx_edi_report_invoice_document_6403_content
File "/home/odoo/src/odoo/odoo/addons/base/models/ir_qweb.py", line 616, in __str__
self.html = ''.join(self.irQweb._render_iterall(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/addons/base/models/ir_qweb.py", line 753, in _render_iterall
for item in frame.iterator:
File "<6403>", line 1723, in template_l10n_mx_edi_report_invoice_document_6403_t_call_0
File "/home/odoo/src/enterprise/l10n_mx_edi/models/account_move.py", line 424, in _l10n_mx_edi_get_extra_invoice_report_values
cfdi_infos['payment_way'] = f'{payment_way} - {payment_method.name}'
^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/odoo/orm/fields.py", line 1659, in __get__
record.ensure_one()
File "/home/odoo/src/odoo/odoo/orm/models.py", line 5934, in ensure_one
raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: l10n_mx_edi.payment.method(23, 24)
```
- OPW-5450360
Forward-Port-Of: odoo/enterprise#103460