From cff93674bbd3a3fabc31fb1e6cb1abd0ed9e7f49 Mon Sep 17 00:00:00 2001 From: Rucha Patel Date: Mon, 6 Oct 2008 16:26:20 +0530 Subject: [PATCH] Override Unlink function to delete only Draft Procurement,Stock Moves,Stock Picking,Purchase Order bzr revid: ruchakpatel@gmail.com-20081006105620-6jjkeb92qy1vwio4 --- addons/mrp/mrp.py | 12 ++++++++++++ addons/purchase/purchase.py | 13 ++++++++++++- addons/stock/stock.py | 23 ++++++++++++++++++++++- 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index 11aad76fc40..a5b0f0fa24e 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -727,6 +727,18 @@ class mrp_procurement(osv.osv): 'close_move': lambda *a: 0, 'procure_method': lambda *a: 'make_to_order', } + + def unlink(self, cr, uid, ids): + procurements = self.read(cr, uid, ids, ['state']) + unlink_ids = [] + for s in procurements: + if s['state'] in ['draft','cancel']: + unlink_ids.append(s['id']) + else: + raise osv.except_osv(_('Invalid action !'), _('Cannot delete Procurement Order(s) which are in %s State!' % s['state'])) + osv.osv.unlink(self, cr, uid, unlink_ids) + return True + def check_product(self, cr, uid, ids): for procurement in self.browse(cr, uid, ids): if procurement.product_id.type in ('product', 'consu'): diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index d0f2951de54..9227c989913 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -206,7 +206,18 @@ class purchase_order(osv.osv): _name = "purchase.order" _description = "Purchase order" _order = "name desc" - + + def unlink(self, cr, uid, ids): + purchase_orders = self.read(cr, uid, ids, ['state']) + unlink_ids = [] + for s in purchase_orders: + if s['state'] in ['draft','cancel']: + unlink_ids.append(s['id']) + else: + raise osv.except_osv(_('Invalid action !'), _('Cannot delete Purchase Order(s) which are in %s State!' % s['state'])) + osv.osv.unlink(self, cr, uid, unlink_ids) + return True + def button_dummy(self, cr, uid, ids, context={}): return True diff --git a/addons/stock/stock.py b/addons/stock/stock.py index e3decf04c8f..90ead58b451 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -406,7 +406,17 @@ class stock_picking(osv.osv): #def copy(self, cr, uid, id, data=None, context={}): # data = data or {} # return super(stock_picking, self).copy(cr, uid, id, data, context) - + def unlink(self, cr, uid, ids): + pickings = self.read(cr, uid, ids, ['state']) + unlink_ids = [] + for s in pickings: + if s['state'] in ['draft','cancel']: + unlink_ids.append(s['id']) + else: + raise osv.except_osv(_('Invalid action !'), _('Cannot delete Picking(s) which are in %s State!' % s['state'])) + osv.osv.unlink(self, cr, uid, unlink_ids) + return True + def onchange_partner_in(self, cr, uid, context, partner_id=None): sid = self.pool.get('res.partner.address').browse(cr, uid, partner_id, context).partner_id.property_stock_supplier.id return { } @@ -874,6 +884,17 @@ class stock_move(osv.osv): 'You try to assign a lot which is not from the same product', ['prodlot_id'])] +# def unlink(self, cr, uid, ids): +# moves = self.read(cr, uid, ids, ['state']) +# unlink_ids = [] +# for s in moves: +# if s['state'] in ['draft','cancel']: +# unlink_ids.append(s['id']) +# else: +# raise osv.except_osv(_('Invalid action !'), _('Cannot delete Stock Move(s) which are in %s State!' % s['state'])) +# osv.osv.unlink(self, cr, uid, unlink_ids) +# return True + def _default_location_destination(self, cr, uid, context={}): if context.get('move_line', []): return context['move_line'][0][2]['location_dest_id']