<?php
session_start();
header("Cache-control: private");
include("../bd/conexion.php");
// Obtener usuario de sesión
$userEntrega = '';
if(isset($_SESSION['DIGITA']) && !empty($_SESSION['DIGITA'])) {
$userEntrega = mysqli_real_escape_string($conexion, $_SESSION['DIGITA']);
error_log("Usuario obtenido de sesión: " . $userEntrega);
} else {
$userEntrega = 'USUARIO_DESCONOCIDO';
error_log("Usuario por defecto: " . $userEntrega);
}
// Verificar si hay elementos seleccionados
if (!isset($_SESSION['elementos_seleccionados']) || empty($_SESSION['elementos_seleccionados'])) {
$_SESSION['mensaje_error'] = 'No hay elementos para confirmar. Por favor, seleccione al menos un elemento.';
header("Location: VERNOEN.PHP");
exit();
}
// Iniciar transacción
$conexion->begin_transaction();
try {
foreach ($_SESSION['elementos_seleccionados'] as $elemento) {
$codigo = $conexion->real_escape_string($elemento['codigo']);
$descripcion = $conexion->real_escape_string($elemento['descripcion']);
$cantidad = intval($elemento['cantidad']);
// 1. Actualizar o insertar en la tabla inventario
$consulta = "SELECT CANTIDAD FROM inventario WHERE CODIGO = '$codigo' AND estado = 0 LIMIT 1";
$resultado = $conexion->query($consulta);
if ($resultado && $resultado->num_rows > 0) {
// Sumar a la cantidad existente
$fila = $resultado->fetch_assoc();
$nueva_cantidad = $fila['CANTIDAD'] + $cantidad;
$update = "UPDATE inventario SET
CANTIDAD = $nueva_cantidad
WHERE CODIGO = '$codigo' AND estado = 0";
if (!$conexion->query($update)) {
throw new Exception("Error al actualizar el elemento $codigo en inventario: " . $conexion->error);
}
} else {
// Insertar nuevo registro en inventario
$insert_inventario = "INSERT INTO inventario (CODIGO, DESCRIPCION, CANTIDAD, ESTADO)
VALUES ('$codigo', '$descripcion', $cantidad, 0)";
if (!$conexion->query($insert_inventario)) {
throw new Exception("Error al insertar el elemento $codigo en inventario: " . $conexion->error);
}
}
// 2. Insertar registro histórico en regInventario (siempre se inserta nuevo registro)
$insert_registro = "INSERT INTO regInventario (CODIGO, DESCRIPCION, CANTIDAD, MOVIMIENTO, userEntrega, fechaIngreso)
VALUES ('$codigo', '$descripcion', $cantidad, 'Entrada', '$userEntrega', NOW())";
if (!$conexion->query($insert_registro)) {
throw new Exception("Error al insertar el elemento $codigo en regInventario: " . $conexion->error);
}
}
// Confirmar transacción
$conexion->commit();
// Limpiar sesión y redirigir
unset($_SESSION['elementos_seleccionados']);
$_SESSION['mensaje_exito'] = 'Inventario actualizado correctamente y registro histórico creado';
header("Location: ../dotacion/MENUP.php");
exit();
} catch (Exception $e) {
// Revertir transacción en caso de error
$conexion->rollback();
$_SESSION['mensaje_error'] = $e->getMessage();
error_log("Error en transacción: " . $e->getMessage());
header("Location: VERNOEN.PHP");
exit();
}
?>