Not round compute_qty and fix balance difference condition

#041319
This commit is contained in:
Raimon Esteve 2020-10-01 08:48:44 +02:00
parent bedda8594d
commit 32e3e5783e
1 changed files with 12 additions and 12 deletions

View File

@ -27,17 +27,17 @@ class Production(metaclass=PoolMeta):
digits = self.on_change_with_unit_digits() digits = self.on_change_with_unit_digits()
quantity = 0.0 quantity = 0.0
for move in getattr(self, 'outputs' if direction == 'backward' else 'inputs'): for move in getattr(self, 'outputs' if direction == 'backward' else 'inputs'):
if move.product == requested_product: if move.product == requested_product:
# skip moves that same product but different lot # skip moves that same product but different lot
if lot and lot != move.lot: if lot and lot != move.lot:
continue continue
quantity += Uom.compute_qty(move.uom, move.quantity, move.product.default_uom, True) quantity += Uom.compute_qty(move.uom, move.quantity, move.product.default_uom, False)
moves = {} moves = {}
for move in getattr(self, 'inputs' if direction == 'backward' else 'outputs'): for move in getattr(self, 'inputs' if direction == 'backward' else 'outputs'):
product = move.product product = move.product
mqty = Uom.compute_qty( mqty = Uom.compute_qty(
move.uom, move.quantity, move.product.default_uom, True) move.uom, move.quantity, move.product.default_uom, False)
if moves.get(product): if moves.get(product):
moves[product] += mqty moves[product] += mqty
else: else:
@ -62,14 +62,14 @@ class Production(metaclass=PoolMeta):
if bm.product == product: if bm.product == product:
default_uom = self.product.default_uom default_uom = self.product.default_uom
bqty = Uom.compute_qty( bqty = Uom.compute_qty(
bm.uom, bm.quantity, bm.product.default_uom, True) bm.uom, bm.quantity, bm.product.default_uom, False)
factor = bom.compute_factor(self.product, bqty, default_uom) factor = bom.compute_factor(self.product, bqty, default_uom)
balance_plan_consumption = default_uom.ceil(self.quantity * factor) balance_plan_consumption = default_uom.ceil(self.quantity * factor)
break break
balance_difference = round(qty - balance_plan_consumption, digits) balance_difference = round(qty - balance_plan_consumption, digits)
if balance_difference and balance_consumption: if balance_consumption and balance_plan_consumption:
balance_difference_percent = ((balance_consumption - balance_plan_consumption) / balance_consumption) * 100 balance_difference_percent = ((balance_consumption - balance_plan_consumption) / balance_plan_consumption) * 100
item['balance_quantity'] = balance_quantity item['balance_quantity'] = balance_quantity
item['balance_consumption'] += balance_consumption item['balance_consumption'] += balance_consumption
item['balance_plan_consumption'] += balance_plan_consumption item['balance_plan_consumption'] += balance_plan_consumption
@ -88,14 +88,14 @@ class Production(metaclass=PoolMeta):
if bm.product == requested_product: if bm.product == requested_product:
default_uom = self.product.default_uom default_uom = self.product.default_uom
bqty = Uom.compute_qty( bqty = Uom.compute_qty(
bm.uom, bm.quantity, bm.product.default_uom, True) bm.uom, bm.quantity, bm.product.default_uom, False)
factor = bom.compute_factor(self.product, bqty, default_uom) factor = bom.compute_factor(self.product, bqty, default_uom)
balance_plan_consumption = default_uom.ceil(self.quantity * factor) balance_plan_consumption = default_uom.ceil(self.quantity * factor)
break break
balance_difference = round(quantity - balance_plan_consumption, digits) balance_difference = round(quantity - balance_plan_consumption, digits)
if balance_difference and balance_consumption: if balance_consumption and balance_plan_consumption:
balance_difference_percent = ((balance_consumption - balance_plan_consumption) / balance_consumption) * 100 balance_difference_percent = ((balance_consumption - balance_plan_consumption) / balance_plan_consumption) * 100
item['balance_quantity'] = balance_quantity item['balance_quantity'] = balance_quantity
item['balance_consumption'] += balance_consumption item['balance_consumption'] += balance_consumption
item['balance_plan_consumption'] += balance_plan_consumption item['balance_plan_consumption'] += balance_plan_consumption