diff --git a/agencias.txt b/agencias.txt new file mode 100644 index 0000000..50c8771 --- /dev/null +++ b/agencias.txt @@ -0,0 +1,64 @@ +-- 1. Tabla de Agencias Aduanales +CREATE TABLE [dbo].[agencias_aduanales]( + [id_agencia] [int] IDENTITY(1,1) NOT NULL, + [nombre_agencia] [nvarchar](255) NOT NULL, + [rfc_agencia] [nvarchar](13) NOT NULL, + [direccion] [nvarchar](500) NULL, + [telefono] [nvarchar](20) NULL, + [email] [nvarchar](255) NULL, + [activo] [bit] NOT NULL DEFAULT 1, + [creado_en] [datetime] NOT NULL DEFAULT GETDATE(), + [actualizado_en] [datetime] NULL, + CONSTRAINT [PK_agencias_aduanales] PRIMARY KEY CLUSTERED ([id_agencia] ASC) +); + +-- 2. Modificar tabla usuarios_sistema para agregar referencia a agencia (solo para agentes) +ALTER TABLE [dbo].[usuarios_sistema] +ADD [id_agencia] [int] NULL; + +-- Agregar foreign key constraint +ALTER TABLE [dbo].[usuarios_sistema] +ADD CONSTRAINT [FK_usuarios_agencia] +FOREIGN KEY ([id_agencia]) REFERENCES [dbo].[agencias_aduanales]([id_agencia]); + +-- 3. Tabla de relación importador-agencia (many-to-many) +CREATE TABLE [dbo].[importador_agencia]( + [id_relacion] [int] IDENTITY(1,1) NOT NULL, + [id_importador] [int] NOT NULL, + [id_agencia] [int] NOT NULL, + [activo] [bit] NOT NULL DEFAULT 1, + [fecha_vinculacion] [datetime] NOT NULL DEFAULT GETDATE(), + [fecha_desvinculacion] [datetime] NULL, + [creado_por] [int] NULL, -- ID del usuario que creó la relación + CONSTRAINT [PK_importador_agencia] PRIMARY KEY CLUSTERED ([id_relacion] ASC), + CONSTRAINT [FK_importador_agencia_usuario] + FOREIGN KEY ([id_importador]) REFERENCES [dbo].[usuarios_sistema]([id_usuario]), + CONSTRAINT [FK_importador_agencia_agencia] + FOREIGN KEY ([id_agencia]) REFERENCES [dbo].[agencias_aduanales]([id_agencia]), + CONSTRAINT [FK_importador_agencia_creador] + FOREIGN KEY ([creado_por]) REFERENCES [dbo].[usuarios_sistema]([id_usuario]) +); + +-- Índice único para evitar duplicados activos +CREATE UNIQUE INDEX [IX_importador_agencia_unique] +ON [dbo].[importador_agencia] ([id_importador], [id_agencia]) +WHERE [activo] = 1; + +-- 4. Tabla para auditoría de cambios de agencia +CREATE TABLE [dbo].[historial_agencia_cambios]( + [id_historial] [int] IDENTITY(1,1) NOT NULL, + [id_importador] [int] NOT NULL, + [id_agencia_anterior] [int] NULL, + [id_agencia_nueva] [int] NULL, + [accion] [varchar](50) NOT NULL, -- 'VINCULACION', 'DESVINCULACION', 'CAMBIO' + [motivo] [nvarchar](500) NULL, + [realizado_por] [int] NOT NULL, + [fecha_cambio] [datetime] NOT NULL DEFAULT GETDATE(), + CONSTRAINT [PK_historial_agencia_cambios] PRIMARY KEY CLUSTERED ([id_historial] ASC) +); + +-- Índices adicionales para mejorar rendimiento +CREATE INDEX [IX_usuarios_tipo_agencia] ON [dbo].[usuarios_sistema] ([tipo_usuario], [id_agencia]); +CREATE INDEX [IX_importador_agencia_importador] ON [dbo].[importador_agencia] ([id_importador]); +CREATE INDEX [IX_importador_agencia_agencia] ON [dbo].[importador_agencia] ([id_agencia]); +CREATE INDEX [IX_agencias_activo] ON [dbo].[agencias_aduanales] ([activo]); \ No newline at end of file diff --git a/app/controllers/agencias.php b/app/controllers/agencias.php new file mode 100644 index 0000000..a7abefa --- /dev/null +++ b/app/controllers/agencias.php @@ -0,0 +1,45 @@ + + + + + Dashboard | Agencia Aduanal + + + + + + + + +
+

