Correcciones

This commit is contained in:
2025-06-27 07:30:16 -06:00
parent 4416fe6f20
commit 3da996350c
11 changed files with 574 additions and 384 deletions

View File

@@ -118,12 +118,20 @@
<?php elseif ($_GET['error'] === 'update_failed'): ?>
Swal.fire({ icon: 'error', title: 'Error al actualizar', text: 'No se pudo actualizar el estado del usuario.', confirmButtonColor: '#dc3545' });
<?php elseif ($_GET['error'] === 'failed'): ?>
Swal.fire({ icon: 'error', title: 'Error inesperado', text: 'Ha ocurrido un error inesperado. Por favor, inténtalo nuevamente.', confirmButtonColor: '#dc3545' })
Swal.fire({ icon: 'error', title: 'Error inesperado', text: 'Ha ocurrido un error inesperado. Por favor, inténtalo nuevamente.', confirmButtonColor: '#dc3545' });
<?php elseif ($_GET['error'] === 'session_error'): ?>
Swal.fire({ icon: 'error', title: 'Error de sesión', text: 'Tu sesión ha expirado. Por favor, inicia sesión nuevamente.', confirmButtonColor: '#dc3545' });
<?php elseif ($_GET['error'] === 'info_general_failed'): ?>
Swal.fire({ icon: 'error', title: 'Error en información general', text: 'Se creó el usuario pero falló al guardar la información adicional. Revisa los datos del formulario.', confirmButtonColor: '#dc3545' });
<?php elseif ($_GET['error'] === 'user_id_failed'): ?>
Swal.fire({ icon: 'error', title: 'Error interno', text: 'No se pudo obtener el ID del usuario creado. Contacta al soporte técnico.', confirmButtonColor: '#dc3545' });
<?php elseif ($_GET['error'] === 'process_failed'): ?>
Swal.fire({ icon: 'error', title: 'Error en el proceso', text: 'Ocurrió un error durante el proceso de aprobación. Verifica los logs del sistema.', confirmButtonColor: '#dc3545' });
<?php else: ?>
Swal.fire({ icon: 'error', title: 'Error', text: 'Ha ocurrido un error inesperado. Por favor, inténtalo nuevamente.', confirmButtonColor: '#dc3545' });
<?php endif; ?>
</script>
<?php endif; ?>
</body>
</html>

View File

@@ -42,8 +42,8 @@
<div class="card shadow-sm p-3">
<h5 class="text-primary">Solicitudes de vinculación</h5>
<p>Aprueba las solicitudes de vinculación de los importadores.</p>
<a href="/IMPORTADORES/agencias/solicitudesVinculacion"
class="btn btn-primary btn-sm mt-2 <?= $_SERVER['REQUEST_URI'] === '/IMPORTADORES/agencias/solicitudesVinculacion' ? 'active' : '' ?>">
<a href="/IMPORTADORES/vinculaciones/solicitudesVinculacion"
class="btn btn-primary btn-sm mt-2 <?= $_SERVER['REQUEST_URI'] === '/IMPORTADORES/vinculaciones/solicitudesVinculacion' ? 'active' : '' ?>">
Ver solicitudes
</a>
</div>
@@ -53,8 +53,8 @@
<div class="card shadow-sm p-3">
<h5 class="text-success">Usuarios vinculados</h5>
<p>Consulta los que ya fueron autorizados.</p>
<a href="/IMPORTADORES/agencias/activos"
class="btn btn-success btn-sm mt-2 <?= $_SERVER['REQUEST_URI'] === '/IMPORTADORES/agencias/activos' ? 'active' : '' ?>">
<a href="/IMPORTADORES/vinculaciones/vinculacionesAgencia"
class="btn btn-success btn-sm mt-2 <?= $_SERVER['REQUEST_URI'] === '/IMPORTADORES/vinculaciones/vinculacionesAgencia' ? 'active' : '' ?>">
Ver usuarios
</a>
</div>

View File

