Tuesday, January 13, 2026
18 changes · saas-18.2
Resolved issues and error corrections
Thai tax invoices can now show branch names in the language set on the customer or partner record. This helps businesses issue clearer, localized documents instead of always displaying the branch name in English.
Original PR description
Currently, l10n_th_branch_name is not translatable. Regardless of the language setting, it is printed in English on the tax invoice. This PR addresses that. Task-5438534 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242484
The Sales app now only shows the Update Prices button when a sales order has a relevant pricelist change. This prevents users from seeing an action that cannot be meaningfully used, reducing confusion when creating new sales orders from quotation templates.
Original PR description
**Steps to produce:** - Install the `Sales` module. - Enable `Pricelists` in settings and set the `default quotation template`. - Create a new Sales Order. **Issue:** - The `Update Prices` button is…
**Steps to produce:** - Install the `Sales` module. - Enable `Pricelists` in settings and set the `default quotation template`. - Create a new Sales Order. **Issue:** - The `Update Prices` button is visible even when no pricelist is set on the sales order. **Root cause:** - In the onchange logic (see [1]), show_update_pricelist is set to True based solely on the presence of order lines, without checking whether a pricelist is defined. **Solution**: - Update the condition so that button is shown only when sale order line is present and the current pricelist value is not the previous one. [1]: https://github.com/odoo/odoo/blob/849ec71acbaea0061fd4b13888a486e4aebb6463/addons/sale/models/sale_order.py#L801-L803 Before: <img width="1215" height="466" alt="image" src="https://github.com/user-attachments/assets/f29b1ccf-eec8-4114-b4c9-a8083947ad28" /> After: <img width="1207" height="428" alt="image" src="https://github.com/user-attachments/assets/e358b633-d11b-413d-94c4-3837c430eac4" /> opw-5414897 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241812
This fix makes website editor test tours handle clipboard actions more reliably by keeping the clipboard mock active until the related action has completed. It reduces false test failures and browser permission interruptions, especially with newer Chrome behavior in headless testing.
Original PR description
Reliably mocking Clipboard API calls in tours should be done in two steps: - the step that will actually do the call should do the patching, followed by the actual action. - the cleanup should only be done in the following step to ensure the action's listener has actually finished. This commit applies this principle to avoid the "cleanup" to be executed before the action's listener has actually reached the call to the Clipboard API (because of slower processing, slower network...), which would defeat the mocking purpose (and either get the browser to indefinitely wait for the user's clipboard usage approval or a permission error depending on the browser's default behavior). Note: this was mainly brought to light by the new Chrome 143+ default policy which revoke all permissions in headless mode. Forward-Port-Of: odoo/odoo#243280
This change prevents upgrades from overwriting customized Gift Card and E-Wallet product types in the Loyalty app. It helps avoid stock quantity inconsistencies for businesses that use these items as physical, inventory-tracked products.
Original PR description
The customer changed the service-type products “Gift Card” and “E-Wallet” to storable products and used them in stock. May be they could use as physical gift cards, and physical e-wallets for company. As a result, these products now have on-hand quantities, which creates an issue. After the upgrade, they will be converted back to service-type products, causing an on-hand quantity inconsistency in the test case. To avoid this error, we need to keep these products as storable. TO do that we have to mark them noupdate. This is a customer-specific change, but since we have received many similar requests, we should consider making a generic fix if possible. 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 Forward-Port-Of: odoo/odoo#242383 Forward-Port-Of: odoo/odoo#237517
The point of sale loyalty test now avoids selecting products that require extra configuration, preventing an unhandled popup from interrupting automated validation. This helps keep internal quality checks stable without changing the customer-facing checkout experience.
Original PR description
In certain cases, the product selected in the tour would be a product that require a configuration (having attribute lines), which would lead opening a popup that is not handled in the tour, leading to a failure. When selecting the product we now make sure that we select a product that does not require any configuration. same fix as this one : https://github.com/odoo/odoo/pull/241098 runbot-234734 Forward-Port-Of: odoo/odoo#241652
This fixes an issue where adding a Help tooltip to a field in Odoo Studio could block saving the customized Contacts list view with a validation error. The view validation rules now recognize the tooltip setting, so users can add guidance text without disrupting their workflow.
Original PR description
Steps to reproduce ================== - Install web_studio,contacts - Go to Contacts - Open the list view - Click on a field - Set a "Help tooltip" => Validation Error Invalid view Odoo Studio: res.partner.tree customization Cause of the issue ================== The help attribute is missing from the field definition opw-5379357 Forward-Port-Of: odoo/odoo#240261
The work entries country filter has been fixed so users can search and filter records by country without errors. This improves reliability for HR teams reviewing country-specific work entry data.
Original PR description
Issue: The country_id related field on work entries was not stored, causing domain filters and search on this field to fail and triggering client-side errors. Fix: Use search parameter on field to write function so field can be used safely in search domains and filters. Impact: Country-based filtering now works correctly without triggering module loader errors. Task: 5406904 Forward-Port-Of: odoo/odoo#239573
This fix ensures text from Odoo's new core ORM package is included when translation files are generated. It helps keep system messages translatable and consistent for users working in different languages.
Original PR description
New package odoo.orm was added in PR https://github.com/odoo/odoo/pull/182727 The new package's name must be specified in ``TranslationModuleReader._export_translatable_resources`` to allow the framework to export its code translations. 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
This updates an internal web performance test so its expected database query count matches current behavior. It helps keep automated checks reliable and reduces false alarms during development, with no direct impact on end users.
This update fixes a confusing issue where eTIMS configuration warnings were displayed for companies outside of Kenya. Now, warnings are only shown for Kenyan businesses, ensuring validation remains relevant and avoids unnecessary alerts for other users. This improves the user experience and accuracy of the system.
Original PR description
Before: In multi-company setups, the eTIMS configuration warning was shown even when working in companies that are not based in Kenya. This resulted in confusing and irrelevant warnings for users using other localizations. After: The eTIMS configuration warning is now limited to Kenyan companies only. Non-Kenyan companies are no longer impacted, keeping the validation relevant while preserving the intended eTIMS behavior. task-5462334 Forward-Port-Of: odoo/enterprise#103291
This update fixes an issue where tour scripts were incorrectly attempting to access the clipboard API, leading to potential delays or errors. The change ensures the API call is properly mocked in two steps, preventing premature cleanup and resolving compatibility problems with newer Chrome versions. This improves the reliability of our in-app tours.
Original PR description
Reliably mocking Clipboard API calls in tours should be done in two steps: - the step that will actually do the call should do the patching, followed by the actual action. - the cleanup should only be done in the following step to ensure the action's listener has actually finished. This commit applies this principle to avoid the "cleanup" to be executed before the action's listener has actually reached the call to the Clipboard API (because of slower processing, slower network...), which would defeat the mocking purpose (and either get the browser to indefinitely wait for the user's clipboard usage approval or a permission error depending on the browser's default behavior). Note: this was mainly brought to light by the new Chrome 143+ default policy which revoke all permissions in headless mode. Forward-Port-Of: odoo/enterprise#103971
This update fixes an issue where public users sharing documents didn't automatically update the corresponding request shortcuts with new thumbnails. The problem stemmed from a restriction on public user access, preventing thumbnail propagation. Now, shared document shortcuts will correctly reflect any changes to the document's thumbnail, ensuring a consistent user experience.
Original PR description
Bug === 1. Create a request 2. Create a shortcut to that request 3. Share it to public 4. Public upload => The thumbnail is updated on the document, but not on the request. The reason is that the public user has `user_permission = none`, because he has only access with the token, and so we skip the thumbnail propagation. This has no sense, because if we don't have access on the document, we loose the access on the shortcut (even if we are the owner). Task-5485511 Forward-Port-Of: odoo/enterprise#102888
This update resolves a technical issue causing duplicate entries in the Accounts Coverage Report. The fix ensures the report accurately reflects account data by ignoring identical report lines with the same name and code. This improves the reliability of financial reporting.
Original PR description
Reproduce the bug: -Install Ireland(ie) reports -Enable debug mode -Go to Reporting>Balance Sheet>Accounts Coverage Report -The generated sheet should have false positive duplicates error Fix: Ignore the report lines that has the same name and the same code task: 5373732 Forward-Port-Of: odoo/enterprise#101311
This update resolves an issue where country-based filtering on payslips and payroll runs wasn't functioning properly, leading to errors. The fix ensures accurate country-based searches and filtering, preventing module loading problems and improving data accuracy.
Original PR description
Issue: The country_id related field on payslip and payslip run was not stored, causing domain filters and search on this field to fail and triggering client-side errors. Fix: Use search parameter to write function so field can be used safely in search domains and filters. Impact: Country-based filtering now works correctly without triggering module loader errors. Task: 5406904 Forward-Port-Of: odoo/enterprise#103318
This update resolves an issue where the year field in certain reports was incorrectly formatted with a comma. Removing this comma ensures accurate reporting data and consistent display of year values for tax and payroll calculations. This change improves the reliability of financial reporting.
Original PR description
. Remove the comma on the year filed on the crossponding reports task-5417861 Forward-Port-Of: odoo/enterprise#102143
This update fixes an issue where employee names were being incorrectly formatted in payroll reports. The change ensures that employee first and last names are consistently displayed in the correct order ('FirstName LastName') as required by Swiss regulations. Updated test data and code logic now accurately reflect this requirement.
Original PR description
* Fix _compute_l10n_ch_legal_name method to correctly assign first_name and last_name from employee name (was previously reversed) * Update all SwissDEC test data to use correct "FirstName LastName" format instead of "LastName FirstName" to match the corrected computation logic task-5102851 Forward-Port-Of: odoo/enterprise#95252
This update corrects minor errors in the Danish local financial reports (balance sheet and profit & loss) for 2026. These were unintentional oversights during development and ensure accurate reporting. The changes improve the reliability of financial data for Danish businesses.
Original PR description
In this commit: https://github.com/odoo/enterprise/commit/0d431fe2cc6556a040888ecc5d6a71be4a435447 we introduce a new balance sheet report for 2026 but there was a mistake in the sign of a formula and in the text of a line. Same for the profit and loss, some errors in sign of accounts and naming. The errors don't come from a ticket but more of a logical fix, those errors were probably an oversight during development. no task id Forward-Port-Of: odoo/enterprise#103830
This update resolves an issue where users without specific group permissions would encounter errors when pinning or unpinning embedded actions in the Documents module. Previously, this prevented superuser mode operations (like automated installs) from functioning correctly. Now, the system correctly handles superuser access, ensuring stability and reliability for all users.
Original PR description
Prior to this commit, an AccessError would be raised when pinning or unpinning embedded actions if the current user did not belong to the 'documents.group_documents_user' group. This could cause issues during operations running in superuser mode (e.g., automated actions, installation scripts, or sudo() calls) because the check strictly validated the user's groups without considering the environment's superuser flag. This commit adds a check for `self.env.su` to ensure the AccessError is not raised when the environment is in superuser mode. Task-5380727 Forward-Port-Of: odoo/enterprise#101106