diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index e3271f3f947..d6973bad803 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -71,8 +71,6 @@ class mrp_workcenter(osv.osv): value = {'costs_hour': cost.standard_price} return {'value': value} - - class mrp_routing(osv.osv): """ For specifying the routings of Work Centers. @@ -261,16 +259,20 @@ class mrp_bom(osv.osv): (_check_product, 'BoM line product should not be same as BoM product.', ['product_id']), ] - def onchange_product_id(self, cr, uid, ids, product_id, name, context=None): + def onchange_product_id(self, cr, uid, ids, product_id, name, product_qty=0, context=None): """ Changes UoM and name if product_id changes. @param name: Name of the field @param product_id: Changed product_id @return: Dictionary of changed values """ + res = {} if product_id: prod = self.pool.get('product.product').browse(cr, uid, product_id, context=context) - return {'value': {'name': prod.name, 'product_uom': prod.uom_id.id}} - return {} + res['value'] = {'name': prod.name, 'product_uom': prod.uom_id.id, 'product_uos_qty': 0, 'product_uos': False} + if prod.uos_id.id: + res['value']['product_uos_qty'] = product_qty * prod.uos_coeff + res['value']['product_uos'] = prod.uos_id.id + return res def onchange_uom(self, cr, uid, ids, product_id, product_uom, context=None): res = {'value':{}} @@ -553,16 +555,19 @@ class mrp_production(osv.osv): return {'value': {'location_dest_id': src}} return {} - def product_id_change(self, cr, uid, ids, product_id, context=None): + def product_id_change(self, cr, uid, ids, product_id, product_qty=0, context=None): """ Finds UoM of changed product. @param product_id: Id of changed product. @return: Dictionary of values. """ + result = {} if not product_id: return {'value': { 'product_uom': False, 'bom_id': False, - 'routing_id': False + 'routing_id': False, + 'product_uos_qty': 0, + 'product_uos': False }} bom_obj = self.pool.get('mrp.bom') product = self.pool.get('product.product').browse(cr, uid, product_id, context=context) @@ -571,14 +576,13 @@ class mrp_production(osv.osv): if bom_id: bom_point = bom_obj.browse(cr, uid, bom_id, context=context) routing_id = bom_point.routing_id.id or False - product_uom_id = product.uom_id and product.uom_id.id or False - result = { - 'product_uom': product_uom_id, - 'bom_id': bom_id, - 'routing_id': routing_id, - } - return {'value': result} + product_uos_id = product.uos_id and product.uos_id.id or False + result['value'] = {'product_uos_qty': 0, 'product_uos': False, 'product_uom': product_uom_id, 'bom_id': bom_id, 'routing_id': routing_id} + if product.uos_id.id: + result['value']['product_uos_qty'] = product_qty * product.uos_coeff + result['value']['product_uos'] = product.uos_id.id + return result def bom_id_change(self, cr, uid, ids, bom_id, context=None): """ Finds routing for changed BoM. diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index d145bbeb847..6073d02fcc0 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -347,10 +347,10 @@