[FIX] purchase: set the unit price to zero if requested in the purchase order
If a purchase order is created with free goods (e.g. 5 units offered if 100 are purchased), the price_unit of stock.move and the cost of stock.quant were set to the product cost price instead of zero. This would lead to inconsistencies in the 'Current Inventory Valuation'. opw: 630593
This commit is contained in:
parent
020caa17e4
commit
34c891a426
|
@ -31,6 +31,13 @@ class stock_move(osv.osv):
|
||||||
readonly=True),
|
readonly=True),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_price_unit(self, cr, uid, move, context=None):
|
||||||
|
""" Returns the unit price to store on the quant """
|
||||||
|
if move.purchase_line_id:
|
||||||
|
return move.price_unit
|
||||||
|
|
||||||
|
return super(stock_move, self).get_price_unit(cr, uid, move, context=context)
|
||||||
|
|
||||||
def write(self, cr, uid, ids, vals, context=None):
|
def write(self, cr, uid, ids, vals, context=None):
|
||||||
if isinstance(ids, (int, long)):
|
if isinstance(ids, (int, long)):
|
||||||
ids = [ids]
|
ids = [ids]
|
||||||
|
@ -117,6 +124,13 @@ class stock_move(osv.osv):
|
||||||
"""
|
"""
|
||||||
Attribute price to move, important in inter-company moves or receipts with only one partner
|
Attribute price to move, important in inter-company moves or receipts with only one partner
|
||||||
"""
|
"""
|
||||||
|
# The method attribute_price of the parent class sets the price to the standard product
|
||||||
|
# price if move.price_unit is zero. We don't want this behavior in the case of a purchase
|
||||||
|
# order since we can purchase goods which are free of charge (e.g. 5 units offered if 100
|
||||||
|
# are purchased).
|
||||||
|
if move.purchase_line_id:
|
||||||
|
return
|
||||||
|
|
||||||
code = self.get_code_from_locs(cr, uid, move, context=context)
|
code = self.get_code_from_locs(cr, uid, move, context=context)
|
||||||
if not move.purchase_line_id and code == 'incoming' and not move.price_unit:
|
if not move.purchase_line_id and code == 'incoming' and not move.price_unit:
|
||||||
partner = move.picking_id and move.picking_id.partner_id or False
|
partner = move.picking_id and move.picking_id.partner_id or False
|
||||||
|
|
Loading…
Reference in New Issue