From b3c30216a3daaa3a863253e4ae2d271e6c77cb19 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 | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/sale.py b/sale.py index da328a77a8..56c2aba213 100644 --- a/sale.py +++ b/sale.py @@ -1420,20 +1420,44 @@ class Move(OSV): 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_ids.add(sale_line.sale.id) for sale_id in sale_ids: workflow_service.trg_validate(user, 'sale.sale', sale_id, 'packing_update', cursor, 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) + for sale_id in sale_ids: + workflow_service.trg_validate(user, 'sale.sale', + sale_id, 'packing_update', cursor, context=context) + return res + Move()