La estructura parece bastante bien, no veo como solucionas el tema del valor del stock, precio compr, distintos precios de compra etc...
En cuanto a la consulta ....
Código MySQL:
Ver original Productos.nombre,
SUM(if(Stock.idBodega
=1,Stock.cantidad
,0) as bod1
, SUM(if(Stock.idBodega
=2,Stock.cantidad
,0) as bod2
ON Stock.codigoProducto
=Productos.codigoProducto
GROUP BY codigoProducto
,Productos.nombre
;
Esta te da los datos y formato que pides, pero si aparecen nuevas bodegas tendrás que modificarla
Código MySQL:
Ver original Productos.nombre,
Stock.idBodega,
SUM(Stock.cantidad
,0) as TCantidad
ON Stock.codigoProducto
=Productos.codigoProducto
GROUP BY codigoProducto
,Productos.nombre
,Stock.idBodega
;
esta te dará los mismos datos pero en un formato menos visual, deberás tratar la salida con programación externa para conseguir las columnas que quieres. Pero esta no tendrás que modificarla aun que aumente el numero de bodegas.