Daily updates from Odoo
Thursday, September 11, 2025
26 changes · saas-18.3
Resolved issues and error corrections
The Peppol demo bill data was cleaned up to use more appropriate sample values, including a distinct VAT number, a reserved example.com domain, and a different vendor address. This helps keep demo documents realistic and avoids using misleading or non-reserved sample information.
Original PR description
Minor improvements to the demo bill such as usage of VAT number different from belgian company in demo data, removal of IBAN account number, usage of a different address for vendor company and usage of example.com instead of beexample.com, which is not IANA reserved domain name. XML used: [INV_2025_00017_ubl_bis3.xml](https://github.com/user-attachments/files/22254686/INV_2025_00017_ubl_bis3.xml) no-task Forward-Port-Of: odoo/odoo#226305
This update prevents the website editor from crashing when editing links in mega menus and avoids unsafe format removal on styled buttons. It makes formatting behavior more reliable for users editing website content.
Original PR description
Description of the issue this PR addresses: Issue 1: Steps to Reproduce: - Open the website. - Create a mega menu. - Enter edit mode. - Change the mega menu template to “Cards”. - Click on any option…
Description of the issue this PR addresses: Issue 1: Steps to Reproduce: - Open the website. - Create a mega menu. - Enter edit mode. - Change the mega menu template to “Cards”. - Click on any option available in the mega menu. - A link popover will open. - Click the Edit link button in the popover. - Click the Apply button to save the link. - A traceback occurs. The error occurs because the text-wrap class is applied to the link. When the hasColor method is triggered, it checks whether a.nav-link has a text color class. However, TEXT_CLASSES_REGEX incorrectly matches text-wrap as a color class. As a result, the removeColor method attempts to remove it and triggers _applyColor to remove the color, but in _applyColor method it does not find any color to remove on selected text. As a result, the removeColor process enters an infinite loop, which eventually leads to a traceback. Solution: Update TEXT_CLASSES_REGEX so that it only matches valid text color classes and excludes formatting classes such as text-wrap, text-center, etc. Issue 2: This commit ensures that the remove format action is disabled when a button (.btn element) has custom color or background color applied. Because buttons include padding, there is no proper way to remove a background color from a partially selected button, so the action must be ignored in this case. task-5062715 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225703 Forward-Port-Of: odoo/odoo#225477
Product images in the catalog now display without being stretched when they are not square. This keeps product listings looking accurate and professional when users browse items from quotations.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Have products with non-square images available for sale; 2. open a quotation; 3. open the product catalog. Issue ----- The product images appear stretched. Cause ----- Commit e8836b42200e3 replaced the `div.kanban_image` element with a `field` element using the `image` widget. It maintained the same size limit of 55x55 via the widget's options, but without additional input, this causes the widget to stretch the images to fill the area. Solution -------- Add the `object-fit-contain` as `img_class` to the options. This class contains the image to the area instead of stretching it. opw-5007629 Forward-Port-Of: odoo/odoo#225112
Updates the spreadsheet engine to the latest 18.3 version, fixing issues with Excel imports, array formulas, clipboard cell insertion, and menu text display. This should make spreadsheet files open with fewer confusing warnings and reduce errors when users work with formulas or pasted cells.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/ef829f491 [REL] 18.3.20 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/ef829f491 [REL] 18.3.20 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/d78bb8f17 [FIX] Menu: Fix item text truncation [Task: 5072649](https://www.odoo.com/odoo/2328/tasks/5072649) https://github.com/odoo/o-spreadsheet/commit/b4439808d [FIX] xlsx: remove useless warnings on import [Task: 5075112](https://www.odoo.com/odoo/2328/tasks/5075112) https://github.com/odoo/o-spreadsheet/commit/89c22db73 [FIX] clipboard: insert cells bugged with array formulas [Task: 4938311](https://www.odoo.com/odoo/2328/tasks/4938311) https://github.com/odoo/o-spreadsheet/commit/5e7e4f50a [FIX] xlsx: `=undefined` when importing array formula [Task: 4812508](https://www.odoo.com/odoo/2328/tasks/4812508) https://github.com/odoo/o-spreadsheet/commit/506ccf690 [REV] xlsx: make import verbose [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) 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: Ronak Mukeshbhai Bharadiya <rmbh@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 update removes a misleading Sign In button from event registration screens where signing in cannot help complete the registration. It prevents an error when seats are unavailable and shows a clearer confirmation button for free registrations, improving the attendee experience.
Original PR description
This commit fixes two bugs related to the "Sign in" in button of the registration form. First bug: ------------ If there is more ordered seats than available seats, an error modal is displayed with a…
This commit fixes two bugs related to the "Sign in" in button of the registration form. First bug: ------------ If there is more ordered seats than available seats, an error modal is displayed with a "Sign In" button. This button shouldn't be present. On click, a 500 error is triggered. Now, the button does not appeared on this modal. Reproduce: Check "Mandatory" for "Sign in/up at checkout" in the settings. In the event form, add a limit of 1 available seat and add two tickets with each one 1 seat. With a public user, on the website page of the event, click on "Register" to open the registration modal. In the tickets form, select the maximum number of registrations for each tickets. The error modal with the "Sign In" button should appear. Clicking on this button trigger the 500 error. Second bug: ---------------- The "Sign in" button is displayed even if the tickets have no price. So the label of the button is wrong because public users are not redirected to the checkout. Now, the "Confirm Registration" button is displayed in this case. Reproduce: With the same settings as for the first bug, create an event without tickets. Order a registration with an public user. Click on the "Sign In" button of the attendee details form. The confirmation page appears instead of the sign in page. task-4797022 Forward-Port-Of: odoo/odoo#215585
Vendor price records created from blanket orders now use the unit of measure chosen on the blanket order line instead of defaulting to the product's base unit. This helps keep supplier pricing accurate when purchases are negotiated in different units.
Original PR description
This commit fixes setting the UoM of the vendor pricelist generated by a blanket order. Previously, the created pricelist had the base unit of the product. Now, it has the unit of the blanket order line. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226033
Fixed an issue in restaurant Point of Sale where combo items could lose their connection to the parent combo after an order was synchronized more than once. This keeps combo orders accurate and easier for staff to manage when switching tables or updating customer details.
Original PR description
When one of the combo line is marked as "Dirty", it would be synched but it would remove it's link to the combo parent. Steps to reproduce: ------------------- * Create a combo product * Open a PoS restaurant * Open a table, and add the combo product * Leave the table to synchronize the order with the backend * Go back on the table and select a partner * This will mark the combo line as "dirty" * Leave the table again to synchronize the order with the backend * Go back on the table > Observation: The combo now appears as a normal product, not linked to the combo parent. Why the fix: ------------ When marking a line as "dirty", we now make sure to also mark it's combo parent as "dirty" so that it will be synchronized correctly. And keep the link to the combo parent. opw-4950262 Forward-Port-Of: odoo/odoo#224535 Forward-Port-Of: odoo/odoo#220099
Live chat routing now ignores conversations that have already ended or have been inactive for at least 30 minutes when measuring agent workload. This helps assign new chats to the truly least active available agent, improving response distribution and customer service consistency.
Original PR description
Live chat agents are assigned based on their expertise, language, country, and other criteria. When several agents match these criteria, the system chooses the least active one. There was an issue with the SQL query that retrieves agent occupation: an agent was still considered buisy if a message was received within the last 30 minutes, even if the live chat was ended. This commit fixes the issue: the query now excludes ended live chats as well as live chats without any activity for at least 30 minutes. task-5065567 Forward-Port-Of: odoo/odoo#226271 Forward-Port-Of: odoo/odoo#225514
Preparation tickets in Point of Sale now include customer notes added to individual order lines. This helps kitchen or preparation staff see special requests directly on the ticket, reducing missed instructions and order mistakes.
Original PR description
In this commit: ----------- Orderline-level customer notes are now printed on preparation tickets. Task-4879140 Forward-Port-Of: odoo/odoo#215761
Users editing technical views now receive a clear, user-friendly message if they include an XML encoding declaration that cannot be accepted. This prevents an unhandled system error and makes the issue easier to understand and correct.
Original PR description
Currently, an error occurs when a user includes an XML encoding declaration in the view architecture. **Steps to reproduce:** - Enable **developer mode**. - Under `Settings > Technical > User…
Currently, an error occurs when a user includes an XML encoding declaration in the view architecture. **Steps to reproduce:** - Enable **developer mode**. - Under `Settings > Technical > User Interface > Views` Create or edit any view. - Enter the `view name` and select `view type`. - In the Architecture field, declare encoding as: `<?xml version='1.0' encoding='utf-8'?>`. - Attempt to save the view. **Error:** `ValueError: Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration.` **Root Cause:** The [1] call raises a ValueError when the XML declaration includes an encoding attribute. This low-level error is not handled and results in an ungraceful failure. [1]- https://github.com/odoo/odoo/blob/bf4ccb21f6c9c8bcda9c6f94d844c89296523954/odoo/tools/translate.py#L281 This commit ensures raising an UserError, improving the error message clarity. sentry-6505918596 Forward-Port-Of: odoo/odoo#226396 Forward-Port-Of: odoo/odoo#205324
This fix prevents the Point of Sale from crashing when taxes are enabled and added to a product that is already present in an active sales session. It helps store staff continue using the POS smoothly after tax configuration changes in the backend.
Original PR description
Steps to reproduce: ---- - From accounting disable taxes - Create new product - Open PoS UI and add product in orderline - Go to backend and enable taxes - Add tax in previously created product - Open UI again Issue: ---- - We will have traceback Cause: ---- - undefined error as pos_receipt_label is undefined as we don't have chance to reload data as product is already in orderline Fix: ---- - added optional chaining so we don't have undefined error also we have to reload data after enabling taxes from the configurations in the backend ---- task - 4762770 Forward-Port-Of: odoo/odoo#208511
Portal users can now buy paid eLearning courses after completing a quiz without encountering an error. The checkout action was updated to use the current shopping cart mechanism, restoring a smooth path from course preview to purchase.
Original PR description
Steps to reproduce: 1) Install `website_sale_slides`. 2) Create a course with enroll policy 'On payment' and publish it. 3) Add a content allow preview it and add a quiz 4) Go to website, click Share…
Steps to reproduce:
1) Install `website_sale_slides`.
2) Create a course with enroll policy 'On payment' and publish it.
3) Add a content allow preview it and add a quiz
4) Go to website, click Share button and open the generated link in incognito.
5) Login as a portal user, pass the quiz and click "Buy this course".
Issue:
- A traceback occurred:
`Cannot read properties of undefined (reading 'addToCart')`.
Cause:
- The method call `self.call('websiteSale', 'addToCart', ...)` relied on the deprecated `call` service, which was removed in commit https://github.com/odoo/odoo/commit/b8d0ab4275b24510161de9db793020f3489b0446.
- The service and method `call('websiteSale', 'addToCart'` is not valid and was not updated here :
https://github.com/odoo/odoo/blob/35161ecf0dd3fde47db9b2166718339c2e30ac92/addons/website_sale_slides/static/src/js/slides_course_join.js#L29
- As a result, `addToCart` was no longer accessible and triggered a JS error.
Solution:
- Update the code to use the new service and method: `call('cart', 'add',`
opw-5045424
Forward-Port-Of: odoo/odoo#224760The Uruguay localization module now points users directly to the Uruguay-specific fiscal localization documentation instead of a generic overview page. This makes it easier for users to find the right guidance for Uruguay-related finance setup and compliance information.
Original PR description
Description of the issue/feature this PR addresses: The website link in the `l10n_uy` manifest was pointing to a generic documentation page. Current behavior before PR: Link in manifest points to `https://www.odoo.com/documentation/17.0/applications/finance/fiscal_localizations.html` Desired behavior after PR is merged: Link in manifest points to `https://www.odoo.com/documentation/17.0/applications/finance/fiscal_localizations/uruguay.html` Forward-Port-Of: odoo/odoo#226169 Forward-Port-Of: odoo/odoo#225460
This fix prevents an error when sending Indian electronic invoices. Businesses using Indian e-invoicing can send invoices more reliably without the process failing due to a data handling issue.
Original PR description
In this commit- --- Fixed a typeError in l10n_in_edi_send_invoice method Replaced - incorrect syntax `data.get['SignedInvoice']` with `data['SignedInvoice']`. opw-5071703 Forward-Port-Of: odoo/odoo#226106
Product pages no longer show a forbidden access error when visitors view extra product fields configured on the website. This keeps the shopping experience working reliably for public users when businesses add additional product information.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Enable debug mode; 2. go to Website / Configuration / Websites; 3. open first website; 4. open Product Page Extra Fields tab; 5. add Icon (Product); 6. go to a product page as Public User. Issue ----- > **403: Forbidden** > [!Note] > For this issue to occur, the extra field cannot be loaded into cache yet, making it difficult to reproduce in versions before 18.3. As of 18.3, access rights are checked regardless of cache status. Cause ----- It's possible to add extra fields that don't allow access to public users by default. Solution -------- In the `ecom_show_extra_fields` template, retrieve the field values in `sudo` mode. opw-5031708 Forward-Port-Of: odoo/odoo#225352
This fixes a mail discussion issue where an error message could remain visible after messages successfully loaded on retry. Users who temporarily lose connection can now retry loading older messages and see the correct state once the data is available.
Original PR description
**Description of the issue this PR addresses:** When a thread fails to fetch its messages (e.g., due to a network error), the `hasLoadingFailed` flag is set to `true`. However, even if the next fetch…
**Description of the issue this PR addresses:** When a thread fails to fetch its messages (e.g., due to a network error), the `hasLoadingFailed` flag is set to `true`. However, even if the next fetch attempt succeeds, the flag is not reset. As a result, the UI may continue to show an error state even though the data has successfully loaded. **Steps to Reproduce:** - Open a thread with many messages. - Go offline. - Scroll up to load older messages → failure message appears. - <img width="311" height="68" alt="image" src="https://github.com/user-attachments/assets/e18832cb-5d37-4add-a126-fdc301131721" /> - Go back online and click Retry → messages load successfully. - Scroll again → failure message still appears, even though you’re online. - <img width="311" height="68" alt="image" src="https://github.com/user-attachments/assets/e18832cb-5d37-4add-a126-fdc301131721" /> **Current behavior before PR:** After a failed attempt to fetch messages in a thread, the `hasLoadingFailed` flag remains set to `true`. Even if the user goes back online and the subsequent fetch succeeds, the UI continues to show a failure state. **Desired behavior after PR is merged:** After a successful fetch of a thread’s messages, the `hasLoadingFailed` flag is reset to `false`, ensuring the UI no longer shows a failure state once the data has been correctly loaded. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226145 Forward-Port-Of: odoo/odoo#222001
This fixes an approvals issue where users could run into access errors when adding approvers to their own requests. It also tightens request controls so regular request owners can no longer add, edit, or delete approvers, helping keep approval flows consistent.
Original PR description
Fixed an issue happening when trying to add approvers to one's own request, and remove their ability to delete approvers from the request Task-4897775 Forward-Port-Of: odoo/enterprise#94229 Forward-Port-Of: odoo/enterprise#92309
The Documents chatter now consistently shows the Activities button for every document, including files linked to other document-related apps such as Sign. This prevents users from losing access to activity tracking when viewing certain documents.
Original PR description
Step to Reproduce: - Install `Documents_sign` module - open Documents - click on 'info & tags` button on the top right corner to show chatter - Open 'Odoo CLA.pdf' document Observation: - The Activities button is not shown in Chatter. Issue: - after this https://github.com/odoo/enterprise/commit/a32825ee00f2b330d99113f4d8c1488903fe744e, the activities button shows only for those documents which are related to `documents.documents` model or a document has no model, but it should be shown for all documents https://github.com/odoo/enterprise/blob/23fb26ae0f91a5bdb74d0d4fce48b31fa7abef86/documents/static/src/views/kanban/documents_kanban_renderer.xml#L21-L26 Solution: - Remove condition for Kanban and list view to show `activities` button in Chatter opw-5013427 Forward-Port-Of: odoo/enterprise#93093
This fix stops the system from creating quality control records for improvement suggestions on added work orders that are not part of the original bill of materials. It prevents traceback errors when manufacturing orders are duplicated and helps keep shop floor and PLM workflows stable.
Original PR description
## Issue: Creating multiple suggestions sequences for differents Workorder in Manufacturing Orders that are added aside BoM defined WorkOrder cause an issue with a Traceback error ## Cause: In the…
## Issue: Creating multiple suggestions sequences for differents Workorder in Manufacturing Orders that are added aside BoM defined WorkOrder cause an issue with a Traceback error ## Cause: In the method `add_check_in_chain()`, the `point.sequence` cause issue because the check can have multiple points https://github.com/odoo/enterprise/blob/e85d11f9b3bf07a55e5365adac7370955a149566/mrp_workorder_plm/models/mrp_workorder.py#L58-L66 That the case because multiple quality checks sequences are created when the operation_id is False That's unexpected because PLM isn't made to suggest WorkOrder additions and Suggestions to New WO, but only Suggestions to existing operations So we avoid to create `quality.point` when there is no operation_id ## Information: To get the Traceback, you need to install Quality_control because this module will copy the QC to the MO including the one with operation_id set to False ## Steps to reproduce: Quality_control and plm need to be installed - Enable Work Orders in Settings - Create a Product with a BoM - Create a MO for the Product - Add an extra WO - In the Shop Floor, Mark as Done the BoM's WO - On the Extra WO, click Gear Icon > Update Instructions > Improvement Suggestion > Add a Step - Insert a Title and Propose Change - Duplicate the MO and redo the Shop Floor steps to get the Traceback opw-4874108 Forward-Port-Of: odoo/enterprise#92384
The General Ledger now handles cash basis entries correctly when users load additional lines. This prevents duplicate-line errors and keeps accounting reports accessible for invoices with multiple payments.
Original PR description
**Steps to reproduce:**: - Install the module "account_reports_cash_basis" - Create a new account - Create an invoice with a line in the newly created account - Create a number of payments on the…
**Steps to reproduce:**: - Install the module "account_reports_cash_basis" - Create a new account - Create an invoice with a line in the newly created account - Create a number of payments on the invoice - Go to general ledger, and set method to cash basis - Set limit to a value less than the number of payments - Open the account on the general ledger, and click on load more **Issue:** After clicking on 'Load more', we get a traceback due to duplicate lines **Cause:** The same aml can return multiple results when using "account_reports_cash_basis" module. While this has been taken into consideration for each batch of lines loaded into the report (we won't get the same line referenced two times in the same batch, since they are grouped together), if we load a new batch by clicking "Load More", we can potentially get a line that was referenced in the first batch, and we get an error for having two lines in the report referencing the same thing. **Solution:** We add a add a GROUPBY statement in the query of _get_aml_values() This will add up all the cash basis lines in the query itself. opw-4635115 Forward-Port-Of: odoo/enterprise#93904 Forward-Port-Of: odoo/enterprise#86817
This fix makes the online rental checkout test wait for the cart page and pricing details to finish updating before validating totals. It reduces false build failures and helps ensure rental duration changes are reflected correctly in the shopping cart.
Original PR description
steps to reprduce: 1. duplicate multi enterprise 18.0 database 2. run the tour `website_sale_change_rental_duration` in the duplicated database inspired from: https://github.com/odoo/enterprise/commit/c7542e897c537650966497065db9c7d033dcb8ee added a delay to wait when choosing the rental duration, after page is loaded when go to cart , check if the next page is loaded before checking untaxed amount build_error-227718 Forward-Port-Of: odoo/enterprise#89274
This update fixes an issue in the Belgian CodaBox integration that could cause errors when processing company records. It ensures the system uses the correct company information, improving reliability for affected accounting workflows.
Original PR description
We incorrectly used the recordset `self` instead of the record `company` This commit fixes this opw-5036698 Forward-Port-Of: odoo/enterprise#94289
This update prevents the Chilean electronic factoring process from crashing when the tax authority returns invalid or unexpected responses. It also refreshes invalid access tokens and adds test coverage, improving reliability for companies sending these documents.
Original PR description
There were some typos in this method. We add test coverage and we reset the token in situations where we receive invalid responses. It's apparently common for the SII to have some random errors that could result in invalid tokens being generated. Based on the work in https://github.com/odoo/enterprise/pull/92035. Forward-Port-Of: odoo/enterprise#94342 Forward-Port-Of: odoo/enterprise#94134
This update adjusts internal test code to use the standard shared helper module instead of reaching into private test folders. It helps keep Odoo's testing setup easier to maintain and reduces the risk of future test breakages, with no expected impact on end users.
Original PR description
This commit reduces imports to the 'tests/_framework/' subfolder, which is meant to be accessed through the 'web_test_helpers' module as to reduce the amount of imports, as well as centralizing all web helpers to have a quick overview of the available helpers. Community: https://github.com/odoo/odoo/pull/225865
Archived quality points are now correctly excluded from the product Quality Points smart button. This prevents outdated or inactive checks from inflating counts or appearing to users, keeping product quality information accurate.
Original PR description
**Steps to reproduce:** 1. Install the module `quality_control`. 2. Go to **Products → select any product → Quality Points (smart button)**. * Create a new Quality Point that applies to *all…
**Steps to reproduce:** 1. Install the module `quality_control`. 2. Go to **Products → select any product → Quality Points (smart button)**. * Create a new Quality Point that applies to *all products*. 3. Open any product form. * Verify that the *Quality Points* smart button shows the created point and the correct count. 4. Archive the Quality Point. 5. Reopen the same product form and check the *Quality Points* smart button again. **Observed behavior:** - The archived Quality Point is still counted and shown in the smart button. **Root cause:** - During the refactor from raw SQL (`get_sql` + `cr.execute`) to the ORM query builder (`query.add_where(SQL(...))`), one outer bracket was dropped. [ref](https://github.com/odoo/enterprise/pull/66290/commits/a6362bc07eac7640f68d145a0f6a14a81f499913#diff-2ffdc2ffc25417076b580b772447514c7e9d8b3e2d2fff2d3100721eb5ccbaf4L542-R561) - This changed the operator precedence, causing the `active = true` condition to no longer properly apply when combined with the OR block. - As a result, archived Quality Points bypass the filter and are still counted. **Solution:** - Fix the missing bracket in the `query.add_where` SQL expression so that the `active` condition is always enforced before evaluating the OR block. opw-5046289 Forward-Port-Of: odoo/enterprise#94173
Miscellaneous changes
It's not rare to have databases with a huge number of svls for some products. For instance, the database of opw-4326597, which is currently on 17.0 and hosted on Odoo.sh, has 166 000 svls for the same product. Because of that, the current code in `svl_empty_stock` is likely to raise a MemoryError in those databases. The reason for that is the `__get__` call on `stock_valuation_layer_ids` along with a call to `filtered`. After expanding the singleton with the `prefetch_ids` and fetching all the
Original PR description
It's not rare to have databases with a huge number of svls for some products. For instance, the database of opw-4326597, which is currently on 17.0 and hosted on Odoo.sh, has 166 000 svls for the…
It's not rare to have databases with a huge number of svls for some products. For instance, the database of opw-4326597, which is currently on 17.0 and hosted on Odoo.sh, has 166 000 svls for the same product. Because of that, the current code in `svl_empty_stock` is likely to raise a MemoryError in those databases. The reason for that is the `__get__` call on `stock_valuation_layer_ids` along with a call to `filtered`. After expanding the singleton with the `prefetch_ids` and fetching all the fields of the related svls, the cache will probably raise a MemoryError. We are preempting this issue by changing this part of the code with a call to `_read_group` to get the correct lots directly. Thanks to @mwath for pointing this out. #### speedup Benchmark of the `_svl_empty_stock` method, with a product with 200 000 svls with a lot. | Before PR | After PR | |:----------:|:---------:| | 15.03s | 198.64ms | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188285