File "insertInventario.php.bak"

Full Path: C:/wamp64/www/APPSST/Admin/inventario/insertInventario.php.bak
File size: 3.44 KB
MIME-type: text/x-php
Charset: utf-8

<?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();
}
?>