From 61aa8dd446ee4d87d392faf793df065d1c07eec2 Mon Sep 17 00:00:00 2001 From: mso Date: Tue, 11 May 2010 17:23:03 +0530 Subject: [PATCH] [IMP] stock: Task-590 Improve receive products, Tracking Lot improvements bzr revid: mso@mso-20100511115303-z3unhyzno54702wf --- addons/stock/stock.py | 36 +++++++++++++++++++---- addons/stock/stock_view.xml | 2 +- addons/stock/wizard/stock_partial_move.py | 7 ++++- 3 files changed, 38 insertions(+), 7 deletions(-) diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 185f4715ce9..870867d3267 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -350,7 +350,21 @@ stock_location() class stock_tracking(osv.osv): _name = "stock.tracking" _description = "Stock Tracking Lots" - + + def get_create_tracking_lot(self, cr, uid, ids, context): + tracking_id = context.get('tracking_id', False) + tracking_id_list = self.search(cr, uid, [('name', '=', tracking_id)], + limit=1) + if tracking_id_list: + tracking_id = tracking_id_list[0] + tracking_obj = self.browse(cr, uid, tracking_id) + if not tracking_obj: + tracking_lot_vals = { + 'name': tracking_id + } + tracking_id = self.create(cr, uid, tracking_lot_vals, + context=context) + return tracking_id def checksum(sscc): salt = '31' * 8 + '3' sum = 0 @@ -1602,7 +1616,12 @@ class stock_move(osv.osv): 'line_id': lines, 'ref': ref, }) - self.write(cr, uid, ids, {'state': 'done', 'date_planned': time.strftime('%Y-%m-%d %H:%M:%S')}) + tracking_id = context.get('tracking_id', False) + if tracking_id: + tracking = self.pool.get('stock.tracking') + tracking_id = tracking.get_create_tracking_lot(cr, uid,[rec_id], context=context ) + + self.write(cr, uid, ids, {'state': 'done', 'date_planned': time.strftime('%Y-%m-%d %H:%M:%S'), 'tracking_id': tracking_id}) for pick in self.pool.get('stock.picking').browse(cr, uid, picking_ids): if all(move.state == 'done' for move in pick.move_lines): self.pool.get('stock.picking').action_done(cr, uid, [pick.id]) @@ -1819,7 +1838,8 @@ class stock_move(osv.osv): partner_id = partial_datas.get('partner_id', False) address_id = partial_datas.get('address_id', False) delivery_date = partial_datas.get('delivery_date', False) - + tracking_id = context.get('tracking_id', False) + new_moves = [] complete, too_many, too_few = [], [], [] @@ -1835,6 +1855,10 @@ class stock_move(osv.osv): product_price = partial_data.get('product_price',0.0) product_currency = partial_data.get('product_currency',False) if move.product_qty == product_qty: + self.write(cr, uid, move.id, + { + 'tracking_id': tracking_id + }) complete.append(move) elif move.product_qty > product_qty: too_few.append(move) @@ -1879,6 +1903,7 @@ class stock_move(osv.osv): 'state': 'assigned', 'move_dest_id': False, 'price_unit': move.price_unit, + 'tracking_id': tracking_id, }) complete.append(self.browse(cr, uid, new_move)) self.write(cr, uid, move.id, @@ -1892,12 +1917,13 @@ class stock_move(osv.osv): self.write(cr, uid, move.id, { 'product_qty': move.product_qty, - 'product_uos_qty': move.product_qty + 'product_uos_qty': move.product_qty, + 'tracking_id': tracking_id }) complete.append(move) for move in complete: - self.action_done(cr, uid, [move.id]) + self.action_done(cr, uid, [move.id], context) # TOCHECK : Done picking if all moves are done cr.execute(""" diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index 62d36f2da92..efe95adbff7 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -1493,7 +1493,7 @@ - + diff --git a/addons/stock/wizard/stock_partial_move.py b/addons/stock/wizard/stock_partial_move.py index bf8d1058aa2..dc4e6d465db 100644 --- a/addons/stock/wizard/stock_partial_move.py +++ b/addons/stock/wizard/stock_partial_move.py @@ -186,6 +186,12 @@ class stock_partial_move(osv.osv_memory): return res def do_partial(self, cr, uid, ids, context): + rec_id = context and context.get('active_id', False) + tracking_id = context.get('tracking_id', False) + if tracking_id: + tracking = self.pool.get('stock.tracking') + tracking_id = tracking.get_create_tracking_lot(cr, uid,[rec_id], context=context ) + context ['tracking_id'] = tracking_id move_obj = self.pool.get('stock.move') move_ids = context.get('active_ids', False) partial = self.browse(cr, uid, ids[0], context) @@ -208,7 +214,6 @@ class stock_partial_move(osv.osv_memory): 'product_price' : getattr(partial, 'move%s_product_price'%(m.id)), 'product_currency': getattr(partial, 'move%s_product_currency'%(m.id)).id }) - res = move_obj.do_partial(cr, uid, move_ids, partial_datas, context=context) return {}