Thursday, June 4, 2026
25 changes · saas-19.2
New functionality added to Odoo
This update adds test data related to a new payment method, 'pos_iot_six,' to the Odoo configuration tests. This ensures that the system can properly handle this payment option during testing and development, supporting future integration and validation.
Original PR description
Adding pos iot six payment method to the test data of the pos_config. Related to Odoo pr https://github.com/odoo/odoo/pull/262184 Forward-Port-Of: odoo/enterprise#118531
Resolved issues and error corrections
This update optimizes the styling of Odoo's Kanban dropdowns, specifically addressing slow CSS performance. By simplifying the CSS selectors used, the system now loads faster and responds more efficiently, leading to a smoother user experience.
Original PR description
This commit removes several expensive CSS selectors. After reviewing all usages, we found that `.o_kanban_card_manage_settings` always contains `div` elements with `col-*` classes as direct children. We also found that the border behavior depends on the available screen width rather than the bottom sheet itself: it is only needed when the elements are displayed side by side and should be removed when they are stacked vertically. An ´!important´ declaration was also added to compensate for the reduced selector specificity. 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#267979
Features or functions removed from Odoo
This update simplifies the Point of Sale module by removing a QR code printing option that was only relevant for a specific self-ordering restaurant setup. This change streamlines the configuration and improves the overall user experience. The removal also eliminated a redundant link within the Point of Sale module description.
Original PR description
In this commit, --- - pos_self_order: removed the QR code print option from the pos config list view, as printing QR codes is only relevant for restaurants with self-order enabled and is already available in the configuration settings. - point_of_sale: removed the anchor tag from the Point of Sale module description, since the module header already provides the link. task-6222663 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#265472
This update ensures that the subject displayed in the chatter reflects any changes made to the message subject within the composer. Previously, updates to the composer's subject weren't automatically reflected in the chatter, leading to inconsistencies. This improvement provides a more accurate and up-to-date view of message subjects.
Original PR description
If the user updates the subject in the composer, the suggested subject in the chatter should reflect the latest message. task-5944635
This update fixes an inconsistency in the HTML editor's toolbar. Previously, the toolbar remained active when selecting text within protected blocks like Code or Table of Contents, but now it's correctly disabled in these scenarios, ensuring a more reliable and intuitive user experience. This improves the editor's stability and usability.
Original PR description
Problem: The toolbar is disabled when selecting text inside Code or Table of Content blocks, but it remains active when selecting the block itself through the “⋮⋮” handle, leading to inconsistent behavior. Cause: `_updateToolbar` does not check whether `targetedNodes` contains only protected nodes. In such cases, the toolbar should be closed. Solution: When `targetedNodes` contains only protected nodes, prevent the toolbar from opening. Steps to reproduce: - Insert a Table of Content block. - Click on the “⋮⋮” handle while hovering the block. - Observe that the toolbar opens, while it should remain closed. task-6250028 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#266661
This update resolves an issue where changes to attribute translations within a dialog were unexpectedly saved, even after the dialog was closed. The fix ensures that modifications are only applied when the user explicitly confirms their changes, improving data consistency and preventing unintended updates. This improves the user experience and data integrity.
Original PR description
[FIX] website: stop saving an attribute translation on close Steps to see the issue: - Drop a form on your page - Add a placeholder on one of the inputs - Save your changes, and switch to another language - Start translating - Click on the input with the placeholder - Make some changes to the placeholder, but don't click "Ok" - Close the dialog => The changes are still applied. task-5190459 Forward-Port-Of: odoo/odoo#264052
This update corrects a technical problem affecting how the `pdp_verification_display_state` field is calculated. The change replaces an outdated method with a more reliable approach, ensuring proper functionality within the partner merge wizard. This resolves a previous error that impacted the system's ability to correctly process partner data.
Original PR description
The computed field `pdp_verification_display_state` uses the `company_dependent` field. This causes an issue with the partner merge wizard in saas-18.2+. This commit fixes it by using the `depends_context` instead. runbot.build.error-939449 Forward-Port-Of: odoo/odoo#267481
This update resolves an issue preventing proper demo mode operation by bypassing unnecessary authentication steps and removing forced two-factor authentication. Additionally, the system now correctly handles document sending for both Peppol Users and PDPs, ensuring accurate data processing during demonstrations. This improves the reliability and usability of the French PDP demo environment.
Original PR description
And don't force the totp in demo mode Also, fix the mocking of the send_documents when sending documents with a Peppol User and not a PDP one. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267893 Forward-Port-Of: odoo/odoo#267461
This update addresses a potential issue with how Odoo updates its modules. By implementing a small timeout and rollback mechanism, the system now handles module updates more reliably, preventing disruptions and ensuring translations for user error messages are correctly applied. This enhances the overall stability and user experience.
Original PR description
Add a small lock timeout when updating modules just like it is done in master (19.3). Also add rollback so that translation of user errors work (in case we need to fetch the language from the database). runbot-234930 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267698
This update resolves an issue preventing refunds in the Colombian Point of Sale (PoS) system. The fix corrects outdated code referencing an older function name, ensuring refunds can now be processed without errors. This improves the functionality for Colombian businesses using the Odoo Enterprise system.
Original PR description
**Steps to reproduce:** - Setup a columbian company, DIAN should be in demo mode - Go to the PoS and make a sale with a columbian customer - Refund it - A traceback appears **Why the fix:** Some legacy code was left untouched when we changed the old **get_partner()** to the new **getPartner()** so we got a traceback as this function does not exist anymore. We also change the **set_partner(partner)** to **setPartner(partner)** as it was also forgotten. opw-6231856 Forward-Port-Of: odoo/enterprise#118478 Forward-Port-Of: odoo/enterprise#118054
This update resolves an issue where message authors were incorrectly identified, leading to potential inconsistencies in communication records. The change ensures that the correct 'author_id' or 'author_guest_id' is used based on the message's model, improving the accuracy of message attribution.
Original PR description
A message's author is identified by one of two fields depending on its model: `author_id` (for partners) or `author_guest_id` (for guests). Previously in `changeThread`, the value of `thread.effectiveSelf` (which can be either a Partner or a Guest) was provided as the `author_id` regardless of its actual model. This commit explicitly uses `store.self_partner` as the `author_id` and `store.self_guest` as the `author_guest_id` to resolve the occasional mismatch. Forward-Port-Of: odoo/odoo#267828 Forward-Port-Of: odoo/odoo#267464
This update ensures that errors related to intrastat codes are only triggered when creating product templates with dynamic attributes and no variants. Previously, the validation was incorrectly raised, causing issues when setting intrastat codes. This change improves data accuracy and prevents unnecessary errors during product template creation.
Original PR description
Problem: When saving an intrastat code on a product template with no variants, an error should be raised because intrastat codes are stored on the product variants. However, the error gets raised when creating a product template with intrastat code set because the variants get created after the product template is created, so it doesn't find any variant although the default variant will be created right after saving the product template. Solution: The constraint should only be triggered when saving the intrastat code on a product template with dynamic attributes and no variants. Since dynamic attributes are the only ones that can lead to a product template with no variants, we can check if the product template has dynamic attributes and no variants before raising the error. Forward-Port-Of: odoo/enterprise#118986
This update adds a new keyboard shortcut (Alt+Shift+R) to quickly open the timesheet systray. This streamlines the process for employees to record their time, reducing the need to navigate through menus. This change improves user efficiency and ease of use.
Original PR description
This commit adds an `ALT + SHIFT + R` shortcut to open the timesheet systray. task-6197777
This pull request addresses a bug that was only appearing in the community version of Odoo's stock module. The issue stemmed from an inconsistent link to package information, which has now been corrected. This ensures accurate stock barcode generation across all Odoo environments.
Original PR description
Reproducible only in community **Observation** outermost_result_package_id is a enterprise variable in stock_barcode: https://github.com/odoo/enterprise/blob/c5bbcaeed513817fdda1f3f42f4c9b2440264174/stock_barcode/models/stock_move_line.py#L27 It's computed from result_package_id.outermost_package_id: https://github.com/odoo/enterprise/blob/c5bbcaeed513817fdda1f3f42f4c9b2440264174/stock_barcode/models/stock_move_line.py#L29-L33 That variable is available in stock community : https://github.com/odoo/odoo/blob/616e82d7b3a53b1facf481e783baed3e99393d3c/addons/stock/models/stock_package.py#L48 runbot-241085 Forward-Port-Of: odoo/odoo#267653
This update modifies how global discounts are handled in our invoices to align with UBL (Universal Business Language) standards. Previously, discounts were represented as negative invoice lines, which is now changed to 'allowances'. This ensures our invoices are correctly formatted for international trade and compliance.
Original PR description
Export global discounts as Allowances instead of negative invoice lines to comply with UBL specifications. task-5900496 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267435 Forward-Port-Of: odoo/odoo#261029
This update fixes an issue where the project template dropdown in demo mode displayed poorly, with cramped spacing and text touching the edges of the container. The fix removes a styling element that caused this, ensuring a cleaner and more readable experience for all users, regardless of their user role.
Original PR description
Steps to reproduce: == - Login as demo/onboarding user - Open Project app - Click on New - Observe the template dropdown list Issue: == The template dropdown items are rendered with collapsed row height and poor vertical spacing in demo mode, making the list hard to read. Cause: == The template dropdown items utilized the `pe-0` utility class, which removed the padding at the end of the element. For non-admin users this caused the template name to touch the right edge of the container. Fix: == Removed the `pe-0` from the `DropdownItem` to restore standard right-side padding, and ensure consistent and readable row heights for both Admin and Demo users. task-5338191 Forward-Port-Of: odoo/odoo#242983
This update disables the '@' mention feature for visitors in live chat conversations. Previously, visitors could trigger irrelevant suggestions, creating unnecessary noise. This change ensures a cleaner and more focused chat experience for all users.
Original PR description
**Description of the issue this PR addresses:** ---------------------------------------------- Visitors in livechat can trigger partner mention suggestions by typing the @ delimiter in the composer.…
**Description of the issue this PR addresses:** ---------------------------------------------- Visitors in livechat can trigger partner mention suggestions by typing the @ delimiter in the composer. However, visitors can only mention themselves or odoobot, which does not provide meaningful functionality in the context of a livechat conversation. **Current behavior before PR:** ---------------------------------------------- - Visitors can type @ in the livechat composer and trigger partner mention suggestions. - The suggestions only include the visitor themselves or odoobot. **Desired behavior after PR is merged:** ---------------------------------------------- - The @ delimiter is disabled for visitors in livechat threads. - Partner mention suggestions are no longer triggered for visitors. - Internal users (operators) can still use @ mentions normally. Task-5119068 ---------------------------------------------- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267788 Forward-Port-Of: odoo/odoo#253551
This update fixes an issue where a recurring activity was being unnecessarily recreated after being marked as 'done'. By adding a check to ensure the activity hasn't already been completed, we prevent redundant tasks and improve the efficiency of our fleet management system. This ensures accurate scheduling and reduces potential errors.
Original PR description
When a next activity is set to done, the record is archived. So once the next activity set on the contract is set to done, the cron will re-create it the next day as it won't see it. So we add active_test=False, to be sure that one has not already been set to done --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update optimizes the website's performance by replacing a complex selector with a simpler one. This change reduces the time it takes for the website to recalculate styles, particularly when users are interacting with large tables or resizing the window. Ultimately, this results in a faster and more responsive user experience.
Original PR description
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#268106 Forward-Port-Of: odoo/odoo#267969
This update fixes a visual issue where Polish and Vietnamese characters displayed inconsistently on Android Edge browsers. The fix ensures proper font rendering by providing additional font subsets to browsers that don't support Unicode ranges, maintaining consistent character appearance across different devices and browsers.
Original PR description
Scenario: - paste "język việt" (polish + vietnamese) in a page - change website font to not be "Noto Sans", for example: Raleway - open the page on Edge Browser on Android Result: polish and…
Scenario: - paste "język việt" (polish + vietnamese) in a page - change website font to not be "Noto Sans", for example: Raleway - open the page on Edge Browser on Android Result: polish and vietnamese characters are using different font and are visually different than latin character. Cause: google fonts is serving for nearly all browsers font configuration with woff2 files and unicode-range so the user only loads the part of the font that will be used on the website. For Edge browser on android, based on the user-agent chrome is serving only a TTF file without unicode-range because it is thinking that unicode-range is not supported. These files only contain basic latin characters, so extended latin and vietnamese characters are being rendered with fallback "Odoo Unicode Support Noto" that has a different weight and style for the same weight. Fix: For the browser not supporting unicode-range (desktop edge before 2020, Edge on android, …), in addition to latin we ask google fonts to provide([1]) latin-extended and vietnamese subsets in TTF/WOFF files if available. For other subset (hebrew, arabic, cyrillic, …) the intent is to fallback on "Odoo Unicode Support Noto" since they should usually not be mixed with latin characters. Note: Edge on android in reality support unicode range, so this would be solved if google fonts just served the unicode range font configuration for that user-agent. [1]: https://developers.google.com/fonts/docs/getting_started#specifying_script_subsets opw-4642242 Forward-Port-Of: odoo/odoo#267798
This update fixes a translation issue in Odoo's Argentine localization module (l10n_ar) that caused confusion regarding fiscal position names. The translations now accurately reflect the purpose of each position, eliminating duplicates and ensuring domestic positions are correctly labeled.
Original PR description
### Description of the issue/feature this PR addresses: Fix fiscal position spanish translation to match with its real purpose. ### Current behavior before PR: * We have a fiscal position name that does not match with its purpose: Represent the local operations inside argentina (country: Argentina) but the name is " Purchases / Sales abroad" * Two fiscal positions have the same translation value and this is confusing ### Desired behavior after PR is merged: * we do not have duplicated fiscal position anymore * Domestic fiscal position is taged with the correct name --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: https://github.com/odoo/odoo/pull/248462
The visual appearance of the portal chatter message delete dialog has been corrected. This change addressed a styling issue caused by a recent update and ensures the dialog displays correctly for all users. It includes necessary styles for message content formatting, improving the user experience.
Original PR description
The delete message dialog in the portal chatter has been visually broken since #247708, which replaced the generic `MessageConfirmDialog` (size="xl") with a dedicated `MessageDeleteDialog` (size="md"). The md size triggers the `o_modal_design_minimal` design path in `dialog.js`, whose styles are defined in `dialog.scss`. Additionally, message content may contain html_editor-formatted elements (blockquote in thi scase) whose styles come from `html_editor.assets_editor`. Neither was included in `portal.assets_chatter_style`. This change adds those missing styles to the portal chatter shadow DOM. **Before:** <img width="637" height="290" alt="image" src="https://github.com/user-attachments/assets/2dae0e72-383d-4277-94e7-ef23a01ea53b" /> **After:** <img width="637" height="317" alt="image" src="https://github.com/user-attachments/assets/ca36bc51-3cc9-43c6-bcf2-30c03498353c" />
This update fixes a translation error in the Argentine fiscal position settings, ensuring the names accurately reflect their purpose. Previously, a confusing duplication of fiscal positions existed, now all domestic positions are correctly labeled, streamlining accounting processes for Argentina.
Original PR description
### Description of the issue/feature this PR addresses: Fix fiscal position spanish translation to match with its real purpose. ### Current behavior before PR: * We have a fiscal position name that does not match with its purpose: Represent the local operations inside argentina (country: Argentina) but the name is " Purchases / Sales abroad" * Two fiscal positions have the same translation value and this is confusing ### Desired behavior after PR is merged: * we do not have duplicated fiscal position anymore * Domestic fiscal position is taged with the correct name --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248462
This update resolves a technical issue within the Odoo POS Restaurant module that could cause errors during screen rendering. The change prevents users from duplicating floor screens on the backend, eliminating a potential system crash and ensuring stable POS operations. This improves the reliability of the restaurant ordering system.
Original PR description
Duplicating a floor screen causes a duplicated key exception when rendering the POS. To avoid this issue, duplication on the backend is not allowed. task-6246748 Forward-Port-Of: odoo/odoo#266734
This update resolves an issue where the Odoo upgrade process would fail if it attempted to change the status of accounts with partially reconciled transactions. The fix ensures the account's reconciliation flag remains unchanged during the upgrade, preventing errors and maintaining data integrity.
Original PR description
<h2>Context</h2> Clients can have some existing accounts with `reconcilable` flag set as True. Some of these accounts also have partially reconcilated transactions. In Odoo 19.0, it is not authorized…
<h2>Context</h2>
Clients can have some existing accounts with `reconcilable` flag set as True. Some of these accounts also have partially reconcilated transactions. In Odoo 19.0, it is not authorized to toggle the `reconcilable` flag from True to False on accounts that contain partially reconcilated transactions.
When the migration script `l10n_pl/migrations/2.1/end-migrate.py` is executed, it tries to update the CoA by adding/updating accounts, using the accounts in the file `l10n_pl/data/template/account.account-pl.csv`. This CSV file contains a reconcilable flag per account.
<h2>Problem</h2>
Before this modification, the upgrade script was trying to update the CoA using `_load_data`, which tries to overwrite the reconcilation flag of accounts in the client DB. A traceback occurs during the upgrade if an account's `reconcilable` flag is toggled from True to False during the update of the CoA, while it still contains partially reconciled transactions.
<details>
<summary>Traceback</summary>
```
File "/home/odoo/src/odoo/19.0/addons/l10n_pl/migrations/2.1/end-migrate.py", line 8, in migrate
Template._load_data({'account.account': Template._get_account_account('pl')})
File "/tmp/tmpm8z3nlb0/migrations/account/0.0.0/pre-ensure-deferred-accounts.py", line 36, in _load_data
return super()._load_data(data, *args, **kwargs)
File "/home/odoo/src/odoo/19.0/addons/account/models/chart_template.py", line 697, in _load_data
created_records[model] = self.with_context(lang='en_US').env[model]._load_records(all_records_vals)
File "/home/odoo/src/odoo/19.0/odoo/orm/models.py", line 5171, in _load_records
data['record']._load_records_write(data['values'])
File "/home/odoo/src/odoo/19.0/addons/account/models/account_account.py", line 1122, in _load_records_write
super()._load_records_write(values)
File "/home/odoo/src/odoo/19.0/odoo/orm/models.py", line 5092, in _load_records_write
self.write(values)
File "/home/odoo/src/odoo/19.0/addons/account/models/account_account.py", line 1045, in write
self.filtered(lambda r: r.reconcile)._toggle_reconcile_to_false()
File "/home/odoo/src/odoo/19.0/addons/account/models/account_account.py", line 975, in _toggle_reconcile_to_false
raise UserError(_('You cannot switch an account to prevent the reconciliation '
odoo.exceptions.UserError: You cannot switch an account to prevent the reconciliation if some partial reconciliations are still pending.
```
</details>
<h2>Solution</h2>
I have sanitized the dict `data` using the `_pre_reload_data` method, so that the traceback does not appear anymore when upgrading.
<h3>Notes</h3>
`_pre_reload_data` method sanitizes the dict `data` by avoiding the creation of duplicated accounts, the creation of duplicated fields for a given record, the toggling of the `reconcilable` flag, etcs.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#257006