query("SELECT COUNT(*) FROM products")->fetchColumn(); $total_sedes = $pdo->query("SELECT COUNT(*) FROM sedes")->fetchColumn(); $total_stock = $pdo->query("SELECT SUM(quantity) FROM stock_sedes")->fetchColumn(); // 2. Datos para la tabla de inventario $sedes_stmt = $pdo->query("SELECT id, nombre FROM sedes ORDER BY nombre"); $sedes = $sedes_stmt->fetchAll(PDO::FETCH_ASSOC); $products_stmt = $pdo->query("SELECT id, nombre FROM products ORDER BY nombre"); $products = $products_stmt->fetchAll(PDO::FETCH_ASSOC); $stock_stmt = $pdo->query("SELECT product_id, sede_id, quantity FROM stock_sedes"); $stock_data = $stock_stmt->fetchAll(PDO::FETCH_ASSOC); // Procesar datos para la tabla $inventario = []; foreach ($products as $product) { $inventario[$product['id']] = [ 'nombre' => $product['nombre'], 'total' => 0, 'sedes' => array_fill_keys(array_column($sedes, 'id'), 0) ]; } foreach ($stock_data as $stock_item) { if (isset($inventario[$stock_item['product_id']])) { $inventario[$stock_item['product_id']]['sedes'][$stock_item['sede_id']] = $stock_item['quantity']; $inventario[$stock_item['product_id']]['total'] += $stock_item['quantity']; } } // 3. Datos para el gráfico circular (Distribución por Sede) $stock_por_sede_stmt = $pdo->query(" SELECT s.nombre, SUM(ss.quantity) as total_stock FROM sedes s JOIN stock_sedes ss ON s.id = ss.sede_id GROUP BY s.nombre HAVING total_stock > 0 ORDER BY s.nombre "); $stock_por_sede = $stock_por_sede_stmt->fetchAll(PDO::FETCH_ASSOC); $sede_chart_labels = json_encode(array_column($stock_por_sede, 'nombre')); $sede_chart_data = json_encode(array_column($stock_por_sede, 'total_stock')); // 4. Datos para el gráfico de barras (Stock por Producto) $stock_por_producto_stmt = $pdo->query(" SELECT p.nombre, SUM(ss.quantity) as total_stock FROM products p JOIN stock_sedes ss ON p.id = ss.product_id GROUP BY p.nombre HAVING total_stock > 0 ORDER BY total_stock DESC LIMIT 15 "); $stock_por_producto = $stock_por_producto_stmt->fetchAll(PDO::FETCH_ASSOC); $producto_chart_labels = json_encode(array_column($stock_por_producto, 'nombre')); $producto_chart_data = json_encode(array_column($stock_por_producto, 'total_stock')); } catch (PDOException $e) { echo "
Error al conectar o consultar la base de datos: " . $e->getMessage() . "
"; require_once 'layout_footer.php'; die(); } ?>

Dashboard de Inventario

Total de Productos

Sedes Activas

Unidades Totales en Stock

Distribución por Sede
Top 15 Productos con Más Stock
Inventario por Sede
Producto Stock Total
No hay productos para mostrar.