prepare("UPDATE movimientos SET precio_liquidacion = :precio WHERE id = :id AND tipo = 'Salida'"); foreach ($_POST['precios'] as $movimiento_id => $precio) { if (!empty($precio)) { $stmt_precio->execute([':precio' => $precio, ':id' => $movimiento_id]); $success = true; } } } // Actualizar cantidad de pedidos if (isset($_POST['pedidos'])) { $stmt_pedidos = $pdo->prepare("UPDATE movimientos SET cantidad_pedidos = :pedidos WHERE id = :id AND tipo = 'Salida'"); foreach ($_POST['pedidos'] as $movimiento_id => $pedidos) { if (!empty($pedidos)) { $stmt_pedidos->execute([':pedidos' => $pedidos, ':id' => $movimiento_id]); $success = true; } } } if ($success) { echo '
Liquidaciones actualizadas correctamente.
'; } } // Obtener todos los movimientos de salida $pdo = db(); $stmt = $pdo->query(" SELECT m.id, m.fecha, p.nombre as producto, m.cantidad, c.nombre as ciudad, m.precio_liquidacion, m.cantidad_pedidos FROM movimientos m JOIN productos p ON m.producto_id = p.id JOIN ciudades c ON m.ciudad_origen_id = c.id WHERE m.tipo = 'Salida' ORDER BY DATE(m.fecha) DESC, c.nombre, p.nombre "); $salidas = $stmt->fetchAll(PDO::FETCH_ASSOC); // Agrupar salidas por fecha $salidas_por_fecha = []; foreach ($salidas as $salida) { $fecha = date('Y-m-d', strtotime($salida['fecha'])); $salidas_por_fecha[$fecha][] = $salida; } // Obtener productos y ciudades para el formulario $productos = $pdo->query("SELECT id, nombre FROM productos ORDER BY nombre")->fetchAll(); $ciudades = $pdo->query("SELECT id, nombre FROM ciudades ORDER BY nombre")->fetchAll(); $user_rol = $_SESSION['user_rol'] ?? ''; ?>

Liquidaciones de Salidas

Liquidación agregada correctamente.'; } if (isset($_GET['error'])) { $error_msg = 'Ocurrió un error.'; if ($_GET['error'] === 'missing_fields') { $error_msg = 'Por favor, complete todos los campos.'; } elseif ($_GET['error'] === 'db_error') { $error_msg = 'Error al guardar en la base de datos.'; } elseif ($_GET['error'] === 'no_stock') { $error_msg = 'No hay stock suficiente para realizar esta operación.'; } echo '
'.$error_msg.'
'; } ?>

Aquí puedes ver todas las salidas de productos y asignar un precio de liquidación y la cantidad de pedidos a cada una.

No hay salidas registradas para liquidar.
$salidas_del_dia): ?>

0, 'precio' => 0]; } $totales_por_ciudad[$salida['ciudad']]['pedidos'] += (int)$salida['cantidad_pedidos']; $totales_por_ciudad[$salida['ciudad']]['precio'] += (float)$salida['precio_liquidacion']; ?>
Producto Ciudad Cantidad de Pedidos Cantidad Precio Liquidación Acciones
Total del día:
Resumen de Liquidación por Ciudad
$totales): ?>
Ciudad Total Pedidos Monto Total Liquidado