From 45d16c353fe519de2ad3b6f6ee84d898668bc604 Mon Sep 17 00:00:00 2001 From: "Jay Vora (OpenERP)" Date: Wed, 18 May 2011 21:10:44 +0530 Subject: [PATCH] [REF] Stock : Improvements bzr revid: jvo@tinyerp.com-20110518154044-3aezl416bn2fd60x --- addons/stock/stock.py | 54 +++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 571edbb78ba..5591b0e6333 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -385,6 +385,7 @@ class stock_location(osv.osv): amount = 0.0 if context is None: context = {} + pool_uom = self.pool.get('product.uom') for id in self.search(cr, uid, [('location_id', 'child_of', ids)]): if lock: try: @@ -439,8 +440,9 @@ class stock_location(osv.osv): total = 0.0 results2 = 0.0 + for r in results: - amount = self.pool.get('product.uom')._compute_qty(cr, uid, r['product_uom'], r['product_qty'], context.get('uom', False)) + amount = pool_uom._compute_qty(cr, uid, r['product_uom'], r['product_qty'], context.get('uom', False)) results2 += amount total += amount @@ -520,8 +522,8 @@ class stock_tracking(osv.osv): @param context: A standard dictionary @return: A dictionary of values """ - value={} - value=self.pool.get('action.traceability').action_traceability(cr,uid,ids,context) + value = {} + value = self.pool.get('action.traceability').action_traceability(cr,uid,ids,context) return value stock_tracking() @@ -681,13 +683,13 @@ class stock_picking(osv.osv): default = {} default = default.copy() picking_obj = self.browse(cr, uid, id, context=context) - move_obj=self.pool.get('stock.move') + move_obj = self.pool.get('stock.move') if ('name' not in default) or (picking_obj.name=='/'): seq_obj_name = 'stock.picking.' + picking_obj.type default['name'] = self.pool.get('ir.sequence').get(cr, uid, seq_obj_name) default['origin'] = '' default['backorder_id'] = False - res=super(stock_picking, self).copy(cr, uid, id, default, context) + res = super(stock_picking, self).copy(cr, uid, id, default, context) if res: picking_obj = self.browse(cr, uid, res, context=context) for move in picking_obj.move_lines: @@ -726,11 +728,12 @@ class stock_picking(osv.osv): """ Changes state of picking to available if all moves are confirmed. @return: True """ + move_obj = self.pool.get('stock.move') for pick in self.browse(cr, uid, ids): move_ids = [x.id for x in pick.move_lines if x.state == 'confirmed'] if not move_ids: raise osv.except_osv(_('Warning !'),_('Not enough stock, unable to reserve the products.')) - self.pool.get('stock.move').action_assign(cr, uid, move_ids) + move_obj.action_assign(cr, uid, move_ids) return True def force_assign(self, cr, uid, ids, *args): @@ -738,9 +741,10 @@ class stock_picking(osv.osv): @return: True """ wf_service = netsvc.LocalService("workflow") + move_obj = self.pool.get('stock.move') for pick in self.browse(cr, uid, ids): move_ids = [x.id for x in pick.move_lines if x.state in ['confirmed','waiting']] - self.pool.get('stock.move').force_assign(cr, uid, move_ids) + move_obj.force_assign(cr, uid, move_ids) wf_service.trg_write(uid, 'stock.picking', pick.id, cr) return True @@ -761,10 +765,11 @@ class stock_picking(osv.osv): @return: True """ wf_service = netsvc.LocalService("workflow") + move_obj = self.pool.get('stock.move') self.draft_force_assign(cr, uid, ids) for pick in self.browse(cr, uid, ids, context=context): move_ids = [x.id for x in pick.move_lines] - self.pool.get('stock.move').force_assign(cr, uid, move_ids) + move_obj.force_assign(cr, uid, move_ids) wf_service.trg_write(uid, 'stock.picking', pick.id, cr) return self.action_process( cr, uid, ids, context=context) @@ -773,9 +778,10 @@ class stock_picking(osv.osv): @return: True """ wf_service = netsvc.LocalService("workflow") + move_obj = self.pool.get('stock.move') for pick in self.browse(cr, uid, ids): move_ids = [x.id for x in pick.move_lines] - self.pool.get('stock.move').cancel_assign(cr, uid, move_ids) + move_obj.cancel_assign(cr, uid, move_ids) wf_service.trg_write(uid, 'stock.picking', pick.id, cr) return True @@ -791,8 +797,9 @@ class stock_picking(osv.osv): """ Tests whether the move is in done or cancel state or not. @return: True or False """ - move_ids = self.pool.get('stock.move').search(cr, uid, [('picking_id', 'in', ids)]) - for move in self.pool.get('stock.move').browse(cr, uid, move_ids): + move_obj = self.pool.get('stock.move') + move_ids = move_obj.search(cr, uid, [('picking_id', 'in', ids)]) + for move in move_obj.browse(cr, uid, move_ids): if move.state not in ('done', 'cancel'): if move.product_qty != 0.0: @@ -820,9 +827,10 @@ class stock_picking(osv.osv): """ Changes picking state to cancel. @return: True """ + move_obj = self.pool.get('stock.move') for pick in self.browse(cr, uid, ids, context=context): ids2 = [move.id for move in pick.move_lines] - self.pool.get('stock.move').action_cancel(cr, uid, ids2, context) + move_obj.action_cancel(cr, uid, ids2, context) self.write(cr, uid, ids, {'state': 'cancel', 'invoice_state': 'none'}) self.log_picking(cr, uid, ids, context=context) return True @@ -841,13 +849,14 @@ class stock_picking(osv.osv): """ Changes move state to assigned. @return: True """ + move_obj = self.pool.get('stock.move') for pick in self.browse(cr, uid, ids, context=context): todo = [] for move in pick.move_lines: if move.state == 'assigned': todo.append(move.id) if len(todo): - self.pool.get('stock.move').action_done(cr, uid, todo, + move_obj.action_done(cr, uid, todo, context=context) return True @@ -1420,7 +1429,7 @@ class stock_production_lot(osv.osv): @param context: A standard dictionary @return: A dictionary of values """ - value=self.pool.get('action.traceability').action_traceability(cr,uid,ids,context) + value = self.pool.get('action.traceability').action_traceability(cr,uid,ids,context) return value stock_production_lot() @@ -1808,6 +1817,7 @@ class stock_move(osv.osv): res_obj = self.pool.get('res.company') location_obj = self.pool.get('stock.location') move_obj = self.pool.get('stock.move') + picking_obj = self.pool.get('stock.picking') wf_service = netsvc.LocalService("workflow") new_moves = [] if context is None: @@ -1823,7 +1833,7 @@ class stock_move(osv.osv): old_ptype = location_obj.picking_type_get(cr, uid, picking.move_lines[0].location_id, picking.move_lines[0].location_dest_id) if old_ptype != picking.type: old_pick_name = seq_obj.get(cr, uid, 'stock.picking.' + old_ptype) - self.pool.get('stock.picking').write(cr, uid, [picking.id], {'name': old_pick_name}, context=context) + picking_obj.write(cr, uid, [picking.id], {'name': old_pick_name}, context=context) else: pickid = False for move, (loc, dummy, delay, dummy, company_id, ptype) in todo: @@ -1855,10 +1865,6 @@ class stock_move(osv.osv): """ moves = self.browse(cr, uid, ids, context=context) self.write(cr, uid, ids, {'state': 'confirmed'}) - res_obj = self.pool.get('res.company') - location_obj = self.pool.get('stock.location') - move_obj = self.pool.get('stock.move') - wf_service = netsvc.LocalService("workflow") self.create_chained_picking(cr, uid, moves, context) return [] @@ -1959,6 +1965,7 @@ class stock_move(osv.osv): if context is None: context = {} pickings = {} + picking_obj = self.pool.get('stock.picking') for move in self.browse(cr, uid, ids, context=context): if move.state in ('confirmed', 'waiting', 'assigned', 'draft'): if move.picking_id: @@ -1970,9 +1977,9 @@ class stock_move(osv.osv): wf_service.trg_write(uid, 'stock.picking', move.move_dest_id.picking_id.id, cr) self.write(cr, uid, ids, {'state': 'cancel', 'move_dest_id': False}) if not context.get('call_unlink',False): - for pick in self.pool.get('stock.picking').browse(cr, uid, pickings.keys()): + for pick in picking_obj.browse(cr, uid, pickings.keys()): if all(move.state == 'cancel' for move in pick.move_lines): - self.pool.get('stock.picking').write(cr, uid, [pick.id], {'state': 'cancel'}) + picking_obj.write(cr, uid, [pick.id], {'state': 'cancel'}) wf_service = netsvc.LocalService("workflow") for id in ids: @@ -2232,6 +2239,7 @@ class stock_move(osv.osv): if quantity <= 0: raise osv.except_osv(_('Warning!'), _('Please provide a positive quantity to scrap!')) res = [] + product_obj = self.pool.get('product.product') for move in self.browse(cr, uid, ids, context=context): move_qty = move.product_qty uos_qty = quantity / move_qty * move.product_uos_qty @@ -2249,7 +2257,7 @@ class stock_move(osv.osv): new_move = self.copy(cr, uid, move.id, default_val) res += [new_move] - product_obj = self.pool.get('product.product') + for (id, name) in product_obj.name_get(cr, uid, [move.product_id.id]): self.log(cr, uid, move.id, "%s x %s %s" % (move.product_qty, name, _("were scrapped"))) @@ -2333,6 +2341,7 @@ class stock_move(osv.osv): if quantity <= 0: raise osv.except_osv(_('Warning!'), _('Please provide Proper Quantity !')) res = [] + product_obj = self.pool.get('product.product') for move in self.browse(cr, uid, ids, context=context): move_qty = move.product_qty if move_qty <= 0: @@ -2379,7 +2388,6 @@ class stock_move(osv.osv): } self.write(cr, uid, [move.id], update_val) - product_obj = self.pool.get('product.product') for new_move in self.browse(cr, uid, res, context=context): for (id, name) in product_obj.name_get(cr, uid, [new_move.product_id.id]): message = _('Product ') + " '" + name + "' "+ _("is consumed with") + " '" + str(new_move.product_qty) + "' "+ _("quantity.")