diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index a1a901bf41e..07f7d64a893 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -1132,7 +1132,11 @@ class procurement_order(osv.osv): def propagate_cancel(self, cr, uid, procurement, context=None): if procurement.rule_id.action == 'buy' and procurement.purchase_line_id: - self.pool.get('purchase.order.line').action_cancel(cr, uid, [procurement.purchase_line_id.id], context=context) + purchase_line_obj = self.pool.get('purchase.order.line') + if procurement.purchase_line_id.product_qty <= procurement.product_qty: + purchase_line_obj.action_cancel(cr, uid, [procurement.purchase_line_id.id], context=context) + else: + purchase_line_obj.write(cr, uid, [procurement.purchase_line_id.id], {'product_qty': procurement.pruchase_line_id.product_qty - procurement.product_qty}, context=context) return super(procurement_order, self).propagate_cancel(cr, uid, procurement, context=context) def _run(self, cr, uid, procurement, context=None):