Tareas #17490
Agregar tabla de tramites
| Estado: | Nueva | Fecha de inicio: | 20/11/2025 | |
|---|---|---|---|---|
| Prioridad: | Normal | Fecha fin: | ||
| Asignado a: | - | % Realizado: | 0% | |
| Categoría: | - | Tiempo dedicado: | - | |
| Versión prevista: | - |
Descripción
/* ==========================================
TIPOS DE TRÁMITES
========================================== */
CREATE TABLE tipos_tramites (
idtipotramite INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
descripcion TEXT NULL,
activo TINYINT(1) DEFAULT 1,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
created_by INT NOT NULL DEFAULT 1,
updated_by INT NOT NULL DEFAULT 1
);
/* ==========================================
ESTADOS DE TRÁMITES
========================================== */
CREATE TABLE estados_tramites (
idestadotramite INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
descripcion TEXT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
created_by INT NOT NULL DEFAULT 1,
updated_by INT NOT NULL DEFAULT 1
);
/* ==========================================
ESTADOS PERMITIDOS POR TIPO DE TRÁMITE
========================================== */
CREATE TABLE tipos_tramites_estados (
idtipotramiteestado INT AUTO_INCREMENT PRIMARY KEY,
idtipotramite INT NOT NULL,
idestadotramite INT NOT NULL,
orden INT NOT NULL,
obligatorio TINYINT(1) DEFAULT 1,
inicial TINYINT(1) DEFAULT 0,
final TINYINT(1) DEFAULT 0,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
created_by INT NOT NULL DEFAULT 1,
updated_by INT NOT NULL DEFAULT 1,
UNIQUE KEY (idtipotramite, idestadotramite),
FOREIGN KEY (idtipotramite) REFERENCES tipos_tramites(idtipotramite),
FOREIGN KEY (idestadotramite) REFERENCES estados_tramites(idestadotramite)
);
/* ==========================================
TRANSICIONES ENTRE ESTADOS
========================================== */
CREATE TABLE tipos_tramites_estados_transiciones (
idtipotramiteestadotransicion INT AUTO_INCREMENT PRIMARY KEY,
idtipotramite INT NOT NULL,
idestadotramiteorigen INT NOT NULL,
idestadotramitedestino INT NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
created_by INT NOT NULL DEFAULT 1,
updated_by INT NOT NULL DEFAULT 1,
FOREIGN KEY (idtipotramite) REFERENCES tipos_tramites(idtipotramite),
FOREIGN KEY (idestadotramiteorigen) REFERENCES estados_tramites(idestadotramite),
FOREIGN KEY (idestadotramitedestino) REFERENCES estados_tramites(idestadotramite)
);
/* ==========================================
ACCIONES (TAREAS INTERNAS)
========================================== */
CREATE TABLE acciones_tramites (
idacciontramite INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
descripcion TEXT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
created_by INT NOT NULL DEFAULT 1,
updated_by INT NOT NULL DEFAULT 1
);
/* ==========================================
ACCIONES OBLIGATORIAS EN CADA ESTADO
========================================== */
CREATE TABLE estados_tramites_acciones (
idestadotramiteaccion INT AUTO_INCREMENT PRIMARY KEY,
idestadotramite INT NOT NULL,
idacciontramite INT NOT NULL,
obligatorio TINYINT(1) DEFAULT 1,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
created_by INT NOT NULL DEFAULT 1,
updated_by INT NOT NULL DEFAULT 1,
FOREIGN KEY (idestadotramite) REFERENCES estados_tramites(idestadotramite),
FOREIGN KEY (idacciontramite) REFERENCES acciones_tramites(idacciontramite)
);
/* ==========================================
TRÁMITES REALES
========================================== */
CREATE TABLE tramites (
idtramite BIGINT AUTO_INCREMENT PRIMARY KEY,
idtipotramite INT NOT NULL,
idestadotramite INT NOT NULL,
creado_por INT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
created_by INT NOT NULL DEFAULT 1,
updated_by INT NOT NULL DEFAULT 1,
FOREIGN KEY (idtipotramite) REFERENCES tipos_tramites(idtipotramite),
FOREIGN KEY (idestadotramite) REFERENCES estados_tramites(idestadotramite)
);
/* ==========================================
PROGRESO DE ACCIONES DEL TRÁMITE
========================================== */
CREATE TABLE tramites_acciones (
idtramiteaccion INT AUTO_INCREMENT PRIMARY KEY,
idtramite BIGINT NOT NULL,
idacciontramite INT NOT NULL,
completado TINYINT(1) DEFAULT 0,
fecha DATETIME NULL,
observacion TEXT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
created_by INT NOT NULL DEFAULT 1,
updated_by INT NOT NULL DEFAULT 1,
FOREIGN KEY (idtramite) REFERENCES tramites(idtramite),
FOREIGN KEY (idacciontramite) REFERENCES acciones_tramites(idacciontramite)
);
/* ==========================================
HISTORIAL COMPLETO DEL TRÁMITE
========================================== */
CREATE TABLE tramites_historial (
idtramitehistorial BIGINT AUTO_INCREMENT PRIMARY KEY,
idtramite BIGINT NOT NULL,
idestadotramite_anterior INT NULL,
idestadotramite_nuevo INT NULL,
idacciontramite INT NULL,
usuario INT NULL,
observacion TEXT NULL,
fecha DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
created_by INT NOT NULL DEFAULT 1,
updated_by INT NOT NULL DEFAULT 1,
FOREIGN KEY (idtramite) REFERENCES tramites(idtramite)
);
Histórico
#1
Actualizado por Nicolas Arquiel hace 24 días
/* ========================================== TIPO DE TRÁMITE: ACTA DIGITAL ========================================== */ INSERT INTO tipos_tramites (idtipotramite, nombre, descripcion, activo) VALUES (1, 'Acta Digital', 'Circuito de actas digitales según Resolución Rector N° 16/25', 1); /* ========================================== ESTADOS DEL TRÁMITE: ACTA DIGITAL ========================================== */ INSERT INTO estados_tramites (idestadotramite, nombre, descripcion) VALUES (1, 'Abierta', 'Acta generada y disponible para carga'), (2, 'Cerrada', 'Docente cierra el acta con firma electrónica'), (3, 'Controlada', 'Bedelía verifica y asigna libro/folio'), (4, 'Validada', 'Autoridad académica valida el acta digital'); /* ========================================== ORDEN DE LOS ESTADOS ========================================== */ INSERT INTO tipos_tramites_estados (idtipotramiteestado, idtipotramite, idestadotramite, orden, inicial, final) VALUES (1, 1, 1, 1, 1, 0), -- Abierta = inicial (2, 1, 2, 2, 0, 0), -- Cerrada (3, 1, 3, 3, 0, 0), -- Controlada (4, 1, 4, 4, 0, 1); -- Validada = final /* ========================================== TRANSICIONES PERMITIDAS ========================================== */ INSERT INTO tipos_tramites_estados_transiciones (idtipotramiteestadotransicion, idtipotramite, idestadotramiteorigen, idestadotramitedestino) VALUES (1, 1, 1, 2), -- Abierta → Cerrada (2, 1, 2, 3), -- Cerrada → Controlada (3, 1, 3, 4); -- Controlada → Validada /* ========================================== EJEMPLO DE TRÁMITE REAL ========================================== */ INSERT INTO tramites (idtramite, idtipotramite, idestadotramite, creado_por) VALUES (10001, 1, 1, 1500); -- Acta creada en estado Abierta /* ========================================== HISTORIAL DEL PROCESO SEGÚN PROTOCOLO ========================================== */ INSERT INTO tramites_historial (idtramitehistorial, idtramite, idestadotramite_anterior, idestadotramite_nuevo, usuario, observacion) VALUES (1, 10001, NULL, 1, 1500, 'Acta generada por el docente'), (2, 10001, 1, 2, 1500, 'Docente cerró el acta y firmó electrónicamente'), (3, 10001, 2, 3, 2100, 'Bedelía controló el acta y asignó libro y folio'), (4, 10001, 3, 4, 3100, 'Autoridad académica validó el acta');
#2
Actualizado por Nicolas Arquiel hace 24 días
/* ========================================== TIPO DE TRÁMITE: EGRESO ========================================== */ INSERT INTO tipos_tramites (idtipotramite, nombre, descripcion, activo) VALUES (2, 'Egreso', 'Trámite de egreso académico', 1); /* ========================================== ESTADOS DEL TRÁMITE EGRESO ========================================== */ INSERT INTO estados_tramites (idestadotramite, nombre, descripcion) VALUES (10, 'Inicio', 'Inicio del trámite de egreso'), (11, 'Revisión académica', 'Control de requisitos académicos'), (12, 'Validación integral', 'Verificación completa institucional'), (13, 'Auditoría final', 'Revisión administrativa final'), (14, 'Finalizado', 'Egreso completado'); /* ========================================== ORDEN + MARCADORES DE INICIAL/FINAL ========================================== */ INSERT INTO tipos_tramites_estados (idtipotramiteestado, idtipotramite, idestadotramite, orden, inicial, final) VALUES (10, 2, 10, 1, 1, 0), (11, 2, 11, 2, 0, 0), (12, 2, 12, 3, 0, 0), (13, 2, 13, 4, 0, 0), (14, 2, 14, 5, 0, 1); /* ========================================== TRANSICIONES ========================================== */ INSERT INTO tipos_tramites_estados_transiciones (idtipotramiteestadotransicion, idtipotramite, idestadotramiteorigen, idestadotramitedestino) VALUES (10, 2, 10, 11), -- Inicio → Revisión académica (11, 2, 11, 12), -- Revisión académica → Validación integral (12, 2, 12, 13), -- Validación integral → Auditoría final (13, 2, 13, 14); -- Auditoría final → Finalizado /* ========================================== ACCIONES INTERNAS DE VALIDACIÓN INTEGRAL ========================================== */ INSERT INTO acciones_tramites (idacciontramite, nombre, descripcion) VALUES (1, 'validar_sin_deuda_biblioteca', 'Validación de Biblioteca'), (2, 'validar_sin_deuda_administracion', 'Validación Administrativa'), (3, 'validar_documentacion_titulo', 'Verificación de Documentación de Título'); /* ========================================== ASOCIAR ACCIONES AL ESTADO VALIDACIÓN INTEGRAL (id 12) ========================================== */ INSERT INTO estados_tramites_acciones (idestadotramiteaccion, idestadotramite, idacciontramite, obligatorio) VALUES (1, 12, 1, 1), (2, 12, 2, 1), (3, 12, 3, 1); /* ========================================== CREAR UN EGRESO REAL ========================================== */ INSERT INTO tramites (idtramite, idtipotramite, idestadotramite, creado_por) VALUES (20001, 2, 10, 3000); -- Estado inicial "Inicio" /* ========================================== HISTORIAL – AVANCE NORMAL DEL EGRESO ========================================== */ INSERT INTO tramites_historial (idtramitehistorial, idtramite, idestadotramite_anterior, idestadotramite_nuevo, usuario, observacion) VALUES (100, 20001, NULL, 10, 3000, 'Inicio del trámite'), (101, 20001, 10, 11, 3000, 'Revisión académica completada'), (102, 20001, 11, 12, 3000, 'Pasa a Validación integral'); /* ========================================== COMPLETAR ACCIONES INTERNAS ========================================== */ INSERT INTO tramites_acciones (idtramiteaccion, idtramite, idacciontramite, completado, fecha, observacion) VALUES (1, 20001, 1, 1, NOW(), 'Sin deuda en Biblioteca'), (2, 20001, 2, 1, NOW(), 'Sin deuda Administrativa'), (3, 20001, 3, 1, NOW(), 'Documentación de título aprobada'); /* ========================================== SE HABILITA EL PASO A AUDITORÍA FINAL ========================================== */ UPDATE tramites SET idestadotramite = 13 WHERE idtramite = 20001; INSERT INTO tramites_historial (idtramitehistorial, idtramite, idestadotramite_anterior, idestadotramite_nuevo, usuario, observacion) VALUES (103, 20001, 12, 13, 4000, 'Validación integral completada'); /* ========================================== FINALIZAR EGRESO ========================================== */ UPDATE tramites SET idestadotramite = 14 WHERE idtramite = 20001; INSERT INTO tramites_historial (idtramitehistorial, idtramite, idestadotramite_anterior, idestadotramite_nuevo, usuario, observacion) VALUES (104, 20001, 13, 14, 4000, 'Egreso finalizado correctamente');