Thursday, July 17, 2025
11 changes · saas-18.1
Resolved issues and error corrections
This fix stops the editor from deleting both an attached file placeholder and the character before it when users press backspace. It helps preserve user-entered content when editing documents or forms that include file boxes.
Original PR description
Problem: When pressing backspace after text followed by an `o_file_box`, both the last character and the file box are deleted at once. Cause: An empty `o_file_box` is skipped in `findPosition` because it's treated like a zero-width space (`.textContent === "\ufeef"`), causing incorrect position resolution. Solution: `o_file_box` elements should not be skipped during position checks, even when empty. Steps to reproduce: - Go to Quality ---> Quality Control --> Control Points - Create New. - Add text - Add a file just after the text - Delete all content of the file box - Place the cursor after the file box and press backspace -> The character before the file box is also deleted opw-4903841 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#216559
The Point of Sale product configuration popup no longer fails when multiple pricelists have the same name. This prevents checkout setup interruptions for businesses that use similarly named pricelists across locations or customer groups.
Original PR description
Before this commit, an error would occur when opening the product configuration popup if two pricelists shared the same name. This was due to the pricelist name being used as a key, which must be unique. This commit resolves the issue by switching to the pricelist ID as the key, ensuring uniqueness and preventing errors when duplicate pricelist names exist. opw-4882900 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#217901
Quote PDFs now correctly exclude header or other quote builder documents that were removed from the related quotation template. This prevents outdated or unintended documents from being sent to customers, keeping generated quotes aligned with the current template setup.
Original PR description
## Version 18.0+ ## Issue On a quotation setup with a template, when a document is selected in the quote builder and then deleted from the template, it still appears when rendering the quote PDF. ## Steps to reproduce - Create a new quotation template with a header document - Create a new quote using the quotation template: - Under the 'Quote Builder' tab, select the header document - On the quotation template, delete the header document - Come back to the quote - *(Optional: check the 'Quote Builder' tab - it should be empty)* - Print the PDF: - The header appears on the document opw-4712958 Forward-Port-Of: odoo/odoo#213206
Product pages with tags now keep a clean page structure when shoppers switch variants. This prevents repeated tag blocks from being added in the background, reducing visual or layout issues and keeping the shop page easier to maintain.
Original PR description
Steps: - Open Odoo 18. - Go to Website > Shop. - Open any product with tags. - Inspect the DOM. Issue: - The `.o_product_tags` div was duplicated. - This resulted in a nested `.o_product_tags` block in the DOM. Reason: - The system was inserting the full HTML tags, including its wrapper, causing the nesting. Solution: - Now only the inside content of the tags is updated, not the whole wrapper. - This keeps the structure clean and avoids duplication. Result: Now, there will be no duplication in the `.o_product_tags` block div section. OPW:4863967 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#218320
Receipts created with an invoice date now keep that date instead of being incorrectly set to the current day. This helps ensure accounting records reflect the intended transaction date and reduces 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
The Seen by popup in Discuss no longer shows a date that could be mistaken for the actual time a person read an older message. This avoids confusion because the old date reflected a general channel activity timestamp, not a reliable per-message read time.
Original PR description
Before this commit, the “Seen by” tooltip displayed each member’s channel-level `last_seen_dt`, which for older messages could misleadingly be interpreted as “seen today” even if the user hadn’t actually viewed it recently. Furthermore `last_seen_dt` isn’t kept up to date client-side (and only gets fetched on reload), thus causing more confusion. This commit removes the date from the “Seen by” popup. Tracking a true per-message “seen at” timestamp for every user would require significantly more complex modeling and will be revisited later if necessary. task-4630168 Forward-Port-Of: odoo/odoo#211490
The restaurant appointment editor now hides the color picker when its formatting toolbar scrolls out of view. This prevents a floating color selector from remaining on screen unexpectedly, making text editing cleaner and less confusing.
Original PR description
**Current behaviour before PR:** Steps to reproduce the issue: - Have a long text content in editable, making the container scrollable. - Select first line of the text, in toolbar open color selector. - Scroll down until the toolbar overflows and becomes hidden. Notice that the toolbar disappears when it overflows its container while color picker remains open, floating at the top of container. **Desired behaviour after PR:** Now, when the toolbar overflows and gets hidden, the color selector becomes hidden along with toolbar. Community PR: https://github.com/odoo/odoo/pull/202889 task-4581884 Forward-Port-Of: odoo/enterprise#84579
Belgian Intrastat XML exports now respect the “Hide lines at 0” option, so transactions with no value are left out as expected. This keeps exported compliance reports aligned with what users see on screen and helps avoid incorrect or unnecessary entries in official XML files.
Original PR description
_______________________________________ ## Short functional explanation of the error On the export intrastat report page, we can click on the 'Posted Entries' button, which allows us to select 'Hide…
_______________________________________ ## Short functional explanation of the error On the export intrastat report page, we can click on the 'Posted Entries' button, which allows us to select 'Hide lines at 0'. Doing this will prevent 0 cost transactions from appearing in the report. However, when exporting to XML, such transactions are still displayed. Note: this is related to Belgian companies only. ## Reproduction Steps 1. Go to settings and make sure the company you're operating with is Belgian. Then, in accounting, under the Custmer Invoices section, check the 'Intrastat' option. 2. Go to products and create a new product of type 'Goods'. Then, in the 'Accounting' tab, click on a random commodity code. Set the country of origin as a country belonging to the European Union (for example, Austria). Click on save. You should see a field named 'Intrastat Supplementary Unit Amount' appear. 3. Go to accounting. Click on the 'Vendors' tab and 'Bills'. Click on New. Select a random vendor, and add a line containing the product you just created. Add the column 'Intrastat' and set the corresponding field at '11 outright...'. Then, set a price. In the 'Other Info' tab, set the field 'Intrastat Country' as a random country in the European Union (for example, Australia). Set the fiscal position at 'Import/Export' and set the 'Intrastat Transport Mode' field at '1. Sea transport'. Finally, click on confirm. 4. Duplicate the vendor bill you just created. On this new vendor bill, set the Intrastat at '12 Direct trade...'. Display the column 'Disc.%' and set the field at 100. Then click confirm. 5. Click on the 'Reporting' tab, and under 'Audit Reports', click on 'Intrastat Report'. Set the month to the current month, then click on 'Report: Intrastat(Services....)' and select 'Intrastat (Goods)'. You should be able to see the 2 vendor bills you just created. Click on 'Options' then 'Hide lines at 0': you should see the bill having a 0 cost disappear. Finally, click on the cog on the top left next to 'Intrastat Report' and click on 'XML'. 6. Once the XML file has finished downloading, open it. ### Expected behavior The transaction having a 0 cost shouldn't appear. ### Unexpected behavior The transaction having a 0 cost appears. ## Origin of the issue In the code responsible for the display of the XML report, there isn't any condition responsible for checking if the transaction should be displayed or not. _________________________________________ opw-4464123 --- Forward-Port-Of: odoo/enterprise#89285
This update adds missing classifications to automated tests in Helpdesk and Subscription Billing so the test system can run them correctly. It helps reduce false failures and keeps release validation more reliable, with no direct change to customer-facing features.
Original PR description
With the new test-tags features that allows to add additional test tags at runtime, the tests that starts a tour or that are using a query_count and that are not detected as such must be tagged respectively `is_tour` or `is_query_count`. Forward-Port-Of: odoo/enterprise#90031 Forward-Port-Of: odoo/enterprise#89934
This fix updates an automated website shop rental test so it no longer clicks the date picker while waiting. It helps keep validation runs reliable and reduces false build failures without changing customer-facing rental features.
Original PR description
remove click on datepicker in the wait step build-error-213702 Forward-Port-Of: odoo/enterprise#89873
This update fixes an issue that caused automated checks for Australian payroll accounting to fail after a fiscal year change. It helps keep payroll reporting validation reliable without changing day-to-day user workflows.
Original PR description
Tests failed on runbot: https://runbot.odoo.com/odoo/runbot.build.error/228503 Forward-Port-Of: odoo/enterprise#89923