diff --git a/addons/mrp/product.py b/addons/mrp/product.py index 19c21098736..b4724a2e5ef 100644 --- a/addons/mrp/product.py +++ b/addons/mrp/product.py @@ -56,8 +56,11 @@ class product_template(osv.osv): def action_view_mos(self, cr, uid, ids, context=None): products = self._get_products(cr, uid, ids, context=context) result = self._get_act_window_dict(cr, uid, 'mrp.act_product_mrp_production', context=context) - result['domain'] = "[('product_id','in',[" + ','.join(map(str, products)) + "])]" - result['context'] = "{}" + if len(ids) == 1 and len(products) == 1: + result['context'] = "{'default_product_id': " + str(products[0]) + ", 'search_default_product_id': " + str(products[0]) + "}" + else: + result['domain'] = "[('product_id','in',[" + ','.join(map(str, products)) + "])]" + result['context'] = "{}" return result diff --git a/addons/stock/product.py b/addons/stock/product.py index a0dbf68bb6f..7289e8d4538 100644 --- a/addons/stock/product.py +++ b/addons/stock/product.py @@ -421,16 +421,22 @@ class product_template(osv.osv): def action_view_orderpoints(self, cr, uid, ids, context=None): products = self._get_products(cr, uid, ids, context=context) result = self._get_act_window_dict(cr, uid, 'stock.product_open_orderpoint', context=context) - result['domain'] = "[('product_id','in',[" + ','.join(map(str, products)) + "])]" - result['context'] = "{}" + if len(ids) == 1 and len(products) == 1: + result['context'] = "{'default_product_id': " + str(products[0]) + ", 'search_default_product_id': " + str(products[0]) + "}" + else: + result['domain'] = "[('product_id','in',[" + ','.join(map(str, products)) + "])]" + result['context'] = "{}" return result def action_view_stock_moves(self, cr, uid, ids, context=None): products = self._get_products(cr, uid, ids, context=context) result = self._get_act_window_dict(cr, uid, 'stock.act_product_stock_move_open', context=context) - result['domain'] = "[('product_id','in',[" + ','.join(map(str, products)) + "])]" - result['context'] = "{}" + if len(ids) == 1 and len(products) == 1: + result['context'] = "{'default_product_id': " + str(products[0]) + ", 'search_default_product_id': " + str(products[0]) + "}" + else: + result['domain'] = "[('product_id','in',[" + ','.join(map(str, products)) + "])]" + result['context'] = "{}" return result diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 56883c15824..4fc2200badf 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -1209,7 +1209,7 @@ class stock_picking(osv.osv): #check if the quant is matching the operation details if ops.package_id: - flag = quant.package_id and bool(package_obj.search(cr, uid, [('id', 'child_of', [ops.package_id.id]), ('id', '=', quant.package_id.id)], context=context)) or False + flag = quant.package_id and bool(package_obj.search(cr, uid, [('id', 'child_of', [ops.package_id.id])], context=context)) or False else: flag = not quant.package_id.id flag = flag and ((ops.lot_id and ops.lot_id.id == quant.lot_id.id) or not ops.lot_id) @@ -1804,8 +1804,8 @@ class stock_move(osv.osv): if wh_route_ids: rules = push_obj.search(cr, uid, domain + [('route_id', 'in', wh_route_ids)], order='route_sequence, sequence', context=context) if not rules: - #if no specialized push rule has been found yet, we try to find a general one - rules = push_obj.search(cr, uid, domain, order='route_sequence, sequence', context=context) + #if no specialized push rule has been found yet, we try to find a general one (without route) + rules = push_obj.search(cr, uid, domain + [('route_id', '=', False)], order='sequence', context=context) if rules: rule = push_obj.browse(cr, uid, rules[0], context=context) push_obj._apply(cr, uid, rule, move, context=context) diff --git a/addons/stock_account/product_view.xml b/addons/stock_account/product_view.xml index bc921d5c307..cf8af6bf3a5 100644 --- a/addons/stock_account/product_view.xml +++ b/addons/stock_account/product_view.xml @@ -25,12 +25,6 @@ product.template - - - - - -