stop cascade update_pricing if prices didnt change (#5606)

Co-authored-by: Oliver Lippert <oliver@lipperts-web.de>
This commit is contained in:
Oliver Lippert 2023-09-24 15:02:09 +02:00 committed by GitHub
parent c06047d026
commit 2f0dbf9776
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2350,6 +2350,8 @@ class PartPricing(common.models.MetaMixin):
- Detailed pricing information is very context specific in any case
"""
price_modified = False
@property
def is_valid(self):
"""Return True if the cached pricing is valid"""
@ -2476,7 +2478,7 @@ class PartPricing(common.models.MetaMixin):
pass
# Update parent assemblies and templates
if cascade:
if cascade and self.price_modified:
self.update_assemblies(counter)
self.update_templates(counter)
@ -2576,6 +2578,9 @@ class PartPricing(common.models.MetaMixin):
any_max_elements = True
old_bom_cost_min = self.bom_cost_min
old_bom_cost_max = self.bom_cost_max
if any_min_elements:
self.bom_cost_min = cumulative_min
else:
@ -2586,6 +2591,9 @@ class PartPricing(common.models.MetaMixin):
else:
self.bom_cost_max = None
if old_bom_cost_min != self.bom_cost_min or old_bom_cost_max != self.bom_cost_max:
self.price_modified = True
if save:
self.save()
@ -2650,6 +2658,9 @@ class PartPricing(common.models.MetaMixin):
if purchase_max is None or cost > purchase_max:
purchase_max = cost
if self.purchase_cost_min != purchase_min or self.purchase_cost_max != purchase_max:
self.price_modified = True
self.purchase_cost_min = purchase_min
self.purchase_cost_max = purchase_max
@ -2677,6 +2688,9 @@ class PartPricing(common.models.MetaMixin):
if max_int_cost is None or cost > max_int_cost:
max_int_cost = cost
if self.internal_cost_min != min_int_cost or self.internal_cost_max != max_int_cost:
self.price_modified = True
self.internal_cost_min = min_int_cost
self.internal_cost_max = max_int_cost
@ -2716,6 +2730,9 @@ class PartPricing(common.models.MetaMixin):
if max_sup_cost is None or cost > max_sup_cost:
max_sup_cost = cost
if self.supplier_price_min != min_sup_cost or self.supplier_price_max != max_sup_cost:
self.price_modified = True
self.supplier_price_min = min_sup_cost
self.supplier_price_max = max_sup_cost
@ -2753,6 +2770,9 @@ class PartPricing(common.models.MetaMixin):
if variant_max is None or v_max > variant_max:
variant_max = v_max
if self.variant_cost_min != variant_min or self.variant_cost_max != variant_max:
self.price_modified = True
self.variant_cost_min = variant_min
self.variant_cost_max = variant_max
@ -2877,6 +2897,9 @@ class PartPricing(common.models.MetaMixin):
if max_sell_history is None or cost > max_sell_history:
max_sell_history = cost
if self.sale_history_min != min_sell_history or self.sale_history_max != max_sell_history:
self.price_modified = True
self.sale_history_min = min_sell_history
self.sale_history_max = max_sell_history