diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 6a6678d6163..9b8057c2289 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -582,6 +582,13 @@ class sale_order(osv.osv):
result.update(view_id = res and res[1] or False)
return result
+ def test_no_product(self, cr, uid, ids, *args):
+ for order in self.browse(cr, uid, ids):
+ for line in order.order_line:
+ if line.product_id:
+ return False
+ return True
+
def action_invoice_create(self, cr, uid, ids, grouped=False, states=['confirmed', 'done', 'exception'], date_inv = False, context=None):
res = False
invoices = {}
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index 2c2acff227e..ae93500be59 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -163,7 +163,7 @@
+ attrs="{'invisible': ['|','|',('state', '!=','progress'), ('invoiced', '=', True),('order_policy','=','picking')]}"/>