From 8e305c7dc31d109f1234f26d8b6f3ea3bdd4cf3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=92scar=20Queralt=C3=B3=20Aguilera?= Date: Fri, 24 Feb 2023 12:09:39 +0000 Subject: [PATCH] Ignore cancelled moves to calculate productions cost Closes #12093 --- modules/production/production.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/production/production.py b/modules/production/production.py index 2e2e27e5b9..d88761ec46 100644 --- a/modules/production/production.py +++ b/modules/production/production.py @@ -454,6 +454,8 @@ class Production(ShipmentAssignMixin, Workflow, ModelSQL, ModelView): def get_cost(self, name): cost = Decimal(0) for input_ in self.inputs: + if input_.state == 'cancelled': + continue if input_.cost_price is not None: cost_price = input_.cost_price else: @@ -472,7 +474,8 @@ class Production(ShipmentAssignMixin, Workflow, ModelSQL, ModelView): for input_ in self.inputs: if (input_.product is None or input_.uom is None - or input_.quantity is None): + or input_.quantity is None + or input_.state == 'cancelled'): continue product = input_.product quantity = Uom.compute_qty(input_.uom, input_.quantity, @@ -551,6 +554,8 @@ class Production(ShipmentAssignMixin, Workflow, ModelSQL, ModelView): input_quantities = defaultdict(Decimal) input_costs = defaultdict(Decimal) for input_ in production.inputs: + if input_.state == 'cancelled': + continue if input_.cost_price is not None: cost_price = input_.cost_price else: @@ -561,7 +566,8 @@ class Production(ShipmentAssignMixin, Workflow, ModelSQL, ModelView): Decimal(str(input_.internal_quantity)) * cost_price) outputs = [] for output in production.outputs: - if output.to_location.type == 'lost_found': + if (output.to_location.type == 'lost_found' + or output.state == 'cancelled'): continue product = output.product if input_quantities.get(output.product):