Tareas #17288

Agregar tabla de Plan de Correlativas

Añadido por Nicolas Arquiel hace 10 días. Actualizado hace 10 días.

Estado:NuevaFecha de inicio:04/09/2025
Prioridad:NormalFecha fin:
Asignado a:-% Realizado:

0%

Categoría:-Tiempo dedicado:-
Versión prevista:-

Descripción

Ahora se debe permitir que en un mismo plan se carguen diferentes correlativas. El plan sigue el mismo pero las correlativas peuden cambianr

Para evitar que el alumno se inscriba en el momento que se este modificando el plan de correlativas. Lo que se hara es dejar un historico de planes de correlatvas vinculados a un plan de estudio con la posibilidad de activar uno u otro plan de correlativas posibilitando cargar un plan de correlativas distinto sin afectar el actual hasta que se active

-- Tabla para agrupar y versionar conjuntos de correlativas
CREATE TABLE planes_correlativas (
    idplancorrelativa INT PRIMARY KEY AUTO_INCREMENT,
    idplanestudio BIGINT(20) NOT NULL,
    nombre VARCHAR(255) NOT NULL, -- ej: "Correlativas 2025-V1", "Correlativas 2025-V2" 
    descripcion TEXT,
    activo BOOLEAN DEFAULT 0, -- solo una versión puede estar activa por plan
    fecha_creacion DATE NOT NULL,
    fecha_vigencia_desde DATE,
    fecha_vigencia_hasta DATE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    created_by INT DEFAULT 1,
    updated_by INT DEFAULT 1,

    FOREIGN KEY (idplanestudio) REFERENCES planes_estudios(idplanestudio)
);

--  agregamos un campo a la tabla existente acacorrelativas
ALTER TABLE acacorrelativas 
ADD COLUMN idplancorrelativa INT DEFAULT NULL,
ADD FOREIGN KEY (idplancorrelativa) REFERENCES planes_correlativas(idplancorrelativa);

Histórico

#1 Actualizado por Nicolas Arquiel hace 10 días

  • Se actualizó Descripción (diff)

#2 Actualizado por Nicolas Arquiel hace 10 días

Agregar registro segun planes

INSERT INTO planes_correlativas (idplanestudio, nombre, descripcion, activo, fecha_creacion, fecha_vigencia_desde)
SELECT DISTINCT 
    mp.idplanestudio,
    CONCAT('Correlativas Actuales - Plan ', pe.nombre) as nombre,
    'Plan de correlativas inicial migrado del sistema existente' as descripcion,
    1 as activo, -- Lo marcamos como activo
    CURDATE() as fecha_creacion,
    CURDATE() as fecha_vigencia_desde
FROM materias_planes mp
INNER JOIN planes_estudios pe ON mp.idplanestudio = pe.idplanestudio
INNER JOIN acacorrelativas ac ON mp.idmateriaplan = ac.idmateriaplan
WHERE mp.idplanestudio IS NOT NULL
GROUP BY mp.idplanestudio, pe.nombre;

#3 Actualizado por Nicolas Arquiel hace 10 días

VINCULAR TODAS LAS CORRELATIVAS EXISTENTES CON SUS RESPECTIVOS PLANES
-- Esto actualiza acacorrelativas para vincular cada correlativa con su plan correspondiente


UPDATE acacorrelativas ac
INNER JOIN materias_planes mp ON ac.idmateriaplan = mp.idmateriaplan
INNER JOIN planes_correlativas pc ON mp.idplanestudio = pc.idplanestudio AND pc.activo = 1
SET ac.idplancorrelativa = pc.idplancorrelativa;

#4 Actualizado por Nicolas Arquiel hace 10 días

VERIFICAR QUE TODO SE HAYA VINCULADO CORRECTAMENTE

Esta consulta te muestra el resumen de lo que se creó


SELECT 
    pe.idplanestudio,
    pe.nombre as plan_estudios,
    pc.idplancorrelativa,
    pc.nombre as plan_correlativas,
    pc.activo,
    COUNT(ac.id) as cantidad_correlativas
FROM planes_estudios pe
LEFT JOIN planes_correlativas pc ON pe.idplanestudio = pc.idplanestudio
LEFT JOIN acacorrelativas ac ON pc.idplancorrelativa = ac.idplancorrelativa
GROUP BY pe.idplanestudio, pe.nombre, pc.idplancorrelativa, pc.nombre, pc.activo
ORDER BY pe.idplanestudio;

Exportar a: Atom PDF

Redmine Appliance - Powered by TurnKey Linux