From aba533ced0abdf04371b279003d9be6fd4dcb587 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 31 Mar 2009 14:26:46 +0200 Subject: [PATCH] Call workflow of sale when deleting moves Improve workflow test on write of move --- sale.py | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/sale.py b/sale.py index 5aeb705f7e..84055ba6b2 100644 --- a/sale.py +++ b/sale.py @@ -1546,17 +1546,42 @@ class Move(ModelSQL, ModelView): res = super(Move, self).write(cursor, user, ids, vals, context=context) if 'state' in vals and vals['state'] in ('cancel',): - sale_ids = [] + if isinstance(ids, (int, long)): + ids = [ids] + sale_ids = set() sale_line_ids = sale_line_obj.search(cursor, user, [ ('moves', 'in', ids), ], context=context) if sale_line_ids: for sale_line in sale_line_obj.browse(cursor, user, sale_line_ids, context=context): - if sale_line.sale.id not in sale_ids: - sale_ids.append(sale_line.sale.id) - sale_obj.workflow_trigger_validate(cursor, user, sale_ids, - 'packing_update', context=context) + sale_ids.add(sale_line.sale.id) + if sale_ids: + sale_obj.workflow_trigger_validate(cursor, user, list(sale_ids), + 'packing_update', context=context) + return res + + def delete(self, cursor, user, ids, context=None): + sale_obj = self.pool.get('sale.sale') + sale_line_obj = self.pool.get('sale.line') + + if isinstance(ids, (int, long)): + ids = [ids] + + sale_ids = set() + sale_line_ids = sale_line_obj.search(cursor, user, [ + ('moves', 'in', ids), + ], context=context) + + res = super(Move, self).delete(cursor, user, ids, context=context) + + if sale_line_ids: + for sale_line in sale_line_obj.browse(cursor, user, + sale_line_ids, context=context): + sale_ids.add(sale_line.sale.id) + if sale_ids: + sale_obj.workflow_trigger_validate(cursor, user, list(sale_ids), + 'packing_update', context=context) return res Move()