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