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:
1 parent
737b769949
commit
2a1497d40f
2 files changed
+15
-2
No files matched your search
@@ -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
|
||||
|
||||
Reference in new issue
Block a user