@@ -27,136 +27,258 @@
}
.card { border-radius: 12px; }
label {font-weight: bold;}
.section-header { background-color: #e9ecef; padding: 10px 15px; margin: 0 0 20px 0; border-radius: 8px 8px 0 0; font-weight: bold; color: #495057; }
</style>
</head>
<body>
<div class="content">
<h4 class="mb-4"> Información General</h4>
<div class="card shadow-sm p-4 mb-4 bg-white">
<form>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Clave:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['clave'] ?? '') ?>" disabled>
</div>
<div class="col-md-3"></div>
<label class="col-md-2 col-form-label">Tipo de identificador:</label>
<div class="col-md-2">
<select name="tipo_identificador" class="form-control" disabled>
<option value="">-- Selecciona una opción --</option>
<option value="1" <?= ($datos['tipo_identificador'] ?? '') == '1' ? 'selected' : '' ?>>1 - RFC</option>
<option value="2" <?= ($datos['tipo_identificador'] ?? '') == '2' ? 'selected' : '' ?>>2 - CURP</option>
<option value="3" <?= ($datos['tipo_identificador'] ?? '') == '3' ? 'selected' : '' ?>>3 - SIN TAX ID</option>
</select>
</div>
</div>
<?php if (isset($datos['tipo_usuario']) && $datos['tipo_usuario'] === 'importador'): ?>
<div class="card shadow-sm p-4 mb-4 bg-white">
<div class="section-header">👤 Información Personal</div>
<form>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Nombre:</label>
<div class="col-md-10">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['nombre'] ?? '') ?>" disabled>
<label class="col-md-2 col-form-label">Clave:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['clave'] ?? '') ?>" disabled>
</div>
<div class="col-md-3"></div>
<label class="col-md-2 col-form-label">Tipo de identificador:</label>
<div class="col-md-2">
<select name="tipo_identificador" class="form-control" disabled>
<option value="">-- Selecciona una opción --</option>
<option value="1" <?= ($datos['tipo_identificador'] ?? '') == '1' ? 'selected' : '' ?>>1 - RFC</option>
<option value="2" <?= ($datos['tipo_identificador'] ?? '') == '2' ? 'selected' : '' ?>>2 - CURP</option>
<option value="3" <?= ($datos['tipo_identificador'] ?? '') == '3' ? 'selected' : '' ?>>3 - SIN TAX ID</option>
</select>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Nombre:</label>
<div class="col-md-10">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['nombre'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">RFC:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['rfc'] ?? '') ?>" disabled>
</div>
<div class="col-md-1"></div>
<label class="col-md-1 col-form-label">CURP:</label>
<div class="col-md-5">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['curp'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Calle:</label>
<div class="col-md-10">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['calle'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Núm. Exterior:</label>
<div class="col-md-2">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['num_exterior'] ?? '') ?>" disabled>
</div>
<div class="col-md-4"></div>
<label class="col-md-2 col-form-label">Núm. Interior:</label>
<div class="col-md-2">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['num_interior'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Ciudad / Localidad:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['ciudad'] ?? '') ?>" disabled>
</div>
<div class="col-md-1"></div>
<label class="col-md-1 col-form-label">Colonia:</label>
<div class="col-md-5">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['colonia'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">País:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['pais'] ?? '') ?>" disabled>
</div>
<div class="col-md-3"></div>
<label class="col-md-2 col-form-label">Código Postal:</label>
<div class="col-md-2">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['codigo_postal'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Municipio:</label>
<div class="col-md-4">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['municipio'] ?? '') ?>" disabled>
</div>
<div class="col-md-1"></div>
<label class="col-md-1 col-form-label">Estado:</label>
<div class="col-md-4">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['estado'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Teléfono:</label>
<div class="col-md-5">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['telefono'] ?? '') ?>" disabled>
</div>
<div class="col-md-1"></div>
<label class="col-md-1 col-form-label">Fax:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['fax'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Correo:</label>
<div class="col-md-10">
<input type="email" class="form-control" value="<?= htmlspecialchars($datos['correo'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Observaciones:</label>
<div class="col-md-10">
<textarea class="form-control" rows="3" disabled><?= htmlspecialchars($datos['observaciones'] ?? '') ?></textarea>
</div>
</div>
<div style="display: flex; justify-content: right;">
<a href="/IMPORTADORES/configuracion/editar" class="btn btn-success mb-3">✏️ Editar Información</a>
</div>
</div>
</form>
</div>
<?php elseif (isset($datos['tipo_usuario']) && in_array($datos['tipo_usuario'], ['admin_agencia', 'agente_aduanal'])): ?>
<div class="card shadow-sm p-4 mb-4 bg-white">
<div class="section-header">🏢 Información de Agencia Aduanal</div>
<form>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Nombre Agencia:</label>
<div class="col-md-10">
<input type="text" class="form-control" value="<?= htmlspecialchars(decrypt($datos['nombre_agencia'] ?? '')) ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">RFC:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['rfc'] ?? '') ?>" disabled>
</div>
<div class="col-md-1"></div>
<label class="col-md-1 col-form-label">CURP:</label>
<div class="col-md-5">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['curp'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Calle:</label>
<div class="col-md-10">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['calle'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Núm. Exterior:</label>
<div class="col-md-2">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['num_exterior'] ?? '') ?>" disabled>
</div>
<div class="col-md-4"></div>
<label class="col-md-2 col-form-label">Núm. Interior:</label>
<div class="col-md-2">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['num_interior'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Ciudad / Localidad:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['ciudad'] ?? '') ?>" disabled>
</div>
<div class="col-md-1"></div>
<label class="col-md-1 col-form-label">Colonia:</label>
<div class="col-md-5">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['colonia'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">País:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['pais'] ?? '') ?>" disabled>
</div>
<div class="col-md-3"></div>
<label class="col-md-2 col-form-label">Código Postal:</label>
<div class="col-md-2">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['codigo_postal'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Municipio:</label>
<div class="col-md-4">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['municipio'] ?? '') ?>" disabled>
</div>
<div class="col-md-1"></div>
<label class="col-md-1 col-form-label">Estado:</label>
<div class="col-md-4">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['estado'] ?? '') ?>" disabled>
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['rfc_agencia'] ?? '') ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Teléfono:</label>
<div class="col-md-5">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['telefono'] ?? '') ?>" disabled>
</div>
<div class="col-md-1"></div>
<label class="col-md-1 col-form-label">Fax:</label>
<div class="col-md-3">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['fax'] ?? '') ?>" disabled>
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['telefono_agencia'] ?? '') ?>" disabled>
</div>
<div class="col-md-3"></div>
<label class="col-md-1 col-form-label">Email:</label>
<div class="col-md-3">
<input type="email" class="form-control" value="<?= htmlspecialchars(decrypt($datos['email_agencia'] ?? '')) ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Dirección:</label>
<div class="col-md-10">
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['direccion_agencia'] ?? '') ?>" disabled>
</div>
</div><hr>
<!-- Información personal del usuario (para referencia) -->
<div class="section-header mt-4">👤 Mi Información Personal</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Nombre:</label>
<div class="col-md-4">
<input type="text" class="form-control" value="<?= htmlspecialchars(decrypt($datos['nombre'] ?? '')) ?>" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Correo:</label>
<div class="col-md-10">
<input type="email" class="form-control" value="<?= htmlspecialchars(decrypt($datos['correo'] ?? '')) ?>" disabled>
</div>
</div>
<?php if (isset($datos['fecha_asignacion']) && $datos['fecha_asignacion']): ?>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Fecha de Asignación:</label>
<div class="col-md-3">
<?php
// Handle both DateTime objects and string dates
if ($datos['fecha_asignacion'] instanceof DateTime) {
$fecha_formateada = $datos['fecha_asignacion']->setTimezone(new DateTimeZone('America/Mexico_City'))->format('d/m/Y H:i');
} else {
$fecha_formateada = date('d/m/Y H:i', strtotime($datos['fecha_asignacion']));
}
?>
<input type="text" class="form-control" value="<?= htmlspecialchars($fecha_formateada) ?>" disabled>
</div>
</div>
<?php endif; ?>
</form>
</div>
<?php elseif (isset($datos['tipo_usuario']) && $datos['tipo_usuario'] === 'super_admin'): ?>
<div class="card shadow-sm p-4 mb-4 bg-white">
<div class="section-header">🔧 Información de Super Administrador</div>
<form>
<div class="row mb-3">
<label class="col-md-1 col-form-label">Nombre:</label>
<div class="col-md-4">
<!-- Para super_admin, NO desencriptar - usar directamente -->
<input type="text" class="form-control" value="<?= htmlspecialchars($datos['nombre'] ?? '') ?>" disabled>
</div>
<label class="col-md-2 col-form-label">Tipo de Usuario:</label>
<div class="col-md-4">
<input type="text" class="form-control" value="Super Administrador" disabled>
</div>
</div>
<div class="row mb-3">
<label class="col-md-2 col-form-label">Correo:</label>
<div class="col-md-10">
<!-- Para super_admin, NO desencriptar - usar directamente -->
<input type="email" class="form-control" value="<?= htmlspecialchars($datos['correo'] ?? '') ?>" disabled>
</div>
</div>
<!-- Información adicional específica de super_admin -->
<div class="row mb-3">
<label class="col-md-2 col-form-label">Observaciones:</label>
<label class="col-md-2 col-form-label">Privilegios:</label>
<div class="col-md-10">
<textarea class="form-control" rows="3" disabled><?= htmlspecialchars($datos['observaciones'] ?? '') ?></textarea>
<textarea class="form-control" rows="2" disabled>Acceso completo al sistema - Gestión de usuarios, agencias, importadores y configuración general</textarea>
</div>
</div>
<div style="display: flex; justify-content: right;">
<a href="/IMPORTADORES/configuracion/editar" class="btn btn-success mb-3">✏️ Editar Información</a>
</div>
</div>
</form>
</div>
</form>
</div>
<?php else: ?>
<div class="alert alert-warning">
<h5>⚠️ Información no disponible</h5>
<p>No se pudo cargar la información para el tipo de usuario:
<strong><?= htmlspecialchars($datos['tipo_usuario'] ?? 'Desconocido') ?></strong>
</p>
<p class="mb-0">
<small class="text-muted">Tipos de usuario válidos: admin_agencia, agente_aduanal, super_admin, importador</small><br>
<small class="text-muted">
Datos disponibles:
<?= is_array($datos) ? implode(', ', array_keys($datos)) : 'Sin datos' ?>
</small>
</p>
</div>
<?php endif; ?>
</div>
</body>

