Daily updates from Odoo
Friday, June 6, 2025
11 changes · 18.0
Enhancements to existing features
Copying large documents now avoids an unnecessary page-count check that was consuming significant memory. This improves performance when duplicating multiple large PDFs, reducing memory use in the benchmark by about 27%.
Original PR description
Description ----------- When copying a document, a new attachment is created and linked to the copied document. Since `documents.document.is_multipage` depends on `documents.document.datas`, which is related to `attachment_id.datas`, and `attachment_id` was just written to, `_compute_is_multipage` will be recomputed during flushing before commit, as it's a compute stored field. This is problematic when copying multiple large documents, since this compute reads the entire binary data to determine if it's more than one page. This commits explictly writes on `is_multipage` to implicitly add it to the protected fields, which will prevent its' recomputation when flushing. Benchmark --------- Copying 5 documents (PDF) of 50MB each takes in total: | Before | After | Diff | |--------|--------|--------| | 1.61GB | 1.17GB | -27.3% | Reference --------- opw-4829372
Resolved issues and error corrections
This change removes a previously introduced US tax report variant because it caused crashes during deployment. The revert keeps the stable version reliable while the underlying dependency issue is addressed in a future release.
Original PR description
This reverts commit 6d0d0e58b9f2c4ee2519e8e960e156c7e7be9841. The deployment of the reverted commit revealed an error: l10n_us_reports does not depend on l10n_us_account (only l10n_us), so it can't override the US tax report in data and crashes. We sadly cannot fix that in stable ; we'll do it in master.
This update brings the embedded spreadsheet component up to its latest maintenance version. It fixes issues with waterfall chart values, find-and-replace navigation, moved row or column ranges, clipboard handling, and touch scrolling, making spreadsheet work more reliable for users.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/bef1e2bd5 [REL] 18.0.32 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/bef1e2bd5 [REL] 18.0.32 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/9ebffc594 [FIX] waterfall: wrong show value for waterfall chart [Task: 4812692](https://www.odoo.com/odoo/2328/tasks/4812692) https://github.com/odoo/o-spreadsheet/commit/fd13ed000 [FIX] Find&Replace: target correct next match [Task: 4817971](https://www.odoo.com/odoo/2328/tasks/4817971) https://github.com/odoo/o-spreadsheet/commit/a2ec5297a [FIX] clipboard: remove empty code [Task: 4743039](https://www.odoo.com/odoo/2328/tasks/4743039) https://github.com/odoo/o-spreadsheet/commit/8eebf6d8b [FIX] MOVE_COLUMNS_ROWS: adapt range on col/row move [Task: 4743039](https://www.odoo.com/odoo/2328/tasks/4743039) https://github.com/odoo/o-spreadsheet/commit/a00a9aaf7 [FIX] Spreadsheet: Fix touch scroll [Task: 4829283](https://www.odoo.com/odoo/2328/tasks/4829283) Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Mehdi Rachico (mera) <mera@odoo.com> Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
This fix prevents the editor from accidentally recording link popover changes in the undo history when users press Ctrl+Z in Chrome. It keeps undo behavior predictable and avoids confusing link changes appearing or disappearing after the popover is closed.
Original PR description
Problem: In Chrome, when focused on the first input inside the link popover, pressing `Ctrl+Z` (undo) triggers `beforeinput` and `input` events on the editable element, even though the selection is…
Problem: In Chrome, when focused on the first input inside the link popover, pressing `Ctrl+Z` (undo) triggers `beforeinput` and `input` events on the editable element, even though the selection is within the popover input, not the editable area. This leads to `addStep` being incorrectly triggered, adding DOM changes like the `a` tag to the history stack and resulting in unintended undo behavior. Note: This issue doesn't occur in saas-18.2+ where the `a` tag is only added upon confirming the change, thus no mutation is pushed to history while editing. Solution: Intercept the `beforeinput` event on the editable and call `preventDefault()` if the selection is not currently within the editable, thereby stopping history pollution. Steps to reproduce: 1. Type `/Link` and open the link popover. 2. Focus is automatically set on the first input. 3. Press `Ctrl+Z`. 4. Click on the editable area to close the popover. 5. Repeatedly press `Ctrl+Z` → the `a` tag is added/removed, corrupting undo history. opw-4800278 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix restores Demo express checkout in eCommerce by correctly reading the available delivery methods after an internal API change. Customers using the demo payment flow should no longer be incorrectly blocked with a message that no delivery method is available.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Enable Demo express checkout; 2. pay with Demo Express checkout in eCommerce. Issue ----- Validation error: No delivery method is available. Cause ----- Commit bf8d08cd22b5 changed the express checkout delivery method RPC API. Instead of an array, `availableCarriers` is now an object with a `delivery_methods` attribute. Because it checks the length of an object, which is `undefined`, Demo express checkout incorrectly believes no delivery methods are available. Solution -------- Check the length of `delivery_methods` instead of `availableCarriers`.
Fixed an issue where links from email notifications could lose their access token or send users to the wrong destination after login. Internal users, portal users, and visitors are now routed to the right place more reliably, improving access to shared records and reducing confusing redirects.
Original PR description
Global purpose is to make mail/view controller more resilient by improving redirections when not having access to the record. Notably * correctly route internal users to discuss, portal users to /my and unlogged users to login; * keep original mail/view route when performing redirection after login so that we try the routing again; * fix various issues in redirect computation, such as lost access token parameter or partial reconstruction of URLs; Improve test coverage. Task-
The EC Sales List report now checks for duplicate VAT numbers only among partners included in the selected reporting period. This prevents misleading warnings caused by customers or vendors that are outside the report scope.
Original PR description
- Fixed the computation of `is_vat_duplicated` to only consider partners within the selected reporting period. - Moved the duplicate VAT detection logic to the backend to ensure only records relevant to the report are checked. - This avoids false positives by excluding VATs from partners not shown in the report. no-task
Swedish point of sale orders no longer incorrectly show an invalid tax warning when products use approved tax rates. This prevents unnecessary checkout interruptions for businesses using the Swedish Fiscal Data Module.
Original PR description
Steps: ----------- - Install the pos_l10n_se module. - Open a POS session with the Swedish Fiscal Data Module configured in the IoT Box settings. - Add a product to the order. Issue: ------------- - An error popup states: "Product has an invalid tax amount. Only 25%, 12%, 6% and 0% are allowed." even when the product is correctly configured with one of these tax rates. Cause: ---------- - The validation logic incorrectly applies conditions for displaying the error popup, mistakenly rejecting valid tax rates when the PoS receipt label is set. FIX: ----------- - Updated the tax validation conditions to handle products correctly, allowing tax rates, and preventing false error messages. task-4687156
Swiss ISO20022 payment exports now correctly handle SEPA and ISO20022 payment types used within the Swiss standard. This helps Swiss businesses generate compliant bank payment files and avoids rejected or incomplete payment instructions.
Original PR description
Following page 35 of the documentation here https://www.six-group.com/dam/download/banking-services/standardization/sps/ig-credit-transfer-sps2024-2.1.1-en.pdf In Switzerland, SEPA and ISO20022 are considered as subsets of the Swiss standard, and it is hence possible to include within the Swiss file nodes that are generated following these formats. We didn't support that before this commit. To allow that, we also remove the ability to force the value of the ChrgBr node when using SEPA ; other values as SLEV are not supported by that format anyway. opw-4535542
Belgian Intrastat Goods exports now correctly include only goods and exclude service products. This prevents inaccurate XML or CSV reporting for companies submitting Intrastat goods declarations.
Original PR description
**Steps to reproduce:** - Install accountant and l10n_be_intrastat - Switch to a Belgian company (e.g. BE Company CoA) - Create a "Goods" product: * Product Type: Goods * Commodity Code: [any] *…
**Steps to reproduce:**
- Install accountant and l10n_be_intrastat
- Switch to a Belgian company (e.g. BE Company CoA)
- Create a "Goods" product:
* Product Type: Goods
* Commodity Code: [any]
* Country of Origin: [any]
- Create a "Service" product:
* Product Type: Service
* Commodity Code: [any]
* Country of Origin: [any]
- Create an invoice:
* Customer: [an European customer (not from Belgium)]
* Invoice Lines: 1 line with the goods and 1 line with the service
- Confirm the invoice
- Go to "Accounting / Reporting / Audit Reports / Intrastat Reports"
- Select "Intrastat (Goods)" as Report
- Select the correct date to display the created invoice
- Click on the "XML" or "CSV" button to export the report
**Issue:**
In the exported file, the service product is also included. Only the goods should be in the exported file.
**Cause:**
Since a previous fix for "l10n_be_intrastat", "product_type_condition" condition is overridden with `SQL("AND (account_move_line.product_id IS NOT NULL)")` (https://github.com/odoo/enterprise/commit/1108467dcaedfacc28bf1751f6f8f4fc10f84043)
The original condition was:
`SQL("AND (account_move_line.product_id IS NULL OR prodt.type != 'service')")`
The part excluding the service products is removed by the overriding condition.
opw-4824257The Documents search panel now shows folder hierarchies correctly when users open documents from other apps such as Fleet or Project. The “All” folder is also consistently available, making it easier for users to browse and find the right documents.
Original PR description
Backport of #84244 Issues: i) When coming from another app (Fleet, Project, etc.), the search panel does not correctly display the subfolders. ii) The “All” folder should always be displayed. Technical Reason: i) Correctly set folder_id as False for documents whose parent folder is inaccessible, ensuring a clean and accurate folder hierarchy in the search panel. ii) It was intended, add a condition when coming from other modules 'All' should not display. After this commit: i) Correctly display folders in hierarchy in a search panel when coming from other modules. ii) 'All' folder should always be displayed. Follow up of 4669259 Task-4836554