Thursday, July 2, 2026
14 changes · saas-19.2
Resolved issues and error corrections
When Point of Sale fails to create a database transaction, the system now shows the real underlying error instead of a generic message. This makes it much easier for support teams and developers to understand what went wrong and resolve issues faster.
Original PR description
Before this commit the error "Transaction could not be created" was thrown when the transaction could not be created. This commit changes the behavior to throw the actual error that caused the transaction creation to fail, providing more context for debugging. Forward-Port-Of: odoo/odoo#273116
This update makes an automated discussion test more reliable by ensuring the activity counter starts from a clean state before it runs. It prevents leftover background updates from being counted twice, which helps avoid flaky test failures and improves confidence in the results.
Original PR description
The avatar card tour asserts the systray activity counter, which the browser maintains from "mail.activity/updated" bus notifications. The counter is seeded at page load with a snapshot (activityCounter) and a baseline bus id (activity_counter_bus_id), and only notifications newer than that baseline are applied. The activity unlink/create done while preparing the test emit such notifications whose bus.bus rows are only materialized at precommit, so their ids could land after the baseline and be double-counted, leaving the counter wrong. Reset the bus right before the tour so those setup notifications are dropped and the baseline starts clean, and clear only the user's own pre-existing activities so the snapshot counts just this test's activities. https://runbot.odoo.com/odoo/error/237779 Forward-Port-Of: odoo/odoo#273103
The product classification code 10171500, for Organic fertilizers and plant nutrients, is now visible again in the UNSPSC list. This ensures users can select the correct code when setting up product accounting, avoiding missing classification options.
Original PR description
The code 10171500 - Organic fertilizers and plant nutrients wasn't appearing. In the file that has the unspsc product codes this one was set to False. Steps to reproduce: - Activate module product_unspsc. - Go to product > accounting. - Verify that this code is not listed. Ticket [link](https://www.odoo.com/odoo/project.task/4461974) opw-4461974 Forward-Port-Of: odoo/enterprise#121914
This change moves a few test checks to the correct module so builds run consistently in both full and single-app setups. It prevents false failures during validation and helps keep deployment checks reliable.
Original PR description
Oversight of: https://github.com/odoo/enterprise/pull/98569 Some assertions were put in the wrong module, making the builds work in "all apps" mode but fail in "single app" mode. This commit moves assertions where they belong. Task-6353709
This change restores a missing update when a phone call activity is marked as done. It ensures the related message is properly updated afterward, preventing inconsistencies in follow-up activity tracking.
Original PR description
In [1], we removed `action_call_done` for call activity, and to use `action_feedback` to mark a call activity done like other activities. However, we forgot to assign `activity_mail_message_id` for later mail message update. Add this in `action_feedback`. [1]: 70ba1812812596e00509415cedcc8f4bdf6c6e37 COMPR: https://github.com/odoo/odoo/pull/267663
When exporting an invoice to PDF, the VAT/TIN label will now appear in the customer’s chosen language instead of the employee’s language. This makes invoices clearer and more consistent for customers who receive documents in their preferred language.
Original PR description
Issue: While exporting an invoice as PDF, Customer VAT is translated according to user language instead of customer chosen language. Steps to reproduce: - In a Belgian company - Install Greek language, but keep English as user language - Create a Customer and select Greek as their language - Create an invoice - Export as PDF Current behavior: - VAT is displayed in user language Expected behavior: - VAT is displayed in customer language (ΦΠΑ) opw-6264065
This update fixes a potential issue where cron jobs in the accounting module could incorrectly report progress even when errors occurred. Now, progress is only recorded when a job completes successfully or when a specific error is handled. This enhances the reliability and accuracy of accounting processes.
Original PR description
The previous fix commits progress even when an unexpected exception escaped the loop iteration when _autopost_draft_entries. Now progress is only committed on success or when a UserError is explicitly handled. Reference: https://github.com/odoo/odoo/pull/271509 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#273115
This update resolves a bug in the l10n_eg token setup process for IoT devices. A recent change simplified the process by storing the actual token instead of a hash, but this caused validation errors. The fix ensures the system correctly handles both token and hash formats, preventing errors and maintaining a smooth setup experience.
Original PR description
In odoo/odoo#255121, the l10n_eg token flow was simplified to store the token automatically in the IoT config when running the installer, instead of showing a popup requiring the user to save the token manually. However, this broke the flow because previously, a *hash* of the token was being stored in the IoT config, but now the actual token is stored in the config (which allows it to be sent to the DB). The token validation logic was not updated accordingly, so it would try to use the token itself as a hash which would result in an `UnknownHashError`. To fix this, we first check if the provided token matches the stored token exactly. If it doesn't, we assume it is a hash and continue with the old flow as before. Logging statements are added in every failure case to ease debugging in the future. opw-6049363 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#273033
This update resolves an issue preventing POS managers without administrative rights from modifying POS configurations, specifically background images. The fix removes a restriction that blocked edits to images uploaded by other users, ensuring all POS managers have the necessary access to manage their POS settings. This improves usability and operational efficiency.
Original PR description
When editing a POS config, `_ensure_public_attachments` wrote `public=True` on the self-ordering background/home images on every write. These images are Many2many attachments created with a `res_model` but no `res_id`, so the attachment access check denies write to any non-system user who is not their creator.
As a result, a POS manager without Settings/Admin rights could not edit a config whose images were uploaded by another user (e.g. an admin during setup), getting:
AccessError: Sorry, you are not allowed to access this document.
(Operation: write) - Records: ir.attachment(...), User: ...
Steps to reproduce:
1. Enable self-ordering on a POS and select a background image
2. Set self-ordering back to disabled
3. Log in as a POS admin without Admin/Settings rights
4. Try to edit the POS -> error
opw-6331261
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#273299This update prevents minimal rights employees from accidentally entering negative quantities when using the point-of-sale system. Previously, pressing the '-' key could lead to incorrect order totals. This fix ensures data accuracy and prevents potential errors when using the system with restricted user permissions.
Original PR description
Currently minimal rights employee cannot select the "+/-" button to have a negative quantity line. However if they have a keyboard and press the "-" key they can modify the quantity to negative. Steps to reproduce: ------------------- * Modify the shop settings, give some employee minimal rights * Open shop and use the minimal employee as cashier * Add a product to the order * Press the "-" key on the keyboard > The line quantity becomes -1 Why the fix: ------------ The button on the product screen is disabled for the employee with minimal rights https://github.com/odoo/odoo/blob/4a2aa33ded628200935b22c501a5f94c21dffb1f/addons/point_of_sale/static/src/app/screens/product_screen/product_screen.js#L154 We extend that to the input key "-". opw-6248098 Forward-Port-Of: odoo/odoo#267748
A test was failing due to a user account lacking the necessary permissions to access timesheets. This update grants the required group access, ensuring the test now passes and the timesheet functionality remains accessible for the testing user. This resolves a technical issue preventing proper test execution.
Original PR description
A few weeks after this test was introduced, some changes were made to the `get_calendar_events()` function on `account.analytic.line`, which caused this test to fail due to insufficient access rights. The reasoning is because the user we run this test as does not have the "User: own timesheets only" group, so they aren't able to access timesheets at all. Here, we grant this group to the user to prevent this error, as they should be able to access their own timesheets. [runbot-940437](https://runbot.odoo.com/odoo/error/940437) Forward-Port-Of: odoo/enterprise#122545
This update fixes a website accessibility issue where language selector flags lacked alternative text descriptions. This ensures the website is usable by screen readers and search engines, improving inclusivity and SEO. The change adds necessary alt text to the flag images when both inline and flag options are enabled.
Original PR description
Steps to reproduce: 1. Enable the language selector in the website header. 2. Enable the "Inline" and "Flag" options. 3. Inspect the flag images rendered in the inline variant. Issue: Flag images in the list items have an empty `alt=""` attribute in "Flag only" mode, where the flag is the sole visual indicator of the language, making the selector inaccessible to screen readers and providing no context for search crawlers. Expected behavior: Inline + Flag should have a descriptive ALT tag since there is no adjacent text or code to identify the language, the flag is not decorative. opw-6246464 Forward-Port-Of: odoo/odoo#273025 Forward-Port-Of: odoo/odoo#271362
This update fixes an issue where the cookie bar buttons were too close together, creating a cluttered appearance. The change utilizes Bootstrap spacing classes to ensure consistent and professional spacing across different layouts. This improves the user experience and visual consistency of the website.
Original PR description
[FIX] website: preserve cookie bar button spacing Steps to reproduce: - Enable the cookies bar in the website settings. - Go to the website and enter edit mode. - Open the cookies bar from the invisible elements panel. - Select the "Discrete" layout in the options. => The buttons and link are rendered without the expected spacing. Before this commit, the client-side cookie bar template relied on whitespace-only text nodes to separate inline elements. Those nodes are not kept in the same way when the template is rendered by Owl, so selecting the layout could make adjacent buttons touch each other. After this commit, the spacing is carried by explicit Bootstrap spacing classes, so the rendered layout no longer depends on text nodes preserved by the XML formatting. task-6251151 Forward-Port-Of: odoo/odoo#272641 Forward-Port-Of: odoo/odoo#267488
This update resolves a technical issue where Chrome browsers were unable to properly display audio previews within the Documents app. The fix blocks audio file previews by default, aligning with our strategy to avoid using Odoo Enterprise as a media streaming platform. This ensures consistent functionality across browsers.
Original PR description
**Steps to reproduce:** - Install Documents app - Upload a sound file (mp3 for example, but the behavior is the same for other formats) - Share the document and copy the link - Log out - Paste the…
**Steps to reproduce:**
- Install Documents app
- Upload a sound file (mp3 for example, but the
behavior is the same for other formats)
- Share the document and copy the link
- Log out
- Paste the link
- Click on preview button
- Media is working fine on Firefox
- Media won't read on Chrome
```
Loading media from '' violates the following Content Security Policy directive: "default-src 'none'".
Note that 'media-src' was not explicitly set, so 'default-src' is used as a fallback.
The action has been blocked.
```
**Issue:**
Since [1] default CSP Headers are too strict for Chrome default media rendering, which breaks the file preview (and force user download).
This only impacts Chrome as they seem to render generate `<video><source>` elements to render the file which triggers a secondary request and fails due to the CSP constraint.
**Fix:**
Could re-apply the header fix of 17.4 (see [2]), but it seems better to block the preview of audio files as well by default (to match how we manage videos).
(Note: we don't want to be used as a media streaming platform)
[1] (set csp to none by default) https://github.com/odoo/odoo/commit/64beb80205dffe4b432c8b5813a3271b073fa85e
[2] (similar issue which was not fixed in 18.0+) https://github.com/odoo/enterprise/commit/a7af78eeb2b9763045a5bda8714172f5e7402df8
[3] (mp4 preview removed) https://github.com/odoo/enterprise/commit/ea88cf7c6d5f077b60fb59347659507fded0e2fe
opw-6235043
Forward-Port-Of: odoo/enterprise#119644