query("SELECT id, nombre FROM sedes ORDER BY nombre ASC"); $sedes = $sedes_stmt->fetchAll(PDO::FETCH_ASSOC); // Encontrar el ID de "ALMACEN PR" para la lógica móvil foreach ($sedes as $sede) { if (trim(strtolower($sede['nombre'])) === 'almacen pr') { $almacen_principal_id = $sede['id']; break; } } // Obtener productos $products_stmt = $pdo->query("SELECT id, nombre, sku FROM products ORDER BY nombre ASC"); $products = $products_stmt->fetchAll(PDO::FETCH_ASSOC); // --- Lógica para el Historial de Salidas --- $fecha_filtro = $_GET['fecha'] ?? ''; $where_clause = " WHERE sm.type = 'salida' "; $params = []; if (!empty($fecha_filtro)) { $where_clause .= " AND DATE(sm.movement_date) = :fecha "; $params[':fecha'] = $fecha_filtro; $limit = 500; } else { $limit = 50; } $query = " SELECT sm.movement_date, p.nombre as product_name, s.nombre as sede_name, sm.quantity, sm.type, sm.codigo_unico, sm.metodo_registro FROM stock_movements sm JOIN products p ON sm.product_id = p.id JOIN sedes s ON sm.sede_id = s.id $where_clause ORDER BY sm.created_at DESC LIMIT $limit "; $movements_stmt = $pdo->prepare($query); $movements_stmt->execute($params); $movements = $movements_stmt->fetchAll(PDO::FETCH_ASSOC); // --- Resumen de Salidas de Hoy --- $hoy = date('Y-m-d'); $resumen_salidas_stmt = $pdo->prepare(" SELECT p.nombre, SUM(sm.quantity) as total_salida FROM stock_movements sm JOIN products p ON sm.product_id = p.id WHERE sm.type = 'salida' AND DATE(sm.movement_date) = :hoy GROUP BY p.nombre ORDER BY total_salida DESC "); $resumen_salidas_stmt->execute([':hoy' => $hoy]); $resumen_salidas = $resumen_salidas_stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { $error_page_load = "Error al cargar datos iniciales: " . $e->getMessage(); } ?>
No se han registrado salidas el día de hoy.
| Fecha | Producto | Sede | Cantidad | Código | Método |
|---|---|---|---|---|---|
| No hay salidas registradas. | |||||