From c321f6439dc304bad32ed9b1085ed3fc0e329007 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 31 Mar 2009 14:22:45 +0200 Subject: [PATCH] Call workflow of purchase when deleting moves Improve workflow test on write of move --- purchase.py | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/purchase.py b/purchase.py index ee67031dfa..46d340ca70 100644 --- a/purchase.py +++ b/purchase.py @@ -1667,19 +1667,43 @@ class Move(ModelSQL, ModelView): res = super(Move, self).write(cursor, user, ids, vals, context=context) if 'state' in vals and vals['state'] in ('cancel',): - purchase_ids = [] + if isinstance(ids, (int, long)): + ids = [ids] + purchase_ids = set() purchase_line_ids = purchase_line_obj.search(cursor, user, [ ('moves', 'in', ids), ], context=context) if purchase_line_ids: for purchase_line in purchase_line_obj.browse(cursor, user, purchase_line_ids, context=context): - if purchase_line.purchase.id not in purchase_ids: - purchase_ids.append(purchase_line.purchase.id) - purchase_obj.workflow_trigger_validate(cursor, user, purchase_ids, - 'packing_update', context=context) + purchase_ids.add(purchase_line.purchase.id) + if purchase_ids: + purchase_obj.workflow_trigger_validate(cursor, user, + list(purchase_ids), 'packing_update', context=context) return res + def delete(self, cursor, user, ids, context=None): + purchase_obj = self.pool.get('purchase.purchase') + purchase_line_obj = self.pool.get('purchase.line') + + if isinstance(ids, (int, long)): + ids = [ids] + + purchase_ids = set() + purchase_line_ids = purchase_line_obj.search(cursor, user, [ + ('moves', 'in', ids), + ], context=context) + + res = super(Move, self).delete(cursor, user, ids, context=context) + + if purchase_line_ids: + for purchase_line in purchase_line_obj.browse(cursor, user, + purchase_line_ids, context=context): + purchase_ids.add(purchase_line.purchase.id) + if purchase_ids: + purchase_obj.workflow_trigger_validate(cursor, user, + list(purchase_ids), 'packing_update', context=context) + return res Move()