Monday, July 28, 2025
19 changes · saas-18.2
Resolved issues and error corrections
The view-switching shortcut label now remains clearly visible when users change views with SHIFT + V. This prevents a small visual overlap in the control panel, making the interface easier to read and use.
Original PR description
Previously when switching views using the hotkey, the hotkey (SHIFT + V) was not properly visible, it was overlapping with the active view button. After this commit the hotkey (SHIFT + V) will be visible and not overlap with the active view. task-4828401 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#217639
This change lets Odoo disable image transformation controls in places where they do not work, such as report generation. It prevents users from applying visual edits that would be ignored in exported reports, reducing confusion and improving editing reliability.
Original PR description
Problem: In some contexts, such as reports, the `transform` option is not needed or applicable. For example, `transform` is not supported by `wkhtmltopdf`, so any applied transformation is ignored. Solution: Introduce the ability to disable the `transform` option when needed. opw-4809761 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#220110 Forward-Port-Of: odoo/odoo#218352
Fixed an issue in the website editor where moving the final item from one table of contents block into another could cause an error. This helps users edit website pages more reliably without interruptions during drag-and-drop layout changes.
Original PR description
Since [1], a traceback appears when we drag the last block of a table of content into another one. Drag and drop two tables of content on the website page One by one, drag and drop the blocks from the second table to the first one traceback for the last one... This commit resolves the issue [1]:https://github.com/odoo/odoo/commit/6cd9606e285741b59042b9674bf6682273c43a69 task-4144022 Forward-Port-Of: odoo/odoo#180039
Stock picking operation reports now include the usual header, footer, and page layout again. This ensures printed delivery operation documents look consistent and professional for warehouse and delivery workflows.
Original PR description
Steps: - Go to Inventory > Delivery Orders - Open an outgoing transfer (OUT) - Click Print > Picking Operations Issue: - The report is missing header/footer and general layout formatting. Cause: - The call to `web.external_layout` was removed from the QWeb template, causing the report to render without the standard layout. Fix: - Reintroduced the `web.external_layout` wrapper to restore full report formatting. I confirm I have signed the CLA and read the PR guidelines at [www.odoo.com/submit-pr](http://www.odoo.com/submit-pr)
Fixes a printing issue where long reception reports could show product rows overlapping with section headers on later PDF pages. This makes multi-page reception reports easier to read and use during warehouse receiving.
Original PR description
## Short functional explanation of the error When printing a reception report containing a lot of products, the top row of the pages after the first one is overlapped with its corresponding header in…
## Short functional explanation of the error When printing a reception report containing a lot of products, the top row of the pages after the first one is overlapped with its corresponding header in the resulting PDF. ## Reproduction Steps 1. Open the settings. In the inventory section, enable "Reception Report". 2. Create a new quotation and add at least 40 different products. Each product should have at least 1 copy in stock, and the quantity to order must be greater than the quantity we have of this product in stock. 3. Confirm the sales order. 4. Create a new purchase order and add the exact same products you added in the quotation. 5. Confirm the order and click on the "Recept" smart button. 6. Click on the "Allocation" smart button and click on the "Assign all" gray button. 7. Click on print and open the PDF once it finishes downloading. ### Expected behavior Each row (corresponding to the reception of a product) and its corresponding header is printed properly, regardless of how many pages constitute the report. ### Unexpected behavior The PDF has more than one page, and on the top of the second page, the product row is overlapped with the header of its corresponding section. ## Origin of the issue It comes from an issue with WKHtmltopdf itself: https://github.com/wkhtmltopdf/wkhtmltopdf/issues/1524 The report uses the "thead" tag for the headers. However, in some cases, when the header is linked to a table dynamically (with for-each, for example), WebKit ignores or breaks the "Thead" behavior. ## Explanation of the fix I override the default behavior of thead, which repeats the header automatically at each new page, with a new style. Now, the "Thead" special behavior is ignored and treated like ordinary lines. The header isn't shown at each new page anymore, avoiding the overlapping of product rows. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#215398
The website editor toolbar now stays positioned without adding unwanted blank space below the page footer. This improves page display consistency when the toolbar is hidden or floating.
Original PR description
Description of the issue/feature this PR addresses: - Commit [189a7c96](https://github.com/odoo/odoo/commit/189a7c96e6e26825dc05c0c6466576fe63aa091e#diff-de0d67e89972b45b101a9c4b04f316824314b0d69aba6208528586f1edb4f01cL25-L40) moved scrollbar from `#wrapwrap` element to `<body>`, caused the space below the footer visible for the floating toolbar. Current behavior before PR: - Space below the footer was always visible, even when the toolbar was hidden. Desired behavior after PR is merged: - `top: 0;` is applied on `.oe-toolbar` to ensure it stays out of the layout flow. - This prevents unnecessary layout space and ensures correct toolbar positioning. task-4652202 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#217270
This change adds a test to ensure point-of-sale order lines are read correctly after being updated during settlement. It helps prevent regressions in POS sales workflows without changing current user-facing behavior.
Original PR description
This PR just forward ports the test from a4fbcc3717f4c3cfd1350eb52e58a37e713dbc3b. No need anymore for the fix from the before mentioned commit, as it's already fixed in saas-18.2. Co-authored-by: Arthur Nanson <artn@odoo.com> Forward-Port-Of: odoo/odoo#219729 Forward-Port-Of: odoo/odoo#218331
This fix makes an automated mail test more stable by avoiding timing-sensitive checks during repeated message edits. It helps reduce false test failures in the development pipeline without changing normal user behavior.
Original PR description
Before this commit, the "Can edit message comment in chatter" test could fail intermittently. The test performs three edits on the same message, and due to the asynchronous nature of the bus (mock server > websocket > worker bus service > subscribers), bus notification are received later than rpc results. The test was asserting composer content between edits, which is unnecessary and sensitive to race conditions. For example: - First edit is sent. - Second edit is sent. - First edit is received. - Third edit opens the composer with outdated content. This is unlikely to occur in practice. This commit resolves the issue by removing non essential composer assertions. fixes runbot-227618 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 makes a website test wait for an image to finish loading before checking its size. It reduces random test failures, helping keep release validation more stable without changing customer-facing behavior.
Original PR description
The goal of this commit is to avoid potential undeterminism that could occur in the `drop_404_ir_attachment_url` test (introduced by [this commit]). Before this commit, an error was thrown if the image was not loaded at the time the test checks the `naturalWidth` and `naturalHeight` property of the image. This could lead to undeterministic error as nothing ensures that the image is loaded at that time. To solve the problem this commit first waits for the image to be loaded before accessing the `naturalWidth` and `naturalHeight` property of the image. Side note: even if the source of the image is of type `data:` it is not directly loaded. [this commit]: https://github.com/odoo/odoo/commit/fbc6a697c1adf67ee8a90c49b0150d6ca170e081 task-4931144 Forward-Port-Of: odoo/odoo#220204 Forward-Port-Of: odoo/odoo#217968
The HTML editor color picker now shows the correct background color preview while users adjust opacity. This makes formatting table cells and other content more predictable before applying changes.
Original PR description
### Steps to reproduce: - Type a command (e.g., /table) to insert a table. - Select some cells and apply a background color using the toolbar. - Click the Background Color button again in the toolbar. - Go to the Custom tab in the color picker. - Adjust the opacity using the slider. ### Description of the issue/feature this PR addresses: - Adjusting the opacity slider had no effect on the background color preview. ### Desired behavior after PR is merged: - The preview updates dynamically as the opacity slider is moved. task-4942309 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#219008
This update fixes an internal Point of Sale test that could fail depending on whether demo data was installed. It creates a dedicated test unit of measure so automated checks run consistently, helping prevent false build failures.
Original PR description
Before this commit: = - The test `test_quantity_package_of_non_basic_unit` used `product_uom_inch`, which is `archived` by default, causing the test to fail without demo data. - It only worked with demo data because `l10n_us_account` `unarchives` this UoM. After this commit: = - Created a **test UoM** to ensure consistent test behavior. Runbot-error: 223122 Forward-Port-Of: odoo/odoo#214547
The bank account form now shows EMV QR configuration fields directly after account information again, instead of below notes. This restores the familiar layout from the previous version, making the settings easier to find for users managing QR payment setup.
Original PR description
Before this PR: - The `EMV QR Configuration fields` were positioned below the `Notes` section (The `Notes` section was introduced in saas-18.2). In saas-18.1 `EMV QR Configuration fields` were directly below the `Account information` section. After this PR: - `EMV QR Configuration fields` are positioned below the `Account information` section and above the `Notes` section, restoring the layout from saas-18.1. Task: 4936165 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Calendar app's filter for a user's event attendance status now works correctly instead of showing no results. This helps users reliably find meetings they accepted, declined, or are otherwise marked for, improving calendar visibility and planning.
Original PR description
The filter on an event's "Attending?" status was not working correctly. When filtering, the search would always return an empty result set because the underlying search implementation was logically flawed. It incorrectly compared calendar.event IDs with calendar.attendee data, which could never match. This commit corrects the `_search_current_attendee` method to properly query the `calendar.attendee` model. It now finds the intersection of attendees that both belong to the current user and match the filter criteria (e.g., state is 'declined'). It then uses these results to return the correct parent calendar events. A unit test has been added to verify the filter now works as expected. opw-4892386 Forward-Port-Of: odoo/odoo#218878
This fixes an inconsistency when opening or loading existing message discussions. It helps prevent errors in the mail experience and makes access handling more predictable for callers.
Original PR description
1. Ensure the thread is not undefined before calling exists. 2. `hasReadAccess` was only checked after the RPC, but if the thread data was already fetched the condition was not checked. The choice is made to remove the condition as it makes the code more flexible. The caller can always decide to check `hasReadAccess` afterwards if necessary. How to reproduce: https://github.com/odoo/odoo/pull/220605
The Knowledge editor now keeps extra space below long content while editing, making it easier to scroll and position the end of an article comfortably on screen. This restores a helpful editing behavior that stopped working after the editor upgrade.
Original PR description
With version 18.1, we migrated from legacy HTML editor to the new one. As part of this upgrade, we revised the templates and reworked the wysiwyg helper. During the migration, several CSS classes were altered or removed. One issue that emerged is that the CSS rules intended to add bottom padding to the editor area are still present in the stylesheet but no longer apply to any element. These rules were especially helpful when working with long-form content, as they allowed users to scroll further and bring the end of the text closer to the center of the screen - improving readability and enhancing the editing experience. To fix this, we'll update the relevant CSS selector to ensure the padding is correctly applied to the editable area. See: odoo/enterprise#67083 Task-4636494 Forward-Port-Of: odoo/enterprise#86223
The report editor now prevents users from applying image transformations that would not appear correctly in generated PDF previews. This avoids confusion by ensuring report design options match what the final PDF can reliably display.
Original PR description
Problem: Image transformations are not applied in generated PDFs because they are not supported by `wkhtmltopdf`. Solution: Disable image transform options when rendering reports to ensure expected output and avoid unsupported behavior. Steps to reproduce: - Open any report in Studio - Add an image - Apply a scale transformation - Generate a PDF preview > The image transform is not applied in the generated PDF opw-4809761 Forward-Port-Of: odoo/enterprise#90776 Forward-Port-Of: odoo/enterprise#89952
Uploading an attachment from a folder or document chatter no longer shows a temporary upload progress card or row in the Documents kanban and list views. This keeps the document views cleaner and avoids confusing users with upload items that should not appear there.
Original PR description
Step to reproduce: - In Documents, open the chatter either on a folder or a document. - Upload an attachment through the chatter. - You will see the upload kanban card / list row showing the progression. There should be no visual in kanban/list views showing the progression. Task-4863051 Forward-Port-Of: odoo/enterprise#90836 Forward-Port-Of: odoo/enterprise#87410
Fixed an issue where customer statement emails could fail when selected customers included a contact without a name. The report now skips unnamed contacts when building the customer list, helping scheduled statement sending complete reliably.
Original PR description
**PROBLEM** In the accounting app, when selecting multiples customers, if one of them doesn't have a name, the cron sending the report will traceback. **STEP TO REPRODUCE** - On a clean db, install…
**PROBLEM** In the accounting app, when selecting multiples customers, if one of them doesn't have a name, the cron sending the report will traceback. **STEP TO REPRODUCE** - On a clean db, install the account_reports module - From the accounting app, create a new company customer (Customers/Customers) - From that new company customer form view, add a new contact of type "other" and don't specify a name for it. - Create an invoice for the company - From the customer list view, select all, and trigger the action "Open Customer Statements" - Send -> Print and Send - Check the console, the cron task should traceback on the template **CAUSE** In accout_report.py, we get the name of each selected partners, and we don't check if the name doesn't exist. In the template `pdf_export_filters`, we try to join all the name in a string, it fails because one of the name isn't a string (its value is False because it doesn't exist on the partner record). **FIX** When getting the partners names, filter out the partners without names. opw-4916660 Forward-Port-Of: odoo/enterprise#90154
This fix updates Urban Piper point-of-sale order handling to use the correct order completion status when showing tickets. It removes an unused internal flag, reducing the chance of incorrect order state display and keeping the workflow cleaner for store staff.
Original PR description
In this commit: ==== - Use `finalized` instead of `uiState.locked` to determine order state on TicketScreen. - Remove the unused `locked` property from `uiState` in posOrder. Task-4745869 Related: odoo/odoo#207406 Forward-Port-Of: odoo/enterprise#90670 Forward-Port-Of: odoo/enterprise#86684