diff --git a/app/controllers/preferencias.php b/app/controllers/preferencias.php index e4f95e4..fed85a0 100644 --- a/app/controllers/preferencias.php +++ b/app/controllers/preferencias.php @@ -10,92 +10,316 @@ function index() function notificaciones() { - $conn = getConnection(); + $conn = getConnection(); $idUsuario = $_SESSION['usuario_id'] ?? null; if (!$idUsuario) { - header("Location: /login"); + header("Location: /IMPORTADORES/login"); exit; } // Obtener configuración general de notificaciones - $query = "SELECT notificaciones, notificaciones_extra FROM usuarios_sistema WHERE id_usuario = ?"; - $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); + $query = "SELECT notificaciones, notificaciones_extra, tipo_usuario FROM usuarios_sistema WHERE id_usuario = ?"; + $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); if (!$stmt || !sqlsrv_execute($stmt)) { die("Error al obtener configuración: " . print_r(sqlsrv_errors(), true)); } - $notificaciones = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC) ?: ['notificaciones' => 0, 'notificaciones_extra' => 0]; + $usuario = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); + if (!$usuario) { + die("Usuario no encontrado"); + } + + $notificaciones = [ + 'notificaciones' => $usuario['notificaciones'] ?? 0, + 'notificaciones_extra' => $usuario['notificaciones_extra'] ?? 0 + ]; + $tipoUsuario = $usuario['tipo_usuario'] ?? 'importador'; sqlsrv_free_stmt($stmt); - // Obtener preferencias específicas de notificaciones - $query = "SELECT * FROM preferencias_notificaciones_usuario WHERE id_usuario = ?"; - $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); - if ($stmt && sqlsrv_execute($stmt)) { - $preferenciasRow = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); - sqlsrv_free_stmt($stmt); - } else { - $preferenciasRow = false; - } + switch ($tipoUsuario) { + case 'importador': + // Obtener preferencias específicas de notificaciones + $query = "SELECT * FROM preferencias_notificaciones_usuario WHERE id_usuario = ?"; + $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); + if ($stmt && sqlsrv_execute($stmt)) { + $preferenciasRow = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); + sqlsrv_free_stmt($stmt); + } else { + $preferenciasRow = false; + } - // Después de obtener $preferenciasRow, antes de crear el array $preferencias - if ($preferenciasRow && isset($preferenciasRow['resumen_diario_hora'])) { - // Formatear la hora para el input HTML - $hora_obj = $preferenciasRow['resumen_diario_hora']; - if ($hora_obj instanceof DateTime) { - $preferenciasRow['resumen_diario_hora'] = $hora_obj->format('H:i'); - } elseif (is_string($hora_obj)) { - // Si viene como string "08:00:00.0000000", extraer solo HH:MM - $preferenciasRow['resumen_diario_hora'] = substr($hora_obj, 0, 5); - } - } - - // Si no existe registro, crear valores por defecto - if (!$preferenciasRow) { - $preferencias = [ - 'nuevas_solicitudes' => 0, - 'registro_solicitud' => 0, - 'cambio_estado' => 0, - 'resumen_diario' => 0, - 'alertas_tiempo' => 0, - 'documentos_expediente' => 0, - 'nuevos_archivos' => 0, - 'intentos_fallidos' => 0, - 'bloqueo_cuenta' => 0, - 'resumen_diario_hora' => '08:00', - 'resumen_diario_dias' => 'L-V' - ]; - } else { - $preferencias = $preferenciasRow; - // Asegurar valores por defecto para campos de resumen si no existen - $preferencias['resumen_diario_hora'] = $preferencias['resumen_diario_hora'] ?? '08:00'; - $preferencias['resumen_diario_dias'] = $preferencias['resumen_diario_dias'] ?? 'L-V'; - } + // Después de obtener $preferenciasRow, antes de crear el array $preferencias + if ($preferenciasRow && isset($preferenciasRow['resumen_diario_hora'])) { + // Formatear la hora para el input HTML + $hora_obj = $preferenciasRow['resumen_diario_hora']; + if ($hora_obj instanceof DateTime) { + $preferenciasRow['resumen_diario_hora'] = $hora_obj->format('H:i'); + } elseif (is_string($hora_obj)) { + // Si viene como string "08:00:00.0000000", extraer solo HH:MM + $preferenciasRow['resumen_diario_hora'] = substr($hora_obj, 0, 5); + } + } + + // Si no existe registro, crear valores por defecto + if (!$preferenciasRow) { + $preferencias = [ + 'nuevas_solicitudes' => 0, + 'registro_solicitud' => 0, + 'cambio_estado' => 0, + 'resumen_diario' => 0, + 'alertas_tiempo' => 0, + 'documentos_expediente' => 0, + 'nuevos_archivos' => 0, + 'intentos_fallidos' => 0, + 'bloqueo_cuenta' => 0, + 'resumen_diario_hora' => '08:00', + 'resumen_diario_dias' => 'L-V' + ]; + } else { + $preferencias = $preferenciasRow; + // Asegurar valores por defecto para campos de resumen si no existen + $preferencias['resumen_diario_hora'] = $preferencias['resumen_diario_hora'] ?? '08:00'; + $preferencias['resumen_diario_dias'] = $preferencias['resumen_diario_dias'] ?? 'L-V'; + } - // Obtener tipos de notificaciones disponibles - $query = "SELECT nombre, descripcion FROM tipos_notificaciones ORDER BY nombre"; - $stmt = sqlsrv_query($conn, $query); - if (!$stmt) { - die("Error al obtener tipos: " . print_r(sqlsrv_errors(), true)); - } - - // Crear array asociativo para la vista - $tipos = []; - while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { - $tipos[$row['nombre']] = $row['descripcion']; - } - sqlsrv_free_stmt($stmt); + // Obtener tipos de notificaciones disponibles + $query = "SELECT nombre, descripcion FROM tipos_notificaciones ORDER BY nombre"; + $stmt = sqlsrv_query($conn, $query); + if (!$stmt) { + die("Error al obtener tipos: " . print_r(sqlsrv_errors(), true)); + } + + // Crear array asociativo para la vista + $tipos = []; + while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { + $tipos[$row['nombre']] = $row['descripcion']; + } + sqlsrv_free_stmt($stmt); - // Obtener correo extra si existe - $query = "SELECT correo FROM correo_extra WHERE id_usuario = ?"; - $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); - $correoExtra = ''; - if ($stmt && sqlsrv_execute($stmt)) { - $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); - $correoExtra = $row ? $row['correo'] : ''; - sqlsrv_free_stmt($stmt); + // Obtener correo extra si existe + $query = "SELECT correo FROM correo_extra WHERE id_usuario = ?"; + $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); + $correoExtra = ''; + if ($stmt && sqlsrv_execute($stmt)) { + $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); + $correoExtra = $row ? $row['correo'] : ''; + sqlsrv_free_stmt($stmt); + } + break; + // case 'agente_agencia': + // Obtener preferencias específicas de notificaciones para agente + // $query = "SELECT * FROM preferencias_notificaciones_agente WHERE id_usuario = ?"; + // $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); + // if ($stmt && sqlsrv_execute($stmt)) { + // $preferenciasRow = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); + // sqlsrv_free_stmt($stmt); + // } else { + // $preferenciasRow = false; + // } + + // Formatear hora si existe + // if ($preferenciasRow && isset($preferenciasRow['resumen_diario_hora'])) { + // $hora_obj = $preferenciasRow['resumen_diario_hora']; + // if ($hora_obj instanceof DateTime) { + // $preferenciasRow['resumen_diario_hora'] = $hora_obj->format('H:i'); + // } elseif (is_string($hora_obj)) { + // $preferenciasRow['resumen_diario_hora'] = substr($hora_obj, 0, 5); + // } + // } + + // Si no existe registro, crear valores por defecto para agente + // if (!$preferenciasRow) { + // $preferencias = [ + // 'nuevas_solicitudes' => 0, + // 'solicitudes_asignadas' => 0, + // 'cambio_estado' => 0, + // 'documentos_recibidos' => 0, + // 'documentos_rechazados' => 0, + // 'alertas_vencimiento' => 0, + // 'notificaciones_sistema' => 0, + // 'resumen_diario' => 0, + // 'alertas_tiempo' => 0, + // 'resumen_diario_hora' => '08:00', + // 'resumen_diario_dias' => 'L-V' + // ]; + // } else { + // $preferencias = $preferenciasRow; + // $preferencias['resumen_diario_hora'] = $preferencias['resumen_diario_hora'] ?? '08:00'; + // $preferencias['resumen_diario_dias'] = $preferencias['resumen_diario_dias'] ?? 'L-V'; + // } + + // Obtener tipos de notificaciones específicas para agentes + // $query = "SELECT nombre, descripcion FROM tipos_notificaciones WHERE tipo_usuario = 'agente_aduanal' OR tipo_usuario IS NULL ORDER BY nombre"; + // $stmt = sqlsrv_query($conn, $query); + // if (!$stmt) { + // die("Error al obtener tipos: " . print_r(sqlsrv_errors(), true)); + // } + + // $tipos = []; + // while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { + // $tipos[$row['nombre']] = $row['descripcion']; + // } + // sqlsrv_free_stmt($stmt); + + // Obtener correo extra si existe + // $query = "SELECT correo FROM correo_extra WHERE id_usuario = ?"; + // $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); + // $correoExtra = ''; + // if ($stmt && sqlsrv_execute($stmt)) { + // $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); + // $correoExtra = $row ? $row['correo'] : ''; + // sqlsrv_free_stmt($stmt); + // } + // break; + // case 'admin_agencia': + // Obtener preferencias específicas de notificaciones para admin de agencia + // $query = "SELECT * FROM preferencias_notificaciones_agencia WHERE id_usuario = ?"; + // $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); + // if ($stmt && sqlsrv_execute($stmt)) { + // $preferenciasRow = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); + // sqlsrv_free_stmt($stmt); + // } else { + // $preferenciasRow = false; + // } + + // Formatear hora si existe + // if ($preferenciasRow && isset($preferenciasRow['resumen_diario_hora'])) { + // $hora_obj = $preferenciasRow['resumen_diario_hora']; + // if ($hora_obj instanceof DateTime) { + // $preferenciasRow['resumen_diario_hora'] = $hora_obj->format('H:i'); + // } elseif (is_string($hora_obj)) { + // $preferenciasRow['resumen_diario_hora'] = substr($hora_obj, 0, 5); + // } + // } + + // Si no existe registro, crear valores por defecto para admin de agencia + // if (!$preferenciasRow) { + // $preferencias = [ + // 'nuevas_solicitudes' => 0, + // 'solicitudes_completadas' => 0, + // 'reportes_agentes' => 0, + // 'alertas_rendimiento' => 0, + // 'documentos_pendientes' => 0, + // 'notificaciones_sistema' => 0, + // 'alertas_vencimiento' => 0, + // 'resumen_semanal' => 0, + // 'resumen_mensual' => 0, + // 'resumen_diario' => 0, + // 'resumen_diario_hora' => '08:00', + // 'resumen_diario_dias' => 'L-V' + // ]; + // } else { + // $preferencias = $preferenciasRow; + // $preferencias['resumen_diario_hora'] = $preferencias['resumen_diario_hora'] ?? '08:00'; + // $preferencias['resumen_diario_dias'] = $preferencias['resumen_diario_dias'] ?? 'L-V'; + // } + + // Obtener tipos de notificaciones específicas para admin de agencia + // $query = "SELECT nombre, descripcion FROM tipos_notificaciones WHERE tipo_usuario = 'admin_agencia' OR tipo_usuario IS NULL ORDER BY nombre"; + // $stmt= sqlsrv_query($conn, $query); + // if (!$stmt) { + // die("Error al obtener tipos: " . print_r(sqlsrv_errors(), true)); + // } + + // $tipos = []; + // while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { + // $tipos[$row['nombre']] = $row['descripcion']; + // } + // sqlsrv_free_stmt($stmt); + + // Obtener correo extra si existe + // $query = "SELECT correo FROM correo_extra WHERE id_usuario = ?"; + // $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); + // $correoExtra = ''; + // if ($stmt && sqlsrv_execute($stmt)) { + // $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); + // $correoExtra = $row ? $row['correo'] : ''; + // sqlsrv_free_stmt($stmt); + // } + // break; + // case 'super_admin': + // Obtener preferencias específicas de notificaciones para super admin + // $query = "SELECT * FROM preferencias_notificaciones_admin WHERE id_usuario = ?"; + // $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); + // if ($stmt && sqlsrv_execute($stmt)) { + // $preferenciasRow = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); + // sqlsrv_free_stmt($stmt); + // } else { + // $preferenciasRow = false; + // } + + // Formatear hora si existe + // if ($preferenciasRow && isset($preferenciasRow['resumen_diario_hora'])) { + // $hora_obj = $preferenciasRow['resumen_diario_hora']; + // if ($hora_obj instanceof DateTime) { + // $preferenciasRow['resumen_diario_hora'] = $hora_obj->format('H:i'); + // } elseif (is_string($hora_obj)) { + // $preferenciasRow['resumen_diario_hora'] = substr($hora_obj, 0, 5); + // } + // } + + // Si no existe registro, crear valores por defecto para super admin + // if (!$preferenciasRow) { + // $preferencias = [ + // 'alertas_sistema' => 0, + // 'reportes_globales' => 0, + // 'nuevos_usuarios' => 0, + // 'alertas_seguridad' => 0, + // 'errores_sistema' => 0, + // 'notificaciones_criticas' => 0, + // 'estadisticas_uso' => 0, + // 'mantenimiento_sistema' => 0, + // 'resumen_diario' => 0, + // 'resumen_semanal' => 0, + // 'resumen_mensual' => 0, + // 'resumen_diario_hora' => '08:00', + // 'resumen_diario_dias' => 'L-V' + // ]; + // } else { + // $preferencias = $preferenciasRow; + // $preferencias['resumen_diario_hora'] = $preferencias['resumen_diario_hora'] ?? '08:00'; + // $preferencias['resumen_diario_dias'] = $preferencias['resumen_diario_dias'] ?? 'L-V'; + // } + + // Obtener tipos de notificaciones específicas para super admin + // $query = "SELECT nombre, descripcion FROM tipos_notificaciones WHERE tipo_usuario = 'super_admin' OR tipo_usuario IS NULL ORDER BY nombre"; + // $stmt = sqlsrv_query($conn, $query); + // if (!$stmt) { + // die("Error al obtener tipos: " . print_r(sqlsrv_errors(), true)); + // } + + // $tipos = []; + // while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { + // $tipos[$row['nombre']] = $row['descripcion']; + // } + // sqlsrv_free_stmt($stmt); + + // Obtener correo extra si existe + // $query = "SELECT correo FROM correo_extra WHERE id_usuario = ?"; + // $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); + // $correoExtra = ''; + // if ($stmt && sqlsrv_execute($stmt)) { + // $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); + // $correoExtra = $row ? $row['correo'] : ''; + // sqlsrv_free_stmt($stmt); + // } + // break; + default: + // Tipo de usuario no reconocido, usar configuración básica + $preferencias = [ + 'notificaciones_generales' => 0, + 'resumen_diario' => 0, + 'resumen_diario_hora' => '08:00', + 'resumen_diario_dias' => 'L-V' + ]; + + $tipos = []; + $correoExtra = ''; + break; } sqlsrv_close($conn); + include __DIR__ . '/../../views/preferencias/notificaciones.php'; } @@ -127,6 +351,19 @@ function guardarPreferenciasAjax() $id_usuario = $_SESSION['usuario_id']; try { + // Obtener tipo de usuario + $query = "SELECT tipo_usuario FROM usuarios_sistema WHERE id_usuario = ?"; + $stmt = sqlsrv_prepare($conn, $query, [$id_usuario]); + if (!$stmt || !sqlsrv_execute($stmt)) { + throw new Exception("Error al obtener tipo de usuario"); + } + $usuario = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); + if (!$usuario) { + throw new Exception("Usuario no encontrado"); + } + $tipo_usuario = $usuario['tipo_usuario']; + sqlsrv_free_stmt($stmt); + // Leer datos JSON del cuerpo de la petición $input = json_decode(file_get_contents('php://input'), true); @@ -155,13 +392,16 @@ function guardarPreferenciasAjax() } sqlsrv_free_stmt($stmt); - // Si se desactivan las notificaciones, limpiar preferencias específicas + // Si se desactivan las notificaciones, limpiar preferencias específicas según tipo de usuario if (!$notificaciones) { - $query_delete = "DELETE FROM preferencias_notificaciones_usuario WHERE id_usuario = ?"; - $stmt_delete = sqlsrv_prepare($conn, $query_delete, [$id_usuario]); - if ($stmt_delete) { - sqlsrv_execute($stmt_delete); - sqlsrv_free_stmt($stmt_delete); + $tabla_preferencias = getTablaPreferencias($tipo_usuario); + if ($tabla_preferencias) { + $query_delete = "DELETE FROM $tabla_preferencias WHERE id_usuario = ?"; + $stmt_delete = sqlsrv_prepare($conn, $query_delete, [$id_usuario]); + if ($stmt_delete) { + sqlsrv_execute($stmt_delete); + sqlsrv_free_stmt($stmt_delete); + } } } @@ -211,15 +451,14 @@ function guardarPreferenciasAjax() throw new Exception("Tipo de notificación no especificado"); } - // Validar que el tipo de notificación es válido - $tipos_validos = [ - 'nuevas_solicitudes', 'registro_solicitud', 'cambio_estado', - 'resumen_diario', 'alertas_tiempo', 'documentos_expediente', - 'nuevos_archivos', 'intentos_fallidos', 'bloqueo_cuenta' - ]; + // Obtener configuración específica según tipo de usuario + $config = getConfiguracionTipoUsuario($tipo_usuario); + $tabla_preferencias = $config['tabla']; + $tipos_validos = $config['tipos_validos']; + // Validar que el tipo de notificación es válido para este tipo de usuario if (!in_array($tipo_nombre, $tipos_validos)) { - throw new Exception("Tipo de notificación no válido"); + throw new Exception("Tipo de notificación no válido para este tipo de usuario"); } // Verificar que las notificaciones generales estén activadas @@ -237,7 +476,7 @@ function guardarPreferenciasAjax() } // Verificar si existe el registro - $query_exists = "SELECT COUNT(*) as count FROM preferencias_notificaciones_usuario WHERE id_usuario = ?"; + $query_exists = "SELECT COUNT(*) as count FROM $tabla_preferencias WHERE id_usuario = ?"; $stmt_exists = sqlsrv_prepare($conn, $query_exists, [$id_usuario]); $exists = false; if ($stmt_exists && sqlsrv_execute($stmt_exists)) { @@ -248,30 +487,18 @@ function guardarPreferenciasAjax() if ($exists) { // Actualizar el campo específico - $query = "UPDATE preferencias_notificaciones_usuario SET [$tipo_nombre] = ? WHERE id_usuario = ?"; + $query = "UPDATE $tabla_preferencias SET [$tipo_nombre] = ? WHERE id_usuario = ?"; $stmt = sqlsrv_prepare($conn, $query, [$valor, $id_usuario]); } else { - // Crear registro con valores por defecto y el campo específico - $tipos_default = [ - 'nuevas_solicitudes' => 0, - 'registro_solicitud' => 0, - 'cambio_estado' => 0, - 'resumen_diario' => 0, - 'alertas_tiempo' => 0, - 'documentos_expediente' => 0, - 'nuevos_archivos' => 0, - 'intentos_fallidos' => 0, - 'bloqueo_cuenta' => 0, - 'resumen_diario_hora' => '08:00', - 'resumen_diario_dias' => 'L-V' - ]; + // Crear registro con valores por defecto específicos del tipo de usuario + $tipos_default = $config['valores_default']; // Establecer el valor específico $tipos_default[$tipo_nombre] = $valor; $campos = '[' . implode('], [', array_keys($tipos_default)) . ']'; $placeholders = rtrim(str_repeat('?, ', count($tipos_default)), ', '); - $query = "INSERT INTO preferencias_notificaciones_usuario (id_usuario, $campos) VALUES (?, $placeholders)"; + $query = "INSERT INTO $tabla_preferencias (id_usuario, $campos) VALUES (?, $placeholders)"; $params = array_merge([$id_usuario], array_values($tipos_default)); $stmt = sqlsrv_prepare($conn, $query, $params); @@ -297,12 +524,12 @@ function guardarPreferenciasAjax() } // Validar días - $dias_validos = ['L-V', 'TODOS']; + $dias_validos = ['L-V', 'TODOS']; $es_personalizado = !in_array($dias, $dias_validos); if ($es_personalizado) { // Validar formato personalizado (ej: "L,M,X" o "L,V,S,D") - $dias_array = explode(',', $dias); + $dias_array = explode(',', $dias); $dias_permitidos = ['L', 'M', 'X', 'J', 'V', 'S', 'D']; foreach ($dias_array as $dia) { @@ -313,13 +540,19 @@ function guardarPreferenciasAjax() } } + // Obtener tabla de preferencias según tipo de usuario + $tabla_preferencias = getTablaPreferencias($tipo_usuario); + if (!$tabla_preferencias) { + throw new Exception("Tipo de usuario no válido para configuración de resumen"); + } + // Verificar que el resumen diario esté activado - $query_check = "SELECT resumen_diario FROM preferencias_notificaciones_usuario WHERE id_usuario = ?"; - $stmt_check = sqlsrv_prepare($conn, $query_check, [$id_usuario]); + $query_check = "SELECT resumen_diario FROM $tabla_preferencias WHERE id_usuario = ?"; + $stmt_check = sqlsrv_prepare($conn, $query_check, [$id_usuario]); $resumen_activo = false; if ($stmt_check && sqlsrv_execute($stmt_check)) { - $row = sqlsrv_fetch_array($stmt_check, SQLSRV_FETCH_ASSOC); + $row = sqlsrv_fetch_array($stmt_check, SQLSRV_FETCH_ASSOC); $resumen_activo = $row && $row['resumen_diario']; sqlsrv_free_stmt($stmt_check); } @@ -329,41 +562,35 @@ function guardarPreferenciasAjax() } // Verificar si existe el registro - $query_exists = "SELECT COUNT(*) as count FROM preferencias_notificaciones_usuario WHERE id_usuario = ?"; - $stmt_exists = sqlsrv_prepare($conn, $query_exists, [$id_usuario]); - $exists = false; + $query_exists = "SELECT COUNT(*) as count FROM $tabla_preferencias WHERE id_usuario = ?"; + $stmt_exists = sqlsrv_prepare($conn, $query_exists, [$id_usuario]); + $exists = false; if ($stmt_exists && sqlsrv_execute($stmt_exists)) { - $row = sqlsrv_fetch_array($stmt_exists, SQLSRV_FETCH_ASSOC); + $row = sqlsrv_fetch_array($stmt_exists, SQLSRV_FETCH_ASSOC); $exists = $row['count'] > 0; sqlsrv_free_stmt($stmt_exists); } if ($exists) { // Actualizar configuración del resumen - $query = "UPDATE preferencias_notificaciones_usuario SET resumen_diario_hora = ?, resumen_diario_dias = ? WHERE id_usuario = ?"; - $stmt = sqlsrv_prepare($conn, $query, [$hora, $dias, $id_usuario]); + $query = "UPDATE $tabla_preferencias SET resumen_diario_hora = ?, resumen_diario_dias = ? WHERE id_usuario = ?"; + $stmt = sqlsrv_prepare($conn, $query, [$hora, $dias, $id_usuario]); } else { - // Crear registro con valores por defecto - $tipos_default = [ - 'nuevas_solicitudes' => 0, - 'registro_solicitud' => 0, - 'cambio_estado' => 0, - 'resumen_diario' => 1, // Activado porque llegamos aquí desde su configuración - 'alertas_tiempo' => 0, - 'documentos_expediente' => 0, - 'nuevos_archivos' => 0, - 'intentos_fallidos' => 0, - 'bloqueo_cuenta' => 0, - 'resumen_diario_hora' => $hora, - 'resumen_diario_dias' => $dias - ]; + // Crear registro con valores por defecto específicos del tipo de usuario + $config = getConfiguracionTipoUsuario($tipo_usuario); + $tipos_default = $config['valores_default']; - $campos = '[' . implode('], [', array_keys($tipos_default)) . ']'; + // Activar resumen diario y configurar hora/días + $tipos_default['resumen_diario'] = 1; + $tipos_default['resumen_diario_hora'] = $hora; + $tipos_default['resumen_diario_dias'] = $dias; + + $campos = '[' . implode('], [', array_keys($tipos_default)) . ']'; $placeholders = rtrim(str_repeat('?, ', count($tipos_default)), ', '); - $query = "INSERT INTO preferencias_notificaciones_usuario (id_usuario, $campos) VALUES (?, $placeholders)"; + $query = "INSERT INTO $tabla_preferencias (id_usuario, $campos) VALUES (?, $placeholders)"; $params = array_merge([$id_usuario], array_values($tipos_default)); - $stmt = sqlsrv_prepare($conn, $query, $params); + $stmt = sqlsrv_prepare($conn, $query, $params); } if (!$stmt || !sqlsrv_execute($stmt)) { @@ -387,8 +614,8 @@ function guardarPreferenciasAjax() echo json_encode([ 'success' => true, 'message' => 'Preferencias guardadas automáticamente', - 'tipo' => $tipo_cambio, - 'data' => $response_data ?? [] + 'tipo' => $tipo_cambio, + 'data' => $response_data ?? [] ]); } catch (Exception $e) { @@ -399,26 +626,146 @@ function guardarPreferenciasAjax() echo json_encode([ 'success' => false, 'message' => $e->getMessage(), - 'tipo' => $tipo_cambio ?? 'unknown' + 'tipo' => $tipo_cambio ?? 'unknown' ]); } exit; } +// Función auxiliar para obtener la tabla de preferencias según tipo de usuario +function getTablaPreferencias($tipo_usuario) { + switch ($tipo_usuario) { + case 'importador': + return 'preferencias_notificaciones_usuario'; + case 'agente_aduanal': + return 'preferencias_notificaciones_agente'; + case 'admin_agencia': + return 'preferencias_notificaciones_agencia'; + case 'super_admin': + return 'preferencias_notificaciones_admin'; + default: + return null; + } +} + +// Función auxiliar para obtener configuración específica por tipo de usuario +function getConfiguracionTipoUsuario($tipo_usuario) { + switch ($tipo_usuario) { + case 'importador': + return [ + 'tabla' => 'preferencias_notificaciones_usuario', + 'tipos_validos' => [ + 'nuevas_solicitudes', 'registro_solicitud', 'cambio_estado', + 'resumen_diario', 'alertas_tiempo', 'documentos_expediente', + 'nuevos_archivos', 'intentos_fallidos', 'bloqueo_cuenta' + ], + 'valores_default' => [ + 'nuevas_solicitudes' => 0, + 'registro_solicitud' => 0, + 'cambio_estado' => 0, + 'resumen_diario' => 0, + 'alertas_tiempo' => 0, + 'documentos_expediente' => 0, + 'nuevos_archivos' => 0, + 'intentos_fallidos' => 0, + 'bloqueo_cuenta' => 0, + 'resumen_diario_hora' => '08:00', + 'resumen_diario_dias' => 'L-V' + ] + ]; + + case 'agente_aduanal': + return [ + 'tabla' => 'preferencias_notificaciones_agente', + 'tipos_validos' => [ + 'nuevas_solicitudes', 'solicitudes_asignadas', 'cambio_estado', + 'documentos_recibidos', 'documentos_rechazados', 'alertas_vencimiento', + 'notificaciones_sistema', 'resumen_diario', 'alertas_tiempo' + ], + 'valores_default' => [ + 'nuevas_solicitudes' => 0, + 'solicitudes_asignadas' => 0, + 'cambio_estado' => 0, + 'documentos_recibidos' => 0, + 'documentos_rechazados' => 0, + 'alertas_vencimiento' => 0, + 'notificaciones_sistema' => 0, + 'resumen_diario' => 0, + 'alertas_tiempo' => 0, + 'resumen_diario_hora' => '08:00', + 'resumen_diario_dias' => 'L-V' + ] + ]; + + case 'admin_agencia': + return [ + 'tabla' => 'preferencias_notificaciones_agencia', + 'tipos_validos' => [ + 'nuevas_solicitudes', 'solicitudes_completadas', 'reportes_agentes', + 'alertas_rendimiento', 'documentos_pendientes', 'notificaciones_sistema', + 'alertas_vencimiento', 'resumen_semanal', 'resumen_mensual', 'resumen_diario' + ], + 'valores_default' => [ + 'nuevas_solicitudes' => 0, + 'solicitudes_completadas' => 0, + 'reportes_agentes' => 0, + 'alertas_rendimiento' => 0, + 'documentos_pendientes' => 0, + 'notificaciones_sistema' => 0, + 'alertas_vencimiento' => 0, + 'resumen_semanal' => 0, + 'resumen_mensual' => 0, + 'resumen_diario' => 0, + 'resumen_diario_hora' => '08:00', + 'resumen_diario_dias' => 'L-V' + ] + ]; + + case 'super_admin': + return [ + 'tabla' => 'preferencias_notificaciones_admin', + 'tipos_validos' => [ + 'alertas_sistema', 'reportes_globales', 'nuevos_usuarios', + 'alertas_seguridad', 'errores_sistema', 'notificaciones_criticas', + 'estadisticas_uso', 'mantenimiento_sistema', 'resumen_diario', + 'resumen_semanal', 'resumen_mensual' + ], + 'valores_default' => [ + 'alertas_sistema' => 0, + 'reportes_globales' => 0, + 'nuevos_usuarios' => 0, + 'alertas_seguridad' => 0, + 'errores_sistema' => 0, + 'notificaciones_criticas' => 0, + 'estadisticas_uso' => 0, + 'mantenimiento_sistema' => 0, + 'resumen_diario' => 0, + 'resumen_semanal' => 0, + 'resumen_mensual' => 0, + 'resumen_diario_hora' => '08:00', + 'resumen_diario_dias' => 'L-V' + ] + ]; + + default: + return null; + } +} + // Función auxiliar para obtener el correo extra de un usuario (útil para el sistema de notificaciones) function obtenerCorreoExtra($id_usuario) { - $conn = getConnection(); + $conn = getConnection(); $query = " SELECT ce.correo FROM correo_extra ce INNER JOIN usuarios_sistema us ON ce.id_usuario = us.id_usuario WHERE ce.id_usuario = ? AND us.notificaciones_extra = 1 "; - $stmt = sqlsrv_prepare($conn, $query, [$id_usuario]); + $stmt = sqlsrv_prepare($conn, $query, [$id_usuario]); $correo = null; if ($stmt && sqlsrv_execute($stmt)) { - $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); + $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); $correo = $row ? $row['correo'] : null; sqlsrv_free_stmt($stmt); } @@ -433,7 +780,7 @@ function obtenerPreferenciasNotificacion($id_usuario) // Obtener configuración general $query = "SELECT notificaciones, notificaciones_extra FROM usuarios_sistema WHERE id_usuario = ?"; - $stmt = sqlsrv_prepare($conn, $query, [$id_usuario]); + $stmt = sqlsrv_prepare($conn, $query, [$id_usuario]); if (!$stmt || !sqlsrv_execute($stmt)) { sqlsrv_close($conn); return null; @@ -448,7 +795,7 @@ function obtenerPreferenciasNotificacion($id_usuario) // Obtener preferencias específicas $query = "SELECT * FROM preferencias_notificaciones_usuario WHERE id_usuario = ?"; - $stmt = sqlsrv_prepare($conn, $query, [$id_usuario]); + $stmt = sqlsrv_prepare($conn, $query, [$id_usuario]); $preferencias = null; if ($stmt && sqlsrv_execute($stmt)) { $preferencias = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); @@ -459,7 +806,7 @@ function obtenerPreferenciasNotificacion($id_usuario) $correo_extra = null; if ($config['notificaciones_extra']) { $query = "SELECT correo FROM correo_extra WHERE id_usuario = ?"; - $stmt = sqlsrv_prepare($conn, $query, [$id_usuario]); + $stmt = sqlsrv_prepare($conn, $query, [$id_usuario]); if ($stmt && sqlsrv_execute($stmt)) { $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); $correo_extra = $row ? $row['correo'] : null; @@ -470,8 +817,8 @@ function obtenerPreferenciasNotificacion($id_usuario) sqlsrv_close($conn); return [ 'config_general' => $config, - 'preferencias' => $preferencias, - 'correo_extra' => $correo_extra + 'preferencias' => $preferencias, + 'correo_extra' => $correo_extra ]; } @@ -496,7 +843,7 @@ function debeRecibirNotificacion($id_usuario, $tipo_notificacion) // Función auxiliar para obtener la configuración del resumen diario de un usuario function obtenerConfigResumenDiario($id_usuario) { - $conn = getConnection(); + $conn = getConnection(); $query = " SELECT pnu.resumen_diario, pnu.resumen_diario_hora, pnu.resumen_diario_dias @@ -505,7 +852,7 @@ function obtenerConfigResumenDiario($id_usuario) WHERE pnu.id_usuario = ? AND us.notificaciones = 1 AND pnu.resumen_diario = 1 "; - $stmt = sqlsrv_prepare($conn, $query, [$id_usuario]); + $stmt = sqlsrv_prepare($conn, $query, [$id_usuario]); $config = null; if ($stmt && sqlsrv_execute($stmt)) { @@ -526,7 +873,7 @@ function obtenerConfigResumenDiario($id_usuario) // Función auxiliar para verificar si hoy es día de envío de resumen según la configuración del usuario function esDiaResumen($config_dias) { - $hoy = date('N'); // 1=Lunes, 7=Domingo + $hoy = date('N'); // 1=Lunes, 7=Domingo $dia_letra = ['', 'L', 'M', 'X', 'J', 'V', 'S', 'D'][$hoy]; switch ($config_dias) { @@ -543,7 +890,7 @@ function esDiaResumen($config_dias) function catalogos() { - $conn = getConnection(); + $conn = getConnection(); $idUsuario = $_SESSION['usuario_id'] ?? null; if (!$idUsuario) { @@ -613,8 +960,8 @@ function catalogos() // $preferencias = [ // Aquí se definirán los campos específicos para agente aduanal // cuando se creen las tablas correspondientes - // 'configuracion' => 0, - // 'cerrar_sesion' => 0 + // 'configuracion' => 0, + // 'cerrar_sesion' => 0 // ]; // } else { // $preferencias = $preferenciasRow; @@ -636,8 +983,8 @@ function catalogos() // $preferencias = [ // Aquí se definirán los campos específicos para admin agencia // cuando se creen las tablas correspondientes - // 'configuracion' => 0, - // 'cerrar_sesion' => 0 + // 'configuracion' => 0, + // 'cerrar_sesion' => 0 // ]; // } else { // $preferencias = $preferenciasRow; @@ -659,8 +1006,8 @@ function catalogos() // $preferencias = [ // Aquí se definirán los campos específicos para super admin // cuando se creen las tablas correspondientes - // 'configuracion' => 0, - // 'cerrar_sesion' => 0 + // 'configuracion' => 0, + // 'cerrar_sesion' => 0 // ]; // } else { // $preferencias = $preferenciasRow; @@ -670,8 +1017,8 @@ function catalogos() default: // Tipo de usuario no reconocido, usar valores por defecto mínimos $preferencias = [ - 'configuracion' => 0, - 'cerrar_sesion' => 0 + 'configuracion' => 0, + 'cerrar_sesion' => 0 ]; break; } @@ -688,7 +1035,7 @@ function catalogos() while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { $tipos[$row['nombre']] = [ 'descripcion' => $row['descripcion'], - 'color' => $row['color'] + 'color' => $row['color'] ]; } sqlsrv_free_stmt($stmt); @@ -716,7 +1063,7 @@ function guardarCatalogosAjax() exit; } - $conn = getConnection(); + $conn = getConnection(); $idUsuario = $_SESSION['usuario_id'] ?? null; if (!$idUsuario) { @@ -727,13 +1074,13 @@ function guardarCatalogosAjax() // Obtener tipo de usuario $query = "SELECT tipo_usuario FROM usuarios_sistema WHERE id_usuario = ?"; - $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); + $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); if (!$stmt || !sqlsrv_execute($stmt)) { http_response_code(500); echo json_encode(['success' => false, 'message' => 'Error al obtener información del usuario']); exit; } - $usuario = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); + $usuario = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); $tipoUsuario = $usuario['tipo_usuario'] ?? 'importador'; sqlsrv_free_stmt($stmt); @@ -746,7 +1093,7 @@ function guardarCatalogosAjax() $valor = isset($input['valor']) && $input['valor'] ? 1 : 0; $query = "UPDATE usuarios_sistema SET preferencias_catalogos = ? WHERE id_usuario = ?"; - $stmt = sqlsrv_prepare($conn, $query, [$valor, $idUsuario]); + $stmt = sqlsrv_prepare($conn, $query, [$valor, $idUsuario]); if (!$stmt || !sqlsrv_execute($stmt)) { throw new Exception('Error al actualizar preferencias generales'); @@ -761,7 +1108,7 @@ function guardarCatalogosAjax() } $nombre = $input['nombre']; - $valor = $input['valor'] ? 1 : 0; + $valor = $input['valor'] ? 1 : 0; // Determinar la tabla según el tipo de usuario $tabla = ''; @@ -784,7 +1131,7 @@ function guardarCatalogosAjax() // Verificar si existe un registro para este usuario $query = "SELECT id_preferencia FROM $tabla WHERE id_usuario = ?"; - $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); + $stmt = sqlsrv_prepare($conn, $query, [$idUsuario]); if (!$stmt || !sqlsrv_execute($stmt)) { throw new Exception('Error al verificar preferencias existentes'); } @@ -795,11 +1142,11 @@ function guardarCatalogosAjax() if ($existe) { // Actualizar registro existente $query = "UPDATE $tabla SET [$nombre] = ? WHERE id_usuario = ?"; - $stmt = sqlsrv_prepare($conn, $query, [$valor, $idUsuario]); + $stmt = sqlsrv_prepare($conn, $query, [$valor, $idUsuario]); } else { // Crear nuevo registro $query = "INSERT INTO $tabla (id_usuario, [$nombre]) VALUES (?, ?)"; - $stmt = sqlsrv_prepare($conn, $query, [$idUsuario, $valor]); + $stmt = sqlsrv_prepare($conn, $query, [$idUsuario, $valor]); } if (!$stmt || !sqlsrv_execute($stmt)) { diff --git a/views/admin/agencias_activas.php b/views/admin/agencias_activas.php index a419ecf..1501777 100644 --- a/views/admin/agencias_activas.php +++ b/views/admin/agencias_activas.php @@ -13,6 +13,10 @@ + + + +
-

✅ Agencias Activas

+

✅ Agencias Activas

-
+
@@ -68,7 +98,7 @@ diff --git a/views/admin/alta_agencias.php b/views/admin/alta_agencias.php index 22f443a..284e03f 100644 --- a/views/admin/alta_agencias.php +++ b/views/admin/alta_agencias.php @@ -9,6 +9,10 @@ + + + + @@ -34,10 +64,10 @@
-

🏪 Alta de Agencias Aduanales

+

🏪 Alta de Agencias Aduanales

-
+
➕ Nueva Agencia Aduanal
@@ -76,7 +106,7 @@
- +
diff --git a/views/admin/alta_usuarios.php b/views/admin/alta_usuarios.php index 4b60756..4fb211d 100644 --- a/views/admin/alta_usuarios.php +++ b/views/admin/alta_usuarios.php @@ -13,6 +13,10 @@ + + + + @@ -38,9 +68,9 @@
-

👥 Alta de Usuarios

+

👥 Alta de Usuarios

-
+
➕ Nuevo Usuario
@@ -62,7 +92,7 @@
- +
@@ -93,7 +123,7 @@
diff --git a/views/admin/aprobar_agencias.php b/views/admin/aprobar_agencias.php index 5b81f6f..940da05 100644 --- a/views/admin/aprobar_agencias.php +++ b/views/admin/aprobar_agencias.php @@ -8,6 +8,10 @@ + + + + @@ -33,10 +63,10 @@
-

✅ Aprobación de Agencias Aduanales

+

✅ Aprobación de Agencias Aduanales

-
+
🏪 Agencias Solicitantes
- Suspender + Suspender
format('Y-m-d H:i') : '' ?> - Suspender + Suspender
@@ -66,13 +96,13 @@ diff --git a/views/admin/aprobar_usuarios.php b/views/admin/aprobar_usuarios.php index 557b47d..af9791e 100644 --- a/views/admin/aprobar_usuarios.php +++ b/views/admin/aprobar_usuarios.php @@ -12,6 +12,10 @@ + + + + @@ -37,9 +67,9 @@
-

✅ Aprobación de Usuarios

+

✅ Aprobación de Usuarios

-
+
👥 Usuarios Solicitantes
format('Y-m-d H:i') : '' ?> - Ver PDF + Ver PDF No adjunto - Aprobar + Aprobar
@@ -67,13 +97,13 @@ diff --git a/views/admin/dashboard_admin.php b/views/admin/dashboard_admin.php index 02735f6..0f7ed22 100644 --- a/views/admin/dashboard_admin.php +++ b/views/admin/dashboard_admin.php @@ -8,6 +8,10 @@ + + + +
-

📦 Panel de Administrador

+

📦 Panel de Administrador

-
-
-
-
Aprobar agencias
-

Aprueba las agencias que solicitaron un registro.

- - Ver agencias solicitantes -
+ +
+ +
+
+
Aprobar agencias
+

Aprueba las agencias que solicitaron un registro.

+ + Ver agencias solicitantes +
+
+ +
+
+
Alta de agencias
+

Da de alta manualmente una agencia.

+ + Nueva agencia + +
+
+ +
+
+
Aprobar de usuarios
+

Aprueba los usuarios que solicitaron un registro.

+ + Ver usuarios solicitantes + +
+
+ +
+
+
Alta de usuarios
+

Da de alta manualmente a un usuario.

+ + Nuevo usuario + +
+
+ +
+
+
Configuración
+

Administra los datos de tu agencia.

+ + Configurar + +
+
+ +
+
+
Cerrar sesión
+

Salir del sistema de forma segura.

+ Logout +
+
+
-
-
-
Alta de agencias
-

Da de alta manualmente una agencia.

- - Nueva agencia - +
+ + \ No newline at end of file diff --git a/views/admin/usuarios_inactivos.php b/views/admin/usuarios_inactivos.php index 5a6cf3e..80fb010 100644 --- a/views/admin/usuarios_inactivos.php +++ b/views/admin/usuarios_inactivos.php @@ -14,6 +14,10 @@ + + + + @@ -39,8 +69,8 @@
-

🚷 Usuarios Inactivos

-
+

🚷 Usuarios Inactivos

+
format('Y-m-d H:i') : '' ?> - Ver PDF + Ver PDF No adjunto - Aprobar + Aprobar
@@ -65,8 +95,8 @@ diff --git a/views/agencias/alta_agentes.php b/views/agencias/alta_agentes.php index a1196eb..25ecf15 100644 --- a/views/agencias/alta_agentes.php +++ b/views/agencias/alta_agentes.php @@ -12,6 +12,10 @@ + + + + @@ -37,9 +67,9 @@
-

👨‍✈️ Administración de Agentes

+

👨‍✈️ Administración de Agentes

-
+
➕ Nuevo Agente
@@ -60,7 +90,7 @@
- +
diff --git a/views/agencias/dashboard_agencias.php b/views/agencias/dashboard_agencias.php index 9bd3e28..26c1801 100644 --- a/views/agencias/dashboard_agencias.php +++ b/views/agencias/dashboard_agencias.php @@ -8,6 +8,10 @@ + + + + @@ -43,83 +85,206 @@

📦 Panel de Agencia Aduanal

-
-
-
-
Solicitudes de vinculación
-

Aprueba las solicitudes de vinculación de los importadores.

- - Ver solicitudes - -
+ +
+ +
+
+
Solicitudes de vinculación
+

Aprueba las solicitudes de vinculación de los importadores.

+ + Ver solicitudes + +
+
+ +
+
+
Usuarios vinculados
+

Consulta los que ya fueron autorizados.

+ + Ver usuarios + +
+
+ +
+
+
Alta de agentes
+

Da de alta a tus agentes aduanales.

+ + Nuevo agente + +
+
+ +
+
+
Patentes
+

Gestiona las patentes de la agencia.

+ + Ver agentes + +
+
+ +
+
+
Configuración
+

Administra tus datos y preferencias.

+ + Configurar + +
+
+ +
+
+
Locaciones
+

Gestiona la locaciones validas para nuevos registros.

+ + Gestionar locaciones + +
+
+ +
+
+
Cerrar sesión
+

Salir del sistema de forma segura.

+ Logout +
+
+
-
-
-
Usuarios vinculados
-

Consulta los que ya fueron autorizados.

- - Ver usuarios - +
+ + \ No newline at end of file diff --git a/views/agentes/dashboard_agentes.php b/views/agentes/dashboard_agentes.php index f32d078..563716a 100644 --- a/views/agentes/dashboard_agentes.php +++ b/views/agentes/dashboard_agentes.php @@ -11,6 +11,10 @@ include __DIR__ . '/../partials/sidebar_agente.php'; + + + + @@ -40,61 +88,184 @@ include __DIR__ . '/../partials/sidebar_agente.php';

📦 Panel del Agente Aduanal

-
-
-
-
Importadores vinculados
-

Consulta los que ya fueron autorizados.

- - Ver importadores - -
+ +
+ +
+
+
Importadores vinculados
+

Consulta los que ya fueron autorizados.

+ + Ver importadores + +
+
+ +
+
+
Patentes
+

Gestiona las patentes de la agencia.

+ + Ver solicitudes + +
+
+ +
+
+
Locaciones
+

Gestiona la locaciones validas para nuevos registros.

+ + Gestionar locaciones + +
+
+ +
+
+
Configuración
+

Administra tus datos y preferencias.

+ + Configurar + +
+
+ +
+
+
Cerrar sesión
+

Salir del sistema de forma segura.

+ Logout +
+
+
-
-
-
Patentes
-

Gestiona las patentes de la agencia.

- - Ver solicitudes - +
+ + \ No newline at end of file diff --git a/views/automatizaciones/automatizaciones.php b/views/automatizaciones/automatizaciones.php index 211d32d..3530cd9 100644 --- a/views/automatizaciones/automatizaciones.php +++ b/views/automatizaciones/automatizaciones.php @@ -8,6 +8,10 @@ + + + +
-

⚙️ Automatizaciones

+

⚙️ Automatizaciones

diff --git a/views/bitacoras/bitacora_agencias.php b/views/bitacoras/bitacora_agencias.php index 3f0f60a..a64f692 100644 --- a/views/bitacoras/bitacora_agencias.php +++ b/views/bitacoras/bitacora_agencias.php @@ -11,6 +11,10 @@ + + + +
-

🏪 Registro de Agencias

+

🏪 Registro de Agencias

-
+
format('Y-m-d H:i') : '' ?> - Activar - Nueva Contraseña + Activar + Nueva Contraseña
diff --git a/views/bitacoras/bitacora_cambios.php b/views/bitacoras/bitacora_cambios.php index 27f66ce..a5af079 100644 --- a/views/bitacoras/bitacora_cambios.php +++ b/views/bitacoras/bitacora_cambios.php @@ -11,6 +11,10 @@ + + + +
-

🔄 Cambios de Usuario

+

🔄 Cambios de Usuario

-
+
diff --git a/views/bitacoras/bitacora_sistema.php b/views/bitacoras/bitacora_sistema.php index 5079de9..5f5a5a8 100644 --- a/views/bitacoras/bitacora_sistema.php +++ b/views/bitacoras/bitacora_sistema.php @@ -11,6 +11,10 @@ + + + +
-

👥 Acceso de Usuarios

+

👥 Acceso de Usuarios

-
+
diff --git a/views/bitacoras/bitacora_usuario.php b/views/bitacoras/bitacora_usuario.php index 3994937..d135681 100644 --- a/views/bitacoras/bitacora_usuario.php +++ b/views/bitacoras/bitacora_usuario.php @@ -11,6 +11,10 @@ + + + +
-

👥 Mi Actividad

+

👥 Mi Actividad

-
+
diff --git a/views/bitacoras/bitacora_usuarios.php b/views/bitacoras/bitacora_usuarios.php index 1162c46..21fb764 100644 --- a/views/bitacoras/bitacora_usuarios.php +++ b/views/bitacoras/bitacora_usuarios.php @@ -11,6 +11,10 @@ + + + +
-

👥 Registro de Usuarios

+

👥 Registro de Usuarios

-
+
diff --git a/views/bitacoras/bitacora_vinculaciones.php b/views/bitacoras/bitacora_vinculaciones.php index eca3999..520fa95 100644 --- a/views/bitacoras/bitacora_vinculaciones.php +++ b/views/bitacoras/bitacora_vinculaciones.php @@ -11,6 +11,10 @@ + + + +
-

🔗 Vinculaciones

+

🔗 Vinculaciones

-
+
diff --git a/views/bitacoras/dashboard_bitacoras.php b/views/bitacoras/dashboard_bitacoras.php index 2a11fd9..82e33f3 100644 --- a/views/bitacoras/dashboard_bitacoras.php +++ b/views/bitacoras/dashboard_bitacoras.php @@ -8,6 +8,10 @@ + + + +
-

📖 Bitácoras

+

📖 Bitácoras

-
-
-
Registro de accesos
-

Ver actividad de los usuarios.

- - Ver actividad - +
+
+
+
Registro de accesos
+

Ver actividad de los usuarios.

+ +
-
-
-
Cambios de usuarios
-

Ver cambios realizados por los usuarios.

- - Ver cambios - +
+
+
+
Cambios de usuarios
+

Ver cambios realizados por los usuarios.

+ +
-
-
-
Registro de usuarios
-

Ver registros de los usuarios.

- - Ver registro de usuarios - +
+
+
+
Registro de usuarios
+

Ver registros de los usuarios.

+ +
-
-
-
Registro de agencias
-

Ver registros de las agencias.

- - Ver registro de agencias - +
+
+
+
Registro de agencias
+

Ver registros de las agencias.

+ +
-
-
-
Mi actividad
-

Ver mi actividad en la plataforma.

- - Ver mis accesos - +
+
+
+
Mi actividad
+

Ver mi actividad en la plataforma.

+ +
-
-
-
Registro de accesos
-

Ver actividad de los usuarios.

- - Ver actividad - +
+
+
+
Registro de accesos
+

Ver actividad de los usuarios.

+ +
-
-
-
Registro de vinculaciones
-

Ver las vinculaciones de mi agencia.

- - Ver actividad - +
+
+
+
Registro de vinculaciones
+

Ver las vinculaciones de mi agencia.

+ +
-
-
-
Mi actividad
-

Ver mi actividad en la plataforma.

- - Ver mis accesos - +
+
+
+
Mi actividad
+

Ver mi actividad en la plataforma.

+ +
-
-
-
Registro de accesos
-

Ver actividad de los usuarios.

- - Ver actividad - +
+
+
+
Registro de accesos
+

Ver actividad de los usuarios.

+ +
-
-
-
Registro de vinculaciones
-

Ver las vinculaciones de mi agencia.

- - Ver actividad - +
+
+
+
Registro de vinculaciones
+

Ver las vinculaciones de mi agencia.

+ +
-
-
-
Mi actividad
-

Ver mi actividad en la plataforma.

- - Ver mis accesos - +
+
+
+
Mi actividad
+

Ver mi actividad en la plataforma.

+ +
-
-
-
Mis vinculaciones
-

Ver mi registro de vinculaciones.

- - Ver mis vinculaciones - +
+
+
+
Mis vinculaciones
+

Ver mi registro de vinculaciones.

+ +
-
-
-
Mi actividad
-

Ver mi actividad en la plataforma.

- - Ver mis accesos - +
+
+
+
Mi actividad
+

Ver mi actividad en la plataforma.

+ +
-
+ + \ No newline at end of file diff --git a/views/bitacoras/sistema_agencia.php b/views/bitacoras/sistema_agencia.php index e87d33f..ea2b147 100644 --- a/views/bitacoras/sistema_agencia.php +++ b/views/bitacoras/sistema_agencia.php @@ -11,6 +11,10 @@ + + + +
-

👥 Acceso de Usuarios

+

👥 Acceso de Usuarios

-
+
diff --git a/views/bitacoras/vinculaciones_usuario.php b/views/bitacoras/vinculaciones_usuario.php index b45209b..4ed32b8 100644 --- a/views/bitacoras/vinculaciones_usuario.php +++ b/views/bitacoras/vinculaciones_usuario.php @@ -11,6 +11,10 @@ + + + +
-

🔗 Vinculaciones

+

🔗 Vinculaciones

-
+
diff --git a/views/choferes/crear.php b/views/choferes/crear.php index a8b5520..37c5d39 100644 --- a/views/choferes/crear.php +++ b/views/choferes/crear.php @@ -10,6 +10,10 @@ + + + +
-

➕ Nuevo Chofer

-
+

➕ Nuevo Chofer

+
@@ -91,8 +121,8 @@
- - Cancelar + + Cancelar
diff --git a/views/choferes/editar.php b/views/choferes/editar.php index e18a76f..e2f4286 100644 --- a/views/choferes/editar.php +++ b/views/choferes/editar.php @@ -10,6 +10,10 @@ + + + +
-

✏️ Editar Chofer #

-
+

✏️ Editar Chofer #

+
@@ -130,8 +160,8 @@
- - Cancelar + + Cancelar
diff --git a/views/choferes/lista.php b/views/choferes/lista.php index dd3800c..679f63f 100644 --- a/views/choferes/lista.php +++ b/views/choferes/lista.php @@ -13,6 +13,10 @@ + + + +
-

👨‍✈️ Mis Choferes

- ➕ Nuevo Chofer -
+

👨‍✈️ Mis Choferes

+ ➕ Nuevo Chofer +
@@ -75,8 +105,8 @@ diff --git a/views/configuracion/dashboard_configuracion.php b/views/configuracion/dashboard_configuracion.php index 6b9d201..daff217 100644 --- a/views/configuracion/dashboard_configuracion.php +++ b/views/configuracion/dashboard_configuracion.php @@ -8,6 +8,10 @@ + + + + @@ -33,10 +63,10 @@
-

ℹ️ Información General

+

ℹ️ Información General

-
+
👤 Información Personal
@@ -156,7 +186,7 @@
diff --git a/views/configuracion/editar.php b/views/configuracion/editar.php index 2e6b659..af8b50e 100644 --- a/views/configuracion/editar.php +++ b/views/configuracion/editar.php @@ -8,6 +8,10 @@ + + + + @@ -33,8 +63,8 @@
-

✏️ Editar Información

-
+

✏️ Editar Información

+
@@ -154,8 +184,8 @@
- Cancelar - + Cancelar +
diff --git a/views/expediente/index.php b/views/expediente/index.php index 94c4a20..0098064 100644 --- a/views/expediente/index.php +++ b/views/expediente/index.php @@ -9,6 +9,10 @@ + + + + @@ -29,8 +59,8 @@
-

📁 Expedientes Electrónicos

-
+

📁 Expedientes Electrónicos

+
- ✏️ - + ✏️ +
@@ -55,8 +85,8 @@ diff --git a/views/expediente/subir.php b/views/expediente/subir.php index fbe5244..f51e1db 100644 --- a/views/expediente/subir.php +++ b/views/expediente/subir.php @@ -8,17 +8,50 @@ + + + +
-

📤 Subir Archivos al Expediente

-
+

📤 Subir Archivos al Expediente

+
@@ -26,8 +59,8 @@
- - Cancelar + + Cancelar
diff --git a/views/expediente/ver.php b/views/expediente/ver.php index d6c82d5..7f9c590 100644 --- a/views/expediente/ver.php +++ b/views/expediente/ver.php @@ -7,27 +7,60 @@ 📂 Ver Expediente + + + +
-

📂 Archivos del Expediente

-
+

📂 Archivos del Expediente

+
archivos KB - 📂 Ver - ⬆ Subir + 📂 Ver + ⬆ Subir
diff --git a/views/importadores/dashboard_importador.php b/views/importadores/dashboard_importador.php index 649d38f..825efd5 100644 --- a/views/importadores/dashboard_importador.php +++ b/views/importadores/dashboard_importador.php @@ -31,7 +31,7 @@ .text-teal { color: #4dd4ac; } .btn-lime { background-color: #84cc16; color: white; } .text-lime { color: #84cc16; } - .btn-lime:hover { background-color: #65a30d; color: white; } + .btn-lime:hover { background-color: #65a30d; color: black; } .btn-cyan { background-color: #06b6d4; color: white; } .text-cyan { color: #06b6d4; } .btn-cyan:hover { background-color: #0891b2; color: white; } @@ -49,22 +49,39 @@ } .card { border-radius: 12px; } /* Animaciones personalizadas */ - .card-hover { transition: all 0.3s ease; } - .card-hover:hover { transform: translateY(-5px); box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; } + .card-hover { transition: all 0.3s ease; cursor: pointer; } + .card-hover:hover { transform: translateY(-8px) saqcle(1.02); box-shadow: 0 1rem 2rem rgba(0, 0, 0, 0.15) !important; } .btn-pulse { animation: pulse 2s infinite; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } - .fade-in-up { animation: fadeInUp 0.6s ease-out; } + .fade-in-up { animation: fadeInUp 0.8s ease-out; } @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } .loading-spinner { display: none; } + /* Botón con efecto de loading */ + .btn-loading { position: relative; color: transparent !important; pointer-events: none; } + .btn-loading::after { content: ''; position: absolute; width: 20px; height: 20px; top: 50%; left: 50%; margin-left: -10px; + margin-top: -10px; border: 2px solid #fff; border-radius: 50%; border-top-color: transparent; animation: spin 1s linear infinite; } .btn-loading .loading-spinner { display: inline-block; } .btn-loading .btn-text { display: none; } + @keyframes spin { to { transform: rotate(360deg); } } + /* Responsive animations */ + @media (max-width: 768px) { .card-hover:hover { transform: translateY(-4px) scale(1.01); } } + /* Efecto de glow para elementos activos */ + .btn.active { box-shadow: 0 0 20px rgba(var(--bs-primary-rgb), 0.5); } + /* Animación para el título */ + .title-glow { text-shadow: 0 0 10px rgba(0, 123, 255, 0.3); } + /* Efecto para botones */ + .btn-animated { transition: all 0.3s ease; position: relative; overflow: hidden; } + .btn-animated:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); } + .btn-animated::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: left 0.5s; } + .btn-animated:hover::before { left: 100%; } /* Animación para alertas */ .alert-animated { animation: slideInDown 0.5s ease-out; } @keyframes slideInDown { @@ -82,7 +99,7 @@
-

📦 Panel del Importador

+

📦 Panel del Importador

@@ -91,27 +108,29 @@ foreach ($catalogosData['catalogos'] as $catalogo): $delay += 0.1; // Incrementar el retraso para cada catálogo ?> -
+
-
- -
-

-
- +
+
+ +
+

+
+ +
+ + + + Obligatorio + +
- - - - Obligatorio - -
@@ -168,24 +187,26 @@ ?>
-
- - -
-

-
- +
+
+ + +
+

+
+ +
+ + + Función básica +
- - - Función básica -
@@ -196,9 +217,22 @@ + + + +
-

🗺️ Nuevas Locaciones

+

🗺️ Nuevas Locaciones

-
+

➕ Nuevo Estado


@@ -67,10 +97,10 @@ if ($tipoUsuario === 'agente_aduanal') {


- - Cancelar + Cancelar
@@ -79,7 +109,7 @@ if ($tipoUsuario === 'agente_aduanal') {
-
+

➕ Nueva Ciudad

@@ -110,10 +140,10 @@ if ($tipoUsuario === 'agente_aduanal') {

- - Cancelar + Cancelar
diff --git a/views/locaciones/gestion_locaciones.php b/views/locaciones/gestion_locaciones.php index c19edf1..6a2465f 100644 --- a/views/locaciones/gestion_locaciones.php +++ b/views/locaciones/gestion_locaciones.php @@ -24,6 +24,10 @@ if ($tipoUsuario === 'agente_aduanal') { + + + +
-

🌍 Locaciones

- ➕ Agregar Locación -
+

🌍 Locaciones

+ ➕ Agregar Locación +
@@ -79,31 +109,31 @@ if ($tipoUsuario === 'agente_aduanal') { - - - - - - @@ -193,8 +223,8 @@ if ($tipoUsuario === 'agente_aduanal') { diff --git a/views/locaciones/lista.php b/views/locaciones/lista.php index 07204db..b03aaa8 100644 --- a/views/locaciones/lista.php +++ b/views/locaciones/lista.php @@ -13,6 +13,10 @@ + + + +
-

🗺️ Locaciones

-
+

🗺️ Locaciones

+
diff --git a/views/patente/alta_patente.php b/views/patente/alta_patente.php index 7620c24..40cee20 100644 --- a/views/patente/alta_patente.php +++ b/views/patente/alta_patente.php @@ -21,6 +21,10 @@ if ($tipoUsuario === 'agente_aduanal') { + + + +
-

CONFIGURACIÓN ADUANA / PATENTE

-
+

CONFIGURACIÓN ADUANA / PATENTE

+
@@ -262,8 +292,8 @@ if ($tipoUsuario === 'agente_aduanal') {
- - Cancelar + + Cancelar
diff --git a/views/patente/dashboard_patente.php b/views/patente/dashboard_patente.php index 8d1741c..16b3d1e 100644 --- a/views/patente/dashboard_patente.php +++ b/views/patente/dashboard_patente.php @@ -19,6 +19,10 @@ if ($tipoUsuario === 'agente_aduanal') { + + + +
-

📦 Panel de Patentes

+

📦 Panel de Patentes

-
-
-
Ver patentes
-

Revisa y gestiona las patentes.

- - Ver patentes - +
+
+
+
Ver patentes
+

Revisa y gestiona las patentes.

+ +
-
-
-
Nueva patente
-

Agrega nuevas patentes:

- - Registrar nueva patente - +
+
+
+
Nueva patente
+

Agrega nuevas patentes:

+ +
+ + \ No newline at end of file diff --git a/views/patente/editar.php b/views/patente/editar.php index 9aba693..a120033 100644 --- a/views/patente/editar.php +++ b/views/patente/editar.php @@ -21,6 +21,10 @@ if ($tipoUsuario === 'agente_aduanal') { + + + +
-

CONFIGURACIÓN ADUANA / PATENTE

-
+

CONFIGURACIÓN ADUANA / PATENTE

+
@@ -286,7 +316,7 @@ if ($tipoUsuario === 'agente_aduanal') {
- Cancelar + Cancelar
diff --git a/views/patente/lista.php b/views/patente/lista.php index 77ee6e9..81ce5c1 100644 --- a/views/patente/lista.php +++ b/views/patente/lista.php @@ -23,6 +23,10 @@ if ($tipoUsuario === 'agente_aduanal') { + + + +
-

📑 Registro de Patentes Aduanales

- ➕ Nueva Patente -
+

📑 Registro de Patentes Aduanales

+ ➕ Nueva Patente +
diff --git a/views/preferencias/catalogos.php b/views/preferencias/catalogos.php index 0f33b2d..0f3406a 100644 --- a/views/preferencias/catalogos.php +++ b/views/preferencias/catalogos.php @@ -9,6 +9,10 @@ + + + +
-

✅ Preferencias

+

✅ Preferencias

-
-
-
Notificaciones
-

Gestiona y configura las notificaciones.

- - Configurar Notificaciones - + +
+
+
+
+ + Notificaciones +
+

+ Gestiona y configura las notificaciones del sistema para mantenerte informado. +

+ +
-
-
-
Catalogos
-

Personaliza la visualización de tus catalogos.

- - Personalizar Catálogos - + +
+
+
+
+ + Catálogos +
+

+ Personaliza la visualización de tus catálogos y organiza tu contenido. +

+ +
+
+
+ +
+
+
+
+ +
+
💡 Tip de Configuración
+

+ Personaliza estas configuraciones según tus necesidades para optimizar tu experiencia. +

+
+
+
-
-
+
+ + \ No newline at end of file diff --git a/views/preferencias/notificaciones.php b/views/preferencias/notificaciones.php index 8399d80..ff032ef 100644 --- a/views/preferencias/notificaciones.php +++ b/views/preferencias/notificaciones.php @@ -9,6 +9,10 @@ + + + + @@ -54,8 +84,8 @@
-

➕ Alta de Producto Frecuente

-
+

➕ Alta de Producto Frecuente

+
@@ -180,8 +210,8 @@
- - Cancelar + + Cancelar
diff --git a/views/productos_frecuentes/editar.php b/views/productos_frecuentes/editar.php index b948a43..d77c81e 100644 --- a/views/productos_frecuentes/editar.php +++ b/views/productos_frecuentes/editar.php @@ -26,12 +26,42 @@ + + + + @@ -48,8 +78,8 @@
-

✏️ Editar Producto Frecuente

-
+

✏️ Editar Producto Frecuente

+
@@ -165,8 +195,8 @@
- - Cancelar + + Cancelar
diff --git a/views/productos_frecuentes/lista.php b/views/productos_frecuentes/lista.php index f6f5c6f..827bca5 100644 --- a/views/productos_frecuentes/lista.php +++ b/views/productos_frecuentes/lista.php @@ -13,12 +13,42 @@ + + + + @@ -46,8 +76,8 @@
-

📋 Productos Frecuentes

-
+

📋 Productos Frecuentes

+
@@ -122,8 +152,8 @@
✏️ - diff --git a/views/proveedores/crear.php b/views/proveedores/crear.php index be6a66e..e53e96a 100644 --- a/views/proveedores/crear.php +++ b/views/proveedores/crear.php @@ -11,6 +11,10 @@ + + + + @@ -42,8 +72,8 @@ ?>
-

➕ Registro de Proveedor

-
+

➕ Registro de Proveedor

+
@@ -88,8 +118,8 @@
- Cancelar - + Cancelar +
diff --git a/views/proveedores/lista.php b/views/proveedores/lista.php index 5116bc3..1b230de 100644 --- a/views/proveedores/lista.php +++ b/views/proveedores/lista.php @@ -12,6 +12,10 @@ + + + +
-

📄 Listado de Proveedores

- ➕ Nuevo Proveedor +

📄 Listado de Proveedores

+ ➕ Nuevo Proveedor -
+

diff --git a/views/seguridad/agregar.php b/views/seguridad/agregar.php index 26123d3..2398ca8 100644 --- a/views/seguridad/agregar.php +++ b/views/seguridad/agregar.php @@ -11,8 +11,11 @@ $dos_factores_estado = obtenerEstadoDosFactores(); - + + + +
-

👮 Opciones de Seguridad

+

👮 Opciones de Seguridad

-
-
-

Autenticación de dos factores

-

Al activar esta funcionalidad, blindas el acceso a tu cuenta, recibiras un código de acceso a tu correo electrónico para confirmar identidad.

-
-
- > - -
- - +
+
+
+

Autenticación de dos factores

+

Al activar esta funcionalidad, blindas el acceso a tu cuenta, recibiras un código de acceso a tu correo electrónico para confirmar identidad.

+
+
+ > + +
+ + +
-
-
-

Cambiar contraseña

-

Al actualizar tu contraseña, refuerzas la seguridad de tu cuenta. Te recomendamos usar una combinación de letras, números y símbolos para mayor seguridad.


-
- - +
+
+
+

Cambiar contraseña

+

Al actualizar tu contraseña, refuerzas la seguridad de tu cuenta. Te recomendamos usar una combinación de letras, números y símbolos para mayor seguridad.


+
+ + +
-
-
-

Recibe notificaciones

-

Agrega un correo adicional para recibir notificaciones.

- -

- -
-
-
- -
-
- - -
- - -
-
- -
- - - +
+
+
+

Recibe notificaciones

+

Agrega un correo adicional para recibir notificaciones.

+ +

+ +
+
+
+ +
+
+ + +
+ + +
+
+ +
+ + + +
-
-
-

Correo de respaldo

-

Agrega un correo de respaldo para reuperación de tu cuenta.

- -

- -
-
-
- -
- - - - -
-
- -
- - - +
+
+
+

Correo de respaldo

+

Agrega un correo de respaldo para reuperación de tu cuenta.

+ +

+ +
+
+
+ +
+ + + + +
+
+ +
+ + + +
@@ -195,19 +232,19 @@ $dos_factores_estado = obtenerEstadoDosFactores();
+ + + +
-

👮 Seguridad

+

👮 Seguridad

-
-
-

Autenticación de dos factores

-

Al activar esta funcionalidad, blindas el acceso a tu cuenta, recibiras un código de acceso a tu correo electrónico para confirmar identidad.

-
-
- > - -
- +
+
+
+

Autenticación de dos factores

+

Al activar esta funcionalidad, blindas el acceso a tu cuenta, recibiras un código de acceso a tu correo electrónico para confirmar identidad.

+
+
+ > + +
+ +
-
-
-

Cambiar contraseña

-

Al actualizar tu contraseña, refuerzas la seguridad de tu cuenta. Te recomendamos usar una combinación de letras, números y símbolos para mayor seguridad.


+
+
+
+

Cambiar contraseña

+

Al actualizar tu contraseña, refuerzas la seguridad de tu cuenta. Te recomendamos usar una combinación de letras, números y símbolos para mayor seguridad.


+
-
-
-

Recibe notificaciones

-

Agrega un correo adicional para recibir notificaciones.

-
-
- - -
- +
+
+
+

Recibe notificaciones

+

Agrega un correo adicional para recibir notificaciones.

+
+
+ +
+ +
-
-
-

Correo de respaldo

-

Agrega un correo de respaldo para reuperación de tu cuenta.

-
-
- - -
- +
+
+
+

Correo de respaldo

+

Agrega un correo de respaldo para reuperación de tu cuenta.

+
+
+ + +
+ +
diff --git a/views/solicitud_importacion/crear.php b/views/solicitud_importacion/crear.php index ac3ce88..4fceae5 100644 --- a/views/solicitud_importacion/crear.php +++ b/views/solicitud_importacion/crear.php @@ -12,7 +12,11 @@ - v + + + + + @@ -36,14 +66,14 @@
⚠️ No tienes una agencia activa vinculada.

Para poder gestionar tus solicitudes de importación, primero debes vincularte a una agencia.

- Ir a Vinculaciones + Ir a Vinculaciones
-

➕ Nueva Solicitud de Importación

-
+

➕ Nueva Solicitud de Importación

+
@@ -185,9 +215,9 @@
- - - + + + - - + + - - + +
- +
@@ -228,8 +258,8 @@
- - Cancelar + + Cancelar
diff --git a/views/solicitud_importacion/editar.php b/views/solicitud_importacion/editar.php index e2aa7a8..671ca38 100644 --- a/views/solicitud_importacion/editar.php +++ b/views/solicitud_importacion/editar.php @@ -15,6 +15,10 @@ + + + +
-

✏️ Editar Solicitud #

-
+

✏️ Editar Solicitud #

+
@@ -244,7 +274,7 @@
- +
@@ -252,8 +282,8 @@
- - Cancelar + + Cancelar
diff --git a/views/solicitud_importacion/lista.php b/views/solicitud_importacion/lista.php index 2d4c369..bcf899e 100644 --- a/views/solicitud_importacion/lista.php +++ b/views/solicitud_importacion/lista.php @@ -12,6 +12,10 @@ + + + + @@ -49,11 +79,11 @@
-

📄 Solicitudes de Importación

- ➕ Nueva Solicitud - +

📄 Solicitudes de Importación

+ ➕ Nueva Solicitud + -
+
diff --git a/views/transportes/crear.php b/views/transportes/crear.php index c3b3e6e..0db4c3f 100644 --- a/views/transportes/crear.php +++ b/views/transportes/crear.php @@ -10,6 +10,10 @@ + + + +
-

✏️ Editar Transporte #

-
+

✏️ Editar Transporte #

+
@@ -80,8 +110,8 @@
- - Cancelar + + Cancelar
diff --git a/views/transportes/importar_masivo.php b/views/transportes/importar_masivo.php index 0fd59d1..209ba5d 100644 --- a/views/transportes/importar_masivo.php +++ b/views/transportes/importar_masivo.php @@ -9,6 +9,10 @@ + + + +
-

📂 Importación Masiva de Transportes

+

📂 Importación Masiva de Transportes

-
+
@@ -61,8 +91,8 @@ 📥 Descargar plantilla
- - Cancelar + + Cancelar
diff --git a/views/transportes/lista.php b/views/transportes/lista.php index ccdeeeb..9d7c73f 100644 --- a/views/transportes/lista.php +++ b/views/transportes/lista.php @@ -12,6 +12,10 @@ + + + +
-

🚛 Mis Transportes

+

🚛 Mis Transportes

➕ Nuevo Transporte -
+
diff --git a/views/transportistas/alta.php b/views/transportistas/alta.php index 629c10a..66df2da 100644 --- a/views/transportistas/alta.php +++ b/views/transportistas/alta.php @@ -10,6 +10,10 @@ + + + +
-

➕ Alta de Transportista

-
+

➕ Alta de Transportista

+ @@ -103,8 +133,8 @@
- - Cancelar + + Cancelar
diff --git a/views/transportistas/bulk_upload.php b/views/transportistas/bulk_upload.php index 306daea..82b2d35 100644 --- a/views/transportistas/bulk_upload.php +++ b/views/transportistas/bulk_upload.php @@ -18,6 +18,10 @@ unset($_SESSION['import_errors'], $_SESSION['import_success']); + + + +
-

📂 Carga Masiva de Transportistas

-
+

📂 Carga Masiva de Transportistas

+ - - Cancelar + + Cancelar
diff --git a/views/transportistas/editar.php b/views/transportistas/editar.php index fc4f17e..e59fa29 100644 --- a/views/transportistas/editar.php +++ b/views/transportistas/editar.php @@ -10,6 +10,10 @@ + + + +
-

✏️ Editar Transportista #

-
+

✏️ Editar Transportista #

+
@@ -111,8 +141,8 @@
- - Cancelar + + Cancelar
diff --git a/views/transportistas/lista.php b/views/transportistas/lista.php index f04294f..b32759b 100644 --- a/views/transportistas/lista.php +++ b/views/transportistas/lista.php @@ -9,6 +9,10 @@ + + + +
-

🚚 Mis Transportistas

- ➕ Nuevo Transportista +

🚚 Mis Transportistas

+ ➕ Nuevo Transportista
@@ -87,8 +117,8 @@ render: function(data, type, row) { const id = row[0]; return ` - ✏️ - + ✏️ + `; } } diff --git a/views/vinculaciones/importadores_vinculados.php b/views/vinculaciones/importadores_vinculados.php index f4f1114..0722d33 100644 --- a/views/vinculaciones/importadores_vinculados.php +++ b/views/vinculaciones/importadores_vinculados.php @@ -11,6 +11,10 @@ + + + +
-

✅ Importadores Vinculados

+

✅ Importadores Vinculados

-
+
@@ -59,7 +89,7 @@ diff --git a/views/vinculaciones/nueva.php b/views/vinculaciones/nueva.php index e771a12..1935f6c 100644 --- a/views/vinculaciones/nueva.php +++ b/views/vinculaciones/nueva.php @@ -12,6 +12,10 @@ + + + + @@ -37,9 +67,9 @@
-

➕ Nueva Vinculación

+

➕ Nueva Vinculación

-
+
🔗 Solicitar Vinculación con Agencias Aduanales
format('Y-m-d H:i') : '' ?> - Desvincular + Desvincular
@@ -68,9 +98,9 @@ diff --git a/views/vinculaciones/solicitudes_vinculacion.php b/views/vinculaciones/solicitudes_vinculacion.php index c30626f..e18881c 100644 --- a/views/vinculaciones/solicitudes_vinculacion.php +++ b/views/vinculaciones/solicitudes_vinculacion.php @@ -10,6 +10,10 @@ + + + +
-

🔗 Solicitudes de Vinculación

+

🔗 Solicitudes de Vinculación

-
+
👥 Usuarios Solicitantes
format('Y-m-d H:i') : '' ?> - Cancelar solicitud + Cancelar solicitud - Vincular + Vincular
@@ -68,8 +98,8 @@ diff --git a/views/vinculaciones/usuarios_vinculados.php b/views/vinculaciones/usuarios_vinculados.php index 067e114..6b1d5e8 100644 --- a/views/vinculaciones/usuarios_vinculados.php +++ b/views/vinculaciones/usuarios_vinculados.php @@ -11,6 +11,10 @@ + + + +
-

👥 Usuarios Vinculados

+

👥 Usuarios Vinculados

-
+
- Aprobar - Denegar + Aprobar + Denegar
@@ -65,7 +95,7 @@
format('Y-m-d H:i') : '' ?> - + Desvincular diff --git a/views/vinculaciones/vinculaciones_importador.php b/views/vinculaciones/vinculaciones_importador.php index 78a618d..c5739a7 100644 --- a/views/vinculaciones/vinculaciones_importador.php +++ b/views/vinculaciones/vinculaciones_importador.php @@ -12,6 +12,10 @@ + + + + @@ -37,10 +67,10 @@
-

🔗 Mis vinculaciones

- ➕ Nueva Vinculación +

🔗 Mis vinculaciones

+ ➕ Nueva Vinculación -
+
🏪 Agencia Vinculadas
@@ -71,9 +101,9 @@ En uso - Usar Agencia + Usar Agencia - Desvincular + Desvincular