[14.0] stock_available: improve search performance

This commit is contained in:
Cédric Pigeon
2021-10-01 17:28:48 +02:00
parent 08a708a649
commit a4c6c5b8bf
2 changed files with 8 additions and 4 deletions

View File

@@ -67,6 +67,9 @@ class ProductProduct(models.Model):
"the materials already at hand.",
)
def _get_search_immediately_usable_qty_domain(self):
return [("type", "=", "product")]
@api.model
def _search_immediately_usable_qty(self, operator, value):
"""Search function for the immediately_usable_qty field.
@@ -76,9 +79,10 @@ class ProductProduct(models.Model):
:param value: str
:return: list of tuple (domain)
"""
products = self.search([])
# Force prefetch
products.mapped("immediately_usable_qty")
product_domain = self._get_search_immediately_usable_qty_domain()
products = self.with_context(prefetch_fields=False).search(
product_domain, order="id"
)
product_ids = []
for product in products:
if OPERATORS[operator](product.immediately_usable_qty, value):

View File

@@ -52,6 +52,7 @@ class ProductProduct(models.Model):
for product in product_with_bom:
# Need by product (same product can be in many BOM lines/levels)
bom_id = first(product.bom_ids)
exploded_components = exploded_boms[product.id]
component_needs = product._get_components_needs(exploded_components)
if not component_needs:
@@ -66,7 +67,6 @@ class ProductProduct(models.Model):
for component, need in component_needs.items()
]
)
bom_id = first(product.bom_ids)
potential_qty = bom_id.product_qty * components_potential_qty
potential_qty = potential_qty > 0.0 and potential_qty or 0.0