View File

@@ -113,7 +113,7 @@
<div class="card shadow-sm p-3">
<h5 class="text-teal">Vinculaciones</h5>
<p>Visualiza o establece nuevas vinculaciones con agencias aduanales.</p>
<a href="/IMPORTADORES/importadores/vinculaciones"
<a href="/IMPORTADORES/vinculaciones/vinculacionesUsuario"
class="btn btn-teal btn-sm mt-2 <?= str_contains($_SERVER['REQUEST_URI'], '/importadores/vinculaciones') ? 'active' : '' ?>">
Ver vinculaciones
</a>

View File

@@ -59,7 +59,7 @@
class="nav-link px-3 py-2 <?= str_contains($_SERVER['REQUEST_URI'], '/IMPORTADORES/vinculaciones/vinculacionesUsuario') ? 'active' : '' ?>">
• Mis vinculaciones
</a>
<a href="/IMPORTADORES/vinculaciones/nuevaVinculacion"
<a href="/IMPORTADORES/importadores/nuevaVinculacion"
class="nav-link px-3 py-2 <?= str_contains($_SERVER['REQUEST_URI'], '/IMPORTADORES/vinculaciones/nuevaVinculacion') ? 'active' : '' ?>">
• Nueva vinculación
</a>

View File

@@ -68,9 +68,9 @@
<td><?= $ag['creado_en'] ? $ag['creado_en']->format('Y-m-d H:i') : '' ?></td>
<td>
<?php if (!empty($ag['estado_solicitud']) && $ag['estado_solicitud'] === 'PENDIENTE'): ?>
<a href="/IMPORTADORES/vinculaciones/cancelar?id=<?= $ag['id_agencia'] ?>" class="btn btn-sm btn-danger">Cancelar solicitud</a>
<a href="/IMPORTADORES/importadores/cancelarVinculacion?id=<?= $ag['id_agencia'] ?>" class="btn btn-sm btn-danger">Cancelar solicitud</a>
<?php else: ?>
<a href="/IMPORTADORES/vinculaciones/vincular?id=<?= $ag['id_agencia'] ?>" class="btn btn-sm btn-success">Vincular</a>
<a href="/IMPORTADORES/importadores/vincular?id=<?= $ag['id_agencia'] ?>" class="btn btn-sm btn-success">Vincular</a>
<?php endif; ?>
</td>
</tr>

View File

@@ -65,9 +65,7 @@
<td><?= !empty($v['fecha_vinculacion']) ? $v['fecha_vinculacion']->format('Y-m-d H:i') : '' ?></td>
<td>
<?php if (in_array($v['tipo_usuario_sistema'], ['importador', 'agente_aduanal'])): ?>
<a href="/IMPORTADORES/vinculaciones/desvincularAgencia?id=<?= $v['id_relacion'] ?>&tipo=<?= $v['tipo_vinculacion'] ?>"
class="btn btn-sm btn-danger"
onclick="return confirm('¿Está seguro de que desea desvincular este usuario?')">
<a href="/IMPORTADORES/vinculaciones/desvincularAgencia?id=<?= $v['id_relacion'] ?>&tipo=<?= $v['tipo_vinculacion'] ?>" class="btn btn-sm btn-danger">
Desvincular
</a>
<?php else: ?>