query("SELECT id, nombre FROM productos ORDER BY nombre ASC"); $productos = $productos_resultado->fetch_all(MYSQLI_ASSOC); // Construir consulta dinámica $condiciones = []; if ($producto_filtro !== '') { $condiciones[] = "m.producto_id = " . intval($producto_filtro); } if ($desde_filtro !== '' && $hasta_filtro !== '') { $condiciones[] = "DATE(m.fecha) BETWEEN '" . $conn->real_escape_string($desde_filtro) . "' AND '" . $conn->real_escape_string($hasta_filtro) . "'"; } if ($tipo_filtro !== '') { $condiciones[] = "m.tipo = '" . $conn->real_escape_string($tipo_filtro) . "'"; } $where = count($condiciones) > 0 ? 'WHERE ' . implode(' AND ', $condiciones) : ''; // Consulta de movimientos con nombre y unidad del producto $sql = " SELECT m.*, p.nombre, p.unidad_medida FROM movimientos m JOIN productos p ON m.producto_id = p.id $where ORDER BY m.fecha ASC "; $movimientos = $conn->query($sql); ?>
Fecha | Producto | Tipo | Cantidad | Unidad | Precio Unitario (L) | Total (L) |
---|---|---|---|---|---|---|
- | ' . htmlspecialchars($info['nombre']) . ' | Stock Inicial | ' . number_format($info['stock_inicial'], 2) . ' | ' . htmlspecialchars($info['unidad_medida']) . ' | - | - |
= date("Y-m-d", strtotime($row['fecha'])) ?> | = htmlspecialchars($row['nombre']) ?> | = ucfirst($row['tipo']) ?> | = $row['cantidad'] ?> | = htmlspecialchars($row['unidad_medida']) ?> | = number_format($row['precio_unitario'], 2) ?> | = number_format($row['cantidad'] * $row['precio_unitario'], 2) ?> |
No hay movimientos que coincidan con los filtros seleccionados.
Volver al Inicio