Thursday, July 17, 2025
18 changes · saas-18.4
Resolved issues and error corrections
This fixes an issue in the HTML editor where selecting text around a linked image could accidentally make the surrounding text part of the same link. Users can now select content near linked images without unintentionally changing links, improving editing reliability.
Original PR description
Reproduction: 1. In Todo, add some text, insert an image right after the text, insert some text after the image 2. add a link to the image, select text around the image (before and after it) 3. after the selection, the selected text is part of the link **Before this Commit:** For non-collapsed selections, the link popover opens when an image is included in the selection. However, the `openLinkTools` method may unintentionally extend the link, causing the link to spread on text outside of the link element. **After this Commit:** Stricter conditions are applied to ensure `openLinkTools` is only called when the non-collapsed selection includes an image, the parent element is a link, and the selection is entirely contained within the parent link element. task-4903904 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#218149
Receipts created with a specified invoice date now keep that date instead of being automatically set to today. This helps ensure accounting records reflect the intended transaction date and avoids manual corrections.
Original PR description
* When invoice_date is set with create method for receipts, the date is not set correctly to invoice_date, but it's wrongly set to today. * Missing dependency 'move_type' to compute method. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#218775
This change prevents sales project screens from breaking when the PDF quote builder app is removed and reinstalled. It makes the quote builder area hide safely when unavailable, improving reliability during app maintenance.
Original PR description
* Steps to reproduce: 1. Install sale_project in a new database 2. Uninstall and reinstall sale_pdf_quote_builder (using test_module_operations) * Traceback: Element '<page name="pdf_quote_builder">' cannot be located in parent view * Issue: sale_project looks for pdf_quote_builder in the view_order_form. That element is introduced by pdf_quote_builder in sale_order_form_inherit_sale_pdf_quote_builder but there is no dependency between the two (sale_pdf_quote_builder is just auto_install on sale_management which is a dependency of sale_project). So if sale_pdf_quote_builder is uninstalled sale_project is not touched, and the view is broken. * Fix: We replace the use of the xpath in the form view of our widget (sale_project) by a context key to hide the pdf quote builder conditionally. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The self-order cart page now correctly displays the custom background image configured for the customer experience. This restores visual consistency across the self-order flow and helps businesses maintain their intended branding.
Original PR description
Before this commit, the custom background image was not displayed on the cart page because an outdated method was used. This commit resolves the issue by applying the correct method. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix updates website editor tests to reduce intermittent failures when closing a popup with the X button. It helps keep automated checks stable, lowering the risk of delayed releases caused by false test crashes.
Original PR description
This is an attempt to fix the "closing s_popup with the X button updates the invisible elements panel" non-deterministic crash. runbot-229683
Public website pages will now load the text translations needed by the HTML editor. This prevents untranslated labels or messages from appearing to visitors or unauthenticated users, improving the experience for multilingual sites.
Original PR description
On the frontend (i.e., a public page accessible to unauthenticated users), only translations of "frontend modules" are fetched. This commit adds html_editor to the list of frontend modules so that its translations are properly loaded on public pages.
This fix improves how Odoo handles message notification details when some values are missing or empty. It helps ensure users receive accurate notification information in Accounting, Discuss, and Mail, including correct message names and scheduling details.
Original PR description
Beware values may be Falsy, in that case we have to fallback on message itself. account: correctly check values or messages values in notification discuss: fix values usage in discuss methods mail: fix values / msg non coherency for scheduledDatetime, should always be Falsy if not given in values or message Task-4845982 Forward-Port-Of: odoo/odoo#219153 Forward-Port-Of: odoo/odoo#219055
Point of Sale data loading now records access errors instead of failing silently. This improves traceability and helps support teams investigate and resolve loading issues faster.
Original PR description
Previously, an access error during PoS data loading would silently fail, leading to unresolved issues and poor traceability. This commit introduces logging for access errors that occur when a model's data is loaded in the PoS. This provides better insight and simplifies investigation of such issues. opw-4801774 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#215251
The website/page builder now displays conditional visibility sub-options more clearly. Related fields are grouped visually as intended, reducing confusion when editors configure options such as campaign or medium targeting.
Original PR description
The sub-options for the conditional visiblity were not displayed properly which could make it hard to understand them. There was gap between inputs that were linked ("visibile for" and "choose a record") and no gap between inputs that were not. The line of the left of the options was also misguiding the user who would associate the inputs to the wrong category (UTM Campaign, UTM Medium, ...).
This commit remove the gaps between the options but make the display more readable by having the line on the left of the sub-categories continuous.Fixed an issue where creating a car or bike with a future driver could incorrectly mark all active vehicles as planned for driver change. This keeps fleet records accurate and prevents misleading change indicators for users managing vehicles.
Original PR description
Issue ----- - create a new car (or a new bike) with a futur_driver_id - So either car_domain or bike_domain remains with the value Empty domain - expression.OR with and empty domain '[]' give True…
Issue
-----
- create a new car (or a new bike) with a futur_driver_id
- So either car_domain or bike_domain remains with the value Empty domain
- expression.OR with and empty domain '[]' give True leaf
(Pdb) expression.OR([car_domain, []])
[(1, '=', 1)]
- the read_group find all active record and set plan to change = True on them
Solution
---------
- default value of car_domain and bike_domain should be expression.FALSY_DOMAIN, so a "domain or False" give just the domain
(Pdb) expression.OR([car_domain, expression.FALSE_DOMAIN]) ['&', ('driver_id', 'in', {25465}), ('vehicle_type', '=', 'car')]
But the group by seems a premature optimisation, two search would make the code much more readable, shorter and not much slower
- following up with https://github.com/odoo/odoo/pull/197812/files since plan_to_change_car and plan_to_change_bike are not related anymore the sudo write of this field is not needed anymore.
_clean_vals_internal_user can be remove
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#213989This update fixes an automated check for the Live Chat reporting pivot view so it opens the report in the expected way for this version. It also makes the test setup and click targets clearer, helping prevent false failures in quality checks without changing user-facing Live Chat behavior.
Original PR description
This commit fixes the `im_livechat_report_pivot_redirect_tour` that fails in 18.3. In later version, the pivot is directly accessed with the tour URL. In this version, the pivot is accessed from the command palette. Command palette steps makes the tour more complex than it should, remove them. The opportunity is taken to clean the test as well: - Do not hardcode live chat channel id in the test setup. - Better selectors to see what line we are clicking on at a glance (selector now includes record name). fixes runbot-229637 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#219264
This change reverts an unnecessary filter related to active employee records. It helps ensure HR data is handled correctly without excluding records that should remain available.
Changing a live chat chatbot step from a question selection to another step type now removes the old answer options when saved. This prevents outdated answers from remaining in the setup and causing confusion for operators or website visitors.
Original PR description
**Current behavior before PR**: When the step type was changed from "question selection" to another type and the step was saved, answers were not cleared. **Desired behavior after PR is merged**: Now, when the step type is changed from "question selection" to any other type and the step is saved, the answers are cleared. **task**-[4510555](https://odoo.com/odoo/all-tasks/4510555) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#219218 Forward-Port-Of: odoo/odoo#195698
This fix updates an automated Knowledge test so it can reliably find the clipboard copy button during validation. It helps prevent false failures in runbot testing, supporting smoother release checks without changing user-facing behavior.
Original PR description
This commit fixes an issue with the embedded clipboard steps in the commands tour. The selector for the problematic steps was too specific as the copy button isn't always the 1st button. runbot-114522 task-4748626 Forward-Port-Of: odoo/enterprise#80845
This fix prevents an error in Knowledge when optional information is missing and treated like a filled-in record. It helps keep Knowledge article interactions stable in edge cases without changing user-facing workflows.
Original PR description
Just be sure when using an argument that can be False instead of a dict. Task-4845982 Forward-Port-Of: odoo/enterprise#90285 Forward-Port-Of: odoo/enterprise#90254
Renaming an employee will no longer fail when the system also tries to update that employee's document folder but the user lacks folder access. This prevents an unrelated document permission issue from blocking routine HR updates.
Original PR description
When an employee is renamed, it tries to rename the folder but if you don't have the rights on the folder, it raises an error and prevent you from renaming. Forward-Port-Of: odoo/enterprise#90269
This update fixes an issue that caused automated payroll accounting tests for Australia to fail after a fiscal year change. It helps keep validation reliable for payroll compliance workflows without changing day-to-day user functionality.
Original PR description
Tests failed on runbot: https://runbot.odoo.com/odoo/runbot.build.error/228503 Forward-Port-Of: odoo/enterprise#89923
Miscellaneous changes
<b>Steps to reproduce :</b> 1) Install the Purchase module 2) Create and confirm a Purchase Order with a product and quantity 3) From the Purchase Order, open the product and archive it <b>Issue:</b> Before archiving the product, the `Purchased` smart button correctly displays the total purchased quantity. However, after archiving the product template, this smart button displays `0.0`, even though purchases exist. Additionally, clicking the button opens a blank purchase order
Original PR description
<b>Steps to reproduce :</b> 1) Install the Purchase module 2) Create and confirm a Purchase Order with a product and quantity 3) From the Purchase Order, open the product and archive it <b>Issue:</b>…
<b>Steps to reproduce :</b> 1) Install the Purchase module 2) Create and confirm a Purchase Order with a product and quantity 3) From the Purchase Order, open the product and archive it <b>Issue:</b> Before archiving the product, the `Purchased` smart button correctly displays the total purchased quantity. However, after archiving the product template, this smart button displays `0.0`, even though purchases exist. Additionally, clicking the button opens a blank purchase order line view instead of showing related records if the product is archived. <b>Cause:-</b> Archiving a product template sets active=False on the template and its variants. The computed field `purchased_product_qty` relies on the variants to calculate the total. Because the variants are inactive post-archival, the compute method sees no records, resulting in a displayed value of 0.0. Similarly, the smart button action uses the active variants in its domain, so it fails to find any related purchase order lines. <b>Solution:</b> The context is now explicitly set with active_test=False when computing the purchased_product_qty and when generating the domain for the smart button action. This ensures that even inactive variants are included in the calculation and the view logic, preserving the correct purchased quantity and showing the relevant purchase lines after archival. opw-4781578 Forward-Port-Of: odoo/odoo#214903 Forward-Port-Of: odoo/odoo#209955