diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 6410bb16d09..b41a41149bf 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -1023,15 +1023,38 @@ class stock_move(osv.osv): 'message': 'You are moving %.2f products but only %.2f available in this lot.' % (product_qty, prodlot.stock_available or 0.0) } return {'warning': warning} - + + def onchange_quantity(self, cr, uid, ids, product_id, product_qty, product_uom, product_uos): + result = { + 'product_uos_qty': 0.00 + } + + if (not product_id) or (product_qty <=0.0): + return {'value': result} + + product_obj = self.pool.get('product.product') + uos_coeff = product_obj.read(cr, uid, product_id, ['uos_coeff']) + + if product_uos and product_uom and (product_uom != product_uos): + result['product_uos_qty'] = product_qty * uos_coeff['uos_coeff'] + else: + result['product_uos_qty'] = product_qty + + return {'value': result} + def onchange_product_id(self, cr, uid, ids, prod_id=False, loc_id=False, loc_dest_id=False): if not prod_id: return {} product = self.pool.get('product.product').browse(cr, uid, [prod_id])[0] + uos_id = product.uos_id and product.uos_id.id or False result = { 'name': product.name, 'product_uom': product.uom_id.id, + 'product_uos': uos_id, + 'product_qty': 1.00, + 'product_uos_qty' : self.pool.get('stock.move').onchange_quantity(cr, uid, ids, prod_id, 1.00, product.uom_id.id, uos_id)['value']['product_uos_qty'] } + if loc_id: result['location_id'] = loc_id if loc_dest_id: diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index ca2aeeb4f3e..2f6eb80fd87 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -535,9 +535,9 @@ - + - + @@ -634,9 +634,9 @@ - + - + @@ -827,9 +827,9 @@ - + - + @@ -1016,9 +1016,9 @@ - + - + @@ -1214,7 +1214,7 @@ - + @@ -1239,7 +1239,7 @@ - +