X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=addons%2Fstock%2Fwizard%2Fstock_move.py;h=cebb62d3cf48e3548f68fef2cb0f2ba65a698879;hb=96d14345f337cd22eedc787283f0bc23a9047fc6;hp=73158b5d15ecc2630912e8bfc7a22bc55e8a64dc;hpb=32c6c5229bc96dc91845720f022c11fb952194ef;p=odoo%2Fodoo.git diff --git a/addons/stock/wizard/stock_move.py b/addons/stock/wizard/stock_move.py index 73158b5..cebb62d 100644 --- a/addons/stock/wizard/stock_move.py +++ b/addons/stock/wizard/stock_move.py @@ -21,6 +21,8 @@ from osv import fields, osv +import decimal_precision as dp + class stock_move_track(osv.osv_memory): _name = "stock.move.track" _description = "Track moves" @@ -34,7 +36,7 @@ class stock_move_track(osv.osv_memory): 'quantity': lambda *x: 1 } - def track_lines(self, cr, uid, ids, context={}): + def track_lines(self, cr, uid, ids, context=None): """ To track stock moves lines @param self: The object pointer. @param cr: A database cursor @@ -46,7 +48,7 @@ class stock_move_track(osv.osv_memory): datas = self.read(cr, uid, ids)[0] move_obj = self.pool.get('stock.move') move_obj._track_lines(cr, uid, context['active_id'], datas, context=context) - return {} + return {'type': 'ir.actions.act_window_close'} stock_move_track() @@ -70,6 +72,8 @@ class stock_move_consume(osv.osv_memory): @param context: A standard dictionary @return: default values of fields """ + if context is None: + context = {} res = super(stock_move_consume, self).default_get(cr, uid, fields, context=context) move = self.pool.get('stock.move').browse(cr, uid, context['active_id'], context=context) if 'product_id' in fields: @@ -83,7 +87,7 @@ class stock_move_consume(osv.osv_memory): return res - def do_move_consume(self, cr, uid, ids, context={}): + def do_move_consume(self, cr, uid, ids, context=None): """ To move consumed products @param self: The object pointer. @param cr: A database cursor @@ -92,13 +96,15 @@ class stock_move_consume(osv.osv_memory): @param context: A standard dictionary @return: """ + if context is None: + context = {} move_obj = self.pool.get('stock.move') move_ids = context['active_ids'] for data in self.read(cr, uid, ids): move_obj.action_consume(cr, uid, move_ids, data['product_qty'], data['location_id'], context=context) - return {} + return {'type': 'ir.actions.act_window_close'} stock_move_consume() @@ -121,6 +127,8 @@ class stock_move_scrap(osv.osv_memory): @param context: A standard dictionary @return: default values of fields """ + if context is None: + context = {} res = super(stock_move_consume, self).default_get(cr, uid, fields, context=context) move = self.pool.get('stock.move').browse(cr, uid, context['active_id'], context=context) location_obj = self.pool.get('stock.location') @@ -140,7 +148,7 @@ class stock_move_scrap(osv.osv_memory): return res - def move_scrap(self, cr, uid, ids, context={}): + def move_scrap(self, cr, uid, ids, context=None): """ To move scrapped products @param self: The object pointer. @param cr: A database cursor @@ -149,13 +157,15 @@ class stock_move_scrap(osv.osv_memory): @param context: A standard dictionary @return: """ + if context is None: + context = {} move_obj = self.pool.get('stock.move') move_ids = context['active_ids'] for data in self.read(cr, uid, ids): move_obj.action_scrap(cr, uid, move_ids, data['product_qty'], data['location_id'], context=context) - return {} + return {'type': 'ir.actions.act_window_close'} stock_move_scrap() @@ -173,7 +183,8 @@ class split_in_production_lot(osv.osv_memory): @param context: A standard dictionary @return: Default values of fields """ - + if context is None: + context = {} res = super(split_in_production_lot, self).default_get(cr, uid, fields, context=context) if context.get('active_id'): move = self.pool.get('stock.move').browse(cr, uid, context['active_id'], context=context) @@ -185,15 +196,18 @@ class split_in_production_lot(osv.osv_memory): res.update({'qty': move.product_qty}) if 'use_exist' in fields: res.update({'use_exist': (move.picking_id and move.picking_id.type=='out' and True) or False}) + if 'location_id' in fields: + res.update({'location_id': move.location_id.id}) return res _columns = { - 'qty': fields.integer('Quantity'), + 'qty': fields.float('Quantity', digits_compute=dp.get_precision('Product UoM')), 'product_id': fields.many2one('product.product', 'Product', required=True, select=True), 'product_uom': fields.many2one('product.uom', 'UoM'), 'line_ids': fields.one2many('stock.move.split.lines', 'lot_id', 'Production Lots'), 'line_exist_ids': fields.one2many('stock.move.split.lines.exist', 'lot_id', 'Production Lots'), 'use_exist' : fields.boolean('Existing Lots', help="Check this option to select existing lots in the list below, otherwise you should enter new ones line by line."), + 'location_id': fields.many2one('stock.location', 'Source Location') } def split_lot(self, cr, uid, ids, context=None): @@ -205,8 +219,10 @@ class split_in_production_lot(osv.osv_memory): @param context: A standard dictionary @return: """ + if context is None: + context = {} self.split(cr, uid, ids, context.get('active_ids'), context=context) - return {} + return {'type': 'ir.actions.act_window_close'} def split(self, cr, uid, ids, move_ids, context=None): """ To split stock moves into production lot @@ -226,7 +242,7 @@ class split_in_production_lot(osv.osv_memory): move_obj = self.pool.get('stock.move') new_move = [] for data in self.browse(cr, uid, ids, context=context): - for move in move_obj.browse(cr, uid, move_ids): + for move in move_obj.browse(cr, uid, move_ids, context=context): move_qty = move.product_qty quantity_rest = move.product_qty uos_qty_rest = move.product_uos_qty @@ -251,7 +267,9 @@ class split_in_production_lot(osv.osv_memory): 'state': move.state } if quantity_rest > 0: - current_move = move_obj.copy(cr, uid, move.id, default_val) + current_move = move_obj.copy(cr, uid, move.id, default_val, context=context) + if inventory_id and current_move: + inventory_obj.write(cr, uid, inventory_id, {'move_ids': [(4, current_move)]}, context=context) new_move.append(current_move) if quantity_rest == 0: @@ -274,11 +292,8 @@ class split_in_production_lot(osv.osv_memory): update_val['state'] = move.state move_obj.write(cr, uid, [move.id], update_val) - if inventory_id and new_move: - for m_id in new_move: - inventory_obj.write(cr, uid, inventory_id, {'move_ids': [(4, m_id)]}, context=context) - return new_move + split_in_production_lot() class stock_move_split_lines_exist(osv.osv_memory): @@ -286,14 +301,19 @@ class stock_move_split_lines_exist(osv.osv_memory): _description = "Exist Split lines" _columns = { 'name': fields.char('Tracking serial', size=64), - 'quantity': fields.integer('Quantity'), + 'quantity': fields.float('Quantity', digits_compute=dp.get_precision('Product UoM')), 'lot_id': fields.many2one('stock.move.split', 'Lot'), 'prodlot_id': fields.many2one('stock.production.lot', 'Production Lot'), } _defaults = { - 'quantity': lambda *x: 1, + 'quantity': lambda *x: 1.00, } + def onchange_lot_id(self, cr, uid, ids, prodlot_id=False, product_qty=False, + loc_id=False, product_id=False, uom_id=False): + return self.pool.get('stock.move').onchange_lot_id(cr, uid, [], prodlot_id, product_qty, + loc_id, product_id, uom_id) + stock_move_split_lines_exist() class stock_move_split_lines(osv.osv_memory): @@ -301,13 +321,13 @@ class stock_move_split_lines(osv.osv_memory): _description = "Split lines" _columns = { 'name': fields.char('Tracking serial', size=64), - 'quantity': fields.integer('Quantity'), + 'quantity': fields.float('Quantity', digits_compute=dp.get_precision('Product UoM')), 'use_exist' : fields.boolean('Existing Lot'), 'lot_id': fields.many2one('stock.move.split', 'Lot'), 'action': fields.selection([('split','Split'),('keepinone','Keep in one lot')],'Action'), } _defaults = { - 'quantity': lambda *x: 1, + 'quantity': lambda *x: 1.00, 'action' : lambda *x: 'split', } stock_move_split_lines()