diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 6d134f4f200..8e9adb74f32 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -434,6 +434,7 @@ class PurchaseOrderLine(models.Model): @api.depends('order_id.state', 'move_ids.state') def _compute_qty_received(self): + ProductUom = self.env['product.uom'] for line in self: if line.order_id.state not in ['purchase', 'done']: line.qty_received = 0.0 @@ -444,7 +445,10 @@ class PurchaseOrderLine(models.Model): total = 0.0 for move in line.move_ids: if move.state == 'done': - total += move.product_uom_qty + if move.product_uom != line.product_uom: + total += ProductUom._compute_qty_obj(move.product_uom, move.product_uom_qty, line.product_uom) + else: + total += move.product_uom_qty line.qty_received = total name = fields.Text(string='Description', required=True) diff --git a/addons/purchase/stock.py b/addons/purchase/stock.py index 791672b1dfc..b0486950f26 100644 --- a/addons/purchase/stock.py +++ b/addons/purchase/stock.py @@ -12,6 +12,14 @@ class stock_picking(osv.osv): readonly=True, relation="many2one"), } + def _prepare_values_extra_move(self, cr, uid, op, product, remaining_qty, context=None): + res = super(stock_picking, self)._prepare_values_extra_move(cr, uid, op, product, remaining_qty, context=context) + for m in op.linked_move_operation_ids: + if m.move_id.purchase_line_id and m.move_id.product_id == product: + res['purchase_line_id'] = m.move_id.purchase_line_id.id + break + return res + class stock_move(osv.osv): _inherit = 'stock.move'