Tuesday, May 12, 2026
12 changes · master
Enhancements to existing features
This update adds a dedicated Hong Kong accounting entry for tax withheld from non-employees. It helps businesses record these withheld tax amounts more clearly and consistently in their accounts.
Original PR description
task-[5050335](https://www.odoo.com/odoo/my-tasks/5050335) odoo/upgrade#10186 odoo/enterprise#108609 odoo/odoo#261453 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Live chat conversations that were taken over by another analyst can now be hidden from the Discuss sidebar, even if the original user is no longer part of the conversation. This prevents outdated chats from staying stuck in personal messages and keeps the workspace cleaner for support teams.
Original PR description
When parsing the channel in Discuss, a live chat could remain stuck in personal messages `locallyPinned` if another analyst took over the conversation before you joined it. This commit allows hiding such live chats even when the user is not a member of the conversation anymore. task-6009867 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update changes how translated text is handled across several Odoo apps, using the active user environment to choose the right language more consistently. It reduces the risk of incorrect or missing translations in edge cases, especially in sales, website, delivery, loyalty, product, and payment features.
Original PR description
*: payment_(*), delivery, website_sale_collect, loyalty, product, sale(_*),product_matrix, website_sale(_*) - Replace imports of `_` with calls to `self.env._()`. - Since…
Odoo now handles shared selection option lists more safely by copying them when fields are created and supporting tuple-based options. This reduces hard-to-reproduce configuration issues when modules reuse the same option definitions but are not all installed.
Original PR description
Passing list can be error prone since some globally defined selection are sometimes reused in different modules, altering the initial one and causing issues if the database does not have the other module installed. This gives very hard to reproduce bugs. This commit makes a copy of the list when instantiating the field to avoid such issue, and also support more stable and lighter tuples to slowly discourage the usage of lists for selections. This is done by casting the list in tuple on initialization, wish should return the a copy of the list, or the given tuple if it is already a tuple.
Adds a safeguard test to ensure sales order lines created from quotation templates keep the full line description, including the first line. This helps prevent a previous issue from returning, where important description text could disappear when preparing a sales order.
Original PR description
Issue: --- When using quotation template, the first line of description is always removed. Steps to reproduce: 1- Create a quotation template and add a description to the line. 2- Create a SO from quotation template. As you see the first line of description is removed in SO. Cause: --- This regression is introduced after aba778538c2032a2924f99258c5c75e463296d21 which was done under the assumption that the description always starts with product name. This breaking commit is reverted by: a702a4989fc53ccc43f57213e0db3e62e7b69e8f However it's better to have a test in order to prevent this issue being introduced in the future. opw-6178360 Forward-Port-Of: odoo/odoo#262563
Developers can now run EDI tests in an external mode that checks generated XML files with Odoo's remote validator. This helps catch format and compliance issues earlier, improving confidence in electronic invoicing and document exchange changes before release.
Original PR description
There is a file validator running on the IAP server which validates different types of XML files using XSD and Schematron files. This commits allows for developers writing edi testcases to have their XML files validated by the file validator by running their tests in EXTERNAL_MODE. task-5955497 Forward-Port-Of: odoo/odoo#254991
Adds weekend work entry types for Egypt, Saudi Arabia, and the United Arab Emirates so businesses can use calendars that cover the full week. This helps payroll and HR scheduling better reflect regional working patterns where weekends may be treated differently.
Original PR description
- add weekend work entry types for eg/sa/ae to be used in full week calendars task-id: 5155770 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The messaging area now uses a newer browser-supported approach for handling background upload and communication tasks. This keeps the mail and discussion features aligned with current platform standards and helps reduce future maintenance risk without changing day-to-day user workflows.
Original PR description
Enterprise: https://github.com/odoo/enterprise/pull/114601 [Task-5262203](https://www.odoo.com/odoo/1519/tasks/5262203)
This update removes the Odoo Studio promotion icon from the systray on smaller screens to optimize space and improve the user experience. This change aligns with how the icon is already hidden when Studio isn't usable on those devices, ensuring a cleaner and more functional interface.
Original PR description
Avoid displaying the Odoo Studio promotion icon in the systray on small screens because there isn't much space in the systray. We decided to hide the promote-Studio systray icon on small screens, the same way we hide it when Studio is installed because it's unusable on small-screen devices. task-5079952
This update changes the visual icon for the Field Service section within the Odoo portal. This improves the user experience by providing a more recognizable and consistent representation of this key functionality. The change is a minor aesthetic update.
Original PR description
The icon for portal's Field Service section has been changed task-6009545
This update streamlines the management of salary rules within the Odoo Enterprise Belgian payroll module. The changes consolidate salary data files, simplifying updates and reducing potential errors. This improvement ensures greater accuracy and efficiency in calculating employee salaries.
Original PR description
follow up of task-6036647
This update enhances Odoo's translation capabilities by standardizing the use of `self.env._()` for string translations, addressing potential issues and aligning with best practices. This change ensures more reliable and consistent translations across various modules, improving the overall user experience.
Original PR description
*: payment_sepa_direct_debit, sale_(stock_)renting, sale_(amazon,lazada,shopee),website_sale_(stock_)renting - Replace imports of `_` with calls to `self.env._()`. - Since…
*: payment_sepa_direct_debit, sale_(stock_)renting, sale_(amazon,lazada,shopee),website_sale_(stock_)renting - Replace imports of `_` with calls to `self.env._()`. - Since https://github.com/odoo/odoo/pull/174844, it is supported to translate Python strings through the environment using `self.env._()` instead of the bare `_()` function. - Using bare `_` has become bad practice as it causes confusion with the Python convention of `_` as a throwaway variable, and fails in edge cases such as lambdas and generators where frame-based language detection does not work correctly. - Therefore, within our scope, all occurrences of `_()` are replaced with `self.env._()` (or the relevant environment reference such as `request.env._()`) wherever possible. - Module-level constants that require lazy evaluation are updated to use `LazyTranslate(__name__)` in place of the old `_lt` import. SEE ALSO: - Community PR:https://github.com/odoo/odoo/pull/262235 task-6139904
*: payment_(*), delivery, website_sale_collect, loyalty, product, sale(_*),product_matrix, website_sale(_*) - Replace imports of `_` with calls to `self.env._()`. - Since https://github.com/odoo/odoo/pull/174844, it is supported to translate Python strings through the environment using `self.env._()` instead of the bare `_()` function. - Using bare `_` has become bad practice as it causes confusion with the Python convention of `_` as a throwaway variable, and fails in edge cases such as lambdas and generators where frame-based language detection does not work correctly. - Therefore, within our scope, all occurrences of `_()` are replaced with `self.env._()` (or the relevant environment reference such as `request.env._()`) wherever possible. - Module-level constants that require lazy evaluation are updated to use `LazyTranslate(__name__)` in place of the old `_lt` import. SEE ALSO: - Enterprise PR:https://github.com/odoo/enterprise/pull/115804 task-6139904 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr