Friday, April 17, 2026
10 changes · 19.0
Resolved issues and error corrections
The Click and Collect store selector now handles pickup locations where the company address is missing a city or street. This prevents shoppers from seeing an error when choosing a pickup store, making checkout more reliable for locations with incomplete address data.
Original PR description
Issue: --- An owl error is raised in select store if the store's company location lacks city or street. Steps to reproduce: 1- Enable Click and Collect. 2- In pickup locations, set a company with an address with empty street or city. 3- Go to the shop. 4- Enable debug mode. 5- Select store. An owl error is raised due to not city and street not being string. opw-6050137 Forward-Port-Of: odoo/odoo#259397 Forward-Port-Of: odoo/odoo#259164
This fix prevents the Danish localization migration from failing when an account has no code. It helps businesses complete upgrades more reliably without manual cleanup of incomplete account data.
Original PR description
From https://github.com/odoo/odoo/pull/256541.
```yml
File "/home/.../odoo/addons/l10n_dk/migrations/1.4/end-migrate.py", line 102, in migrate
if len(account.code) < 6:
TypeError: object of type 'bool' has no len()
```
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#258399
Forward-Port-Of: odoo/odoo#258299This fixes a typo that prevented activity status updates in Mail from being shared between open browser tabs. Users working in multiple tabs should now see consistent activity information without needing to refresh or manually reconcile differences.
Original PR description
Since [1], the activity state, which is supposed to be shared accross tab through a broadcast channel, isn't anymore. This PR fixes the responsible typo. [1]: #161286 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#259507 Forward-Port-Of: odoo/odoo#255785
Portal customers can now change quantities for optional quote items without accidentally resetting the discount already set on those items. This keeps quoted pricing consistent while still allowing normal quantity-based discount rules where they are needed.
Original PR description
Issue: --- Discount compute depends on `product_uom_qty`. On optional lines, this recompute will reset the discount on lines, when portal user updates the quanity. Cause: --- `discount` needs to depend on `product_uom_qty` because discount needs to be computed based on the quantity due to pricelist rules. Fix: --- We can prevent this compute if the quantity update comes from portal. opw-6078083
The CRM lead generation walkthrough now places its extra guidance steps at the end, preventing users from being sent backward in a loop during the tour. This makes onboarding smoother, though the final success message may still appear even if lead generation cannot complete due to unavailable leads or insufficient credits.
Original PR description
The crm_iap_mine module extended the crm tour, by adding steps to introduce the lead generation feature. These steps were inserted in the middle of the tour, which caused the tour to backtrack and loop on itself. Why? For the tour to wait for the next step, we specify the selectors it should look for. In this case, because the modal redirects to the same page (with an updated domain), we cannot specify a selector that would be unique to the new page -> the target is found before the redirect -> after the redirect happens, the tour backtracks to try and recover, causing the loop. Moving the steps to the end of the tour fixes the issue. The disadvantage of this is that no the last step of the tour is not deterministic - it can fail if the user selects a combination of countries and industries which have no valid leads (Antarctica...) or if the user doesn't have enough IAP credits. In this case, the 'Congrats' rainbowman is shown even if the generation failed. Task-5386684
The accounting and tax selection widgets now use the standard search context when users choose "Search More". This avoids manually built filters and should make search results more consistent and reliable without changing the overall workflow.
Original PR description
This commit replaces the use of creating dynamicFilters while doing "Search More" in the account and tax widget. It now simply updates the context to search default name instead of creating a filter domain manually for that. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Clicking View Profile from a partner mention now opens the profile and closes the avatar popover as expected. This removes a small visual annoyance and keeps the messaging interface cleaner for users.
Original PR description
**Current behavior before PR:** Clicking on a partner mention opens the avatar card popover. When the **View Profile** button is clicked, the partner form view opens, but the popover remains visible. This happens because the popover opened via `onClickPartnerMention` uses the popover service directly, instead of the `usePopover` hook, which automatically closes the popover when the component is unmounted. **Desired behavior after PR is merged:** Clicking the **View Profile** button opens the partner form view and closes the avatar card popover. task-[6063906](https://www.odoo.com/odoo/project/1519/tasks/6063906) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where the system incorrectly processed DTE XML files from the fetchmail server when a specific purchase journal wasn't configured. The fix ensures the correct journal ID is used, preventing an error and allowing for proper account move processing. This improves the reliability of importing DTE invoices.
Original PR description
Currently, when receiving a DTE XML fetched by the fetchmail server, if there is no purchase journal with `l10n_latam_use_documents` enabled, an empty recordset (account.journal()) is set in the default context values. This prevents the proper computation of the field and raises an error, since the `journal_id` is mandatory on account moves. Steps to reproduce: - Ensure you have no purchase journal with `l10n_latam_use_documents` enabled - Simulate the reception of a DTE XML via the fetchmail server - Observe the error: "NotNullViolation: null value in column 'journal_id'" opw-5950116 opw-6111041 Forward-Port-Of: odoo/enterprise#112168
This update resolves an issue where database synchronization would fail when a user's access was removed. Now, a database user can successfully synchronize a database without errors, ensuring data consistency even with changes in user permissions. This improves the reliability of our data synchronization process.
Original PR description
The aim of this commit is to allow a db_user to synchronize a database without facing a Traceback. Context: - A new document has been received by a remote db and we try to synchronize it. - The current user access has been removed from the remote db. - The database is unreachable. Before this commit: In all 3 previous cases, an access error would be raised because a db_user can't write on a database. After this commit: The synchronization finish gracefully and the db_user should have lost his access if it was removed from the remote db. task-id: 6046087
This update prevents unnecessary error logging in Odoo when handling attachments created by external systems. The change ensures stability by gracefully handling cases where attachment data is missing, primarily impacting integrations like EDI connectors. This improves the overall reliability of Odoo for these specific workflows.
Original PR description
Return None when datas is empty alongside the existing mimetype check. Avoids unnecessary exception handling leading to logspam for URL type attachments where binary data is unavailable. This issue is only reproducible programmaticaly as the mimetype is not available with url type attachment in Odoo. Thus, it's a problem that only impact third party integrations, EDI connectors or any workflow that creates ir.attachment records directly. opw-6010528