diff --git a/addons/sale/sale.py b/addons/sale/sale.py index e5fcb1334fc..29cd5ea593a 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -559,12 +559,19 @@ class sale_order(osv.osv): if context is None: context = {} sale_order_line_obj = self.pool.get('sale.order.line') + proc_obj = self.pool.get('procurement.order') for sale in self.browse(cr, uid, ids, context=context): for pick in sale.picking_ids: if pick.state not in ('draft', 'cancel'): raise osv.except_osv( _('Could not cancel sales order !'), _('You must first cancel all picking attached to this sales order.')) + if pick.state == 'cancel': + for mov in pick.move_lines: + proc_ids = proc_obj.search(cr, uid, [('move_id', '=', mov.id)]) + if proc_ids: + for proc in proc_ids: + wf_service.trg_validate(uid, 'procurement.order', proc, 'button_check', cr) for r in self.read(cr, uid, ids, ['picking_ids']): for pick in r['picking_ids']: wf_service.trg_validate(uid, 'stock.picking', pick, 'button_cancel', cr)