Fix caluclation of average price of consumed articles
This commit is contained in:
parent
77f2e9cb46
commit
89a732c09b
@ -256,6 +256,7 @@ class ProductInPeriod(object):
|
|||||||
consumed_before_period = _get_total_consumption_until(self._product, date_from)
|
consumed_before_period = _get_total_consumption_until(self._product, date_from)
|
||||||
|
|
||||||
real_consumptions = max(self.get_real_consumption(), 0)
|
real_consumptions = max(self.get_real_consumption(), 0)
|
||||||
|
remaining_consumptions = real_consumptions
|
||||||
|
|
||||||
orders = self._product.order_set.order_by("incoming_invoice__date").values_list("count", "each_cents")
|
orders = self._product.order_set.order_by("incoming_invoice__date").values_list("count", "each_cents")
|
||||||
if orders.count() == 0:
|
if orders.count() == 0:
|
||||||
@ -263,17 +264,18 @@ class ProductInPeriod(object):
|
|||||||
else:
|
else:
|
||||||
quantities, prices = zip(*orders)
|
quantities, prices = zip(*orders)
|
||||||
quantities, prices = list(quantities), list(prices)
|
quantities, prices = list(quantities), list(prices)
|
||||||
still_there = 0
|
|
||||||
# filter out all already billed quantities
|
# filter out all already billed quantities
|
||||||
for i in range(len(quantities)):
|
for i in range(len(quantities)):
|
||||||
v = min(consumed_before_period, quantities[i])
|
|
||||||
if consumed_before_period > 0:
|
if consumed_before_period > 0:
|
||||||
|
v = min(consumed_before_period, quantities[i])
|
||||||
consumed_before_period -= v
|
consumed_before_period -= v
|
||||||
quantities[i] -= v
|
quantities[i] -= v
|
||||||
if consumed_before_period == 0:
|
if consumed_before_period == 0:
|
||||||
still_there += max(quantities[i] - real_consumptions, 0)
|
v = min(quantities[i], remaining_consumptions)
|
||||||
quantities[i] -= max(quantities[i] - real_consumptions, 0)
|
quantities[i] = v
|
||||||
real_consumptions -= v
|
remaining_consumptions -= v
|
||||||
|
|
||||||
|
assert(sum(quantities) == real_consumptions)
|
||||||
if sum(quantities) == 0:
|
if sum(quantities) == 0:
|
||||||
return 0
|
return 0
|
||||||
return sum([quantities[i] * prices[i] for i in range(len(prices))]) / sum(quantities)
|
return sum([quantities[i] * prices[i] for i in range(len(prices))]) / sum(quantities)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user