✅ Agencias Activas

+
+ + + \ No newline at end of file diff --git a/views/agencias/alta_agentes.php b/views/agencias/alta_agentes.php new file mode 100644 index 0000000..2efbe6e --- /dev/null +++ b/views/agencias/alta_agentes.php @@ -0,0 +1,69 @@ + + + + + + + Dashboard | Agencia Aduanal + + + + + + + + + + + +
+

Administración de Agentes

+ + +
+
➕ Nuevo Agente
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+ + + \ No newline at end of file diff --git a/views/agencias/bitacora.php b/views/agencias/bitacora.php new file mode 100644 index 0000000..3eec37b --- /dev/null +++ b/views/agencias/bitacora.php @@ -0,0 +1,42 @@ + + + + + + + Dashboard | Agencia Aduanal + + + + + + + + + + +
+

👥 Acceso de Usuarios

+
+ + + \ No newline at end of file diff --git a/views/agencias/dashboard_agencias.php b/views/agencias/dashboard_agencias.php new file mode 100644 index 0000000..4fb2ef3 --- /dev/null +++ b/views/agencias/dashboard_agencias.php @@ -0,0 +1,77 @@ + + + + + + + Dashboard | Agencia Aduanal + + + + + + + + +
+

📦 Panel del Agencia Aduanal

+ +
+
+
+
Usuarios activos
+

Consulta los que ya fueron autorizados.

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

Da de alta a tus agentes aduanales

+ Nuevo agente +
+
+ +
+
+
Bitácora del sistema
+

Revisa los accesos y acciones recientes.

+ Ver bitácora +
+
+ +
+
+
Cerrar sesión
+

Salir del sistema de forma segura.

+ Logout +
+
+
+ +
+ + + \ No newline at end of file diff --git a/views/agencias/usuarios_activos.php b/views/agencias/usuarios_activos.php new file mode 100644 index 0000000..f6f8fdb --- /dev/null +++ b/views/agencias/usuarios_activos.php @@ -0,0 +1,38 @@ + + + + + Dashboard | Agencia Aduanal + + + + + + + + +
+

✅ Usuarios Activos

+
+ + + \ No newline at end of file diff --git a/views/agentes/dashboard_agentes.php b/views/agentes/dashboard_agentes.php index 0f2a753..ffd1f85 100644 --- a/views/agentes/dashboard_agentes.php +++ b/views/agentes/dashboard_agentes.php @@ -45,7 +45,7 @@ include __DIR__ . '/../partials/sidebar_agente.php';
Importadores activos

Consulta los que ya fueron autorizados.

- Ver importadores + Ver importadores
@@ -53,7 +53,7 @@ include __DIR__ . '/../partials/sidebar_agente.php';
Solicitudes pendientes

Valida nuevas solicitudes de registro.

- Ver solicitudes + Ver solicitudes
diff --git a/views/partials/sidebar_agencia.php b/views/partials/sidebar_agencia.php new file mode 100644 index 0000000..d94a387 --- /dev/null +++ b/views/partials/sidebar_agencia.php @@ -0,0 +1,98 @@ + + + + + + +
+ +
+ + +
+
+
Menú
+ +
+
+ + + + 🏠 Inicio + + + + + ✅ Usuarios Activos + + + + + 📥 Alta de Agentes + + + + + 🕓 Bitácora + + +
+
\ No newline at end of file diff --git a/views/partials/sidebar_sistemas.php b/views/partials/sidebar_sistemas.php index 61fbf70..4af5dc8 100644 --- a/views/partials/sidebar_sistemas.php +++ b/views/partials/sidebar_sistemas.php @@ -19,11 +19,13 @@ - -