Fix computation of cost price and always update customer move

The cost computation was broken by changeset 471ad47d4129.

issue7282
review44241002
This commit is contained in:
Cédric Krier committed 2018-03-29 20:23:34 +02:00
1 parent 737b769949
commit 2a1497d40f
2 files changed
+15 -2

No files matched your search

+4 -2
View File
@@ -453,6 +453,7 @@ class ShipmentDrop(Workflow, ModelSQL, ModelView):
c_move.uom, c_move.quantity, c_move.product.default_uom,
round=False)
s_product_qty = defaultdict(lambda: 0)
for s_move in shipment.supplier_moves:
if s_move.state == 'cancel':
continue
@@ -464,6 +465,7 @@ class ShipmentDrop(Workflow, ModelSQL, ModelView):
quantity = UoM.compute_qty(
s_move.uom, s_move.quantity, s_move.product.default_uom,
round=False)
s_product_qty[s_move.product] += quantity
if product_qty[s_move.product]:
if quantity <= product_qty[s_move.product]:
product_qty[s_move.product] -= quantity
@@ -489,7 +491,7 @@ class ShipmentDrop(Workflow, ModelSQL, ModelView):
to_save.append(new_customer_move)
for product, cost in product_cost.iteritems():
qty = Decimal(str(product_qty[product]))
qty = Decimal(str(s_product_qty[product]))
if qty:
product_cost[product] = (cost / qty).quantize(cost_exp)
for c_move in list(shipment.customer_moves) + to_save:
@@ -508,7 +510,7 @@ class ShipmentDrop(Workflow, ModelSQL, ModelView):
c_move.quantity = max(
0, c_move.uom.round(c_move.quantity - exc_qty))
product_qty[c_move.product] -= removed_qty
to_save.append(c_move)
to_save.append(c_move)
if to_save:
Move.save(to_save)
@@ -109,6 +109,8 @@ Create product::
>>> template.supply_on_sale = True
>>> template.save()
>>> product, = template.products
>>> product.cost_price = Decimal('4')
>>> product.save()
>>> product_supplier = ProductSupplier()
>>> product_supplier.product = template
>>> product_supplier.party = supplier
@@ -157,6 +159,8 @@ Create Purchase from Request::
>>> purchase.delivery_address == sale.shipment_address
True
>>> purchase.payment_term = payment_term
>>> purchase_line, = purchase.lines
>>> purchase_line.unit_price = Decimal('3.0000')
>>> purchase.click('quote')
>>> purchase.click('confirm')
>>> purchase.click('process')
@@ -174,7 +178,14 @@ Receiving only 100 products::
>>> set_user(stock_user)
>>> move, = shipment.supplier_moves
>>> move.quantity = 100
>>> move.unit_price
Decimal('3.0000')
>>> shipment.click('ship')
>>> move, = shipment.customer_moves
>>> move.unit_price
Decimal('10.0000')
>>> move.cost_price
Decimal('3.0000')
>>> set_user(sale_user)
>>> sale.reload()
>>> sale.shipments