Atajos de catálogos personalizables

This commit is contained in:
2025-07-03 11:45:26 -06:00
parent 495f908a25
commit 78a48ee596
11 changed files with 1626 additions and 751 deletions

View File

@@ -106,9 +106,9 @@ function aprobar_usuario()
$email_encrypt = encrypt($email);
// Insertar en usuarios_sistema y obtener ID en la misma consulta
$sqlInsert = "INSERT INTO usuarios_sistema (nombre, email, password_hash, tipo_usuario, activo, creado_en, dos_factores, creado_por)
$sqlInsert = "INSERT INTO usuarios_sistema (nombre, email, password_hash, tipo_usuario, activo, creado_en, dos_factores, creado_por, preferencias_catalogos)
OUTPUT INSERTED.id_usuario
VALUES (?, ?, ?, ?, 1, GETDATE(), 0, ?)";
VALUES (?, ?, ?, ?, 1, GETDATE(), 0, ?, 1)";
$stmtInsert = sqlsrv_query($conn, $sqlInsert, [
$nombre_encrypt, $email_encrypt, $password_hash, $tipo, $_SESSION['usuario_id']
@@ -140,6 +140,17 @@ function aprobar_usuario()
throw new Exception("Error al insertar información general: " . print_r(sqlsrv_errors(), true));
}
// Insertar en preferencias de catalogos
$sqlPref = "INSERT INTO preferencias_catalogos_usuario
(id_usuario, locaciones, vinculacion, transportistas, transportes, choferes, proveedores,
productos_frecuentes, solicitudes_importacion, expediente_electronico, configuracion, cerrar_sesion)
VALUES (?, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)";
$stmtPref = sqlsrv_query($conn, $sqlPref, [$id_usuario]);
if (!$stmtPref) {
throw new Exception("Error al insertar preferencias de catalogos: " . print_r(sqlsrv_errors(), true));
}
// Actualizar solicitud
$sqlUpdate = "UPDATE solicitudes_importadores
SET request_status = 'approved', approval_date = GETDATE(), approved_by = ?
@@ -283,6 +294,7 @@ function guardar_usuario()
// 4. Insertar usuario
$sqlInsert = "INSERT INTO usuarios_sistema (nombre, email, password_hash, tipo_usuario, activo, creado_en, dos_factores, creado_por)
OUTPUT INSERTED.id_usuario
VALUES (?, ?, ?, ?, 1, GETDATE(), 0, ?)";
$params = [$nombre_encrypted, $email_encrypted, $password_hash, $tipo, $_SESSION['usuario_id']];
$stmtInsert = sqlsrv_query($conn, $sqlInsert, $params);
@@ -293,12 +305,31 @@ function guardar_usuario()
}
// 5. Obtener ID del nuevo usuario (para posibles tablas relacionadas)
$sqlGetId = "SELECT SCOPE_IDENTITY() AS id_usuario";
$stmtGetId = sqlsrv_query($conn, $sqlGetId);
$idUsuarioRow = sqlsrv_fetch_array($stmtGetId, SQLSRV_FETCH_ASSOC);
$idUsuarioRow = sqlsrv_fetch_array($stmtInsert, SQLSRV_FETCH_ASSOC);
$id_usuario = $idUsuarioRow['id_usuario'] ?? null;
// 6. Enviar correo de bienvenida
// 6. Insertar en informacion_general
$sqlInfo = "INSERT INTO informacion_general
(id_usuario, nombre, correo)
VALUES (?, ?, ?)";
$stmtInfo = sqlsrv_query($conn, $sqlInfo, [$id_usuario, $nombre, $email]);
if (!$stmtInfo) {
throw new Exception("Error al insertar información general: " . print_r(sqlsrv_errors(), true));
}
// 7. Insertar en preferencias de catalogos
$sqlPref = "INSERT INTO preferencias_catalogos_usuario
(id_usuario, locaciones, vinculacion, transportistas, transportes, choferes, proveedores,
productos_frecuentes, solicitudes_importacion, expediente_electronico, configuracion, cerrar_sesion)
VALUES (?, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)";
$stmtPref = sqlsrv_query($conn, $sqlPref, [$id_usuario]);
if (!$stmtPref) {
throw new Exception("Error al insertar preferencias de catalogos: " . print_r(sqlsrv_errors(), true));
}
// 8. Enviar correo de bienvenida
$mail = new PHPMailer(true);
try {
$mail->isSMTP();