Hola,
así a bote pronto creo que puedes sustituir el procedimiento almacenado por una vista. Después podrías hacer los filtros que quieras.
Para ello tendrías que incluir el campo id_bodega en la vista, ya que el campo id_clasificación ya lo tienes.
En definitiva, haz una vista con la consulta de las tablas insumos_servicios, clasificaciones, inventario, inventario_egreso, utiliza funciones de agregado y agrupa por id_item.
Código SQL
[-]
select i_s.id_item, max(i_s.nombre) AS NOMBRE, max(i_s.id_clasificacion) AS ID_CLASIFICACION , coalesce(sum(inv.cantidad * inv.precio)/sum(iif(inv.cantidad = 0,1,
inv.cantidad)),0) AS PRECIO_MEDIO, coalesce(sum(inv.cantidad),0) AS CANTIDAD_INGRESO,
coalesce(avg(inv_e.precio),0) AS PRECIO_EGRESO, coalesce(sum(inv_e.cantidad),0) AS CANTIDAD_EGRESO, max(id_bodega) AS ID_BODEGA
from insumos_servicios I_S
INNER JOIN clasificaciones c on c.id_clasificacion = i_s.id_clasificacion
INNER JOIN inventario inv on id_item = i_s.id_item
INNER JOIN inventario_egreso inv_e on id_item = i_s.id_item
where i_s.que_es = 'T' AND i_s.estructura = 0
GROUP BY i_s.id_item
Te lo he puesto de memoria, seguro que hay algún fallo desintaxis.
Una vez tengas la vista, montas el filtro de las bodegas y/o agrupas por ellas.
Espero que te sirva.
Un saludo