From bdd050b04f79efeec325d5b28d1f4c499eb9b406 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Mon, 9 Oct 2017 16:49:57 +0200 Subject: [PATCH] Cancel the shipments before deleting it issue6832 review42711002 --- stock.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/stock.py b/stock.py index bd76ab5480..2112277e0d 100644 --- a/stock.py +++ b/stock.py @@ -272,6 +272,8 @@ class ShipmentDrop(Workflow, ModelSQL, ModelView): cls._error_messages.update({ 'reset_move': ('You cannot reset to draft move "%s" which was ' 'generated by a sale or a purchase.'), + 'delete_cancel': ('Drop Shipment "%(shipment)s" must be ' + 'cancelled before deletion.'), }) @staticmethod @@ -386,6 +388,20 @@ class ShipmentDrop(Workflow, ModelSQL, ModelView): default['moves'] = None return super(ShipmentDrop, cls).copy(shipments, default=default) + @classmethod + def delete(cls, shipments): + pool = Pool() + Move = pool.get('stock.move') + + cls.cancel(shipments) + for shipment in shipments: + if shipment.state != 'cancel': + cls.raise_user_error('delete_cancel', { + 'shipment': shipment.rec_name, + }) + Move.delete([m for s in shipments for m in s.supplier_moves]) + super(ShipmentDrop, cls).delete(shipments) + @classmethod @ModelView.button @Workflow.transition('cancel')