Daily updates from Odoo
Wednesday, June 25, 2025
29 changes · saas-18.4
Resolved issues and error corrections
Alternative purchase requests now keep their connection to the related sales order when products use the make-to-stock/order route. This prevents purchasing documents from losing sales context, helping teams trace procurement back to customer demand.
Original PR description
*: purchase_requisition, purchase_requisition_stock This commit fixes a single app test error because of this PR: https://github.com/odoo/odoo/pull/210812 The PR keeps the linkage between the alternative RFQs and SO when the product is in MTSO route.
This fixes a crash that occurred when editors tried to show hidden website elements while translating a multilingual page. It helps website teams manage translated pages more reliably, especially when working with popup content.
Original PR description
Before this commit it would crash when you clicked on the visibility button in the invisible elements section while translating a website. To reproduce the issue: 1. Create a multilingual website 2. Drop a popup snippet 3. Switch to a secondary language, click edit and select "translate" 4. Click on the eye in the invisible elements panel below => We have an error. This commit follows [the html_builder refactoring]. [the html_builder refactoring]: odoo/odoo@9fe45e2b7ddb
Saving changes in the website menu editor now preserves any page edits already made in the website editor. This prevents users from accidentally losing their work when adjusting navigation menus during website updates.
Original PR description
This plugin fixes a bug where making changes on the editor, opening the menu editor and clicking save would cause the changes to be discarded. Steps to reproduce: - Open editor - Make any change - Click on any navbar element (like Home) to open the navbar popover - Click on the edit menu button in the popover - A modal will open, click save - All changes have been discarded After the fix the changes will be saved when clicking save in the menu editor modal
This fix makes the red delete button in website builder lists respond when clicked directly. It removes a small usability issue that forced users to click beside the icon to delete list entries.
Original PR description
Steps to reproduce: - In website builder - In an option with a builder list (I got one in a form with a field of type "Guest") - Add some entries - Click exactly on the delete button (the red minus) - Bug: It does not work (user must click outside of the icon to delete) The bug was introduced during the initial refactor of website builder Website refactor: 9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 task-4367641
This fixes a crash that could occur when users clicked cells in spreadsheet dashboard pivot tables using text filters. The spreadsheet now correctly reads text filter values after an internal format change, improving dashboard reliability.
Original PR description
Since 31a443fc06b38d129e7da0fd0c11304d08ac8480, the text filter value is now an array of strings instead of a single string. This commit updates the getters used to retrieve the filter value from the pivot formula to handle this change correctly. Steps to reproduce: 1. Open the dashboard "Pipeline" 2. Click on a cell in the "Top cities" column 3. Boom Task: 4894663 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 fixes an error that could occur when users applied multiple grouping levels in views with expanded groups enabled. It helps keep grouped reports and lists usable instead of showing a crash.
Original PR description
Since 26c37c9c070107f8bd753cb8a6d8343384fdd7bf, when performing nested Group
By on a view with expand = True, a traceback was raised when applying 2 or more groups.
```
File "/home/odoo/Documents/odoo_projects/odoo/addons/web/models/models.py", line 447, in web_read_group
self._add_groupby_values(groupby_read_specification, groupby, groups)
File "/home/odoo/Documents/odoo_projects/odoo/addons/web/models/models.py", line 480, in _add_groupby_values
id_label[0] for group in current_groups if (id_label := group[groupby_spec])
~~~~~^^^^^^^^^^^^^^
TypeError: string indices must be integers, not 'str'
```
This was because we expected 'group' to be a dict, but it was a string.
This commit change the 'group' creation, by adding the right dict in it.
no-taskThis fix stops website builder option fields from being overwritten by older background updates while a user is still typing. It helps prevent accidental loss of recent input and makes editing website settings more reliable.
Original PR description
[FIX] html_builder, website: prevent update input in preview
Here is the flow that this commit fixes:
- The user types something ("A") as input and clicks somewhere else to
commit its change.
- The custom action linked to the input in asynchronous and it takes
time to finish.
- The user types something else ("B") and stays on the same input (no
update of the input state so no update of the UI).
- The custom action of "A" finishes and updates the state of the input.
-> "A" is displayed in the option input and "B" is lost. If the user
continues to type, it will not be the wanted input.
Related to task-4367641The website translation mode no longer loads an editing shortcut tool that is unnecessary in that context. This prevents confusing or irrelevant controls from appearing while users translate website content.
Original PR description
This commit removes the `powerbox` plugin from the website in translation mode. The `powerbox` plugin was added after the refactoring in master, but it is not needed in translation mode as it does not serve a purpose there. Issue: 
Product variant previews on the website now appear in the same order as the matching product combination, making the shopping experience more consistent. Preview options are also disabled when variants are not created upfront or are created dynamically, preventing confusing settings from being shown.
Original PR description
Follow up of d930c3d424fb75149072774b847a6b13d277b771: 1. Make sure that displayed variants match the order of the first matching combination on /product page. 2. Disable the preview_variants and the is_thumbnail_visible fields when variant creation is 'no_variant' or 'dynamic'. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Product names are no longer repeated in stock move descriptions when they are already shown elsewhere on the picking form. This makes warehouse transfer information easier to read and avoids duplicate text for users handling stock and dropshipping operations.
Original PR description
This commit makes sure that product name is not shown in the move description if exists at all. The new description widget applied in odoo/odoo#177390 looks for product's `display_name` to hide it. This commit makes `display_name` the fallback value for the description instead of `name` so that it's properly hidden in the picking form. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes the Argentina online sales test suite run correctly when the module is tested on its own. It removes a hidden dependency on another website sales test setup, reducing false test failures and improving release reliability.
Original PR description
## Before this commit: Running `l10n_ar_website_sale` tests in isolation (e.g., single module install with `--test-enable`) failed due to `access rights`. The test class relied on inherited setup from `website_sale's` test common, which implicitly granted sales-related access to the test user. This caused `AccessError` when attempting to create `sales orders`. ## After this commit: The test class no longer inherits from `WebsiteSaleCommon`, avoiding unintended dependencies and access rights assumptions. The tests now run successfully when the module is installed and tested on its own. > Error Log - https://runbot.odoo.com/odoo/runbot.build.error/227642 > Commit Causing Issue - https://github.com/odoo/odoo/commit/e331bcf1cb62d4610fb8d9bbca90e925a676fa38 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a timing issue where older, slower data requests could overwrite newer results after a user sorted a list. List views now keep the most recent user action visible, reducing confusion and preventing outdated information from reappearing.
Original PR description
- Open a view list; - The cached data are shown; - The RPC (web_search_read) to recover the latests data is very slow. - The user sort the list and this RPC will return immediatly; - The list will be updated with the latests sorted data. - The first RPC, which was very slow, returns (with a non sorted data). Before this commit, the list will be updated with the retuned RPC. This is an issue because the user has already performed another action (like asking to sort the list). The last returned RPC should be ignored and not appllied. Now, the relational model will only update the data if no other load is performed. task-id 4896533
Fixes an issue in the website builder where applying a highlight to text near the footer could create unnecessary blank space and allow scrolling beyond the page bottom. This keeps edited pages visually tidy and prevents confusing extra scroll area for website editors.
Original PR description
Steps to reproduce: - Open website builder - Select text at the bottom of the footer - Set some highlight - Bug: - Can scroll down below the bottom of the footer - There is some blank space below the list of highlights task-4367641
The domain selector once again offers the "in" filter operator broadly, while the separate tree editor will move toward a simpler operator set later. This preserves familiar filtering options for users and avoids prematurely limiting advanced filter building.
Original PR description
This commit partially reverts the commit https://github.com/odoo/odoo/commit/cf944e460cdb7ff371a56479e2fed89930680061. The tree editor will be developed in another direction where less operators are available (see task 4894524).
This fix makes week numbers appear in bold in the date picker, matching the intended visual style. It improves readability and consistency for users selecting dates by week.
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/215343 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
Website builder color pickers now refresh when theme colors or palettes are changed, so users see the latest branding colors in the editor. This prevents outdated color options from appearing and makes theme customization more reliable.
Original PR description
*: web, website
Before the refactoring to html_builder, to replicate the `--o-ccX-...`
variables available within the iframe, the website wysiwyg used CSS
custom properties (prefixed with `--we-cp-`) set on the main document.
This was lost during the refactoring, causing the "Theme" tab of the
builder colorpickers never to be updated after modifying the theme
colors.
This commit reapplies those variables, prefixing them with `--hb-cp-`
(for "html_builder copy").The date picker now shows week numbers by default when selecting a date range, matching the behavior used in other date selection modes. This removes a small inconsistency and makes calendar-based scheduling clearer when dates are added or changed dynamically.
Original PR description
Before this commit, if no value for ´showWeekNumbers´ was set, week numbers were not shown in range mode, whereas in other modes they were displayed. This behavior was inconsistent, especially when a start or end date could be added dynamically. It was likely an aesthetic decision for cases where two calendars were displayed side by side before [1]. ´showWeekNumbers´ is now set to ´true´ by default no matter the case. [1]: https://github.com/odoo/odoo/pull/214383
This fix prevents the website builder from crashing when a disabled image-related snippet is opened in the editing sidebar. It restores a missing component definition so business users can continue editing pages without interruption in this edge case.
This fix prevents the website editor from crashing when users select text and use the AI toolbar. It ensures the editor reads page record details from the correct part of the page, improving reliability for content editing.
Original PR description
__Current behavior before commit:__ `getRecordInfo` tries to get the record info from the closest element of the selection. However the info may rather be in one of its ancestor. This can lead to a crash when using the AI toolbar button after selecting some text. __Description of the fix:__ Add a `predicate` argument in the `closestElement` call in order to make sure that `editableEl` has the record info. Website refactor: https://github.com/odoo/odoo/pull/187419 task-4367641
Several spreadsheet dashboards have been refreshed to the latest dashboard format. This helps ensure reporting views for sales, invoicing, events, expenses, timesheets, live chat, point of sale, restaurants, and warehouse metrics stay current and work consistently.
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
This fix helps the editor recognize matching formatting even when class or style details are listed in a different order. It prevents unnecessary duplicate markup when adjacent highlighted text is merged, keeping website content cleaner without changing the visual result.
Original PR description
The `areSimilarElements` is used by `mergeAdjacentInline` function to merge similar node and having a clean DOM. In website, highlights use this function but highlights node can have two similar node but with different style order. This commit make `areSimilarElements` compare class and style attributes without considering order.
This update fixes how image and background shape choices appear in the website builder, so users can see the correct previews instead of repeated or oversized shapes. It also restores expected selector styling, tab behavior, scrolling, and translated labels, making the design tools easier and clearer to use.
Original PR description
### [FIX] website, html_builder: fix image shapes selector Since [1], the builder shape selector wasn't displayed properly: - Each shape took too much space (especially in width) - All the shapes…
### [FIX] website, html_builder: fix image shapes selector Since [1], the builder shape selector wasn't displayed properly: - Each shape took too much space (especially in width) - All the shapes were loaded with the visuals of the first one (diamond) While the 1st issue was just due to the CSS not being updated, the 2nd one is tied to how SVG works: the shapes use a filter referenced by an id. That id is identical for all shapes: this isn't a problem as long as each SVG is confined in its own file, but once they are all loaded on the same HTML document, the reference points to the 1st match in all cases: the diamond shape. To solve this, this commit partially reverts commit [1] through an additional prop `svgCheck` on the html_builder `Img` component. Setting it to false bypasses the svg check and loads a simple `<img>` element instead of forming a SVG element. [1]: http://github.com/odoo/odoo/commit/3cc5ff6e96493f2b068090f880987def3787895e ### [FIX] website: fix background shapes selector Since [2], the shapes in the builder's background shapes selector were not displayed properly: they all took the whole space available in the select button, instead of being applied specific CSS rules for each shape. This is simply fixed by bringing back the specific shape class in the `ShapeSelector` template. ### [FIX] html_builder, website: design pager builder select Since [2], the design of the shape select (both the image shapes and the background shapes) is broken. Before a proper redesign, this commit resets the styles to something similar to what it looked before the refactoring. It also reapplies the active style on the pager tabs, as well as the scroll behavior. [2]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 ### [FIX] website: translate shape selector labels task-4367641
The website builder date and time picker now handles empty, cleared, and invalid values more reliably. This prevents confusing display errors such as “NaN” in countdown snippets and keeps the editor preview aligned with the selected date and time.
Original PR description
This commit addresses several regressions that were introduced during the website refactor [1]. The primary goal is to restore and improve the functionality of the `BuilderDateTimePicker`. The…
This commit addresses several regressions that were introduced during the website refactor [1]. The primary goal is to restore and improve the functionality of the `BuilderDateTimePicker`. The following issues have been resolved (to reproduce: drop an `s_countdown` snippet on the page, use `Due Date` option): - Empty input fields now correctly default to the current date and time - Clicking the "Clear" button now resets the input to the current date and time (previously, it only emptied the input) - Invalid date or time inputs now revert to the last valid input (to reproduce: choose a valid date, then type `INVALID` in the input field) - `NaN` is no longer displayed on the snippet while the user is typing (previously, `NaN` appeared on the snippet for invalid or empty inputs, even in preview) Additionally, the `default` props have been removed as the component now consistently defaults to the current time. The input field is now synchronized with the `DateTimePicker` to provide a more seamless user experience (the field displays the same date while using the `DateTimePicker` in preview). [1]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 Related to task-4367641
The website theme editor now correctly saves the System Fonts option when selected. This prevents invalid theme settings and helps users apply their intended typography without manual fixes.
Original PR description
When [1] introduced `html_builder`, the font family picker was re-created in Owl.
The new implementation did not make the difference between the font family used as style to display the font example inside the dropdown, and the font family value actually being set inside the SCSS.
When picking "System Fonts", this led to entries in the `user_values.scss` looking like this:
```scss
'font': var(--o-system-fonts),
```
instead of this:
```scss
'font': 'SYSTEM_FONTS',
```
This commit introduces a distinction between both values to solve this issue.
[1]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2
task-4367641Website forms can again use record-based fields when setting conditional visibility rules. This prevents previously working form behavior from breaking after a refactor and keeps website form configuration reliable.
Original PR description
This commit fixes the test_form_conditional_visibility_record_field tour. During the refactoring, the logic to handle record fields in conditional visibility was unintentionally removed. This functionality was originally introduced in commit [1]. This commit reintroduces the missing logic to ensure record fields are correctly handled in conditional visibility conditions. [1]: https://github.com/odoo/odoo/commit/24a7112d7b85d045ffb0629f7feb6e5556e809a1
Several spreadsheet dashboards have been updated so their date filters work correctly after a recent platform change. This restores reliable dashboard views across accounting, CRM, helpdesk, payroll, recruitment, marketing, manufacturing, and purchasing areas.
This fix makes automated website editor checks wait for the page editor to be fully ready before saving. It reduces timing-related failures in appointment and knowledge website test flows, helping maintain release stability without changing end-user features.
Original PR description
*website_knowledge The related commit on community codebase [1] changed the behaviour of `InteractionService.shouldStop()` such that it returns true also when `el` contains `interaction.el`. This means that in edit mode interactions will restart more often: to prevent timing problems in tours, the step `waitIframeIsReady()` is now included in `clickOnSave()`. task-4367641 [1] https://github.com/odoo/odoo/commit/76a1c09c699c220b3f6f31c121b3defb776b3cc6
The subscription portal now safely handles missing resume invoice dates instead of crashing during payment. This prevents affected customers from seeing an error when paying quotations for subscriptions that cannot be paused by the user.
Original PR description
When `next_invoice_date_at_resume` is falsy (None), the template tried to call `format_date(None)`, which resulted in a `'NoneType' object is not callable` error. This commit adds a safe check both in the controller and the template to ensure the value exists before formatting.
Internal users without Planning app access can once again open the shift calendar to view their own shifts and open shifts. The change hides a resource filter that required higher Planning permissions, preventing unnecessary access errors.
Original PR description
Before this commit, the internal user without any access to planning app can no longer access to the calendar view of planning.slot model to see his shifts and the open shifts. The reason is because the new filter added is only accessible to planning user. This commit hides the new filter on resources when the user has no access to planning app. Steps to reproduce: ================== 0. install Planning app 1. Create an internal user without any access to planning app (or remove planning access to Marc demo) 2. Log as Marc demo (or new user created in step 2) 3. Go to planning app and switch to calendar view Expected Behavior: ----------------- The user should be able to access to the calendar view without any issue. Current Behavior: ---------------- An access error is raised because the current user cannot access to `planning.calendar.resource` model which is only accessible to users with planning access rights. runbot-error-227622