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
-
-
-
-
-
-