Tuesday, May 5, 2026
31 changes · saas-19.3
Enhancements to existing features
This update adds the delivery address to the TicketScreen in Point of Sale, making it easier for staff to quickly see and use customer addresses when scheduling deliveries. This enhancement streamlines the delivery process and improves order accuracy by providing all necessary address information directly on the screen.
Original PR description
In this commit: =============== - Added address details on the TicketScreen when the order preset identification type is `address`. - This helps to easily see the delivery address while scheduling the delivery. Task-5974595 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#257302 Forward-Port-Of: odoo/odoo#251389
Resolved issues and error corrections
This update resolves an error that prevented users from submitting surveys with background images. The issue stemmed from outdated code referencing a removed component. The fix ensures background images load correctly during the survey submission process, improving the user experience.
Original PR description
### Issue before this commit: When the submit event is triggered, the system attempts to preload the background image for the next screen using SurveyPreloadImageMixin. However, this mixin is no longer used, which results in the following error: SurveyPreloadImageMixin is undefined ### Steps to Reproduce: 1. Install the Survey module 2. Create a new survey 3. Add a section with a background image 4. Add at least one question 5. Click on Test 6. Start the survey and submit the first page ### Cause of the Issue: The code still references SurveyPreloadImageMixin._preloadBackground, even though SurveyPreloadImageMixin has been removed/refactored. This leads to an undefined reference during execution. Refactored-commit: https://github.com/odoo/odoo/commit/50c03d966241da263a63ec7948e293a0475e9ba9 ### With This Commit: To ensure it works correctly, preloadBackground() is imported and called inside nextScreen(). opw-6165822 Forward-Port-Of: odoo/odoo#262424
This update fixes a visual issue where quick actions were incorrectly displayed on tracking messages. By standardizing the styling of tracking messages, quick actions are now positioned correctly, ensuring a consistent and user-friendly experience for viewing email notifications.
Original PR description
Previously, quick actions were incorrectly positioned on tracking messages, as they were not treated the same way as notification messages in terms of bubble styling. This PR ensures that tracking messages are handled like notification messages by excluding them from bubble coloring, resulting in the correct placement of quick actions. task-6176330 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A small typo in the quality module caused newly created quality alert records to be incorrectly grouped under 'None'. This fix replaces the incorrect '&' character with the correct '|' character, ensuring records are assigned to the appropriate stages.
Original PR description
Issue: ------- While adapting the 'Domain' in the PR https://github.com/odoo/enterprise/commit/07b34a2e927347ca5c839ec632808adb02703e1f there occurred a typo where '|' got replaced with the '&' and causing the records getting grouped in 'None' when creating. Solution: ------------ To replace '&' with '|' to get the records grouped under the correct stage. Steps to reproduce: ----------------------- 1. In v19.0, in quality module try to create a quality alert record. 2. Just like that the newly created record will be under 'None'. Reference Image: <img width="1105" height="407" alt="image" src="https://github.com/user-attachments/assets/4c9c33be-ec06-4f06-8245-54dbe4473bc0" /> OPW - [6074016](https://www.odoo.com/odoo/project/70/tasks/6074016) Forward-Port-Of: odoo/enterprise#113108
This update fixes an issue where changing a task's project would reset its state (done or canceled) unnecessarily. Now, the state remains consistent when a task is marked as done or canceled, ensuring accurate tracking of task completion and preventing redundant state updates. This improves the reliability of project management workflows.
Original PR description
Before this commit, when the project of a task is changed, even if the state of that task is done or cancelled, the state is reset (except if the task is blocked by another one). This behavior is not expected for a task done/cancelled, we should not reconsider that task since it has been done/cancelled and so there is no reason to re-consider it once the project changed. This commit makes sure the state of the task is not reset when the project changed only if the state is a closed state or Waiting state. task-5361864 Forward-Port-Of: odoo/odoo#261648 Forward-Port-Of: odoo/odoo#252752
This update fixes an issue where duplicating a user also duplicated their associated tasks, leading to confusion and potential data inconsistencies. The change ensures that tasks are correctly assigned to new users, preventing shared task assignments and simplifying user management. This improves data accuracy and user experience.
Original PR description
Duplicating a user also duplicates all their task assignments because task_ids on res.users is missing copy=False. The new user ends up sharing the same tasks in project_task_user_rel, so removing a task from either user affects both. Forward-Port-Of: odoo/enterprise#114270 Forward-Port-Of: odoo/enterprise#114028
This update resolves an issue where very long image filenames in Odoo caused errors, specifically 502 errors when uploading images through the Sales Order editor. The fix truncates filenames to 255 characters to ensure compatibility with server limits, improving image upload stability for users.
Original PR description
## Problem: When generating a filename for a related studio image field, if the `name` is excessively long, the response header may exceed nginx's buffer size of 4kb, causing the request to fail. ## Solution: We will truncate the assigned filename for binary streams to the first 255 characters of whatever the assigned name would have been. ## Steps to reproduce (Runbot 18): 1. Open Studio editor on a Sales Order 2. Edit List View on Sale Order Lines 3. + Related Field, Product > Image, image widget 4. Make the description very long (close to 4000 characters) 5. Note the image will not load for that SOL, and the network tab shows a 502 error opw-5360952 Forward-Port-Of: odoo/odoo#258498
This update ensures that 'Final Consumer' records are correctly identified as individuals, not companies, within the CO Edition module. The change resolves an issue where the system incorrectly classified these records, and includes updated tests to verify anonymous document creation. This ensures accurate reporting and compliance.
Original PR description
After changes on is_company field to be computed, Final Consumer was being created as a company. Although this is wrong, tests were not asserting correctly on how anonymous documents should be created. This commit fixes this by forcing the value to False and correcting the tests. task-6149751 Forward-Port-Of: odoo/enterprise#115560
This update resolves visual issues with Saudi document layouts by removing redundant information and dynamically updating key details like VAT numbers. It ensures all Saudi companies use the correct paper format, improving the accuracy and presentation of invoices and reports.
Original PR description
This commit introduces several improvements and fixes to the Saudi document layouts and company configurations: - Removes the redundant VAT number from document layout header to resolve visual overlapping with other elements. - Extracts `l10n_sa_edi_additional_identification_scheme` and `l10n_sa_edi_additional_identification_number` from static company details and injects them dynamically into document layouts so they always remain up-to-date when printed. - Updates the configuration logic to ensure the default Saudi paper format is applied to all SA companies. task-6040091 Forward-Port-Of: odoo/odoo#255463
This update corrects a technical issue where translations for the Dutch returns module (l10n_nl_returns) were missing. Adding the necessary translation keys ensures accurate and complete functionality for our Dutch-speaking users. This resolves a potential issue with localized reporting and processes.
Original PR description
This [commit](a6a8d121bbf2044793df5211c5bdb18859a62152) introduced a new module in a stable version (19.0) without the required key in the `.weblate.json` file. This commit aims at fixing that to ensure translations are handled correctly. Forward-Port-Of: odoo/enterprise#115753
A recent problem with the departure form being inaccessible when accessed through payslips has been resolved. This change ensures the correct form view is used, preventing errors and improving the user experience for employees submitting departure requests.
Original PR description
The departure form could fail to load when accessed via payslip due to a leaked form_view_ref in the context. Explicitly set the correct form view in the action to avoid this issue. task-6167494 Forward-Port-Of: odoo/odoo#261701
This update corrects a previous issue where all employees could see each other's overtime hours. The root cause was a setting that granted excessive access to overtime calculations. The fix removes this access and includes new tests to ensure this issue doesn't reoccur.
Original PR description
- Step to reproduce: everyone can see everyones overtimes. - Cause: total_overtime compute method is using `compute_sudo=True`. - Solution: removing compute_sudo and adding tests Task: 6125021 Forward-Port-Of: odoo/odoo#262206 Forward-Port-Of: odoo/odoo#261496
This update fixes an issue where the 'Share' button on the Dashboard was not correctly copying content to the clipboard. The problem stemmed from a change in a previous update (m3) that removed design rules. This commit manually re-added Bootstrap classes to restore the button's functionality and appearance, ensuring users can seamlessly share data.
Original PR description
Because of m3, some rules have been deleted. This commit restores them by manually adding Bootstrap classes. Steps to reproduce: - Go to the Dashboard - Click on the "Share" button 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 update resolves a visual design problem in the Documents and Spreadsheet modules, specifically related to copy-paste functionality. The issue was caused by a previous system change (m3) that removed essential styling rules. This commit manually re-added the necessary Bootstrap classes to restore the original design and ensure proper functionality.
Original PR description
…h BS Because of m3, some rules have been deleted. This commit restores them by manually adding Bootstrap classes. Steps to reproduce: Here is a way to trigger a traceback - Open the browser console - Type: "odoo.__WOWL_DEBUG__.root.notification.add(new Set())"
This update resolves an issue where customers couldn't be found using their email addresses. The system was incorrectly searching for emails in the phone field. This change ensures accurate customer retrieval based on email, improving data accuracy and customer identification.
Original PR description
The email-based lookup was mistakenly checking the phone field (`phone = email`) instead of the email field. Because of this, customers could not be correctly found using their email address. This change fixes the domain to properly match on the email field. Forward-Port-Of: odoo/odoo#260567
This update simplifies the process for Dutch companies to manage their digipoort certificates within the accounting settings. Previously, users had to navigate to a separate section to create a certificate before setting it in the main accounting view. Now, users can directly create and edit digipoort certificates within the accounting settings, improving the user experience.
Original PR description
Description of the issue this commit addresses: In the Accounting settings on a Dutch company, the setting for the selection of the digipoort certificate only lets you choose amongst existing certificates so if you haven't created one yet, you need to go to the dedicated certificates menu to create one and then come back to the digipoort certificate setting to set it. This is poor UX. --- Desired behavior after this commit is merged: This is improved by letting the user Create and Edit inside the digipoort certificate setting directly. --- task-6065566 Forward-Port-Of: odoo/enterprise#115755 Forward-Port-Of: odoo/enterprise#114307
This update automatically sets the first available printer as the default for Point of Sale transactions. Previously, users had to manually select a printer, and this change simplifies the process. Additionally, restrictions have been added to prevent accidental changes to printer settings during quick creation, ensuring data consistency.
Original PR description
Following this commit: ===== - Set first printer as default printer from the list configured. - Updated the help tooltip. - Added placeholder "None" to field product_categories_ids. - Restrict quick create for `receipt_printer_ids` and `default_receipt_printer_id` for pos.config and res.config.settings views task-5494313 Forward-Port-Of: odoo/odoo#246448
When configuring a "Visible only if" condition that depends on a radio/checkbox field with the "Add other" option enabled, the form options panel crashed with: TypeError: Cannot read properties of null (reading 'textContent') Steps to reproduce: ==================== 1. Go to /contactus and edit the form 2. Add a Radio Buttons field and enable "Add other" 3. Add another field and set "Visible only if" to depend on the radio field => TypeError, form options panel broken Cause:
Original PR description
When configuring a "Visible only if" condition that depends on a radio/checkbox field with the "Add other" option enabled, the form options panel crashed with: TypeError: Cannot read properties of…
When configuring a "Visible only if" condition that depends on a radio/checkbox field with the "Add other" option enabled, the form options panel crashed with:
TypeError: Cannot read properties of null (reading 'textContent')
Steps to reproduce:
====================
1. Go to /contactus and edit the form
2. Add a Radio Buttons field and enable "Add other"
3. Add another field and set "Visible only if" to depend on the radio field
=> TypeError, form options panel broken
Cause:
=======
The "Add other" feature inserts an additional `.o_other_input` text input next to the radio inputs (the free-text input shown when "Other" is selected). When loading the available condition values, the code iterated over every `.s_website_form_input` in the dependency container and looked up `label[for="${el.id}"]`. The `.o_other_input` has no `id` and no associated label, so `querySelector(...)` returned `null` and accessing `.textContent` threw.
The crash also prevented editing any field's label on the form until the page was reloaded.
Solution:
==========
Excluding `.o_other_input` from the iteration is correct: the "Other" choice is already represented in the list by its dedicated radio (with its own label), so the free-text payload input must not be treated as a separate condition value.
An alternative would have been to narrow the selector to `.s_website_form_input.form-check-input` (the class carried by radio and checkbox inputs), which also excludes the `.o_other_input`. The chosen approach (`:not(.o_other_input)`) is more explicit about the intent: skip the "Add other" payload input, regardless of any class additions to the radio/checkbox inputs in the future.
=> Visibility dependency loads correctly, only the radio choices
("Other" included via its radio label) are listed
opw-6170367
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#262046This update resolves a technical issue preventing the automated tour test from running correctly within the HR Contract Salary module. The fix addressed a missing configuration setting, ensuring the tour test now passes as expected. This ensures the tour test functionality is reliable for new users.
Original PR description
tour test is failing without employee_type task-6186664
This update fixes an issue where closed Helpdesk tickets were sending out emails with the incorrect ticket ID instead of the reference number. This ensures that customers receive consistent and accurate information about their resolved tickets, improving communication and transparency. The change updates a key email template to use the correct ticket reference.
Original PR description
Steps to reproduce: ------------------------ 1. Install the Helpdesk. 2. Go to Settings → Technical → Sequences and set the next number to 100. 3. Create a ticket and send a message using the…
Steps to reproduce: ------------------------ 1. Install the Helpdesk. 2. Go to Settings → Technical → Sequences and set the next number to 100. 3. Create a ticket and send a message using the "Helpdesk: Ticket Received" mail template; Observe that the correct reference (100) is used. (Open the full composer to use "Load template") 4. Now send a message using the "Helpdesk: Ticket Closed" mail template and Observe that it displays the database ID (e.g., 1) instead of the reference. Cause: ------ `new_ticket_request_email_template` uses the ticket reference(`object.ticket_ref`) correctly. https://github.com/odoo/enterprise/blob/d39e291ba89ad018ba6f5f9591d280a834822f27/helpdesk/data/mail_template_data.xml#L18-L19 However, the `solved_ticket_request_email_template` uses the database ID (`object.id`) instead of the actual ticket reference (`object.ticket_ref`), leading to inconsistent references in customer communications. related commit: 3ed5273 Solution: --------- Update `solved_ticket_request_email_template` to use `object.ticket_ref` instead of `object.id` opw-6087466 Forward-Port-Of: odoo/enterprise#115946 Forward-Port-Of: odoo/enterprise#113932
This update fixes an issue where users connecting to multiple Shopee shops through a Shopee Account were experiencing errors due to repeated authorization code usage. Now, the system correctly reuses the initial authorization code to retrieve access tokens for all associated shops, streamlining the onboarding process for users managing multiple stores.
Original PR description
When authorizing a Shopee shop, a user has the choice to either connect to a Shopee Shop, or connect to a Shopee Account and grant access to multiple shops of the account. In the later scenario, the authorization code returned by Shopee OAuth should be used once to fetch the access tokens, and the tokens should be copied to all shops authorized by the account. However, when the shop already existed, the access token was fetched again, raising an error because the authorization code had already been used. opw-6166585 Forward-Port-Of: odoo/enterprise#116000
This update simplifies the permissions needed to upload Unsplash images, reducing complexity and potential security risks. The change focuses on granting access only to set the attachment URL, rather than broader permissions, resulting in a cleaner and more secure system. This improves the overall stability and efficiency of the Unsplash integration.
Original PR description
Only grant `sudo` to set the attachment `url` rather than applying sudo on the whole `.create` dict The purpose of the previous `_can_bypass_rights_on_media_dialog` was to allow employees uploading unsplash images to be able to create an attachment with an `url` while being a `type='binary'`, for the images to be able to be served with the URL `/unsplash/...`. Just applying `sudo` at the right needed spot rather than on the whole `create` requires less code to achieve the same goal. Forward-Port-Of: odoo/odoo#262394 Forward-Port-Of: odoo/odoo#261056
A recent update to the softphone's initial display has caused a problem with the setup tour. The tour now incorrectly assumes users will see the keypad tab instead of the recent calls tab. This fix ensures the tour functions correctly when the softphone is first opened, providing a smoother user experience.
Original PR description
Commit [1] made the softphone to show recent tab when there are missed calls. Commit [2] changed the demo data to contain 1 missed call. As a result, now when you open the softphone for the first time, you will see recent tab instead of the keypad tab before. This breaks the country_selector_tour which assumes you will see keypad tab when open softphone. [1]: c995b7df3fc6ff541dc65d8b28661ab03f4a8c08 [2]: f16faa029220ca7152289180c4de78783bab03be
This update resolves an issue impacting the accuracy of tracking messages within Odoo's reporting and expense modules, specifically for Russian localization (l10n_in_reports) and document/knowledge management. The changes streamline tracking data handling and improve search reliability, ensuring more reliable reporting and expense tracking.
Original PR description
- l10n_in_reports: fix tracking message search reliability
Replace tracking_value_ids based search with body and message_type.
- hr_expense: tracking copy cleanup
delegate tracking_value_ids handling to mail tracking module.
task-5260614This update resolves an issue where the 'Amazon move' status was incorrectly set to 'False' due to a missing link between stock moves and pickings. The code now uses the 'reference' field, ensuring accurate tracking of Amazon orders within the inventory system. This prevents reporting errors related to Amazon shipments.
Original PR description
Issue ----- Commit d0c1e78 removed the `name` field of `stock.move`. Instead, we now use the `reference`field, which is computed in `_compute_reference` https://github.com/odoo/odoo/blob/2ec714b19e2c56bff965ab32f7e6a4485df2d247/addons/stock/models/stock_move.py#L357-L369 The problem is that there is no picking linked to the move, so `move.reference` is set to `False`. This means that, after we go through the override in `sale_amazon`, we end up with `Amazon move: False` https://github.com/odoo/enterprise/blob/596d8c1216b33c1f73feb8f60eef1b69a2164579/sale_amazon/models/stock_move.py#L10-L14 ----- Ticket: opw-5969357 Forward-Port-Of: odoo/enterprise#114345
This update fixes a bug where discounts weren't applied to vendor bills with products listed at a price of $0.00, even when charges and allowances were present. Previously, the system only calculated discounts based on the product's price. This change ensures that discounts are correctly applied in these scenarios, aligning Odoo totals with the vendor's invoice data. A new test has been added to prevent future issues.
Original PR description
Allowances for Product with price as 0.00 aren't applied Step to reproduce: - import vendor bill from an XML having a product: - price: 0.00 - charge: any positive amount - allowance: any positive amount Current behavior: - allowance isn't apply resulting in a difference between the XML total and Odoo total Cause of the issue: Before this commit the discount was applied as a percent of price only. Having a price as 0 prevent doing so. opw-5499525 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#247938
This update fixes a bug that prevented users from seeing key options within the 'Alert' block in the email marketing editor. The change ensures that options like background color and border are now available, streamlining the process of creating effective email campaigns. It also simplifies the alert option by removing redundant size options.
Original PR description
### Steps to reproduce 1. Open Email Marketing 2. Open/Create a Mailing 3. In the editor, insert an `Alert` block. --------> Some options won't be visible. ### Technical The [commit] restructured the…
### Steps to reproduce 1. Open Email Marketing 2. Open/Create a Mailing 3. In the editor, insert an `Alert` block. --------> Some options won't be visible. ### Technical The [commit] restructured the `Alert` snippet, therefore, for the builder to identify the mass mailing's alert block, we need to adapt the selector of the option to `.s_mail_alert`. After this commit, the following options will become visible (which were invisible before the commit): - Background Color - Border Option Note: 1. mass_mailing's `Alert` option now correctly uses the mass mailing's option template. Which included different size options, but those are now already added by `size_option_plugin`. Therefore this commit also removes those redudant size options from the alert option. [commit]: https://github.com/odoo/odoo/commit/b6e51609807bdb771f305ba289aafe3e2b9b26b6 Task-5999942 **The commit removing the image transform from the previous PR is no longer necessary here and has been removed in this PR.** Forward-Port-Of: odoo/odoo#262361 Forward-Port-Of: odoo/odoo#260923
This update resolves an issue where incorrect pivot IDs were used in purchase and vendor dashboards. The fix ensures accurate data representation within these reports, improving the reliability of key business insights related to purchasing and vendor management. This change was a necessary correction to maintain data integrity.
Original PR description
This commits fixes the pivot id in some formulas. Task: 5875749 Forward-Port-Of: odoo/enterprise#114559
This update resolves a technical issue preventing proper tracking of expenses within the Stripe integration for the Enterprise module. The fix addresses a dependency conflict related to how tracking values were handled, ensuring accurate expense tracking and reporting. This improves the reliability of expense data.
Original PR description
tracking_value_ids are used in _transfer_messages_to_card but since the seperation of tracking values from mail, it's failing. task-6186968
This update resolves an issue where unexpected data in spreadsheet URLs caused server warnings. By using URL fragments instead, the spreadsheet link is now more stable and reliable, preventing potential disruptions to users accessing the shared spreadsheets. This change ensures a smoother user experience.
Original PR description
We currently rely on a query parameter to sync the active sheet id to the public spreadsheet url but hitting a public controller with unexpected query parameters raises a warning in the server logs, which is not great. Url fragments, on the other hand, are never transfered to the server. Task-6148443 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a test failure related to message attachments in the Odoo platform. The issue occurred when the Documents app was not installed, preventing proper testing. This fix ensures consistent test results across all Odoo builds.
Original PR description
Since https://github.com/odoo/odoo/commit/7f422e1de045790c503b55224a799e89f8d63e09, test_channel_message_attachments test breaks in any builds that does not have documents app installed. This commit fixes this issue [Runbot-242809](https://runbot.odoo.com/odoo/error/242809) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr