[MERGE] Forward-port of latest 7.0 bugfixes, up to rev. 9529 rev-id: mat@openerp...
[odoo/odoo.git] / addons / stock / stock.py
index ec33456..d818ca7 100644 (file)
@@ -401,14 +401,15 @@ class stock_location(osv.osv):
             uom_rounding = uom_obj.browse(cr, uid, context.get('uom'), context=context).rounding
 
         locations_ids = self.search(cr, uid, [('location_id', 'child_of', ids)])
-        # Fetch only the locations in which this product has ever been processed (in or out)
-        cr.execute("""SELECT l.id FROM stock_location l WHERE l.id in %s AND
-                    EXISTS (SELECT 1 FROM stock_move m WHERE m.product_id = %s
-                            AND ((state = 'done' AND m.location_dest_id = l.id)
-                                OR (state in ('done','assigned') AND m.location_id = l.id)))
-                   """, (tuple(locations_ids), product_id,))
-
-        for id in [i for (i,) in cr.fetchall()]:
+        if locations_ids:
+            # Fetch only the locations in which this product has ever been processed (in or out)
+            cr.execute("""SELECT l.id FROM stock_location l WHERE l.id in %s AND
+                        EXISTS (SELECT 1 FROM stock_move m WHERE m.product_id = %s
+                                AND ((state = 'done' AND m.location_dest_id = l.id)
+                                    OR (state in ('done','assigned') AND m.location_id = l.id)))
+                       """, (tuple(locations_ids), product_id,))
+            locations_ids = [i for (i,) in cr.fetchall()]
+        for id in locations_ids:
             if lock:
                 try:
                     # Must lock with a separate select query because FOR UPDATE can't be used with