-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Script de actualización de la versión alpha-1 a alpha-2 (Ver contenido-fin de archivo para mas detalles) -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Regla para verificar que el alumno tenga presentados y vigentes los requisitos obligatorios -- de ingreso a la propuesta -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- sga_reglas INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) VALUES ( 310, 3, 'Requisitos de Ingreso a Propuesta presentados y vigentes', 'Tener presentados y vigentes los requisitos de ingreso a la propuesta', 'El alumno debe requisitos de ingreso en la propuesta', 'El alumno debe requisitos de ingreso en la propuesta', 'regla_requisitos_ingreso_propuesta'); -- Parámetros de la Regla -- INSERT INTO sga_reglas_parametros -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (310,'alumno'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (310,'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Regla para Verificar si el alumno es Activo -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- sga_reglas INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) VALUES ( 303, 3, 'Ser Alumno Activo', 'Controla que el alumno sea Activo','El alumno no es Activo','El alumno no es Activo', 'regla_alumno_activo'); -- Parámetros de la Regla -- INSERT INTO sga_reglas_parametros -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (303,'alumno'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (303,'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_requisitos, sga_requisitos_validos -- Versión: 3.0.0 -- Control: Verificar que el alumno tenga presentados y vigentees los requisito de ingreso a la propuesta -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) VALUES (60, 5, 'Requistos de Ingreso Presentados', NULL, 'Tener presentados y vigente los requisitos de ingreso obligatorios en la propuesta', 310); INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 60); -- Inscripción a Cursadas INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (2, 60); -- Inscripción a Examen -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_requisitos, sga_requisitos_validos -- Versión: 3.0.0 -- Control: Verificar que el alumno esten en calidad "Activo" en la Propuesta -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) VALUES (53, 5, 'Ser Alumno Activo', NULL, 'Alumno en calidad Activo en la Propuesta', 303); INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 53); -- Inscripción a Cursadas INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (2, 53); -- Inscripción a Examen -- Fin ajustes para la versión alpha-2. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Verifica que el alumno no este expulsado en otra institución -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- sga_reglas INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) VALUES ( 311, 3, 'No estar expulsado en otra Institución', 'Controla que el alumno no este expulsado en otra institución', 'El alumno esta expulsado en otra institucion', 'El alumno esta expulsado en otra institucion', 'regla_alumno_no_expulsado'); -- Parámetros de la Regla -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (311,'persona'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (311,'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_requisitos, sga_requisitos_validos -- Versión: 3.0.0 -- Control: Verificar que el alumno no este expulsado en otra institucion -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) VALUES (61, 5, 'Alumno No expulsado en otra Institución', NULL, 'No estar expulsado en otra institución', 311); INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (3, 61); -- Inscripción a Propuesta ALTER TABLE sga_reglas_mensajes ALTER COLUMN mensaje_validacion TYPE varchar(300); ALTER TABLE sga_reglas_mensajes ALTER COLUMN mensaje_validacion_not TYPE varchar(300); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Que los créditos de las actividades regularizadas vigentes no supere los créditos definidos en el plan de estudios del alumno -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) VALUES (312, 3, 'Créditos en mano versus créditos del Plan de Estudios', 'Que los créditos de las actividades regularizadas vigentes no supere los créditos definidos en el plan de estudios del alumno', 'El alumno ha superado los créditos en mano definidos en el plan de estudios', 'El alumno ha superado los créditos en mano definidos en el plan de estudios', 'regla_creditos_regularidad_en_mano'); -- Mensajes INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (312, 1, 'El alumno ha superado los créditos de regularidades vigentes. Tope de créditos %1%. Créditos de actividades regularizadas: %2%', 'El alumno no ha superado los créditos de regularidades vigentes. Tope de créditos %1%. Créditos de actividades regularizadas: %2%'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (312, 2, 'Ud. ha superado los créditos de actividades regularizadas vigente. Tope de créditos %1%. Créditos de actividades regularizadas: %2%', 'Ud. no ha superado los créditos de actividades regularizadas vigente. Tope de créditos %1%. Créditos de actividades regularizadas: %2%'); -- Parametros -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 312,'alumno'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 312,'actividad'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 312,'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Que el alumno no supere el máximo de créditos permitidos para increipciones a actividades vigentes -- Actividades que va a cursar o esta cursando actualmente (Ejemplo materias anules y cuatrimestrales) -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) VALUES (313, 3, 'No superar el máximo de créditos permitidos para incripciones a actividades vigentes', '', 'Que el alumno no pueda cursar en simultaneo actividades que sumen mas créditos de los definidos en el plan de estudios', 'El alumno ha excedido el máximo de créditos permitidos para inscripciones', 'regla_tope_creditos_inscripciones'); -- Mensajes INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (313, 1, 'El alumno ha excedido el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: %1%. Cantidad de créditos en inscripciones: %2%', 'El alumno no ha excedido el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: %1%. Créditos en inscripciones: %2%'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (313, 2, 'Ud. ha excedido el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: %1%. Créditos en inscripciones: %2%', 'Ud. no ha excedido el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: %1%. Créditos en inscripciones: %2%'); -- Parametros -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 313,'alumno'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 313,'actividad'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 313,'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_requisitos, sga_requisitos_validos -- Versión: 3.0.0 -- Control: Verificar que Que los créditos de las actividades regularizadas vigentes -- no supere los créditos definidos en el plan de estudios del alumno -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) VALUES (62, 5, 'No superar los créditos en mano definidos en el plan de estudios.', NULL, 'Que los créditos de las actividades regularizadas vigentes no supere los créditos definidos en el plan de estudios del alumno', 312); INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 62); -- Inscripción a Actividades -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_requisitos, sga_requisitos_validos -- Versión: 3.0.0 -- Control: Verificar que el alumno no supere el máximo de créditos permitidos para incripciones a actividades vigentes -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) VALUES (63, 5, 'No superar el máximo de créditos permitidos para incripciones a actividades vigentes', NULL, 'Que el alumno no pueda cursar en simultaneo actividades que sumen mas créditos de los definidos en el plan de estudios', 313); INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 63); -- Inscripción a Actividades -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: get_plan_version_alumno -- -- Recupera los elementos que consituyen una version de plan de estudios. -- -- Recibe: -- get_plan_version_alumno(integer, varchar(10)) -- 1.- ID Alumno -- 1.- Fecha formato yyyy-mm-dd -- -- Retorna: Version del Plan en el que se encuentra el alumno en una fecha. -- -- Ejemplo: select * from get_plan_version_alumno(2, '2010-03-25') -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP FUNCTION get_plan_version_alumno(integer, varchar(10)); CREATE OR REPLACE FUNCTION get_plan_version_alumno(_alumno integer, _sfecha varchar(10)) RETURNS integer AS $BODY$ DECLARE _plan_version integer; DECLARE _fecha date; BEGIN _plan_version := NULL; IF _alumno IS NULL OR _sfecha IS NULL OR _sfecha = '' THEN RETURN _plan_version; END IF; -- Convierto la fecha a date. La fecha debe venir en formato: yyyy-mm-dd _fecha := _sfecha::date; -- Busco el plan y version del alumno para la fecha dada. -- Recupera la maxima fecha de cambio de plan/version que sea menor o igual a la fecha a buscar. -- En el caso que exista mas de un cambio de version el mismo dia, tomara el ultimo cambio de ese dia. SELECT plan_version INTO _plan_version FROM sga_alumnos_hist_planes WHERE alumno = _alumno AND fecha = (SELECT max(sga_alumnos_hist_planes.fecha) FROM sga_alumnos_hist_planes WHERE sga_alumnos_hist_planes.alumno = _alumno AND Cast(sga_alumnos_hist_planes.fecha as date) <= _fecha ); -- Si no encontró el plan y version del alumno en la fecha indicada, recupero el plan y version actual IF NOT FOUND THEN SELECT plan_version INTO _plan_version FROM sga_alumnos WHERE alumno = _alumno; END IF; -- Retorno la version de plan del alumno RETURN _plan_version; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++++ Fin Function get_plan_version_alumno(integer, varchar(10)) ++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION get_plan_version_alumno (integer, varchar(10)) FROM public; GRANT EXECUTE ON FUNCTION get_plan_version_alumno (integer, varchar(10)) to public; UPDATE sga_requisitos set nombre = 'Cumplir con los requisitos de ingreso obligatorios' where requisito = 60; UPDATE sga_reglas set php_clase = 'regla_requisitos_ingreso_obligatorios' where regla = 310; DELETE FROM sga_requisitos_x_punto_control WHERE pto_control = 3; --INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (3, 57, 1); -- Correlativas de Cursada --INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (3, 58, 2); -- Correlativas de Examen INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (3, 62, 3); -- Créditos en mano de regularidades vigentes INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (3, 63, 4); -- Tope de Créditos de Inscripciones vigentes DELETE FROM sga_reglas_mensajes WHERE regla = 310; INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (310, 1, 'El alumno debe requisitos de ingreso obligatorios', 'El alumno cumple con los requisitos de ingreso obligatorios' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (310, 2, 'Ud. debe requisitos de ingreso obligatorios', 'Ud. cumple con los requisitos de ingreso obligatorios'); -- Procesos que interviene una actividad del plan del alumno. Usado basicamnte en inscripciones a examnes y cursadas. INSERT INTO sga_requisitos_tipos (requisito_tipo, nombre, descripcion, publico, icono, regla) VALUES ( 6, 'Procesos - Actividad', 'Procesos que verifican algo del alumno respecto de una actividad en el plan de estudios ', 'S', 'propuesta/g_requisito.gif', NULL); UPDATE sga_requisitos SET requisito_tipo = 6 WHERE requisito IN (62, 63); -- Requisitos: Correlativas de Cursada y Aprobacion. Tipo de Requisito Nro 6. UPDATE sga_requisitos SET requisito_tipo = 6 WHERE requisito IN (57, 58); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_competencias_x_actividad -- Secuencia: sga_competencias_x_actividad_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_competencias_x_actividad_seq; CREATE SEQUENCE sga_competencias_x_actividad_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_competencias_x_actividad -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_competencias_x_actividad; CREATE TABLE sga_competencias_x_actividad ( competencia_actividad INTEGER NOT NULL DEFAULT nextval('sga_competencias_x_actividad_seq'::text) , plan_version Integer NOT NULL, certificado Integer NOT NULL, elemento Integer NOT NULL, resultado Integer NOT NULL, nivel_escala Integer NOT NULL ); -- ALTER TABLE sga_competencias_x_actividad DROP CONSTRAINT pk_sga_competencias_x_actividad; ALTER TABLE sga_competencias_x_actividad ADD CONSTRAINT pk_sga_competencias_x_actividad PRIMARY KEY (competencia_actividad,plan_version,certificado); Revoke all ON sga_competencias_x_actividad FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_competencias_x_actividad +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_competencias_x_actividad -- Indice: iu_sga_competencias_x_actividad_vers_cert_act_comp -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX iu_sga_competencias_x_actividad_vers_cert_act_comp; CREATE INDEX iu_sga_competencias_x_actividad_vers_cert_act_comp ON sga_competencias_x_actividad (plan_version,certificado,elemento,resultado); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_competencias_x_actividad -- FK: fk_sga_competencias_x_actividad_sga_elementos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_competencias_x_actividad_sga_elementos; CREATE INDEX ifk_sga_competencias_x_actividad_sga_elementos ON sga_competencias_x_actividad (elemento); -- ALTER TABLE sga_competencias_x_actividad DROP CONSTRAINT fk_sga_competencias_x_actividad_sga_elementos; ALTER TABLE sga_competencias_x_actividad ADD CONSTRAINT fk_sga_competencias_x_actividad_sga_elementos FOREIGN KEY (elemento) REFERENCES sga_elementos (elemento) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_competencias_x_actividad -- FK: fk_sga_competencias_x_actividad_sga_escalas_cumplimiento_det -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_competencias_x_actividad_sga_escalas_cumplimiento_det; CREATE INDEX ifk_sga_competencias_x_actividad_sga_escalas_cumplimiento_det ON sga_competencias_x_actividad (nivel_escala); -- ALTER TABLE sga_competencias_x_actividad DROP CONSTRAINT fk_sga_competencias_x_actividad_sga_escalas_cumplimiento_det; ALTER TABLE sga_competencias_x_actividad ADD CONSTRAINT fk_sga_competencias_x_actividad_sga_escalas_cumplimiento_det FOREIGN KEY (nivel_escala) REFERENCES sga_escalas_cumplimiento_det (nivel_escala) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_competencias_x_actividad -- FK: fk_sga_competencias_x_actividad_sga_planes_certificados -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_competencias_x_actividad_sga_planes_certificados; CREATE INDEX ifk_sga_competencias_x_actividad_sga_planes_certificados ON sga_competencias_x_actividad (plan_version,certificado); -- ALTER TABLE sga_competencias_x_actividad DROP CONSTRAINT fk_sga_competencias_x_actividad_sga_planes_certificados; ALTER TABLE sga_competencias_x_actividad ADD CONSTRAINT fk_sga_competencias_x_actividad_sga_planes_certificados FOREIGN KEY (plan_version,certificado) REFERENCES sga_planes_certificados (plan_version,certificado) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_competencias_x_actividad -- FK: fk_sga_competencias_x_actividad_sga_resultados_aprendizaje -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_competencias_x_actividad_sga_resultados_aprendizaje; CREATE INDEX ifk_sga_competencias_x_actividad_sga_resultados_aprendizaje ON sga_competencias_x_actividad (resultado); -- ALTER TABLE sga_competencias_x_actividad DROP CONSTRAINT fk_sga_competencias_x_actividad_sga_resultados_aprendizaje; ALTER TABLE sga_competencias_x_actividad ADD CONSTRAINT fk_sga_competencias_x_actividad_sga_resultados_aprendizaje FOREIGN KEY (resultado) REFERENCES sga_resultados_aprendizaje (resultado) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_competencias_x_actividad -- Actualizacion Nro de Secuencia: sga_competencias_x_actividad_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_competencias_x_actividad_seq',(SELECT MAX(competencia_actividad) FROM sga_competencias_x_actividad)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_constancias -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ALTER TABLE sga_constancias ADD COLUMN objeto Bigint; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_constancias_formularios -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_constancias_formularios; CREATE TABLE sga_constancias_formularios ( objeto Bigint NOT NULL, nombre Varchar(100) NOT NULL ); -- ALTER TABLE sga_constancias_formularios DROP CONSTRAINT pk_sga_constancias_formularios; ALTER TABLE sga_constancias_formularios ADD CONSTRAINT pk_sga_constancias_formularios PRIMARY KEY (objeto); Revoke all ON sga_constancias_formularios FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_constancias_formularios +++++++++++++++++++++++++++++ GRANT select ON sga_constancias_formularios TO public; GRANT update ON sga_constancias_formularios TO public; GRANT delete ON sga_constancias_formularios TO public; GRANT insert ON sga_constancias_formularios TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_constancias -- FK: fk_sga_constancias_sga_constancias_formularios -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_constancias_sga_constancias_formularios; CREATE INDEX ifk_sga_constancias_sga_constancias_formularios ON sga_constancias (objeto); -- ALTER TABLE sga_constancias DROP CONSTRAINT fk_sga_constancias_sga_constancias_formularios; ALTER TABLE sga_constancias ADD CONSTRAINT fk_sga_constancias_sga_constancias_formularios FOREIGN KEY (objeto) REFERENCES sga_constancias_formularios (objeto) on update restrict on delete restrict; -- cambio de nombre de la regla php UPDATE sga_reglas SET php_clase = 'regla_tope_creditos_regularidades' WHERE regla = 312; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_actividades_con_mesas_vigentes -- -- Recupera actividades que tienen mesas de examen con períodos de inscripcion vigentes -- -- Recibe: -- 1.- ID de la Version de Plan (del alumno) -- -- Retorna: -- 1. Integer: ID de la actividad (sga_elementos.elemento) -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version. -- DROP FUNCTION f_actividades_con_mesas_vigentes(integer); CREATE OR REPLACE FUNCTION f_actividades_con_mesas_vigentes(_id_plan_version integer) RETURNS SETOF INTEGER AS $BODY$ DECLARE cur_actividad RECORD; BEGIN -- Creo tabla temporal CREATE TEMP TABLE tmp_llamados ( llamado_mesa integer, mesa_examen integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp, hs_previas_fin smallint, elemento integer); -- lleno tabla temporal con actividades que tienen mesas con periodos de insc vigentes. INSERT INTO tmp_llamados (mesa_examen, elemento, llamado_mesa, periodo_insc, fecha_inicio, fecha_fin, hs_previas_fin, periodo_inscripcion) SELECT sga_mesas_examen.mesa_examen, sga_mesas_examen.elemento, sga_llamados_mesa.llamado_mesa, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.hs_previas_fin, sga_periodos_inscripcion.periodo_inscripcion FROM sga_llamados_mesa, sga_llamados_turno, sga_mesas_examen, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_llamados_mesa.fecha >= CURRENT_DATE AND sga_llamados_mesa.mesa_examen = sga_mesas_examen.mesa_examen AND sga_llamados_turno.llamado = sga_llamados_mesa.llamado AND sga_periodos_inscripcion.periodo = sga_llamados_turno.periodo AND sga_periodos_inscripcion.periodo_inscripcion = sga_periodos_inscripcion_fechas.periodo_inscripcion AND sga_periodos_inscripcion_fechas.periodo_insc = sga_periodos_inscripcion_aplanado.periodo_insc AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.plan_version = _id_plan_version -- UBICACION AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_mesas_examen.ubicacion; FOR cur_actividad IN ( SELECT t.elemento as elemento FROM tmp_llamados as t LEFT JOIN sga_llamados_mesa_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.llamado_mesa = t.llamado_mesa, sga_llamados_mesa WHERE t.llamado_mesa = sga_llamados_mesa.llamado_mesa -- fecha de inicio del periodo de insc. AND CURRENT_DATE >= COALESCE(e.fecha_inicio, t.fecha_inicio) -- fecha y hora de finalizacion del periodo de insc. AND CURRENT_TIMESTAMP <= COALESCE(e.fecha_fin, COALESCE(t.fecha_fin, cast(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval))) -- MODALIDAD AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_mesas_examen_modalidad WHERE sga_mesas_examen_modalidad.mesa_examen = t.mesa_examen) ) ) LOOP -- Retorno la actividad que tiene mesa con periodo de insc vigente en este momento. RETURN NEXT cur_actividad.elemento; END LOOP; -- Borro la tabla temporal DROP TABLE tmp_llamados; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- REVOKE EXECUTE ON FUNCTION f_actividades_con_mesas_vigentes FROM public; GRANT EXECUTE ON FUNCTION f_actividades_con_mesas_vigentes(integer) TO public; -- ++++++++++++++++++++++++++ Fin Function f_actividades_con_mesas_vigentes +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: get_actividades_certificado_plan_version -- -- Recupera los elementos de tipo "Actividad" que intervienen en el cumplimiento de un certificado. -- Llama a la funcion "get_elemento_contenido(integer, integer, boolean, boolean)" -- -- Recibe: -- get_actividades_certificado_plan_version(integer, integer) -- 1.- Certificado -- 2.- Versión de Plan de Estudios -- -- Retorna: -- 1.- Integer -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE OR REPLACE FUNCTION get_actividades_certificado_plan_version (integer, integer) RETURNS SETOF integer AS $body$ DECLARE _certificado ALIAS for $1; _plan_version ALIAS for $2; requisitos record; actividades record; BEGIN -- Recupero las actividades/modulos definidos en el cumplimiento del certificado en la version de plan de estudios. FOR requisitos IN SELECT DISTINCT sga_elementos.elemento, sga_elementos_revision.elemento_revision, sga_g3entidades_subtipos.entidad_tipo FROM sga_certificados, sga_condiciones, sga_condiciones_grupos, sga_condiciones_requisitos, sga_g3entidades, sga_g3entidades_subtipos, sga_elementos, sga_elementos_revision, sga_elementos_plan WHERE sga_certificados.entidad = sga_condiciones.entidad AND sga_condiciones.condicion = sga_condiciones_grupos.condicion AND sga_condiciones_grupos.grupo_condicion = sga_condiciones_requisitos.grupo_condicion AND sga_condiciones_requisitos.entidad = sga_g3entidades.entidad AND sga_g3entidades.entidad_subtipo = sga_g3entidades_subtipos.entidad_subtipo AND sga_g3entidades.entidad = sga_elementos.entidad AND sga_elementos.elemento = sga_elementos_revision.elemento AND sga_elementos_revision.elemento_revision = sga_elementos_plan.elemento_revision AND sga_elementos_plan.plan_version = _plan_version AND sga_certificados.certificado = _certificado AND sga_condiciones.plan_version = _plan_version LOOP -- Si es un Módulo, recupero las componentes del módulo. IF requisitos.entidad_tipo = 1 THEN FOR actividades IN -- Recupero el contenido del módulo y devuelvo solo las actividades.. SELECT DISTINCT get_elemento_contenido.elemento FROM get_elemento_contenido(requisitos.elemento_revision, plan_version, FALSE, TRUE), sga_g3entidades_subtipos WHERE get_elemento_contenido.entidad_subtipo = sga_g3entidades_subtipos.entidad_subtipo AND sga_g3entidades_subtipos.entidad_tipo = 2 -- Actividad LOOP RETURN NEXT actividades.elemento; END LOOP; ELSE -- Es una actividad. RETURN NEXT requisitos.elemento; END IF; END LOOP; END; $body$ LANGUAGE 'plpgsql'; GRANT EXECUTE ON FUNCTION get_actividades_certificado_plan_version (integer, integer) to public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Que el alumno tenga el legajo generado en la propuesta -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) VALUES (314, 3, 'Que el alumno tenga el legajo generado en la propuesta', 'Que el alumno tenga el legajo generado en la propuesta (sga_alumnos.legajo)', 'Que el alumno tenga el legajo generado en la propuesta', 'El alumno no tiene generado el legajo', 'regla_alumno_con_legajo'); -- Mensajes INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (314, 1, 'El alumno no tiene legajo generado', 'El alumno tiene legajo generado'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (314, 2, 'Ud. no tiene legajo generado', 'Ud. tiene legajo generado'); -- Parametros -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 314,'alumno'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 314,'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_requisitos, sga_requisitos_validos -- Versión: 3.0.0 -- Control: Verificar que el alumno tenga generado el nro de legajo. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) VALUES (64, 6, 'Que el alumno tenga legajo generado', NULL, 'Que el alumno tenga generado el nro de legajo en la propuesta', 314); INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 64); -- Cursadas INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (2, 64); -- Examenes -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_actividades_con_comisiones_vigentes -- -- Chequea si existe un período de inscripción vigente para la fecha actual -- -- Recibe: -- 1.- ID de la Version de Plan (del alumno) -- -- Retorna: Lista de Actividades -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version -- DROP FUNCTION f_actividades_con_comisiones_vigentes(integer); CREATE OR REPLACE FUNCTION f_actividades_con_comisiones_vigentes(_plan_version integer) RETURNS SETOF integer AS $BODY$ DECLARE cur_actividad RECORD; BEGIN -- Creo tabla temporal CREATE TEMP TABLE tmp_comisiones ( comision integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp, elemento integer); -- lleno tabla temporal con actividades que tienen mesas con periodos de insc vigentes. INSERT INTO tmp_comisiones (comision, elemento, periodo_insc, fecha_inicio, fecha_fin, periodo_inscripcion) SELECT sga_comisiones.comision, sga_comisiones.elemento, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.periodo_inscripcion FROM sga_comisiones, sga_periodos_lectivos, sga_periodos_inscripcion, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_comisiones.inscripcion_habilitada = 'S' AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_periodos_inscripcion.periodo = sga_periodos_lectivos.periodo AND sga_periodos_inscripcion_fechas.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _plan_version AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_comisiones.ubicacion; FOR cur_actividad IN ( SELECT t.elemento as elemento FROM tmp_comisiones as t LEFT JOIN sga_comisiones_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.comision = t.comision WHERE -- Se encuentre en un periodo de inscripcion de comisiones. CURRENT_DATE BETWEEN COALESCE(sga_comisiones_excep_perinsc.fecha_inicio, t.fecha_inicio) AND COALESCE(sga_comisiones_excep_perinsc.fecha_fin, t.fecha_fin) -- Modalidad de cursada AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_comisiones_modalidad WHERE sga_comisiones_modalidad.comision = t.comision) ) ) LOOP -- Retorno la actividad que tiene mesa con periodo de insc vigente en este momento. RETURN NEXT cur_actividad.elemento; END LOOP; -- Borro tabla temporal DROP TABLE tmp_comisiones; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- REVOKE EXECUTE ON FUNCTION f_actividades_con_comisiones_vigentes FROM public; GRANT EXECUTE ON FUNCTION f_actividades_con_comisiones_vigentes(integer) TO public; -- ++++++++++++++++++++++++++ Fin Function f_actividades_con_comisiones_vigentes(integer) +++++++++++++++++++++++++++++++++++++++-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_actividades_con_mesas_vigentes -- -- Recupera actividades que tienen mesas de examen con: -- - Fecha mayor o igual a la fecha actual. -- - Períodos de inscripcion vigentes y habilitados -- - Periodos de inscripcion definidos para la version del plan de estudios pasado por parametro -- y para la ubicación y modalidad de la mesa de examen. -- -- Recibe: -- 1.- ID de la Version de Plan (del alumno) -- -- Retorna: -- 1. Integer: ID de las actividades que tienen mesas de examen. (sga_elementos.elemento) -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version. -- DROP FUNCTION f_actividades_con_mesas_vigentes(integer); CREATE OR REPLACE FUNCTION f_actividades_con_mesas_vigentes(_id_plan_version integer) RETURNS SETOF INTEGER AS $BODY$ DECLARE cur_actividad RECORD; BEGIN -- Creo tabla temporal CREATE TEMP TABLE tmp_llamados ( llamado_mesa integer, mesa_examen integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp, hs_previas_fin smallint, elemento integer); -- lleno tabla temporal con actividades que tienen mesas con periodos de insc vigentes. INSERT INTO tmp_llamados (mesa_examen, elemento, llamado_mesa, periodo_insc, fecha_inicio, fecha_fin, hs_previas_fin, periodo_inscripcion) SELECT sga_mesas_examen.mesa_examen, sga_mesas_examen.elemento, sga_llamados_mesa.llamado_mesa, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.hs_previas_fin, sga_periodos_inscripcion_fechas.periodo_inscripcion FROM sga_llamados_mesa, sga_llamados_turno, sga_mesas_examen, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_llamados_mesa.fecha >= CURRENT_DATE AND sga_llamados_mesa.mesa_examen = sga_mesas_examen.mesa_examen AND sga_llamados_turno.llamado = sga_llamados_mesa.llamado AND sga_periodos_inscripcion.periodo = sga_llamados_turno.periodo AND sga_periodos_inscripcion.periodo_inscripcion = sga_periodos_inscripcion_fechas.periodo_inscripcion AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _id_plan_version -- UBICACION AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_mesas_examen.ubicacion; -- Si la fecha de finalizacion es el campo fecha_fin, se FOR cur_actividad IN ( SELECT t.elemento as elemento FROM tmp_llamados as t LEFT JOIN sga_llamados_mesa_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.llamado_mesa = t.llamado_mesa, sga_llamados_mesa WHERE t.llamado_mesa = sga_llamados_mesa.llamado_mesa -- fecha de inicio del periodo de insc. AND CURRENT_DATE >= COALESCE(e.fecha_inicio, t.fecha_inicio) -- fecha y hora actual se encuentre en un período de inscripcion de la mesa AND CURRENT_TIMESTAMP BETWEEN COALESCE(e.fecha_inicio, t.fecha_inicio) AND COALESCE(e.fecha_fin, COALESCE(t.fecha_fin, CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval))) -- AND COALESCE((e.fecha_fin + CAST('1 days' AS INTERVAL)), COALESCE((t.fecha_fin + CAST('1 days' AS INTERVAL)), cast(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval))) -- MODALIDAD AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_mesas_examen_modalidad WHERE sga_mesas_examen_modalidad.mesa_examen = t.mesa_examen) ) ) LOOP -- Retorno la actividad que tiene mesa con periodo de insc vigente en este momento. RETURN NEXT cur_actividad.elemento; END LOOP; -- Borro la tabla temporal DROP TABLE tmp_llamados; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- REVOKE EXECUTE ON FUNCTION f_actividades_con_mesas_vigentes FROM public; GRANT EXECUTE ON FUNCTION f_actividades_con_mesas_vigentes(integer) TO public; -- ++++++++++++++++++++++++++ Fin Function f_actividades_con_mesas_vigentes +++++++++++++++++++++++++++++++++++++++ /* select * from f_actividades_con_mesas_vigentes (1000); */-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_hist_academica -- Version: 3.0.0 -- Recupera -- * Examenes Aprobados/Reprobados/Ausentes -- * Promociones Aprobadas -- * Examnes / Promociones / Equivalencias totales / Otros Reconocimientos de regularidad. -- ** No se consideran los examenes de Reválidas de cursadas (instancia = 5) -- -- Valores de los campos: -- resultado = A - Aprobado / R - Desaprobado / U - Ausente (examenes ausentes) -- tipo_acta y tipo_tramite = N - Normal / R - Rectificativo -- origen = E - Examen / P - Promocion / R - Aprob. x Resolucion / Q - Equivalencia -- tipo = Examen / Promoción / Equivalencia / Aprob. por Resolución -- -- La vista devuelve lo siguiente: -- a. Promociones: Detalles ACTIVOS y NO RECTIFICADOS de actas CERRADAS de origen PROMOCIÓN. El único resultado válido es APROBADO. -- b. Examenes: Detalles ACTIVOS y NO RECTIFICADOS de actas CERRADAS de origen EXAMEN. Los resultados válidos son: APROBADO, REPROBADO, AUSENTE. -- c. Equivalencias: Detalles ACTIVOS de alcance TOTAL y NO RECTIFICADOS de trámites de equivalencia CERRADOS. Los resultados válidos son: APROBADO, REPROBADO. -- d. Aprobación por Resolución: ACTIVIDADES de tipo TOTAL en trámites de aprobación por resolución CERRADOS. -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP VIEW vw_hist_academica; CREATE OR REPLACE VIEW vw_hist_academica ( elemento, id_acta, id_acta_original, nro_acta, tipo_acta, origen, tipo, evaluacion, comision, llamado_mesa, equivalencia_tramite, equivalencia_tramite_original, tipo_tramite, nro_resolucion, equivalencia, alumno, plan_version, instancia, fecha, fecha_vigencia, folio, renglon, escala_nota, nota, resultado, cond_regularidad, estado, pct_asistencia, observaciones, nota_descripcion, resultado_descripcion ) AS -- PROMOCIONES. Actas Original y Rectificativas SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, cast('Promoción' as varchar(30)) as tipo, sga_actas.evaluacion, sga_actas.comision, sga_actas.llamado_mesa, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_comisiones.comision = sga_actas.comision AND sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_actas.estado = 'C' AND sga_actas.origen = 'P' AND sga_actas_detalle.estado = 'A' AND sga_actas_detalle.resultado = 'A' -- Solo Promocionados AND sga_actas_detalle.rectificado = 'N' AND sga_actas_detalle.instancia <> 5 AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado UNION ALL -- EXAMENES: Actas Original y Rectificativas. Examenes y Promociones. SELECT sga_mesas_examen.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, cast('Examen' as varchar(30)) as tipo, sga_actas.evaluacion, sga_actas.comision, sga_actas.llamado_mesa, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_llamados_mesa, sga_mesas_examen, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_llamados_mesa.llamado_mesa = sga_actas.llamado_mesa AND sga_mesas_examen.mesa_examen = sga_llamados_mesa.mesa_examen AND sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'E' AND sga_actas_detalle.estado = 'A' -- Activo AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente de Examenes AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.instancia <> 5 AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado UNION ALL -- EQUIVALENCIAS DE REGULARIDAD Y PARCIALES: Original y Rectificativas SELECT sga_equiv_otorgada.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as varchar(30)) as nro_acta, cast(null as char(1)) as tipo_acta, 'Q' as origen, cast('Equivalencia' as varchar(30)) as tipo, cast(null as integer) as evaluacion, cast(null as integer) as comision, cast(null as integer) as llamado_mesa, sga_equiv_tramite.equivalencia_tramite, CASE sga_equiv_tramite.tipo_tramite WHEN 'N' THEN sga_equiv_tramite.equivalencia_tramite WHEN 'R' THEN sga_equiv_tramite.rectifica_a END as equivalencia_tramite_original, sga_equiv_tramite.tipo_tramite as tipo_tramite, sga_equiv_tramite.documento as nro_resolucion, sga_equiv_otorgada.equivalencia, sga_equiv_tramite.alumno, sga_equiv_tramite.plan_version, cast(null as integer) as instancia, sga_equiv_otorgada.fecha, sga_equiv_otorgada.fecha_vigencia, cast(null as smallint) as folio, cast(null as smallint) as renglon, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado, cast(null as integer) as cond_regularidad, sga_equiv_otorgada.estado, cast(null as numeric(5,2)) as pct_asistencia, sga_equiv_otorgada.temas_a_rendir as observaciones, sga_escalas_notas_det.descripcion, sga_escalas_notas_resultado.descripcion FROM sga_equiv_tramite, sga_equiv_otorgada LEFT JOIN sga_escalas_notas_det ON (sga_equiv_otorgada.escala_nota = sga_escalas_notas_det.escala_nota AND sga_equiv_otorgada.nota = sga_escalas_notas_det.nota), sga_escalas_notas_resultado WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_equiv_tramite.estado = 'C' -- Cerrado AND sga_equiv_otorgada.alcance = 'T' -- Equivalencia Total AND sga_equiv_otorgada.rectificado = 'N' -- No Rectificado AND sga_equiv_otorgada.estado = 'A' -- Activo AND sga_equiv_otorgada.resultado IN ('A','R') -- Aprobado/Reprobado AND sga_escalas_notas_resultado.resultado = sga_equiv_otorgada.resultado UNION ALL -- Aprobaciones por Resolucion. SELECT sga_reconocimiento_act.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as varchar(30)) as nro_acta, cast(null as char(1)) as tipo_acta, 'R' as origen, cast('Aprob. por Resolución' as varchar(30)) as tipo, cast(null as integer) as evaluacion, cast(null as integer) as comision, cast(null as integer) as llamado_mesa, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, sga_reconocimiento.documento as nro_resolucion, cast(null as integer) as equivalencia, sga_reconocimiento.alumno, sga_reconocimiento.plan_version, cast(null as integer) as instancia, sga_reconocimiento.fecha, cast(null as date) as fecha_vigencia, cast(null as smallint) as folio, cast(null as smallint) as renglon, sga_reconocimiento_act.escala_nota, sga_reconocimiento_act.nota, 'A' as resultado, cast(null as integer) as cond_regularidad, 'A' as estado, cast(null as numeric(5,2)) as pct_asistencia, cast(null as text) as observaciones, sga_escalas_notas_det.descripcion, 'Aprobado' as resultado_descripcion FROM sga_reconocimiento, sga_reconocimiento_act LEFT JOIN sga_escalas_notas_det ON (sga_escalas_notas_det.escala_nota = sga_reconocimiento_act.escala_nota AND sga_escalas_notas_det.nota = sga_reconocimiento_act.nota), sga_elementos, sga_g3entidades_subtipos WHERE sga_reconocimiento_act.nro_tramite = sga_reconocimiento.nro_tramite AND sga_reconocimiento.estado = 'C' -- Cerrado AND sga_reconocimiento_act.reconocimiento_total = 'S' AND sga_elementos.elemento = sga_reconocimiento_act.elemento AND sga_g3entidades_subtipos.entidad_subtipo = sga_elementos.entidad_subtipo AND sga_g3entidades_subtipos.entidad_tipo = 2 -- Actividades ; -- ++++++++++++++++++++++++++++++ Fin view vw_hist_academica +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_hist_academica to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_asignaciones -- Secuencia: sga_asignaciones_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_asignaciones_seq; CREATE SEQUENCE sga_asignaciones_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_asignaciones_tipos -- Secuencia: sga_asignaciones_tipos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_asignaciones_tipos_seq; CREATE SEQUENCE sga_asignaciones_tipos_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_motivos_inval -- Secuencia: sga_clases_motivos_inval_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_clases_motivos_inval_seq; CREATE SEQUENCE sga_clases_motivos_inval_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases -- Secuencia: sga_clases_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_clases_seq; CREATE SEQUENCE sga_clases_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_comisiones_bh -- Secuencia: sga_comisiones_bh_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_comisiones_bh_seq; CREATE SEQUENCE sga_comisiones_bh_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_asignaciones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_asignaciones; CREATE TABLE sga_asignaciones ( asignacion INTEGER NOT NULL DEFAULT nextval('sga_asignaciones_seq'::text) , dia_semana Varchar(10), fecha_desde Date NOT NULL, fecha_hasta Date NOT NULL, periodicidad Varchar(10) NOT NULL DEFAULT 'Semanal', hora_inicio Time, hora_finalizacion Time, cantidad_horas Numeric(5,2), asignacion_tipo Integer NOT NULL, espacio Integer, observaciones Varchar(100) ); -- ALTER TABLE sga_asignaciones DROP CONSTRAINT pk_sga_asignaciones; ALTER TABLE sga_asignaciones ADD CONSTRAINT pk_sga_asignaciones PRIMARY KEY (asignacion); Revoke all ON sga_asignaciones FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_asignaciones +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_asignaciones_tipos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_asignaciones_tipos; CREATE TABLE sga_asignaciones_tipos ( asignacion_tipo INTEGER NOT NULL DEFAULT nextval('sga_asignaciones_tipos_seq'::text) , nombre Varchar(50) NOT NULL ); -- ALTER TABLE sga_asignaciones_tipos DROP CONSTRAINT pk_sga_asignaciones_tipos; ALTER TABLE sga_asignaciones_tipos ADD CONSTRAINT pk_sga_asignaciones_tipos PRIMARY KEY (asignacion_tipo); Revoke all ON sga_asignaciones_tipos FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_asignaciones_tipos +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_clases; CREATE TABLE sga_clases ( clase INTEGER NOT NULL DEFAULT nextval('sga_clases_seq'::text) , banda_horaria Integer NOT NULL, fecha Date NOT NULL, valido Smallint NOT NULL DEFAULT 1, motivo_invalidacion Integer, tema_planificado Text, tema_dictado Text, cantidad_horas_dictadas Numeric(5,2), docente_responsable Integer ); -- ALTER TABLE sga_clases DROP CONSTRAINT pk_sga_clases; ALTER TABLE sga_clases ADD CONSTRAINT pk_sga_clases PRIMARY KEY (clase); Revoke all ON sga_clases FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_clases +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_motivos_inval -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_clases_motivos_inval; CREATE TABLE sga_clases_motivos_inval ( motivo_invalidacion INTEGER NOT NULL DEFAULT nextval('sga_clases_motivos_inval_seq'::text) , nombre Varchar(100) NOT NULL, descripcion Varchar(250) ); -- ALTER TABLE sga_clases_motivos_inval DROP CONSTRAINT pk_sga_clases_motivos_inval; ALTER TABLE sga_clases_motivos_inval ADD CONSTRAINT pk_sga_clases_motivos_inval PRIMARY KEY (motivo_invalidacion); Revoke all ON sga_clases_motivos_inval FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_clases_motivos_inval +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_comisiones_bh -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_comisiones_bh; CREATE TABLE sga_comisiones_bh ( banda_horaria INTEGER NOT NULL DEFAULT nextval('sga_comisiones_bh_seq'::text) , comision Integer NOT NULL, asignacion Integer NOT NULL, tipo_clase Integer NOT NULL ); -- ALTER TABLE sga_comisiones_bh DROP CONSTRAINT pk_sga_comisiones_bh; ALTER TABLE sga_comisiones_bh ADD CONSTRAINT pk_sga_comisiones_bh PRIMARY KEY (banda_horaria); Revoke all ON sga_comisiones_bh FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_comisiones_bh +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_dias_no_laborables -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_dias_no_laborables; CREATE TABLE sga_dias_no_laborables ( fecha Date NOT NULL, descripcion Varchar(200) NOT NULL ); -- ALTER TABLE sga_dias_no_laborables DROP CONSTRAINT pk_sga_dias_no_laborables; ALTER TABLE sga_dias_no_laborables ADD CONSTRAINT pk_sga_dias_no_laborables PRIMARY KEY (fecha); Revoke all ON sga_dias_no_laborables FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_dias_no_laborables +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_subcomisiones_bh -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_subcomisiones_bh; CREATE TABLE sga_subcomisiones_bh ( subcomision Integer NOT NULL, asignacion Integer NOT NULL ); -- ALTER TABLE sga_subcomisiones_bh DROP CONSTRAINT pk_sga_subcomisiones_bh; ALTER TABLE sga_subcomisiones_bh ADD CONSTRAINT pk_sga_subcomisiones_bh PRIMARY KEY (subcomision,asignacion); Revoke all ON sga_subcomisiones_bh FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_subcomisiones_bh +++++++++++++++++++++++++++++ GRANT select ON sga_asignaciones TO public; GRANT update ON sga_asignaciones TO public; GRANT delete ON sga_asignaciones TO public; GRANT insert ON sga_asignaciones TO public; GRANT select ON sga_asignaciones_tipos TO public; GRANT update ON sga_asignaciones_tipos TO public; GRANT delete ON sga_asignaciones_tipos TO public; GRANT insert ON sga_asignaciones_tipos TO public; GRANT select ON sga_clases TO public; GRANT update ON sga_clases TO public; GRANT delete ON sga_clases TO public; GRANT insert ON sga_clases TO public; GRANT select ON sga_clases_motivos_inval TO public; GRANT update ON sga_clases_motivos_inval TO public; GRANT delete ON sga_clases_motivos_inval TO public; GRANT insert ON sga_clases_motivos_inval TO public; GRANT select ON sga_comisiones_bh TO public; GRANT update ON sga_comisiones_bh TO public; GRANT delete ON sga_comisiones_bh TO public; GRANT insert ON sga_comisiones_bh TO public; GRANT select ON sga_dias_no_laborables TO public; GRANT update ON sga_dias_no_laborables TO public; GRANT delete ON sga_dias_no_laborables TO public; GRANT insert ON sga_dias_no_laborables TO public; GRANT select ON sga_subcomisiones_bh TO public; GRANT update ON sga_subcomisiones_bh TO public; GRANT delete ON sga_subcomisiones_bh TO public; GRANT insert ON sga_subcomisiones_bh TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_asignaciones -- Check: ck_sga_asignaciones_dia_semana -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_asignaciones DROP CONSTRAINT ck_sga_asignaciones_dia_semana; ALTER TABLE sga_asignaciones ADD CONSTRAINT ck_sga_asignaciones_dia_semana CHECK (dia_semana IN ('Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado', 'Domingo')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_asignaciones -- Check: ck_sga_asignaciones_periodicidad -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_asignaciones DROP CONSTRAINT ck_sga_asignaciones_periodicidad; ALTER TABLE sga_asignaciones ADD CONSTRAINT ck_sga_asignaciones_periodicidad CHECK (periodicidad IN ('Semanal', 'Quincenal', 'Mensual')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases -- Check: ck_sga_clases_valido -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_clases DROP CONSTRAINT ck_sga_clases_valido; ALTER TABLE sga_clases ADD CONSTRAINT ck_sga_clases_valido CHECK (valido IN (1, 0)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases -- Indice: iu_sga_clases_banda_horaria_clase -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX iu_sga_clases_banda_horaria_clase; CREATE UNIQUE INDEX iu_sga_clases_banda_horaria_clase ON sga_clases (banda_horaria,fecha); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_comisiones_bh -- Indice: iu_sga_comisiones_bandas_horarias -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX iu_sga_comisiones_bandas_horarias; CREATE UNIQUE INDEX iu_sga_comisiones_bandas_horarias ON sga_comisiones_bh (comision,asignacion); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_asignaciones -- FK: fk_sga_asignaciones_sga_asignaciones_tipos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_asignaciones_sga_asignaciones_tipos; CREATE INDEX ifk_sga_asignaciones_sga_asignaciones_tipos ON sga_asignaciones (asignacion_tipo); -- ALTER TABLE sga_asignaciones DROP CONSTRAINT fk_sga_asignaciones_sga_asignaciones_tipos; ALTER TABLE sga_asignaciones ADD CONSTRAINT fk_sga_asignaciones_sga_asignaciones_tipos FOREIGN KEY (asignacion_tipo) REFERENCES sga_asignaciones_tipos (asignacion_tipo) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_asignaciones -- FK: fk_sga_asignaciones_sga_espacios -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_asignaciones_sga_espacios; CREATE INDEX ifk_sga_asignaciones_sga_espacios ON sga_asignaciones (espacio); -- ALTER TABLE sga_asignaciones DROP CONSTRAINT fk_sga_asignaciones_sga_espacios; ALTER TABLE sga_asignaciones ADD CONSTRAINT fk_sga_asignaciones_sga_espacios FOREIGN KEY (espacio) REFERENCES sga_espacios (espacio) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases -- FK: fk_sga_clases_sga_clases_motivos_inval -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_sga_clases_motivos_inval; CREATE INDEX ifk_sga_clases_sga_clases_motivos_inval ON sga_clases (motivo_invalidacion); -- ALTER TABLE sga_clases DROP CONSTRAINT fk_sga_clases_sga_clases_motivos_inval; ALTER TABLE sga_clases ADD CONSTRAINT fk_sga_clases_sga_clases_motivos_inval FOREIGN KEY (motivo_invalidacion) REFERENCES sga_clases_motivos_inval (motivo_invalidacion) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases -- FK: fk_sga_clases_sga_comisiones_bh -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_sga_comisiones_bh; CREATE INDEX ifk_sga_clases_sga_comisiones_bh ON sga_clases (banda_horaria); -- ALTER TABLE sga_clases DROP CONSTRAINT fk_sga_clases_sga_comisiones_bh; ALTER TABLE sga_clases ADD CONSTRAINT fk_sga_clases_sga_comisiones_bh FOREIGN KEY (banda_horaria) REFERENCES sga_comisiones_bh (banda_horaria) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases -- FK: fk_sga_clases_sga_docentes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_sga_docentes; CREATE INDEX ifk_sga_clases_sga_docentes ON sga_clases (docente_responsable); -- ALTER TABLE sga_clases DROP CONSTRAINT fk_sga_clases_sga_docentes; ALTER TABLE sga_clases ADD CONSTRAINT fk_sga_clases_sga_docentes FOREIGN KEY (docente_responsable) REFERENCES sga_docentes (docente) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_comisiones_bh -- FK: fk_sga_comisiones_bh_sga_asignaciones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_comisiones_bh_sga_asignaciones; CREATE INDEX ifk_sga_comisiones_bh_sga_asignaciones ON sga_comisiones_bh (asignacion); -- ALTER TABLE sga_comisiones_bh DROP CONSTRAINT fk_sga_comisiones_bh_sga_asignaciones; ALTER TABLE sga_comisiones_bh ADD CONSTRAINT fk_sga_comisiones_bh_sga_asignaciones FOREIGN KEY (asignacion) REFERENCES sga_asignaciones (asignacion) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_comisiones_bh -- FK: fk_sga_comisiones_bh_sga_clases_tipos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_comisiones_bh_sga_clases_tipos; CREATE INDEX ifk_sga_comisiones_bh_sga_clases_tipos ON sga_comisiones_bh (tipo_clase); -- ALTER TABLE sga_comisiones_bh DROP CONSTRAINT fk_sga_comisiones_bh_sga_clases_tipos; ALTER TABLE sga_comisiones_bh ADD CONSTRAINT fk_sga_comisiones_bh_sga_clases_tipos FOREIGN KEY (tipo_clase) REFERENCES sga_clases_tipos (tipo_clase) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_comisiones_bh -- FK: fk_sga_comisiones_bh_sga_comisiones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_comisiones_bh_sga_comisiones; CREATE INDEX ifk_sga_comisiones_bh_sga_comisiones ON sga_comisiones_bh (comision); -- ALTER TABLE sga_comisiones_bh DROP CONSTRAINT fk_sga_comisiones_bh_sga_comisiones; ALTER TABLE sga_comisiones_bh ADD CONSTRAINT fk_sga_comisiones_bh_sga_comisiones FOREIGN KEY (comision) REFERENCES sga_comisiones (comision) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_subcomisiones_bh -- FK: fk_sga_subcomisiones_bh_sga_asignaciones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_subcomisiones_bh_sga_asignaciones; CREATE INDEX ifk_sga_subcomisiones_bh_sga_asignaciones ON sga_subcomisiones_bh (asignacion); -- ALTER TABLE sga_subcomisiones_bh DROP CONSTRAINT fk_sga_subcomisiones_bh_sga_asignaciones; ALTER TABLE sga_subcomisiones_bh ADD CONSTRAINT fk_sga_subcomisiones_bh_sga_asignaciones FOREIGN KEY (asignacion) REFERENCES sga_asignaciones (asignacion) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_subcomisiones_bh -- FK: fk_sga_subcomisiones_bh_sga_subcomisiones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_subcomisiones_bh_sga_subcomisiones; CREATE INDEX ifk_sga_subcomisiones_bh_sga_subcomisiones ON sga_subcomisiones_bh (subcomision); -- ALTER TABLE sga_subcomisiones_bh DROP CONSTRAINT fk_sga_subcomisiones_bh_sga_subcomisiones; ALTER TABLE sga_subcomisiones_bh ADD CONSTRAINT fk_sga_subcomisiones_bh_sga_subcomisiones FOREIGN KEY (subcomision) REFERENCES sga_subcomisiones (subcomision) on update restrict on delete restrict; INSERT INTO sga_asignaciones_tipos (asignacion_tipo, nombre) VALUES ( 1, 'Comision' ); INSERT INTO sga_asignaciones_tipos (asignacion_tipo, nombre) VALUES ( 2, 'Agente Externo' ); INSERT INTO sga_asignaciones_tipos (asignacion_tipo, nombre) VALUES ( 3, 'Examen' ); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_asignaciones -- Actualizacion Nro de Secuencia: sga_asignaciones_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_asignaciones_seq',(SELECT MAX(asignacion) FROM sga_asignaciones)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_asignaciones_tipos -- Actualizacion Nro de Secuencia: sga_asignaciones_tipos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_asignaciones_tipos_seq',(SELECT MAX(asignacion_tipo) FROM sga_asignaciones_tipos)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_motivos_inval -- Actualizacion Nro de Secuencia: sga_clases_motivos_inval_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_clases_motivos_inval_seq',(SELECT MAX(motivo_invalidacion) FROM sga_clases_motivos_inval)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases -- Actualizacion Nro de Secuencia: sga_clases_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_clases_seq',(SELECT MAX(clase) FROM sga_clases)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_comisiones_bh -- Actualizacion Nro de Secuencia: sga_comisiones_bh_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_comisiones_bh_seq',(SELECT MAX(banda_horaria) FROM sga_comisiones_bh)); INSERT INTO sga_actas_detalle_estado (estado, nombre, descripcion) VALUES ('I','Anulado/Invalidado','Anulado y/o Invalidado'); UPDATE sga_actas_detalle SET estado = 'I' WHERE estado = 'N'; DELETE FROM sga_actas_detalle_estado WHERE estado = 'N'; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha_motivos -- Secuencia: sga_movimientos_ha_motivos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_movimientos_ha_motivos_seq; CREATE SEQUENCE sga_movimientos_ha_motivos_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha -- Secuencia: sga_movimientos_ha_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_movimientos_ha_seq; CREATE SEQUENCE sga_movimientos_ha_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: his_insc_cursada_log -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS his_insc_cursada_log; CREATE TABLE his_insc_cursada_log ( inscripcion Integer NOT NULL, alumno Integer NOT NULL, comision Integer NOT NULL, plan_version Integer NOT NULL, prioridad Smallint NOT NULL DEFAULT 1, fecha_inscripcion Timestamp with time zone NOT NULL, fuera_de_termino Char(1) NOT NULL DEFAULT 'N', nro_transaccion Integer, estado Char(1) NOT NULL, motivo_rechazo Integer, interfaz Smallint, operacion Char(1) NOT NULL, fecha_operacion Timestamp with time zone NOT NULL, nro_transaccion_log Integer ); -- ALTER TABLE his_insc_cursada_log DROP CONSTRAINT pk_his_insc_cursada_log; ALTER TABLE his_insc_cursada_log ADD CONSTRAINT pk_his_insc_cursada_log PRIMARY KEY (inscripcion); Revoke all ON his_insc_cursada_log FROM public; -- ++++++++++++++++++++++++++ Fin tabla his_insc_cursada_log +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: his_insc_examen_log -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS his_insc_examen_log; CREATE TABLE his_insc_examen_log ( inscripcion Integer NOT NULL, alumno Integer NOT NULL, llamado_mesa Integer NOT NULL, plan_version Integer NOT NULL, instancia Smallint NOT NULL, fecha_inscripcion Timestamp with time zone NOT NULL, nro_transaccion Integer, estado Char(1) NOT NULL, motivo_rechazo Integer, interfaz Smallint, operacion Char(1) NOT NULL, fecha_operacion Timestamp with time zone NOT NULL, nro_transaccion_log Integer ); -- ALTER TABLE his_insc_examen_log DROP CONSTRAINT pk_his_insc_examen_log; ALTER TABLE his_insc_examen_log ADD CONSTRAINT pk_his_insc_examen_log PRIMARY KEY (inscripcion); Revoke all ON his_insc_examen_log FROM public; -- ++++++++++++++++++++++++++ Fin tabla his_insc_examen_log +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_movimientos_ha; CREATE TABLE sga_movimientos_ha ( movimiento INTEGER NOT NULL DEFAULT nextval('sga_movimientos_ha_seq'::text) , fecha Timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, motivo_movimiento Integer NOT NULL, equivalencia Integer, id_acta Integer, alumno Integer, nro_resolucion Varchar(30), responsable Integer, observaciones Varchar(250) ); -- ALTER TABLE sga_movimientos_ha DROP CONSTRAINT pk_sga_movimientos_ha; ALTER TABLE sga_movimientos_ha ADD CONSTRAINT pk_sga_movimientos_ha PRIMARY KEY (movimiento); Revoke all ON sga_movimientos_ha FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_movimientos_ha +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha_motivos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_movimientos_ha_motivos; CREATE TABLE sga_movimientos_ha_motivos ( motivo_movimiento INTEGER NOT NULL DEFAULT nextval('sga_movimientos_ha_motivos_seq'::text) , nombre Varchar(50) NOT NULL, descripcion Varchar(255), estado_nota Char(1) NOT NULL ); -- ALTER TABLE sga_movimientos_ha_motivos DROP CONSTRAINT pk_sga_movimientos_ha_motivos; ALTER TABLE sga_movimientos_ha_motivos ADD CONSTRAINT pk_sga_movimientos_ha_motivos PRIMARY KEY (motivo_movimiento); Revoke all ON sga_movimientos_ha_motivos FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_movimientos_ha_motivos +++++++++++++++++++++++++++++ GRANT select ON his_insc_cursada_log TO public; GRANT update ON his_insc_cursada_log TO public; GRANT delete ON his_insc_cursada_log TO public; GRANT insert ON his_insc_cursada_log TO public; GRANT select ON his_insc_examen_log TO public; GRANT update ON his_insc_examen_log TO public; GRANT delete ON his_insc_examen_log TO public; GRANT insert ON his_insc_examen_log TO public; GRANT select ON sga_movimientos_ha TO public; GRANT update ON sga_movimientos_ha TO public; GRANT delete ON sga_movimientos_ha TO public; GRANT insert ON sga_movimientos_ha TO public; GRANT select ON sga_movimientos_ha_motivos TO public; GRANT update ON sga_movimientos_ha_motivos TO public; GRANT delete ON sga_movimientos_ha_motivos TO public; GRANT insert ON sga_movimientos_ha_motivos TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: his_insc_cursada_log -- Check: ck_his_insc_cursada_log_fuera_de_termino -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE his_insc_cursada_log DROP CONSTRAINT ck_his_insc_cursada_log_fuera_de_termino; ALTER TABLE his_insc_cursada_log ADD CONSTRAINT ck_his_insc_cursada_log_fuera_de_termino CHECK (fuera_de_termino IN ('S','N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: his_insc_cursada_log -- Check: ck_his_insc_cursada_log_operacion -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE his_insc_cursada_log DROP CONSTRAINT ck_his_insc_cursada_log_operacion; ALTER TABLE his_insc_cursada_log ADD CONSTRAINT ck_his_insc_cursada_log_operacion CHECK (operacion IN ('R','B')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: his_insc_examen_log -- Check: ck_his_insc_examen_log_operacion -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE his_insc_examen_log DROP CONSTRAINT ck_his_insc_examen_log_operacion; ALTER TABLE his_insc_examen_log ADD CONSTRAINT ck_his_insc_examen_log_operacion CHECK (operacion IN ('R','B')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha_motivos -- Check: ck_sga_movimientos_ha_motivos_estado_nota -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_movimientos_ha_motivos DROP CONSTRAINT ck_sga_movimientos_ha_motivos_estado_nota; ALTER TABLE sga_movimientos_ha_motivos ADD CONSTRAINT ck_sga_movimientos_ha_motivos_estado_nota CHECK (estado_nota IN ('A','I', 'B')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha -- FK: fk_sga_movimientos_ha_mdp_personas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_movimientos_ha_mdp_personas; CREATE INDEX ifk_sga_movimientos_ha_mdp_personas ON sga_movimientos_ha (responsable); -- ALTER TABLE sga_movimientos_ha DROP CONSTRAINT fk_sga_movimientos_ha_mdp_personas; ALTER TABLE sga_movimientos_ha ADD CONSTRAINT fk_sga_movimientos_ha_mdp_personas FOREIGN KEY (responsable) REFERENCES mdp_personas (persona) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha -- FK: fk_sga_movimientos_ha_sga_actas_detalle -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_movimientos_ha_sga_actas_detalle; CREATE INDEX ifk_sga_movimientos_ha_sga_actas_detalle ON sga_movimientos_ha (id_acta,alumno); -- ALTER TABLE sga_movimientos_ha DROP CONSTRAINT fk_sga_movimientos_ha_sga_actas_detalle; ALTER TABLE sga_movimientos_ha ADD CONSTRAINT fk_sga_movimientos_ha_sga_actas_detalle FOREIGN KEY (id_acta,alumno) REFERENCES sga_actas_detalle (id_acta,alumno) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha -- FK: fk_sga_movimientos_ha_sga_equiv_otorgada -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_movimientos_ha_sga_equiv_otorgada; CREATE INDEX ifk_sga_movimientos_ha_sga_equiv_otorgada ON sga_movimientos_ha (equivalencia); -- ALTER TABLE sga_movimientos_ha DROP CONSTRAINT fk_sga_movimientos_ha_sga_equiv_otorgada; ALTER TABLE sga_movimientos_ha ADD CONSTRAINT fk_sga_movimientos_ha_sga_equiv_otorgada FOREIGN KEY (equivalencia) REFERENCES sga_equiv_otorgada (equivalencia) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha -- FK: fk_sga_movimientos_ha_sga_movimientos_ha_motivos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_movimientos_ha_sga_movimientos_ha_motivos; CREATE INDEX ifk_sga_movimientos_ha_sga_movimientos_ha_motivos ON sga_movimientos_ha (motivo_movimiento); -- ALTER TABLE sga_movimientos_ha DROP CONSTRAINT fk_sga_movimientos_ha_sga_movimientos_ha_motivos; ALTER TABLE sga_movimientos_ha ADD CONSTRAINT fk_sga_movimientos_ha_sga_movimientos_ha_motivos FOREIGN KEY (motivo_movimiento) REFERENCES sga_movimientos_ha_motivos (motivo_movimiento) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha_motivos -- Actualizacion Nro de Secuencia: sga_movimientos_ha_motivos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_movimientos_ha_motivos_seq',(SELECT MAX(motivo_movimiento) FROM sga_movimientos_ha_motivos)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha -- Actualizacion Nro de Secuencia: sga_movimientos_ha_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_movimientos_ha_seq',(SELECT MAX(movimiento) FROM sga_movimientos_ha)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha_motivos -- Actualizacion Nro de Secuencia: sga_movimientos_ha_motivos_seq -- SIU: 1 a 100 -- Institucion: 101 en adelante -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_movimientos_ha_motivos_seq',100); ALTER TABLE sga_llamados_mesa ADD COLUMN espacio Integer; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_llamados_mesa -- FK: fk_sga_llamados_mesa_sga_espacios -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_llamados_mesa_sga_espacios; CREATE INDEX ifk_sga_llamados_mesa_sga_espacios ON sga_llamados_mesa (espacio); -- ALTER TABLE sga_llamados_mesa DROP CONSTRAINT fk_sga_llamados_mesa_sga_espacios; ALTER TABLE sga_llamados_mesa ADD CONSTRAINT fk_sga_llamados_mesa_sga_espacios FOREIGN KEY (espacio) REFERENCES sga_espacios (espacio) on update restrict on delete restrict; ALTER TABLE sga_certificados ALTER COLUMN acreditado_coneau DROP NOT NULL; ALTER TABLE sga_certificados ALTER COLUMN acreditado_coneau DROP DEFAULT; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_anio_academico_actual() -- Recupera el año académico actual. -- -- Recibe: Nada. -- Retorna: Integer: Año academico -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_anio_academico_actual(); CREATE OR REPLACE FUNCTION f_anio_academico_actual() RETURNS integer AS $BODY$ -- Variables locales DECLARE _anio integer; DECLARE _dFecha date; BEGIN _dFecha := CURRENT_DATE; _anio := NULL; -- Busca el año académico correspondiente a la fecha SELECT anio_academico INTO _anio FROM sga_anios_academicos WHERE _dFecha BETWEEN fecha_inicio AND fecha_fin; RETURN _anio; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_anio_academico_actual() ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_anio_academico_actual () FROM public; GRANT EXECUTE ON FUNCTION f_anio_academico_actual() TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_pasar_inscripciones_a_historico -- -- Pasa inscripciones a examenes y cursadas a tablas historicas. -- Solo permite pasar inscripciones de años academicos anteriores -- -- Recibe: -- 1.- Integer: Año académico -- 2.- Smallint: Pasar inscripciones a cursadas (Valores: 1-Pasar / 0-No pasar) -- 2.- Smallint: Pasar inscripciones a examenes (Valores: 1-Pasar / 0-No pasar) -- -- Retorna: Integer: -1 - No paso inscripciones. Año académico no válido / 1 - Paso inscripciones. -- -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_pasar_inscripciones_a_historico(integer, smallint, smallint); CREATE OR REPLACE FUNCTION f_pasar_inscripciones_a_historico(_anio_academico integer, _cursadas smallint, _examenes smallint) RETURNS INTEGER AS $BODY$ DECLARE _anio_actual integer; BEGIN --Verifico que el año académico sea un año anterior al actual _anio_actual := f_anio_academico_actual(); IF _anio_academico >= _anio_actual THEN -- El año académico debe ser menor al año académico actual. RETURN -1; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- INSCRIPCIONES A EXAMENES -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF _examenes = 1 THEN -- Inscripciones aceptadas/pendientes/exceptuadas INSERT INTO his_insc_examen (inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, interfaz, estado) SELECT i.inscripcion, i.alumno, i.llamado_mesa, i.plan_version, i.instancia, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.interfaz, i.estado FROM sga_insc_examen as i, sga_llamados_mesa as llm, sga_llamados as ll, sga_periodos as p WHERE i.llamado_mesa = llm.llamado_mesa AND ll.mesa_examen = llm.mesa_examen AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; /* -- Requisitos que fallaron en los rechazos de inscripciones a examenes INSERT INTO his_insc_examen_log_requisitos (inscripcion_requisito, inscripcion, tipo, entidad, requisito, estado, regla, parametros) SELECT a.inscripcion_requisito, a.inscripcion, a.tipo, a.entidad, a.requisito, a.estado, a.regla, a.parametros FROM sga_insc_examen_log_requisitos as a, sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados as ll, sga_periodos as p WHERE i.inscripcion = a.inscripcion AND llm.llamado_mesa = i.llamado_mesa AND ll.mesa_examen = llm.mesa_examen AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; */ -- inscripciones dadas de baja o rechazadas INSERT INTO his_insc_examen_log (inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, nro_transaccion, estado, motivo_rechazo, interfaz, operacion, fecha_operacion, nro_transaccion_log) SELECT i.inscripcion, i.alumno, i.llamado_mesa, i.plan_version, i.instancia, i.fecha_inscripcion, i.nro_transaccion, i.estado, i.motivo_rechazo, i.interfaz, i.operacion, i.fecha_operacion, i.nro_transaccion_log FROM sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados as ll, sga_periodos as p WHERE llm.llamado_mesa = i.llamado_mesa AND ll.mesa_examen = llm.mesa_examen AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- INSCRIPCIONES A CURSADAS -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF _cursadas = 1 THEN -- Inscripcion a subcomisiones INSERT INTO his_insc_subcomision (inscripcion, subcomision) SELECT s.inscripcion, s.subcomision FROM sga_insc_subcomision as s, sga_insc_cursada as i, sga_comisiones as c WHERE s.inscripcion = i.inscripcion AND i.comision = c.comision AND c.anio_academico = _anio_academico; -- Instancias de la inscripcion INSERT INTO his_insc_cursada_instancias (inscripcion, instancia) SELECT s.inscripcion, s.instancia FROM sga_insc_cursada_instancias as s, sga_insc_cursada as i, sga_comisiones as c WHERE s.inscripcion = i.inscripcion AND i.comision = c.comision AND c.anio_academico = _anio_academico; -- Inscripciones a cursadas INSERT INTO his_insc_cursada (inscripcion, comision, alumno, tipo, prioridad, estado_preinscripcion, plan_version, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, interfaz, estado) SELECT i.inscripcion, i.comision, i.alumno, i.tipo, i.prioridad, i.estado_preinscripcion, i.plan_version, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.interfaz, i.estado FROM sga_insc_cursada as i, sga_comisiones as c WHERE i.comision = c.comision AND c.anio_academico = _anio_academico; /* -- Bajas y Rechazos de Inscripciones INSERT INTO his_insc_cursada_log_requisitos (inscripcion_requisito, inscripcion, tipo, entidad, requisito, estado, regla, parametros) SELECT r.inscripcion_requisito, r.inscripcion, r.tipo, r.entidad, r.requisito, r.estado, r.regla, r.parametros FROM sga_ins_cursada_log_requisitos as r, sga_insc_cursada_log as i, sga_comisiones as c WHERE i.inscripcion = r.inscripcion AND c.comision = i.comision AND c.anio_academico = _anio_academico; */ -- Bajas y Rechazos de Inscripciones INSERT INTO his_insc_cursada_log (inscripcion, alumno, comision, plan_version, prioridad, fecha_inscripcion, fuera_de_termino, nro_transaccion, estado, motivo_rechazo, interfaz, operacion, fecha_operacion, nro_transaccion_log) SELECT i.inscripcion, i.alumno, i.comision, i.plan_version, i.prioridad, i.fecha_inscripcion, i.fuera_de_termino, i.nro_transaccion, i.estado, i.motivo_rechazo, i.interfaz, i.operacion, i.fecha_operacion, i.nro_transaccion_log FROM sga_insc_cursada_log as i, sga_comisiones as c WHERE i.comision = c.comision AND c.anio_academico = _anio_academico; END IF; -- OK. Inscripciones pasadas. RETURN 1; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- REVOKE EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico FROM public; GRANT EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico(integer, smallint, smallint) TO public; -- ++++++++++++++++++++++++++ Fin Function f_pasar_inscripciones_a_historico +++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_insc_cursada_log_requisitos -- Secuencia: sga_insc_cursada_log_requisitos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_insc_cursada_log_requisitos_seq; CREATE SEQUENCE sga_insc_cursada_log_requisitos_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: his_insc_cursada_log_requisitos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS his_insc_cursada_log_requisitos; CREATE TABLE his_insc_cursada_log_requisitos ( inscripcion_requisito Integer NOT NULL, inscripcion Integer NOT NULL, tipo Char(1) NOT NULL, entidad Integer, requisito Integer, estado Char(1), regla Integer, parametros Varchar(100) ); -- ALTER TABLE his_insc_cursada_log_requisitos DROP CONSTRAINT pk_his_insc_cursada_log_requisitos; ALTER TABLE his_insc_cursada_log_requisitos ADD CONSTRAINT pk_his_insc_cursada_log_requisitos PRIMARY KEY (inscripcion_requisito); Revoke all ON his_insc_cursada_log_requisitos FROM public; -- ++++++++++++++++++++++++++ Fin tabla his_insc_cursada_log_requisitos +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: his_insc_examen_log_requisitos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS his_insc_examen_log_requisitos; CREATE TABLE his_insc_examen_log_requisitos ( inscripcion_requisito Integer NOT NULL, inscripcion Integer NOT NULL, tipo Char(1) NOT NULL, entidad Integer, requisito Integer, estado Char(1), regla Integer, parametros Varchar(100) ); -- ALTER TABLE his_insc_examen_log_requisitos DROP CONSTRAINT pk_his_insc_examen_log_requisitos; ALTER TABLE his_insc_examen_log_requisitos ADD CONSTRAINT pk_his_insc_examen_log_requisitos PRIMARY KEY (inscripcion_requisito); Revoke all ON his_insc_examen_log_requisitos FROM public; -- ++++++++++++++++++++++++++ Fin tabla his_insc_examen_log_requisitos +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_insc_cursada_log_requisitos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_insc_cursada_log_requisitos; CREATE TABLE sga_insc_cursada_log_requisitos ( inscripcion_requisito INTEGER NOT NULL DEFAULT nextval('sga_insc_cursada_log_requisitos_seq'::text) , tipo Char(1) NOT NULL, entidad Integer, requisito Integer, estado Char(1), regla Integer, parametros Varchar(100), inscripcion Integer NOT NULL ); -- ALTER TABLE sga_insc_cursada_log_requisitos DROP CONSTRAINT pk_sga_insc_cursada_log_requisitos; ALTER TABLE sga_insc_cursada_log_requisitos ADD CONSTRAINT pk_sga_insc_cursada_log_requisitos PRIMARY KEY (inscripcion_requisito); Revoke all ON sga_insc_cursada_log_requisitos FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_insc_cursada_log_requisitos +++++++++++++++++++++++++++++ GRANT select ON his_insc_cursada_log_requisitos TO public; GRANT update ON his_insc_cursada_log_requisitos TO public; GRANT delete ON his_insc_cursada_log_requisitos TO public; GRANT insert ON his_insc_cursada_log_requisitos TO public; GRANT select ON his_insc_examen_log_requisitos TO public; GRANT update ON his_insc_examen_log_requisitos TO public; GRANT delete ON his_insc_examen_log_requisitos TO public; GRANT insert ON his_insc_examen_log_requisitos TO public; GRANT select ON sga_insc_cursada_log_requisitos TO public; GRANT update ON sga_insc_cursada_log_requisitos TO public; GRANT delete ON sga_insc_cursada_log_requisitos TO public; GRANT insert ON sga_insc_cursada_log_requisitos TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: his_insc_cursada_log_requisitos -- Check: ck_his_insc_cursada_log_requisitos_tipo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE his_insc_cursada_log_requisitos DROP CONSTRAINT ck_his_insc_cursada_log_requisitos_tipo; ALTER TABLE his_insc_cursada_log_requisitos ADD CONSTRAINT ck_his_insc_cursada_log_requisitos_tipo CHECK (tipo IN ('R','E')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: his_insc_examen_log_requisitos -- Check: ck_his_insc_examen_log_requisitos_tipo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE his_insc_examen_log_requisitos DROP CONSTRAINT ck_his_insc_examen_log_requisitos_tipo; ALTER TABLE his_insc_examen_log_requisitos ADD CONSTRAINT ck_his_insc_examen_log_requisitos_tipo CHECK (tipo IN ('R','E')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_insc_cursada_log_requisitos -- Check: ck_sga_insc_cursada_log_requisitos_tipo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_insc_cursada_log_requisitos DROP CONSTRAINT ck_sga_insc_cursada_log_requisitos_tipo; ALTER TABLE sga_insc_cursada_log_requisitos ADD CONSTRAINT ck_sga_insc_cursada_log_requisitos_tipo CHECK (tipo IN ('R','E')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_insc_cursada_log_requisitos -- FK: fk_sga_insc_cursada_log_requisitos_sga_insc_cursada_log -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_insc_cursada_log_requisitos_sga_insc_cursada_log; CREATE INDEX ifk_sga_insc_cursada_log_requisitos_sga_insc_cursada_log ON sga_insc_cursada_log_requisitos (inscripcion); -- ALTER TABLE sga_insc_cursada_log_requisitos DROP CONSTRAINT fk_sga_insc_cursada_log_requisitos_sga_insc_cursada_log; ALTER TABLE sga_insc_cursada_log_requisitos ADD CONSTRAINT fk_sga_insc_cursada_log_requisitos_sga_insc_cursada_log FOREIGN KEY (inscripcion) REFERENCES sga_insc_cursada_log (inscripcion) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_insc_cursada_log_requisitos -- Actualizacion Nro de Secuencia: sga_insc_cursada_log_requisitos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_insc_cursada_log_requisitos_seq',(SELECT MAX(inscripcion_requisito) FROM sga_insc_cursada_log_requisitos)); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_pasar_inscripciones_a_historico -- -- Pasa inscripciones a examenes y cursadas a tablas historicas. -- Solo permite pasar inscripciones de años academicos anteriores -- -- Recibe: -- 1.- Integer: Año académico -- 2.- Smallint: Pasar inscripciones a cursadas (Valores: 1-Pasar / 0-No pasar) -- 2.- Smallint: Pasar inscripciones a examenes (Valores: 1-Pasar / 0-No pasar) -- -- Retorna: Integer: -1 - No paso inscripciones. Año académico no válido / 1 - Paso inscripciones. -- -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_pasar_inscripciones_a_historico(integer, smallint, smallint); CREATE OR REPLACE FUNCTION f_pasar_inscripciones_a_historico(_anio_academico integer, _cursadas smallint, _examenes smallint) RETURNS INTEGER AS $BODY$ DECLARE _anio_actual integer; BEGIN --Verifico que el año académico sea un año anterior al actual _anio_actual := f_anio_academico_actual(); IF _anio_academico >= _anio_actual THEN -- El año académico debe ser menor al año académico actual. RETURN -1; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- INSCRIPCIONES A EXAMENES -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF _examenes = 1 THEN -- Inscripciones aceptadas/pendientes/exceptuadas INSERT INTO his_insc_examen (inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, interfaz, estado) SELECT i.inscripcion, i.alumno, i.llamado_mesa, i.plan_version, i.instancia, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.interfaz, i.estado FROM sga_insc_examen as i, sga_llamados_mesa as llm, sga_llamados as ll, sga_periodos as p WHERE i.llamado_mesa = llm.llamado_mesa AND ll.mesa_examen = llm.mesa_examen AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; DELETE FROM sga_insc_examen WHERE inscripcion IN ( SELECT i.inscripcion FROM his_insc_examen as i, sga_llamados_mesa as llm, sga_llamados as ll, sga_periodos as p WHERE i.llamado_mesa = llm.llamado_mesa AND ll.mesa_examen = llm.mesa_examen AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); -- Requisitos que fallaron en los rechazos de inscripciones a examenes INSERT INTO his_insc_examen_log_requisitos (inscripcion_requisito, inscripcion, tipo, entidad, requisito, estado, regla, parametros) SELECT a.inscripcion_requisito, a.inscripcion, a.tipo, a.entidad, a.requisito, a.estado, a.regla, a.parametros FROM sga_insc_examen_log_requisitos as a, sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados as ll, sga_periodos as p WHERE i.inscripcion = a.inscripcion AND llm.llamado_mesa = i.llamado_mesa AND ll.mesa_examen = llm.mesa_examen AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; DELETE FROM sga_insc_examen_log_requisitos WHERE inscripcion_requisito IN ( SELECT h.inscripcion_requisito FROM his_insc_examen_log_requisitos as h, sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados as ll, sga_periodos as p WHERE i.inscripcion = a.inscripcion AND llm.llamado_mesa = i.llamado_mesa AND ll.mesa_examen = llm.mesa_examen AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); -- inscripciones dadas de baja o rechazadas INSERT INTO his_insc_examen_log (inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, nro_transaccion, estado, motivo_rechazo, interfaz, operacion, fecha_operacion, nro_transaccion_log) SELECT i.inscripcion, i.alumno, i.llamado_mesa, i.plan_version, i.instancia, i.fecha_inscripcion, i.nro_transaccion, i.estado, i.motivo_rechazo, i.interfaz, i.operacion, i.fecha_operacion, i.nro_transaccion_log FROM sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados as ll, sga_periodos as p WHERE llm.llamado_mesa = i.llamado_mesa AND ll.mesa_examen = llm.mesa_examen AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; DELETE FROM sga_insc_examen_log WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_examen_log as h, sga_llamados_mesa as llm, sga_llamados as ll, sga_periodos as p WHERE llm.llamado_mesa = h.llamado_mesa AND ll.mesa_examen = llm.mesa_examen AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- INSCRIPCIONES A CURSADAS -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF _cursadas = 1 THEN -- Inscripcion a subcomisiones INSERT INTO his_insc_subcomision (inscripcion, subcomision) SELECT s.inscripcion, s.subcomision FROM sga_insc_subcomision as s, sga_insc_cursada as i, sga_comisiones as c WHERE s.inscripcion = i.inscripcion AND i.comision = c.comision AND c.anio_academico = _anio_academico; DELETE FROM sga_insc_subcomision WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_subcomision as h, sga_insc_cursada as i, sga_comisiones as c WHERE h.inscripcion = i.inscripcion AND i.comision = c.comision AND c.anio_academico = _anio_academico); -- Instancias de la inscripcion INSERT INTO his_insc_cursada_instancias (inscripcion, instancia) SELECT s.inscripcion, s.instancia FROM sga_insc_cursada_instancias as s, sga_insc_cursada as i, sga_comisiones as c WHERE s.inscripcion = i.inscripcion AND i.comision = c.comision AND c.anio_academico = _anio_academico; DELETE FROM sga_insc_cursada_instancias WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada_instancias as h, sga_insc_cursada as i, sga_comisiones as c WHERE h.inscripcion = i.inscripcion AND i.comision = c.comision AND c.anio_academico = _anio_academico); -- Inscripciones a cursadas INSERT INTO his_insc_cursada (inscripcion, comision, alumno, tipo, prioridad, estado_preinscripcion, plan_version, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, interfaz, estado) SELECT i.inscripcion, i.comision, i.alumno, i.tipo, i.prioridad, i.estado_preinscripcion, i.plan_version, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.interfaz, i.estado FROM sga_insc_cursada as i, sga_comisiones as c WHERE i.comision = c.comision AND c.anio_academico = _anio_academico; DELETE FROM sga_insc_cursada WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada as h, sga_comisiones as c WHERE c.comision = h.comision AND c.anio_academico = _anio_academico); -- Requisitos relacionados con los rechazos de Inscripciones INSERT INTO his_insc_cursada_log_requisitos (inscripcion_requisito, inscripcion, tipo, entidad, requisito, estado, regla, parametros) SELECT r.inscripcion_requisito, r.inscripcion, r.tipo, r.entidad, r.requisito, r.estado, r.regla, r.parametros FROM sga_ins_cursada_log_requisitos as r, sga_insc_cursada_log as i, sga_comisiones as c WHERE i.inscripcion = r.inscripcion AND c.comision = i.comision AND c.anio_academico = _anio_academico; DELETE FROM sga_insc_cursada_log_requisitos WHERE inscripcion_requisito IN ( SELECT h.inscripcion_requisito FROM sga_ins_cursada_log_requisitos as h, sga_insc_cursada_log as i, sga_comisiones as c WHERE i.inscripcion = h.inscripcion AND c.comision = i.comision AND c.anio_academico = _anio_academico); -- Bajas y Rechazos de Inscripciones INSERT INTO his_insc_cursada_log (inscripcion, alumno, comision, plan_version, prioridad, fecha_inscripcion, fuera_de_termino, nro_transaccion, estado, motivo_rechazo, interfaz, operacion, fecha_operacion, nro_transaccion_log) SELECT i.inscripcion, i.alumno, i.comision, i.plan_version, i.prioridad, i.fecha_inscripcion, i.fuera_de_termino, i.nro_transaccion, i.estado, i.motivo_rechazo, i.interfaz, i.operacion, i.fecha_operacion, i.nro_transaccion_log FROM sga_insc_cursada_log as i, sga_comisiones as c WHERE i.comision = c.comision AND c.anio_academico = _anio_academico; DELETE FROM sga_insc_cursada_log WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada_log as h, sga_comisiones as c WHERE c.comision = h.comision AND c.anio_academico = _anio_academico); END IF; -- OK. Inscripciones pasadas. RETURN 1; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- REVOKE EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico FROM public; GRANT EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico(integer, smallint, smallint) TO public; -- ++++++++++++++++++++++++++ Fin Function f_pasar_inscripciones_a_historico +++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_actividades_con_comisiones_vigentes -- -- Chequea si existe un período de inscripción vigente para la fecha actual -- -- Recibe: -- 1. ID de la Version de Plan (del alumno) -- 2. Dentro de un período de inscripción activo: true - Si / false - No -- 3. Si parámetro "exa_rinde_en_cualquier_ubicacion" = 'N' entonces recibe la ubicacion del alumno (sga_alumnos.ubicacion) -- -- Retorna: Lista de Actividades -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version -- DROP FUNCTION f_actividades_con_comisiones_vigentes(integer, boolean, integer); CREATE OR REPLACE FUNCTION f_actividades_con_comisiones_vigentes(_plan_version integer, _en_periodo_insc boolean, _ubicacion integer) RETURNS SETOF integer AS $BODY$ DECLARE cur_actividad RECORD; BEGIN /* Parametros: 1. Version de Plan del Alumno 2. Si debe estar dentro de un período de inscripción activo de mesas futuras 3. Si solo rinde en la ubicacion del alumno, recibe la ubicacion. */ -- Creo tabla temporal CREATE TEMP TABLE tmp_comisiones ( comision integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp, elemento integer); -- lleno tabla temporal con actividades que tienen comisiones: -- Con inscripción habilitada -- Con períodos de inscripcion definidos y habilitados -- Con la misma ubicacion del alumno, si el parametro indica que solo puede cursar en su ubicación. INSERT INTO tmp_comisiones (comision, elemento, periodo_insc, fecha_inicio, fecha_fin, periodo_inscripcion) SELECT sga_comisiones.comision, sga_comisiones.elemento, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.periodo_inscripcion FROM sga_comisiones, sga_periodos_lectivos, sga_periodos, sga_periodos_inscripcion, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_comisiones.inscripcion_habilitada = 'S' AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_periodos.periodo = sga_periodos_lectivos.periodo AND sga_periodos.fecha_fin >= CURENT_DATE AND sga_periodos_inscripcion.periodo = sga_periodos_lectivos.periodo AND sga_periodos_inscripcion_fechas.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _plan_version AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_comisiones.ubicacion AND (_ubicacion IS NULL OR (_ubicacion IS NOT NULL AND sga_comisiones.ubicacion = _ubicacion)); FOR cur_actividad IN ( SELECT t.elemento as elemento FROM tmp_comisiones as t LEFT JOIN sga_comisiones_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.comision = t.comision WHERE ((-- fecha y hora actual se encuentre en un período de inscripcion _en_periodo_insc = true AND CURRENT_DATE BETWEEN COALESCE(sga_comisiones_excep_perinsc.fecha_inicio, t.fecha_inicio) AND COALESCE(sga_comisiones_excep_perinsc.fecha_fin, t.fecha_fin) ) OR (-- fecha y hora actual fuera del período de inscripcion _en_periodo_insc = true AND CURRENT_DATE > COALESCE(sga_comisiones_excep_perinsc.fecha_fin, t.fecha_fin) ) ) -- Modalidad de cursada AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_comisiones_modalidad WHERE sga_comisiones_modalidad.comision = t.comision) ) ) LOOP -- Retorno la actividad que tiene mesa con periodo de insc vigente en este momento. RETURN NEXT cur_actividad.elemento; END LOOP; -- Borro tabla temporal DROP TABLE tmp_comisiones; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- REVOKE EXECUTE ON FUNCTION f_actividades_con_comisiones_vigentes FROM public; GRANT EXECUTE ON FUNCTION f_actividades_con_comisiones_vigentes(integer, boolean, integer) TO public; -- ++++++++++++++++++++++++++ Fin Function f_actividades_con_comisiones_vigentes +++++++++++++++++++++++++++++++++++++++-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_actividades_con_mesas_vigentes -- -- Recupera actividades que tienen mesas de examen con: -- - Fecha mayor o igual a la fecha actual. -- - Períodos de inscripcion vigentes y habilitados -- - Periodos de inscripcion definidos para la version del plan de estudios pasado por parametro -- y para la ubicación y modalidad de la mesa de examen. -- -- Recibe: -- 1. ID de la Version de Plan (del alumno) -- 2. Dentro de un período de inscripción activo: true - Si / false - No -- 3. Si parámetro "exa_rinde_en_cualquier_ubicacion" = 'N' entonces recibe la ubicacion del alumno (sga_alumnos.ubicacion) -- Retorna: -- 1. Integer: ID de las actividades que tienen mesas de examen. (sga_elementos.elemento) -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version. -- DROP FUNCTION f_actividades_con_mesas_vigentes(integer, boolean, integer); CREATE OR REPLACE FUNCTION f_actividades_con_mesas_vigentes(_id_plan_version integer, _en_periodo_insc boolean, _ubicacion integer) RETURNS SETOF INTEGER AS $BODY$ DECLARE cur_actividad RECORD; BEGIN /* Parametros: 1. Version de Plan del Alumno 2. Si debe estar dentro de un período de inscripción activo de mesas futuras 3. Si solo rinde en la ubicacion del alumno, recibe la ubicacion. */ -- Creo tabla temporal CREATE TEMP TABLE tmp_llamados ( llamado_mesa integer, mesa_examen integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp, hs_previas_fin smallint, elemento integer); -- lleno tabla temporal con actividades que tienen mesas de examen con fecha igual o mayor a la actual -- y segun parametro que define que la mesa sea de la ubicación del alumno. INSERT INTO tmp_llamados (mesa_examen, elemento, llamado_mesa, periodo_insc, fecha_inicio, fecha_fin, hs_previas_fin, periodo_inscripcion) SELECT sga_mesas_examen.mesa_examen, sga_mesas_examen.elemento, sga_llamados_mesa.llamado_mesa, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.hs_previas_fin, sga_periodos_inscripcion_fechas.periodo_inscripcion FROM sga_llamados_mesa, sga_llamados_turno, sga_mesas_examen, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_llamados_mesa.fecha >= CURRENT_DATE AND sga_llamados_mesa.mesa_examen = sga_mesas_examen.mesa_examen AND sga_llamados_turno.llamado = sga_llamados_mesa.llamado AND sga_periodos_inscripcion.periodo = sga_llamados_turno.periodo AND sga_periodos_inscripcion.periodo_inscripcion = sga_periodos_inscripcion_fechas.periodo_inscripcion AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _id_plan_version AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_mesas_examen.ubicacion AND (_ubicacion IS NULL OR (_ubicacion IS NOT NULL AND sga_mesas_examen.ubicacion = _ubicacion)); -- Si la fecha de finalizacion es el campo fecha_fin, se FOR cur_actividad IN ( SELECT t.elemento as elemento FROM tmp_llamados as t LEFT JOIN sga_llamados_mesa_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.llamado_mesa = t.llamado_mesa, sga_llamados_mesa WHERE t.llamado_mesa = sga_llamados_mesa.llamado_mesa -- fecha de inicio del periodo de insc. AND CURRENT_DATE >= COALESCE(e.fecha_inicio, t.fecha_inicio) AND ((-- fecha y hora actual se encuentre en un período de inscripcion de la mesa _en_periodo_insc = true AND CURRENT_TIMESTAMP BETWEEN COALESCE(e.fecha_inicio, t.fecha_inicio) AND COALESCE(e.fecha_fin, COALESCE(t.fecha_fin, CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval))) -- AND COALESCE((e.fecha_fin + CAST('1 days' AS INTERVAL)), COALESCE((t.fecha_fin + CAST('1 days' AS INTERVAL)), cast(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval))) ) OR (-- Fuera de un periodo de inscripción _en_periodo_insc = false AND -- CURRENT_TIMESTAMP < COALESCE(e.fecha_inicio, t.fecha_inicio) AND CURRENT_TIMESTAMP > COALESCE(e.fecha_fin, COALESCE(t.fecha_fin, CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval))) ) ) -- MODALIDAD AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_mesas_examen_modalidad WHERE sga_mesas_examen_modalidad.mesa_examen = t.mesa_examen) ) ) LOOP -- Retorno la actividad que tiene mesa con periodo de insc vigente en este momento. RETURN NEXT cur_actividad.elemento; END LOOP; -- Borro la tabla temporal DROP TABLE tmp_llamados; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- REVOKE EXECUTE ON FUNCTION f_actividades_con_mesas_vigentes FROM public; GRANT EXECUTE ON FUNCTION f_actividades_con_mesas_vigentes(integer, boolean, integer) TO public; -- ++++++++++++++++++++++++++ Fin Function f_actividades_con_mesas_vigentes +++++++++++++++++++++++++++++++++++++++ /* select * from f_actividades_con_mesas_vigentes (1000, true, NULL); */-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_pasar_inscripciones_a_historico -- -- Pasa inscripciones a examenes y cursadas a tablas historicas. -- Solo permite pasar inscripciones de años academicos anteriores -- -- Recibe: -- 1.- Integer: Año académico -- 2.- Integer: Pasar inscripciones a cursadas (Valores: 1-Pasar / 0-No pasar) -- 2.- Integer: Pasar inscripciones a examenes (Valores: 1-Pasar / 0-No pasar) -- -- Retorna: Integer: -1 - No paso inscripciones. Año académico no válido / 1 - Paso inscripciones. -- -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_pasar_inscripciones_a_historico(integer, integer, integer); CREATE OR REPLACE FUNCTION f_pasar_inscripciones_a_historico(_anio_academico integer, _cursadas integer, _examenes integer) RETURNS INTEGER AS $BODY$ DECLARE _anio_actual integer; BEGIN --Verifico que el año académico sea un año anterior al actual _anio_actual := f_anio_academico_actual(); IF _anio_academico >= _anio_actual THEN -- El año académico debe ser menor al año académico actual. RETURN -1; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- INSCRIPCIONES A EXAMENES -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF _examenes = 1 THEN -- Inscripciones aceptadas/pendientes/exceptuadas INSERT INTO his_insc_examen (inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, interfaz, estado) SELECT i.inscripcion, i.alumno, i.llamado_mesa, i.plan_version, i.instancia, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.interfaz, i.estado FROM sga_insc_examen as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.llamado_mesa = llm.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- Requisitos que fallaron en los rechazos de inscripciones a examenes INSERT INTO his_insc_examen_log_requisitos (inscripcion_requisito, inscripcion, tipo, entidad, requisito, estado, regla, parametros) SELECT a.inscripcion_requisito, a.inscripcion, a.tipo, a.entidad, a.requisito, a.estado, a.regla, a.parametros FROM sga_insc_examen_log_requisitos as a, sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.inscripcion = a.inscripcion AND llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- inscripciones dadas de baja o rechazadas INSERT INTO his_insc_examen_log (inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, nro_transaccion, estado, motivo_rechazo, interfaz, operacion, fecha_operacion, nro_transaccion_log) SELECT i.inscripcion, i.alumno, i.llamado_mesa, i.plan_version, i.instancia, i.fecha_inscripcion, i.nro_transaccion, i.estado, i.motivo_rechazo, i.interfaz, i.operacion, i.fecha_operacion, i.nro_transaccion_log FROM sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- Borro todos los registros de las tablas originales DELETE FROM sga_insc_examen_log_requisitos WHERE inscripcion_requisito IN ( SELECT h.inscripcion_requisito FROM his_insc_examen_log_requisitos as h, sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.inscripcion = h.inscripcion AND llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_examen_log WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_examen_log as h, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE llm.llamado_mesa = h.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_examen WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_examen as h, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE h.llamado_mesa = llm.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- INSCRIPCIONES A CURSADAS -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF _cursadas = 1 THEN -- Inscripciones a cursadas INSERT INTO his_insc_cursada (inscripcion, comision, alumno, tipo, prioridad, estado_preinscripcion, plan_version, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, interfaz, estado) SELECT i.inscripcion, i.comision, i.alumno, i.tipo, i.prioridad, i.estado_preinscripcion, i.plan_version, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.interfaz, i.estado FROM sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Inscripcion a subcomisiones INSERT INTO his_insc_subcomision (inscripcion, subcomision) SELECT s.inscripcion, s.subcomision FROM sga_insc_subcomision as s, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE s.inscripcion = i.inscripcion AND i.comision = c.comision AND p.anio_academico = _anio_academico; -- Instancias de la inscripcion INSERT INTO his_insc_cursada_instancias (inscripcion, instancia) SELECT s.inscripcion, s.instancia FROM sga_insc_cursada_instancias as s, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE s.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Requisitos relacionados con los rechazos de Inscripciones INSERT INTO his_insc_cursada_log_requisitos (inscripcion_requisito, inscripcion, tipo, entidad, requisito, estado, regla, parametros) SELECT r.inscripcion_requisito, r.inscripcion, r.tipo, r.entidad, r.requisito, r.estado, r.regla, r.parametros FROM sga_insc_cursada_log_requisitos as r, sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.inscripcion = r.inscripcion AND c.comision = i.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Bajas y Rechazos de Inscripciones INSERT INTO his_insc_cursada_log (inscripcion, alumno, comision, plan_version, prioridad, fecha_inscripcion, fuera_de_termino, nro_transaccion, estado, motivo_rechazo, interfaz, operacion, fecha_operacion, nro_transaccion_log) SELECT i.inscripcion, i.alumno, i.comision, i.plan_version, i.prioridad, i.fecha_inscripcion, i.fuera_de_termino, i.nro_transaccion, i.estado, i.motivo_rechazo, i.interfaz, i.operacion, i.fecha_operacion, i.nro_transaccion_log FROM sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Borro registros de las tablas de inscripciones DELETE FROM sga_insc_subcomision WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_subcomision as h, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE h.inscripcion = i.inscripcion AND i.comision = c.comision AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_instancias WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada_instancias as h, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE h.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_log_requisitos WHERE inscripcion_requisito IN ( SELECT h.inscripcion_requisito FROM his_insc_cursada_log_requisitos as h, sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.inscripcion = h.inscripcion AND c.comision = i.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_log WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada_log as h, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE c.comision = h.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada as h, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE c.comision = h.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); END IF; -- OK. Inscripciones pasadas. RETURN 1; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- REVOKE EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico FROM public; GRANT EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico(integer, integer, integer) TO public; -- ++++++++++++++++++++++++++ Fin Function f_pasar_inscripciones_a_historico +++++++++++++++++++++++-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: get_actividades_certificado_plan_version -- -- Recupera los elementos de tipo "Actividad" que intervienen en el cumplimiento de un certificado. -- Llama a la funcion "get_elemento_contenido(integer, integer, boolean, boolean)" -- -- Recibe: -- get_actividades_certificado_plan_version(integer, integer) -- 1.- Certificado -- 2.- Versión de Plan de Estudios -- -- Retorna: -- 1.- Integer -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION get_actividades_certificado_plan_version (integer, integer); CREATE OR REPLACE FUNCTION get_actividades_certificado_plan_version (integer, integer) RETURNS SETOF integer AS $body$ DECLARE _certificado ALIAS for $1; _plan_version ALIAS for $2; requisitos record; actividades record; BEGIN -- Recupero las actividades/modulos definidos en el cumplimiento del certificado en la version de plan de estudios. FOR requisitos IN SELECT DISTINCT sga_elementos.elemento, sga_elementos_revision.elemento_revision, sga_g3entidades_subtipos.entidad_tipo FROM sga_certificados, sga_condiciones, sga_condiciones_grupos, sga_condiciones_requisitos, sga_g3entidades, sga_g3entidades_subtipos, sga_elementos, sga_elementos_revision, sga_elementos_plan WHERE sga_certificados.entidad = sga_condiciones.entidad AND sga_condiciones.condicion = sga_condiciones_grupos.condicion AND sga_condiciones_grupos.grupo_condicion = sga_condiciones_requisitos.grupo_condicion AND sga_condiciones_requisitos.entidad = sga_g3entidades.entidad AND sga_g3entidades.entidad_subtipo = sga_g3entidades_subtipos.entidad_subtipo AND sga_g3entidades.entidad = sga_elementos.entidad AND sga_elementos.elemento = sga_elementos_revision.elemento AND sga_elementos_revision.elemento_revision = sga_elementos_plan.elemento_revision AND sga_elementos_plan.plan_version = _plan_version AND sga_certificados.certificado = _certificado AND sga_condiciones.plan_version = _plan_version LOOP -- Si es un Módulo, recupero las componentes del módulo. IF requisitos.entidad_tipo = 1 THEN FOR actividades IN -- Recupero el contenido del módulo y devuelvo solo las actividades.. SELECT DISTINCT get_elemento_contenido.elemento FROM get_elemento_contenido(requisitos.elemento_revision, _plan_version, FALSE, TRUE), sga_g3entidades_subtipos WHERE get_elemento_contenido.entidad_subtipo = sga_g3entidades_subtipos.entidad_subtipo AND sga_g3entidades_subtipos.entidad_tipo = 2 -- Actividad LOOP RETURN NEXT actividades.elemento; END LOOP; ELSE -- Es una actividad. RETURN NEXT requisitos.elemento; END IF; END LOOP; END; $body$ LANGUAGE 'plpgsql'; GRANT EXECUTE ON FUNCTION get_actividades_certificado_plan_version (integer, integer) to public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE: tdb_sga_actas -- BEFORE DELETE -- Tabla: sga_actas -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE OR REPLACE FUNCTION ftdb_sga_actas () RETURNS trigger AS $BODY$ BEGIN -- No se permite borrar un acta si esta cerrada o dada de baja IF OLD.estado = 'C' THEN raise exception 'No se puede sacar alumnos del acta porque esta Cerrada'; ELSEIF OLD.estado = 'B' THEN raise exception 'No se puede sacar alumnos del acta porque esta Anulada'; END IF ; RETURN OLD; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE sobre sga_actas -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tdb_sga_actas ON sga_actas RESTRICT; CREATE TRIGGER tdb_sga_actas BEFORE DELETE ON sga_actas FOR EACH ROW EXECUTE PROCEDURE ftdb_sga_actas(); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de UPDATE: tub_sga_actas -- BEFORE UPDATE -- Tabla: sga_actas -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE OR REPLACE FUNCTION ftub_sga_actas () RETURNS trigger AS $BODY$ DECLARE BEGIN -- No se permite modificar datos de la cabecera del acta si la misma esta Cerrada y/o Anulada IF (OLD.estado = 'C' OR OLD.estado = 'B') AND OLD.estado = NEW.estado THEN IF (OLD.nro_acta <> NEW.nro_acta OR OLD.libro <> NEW.libro OR OLD.origen <> NEW.origen OR OLD.tipo_acta <> NEW.tipo_acta OR OLD.evaluacion <> NEW.evaluacion OR OLD.comision <> NEW.comision OR OLD.llamado_mesa <> NEW.llamado_mesa OR OLD.renglones_folio <> NEW.renglones_folio OR OLD.acta_referencia <> NEW.acta_referencia OR OLD.fecha_generacion <> NEW.fecha_generacion OR OLD.fecha_cierre <> NEW.fecha_cierre OR OLD.fecha_anulacion <> NEW.fecha_anulacion OR OLD.nua <> NEW.nua OR OLD.documento <> NEW.documento OR OLD.libro <> NEW.libro OR OLD.version <> NEW.version OR OLD.version_impresa <> NEW.version_impresa OR OLD.nro_ultima_copia <> NEW.nro_ultima_copia ) THEN IF OLD.estado = 'C' THEN raise exception 'No se puede modificar datos del acta porque esta Cerrada'; ELSEIF OLD.estado = 'B' THEN raise exception 'No se puede modificar datos del acta porque esta Anulada'; END IF ; END IF; END IF; RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de UPDATE sobre sga_actas -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tub_sga_actas ON sga_actas RESTRICT; CREATE TRIGGER tub_sga_actas BEFORE UPDATE ON sga_actas FOR EACH ROW EXECUTE PROCEDURE ftub_sga_actas(); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_motivos_ausencias -- Secuencia: sga_motivos_ausencias_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_motivos_ausencias_seq; CREATE SEQUENCE sga_motivos_ausencias_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_motivos_ausencias -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_motivos_ausencias; CREATE TABLE sga_motivos_ausencias ( motivo_ausencia INTEGER NOT NULL DEFAULT nextval('sga_motivos_ausencias_seq'::text) , nombre Varchar(100) NOT NULL, descripcion Varchar(255) ); -- ALTER TABLE sga_motivos_ausencias DROP CONSTRAINT pk_sga_motivos_ausencias; ALTER TABLE sga_motivos_ausencias ADD CONSTRAINT pk_sga_motivos_ausencias PRIMARY KEY (motivo_ausencia); Revoke all ON sga_motivos_ausencias FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_motivos_ausencias +++++++++++++++++++++++++++++ GRANT select ON sga_motivos_ausencias TO public; GRANT update ON sga_motivos_ausencias TO public; GRANT delete ON sga_motivos_ausencias TO public; GRANT insert ON sga_motivos_ausencias TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_actividades_con_comisiones_vigentes -- -- Chequea si existe un período de inscripción vigente para la fecha actual -- -- Recibe: -- 1. Propuesta del alumno -- 2. Plan del alumno -- 3. ID de la Version de Plan (del alumno) -- 4. Dentro de un período de inscripción activo: true - Si / false - No -- 5. Si parámetro "exa_rinde_en_cualquier_ubicacion" = 'N' entonces recibe la ubicacion del alumno (sga_alumnos.ubicacion) -- -- Retorna: Lista de Actividades -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version -- DROP FUNCTION f_actividades_con_comisiones_vigentes(integer, integer, integer, boolean, integer); CREATE OR REPLACE FUNCTION f_actividades_con_comisiones_vigentes(_propuesta integer, _plan integer, _plan_version integer, _en_periodo_insc boolean, _ubicacion integer) RETURNS SETOF integer AS $BODY$ DECLARE cur_actividad RECORD; BEGIN /* Parametros: 1. Propuesta del Alumno 2. Plan del Alumno 3. Version de Plan del Alumno 4. Si debe estar dentro de un período de inscripción activo de mesas futuras 5. Si solo rinde en la ubicacion del alumno, recibe la ubicacion. */ -- Creo tabla temporal CREATE TEMP TABLE tmp_comisiones ( comision integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp, elemento integer); -- lleno tabla temporal con actividades que tienen comisiones: -- Con inscripción habilitada -- Con períodos de inscripcion definidos y habilitados -- Con la misma ubicacion del alumno, si el parametro indica que solo puede cursar en su ubicación. INSERT INTO tmp_comisiones (comision, elemento, periodo_insc, fecha_inicio, fecha_fin, periodo_inscripcion) SELECT DISTINCT sga_comisiones.comision, sga_comisiones.elemento, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.periodo_inscripcion FROM sga_comisiones, sga_comisiones_propuestas, sga_periodos_lectivos, sga_periodos, sga_periodos_inscripcion, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_comisiones.inscripcion_habilitada = 'S' AND sga_comisiones_propuestas.comision = sga_comisiones.comision AND sga_comisiones_propuestas.propuesta = _propuesta AND sga_comisiones_propuestas.plan = _plan AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_periodos.periodo = sga_periodos_lectivos.periodo AND sga_periodos.fecha_fin >= CURENT_DATE AND sga_periodos_inscripcion.periodo = sga_periodos_lectivos.periodo AND sga_periodos_inscripcion_fechas.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _plan_version AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_comisiones.ubicacion AND (_ubicacion IS NULL OR (_ubicacion IS NOT NULL AND sga_comisiones.ubicacion = _ubicacion)); FOR cur_actividad IN ( SELECT t.elemento as elemento FROM tmp_comisiones as t LEFT JOIN sga_comisiones_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.comision = t.comision WHERE ((-- fecha y hora actual se encuentre en un período de inscripcion _en_periodo_insc = true AND CURRENT_TIMESTAMP BETWEEN COALESCE(e.fecha_inicio, t.fecha_inicio) AND COALESCE(e.fecha_fin, t.fecha_fin) ) OR (-- fecha y hora actual fuera del período de inscripcion _en_periodo_insc = false AND CURRENT_TIMESTAMP > COALESCE(e.fecha_fin, t.fecha_fin) ) ) -- Modalidad de cursada AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_comisiones_modalidad WHERE sga_comisiones_modalidad.comision = t.comision) ) ) LOOP -- Retorno la actividad que tiene mesa con periodo de insc vigente en este momento. RETURN NEXT cur_actividad.elemento; END LOOP; -- Borro tabla temporal DROP TABLE tmp_comisiones; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++ Fin Function f_actividades_con_comisiones_vigentes +++++++++++++++++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_actividades_con_comisiones_vigentes FROM public; GRANT EXECUTE ON FUNCTION f_actividades_con_comisiones_vigentes(integer, integer, integer, boolean, integer) TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_actividades_con_mesas_vigentes -- -- Recupera actividades que tienen mesas de examen con: -- - Fecha mayor o igual a la fecha actual. -- - Períodos de inscripcion vigentes y habilitados -- - Periodos de inscripcion definidos para la version del plan de estudios pasado por parametro -- y para la ubicación y modalidad de la mesa de examen. -- -- Recibe: -- 1. Propuesta del alumno -- 2. Plan del alumno -- 3. Version de Plan del alumno -- 4. Dentro de un período de inscripción activo: true - Si / false - No -- 5. Si parámetro "exa_rinde_en_cualquier_ubicacion" = 'N' entonces recibe la ubicacion del alumno (sga_alumnos.ubicacion) -- Retorna: -- 1. Integer: ID de las actividades que tienen mesas de examen. (sga_elementos.elemento) -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version. -- DROP FUNCTION f_actividades_con_mesas_vigentes(integer, integer, integer, boolean, integer); CREATE OR REPLACE FUNCTION f_actividades_con_mesas_vigentes(_propuesta integer, _plan integer,_id_plan_version integer, _en_periodo_insc boolean, _ubicacion integer) RETURNS SETOF INTEGER AS $BODY$ DECLARE cur_actividad RECORD; BEGIN /* Parametros: 1. Propuesta del Alumno 2. Plan del Alumno 3. Version de Plan del Alumno 4. Si debe estar dentro de un período de inscripción activo de mesas futuras 5. Si solo rinde en la ubicacion del alumno, recibe la ubicacion. */ -- Creo tabla temporal CREATE TEMP TABLE tmp_llamados ( llamado_mesa integer, mesa_examen integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp, hs_previas_fin smallint, elemento integer); -- lleno tabla temporal con actividades que tienen mesas de examen con fecha igual o mayor a la actual -- y segun parametro que define que la mesa sea de la ubicación del alumno. INSERT INTO tmp_llamados (mesa_examen, elemento, llamado_mesa, periodo_insc, fecha_inicio, fecha_fin, hs_previas_fin, periodo_inscripcion) SELECT DISTINCT sga_mesas_examen.mesa_examen, sga_mesas_examen.elemento, sga_llamados_mesa.llamado_mesa, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.hs_previas_fin, sga_periodos_inscripcion_fechas.periodo_inscripcion FROM sga_llamados_mesa, sga_llamados_turno, sga_mesas_examen, sga_mesas_examen_propuestas, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_llamados_mesa.fecha >= CURRENT_DATE AND sga_llamados_mesa.mesa_examen = sga_mesas_examen.mesa_examen AND sga_mesas_examen_propuestas.mesa_examen = sga_mesas_examen.mesa_examen AND sga_mesas_examen_propuestas.propuesta = _propuesta AND sga_mesas_examen_propuestas.plan = _plan AND sga_llamados_turno.llamado = sga_llamados_mesa.llamado AND sga_periodos_inscripcion.periodo = sga_llamados_turno.periodo AND sga_periodos_inscripcion.periodo_inscripcion = sga_periodos_inscripcion_fechas.periodo_inscripcion AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _id_plan_version AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_mesas_examen.ubicacion AND (_ubicacion IS NULL OR (_ubicacion IS NOT NULL AND sga_mesas_examen.ubicacion = _ubicacion)); -- Si la fecha de finalizacion es el campo fecha_fin, se FOR cur_actividad IN ( SELECT t.elemento as elemento FROM tmp_llamados as t LEFT JOIN sga_llamados_mesa_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.llamado_mesa = t.llamado_mesa, sga_llamados_mesa WHERE t.llamado_mesa = sga_llamados_mesa.llamado_mesa -- fecha de inicio del periodo de insc. AND CURRENT_DATE >= COALESCE(e.fecha_inicio, t.fecha_inicio) AND ((-- fecha y hora actual se encuentre en un período de inscripcion de la mesa _en_periodo_insc = true AND CURRENT_TIMESTAMP BETWEEN COALESCE(e.fecha_inicio, t.fecha_inicio) AND -- AND COALESCE(e.fecha_fin, COALESCE(t.fecha_fin, CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval))) COALESCE((e.fecha_fin + CAST('1 days' AS INTERVAL)), CASE WHEN e.hs_previas_fin IS NOT NULL THEN CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(e.hs_previas_fin as text) || ' hours' as interval) WHEN e.hs_previas_fin IS NULL THEN COALESCE(t.fecha_fin + CAST('1 days' AS INTERVAL), CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval)) END) ) OR (-- Fuera de un periodo de inscripción _en_periodo_insc = false AND -- CURRENT_TIMESTAMP < COALESCE(e.fecha_inicio, t.fecha_inicio) AND CURRENT_TIMESTAMP > COALESCE((e.fecha_fin + CAST('1 days' AS INTERVAL)), -- Porque es fecha y hora CASE WHEN e.hs_previas_fin IS NOT NULL THEN CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(e.hs_previas_fin as text) || ' hours' as interval) WHEN e.hs_previas_fin IS NULL THEN COALESCE(t.fecha_fin + CAST('1 days' AS INTERVAL), CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval)) END ) ) ) -- MODALIDAD AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_mesas_examen_modalidad WHERE sga_mesas_examen_modalidad.mesa_examen = t.mesa_examen) ) ) LOOP -- Retorno la actividad que tiene mesa con periodo de insc vigente en este momento. RETURN NEXT cur_actividad.elemento; END LOOP; -- Borro la tabla temporal DROP TABLE tmp_llamados; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++ Fin Function f_actividades_con_mesas_vigentes +++++++++++++++++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_actividades_con_mesas_vigentes FROM public; GRANT EXECUTE ON FUNCTION f_actividades_con_mesas_vigentes(integer, integer, integer, boolean, integer) TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: comisiones_vigentes_una_actividad -- -- Recupera comisiones de la actividad: -- - De periodos lectivos que no finalizaron -- - Definidos para el plan y propuesta del alumno -- - De periodos de inscripcion vigentes o no (segun parametro) correspondiente a la version de plan del alumno -- - Con inscripcion habilitada -- - De la ubicación del alumno (si asi lo indica el parámetro del sistema) -- -- Recibe: -- 1. Propuesta del alumno -- 2. Plan del alumno -- 3. ID de la Version de Plan (del alumno) -- 4. Actividad -- 5. Dentro de un período de inscripción activo: true - Si / false - No -- 6. Si parámetro "exa_rinde_en_cualquier_ubicacion" = 'N' entonces recibe la ubicacion del alumno (sga_alumnos.ubicacion) -- -- Retorna: Lista de comisiones disponibles para la inscripción de la actividad. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version -- DROP FUNCTION comisiones_vigentes_una_actividad(integer, integer, integer, integer, boolean, integer); CREATE OR REPLACE FUNCTION comisiones_vigentes_una_actividad(_propuesta integer, _plan integer, _plan_version integer, _actividad integer, _en_periodo_insc boolean, _ubicacion integer) RETURNS SETOF integer AS $BODY$ DECLARE cur_comisiones RECORD; BEGIN /* Parametros: 1. Propuesta del Alumno 2. Plan del Alumno 3. Version de Plan del Alumno 4. Actividad 5. Si debe estar dentro de un período de inscripción activo de mesas futuras 6. Si solo rinde en la ubicacion del alumno, recibe la ubicacion. */ -- Creo tabla temporal CREATE TEMP TABLE tmp_comisiones ( comision integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp); -- lleno tabla temporal con actividades que tienen comisiones: -- Con inscripción habilitada -- Con períodos de inscripcion definidos y habilitados -- Con la misma ubicacion del alumno, si el parametro indica que solo puede cursar en su ubicación. INSERT INTO tmp_comisiones (comision, periodo_insc, fecha_inicio, fecha_fin, periodo_inscripcion) SELECT DISTINCT sga_comisiones.comision, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.periodo_inscripcion FROM sga_comisiones, sga_comisiones_propuestas, sga_periodos_lectivos, sga_periodos, sga_periodos_inscripcion, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_comisiones.inscripcion_habilitada = 'S' AND sga_comisiones.elemento = _actividad AND sga_comisiones_propuestas.comision = sga_comisiones.comision AND sga_comisiones_propuestas.propuesta = _propuesta AND sga_comisiones_propuestas.plan = _plan AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_periodos.periodo = sga_periodos_lectivos.periodo AND sga_periodos.fecha_fin >= CURENT_DATE AND sga_periodos_inscripcion.periodo = sga_periodos_lectivos.periodo AND sga_periodos_inscripcion_fechas.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _plan_version AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_comisiones.ubicacion AND (_ubicacion IS NULL OR (_ubicacion IS NOT NULL AND sga_comisiones.ubicacion = _ubicacion)); FOR cur_comisiones IN ( SELECT t.comision as comision FROM tmp_comisiones as t LEFT JOIN sga_comisiones_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.comision = t.comision WHERE ((-- fecha y hora actual se encuentre en un período de inscripcion _en_periodo_insc = true AND CURRENT_TIMESTAMP BETWEEN COALESCE(e.fecha_inicio, t.fecha_inicio) AND COALESCE(e.fecha_fin, t.fecha_fin) ) OR (-- fecha y hora actual fuera del período de inscripcion _en_periodo_insc = false AND CURRENT_TIMESTAMP > COALESCE(e.fecha_fin, t.fecha_fin) ) ) -- Modalidad de cursada AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_comisiones_modalidad WHERE sga_comisiones_modalidad.comision = t.comision) ) ) LOOP -- Retorno la actividad que tiene mesa con periodo de insc vigente en este momento. RETURN NEXT cur_comisiones.comision; END LOOP; -- Borro tabla temporal DROP TABLE tmp_comisiones; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++ Fin Function comisiones_vigentes_una_actividad +++++++++++++++++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION comisiones_vigentes_una_actividad FROM public; GRANT EXECUTE ON FUNCTION comisiones_vigentes_una_actividad(integer, integer, integer, integer, boolean, integer) TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_mesas_vigentes_una_actividad -- -- Recupera mesas de examenes de una actividad -- - Fecha mayor o igual a la fecha actual. -- - Períodos de inscripcion vigentes y habilitados -- - Periodos de inscripcion definidos para la version del plan de estudios pasado por parametro -- y para la ubicación y modalidad de la mesa de examen. -- -- Recibe: -- 1. ID de la Version de Plan (del alumno) -- 2. Dentro de un período de inscripción activo: true - Si / false - No -- 3. Si parámetro "exa_rinde_en_cualquier_ubicacion" = 'N' entonces recibe la ubicacion del alumno (sga_alumnos.ubicacion) -- Retorna: -- 1. Integer: ID de las mesas de examen por llamado (sga_llamados_mesa.llamado_mesa) -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version. -- DROP FUNCTION f_mesas_vigentes_una_actividad(integer, integer, integer, integer, boolean, integer); CREATE OR REPLACE FUNCTION f_mesas_vigentes_una_actividad(_actividad integer, _propuesta integer, _plan integer, _id_plan_version integer, _en_periodo_insc boolean, _ubicacion integer) RETURNS SETOF INTEGER AS $BODY$ DECLARE cur_llamados_mesa RECORD; BEGIN /* Parametros: 1. Actividad 2. Propuesta del Alumno 3. Plan del Alumno 4. Version de Plan del Alumno 5. Si debe estar dentro de un período de inscripción activo de mesas futuras 6. Si solo rinde en la ubicacion del alumno, recibe la ubicacion. */ -- Creo tabla temporal CREATE TEMP TABLE tmp_llamados ( llamado_mesa integer, mesa_examen integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp, hs_previas_fin smallint ); -- lleno tabla temporal con mesas de examen de la actividad, con fecha de examen igual o mayor a la actual -- y segun parametro que define que la mesa sea de la ubicación del alumno y si debe estar dentro de un periodo de inscripcion vigente o fuera de un período de insc vigente. INSERT INTO tmp_llamados (mesa_examen, llamado_mesa, periodo_insc, fecha_inicio, fecha_fin, hs_previas_fin, periodo_inscripcion) SELECT sga_mesas_examen.mesa_examen, sga_llamados_mesa.llamado_mesa, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.hs_previas_fin, sga_periodos_inscripcion_fechas.periodo_inscripcion FROM sga_llamados_mesa, sga_llamados_turno, sga_mesas_examen, sga_mesas_examen_propuestas, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_llamados_mesa.fecha >= CURRENT_DATE AND sga_llamados_mesa.mesa_examen = sga_mesas_examen.mesa_examen AND sga_llamados_turno.llamado = sga_llamados_mesa.llamado AND sga_mesas_examen.elemento = _actividad AND sga_mesas_examen_propuestas.mesa_examen = sga_mesas_examen.mesa_examen AND sga_mesas_examen_propuestas.propuesta = _propuesta AND sga_mesas_examen_propuestas.plan = _plan AND sga_periodos_inscripcion.periodo = sga_llamados_turno.periodo AND sga_periodos_inscripcion.periodo_inscripcion = sga_periodos_inscripcion_fechas.periodo_inscripcion AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _id_plan_version AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_mesas_examen.ubicacion AND (_ubicacion IS NULL OR (_ubicacion IS NOT NULL AND sga_mesas_examen.ubicacion = _ubicacion)); -- Verifico periodo de inscripcion del llamado o alguna excepcion de la mesa en el llamado. FOR cur_llamados_mesa IN ( SELECT t.llamado_mesa as llamado_mesa FROM tmp_llamados as t LEFT JOIN sga_llamados_mesa_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.llamado_mesa = t.llamado_mesa, sga_llamados_mesa WHERE t.llamado_mesa = sga_llamados_mesa.llamado_mesa -- fecha de inicio del periodo de insc. AND CURRENT_DATE >= COALESCE(e.fecha_inicio, t.fecha_inicio) AND ((-- fecha y hora actual se encuentre en un período de inscripcion de la mesa _en_periodo_insc = true AND CURRENT_TIMESTAMP BETWEEN COALESCE(e.fecha_inicio, t.fecha_inicio) AND -- COALESCE(e.fecha_fin, COALESCE(t.fecha_fin, CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval))) COALESCE((e.fecha_fin + CAST('1 days' AS INTERVAL)), CASE WHEN e.hs_previas_fin IS NOT NULL THEN CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(e.hs_previas_fin as text) || ' hours' as interval) WHEN e.hs_previas_fin IS NULL THEN COALESCE(t.fecha_fin + CAST('1 days' AS INTERVAL), CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval)) END) ) OR (-- Fuera de un periodo de inscripción _en_periodo_insc = false AND -- CURRENT_TIMESTAMP < COALESCE(e.fecha_inicio, t.fecha_inicio) AND CURRENT_TIMESTAMP > COALESCE((e.fecha_fin + CAST('1 days' AS INTERVAL)), -- Porque es fecha y hora CASE WHEN e.hs_previas_fin IS NOT NULL THEN CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(e.hs_previas_fin as text) || ' hours' as interval) WHEN e.hs_previas_fin IS NULL THEN COALESCE(t.fecha_fin + CAST('1 days' AS INTERVAL), CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval)) END ) ) ) -- MODALIDAD AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_mesas_examen_modalidad WHERE sga_mesas_examen_modalidad.mesa_examen = t.mesa_examen) ) ) LOOP -- Retorno la mesa de examen instanciada en un llamado. RETURN NEXT cur_llamados_mesa.llamado_mesa; END LOOP; -- Borro la tabla temporal DROP TABLE tmp_llamados; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++ Fin Function f_mesas_vigentes_una_actividad +++++++++++++++++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_mesas_vigentes_una_actividad FROM public; GRANT EXECUTE ON FUNCTION f_mesas_vigentes_una_actividad(integer, integer, integer, integer, boolean, integer) TO public; /* select * from f_mesas_vigentes_una_actividad (, , , 1000, true, NULL); */-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_motivos_ausencias -- Actualizacion Nro de Secuencia: sga_motivos_ausencias_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_motivos_ausencias_seq',(SELECT MAX(motivo_ausencia) FROM sga_motivos_ausencias)); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_actividades_con_comisiones_vigentes -- -- Chequea si existe un período de inscripción vigente para la fecha actual -- -- Recibe: -- 1. Propuesta del alumno -- 2. Plan del alumno -- 3. ID de la Version de Plan (del alumno) -- 4. Dentro de un período de inscripción activo: true - Si / false - No -- 5. Si parámetro "exa_rinde_en_cualquier_ubicacion" = 'N' entonces recibe la ubicacion del alumno (sga_alumnos.ubicacion) -- -- Retorna: Lista de Actividades -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version -- DROP FUNCTION f_actividades_con_comisiones_vigentes(integer, integer, integer, boolean, integer); CREATE OR REPLACE FUNCTION f_actividades_con_comisiones_vigentes(_propuesta integer, _plan integer, _plan_version integer, _en_periodo_insc boolean, _ubicacion integer) RETURNS SETOF integer AS $BODY$ DECLARE cur_actividad RECORD; BEGIN /* Parametros: 1. Propuesta del Alumno 2. Plan del Alumno 3. Version de Plan del Alumno 4. Si debe estar dentro de un período de inscripción activo de mesas futuras 5. Si solo rinde en la ubicacion del alumno, recibe la ubicacion. */ -- Creo tabla temporal CREATE TEMP TABLE tmp_comisiones ( comision integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp, elemento integer); -- lleno tabla temporal con actividades que tienen comisiones: -- Con inscripción habilitada -- Con períodos de inscripcion definidos y habilitados -- Con la misma ubicacion del alumno, si el parametro indica que solo puede cursar en su ubicación. INSERT INTO tmp_comisiones (comision, elemento, periodo_insc, fecha_inicio, fecha_fin, periodo_inscripcion) SELECT DISTINCT sga_comisiones.comision, sga_comisiones.elemento, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.periodo_inscripcion FROM sga_comisiones, sga_comisiones_propuestas, sga_periodos_lectivos, sga_periodos, sga_periodos_inscripcion, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_comisiones.inscripcion_habilitada = 'S' AND sga_comisiones_propuestas.comision = sga_comisiones.comision AND sga_comisiones_propuestas.propuesta = _propuesta AND sga_comisiones_propuestas.plan = _plan AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_periodos.periodo = sga_periodos_lectivos.periodo AND sga_periodos.fecha_fin >= CURENT_DATE AND sga_periodos_inscripcion.periodo = sga_periodos_lectivos.periodo AND sga_periodos_inscripcion_fechas.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _plan_version AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_comisiones.ubicacion AND (_ubicacion IS NULL OR (_ubicacion IS NOT NULL AND sga_comisiones.ubicacion = _ubicacion)); FOR cur_actividad IN ( SELECT t.elemento as elemento FROM tmp_comisiones as t LEFT JOIN sga_comisiones_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.comision = t.comision WHERE ((-- fecha y hora actual se encuentre en un período de inscripcion _en_periodo_insc = true AND CURRENT_TIMESTAMP BETWEEN COALESCE(e.fecha_inicio, t.fecha_inicio) AND COALESCE(e.fecha_fin, t.fecha_fin) ) OR (-- fecha y hora actual fuera del período de inscripcion _en_periodo_insc = false AND CURRENT_TIMESTAMP > COALESCE(e.fecha_fin, t.fecha_fin) ) ) -- Modalidad de cursada AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_comisiones_modalidad WHERE sga_comisiones_modalidad.comision = t.comision) ) ) LOOP -- Retorno la actividad que tiene mesa con periodo de insc vigente en este momento. RETURN NEXT cur_actividad.elemento; END LOOP; -- Borro tabla temporal DROP TABLE tmp_comisiones; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++ Fin Function f_actividades_con_comisiones_vigentes +++++++++++++++++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_actividades_con_comisiones_vigentes FROM public; GRANT EXECUTE ON FUNCTION f_actividades_con_comisiones_vigentes(integer, integer, integer, boolean, integer) TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_comisiones_vigentes_una_actividad -- -- Recupera comisiones de la actividad: -- - De periodos lectivos que no finalizaron -- - Definidos para el plan y propuesta del alumno -- - De periodos de inscripcion vigentes o no (segun parametro) correspondiente a la version de plan del alumno -- - Con inscripcion habilitada -- - De la ubicación del alumno (si asi lo indica el parámetro del sistema) -- -- Recibe: -- 1. Propuesta del alumno -- 2. Plan del alumno -- 3. ID de la Version de Plan (del alumno) -- 4. Actividad -- 5. Dentro de un período de inscripción activo: true - Si / false - No -- 6. Si parámetro "exa_rinde_en_cualquier_ubicacion" = 'N' entonces recibe la ubicacion del alumno (sga_alumnos.ubicacion) -- -- Retorna: Lista de comisiones disponibles para la inscripción de la actividad. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version -- DROP FUNCTION comisiones_vigentes_una_actividad(integer, integer, integer, integer, boolean, integer); CREATE OR REPLACE FUNCTION comisiones_vigentes_una_actividad(_propuesta integer, _plan integer, _plan_version integer, _actividad integer, _en_periodo_insc boolean, _ubicacion integer) RETURNS SETOF integer AS $BODY$ DECLARE cur_comisiones RECORD; BEGIN /* Parametros: 1. Propuesta del Alumno 2. Plan del Alumno 3. Version de Plan del Alumno 4. Actividad 5. Si debe estar dentro de un período de inscripción activo de mesas futuras 6. Si solo rinde en la ubicacion del alumno, recibe la ubicacion. */ -- Creo tabla temporal CREATE TEMP TABLE tmp_comisiones ( comision integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp); -- lleno tabla temporal con actividades que tienen comisiones: -- Con inscripción habilitada -- Con períodos de inscripcion definidos y habilitados -- Con la misma ubicacion del alumno, si el parametro indica que solo puede cursar en su ubicación. INSERT INTO tmp_comisiones (comision, periodo_insc, fecha_inicio, fecha_fin, periodo_inscripcion) SELECT DISTINCT sga_comisiones.comision, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.periodo_inscripcion FROM sga_comisiones, sga_comisiones_propuestas, sga_periodos_lectivos, sga_periodos, sga_periodos_inscripcion, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_comisiones.inscripcion_habilitada = 'S' AND sga_comisiones.elemento = _actividad AND sga_comisiones_propuestas.comision = sga_comisiones.comision AND sga_comisiones_propuestas.propuesta = _propuesta AND sga_comisiones_propuestas.plan = _plan AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_periodos.periodo = sga_periodos_lectivos.periodo AND sga_periodos.fecha_fin >= CURENT_DATE AND sga_periodos_inscripcion.periodo = sga_periodos_lectivos.periodo AND sga_periodos_inscripcion_fechas.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _plan_version AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_comisiones.ubicacion AND (_ubicacion IS NULL OR (_ubicacion IS NOT NULL AND sga_comisiones.ubicacion = _ubicacion)); FOR cur_comisiones IN ( SELECT t.comision as comision FROM tmp_comisiones as t LEFT JOIN sga_comisiones_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.comision = t.comision WHERE ((-- fecha y hora actual se encuentre en un período de inscripcion _en_periodo_insc = true AND CURRENT_TIMESTAMP BETWEEN COALESCE(e.fecha_inicio, t.fecha_inicio) AND COALESCE(e.fecha_fin, t.fecha_fin) ) OR (-- fecha y hora actual fuera del período de inscripcion _en_periodo_insc = false AND CURRENT_TIMESTAMP > COALESCE(e.fecha_fin, t.fecha_fin) ) ) -- Modalidad de cursada AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_comisiones_modalidad WHERE sga_comisiones_modalidad.comision = t.comision) ) ) LOOP -- Retorno la actividad que tiene mesa con periodo de insc vigente en este momento. RETURN NEXT cur_comisiones.comision; END LOOP; -- Borro tabla temporal DROP TABLE tmp_comisiones; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++ Fin Function comisiones_vigentes_una_actividad +++++++++++++++++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION comisiones_vigentes_una_actividad FROM public; GRANT EXECUTE ON FUNCTION comisiones_vigentes_una_actividad(integer, integer, integer, integer, boolean, integer) TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_mesas_vigentes_una_actividad -- -- Recupera mesas de examenes de una actividad -- - Fecha mayor o igual a la fecha actual. -- - Períodos de inscripcion vigentes y habilitados -- - Periodos de inscripcion definidos para la version del plan de estudios pasado por parametro -- y para la ubicación y modalidad de la mesa de examen. -- -- Recibe: -- 1. ID de la Version de Plan (del alumno) -- 2. Dentro de un período de inscripción activo: true - Si / false - No -- 3. Si parámetro "exa_rinde_en_cualquier_ubicacion" = 'N' entonces recibe la ubicacion del alumno (sga_alumnos.ubicacion) -- Retorna: -- 1. Integer: ID de las mesas de examen por llamado (sga_llamados_mesa.llamado_mesa) -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version. -- DROP FUNCTION f_mesas_vigentes_una_actividad(integer, integer, integer, integer, boolean, integer); CREATE OR REPLACE FUNCTION f_mesas_vigentes_una_actividad(_actividad integer, _propuesta integer, _plan integer, _id_plan_version integer, _en_periodo_insc boolean, _ubicacion integer) RETURNS SETOF INTEGER AS $BODY$ DECLARE cur_llamados_mesa RECORD; BEGIN /* Parametros: 1. Actividad 2. Propuesta del Alumno 3. Plan del Alumno 4. Version de Plan del Alumno 5. Si debe estar dentro de un período de inscripción activo de mesas futuras 6. Si solo rinde en la ubicacion del alumno, recibe la ubicacion. */ -- Creo tabla temporal CREATE TEMP TABLE tmp_llamados ( llamado_mesa integer, mesa_examen integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp, hs_previas_fin smallint ); -- lleno tabla temporal con mesas de examen de la actividad, con fecha de examen igual o mayor a la actual -- y segun parametro que define que la mesa sea de la ubicación del alumno y si debe estar dentro de un periodo de inscripcion vigente o fuera de un período de insc vigente. INSERT INTO tmp_llamados (mesa_examen, llamado_mesa, periodo_insc, fecha_inicio, fecha_fin, hs_previas_fin, periodo_inscripcion) SELECT sga_mesas_examen.mesa_examen, sga_llamados_mesa.llamado_mesa, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.hs_previas_fin, sga_periodos_inscripcion_fechas.periodo_inscripcion FROM sga_llamados_mesa, sga_llamados_turno, sga_mesas_examen, sga_mesas_examen_propuestas, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_llamados_mesa.fecha >= CURRENT_DATE AND sga_llamados_mesa.mesa_examen = sga_mesas_examen.mesa_examen AND sga_llamados_turno.llamado = sga_llamados_mesa.llamado AND sga_mesas_examen.elemento = _actividad AND sga_mesas_examen_propuestas.mesa_examen = sga_mesas_examen.mesa_examen AND sga_mesas_examen_propuestas.propuesta = _propuesta AND sga_mesas_examen_propuestas.plan = _plan AND sga_periodos_inscripcion.periodo = sga_llamados_turno.periodo AND sga_periodos_inscripcion.periodo_inscripcion = sga_periodos_inscripcion_fechas.periodo_inscripcion AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _id_plan_version AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_mesas_examen.ubicacion AND (_ubicacion IS NULL OR (_ubicacion IS NOT NULL AND sga_mesas_examen.ubicacion = _ubicacion)); -- Verifico periodo de inscripcion del llamado o alguna excepcion de la mesa en el llamado. FOR cur_llamados_mesa IN ( SELECT t.llamado_mesa as llamado_mesa FROM tmp_llamados as t LEFT JOIN sga_llamados_mesa_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.llamado_mesa = t.llamado_mesa, sga_llamados_mesa WHERE t.llamado_mesa = sga_llamados_mesa.llamado_mesa -- fecha de inicio del periodo de insc. AND CURRENT_DATE >= COALESCE(e.fecha_inicio, t.fecha_inicio) AND ((-- fecha y hora actual se encuentre en un período de inscripcion de la mesa _en_periodo_insc = true AND CURRENT_TIMESTAMP BETWEEN COALESCE(e.fecha_inicio, t.fecha_inicio) AND COALESCE(e.fecha_fin, CASE WHEN e.hs_previas_fin IS NOT NULL THEN CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(e.hs_previas_fin as text) || ' hours' as interval) WHEN e.hs_previas_fin IS NULL THEN COALESCE(t.fecha_fin, CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval)) END) ) OR (-- Fuera de un periodo de inscripción _en_periodo_insc = false AND -- CURRENT_TIMESTAMP < COALESCE(e.fecha_inicio, t.fecha_inicio) AND CURRENT_TIMESTAMP > COALESCE(e.fecha_fin, -- Porque es fecha y hora CASE WHEN e.hs_previas_fin IS NOT NULL THEN CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(e.hs_previas_fin as text) || ' hours' as interval) WHEN e.hs_previas_fin IS NULL THEN COALESCE(t.fecha_fin, CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval)) END ) ) ) -- MODALIDAD AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_mesas_examen_modalidad WHERE sga_mesas_examen_modalidad.mesa_examen = t.mesa_examen) ) ) LOOP -- Retorno la mesa de examen instanciada en un llamado. RETURN NEXT cur_llamados_mesa.llamado_mesa; END LOOP; -- Borro la tabla temporal DROP TABLE tmp_llamados; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++ Fin Function f_mesas_vigentes_una_actividad +++++++++++++++++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_mesas_vigentes_una_actividad FROM public; GRANT EXECUTE ON FUNCTION f_mesas_vigentes_una_actividad(integer, integer, integer, integer, boolean, integer) TO public; /* select * from f_mesas_vigentes_una_actividad (, , , 1000, true, NULL); */-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_pasar_inscripciones_a_historico -- -- Pasa inscripciones a examenes y cursadas a tablas historicas. -- Solo permite pasar inscripciones de años academicos anteriores -- -- Recibe: -- 1.- Integer: Año académico -- 2.- Integer: Pasar inscripciones a cursadas (Valores: 1-Pasar / 0-No pasar) -- 2.- Integer: Pasar inscripciones a examenes (Valores: 1-Pasar / 0-No pasar) -- -- Retorna: Integer: -1 - No paso inscripciones. Año académico no válido / 1 - Paso inscripciones. -- -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_pasar_inscripciones_a_historico(integer, integer, integer); CREATE OR REPLACE FUNCTION f_pasar_inscripciones_a_historico(_anio_academico integer, _cursadas integer, _examenes integer) RETURNS INTEGER AS $BODY$ DECLARE _anio_actual integer; BEGIN --Verifico que el año académico sea un año anterior al actual _anio_actual := f_anio_academico_actual(); IF _anio_academico >= _anio_actual THEN -- El año académico debe ser menor al año académico actual. RETURN -1; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- INSCRIPCIONES A EXAMENES -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF _examenes = 1 THEN -- Deshabilito triggers para que no actuen sobre las tablas de evaluaciones ALTER TABLE sga_insc_examen DISABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log DISABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log_requisitos DISABLE TRIGGER ALL; ALTER TABLE his_insc_examen DISABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log DISABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log_requisitos DISABLE TRIGGER ALL; -- Inscripciones aceptadas/pendientes/exceptuadas INSERT INTO his_insc_examen (inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, interfaz, estado) SELECT i.inscripcion, i.alumno, i.llamado_mesa, i.plan_version, i.instancia, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.interfaz, i.estado FROM sga_insc_examen as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.llamado_mesa = llm.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- Requisitos que fallaron en los rechazos de inscripciones a examenes INSERT INTO his_insc_examen_log_requisitos (inscripcion_requisito, inscripcion, tipo, entidad, requisito, estado, regla, parametros) SELECT a.inscripcion_requisito, a.inscripcion, a.tipo, a.entidad, a.requisito, a.estado, a.regla, a.parametros FROM sga_insc_examen_log_requisitos as a, sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.inscripcion = a.inscripcion AND llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- inscripciones dadas de baja o rechazadas INSERT INTO his_insc_examen_log (inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, nro_transaccion, estado, motivo_rechazo, interfaz, operacion, fecha_operacion, nro_transaccion_log) SELECT i.inscripcion, i.alumno, i.llamado_mesa, i.plan_version, i.instancia, i.fecha_inscripcion, i.nro_transaccion, i.estado, i.motivo_rechazo, i.interfaz, i.operacion, i.fecha_operacion, i.nro_transaccion_log FROM sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- Borro todos los registros de las tablas originales DELETE FROM sga_insc_examen_log_requisitos WHERE inscripcion_requisito IN ( SELECT h.inscripcion_requisito FROM his_insc_examen_log_requisitos as h, sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.inscripcion = h.inscripcion AND llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_examen_log WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_examen_log as h, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE llm.llamado_mesa = h.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_examen WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_examen as h, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE h.llamado_mesa = llm.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); -- Habilito nuevamente los triggers ALTER TABLE sga_insc_examen ENABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log ENABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log_requisitos ENABLE TRIGGER ALL; ALTER TABLE his_insc_examen ENABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log ENABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log_requisitos ENABLE TRIGGER ALL; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- INSCRIPCIONES A CURSADAS -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF _cursadas = 1 THEN -- Deshabilito triggers para que no actuen sobre las tablas de evaluaciones ALTER TABLE sga_insc_cursada DISABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_instancias DISABLE TRIGGER ALL; ALTER TABLE sga_insc_subcomision DISABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log DISABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log_requisitos DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_instancias DISABLE TRIGGER ALL; ALTER TABLE his_insc_subcomision DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log_requisitos DISABLE TRIGGER ALL; -- Inscripciones a cursadas INSERT INTO his_insc_cursada (inscripcion, comision, alumno, tipo, prioridad, estado_preinscripcion, plan_version, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, interfaz, estado) SELECT i.inscripcion, i.comision, i.alumno, i.tipo, i.prioridad, i.estado_preinscripcion, i.plan_version, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.interfaz, i.estado FROM sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Inscripcion a subcomisiones INSERT INTO his_insc_subcomision (inscripcion, subcomision) SELECT s.inscripcion, s.subcomision FROM sga_insc_subcomision as s, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE s.inscripcion = i.inscripcion AND i.comision = c.comision AND p.anio_academico = _anio_academico; -- Instancias de la inscripcion INSERT INTO his_insc_cursada_instancias (inscripcion, instancia) SELECT s.inscripcion, s.instancia FROM sga_insc_cursada_instancias as s, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE s.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Requisitos relacionados con los rechazos de Inscripciones INSERT INTO his_insc_cursada_log_requisitos (inscripcion_requisito, inscripcion, tipo, entidad, requisito, estado, regla, parametros) SELECT r.inscripcion_requisito, r.inscripcion, r.tipo, r.entidad, r.requisito, r.estado, r.regla, r.parametros FROM sga_insc_cursada_log_requisitos as r, sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.inscripcion = r.inscripcion AND c.comision = i.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Bajas y Rechazos de Inscripciones INSERT INTO his_insc_cursada_log (inscripcion, alumno, comision, plan_version, prioridad, fecha_inscripcion, fuera_de_termino, nro_transaccion, estado, motivo_rechazo, interfaz, operacion, fecha_operacion, nro_transaccion_log) SELECT i.inscripcion, i.alumno, i.comision, i.plan_version, i.prioridad, i.fecha_inscripcion, i.fuera_de_termino, i.nro_transaccion, i.estado, i.motivo_rechazo, i.interfaz, i.operacion, i.fecha_operacion, i.nro_transaccion_log FROM sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Borro registros de las tablas de inscripciones DELETE FROM sga_insc_subcomision WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_subcomision as h, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE h.inscripcion = i.inscripcion AND i.comision = c.comision AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_instancias WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada_instancias as h, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE h.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_log_requisitos WHERE inscripcion_requisito IN ( SELECT h.inscripcion_requisito FROM his_insc_cursada_log_requisitos as h, sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.inscripcion = h.inscripcion AND c.comision = i.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_log WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada_log as h, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE c.comision = h.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada as h, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE c.comision = h.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); -- Habilito triggers ALTER TABLE sga_insc_cursada ENABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_instancias ENABLE TRIGGER ALL; ALTER TABLE sga_insc_subcomision ENABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log ENABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log_requisitos ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_instancias ENABLE TRIGGER ALL; ALTER TABLE his_insc_subcomision ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log_requisitos ENABLE TRIGGER ALL; END IF; -- OK. Inscripciones pasadas. RETURN 1; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- REVOKE EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico FROM public; GRANT EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico(integer, integer, integer) TO public; -- ++++++++++++++++++++++++++ Fin Function f_pasar_inscripciones_a_historico +++++++++++++++++++++++-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: get_ultima_cursada -- -- Retorna la ultima cursada del alumno. La cursada puede estar aprobada/reprobada, vigente o no vigente -- -- Recibe: get_ultima_cursada(integer, integer) -- 1. Alumno -- 2. Actividad -- Retorna: -- 1. Datos de la Cursada separada por |. (año academico | periodo lectivo | fecha regularidad | condición de regularidad | nota | resultado | fecha de fin de vigencia | vigente (SI/NO)| ubicacion | catedra) -- Ejemplos: -- 2010|1er Cuatrimestre|25/06/2010|Aprobó Parciales|8|Aprobado|01/01/2013|SI|Lujan|Romero -- 2010|1er Cuatrimestre|28/06/2010|Promocionó|9|Aprobado||SI|Capital| -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION get_ultima_cursada(integer, integer); CREATE OR REPLACE FUNCTION get_ultima_cursada(_alumno INTEGER, _actividad INTEGER) RETURNS TEXT AS $BODY$ DECLARE _retorno text; cur1 record; BEGIN _retorno := '|||||||||'; -- Recupero el nombre de las modalidades de cursada FOR cur1 IN SELECT vw_periodos_lectivos.anio_academico as anio_academico, vw_periodos_lectivos.nombre as periodo_lectivo, to_char(vw_regularidades.fecha, 'DD/MM/YYYY') as fecha_regular , sga_cond_regularidad.nombre as condicion_regularidad, COALESCE(vw_regularidades.nota, '') as nota, sga_escalas_notas_resultado.descripcion as resultado_desc, CASE WHEN vw_regularidades.resultado <> 'A' THEN '' WHEN vw_regularidades.fecha_vigencia IS NULL THEN 'Sin Venc.' WHEN vw_regularidades.fecha_vigencia IS NOT NULL THEN to_char(vw_regularidades.fecha_vigencia, 'DD/MM/YYYY') END as fecha_vigencia, CASE WHEN vw_regularidades.resultado <> 'A' THEN '' WHEN vw_regularidades.fecha_vigencia IS NULL THEN 'SI' WHEN vw_regularidades.fecha_vigencia >= CURRENT_DATE THEN 'SI' WHEN vw_regularidades.fecha_vigencia < CURRENT_DATE THEN 'NO' END as vigente, COALESCE(sga_ubicaciones.nombre, '') as ubicacion, COALESCE(sga_catedras.nombre, '') as catedra FROM vw_regularidades LEFT JOIN sga_cond_regularidad ON vw_regularidades.cond_regularidad = sga_cond_regularidad.cond_regularidad, sga_comisiones LEFT JOIN sga_ubicaciones ON sga_comisiones.ubicacion = sga_ubicaciones.ubicacion LEFT JOIN sga_catedras ON sga_comisiones.catedra = sga_catedras.catedra, vw_periodos_lectivos, sga_escalas_notas_resultado WHERE vw_regularidades.alumno = _alumno AND sga_comisiones.comision = vw_regularidades.comision AND sga_comisiones.elemento = _actividad AND vw_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_escalas_notas_resultado.resultado = vw_regularidades.resultado ORDER BY vw_regularidades.fecha DESC LOOP -- Recupero datos de la ultima cursada de la actividad _retorno := cur1.anio_academico::text || '|' || cur1.periodo_lectivo || '|' ||cur1.condicion_regularidad || '|' ||cur1.fecha_regular || '|' || cur1.condicion_regularidad || '|' ||cur1.nota || '|' || cur1.resultado_desc || '|' || cur1.fecha_vigencia || '|' || cur1.vigente || '|' || cur1.ubicacion || '|' || cur1.catedra; EXIT; END LOOP; RETURN _retorno; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function get_ultima_cursada(integer, integer) ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION get_ultima_cursada (integer, integer) FROM public; GRANT EXECUTE ON FUNCTION get_ultima_cursada (integer, integer) to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_hist_academica_inv -- Version: 3.0.0 -- Recupera historia académica invalidada (estado = I) -- * Examenes Aprobados/Reprobados/Ausentes -- * Promociones Aprobadas -- * Examnes / Promociones / Equivalencias totales / Otros Reconocimientos de regularidad. -- ** No se consideran los examenes de Reválidas de cursadas (instancia = 5) -- -- Valores de los campos: -- resultado = A - Aprobado / R - Desaprobado / U - Ausente (examenes ausentes) -- tipo_acta y tipo_tramite = N - Normal / R - Rectificativo -- origen = E - Examen / P - Promocion / R - Aprob. x Resolucion / Q - Equivalencia -- tipo = Examen / Promoción / Equivalencia / Aprob. por Resolución -- -- La vista devuelve lo siguiente: -- a. Promociones: Detalles ACTIVOS y NO RECTIFICADOS de actas CERRADAS de origen PROMOCIÓN. El único resultado válido es APROBADO. -- b. Examenes: Detalles ACTIVOS y NO RECTIFICADOS de actas CERRADAS de origen EXAMEN. Los resultados válidos son: APROBADO, REPROBADO, AUSENTE. -- c. Equivalencias: Detalles ACTIVOS de alcance TOTAL y NO RECTIFICADOS de trámites de equivalencia CERRADOS. Los resultados válidos son: APROBADO, REPROBADO. -- d. Aprobación por Resolución: ACTIVIDADES de tipo TOTAL en trámites de aprobación por resolución CERRADOS. -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW vw_hist_academica_inv; CREATE OR REPLACE VIEW vw_hist_academica_inv ( elemento, id_acta, id_acta_original, nro_acta, tipo_acta, origen, tipo, evaluacion, comision, llamado_mesa, equivalencia_tramite, equivalencia_tramite_original, tipo_tramite, nro_resolucion, equivalencia, alumno, plan_version, instancia, fecha, fecha_vigencia, folio, renglon, escala_nota, nota, resultado, cond_regularidad, estado, pct_asistencia, observaciones, nota_descripcion, resultado_descripcion ) AS -- PROMOCIONES. Actas Original y Rectificativas SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, cast('Promoción' as varchar(30)) as tipo, sga_actas.evaluacion, sga_actas.comision, sga_actas.llamado_mesa, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_comisiones.comision = sga_actas.comision AND sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_actas.estado = 'C' AND sga_actas.origen = 'P' AND sga_actas_detalle.estado = 'I' -- Invalidado AND sga_actas_detalle.resultado = 'A' -- Solo Promocionados AND sga_actas_detalle.rectificado = 'N' AND sga_actas_detalle.instancia <> 5 AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado UNION ALL -- EXAMENES: Actas Original y Rectificativas. Examenes y Promociones. SELECT sga_mesas_examen.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, cast('Examen' as varchar(30)) as tipo, sga_actas.evaluacion, sga_actas.comision, sga_actas.llamado_mesa, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_llamados_mesa, sga_mesas_examen, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_llamados_mesa.llamado_mesa = sga_actas.llamado_mesa AND sga_mesas_examen.mesa_examen = sga_llamados_mesa.mesa_examen AND sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'E' AND sga_actas_detalle.estado = 'I' -- Invalidado AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente de Examenes AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.instancia <> 5 AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado UNION ALL -- EQUIVALENCIAS DE REGULARIDAD Y PARCIALES: Original y Rectificativas SELECT sga_equiv_otorgada.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as varchar(30)) as nro_acta, cast(null as char(1)) as tipo_acta, 'Q' as origen, cast('Equivalencia' as varchar(30)) as tipo, cast(null as integer) as evaluacion, cast(null as integer) as comision, cast(null as integer) as llamado_mesa, sga_equiv_tramite.equivalencia_tramite, CASE sga_equiv_tramite.tipo_tramite WHEN 'N' THEN sga_equiv_tramite.equivalencia_tramite WHEN 'R' THEN sga_equiv_tramite.rectifica_a END as equivalencia_tramite_original, sga_equiv_tramite.tipo_tramite as tipo_tramite, sga_equiv_tramite.documento as nro_resolucion, sga_equiv_otorgada.equivalencia, sga_equiv_tramite.alumno, sga_equiv_tramite.plan_version, cast(null as integer) as instancia, sga_equiv_otorgada.fecha, sga_equiv_otorgada.fecha_vigencia, cast(null as smallint) as folio, cast(null as smallint) as renglon, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado, cast(null as integer) as cond_regularidad, sga_equiv_otorgada.estado, cast(null as numeric(5,2)) as pct_asistencia, sga_equiv_otorgada.temas_a_rendir as observaciones, sga_escalas_notas_det.descripcion, sga_escalas_notas_resultado.descripcion FROM sga_equiv_tramite, sga_equiv_otorgada LEFT JOIN sga_escalas_notas_det ON (sga_equiv_otorgada.escala_nota = sga_escalas_notas_det.escala_nota AND sga_equiv_otorgada.nota = sga_escalas_notas_det.nota), sga_escalas_notas_resultado WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_equiv_tramite.estado = 'C' -- Cerrado AND sga_equiv_otorgada.alcance = 'T' -- Equivalencia Total AND sga_equiv_otorgada.rectificado = 'N' -- No Rectificado AND sga_equiv_otorgada.estado = 'I' -- Invalidado AND sga_equiv_otorgada.resultado IN ('A','R') -- Aprobado/Reprobado AND sga_escalas_notas_resultado.resultado = sga_equiv_otorgada.resultado ; /* UNION ALL -- Aprobaciones por Resolucion. SELECT sga_reconocimiento_act.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as varchar(30)) as nro_acta, cast(null as char(1)) as tipo_acta, 'R' as origen, cast('Aprob. por Resolución' as varchar(30)) as tipo, cast(null as integer) as evaluacion, cast(null as integer) as comision, cast(null as integer) as llamado_mesa, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, sga_reconocimiento.documento as nro_resolucion, cast(null as integer) as equivalencia, sga_reconocimiento.alumno, sga_reconocimiento.plan_version, cast(null as integer) as instancia, sga_reconocimiento.fecha, cast(null as date) as fecha_vigencia, cast(null as smallint) as folio, cast(null as smallint) as renglon, sga_reconocimiento_act.escala_nota, sga_reconocimiento_act.nota, 'A' as resultado, cast(null as integer) as cond_regularidad, 'A' as estado, cast(null as numeric(5,2)) as pct_asistencia, cast(null as text) as observaciones, sga_escalas_notas_det.descripcion, 'Aprobado' as resultado_descripcion FROM sga_reconocimiento, sga_reconocimiento_act LEFT JOIN sga_escalas_notas_det ON (sga_escalas_notas_det.escala_nota = sga_reconocimiento_act.escala_nota AND sga_escalas_notas_det.nota = sga_reconocimiento_act.nota), sga_elementos, sga_g3entidades_subtipos WHERE sga_reconocimiento_act.nro_tramite = sga_reconocimiento.nro_tramite AND sga_reconocimiento.estado = 'C' -- Cerrado AND sga_reconocimiento_act.reconocimiento_total = 'S' AND sga_elementos.elemento = sga_reconocimiento_act.elemento AND sga_g3entidades_subtipos.entidad_subtipo = sga_elementos.entidad_subtipo AND sga_g3entidades_subtipos.entidad_tipo = 2 -- Actividades ; */ -- ++++++++++++++++++++++++++++++ Fin view vw_hist_academica_inv +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_hist_academica_inv to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_personas -- Version: 3.0.0 -- Recupera las personas con su documento principal -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW vw_personas; CREATE OR REPLACE VIEW vw_personas ( persona, apellido, nombres, sexo, nacionalidad, usuario, documento, nro_documento, tipo_documento, desc_tipo_documento ) AS SELECT mdp_personas.persona, mdp_personas.apellido, mdp_personas.nombres, mdp_personas.sexo, mdp_personas.nacionalidad, mdp_personas.usuario, mdp_personas_documentos.documento, mdp_personas_documentos.nro_documento, mdp_personas_documentos.tipo_documento, mdp_tipo_documento.desc_abreviada FROM mdp_personas LEFT JOIN mdp_personas_documentos ON mdp_personas_documentos.persona = mdp_personas.persona AND mdp_personas_documentos.principal = 'S' LEFT JOIN mdp_tipo_documento ON mdp_tipo_documento.tipo_documento = mdp_personas_documentos.tipo_documento ; -- ++++++++++++++++++++++++++++++ Fin view vw_personas +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_personas to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_regularidades_inv -- Version: 3.0.0 -- Recupera las cursadas y equivalencias de regularidad (Aprobadas/Reprobadas) invalidadas (estado = I). -- Cursadas / Equivalencias de Regularidad / Otros Reconocimientos de regularidad. /Promociones (solo cuando la comision no tiene instancia de regularidad) -- -- Valores de los campos: -- origen (cursadas) : R = Acta de Regularidad / P = Acta de Promoción -- alcance (quivalenias): Equivalencia Parcial / Equivalencia de Regularidad -- tipo : Regularidad / Promoción / Equivalencia Parcial / Equivalencia de Regularidad -- resultado : A - Aprobado / R - Desaprobado / U - Ausente -- tipo_acta y tipo_tramite: N - Normal / R - Rectificativo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW vw_regularidades_inv; CREATE OR REPLACE VIEW vw_regularidades_inv ( elemento, id_acta, id_acta_original, nro_acta, tipo_acta, origen, tipo, evaluacion, comision, equivalencia_tramite, equivalencia_tramite_original, tipo_tramite, nro_resolucion, equivalencia, alumno, plan_version, instancia, fecha, fecha_vigencia, folio, renglon, escala_nota, nota, resultado, cond_regularidad, estado, pct_asistencia, observaciones, nota_descripcion, resultado_descripcion ) AS -- Actas de Cursadas y Promociones SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, 'Regularidad' as tipo, sga_actas.evaluacion, sga_actas.comision, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'R' -- Regularidades.. AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.estado = 'I' -- Invalidado AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente? AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado UNION ALL -- Actas de Promociones (de comisiones que son solo promocionales) SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, 'Promoción' as tipo, sga_actas.evaluacion, sga_actas.comision, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'P' -- Promociones AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.estado = 'I' -- Invalidado AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente? AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado AND NOT EXISTS (SELECT 1 FROM sga_actas_instancias as ai WHERE ai.id_acta = sga_actas.id_acta AND ai.instancia <> 2) UNION ALL -- EQUIVALENCIAS DE REGULARIDAD Y PARCIALES: Original y Rectificativas SELECT sga_equiv_otorgada.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as varchar(30)) as nro_acta, cast(null as char(1)) as tipo_acta, cast(null as char(1)) as origen, CASE sga_equiv_otorgada.alcance WHEN 'P' THEN 'Equivalencia Parcial' WHEN 'R' THEN 'Equivalencia de Regularidad' END as tipo, cast(null as integer) as evaluacion, cast(null as integer) as comision, sga_equiv_tramite.equivalencia_tramite, CASE sga_equiv_tramite.tipo_tramite WHEN 'N' THEN sga_equiv_tramite.equivalencia_tramite WHEN 'R' THEN sga_equiv_tramite.rectifica_a END as equivalencia_tramite_original, sga_equiv_tramite.tipo_tramite as tipo_tramite, sga_equiv_tramite.documento as nro_resolucion, sga_equiv_otorgada.equivalencia, sga_equiv_tramite.alumno, sga_equiv_tramite.plan_version, cast(null as integer) as instancia, sga_equiv_otorgada.fecha, sga_equiv_otorgada.fecha_vigencia, cast(null as smallint) as folio, cast(null as smallint) as renglon, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado, cast(null as integer) as cond_regularidad, sga_equiv_otorgada.estado, cast(null as numeric(5,2)) as pct_asistencia, sga_equiv_otorgada.temas_a_rendir as observaciones, sga_escalas_notas_det.descripcion, sga_escalas_notas_resultado.descripcion FROM sga_equiv_tramite, sga_equiv_otorgada LEFT JOIN sga_escalas_notas_det ON (sga_equiv_otorgada.escala_nota = sga_escalas_notas_det.escala_nota AND sga_equiv_otorgada.nota = sga_escalas_notas_det.nota), sga_escalas_notas_resultado WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_equiv_tramite.estado = 'C' -- Cerrado AND sga_equiv_otorgada.alcance IN ('R','P') -- Equivalencia de Regularidad y Parcial AND sga_equiv_otorgada.rectificado = 'N' -- No Rectificado AND sga_equiv_otorgada.estado = 'I' -- Invalidado AND sga_equiv_otorgada.resultado IN ('A','R') -- Aprobado/Reprobado AND sga_escalas_notas_resultado.resultado = sga_equiv_otorgada.resultado ; -- ++++++++++++++++++++++++++++++ Fin view vw_regularidades_inv +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_regularidades_inv to public; -- Saco el docente de la tabla sga_clases DROP INDEX ifk_sga_clases_sga_docentes; ALTER TABLE sga_clases DROP CONSTRAINT fk_sga_clases_sga_docentes; ALTER TABLE sga_clases DROP COLUMN docente_responsable; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_docentes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_clases_docentes; CREATE TABLE sga_clases_docentes ( clase Integer NOT NULL, docente Integer NOT NULL, responsable Smallint NOT NULL DEFAULT 0 ); -- ALTER TABLE sga_clases_docentes DROP CONSTRAINT pk_sga_clases_docentes; ALTER TABLE sga_clases_docentes ADD CONSTRAINT pk_sga_clases_docentes PRIMARY KEY (responsable); Revoke all ON sga_clases_docentes FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_clases_docentes +++++++++++++++++++++++++++++ GRANT select ON sga_clases_docentes TO public; GRANT update ON sga_clases_docentes TO public; GRANT delete ON sga_clases_docentes TO public; GRANT insert ON sga_clases_docentes TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_actividades_con_comisiones_vigentes -- -- Chequea si existe un período de inscripción vigente para la fecha actual -- -- Recibe: -- 1. Propuesta del alumno -- 2. Plan del alumno -- 3. ID de la Version de Plan (del alumno) -- 4. Dentro de un período de inscripción activo: true - Si / false - No -- 5. Si parámetro "cur_rinde_en_cualquier_ubicacion" = 'N' entonces recibe la ubicacion del alumno (sga_alumnos.ubicacion) -- -- Retorna: Lista de Actividades -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version -- DROP FUNCTION f_actividades_con_comisiones_vigentes(integer, integer, integer, boolean, integer); CREATE OR REPLACE FUNCTION f_actividades_con_comisiones_vigentes(_propuesta integer, _plan integer, _plan_version integer, _en_periodo_insc boolean, _ubicacion integer) RETURNS SETOF integer AS $BODY$ DECLARE cur_actividad RECORD; BEGIN /* Parametros: 1. Propuesta del Alumno 2. Plan del Alumno 3. Version de Plan del Alumno 4. Si debe estar dentro de un período de inscripción activo de mesas futuras 5. Si solo rinde en la ubicacion del alumno, recibe la ubicacion. */ -- Creo tabla temporal CREATE TEMP TABLE tmp_comisiones ( comision integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp, elemento integer); -- lleno tabla temporal con actividades que tienen comisiones: -- Con inscripción habilitada -- Con períodos de inscripcion definidos y habilitados -- Con la misma ubicacion del alumno, si el parametro indica que solo puede cursar en su ubicación. INSERT INTO tmp_comisiones (comision, elemento, periodo_insc, fecha_inicio, fecha_fin, periodo_inscripcion) SELECT DISTINCT sga_comisiones.comision, sga_comisiones.elemento, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.periodo_inscripcion FROM sga_comisiones, sga_comisiones_propuestas, sga_periodos_lectivos, sga_periodos, sga_periodos_inscripcion, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_comisiones.inscripcion_habilitada = 'S' AND sga_comisiones_propuestas.comision = sga_comisiones.comision AND sga_comisiones_propuestas.propuesta = _propuesta AND sga_comisiones_propuestas.plan = _plan AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_periodos.periodo = sga_periodos_lectivos.periodo AND sga_periodos.fecha_fin >= CURRENT_DATE AND sga_periodos_inscripcion.periodo = sga_periodos_lectivos.periodo AND sga_periodos_inscripcion_fechas.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _plan_version AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_comisiones.ubicacion AND (_ubicacion IS NULL OR (_ubicacion IS NOT NULL AND sga_comisiones.ubicacion = _ubicacion)); FOR cur_actividad IN ( SELECT t.elemento as elemento FROM tmp_comisiones as t LEFT JOIN sga_comisiones_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.comision = t.comision WHERE ((-- fecha y hora actual se encuentre en un período de inscripcion _en_periodo_insc = true AND CURRENT_TIMESTAMP BETWEEN COALESCE(e.fecha_inicio, t.fecha_inicio) AND COALESCE(e.fecha_fin, t.fecha_fin) ) OR (-- fecha y hora actual fuera del período de inscripcion _en_periodo_insc = false AND CURRENT_TIMESTAMP > COALESCE(e.fecha_fin, t.fecha_fin) ) ) -- Modalidad de cursada AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_comisiones_modalidad WHERE sga_comisiones_modalidad.comision = t.comision) ) ) LOOP -- Retorno la actividad que tiene mesa con periodo de insc vigente en este momento. RETURN NEXT cur_actividad.elemento; END LOOP; -- Borro tabla temporal DROP TABLE tmp_comisiones; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++ Fin Function f_actividades_con_comisiones_vigentes +++++++++++++++++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_actividades_con_comisiones_vigentes FROM public; GRANT EXECUTE ON FUNCTION f_actividades_con_comisiones_vigentes(integer, integer, integer, boolean, integer) TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_docentes -- Check: ck_sga_clases_docentes_responsable -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_clases_docentes DROP CONSTRAINT ck_sga_clases_docentes_responsable; ALTER TABLE sga_clases_docentes ADD CONSTRAINT ck_sga_clases_docentes_responsable CHECK (responsable IN (1, 0)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_docentes -- FK: fk_sga_clases_docentes_sga_clases -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_docentes_sga_clases; CREATE INDEX ifk_sga_clases_docentes_sga_clases ON sga_clases_docentes (clase); -- ALTER TABLE sga_clases_docentes DROP CONSTRAINT fk_sga_clases_docentes_sga_clases; ALTER TABLE sga_clases_docentes ADD CONSTRAINT fk_sga_clases_docentes_sga_clases FOREIGN KEY (clase) REFERENCES sga_clases (clase) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_docentes -- FK: fk_sga_clases_docentes_sga_docentes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_docentes_sga_docentes; CREATE INDEX ifk_sga_clases_docentes_sga_docentes ON sga_clases_docentes (docente); -- ALTER TABLE sga_clases_docentes DROP CONSTRAINT fk_sga_clases_docentes_sga_docentes; ALTER TABLE sga_clases_docentes ADD CONSTRAINT fk_sga_clases_docentes_sga_docentes FOREIGN KEY (docente) REFERENCES sga_docentes (docente) on update restrict on delete restrict; DROP FUNCTION comisiones_vigentes_una_actividad(integer, integer, integer, integer, boolean, integer); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_subcomisiones_bh -- FK: fk_sga_subcomisiones_bh_sga_asignaciones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP INDEX ifk_sga_subcomisiones_bh_sga_asignaciones; ALTER TABLE sga_subcomisiones_bh DROP CONSTRAINT fk_sga_subcomisiones_bh_sga_asignaciones; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_subcomisiones_bh -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP TABLE IF EXISTS sga_subcomisiones_bh; CREATE TABLE sga_subcomisiones_bh ( subcomision Integer NOT NULL, banda_horaria Integer NOT NULL ); -- ALTER TABLE sga_subcomisiones_bh DROP CONSTRAINT pk_sga_subcomisiones_bh; ALTER TABLE sga_subcomisiones_bh ADD CONSTRAINT pk_sga_subcomisiones_bh PRIMARY KEY (subcomision, banda_horaria); Revoke all ON sga_subcomisiones_bh FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_subcomisiones_bh +++++++++++++++++++++++++++++ GRANT select ON sga_subcomisiones_bh TO public; GRANT update ON sga_subcomisiones_bh TO public; GRANT delete ON sga_subcomisiones_bh TO public; GRANT insert ON sga_subcomisiones_bh TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_comisiones_vigentes_una_actividad -- -- Recupera comisiones de la actividad: -- - De periodos lectivos que no finalizaron -- - Definidos para el plan y propuesta del alumno -- - De periodos de inscripcion vigentes o no (segun parametro) correspondiente a la version de plan del alumno -- - Con inscripcion habilitada -- - De la ubicación del alumno (si asi lo indica el parámetro del sistema) -- -- Recibe: -- 1. Propuesta del alumno -- 2. Plan del alumno -- 3. ID de la Version de Plan (del alumno) -- 4. Actividad -- 5. Dentro de un período de inscripción activo: true - Si / false - No -- 6. Si parámetro "exa_rinde_en_cualquier_ubicacion" = 'N' entonces recibe la ubicacion del alumno (sga_alumnos.ubicacion) -- -- Retorna: Lista de comisiones disponibles para la inscripción de la actividad. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version -- DROP FUNCTION f_comisiones_vigentes_una_actividad(integer, integer, integer, integer, boolean, integer); CREATE OR REPLACE FUNCTION f_comisiones_vigentes_una_actividad(_propuesta integer, _plan integer, _plan_version integer, _actividad integer, _en_periodo_insc boolean, _ubicacion integer) RETURNS SETOF integer AS $BODY$ DECLARE cur_comisiones RECORD; BEGIN /* Parametros: 1. Propuesta del Alumno 2. Plan del Alumno 3. Version de Plan del Alumno 4. Actividad 5. Si debe estar dentro de un período de inscripción activo de mesas futuras 6. Si solo rinde en la ubicacion del alumno, recibe la ubicacion. */ -- Creo tabla temporal CREATE TEMP TABLE tmp_comisiones ( comision integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp); -- lleno tabla temporal con actividades que tienen comisiones: -- Con inscripción habilitada -- Con períodos de inscripcion definidos y habilitados -- Con la misma ubicacion del alumno, si el parametro indica que solo puede cursar en su ubicación. INSERT INTO tmp_comisiones (comision, periodo_insc, fecha_inicio, fecha_fin, periodo_inscripcion) SELECT DISTINCT sga_comisiones.comision, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.periodo_inscripcion FROM sga_comisiones, sga_comisiones_propuestas, sga_periodos_lectivos, sga_periodos, sga_periodos_inscripcion, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_comisiones.inscripcion_habilitada = 'S' AND sga_comisiones.elemento = _actividad AND sga_comisiones_propuestas.comision = sga_comisiones.comision AND sga_comisiones_propuestas.propuesta = _propuesta AND sga_comisiones_propuestas.plan = _plan AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_periodos.periodo = sga_periodos_lectivos.periodo AND sga_periodos.fecha_fin >= CURRENT_DATE AND sga_periodos_inscripcion.periodo = sga_periodos_lectivos.periodo AND sga_periodos_inscripcion_fechas.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _plan_version AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_comisiones.ubicacion AND (_ubicacion IS NULL OR (_ubicacion IS NOT NULL AND sga_comisiones.ubicacion = _ubicacion)); FOR cur_comisiones IN ( SELECT t.comision as comision FROM tmp_comisiones as t LEFT JOIN sga_comisiones_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.comision = t.comision WHERE ((-- fecha y hora actual se encuentre en un período de inscripcion _en_periodo_insc = true AND CURRENT_TIMESTAMP BETWEEN COALESCE(e.fecha_inicio, t.fecha_inicio) AND COALESCE(e.fecha_fin, t.fecha_fin) ) OR (-- fecha y hora actual fuera del período de inscripcion _en_periodo_insc = false AND CURRENT_TIMESTAMP > COALESCE(e.fecha_fin, t.fecha_fin) ) ) -- Modalidad de cursada AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_comisiones_modalidad WHERE sga_comisiones_modalidad.comision = t.comision) ) ) LOOP -- Retorno la actividad que tiene mesa con periodo de insc vigente en este momento. RETURN NEXT cur_comisiones.comision; END LOOP; -- Borro tabla temporal DROP TABLE tmp_comisiones; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++ Fin Function f_comisiones_vigentes_una_actividad +++++++++++++++++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_comisiones_vigentes_una_actividad FROM public; GRANT EXECUTE ON FUNCTION f_comisiones_vigentes_una_actividad(integer, integer, integer, integer, boolean, integer) TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: get_ultima_cursada -- -- Retorna la ultima cursada del alumno. La cursada puede estar aprobada/reprobada, vigente o no vigente -- -- Recibe: get_ultima_cursada(integer, integer) -- 1. Alumno -- 2. Actividad -- Retorna: -- 1. Datos de la Cursada separada por |. (año academico | periodo lectivo | fecha regularidad | condición de regularidad | nota | resultado | fecha de fin de vigencia | vigente (SI/NO)| ubicacion | catedra) -- Ejemplos: -- 2010|1er Cuatrimestre|25/06/2010|Aprobó Parciales|8|Aprobado|01/01/2013|SI|Lujan|Romero -- 2010|1er Cuatrimestre|28/06/2010|Promocionó|9|Aprobado||SI|Capital| -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION get_ultima_cursada(integer, integer); CREATE OR REPLACE FUNCTION get_ultima_cursada(_alumno INTEGER, _actividad INTEGER) RETURNS TEXT AS $BODY$ DECLARE _retorno text; cur1 record; BEGIN _retorno := '|||||||||'; -- Recupero el nombre de las modalidades de cursada FOR cur1 IN SELECT vw_periodos_lectivos.anio_academico as anio_academico, vw_periodos_lectivos.nombre as periodo_lectivo, to_char(vw_regularidades.fecha, 'DD/MM/YYYY') as fecha_regular , sga_cond_regularidad.nombre as condicion_regularidad, COALESCE(vw_regularidades.nota, '') as nota, sga_escalas_notas_resultado.descripcion as resultado_desc, CASE WHEN vw_regularidades.resultado <> 'A' THEN '' WHEN vw_regularidades.fecha_vigencia IS NULL THEN 'Sin Venc.' WHEN vw_regularidades.fecha_vigencia IS NOT NULL THEN to_char(vw_regularidades.fecha_vigencia, 'DD/MM/YYYY') END as fecha_vigencia, CASE WHEN vw_regularidades.resultado <> 'A' THEN '' WHEN vw_regularidades.fecha_vigencia IS NULL THEN 'SI' WHEN vw_regularidades.fecha_vigencia >= CURRENT_DATE THEN 'SI' WHEN vw_regularidades.fecha_vigencia < CURRENT_DATE THEN 'NO' END as vigente, COALESCE(sga_ubicaciones.nombre, '') as ubicacion, COALESCE(sga_catedras.nombre, '') as catedra FROM vw_regularidades LEFT JOIN sga_cond_regularidad ON vw_regularidades.cond_regularidad = sga_cond_regularidad.cond_regularidad, sga_comisiones LEFT JOIN sga_ubicaciones ON sga_comisiones.ubicacion = sga_ubicaciones.ubicacion LEFT JOIN sga_catedras ON sga_comisiones.catedra = sga_catedras.catedra, vw_periodos_lectivos, sga_escalas_notas_resultado WHERE vw_regularidades.alumno = _alumno AND sga_comisiones.comision = vw_regularidades.comision AND sga_comisiones.elemento = _actividad AND vw_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_escalas_notas_resultado.resultado = vw_regularidades.resultado ORDER BY vw_regularidades.fecha DESC LOOP -- Recupero datos de la ultima cursada de la actividad _retorno := cur1.anio_academico::text || '|' || cur1.periodo_lectivo || '|' || cur1.fecha_regular || '|' || cur1.condicion_regularidad || '|' ||cur1.nota || '|' || cur1.resultado_desc || '|' || cur1.fecha_vigencia || '|' || cur1.vigente || '|' || cur1.ubicacion || '|' || cur1.catedra; EXIT; END LOOP; RETURN _retorno; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function get_ultima_cursada(integer, integer) ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION get_ultima_cursada (integer, integer) FROM public; GRANT EXECUTE ON FUNCTION get_ultima_cursada (integer, integer) to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_subcomisiones_bh -- FK: fk_sga_subcomisiones_bh_sga_comisiones_bh -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_subcomisiones_bh_sga_comisiones_bh; CREATE INDEX ifk_sga_subcomisiones_bh_sga_comisiones_bh ON sga_comisiones_bh (asignacion); -- ALTER TABLE sga_subcomisiones_bh DROP CONSTRAINT fk_sga_subcomisiones_bh_sga_comisiones_bh; ALTER TABLE sga_subcomisiones_bh ADD CONSTRAINT fk_sga_subcomisiones_bh_sga_comisiones_bh FOREIGN KEY (banda_horaria) REFERENCES sga_comisiones_bh (banda_horaria) on update restrict on delete restrict; -- No va mas el estado "NUEVO" de las propuestas UPDATE sga_propuestas SET estado = 'A' WHERE estado = 'N'; DELETE FROM sga_propuestas_estados WHERE estado = 'N'; -- TIPOS DE PROPUESTAS -- Cambio el tipo "OTROS" por "Grado" UPDATE sga_propuestas SET propuesta_tipo = 200 WHERE propuesta_tipo = 206; UPDATE sga_g3entidades SET entidad_subtipo = 200 WHERE entidad_subtipo = 206; -- Cambio el tipo "Extracurricular" por "Vocacional" UPDATE sga_propuestas SET propuesta_tipo = 207 WHERE propuesta_tipo = 209; UPDATE sga_g3entidades SET entidad_subtipo = 207 WHERE entidad_subtipo = 209; DELETE FROM sga_propuestas_tipos WHERE propuesta_tipo = 209; -- 'Extracurricular' -> Guarani 2 = E -- Paso el tipo "Terciario" del 208 al 206 (Que antes era Otros). UPDATE sga_propuestas_tipos SET descripcion = 'Terciario', otorga_titulo = 'N', reporta_araucano = 'N', permite_matricular = 'N', permite_inscribir = 'N' WHERE propuesta_tipo = 206; UPDATE sga_propuestas SET propuesta_tipo = 206 WHERE propuesta_tipo = 208; DELETE FROM sga_propuestas_tipos WHERE propuesta_tipo = 208; -- 'Terciario' UPDATE sga_g3entidades_subtipos SET nombre = 'Terciario', tabla = 'sga_propuestas', es_elemento = 'N', revisionable = 'N', modificable = 'N', para_condiciones = 'N', para_requisitos = 'N', php_clase_gui = NULL, php_clase_negocio = NULL, php_clase_edicion = NULL, icono = NULL WHERE entidad_subtipo = 206; UPDATE sga_g3entidades SET entidad_subtipo = 206 WHERE entidad_subtipo = 208; -- Borro subtipos 208 y 209 DELETE FROM sga_g3entidades_subtipos WHERE entidad_subtipo IN (208, 209); -- TIPOS DE CERTIFICADOS ALTER TABLE sga_certificados_tipos DROP CONSTRAINT ck_sga_certificados_tipos_formal; ALTER TABLE sga_certificados_tipos ADD COLUMN es_titulo Char(1) NOT NULL DEFAULT 'S'; -- actualizo el nuevo campo y saco el campo anterior UPDATE sga_certificados_tipos SET es_titulo = formal; ALTER TABLE sga_certificados_tipos DROP COLUMN formal; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_certificados_tipos -- Check: ck_sga_certificados_tipos_es_titulo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_certificados_tipos DROP CONSTRAINT ck_sga_certificados_tipos_es_titulo; ALTER TABLE sga_certificados_tipos ADD CONSTRAINT ck_sga_certificados_tipos_es_titulo CHECK (es_titulo IN ('S','N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_subcomisiones_bh -- FK: fk_sga_subcomisiones_bh_sga_subcomisiones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_subcomisiones_bh_sga_subcomisiones; CREATE INDEX ifk_sga_subcomisiones_bh_sga_subcomisiones ON sga_subcomisiones_bh (subcomision); -- ALTER TABLE sga_subcomisiones_bh DROP CONSTRAINT fk_sga_subcomisiones_bh_sga_subcomisiones; ALTER TABLE sga_subcomisiones_bh ADD CONSTRAINT fk_sga_subcomisiones_bh_sga_subcomisiones FOREIGN KEY (subcomision) REFERENCES sga_subcomisiones (subcomision) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha_motivos -- Check: ck_sga_movimientos_ha_motivos_estado_nota -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ALTER TABLE sga_movimientos_ha_motivos DROP CONSTRAINT ck_sga_movimientos_ha_motivos_estado_nota; ALTER TABLE sga_movimientos_ha_motivos ADD COLUMN tipo varchar(10) NOT NULL DEFAULT 'Invalidar'; ALTER TABLE sga_movimientos_ha_motivos DROP COLUMN estado_nota; DROP INDEX ifk_mce_plantillas_campos_mce_campos; ALTER TABLE mce_plantillas_campos DROP CONSTRAINT fk_mce_plantillas_campos_mce_campos; DROP INDEX ifk_mce_plantillas_campos_mce_plantillas; ALTER TABLE mce_plantillas_campos DROP CONSTRAINT fk_mce_plantillas_campos_mce_plantillas; DROP TABLE IF EXISTS mce_plantillas_campos; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: get_ultima_cursada -- -- Retorna la ultima cursada del alumno. La cursada puede estar aprobada/reprobada, vigente o no vigente -- -- Recibe: get_ultima_cursada(integer, integer) -- 1. Alumno -- 2. Actividad -- Retorna: -- 1. Datos de la Cursada separada por $PARAM$. (año academico | periodo lectivo | fecha regularidad | condición de regularidad | nota | resultado | fecha de fin de vigencia | vigente (SI/NO)| ubicacion | catedra) -- Ejemplos: -- 2010$PARAM$1er Cuatrimestre$PARAM$25/06/2010$PARAM$Aprobó Parciales$PARAM$8$PARAM$Aprobado$PARAM$01/01/2013$PARAM$SI$PARAM$Lujan$PARAM$Romero -- 2010$PARAM$1er Cuatrimestre$PARAM$28/06/2010$PARAM$Promocionó$PARAM$9$PARAM$Aprobado$PARAM$$PARAM$SI$PARAM$Capital$PARAM$ -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION get_ultima_cursada(integer, integer); CREATE OR REPLACE FUNCTION get_ultima_cursada(_alumno INTEGER, _actividad INTEGER) RETURNS TEXT AS $BODY$ DECLARE _retorno text; cur1 record; BEGIN -- Retorna 10 parámetros. _retorno := '$PARAM$$PARAM$$PARAM$$PARAM$$PARAM$$PARAM$$PARAM$$PARAM$$PARAM$'; -- Recupero el nombre de las modalidades de cursada FOR cur1 IN SELECT vw_periodos_lectivos.anio_academico as anio_academico, vw_periodos_lectivos.nombre as periodo_lectivo, to_char(vw_regularidades.fecha, 'DD/MM/YYYY') as fecha_regular , sga_cond_regularidad.nombre as condicion_regularidad, COALESCE(vw_regularidades.nota, '') as nota, sga_escalas_notas_resultado.descripcion as resultado_desc, CASE WHEN vw_regularidades.resultado <> 'A' THEN '' WHEN vw_regularidades.fecha_vigencia IS NULL THEN 'Sin Venc.' WHEN vw_regularidades.fecha_vigencia IS NOT NULL THEN to_char(vw_regularidades.fecha_vigencia, 'DD/MM/YYYY') END as fecha_vigencia, CASE WHEN vw_regularidades.resultado <> 'A' THEN '' WHEN vw_regularidades.fecha_vigencia IS NULL THEN 'SI' WHEN vw_regularidades.fecha_vigencia >= CURRENT_DATE THEN 'SI' WHEN vw_regularidades.fecha_vigencia < CURRENT_DATE THEN 'NO' END as vigente, COALESCE(sga_ubicaciones.nombre, '') as ubicacion, COALESCE(sga_catedras.nombre, '') as catedra FROM vw_regularidades LEFT JOIN sga_cond_regularidad ON vw_regularidades.cond_regularidad = sga_cond_regularidad.cond_regularidad, sga_comisiones LEFT JOIN sga_ubicaciones ON sga_comisiones.ubicacion = sga_ubicaciones.ubicacion LEFT JOIN sga_catedras ON sga_comisiones.catedra = sga_catedras.catedra, vw_periodos_lectivos, sga_escalas_notas_resultado WHERE vw_regularidades.alumno = _alumno AND sga_comisiones.comision = vw_regularidades.comision AND sga_comisiones.elemento = _actividad AND vw_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_escalas_notas_resultado.resultado = vw_regularidades.resultado ORDER BY vw_regularidades.fecha DESC LOOP -- Recupero datos de la ultima cursada de la actividad _retorno := cur1.anio_academico::text || '$PARAM$' || cur1.periodo_lectivo || '$PARAM$' || cur1.fecha_regular || '$PARAM$' || cur1.condicion_regularidad || '$PARAM$' ||cur1.nota; _retorno := _retorno || '$PARAM$' || cur1.resultado_desc || '$PARAM$' || cur1.fecha_vigencia || '$PARAM$' || cur1.vigente || '$PARAM$' || cur1.ubicacion || '$PARAM$' || cur1.catedra; EXIT; END LOOP; RETURN _retorno; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function get_ultima_cursada(integer, integer) ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION get_ultima_cursada (integer, integer) FROM public; GRANT EXECUTE ON FUNCTION get_ultima_cursada (integer, integer) to public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: get_ultima_cursada_valida -- -- Retorna la ultima cursada aprobada vigente de la actividad cursada por el el alumno -- -- Recibe: get_ultima_cursada_valida(integer, integer) -- 1. Alumno -- 2. Actividad -- Retorna: -- 1. Datos de la Cursada separada por $PARAM$. (año academico | periodo lectivo | fecha regularidad | condición de regularidad | nota | resultado | ubicacion | catedra) -- Ejemplo: 2010$PARAM$1er Cuatrimestre$PARAM$25/06/2010$PARAM$Aprobó Parciales$PARAM$8$PARAM$Aprobado$PARAM$Lujan$PARAM$Romero -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION get_ultima_cursada_valida(integer, integer); CREATE OR REPLACE FUNCTION get_ultima_cursada_valida(_alumno INTEGER, _actividad INTEGER) RETURNS TEXT AS $BODY$ DECLARE _retorno text; cur1 record; BEGIN _retorno := '$PARAM$$PARAM$$PARAM$$PARAM$$PARAM$$PARAM$$PARAM$'; -- Recupero el nombre de las modalidades de cursada FOR cur1 IN SELECT vw_periodos_lectivos.anio_academico as anio_academico, vw_periodos_lectivos.nombre as periodo_lectivo, to_char(vw_regularidades.fecha, 'DD/MM/YYYY') as fecha_regular , sga_cond_regularidad.nombre as condicion_regularidad, COALESCE(vw_regularidades.nota, '') as nota, sga_escalas_notas_resultado.descripcion as resultado_desc, COALESCE(sga_ubicaciones.nombre, '') as ubicacion, COALESCE(sga_catedras.nombre, '') as catedra FROM vw_regularidades LEFT JOIN sga_cond_regularidad ON vw_regularidades.cond_regularidad = sga_cond_regularidad.cond_regularidad, sga_comisiones LEFT JOIN sga_ubicaciones ON sga_comisiones.ubicacion = sga_ubicaciones.ubicacion LEFT JOIN sga_catedras ON sga_comisiones.catedra = sga_catedras.catedra, vw_periodos_lectivos, sga_escalas_notas_resultado WHERE vw_regularidades.alumno = _alumno AND sga_comisiones.comision = vw_regularidades.comision AND sga_comisiones.elemento = _actividad AND vw_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_escalas_notas_resultado.resultado = vw_regularidades.resultado AND (vw_regularidades.fecha_vigencia IS NULL OR vw_regularidades.fecha_vigencia >= CURRENT_DATE) AND vw_regularidades.resultado = 'A' -- Aprobado ORDER BY vw_regularidades.fecha DESC LOOP -- Recupero datos de la ultima cursada aprobada vigente _retorno := cur1.anio_academico::text || '$PARAM$' || cur1.periodo_lectivo || '$PARAM$' ||cur1.condicion_regularidad || '$PARAM$' ||cur1.fecha_regular || '$PARAM$' || cur1.condicion_regularidad; _retorno := _retorno || '$PARAM$' ||cur1.nota || '$PARAM$' || cur1.resultado_desc || '$PARAM$' ||cur1.ubicacion || '$PARAM$' || cur1.catedra; EXIT; END LOOP; RETURN _retorno; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function get_ultima_cursada_valida(integer, integer) ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION get_ultima_cursada_valida (integer, integer) FROM public; GRANT EXECUTE ON FUNCTION get_ultima_cursada_valida (integer, integer) to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha_motivos -- Check: ck_sga_movimientos_ha_motivos_tipo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_movimientos_ha_motivos DROP CONSTRAINT ck_sga_movimientos_ha_motivos_tipo; ALTER TABLE sga_movimientos_ha_motivos ADD CONSTRAINT ck_sga_movimientos_ha_motivos_tipo CHECK (tipo IN ('Invalidar', 'Convalidar')); ALTER TABLE sga_clases_docentes DROP CONSTRAINT pk_sga_clases_docentes; ALTER TABLE sga_clases_docentes ADD CONSTRAINT pk_sga_clases_docentes PRIMARY KEY (clase, docente); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_ausencias_examen -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_ausencias_examen; CREATE TABLE sga_ausencias_examen ( id_acta Integer NOT NULL, alumno Integer NOT NULL, motivo_ausencia Integer NOT NULL, observaciones Varchar(100), estado Varchar(10) NOT NULL DEFAULT 'Aceptado' ); -- ALTER TABLE sga_ausencias_examen DROP CONSTRAINT pk_sga_ausencias_examen; ALTER TABLE sga_ausencias_examen ADD CONSTRAINT pk_sga_ausencias_examen PRIMARY KEY (id_acta,alumno); Revoke all ON sga_ausencias_examen FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_ausencias_examen +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_clases_asistencia; CREATE TABLE sga_clases_asistencia ( clase Integer NOT NULL, alumno Integer NOT NULL, cant_inasistencias Smallint NOT NULL DEFAULT 1, cant_justificadas Smallint NOT NULL DEFAULT 0, motivo_ausencia Integer, activo Smallint NOT NULL DEFAULT 1 ); -- ALTER TABLE sga_clases_asistencia DROP CONSTRAINT pk_sga_clases_asistencia; ALTER TABLE sga_clases_asistencia ADD CONSTRAINT pk_sga_clases_asistencia PRIMARY KEY (clase,alumno); Revoke all ON sga_clases_asistencia FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_clases_asistencia +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_ausencias_docentes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_clases_ausencias_docentes; CREATE TABLE sga_clases_ausencias_docentes ( clase Integer NOT NULL, docente Integer NOT NULL, motivo_ausencia Integer NOT NULL, observaciones Varchar(100), estado Varchar(10) NOT NULL DEFAULT 'Aceptado' ); -- ALTER TABLE sga_clases_ausencias_docentes DROP CONSTRAINT pk_sga_clases_ausencias_docentes; ALTER TABLE sga_clases_ausencias_docentes ADD CONSTRAINT pk_sga_clases_ausencias_docentes PRIMARY KEY (clase,docente); Revoke all ON sga_clases_ausencias_docentes FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_clases_ausencias_docentes +++++++++++++++++++++++++++++ GRANT select ON sga_ausencias_examen TO public; GRANT update ON sga_ausencias_examen TO public; GRANT delete ON sga_ausencias_examen TO public; GRANT insert ON sga_ausencias_examen TO public; GRANT select ON sga_clases_asistencia TO public; GRANT update ON sga_clases_asistencia TO public; GRANT delete ON sga_clases_asistencia TO public; GRANT insert ON sga_clases_asistencia TO public; GRANT select ON sga_clases_ausencias_docentes TO public; GRANT update ON sga_clases_ausencias_docentes TO public; GRANT delete ON sga_clases_ausencias_docentes TO public; GRANT insert ON sga_clases_ausencias_docentes TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_docentes_mesa_examen -- -- Retorna los docents (apellido y nombre) asignados a la mesa de examen en el llamado -- -- Recibe: f_docentes_mesa_examen(integer) -- 1. ID de la mesa de examen en un llamado -- Retorna: -- 1. Nombres de los docentes asignados a la mesa en el llamado -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_docentes_mesa_examen(integer); CREATE OR REPLACE FUNCTION f_docentes_mesa_examen(_llamado_mesa INTEGER) RETURNS TEXT AS $BODY$ DECLARE cnt smallint; _docentes text; cur1 record; BEGIN cnt := 0; _docentes := NULL; -- Recupero el nombre de los docentes FOR cur1 IN SELECT mdp_personas.apellido as apellido, mdp_personas.nombres as nombre FROM sga_docentes_mesa_llamado, sga_docentes, mdp_personas WHERE sga_docentes_mesa_llamado.llamado_mesa = _llamado_mesa AND sga_docentes.docente = sga_docentes_mesa_llamado.docente AND mdp_personas.persona = sga_docentes.persona LOOP IF cnt = 0 THEN _docentes := cur1.apellido || ' ' || cur1.nombre; ELSE _docentes := _docentes || ', ' || cur1.apellido || ' ' || cur1.nombre; END IF; cnt := cnt + 1; END LOOP; RETURN _docentes; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_docentes_mesa_examen(integer) ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_docentes_mesa_examen (integer) FROM public; GRANT EXECUTE ON FUNCTION f_docentes_mesa_examen (integer) to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_ausencias_examen -- Check: ck_sga_ausencias_examen_estado -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_ausencias_examen DROP CONSTRAINT ck_sga_ausencias_examen_estado; ALTER TABLE sga_ausencias_examen ADD CONSTRAINT ck_sga_ausencias_examen_estado CHECK (estado IN ('Aceptado','Rechazado')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia -- Check: ck_sga_clases_asistencia_activo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_clases_asistencia DROP CONSTRAINT ck_sga_clases_asistencia_activo; ALTER TABLE sga_clases_asistencia ADD CONSTRAINT ck_sga_clases_asistencia_activo CHECK (activo IN (1, 0)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_ausencias_docentes -- Check: ck_sga_clases_ausencias_docentes_estado -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_clases_ausencias_docentes DROP CONSTRAINT ck_sga_clases_ausencias_docentes_estado; ALTER TABLE sga_clases_ausencias_docentes ADD CONSTRAINT ck_sga_clases_ausencias_docentes_estado CHECK (estado IN ('Aceptado','Rechazado')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_ausencias_examen -- FK: fk_sga_ausencias_examen_sga_actas_detalle -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_ausencias_examen_sga_actas_detalle; CREATE INDEX ifk_sga_ausencias_examen_sga_actas_detalle ON sga_ausencias_examen (id_acta,alumno); -- ALTER TABLE sga_ausencias_examen DROP CONSTRAINT fk_sga_ausencias_examen_sga_actas_detalle; ALTER TABLE sga_ausencias_examen ADD CONSTRAINT fk_sga_ausencias_examen_sga_actas_detalle FOREIGN KEY (id_acta,alumno) REFERENCES sga_actas_detalle (id_acta,alumno) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_ausencias_examen -- FK: fk_sga_ausencias_examen_sga_motivos_ausencias -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_ausencias_examen_sga_motivos_ausencias; CREATE INDEX ifk_sga_ausencias_examen_sga_motivos_ausencias ON sga_ausencias_examen (motivo_ausencia); -- ALTER TABLE sga_ausencias_examen DROP CONSTRAINT fk_sga_ausencias_examen_sga_motivos_ausencias; ALTER TABLE sga_ausencias_examen ADD CONSTRAINT fk_sga_ausencias_examen_sga_motivos_ausencias FOREIGN KEY (motivo_ausencia) REFERENCES sga_motivos_ausencias (motivo_ausencia) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia -- FK: fk_sga_clases_asistencia_sga_alumnos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_asistencia_sga_alumnos; CREATE INDEX ifk_sga_clases_asistencia_sga_alumnos ON sga_clases_asistencia (alumno); -- ALTER TABLE sga_clases_asistencia DROP CONSTRAINT fk_sga_clases_asistencia_sga_alumnos; ALTER TABLE sga_clases_asistencia ADD CONSTRAINT fk_sga_clases_asistencia_sga_alumnos FOREIGN KEY (alumno) REFERENCES sga_alumnos (alumno) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia -- FK: fk_sga_clases_asistencia_sga_clases -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_asistencia_sga_clases; CREATE INDEX ifk_sga_clases_asistencia_sga_clases ON sga_clases_asistencia (clase); -- ALTER TABLE sga_clases_asistencia DROP CONSTRAINT fk_sga_clases_asistencia_sga_clases; ALTER TABLE sga_clases_asistencia ADD CONSTRAINT fk_sga_clases_asistencia_sga_clases FOREIGN KEY (clase) REFERENCES sga_clases (clase) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia -- FK: fk_sga_clases_asistencia_sga_motivos_ausencias -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_asistencia_sga_motivos_ausencias; CREATE INDEX ifk_sga_clases_asistencia_sga_motivos_ausencias ON sga_clases_asistencia (motivo_ausencia); -- ALTER TABLE sga_clases_asistencia DROP CONSTRAINT fk_sga_clases_asistencia_sga_motivos_ausencias; ALTER TABLE sga_clases_asistencia ADD CONSTRAINT fk_sga_clases_asistencia_sga_motivos_ausencias FOREIGN KEY (motivo_ausencia) REFERENCES sga_motivos_ausencias (motivo_ausencia) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_ausencias_docentes -- FK: fk_sga_clases_ausencias_docentes_sga_clases -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_ausencias_docentes_sga_clases; CREATE INDEX ifk_sga_clases_ausencias_docentes_sga_clases ON sga_clases_ausencias_docentes (clase); -- ALTER TABLE sga_clases_ausencias_docentes DROP CONSTRAINT fk_sga_clases_ausencias_docentes_sga_clases; ALTER TABLE sga_clases_ausencias_docentes ADD CONSTRAINT fk_sga_clases_ausencias_docentes_sga_clases FOREIGN KEY (clase) REFERENCES sga_clases (clase) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_ausencias_docentes -- FK: fk_sga_clases_ausencias_docentes_sga_docentes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_ausencias_docentes_sga_docentes; CREATE INDEX ifk_sga_clases_ausencias_docentes_sga_docentes ON sga_clases_ausencias_docentes (docente); -- ALTER TABLE sga_clases_ausencias_docentes DROP CONSTRAINT fk_sga_clases_ausencias_docentes_sga_docentes; ALTER TABLE sga_clases_ausencias_docentes ADD CONSTRAINT fk_sga_clases_ausencias_docentes_sga_docentes FOREIGN KEY (docente) REFERENCES sga_docentes (docente) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_ausencias_docentes -- FK: fk_sga_clases_ausencias_docentes_sga_motivos_ausencias -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_ausencias_docentes_sga_motivos_ausencias; CREATE INDEX ifk_sga_clases_ausencias_docentes_sga_motivos_ausencias ON sga_clases_ausencias_docentes (motivo_ausencia); -- ALTER TABLE sga_clases_ausencias_docentes DROP CONSTRAINT fk_sga_clases_ausencias_docentes_sga_motivos_ausencias; ALTER TABLE sga_clases_ausencias_docentes ADD CONSTRAINT fk_sga_clases_ausencias_docentes_sga_motivos_ausencias FOREIGN KEY (motivo_ausencia) REFERENCES sga_motivos_ausencias (motivo_ausencia) on update restrict on delete restrict; ALTER TABLE sga_clases_asistencia ALTER COLUMN cant_inasistencias SET DEFAULT 0; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_crear_clases_banda_horaria -- -- Crea las clases de una banda horaria (sga_clases) -- * Si la fecha es no laborable (sga_dias_no_laborables) la clase se genera pero como no valida. -- * Se crean clases segun la periodicidad y la fecha de inicio y fin de la asignación -- * No se tienen en cuenta los tramos del periodo lectivo -- * Se generan las clases en el rango de fechas definido en la asignación asociada a la banda horaria. -- -- Esta funcion se dispara desde el trigger de insert de la tabla sga_comisiones_bh (tia_sga_comisones_bh) -- -- Recibe: -- 1. ID de la Banda horaria -- Retorna: -- 1. Cantidad de Clases generadas -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_crear_clases_banda_horaria(integer); CREATE OR REPLACE FUNCTION f_crear_clases_banda_horaria(_bandahoraria Integer) RETURNS INTEGER AS $BODY$ DECLARE cnt integer; _crear_clase boolean; _dia_semana varchar(10); _periodicidad varchar(10); _fecha date; _fecha_desde date; _fecha_hasta date; _valido smallint; _dia_semana_fecha smallint; _fecha_no_valida smallint; BEGIN cnt := 0; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recupero datos de la asignación horaria -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT dia_semana, periodicidad, fecha_desde, fecha_hasta INTO _dia_semana, _periodicidad, _fecha_desde, _fecha_hasta FROM sga_comisiones_bh, sga_asignaciones WHERE sga_comisiones_bh.asignacion = sga_asignaciones.asignacion AND sga_comisiones_bh.banda_horaria = _bandahoraria; -- Recorro todos los dias desde la fecha de inicio y fecha de finalizacion de la asignacion _fecha := _fecha_desde; cnt := 0; WHILE _fecha <= _fecha_hasta LOOP -- 0 = Domingo.... 6 = Sabado _dia_semana_fecha := (SELECT EXTRACT(DOW FROM _fecha)); IF (_dia_semana = 'Domingo' and _dia_semana_fecha = 0) OR (_dia_semana = 'Lunes' and _dia_semana_fecha = 1) OR (_dia_semana = 'Martes' and _dia_semana_fecha = 2) OR (_dia_semana = 'Miercoles' and _dia_semana_fecha = 3) OR (_dia_semana = 'Jueves' and _dia_semana_fecha = 4) OR (_dia_semana = 'Viernes' and _dia_semana_fecha = 5) OR (_dia_semana = 'Sabado' and _dia_semana_fecha = 6) THEN -- Verifico si la clase cae en un dia no laborable. SELECT COUNT(*) INTO _fecha_no_valida FROM sga_dias_no_laborables WHERE fecha = _fecha; IF _fecha_no_valida > 0 THEN _valido := 0; ELSE _valido := 1; END IF; -- Genero la clase cnt := cnt + 1; INSERT INTO sga_clases (banda_horaria, fecha, valido) VALUES (_bandahoraria, _fecha, 1); -- sumo dias segun la periodicidad IF _periodicidad = 'Semanal' THEN _fecha := _fecha + 7; ELSEIF _periodicidad = 'Quincenal' THEN _fecha := _fecha + 14; ELSEIF _periodicidad = 'Mensual' THEN _fecha := _fecha + 28; ELSE _fecha := _fecha + 1; END IF; ELSE -- sumo un dia _fecha := _fecha + 1; END IF; END LOOP; -- Retorno cantidad de clases generadas RETURN cnt; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_crear_clases_banda_horaria ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_crear_clases_banda_horaria (integer) FROM public; GRANT EXECUTE ON FUNCTION f_crear_clases_banda_horaria (integer) to public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de INSERT: tia_sga_comisiones_bh -- AFTER INSERT -- Tabla: sga_comisiones_bh -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION ftia_sga_comisiones_bh (); CREATE OR REPLACE FUNCTION ftia_sga_comisiones_bh () RETURNS trigger AS $BODY$ DECLARE _cant_clases integer; BEGIN -- Crea las clases en sga_clases segun asignación y comision. _cant_clases := f_crear_clases_banda_horaria(NEW.banda_horaria); RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de INSERT sobre sga_comisiones_bh -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tia_sga_comisiones_bh ON sga_comisiones_bh RESTRICT; CREATE TRIGGER tia_sga_comisiones_bh AFTER INSERT ON sga_comisiones_bh FOR EACH ROW EXECUTE PROCEDURE ftia_sga_comisiones_bh(); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_requisitos_excepciones -- Secuencia: sga_requisitos_excepciones_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_requisitos_excepciones_seq; CREATE SEQUENCE sga_requisitos_excepciones_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_requisitos_excepciones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_requisitos_excepciones; CREATE TABLE sga_requisitos_excepciones ( excepcion INTEGER NOT NULL DEFAULT nextval('sga_requisitos_excepciones_seq'::text) , alumno Integer NOT NULL, requisito Integer NOT NULL, accion Integer NOT NULL, fecha_desde Date NOT NULL, fecha_hasta Date NOT NULL, fecha_alta Timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, persona Integer NOT NULL, observaciones Varchar(200) ); -- ALTER TABLE sga_requisitos_excepciones DROP CONSTRAINT pk_sga_requisitos_excepciones; ALTER TABLE sga_requisitos_excepciones ADD CONSTRAINT pk_sga_requisitos_excepciones PRIMARY KEY (excepcion); Revoke all ON sga_requisitos_excepciones FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_requisitos_excepciones +++++++++++++++++++++++++++++ GRANT select ON sga_requisitos_excepciones TO public; GRANT update ON sga_requisitos_excepciones TO public; GRANT delete ON sga_requisitos_excepciones TO public; GRANT insert ON sga_requisitos_excepciones TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_requisitos_excepciones -- FK: fk_sga_requisitos_excepciones_mdp_personas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_requisitos_excepciones_mdp_personas; CREATE INDEX ifk_sga_requisitos_excepciones_mdp_personas ON sga_requisitos_excepciones (persona); -- ALTER TABLE sga_requisitos_excepciones DROP CONSTRAINT fk_sga_requisitos_excepciones_mdp_personas; ALTER TABLE sga_requisitos_excepciones ADD CONSTRAINT fk_sga_requisitos_excepciones_mdp_personas FOREIGN KEY (persona) REFERENCES mdp_personas (persona) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_requisitos_excepciones -- FK: fk_sga_requisitos_excepciones_sga_acciones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_requisitos_excepciones_sga_acciones; CREATE INDEX ifk_sga_requisitos_excepciones_sga_acciones ON sga_requisitos_excepciones (accion); -- ALTER TABLE sga_requisitos_excepciones DROP CONSTRAINT fk_sga_requisitos_excepciones_sga_acciones; ALTER TABLE sga_requisitos_excepciones ADD CONSTRAINT fk_sga_requisitos_excepciones_sga_acciones FOREIGN KEY (accion) REFERENCES sga_acciones (accion) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_requisitos_excepciones -- FK: fk_sga_requisitos_excepciones_sga_alumnos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_requisitos_excepciones_sga_alumnos; CREATE INDEX ifk_sga_requisitos_excepciones_sga_alumnos ON sga_requisitos_excepciones (alumno); -- ALTER TABLE sga_requisitos_excepciones DROP CONSTRAINT fk_sga_requisitos_excepciones_sga_alumnos; ALTER TABLE sga_requisitos_excepciones ADD CONSTRAINT fk_sga_requisitos_excepciones_sga_alumnos FOREIGN KEY (alumno) REFERENCES sga_alumnos (alumno) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_requisitos_excepciones -- FK: fk_sga_requisitos_excepciones_sga_requisitos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_requisitos_excepciones_sga_requisitos; CREATE INDEX ifk_sga_requisitos_excepciones_sga_requisitos ON sga_requisitos_excepciones (requisito); -- ALTER TABLE sga_requisitos_excepciones DROP CONSTRAINT fk_sga_requisitos_excepciones_sga_requisitos; ALTER TABLE sga_requisitos_excepciones ADD CONSTRAINT fk_sga_requisitos_excepciones_sga_requisitos FOREIGN KEY (requisito) REFERENCES sga_requisitos (requisito) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_requisitos_excepciones -- Actualizacion Nro de Secuencia: sga_requisitos_excepciones_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_requisitos_excepciones_seq',(SELECT MAX(excepcion) FROM sga_requisitos_excepciones)); DROP TRIGGER tia_sga_comisiones_bh ON sga_comisiones_bh RESTRICT; DROP FUNCTION ftia_sga_comisiones_bh (); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_crear_clases_banda_horaria -- -- Crea las clases de una banda horaria (sga_clases) -- * Si la fecha es no laborable (sga_dias_no_laborables) la clase se genera pero como no valida. -- * Se crean clases segun la periodicidad y la fecha de inicio y fin de la asignación -- * No se tienen en cuenta los tramos del periodo lectivo -- * Se generan las clases en el rango de fechas definido en la asignación asociada a la banda horaria. -- -- Esta funcion se dispara desde el trigger de insert de la tabla sga_comisiones_bh (tia_sga_comisones_bh) -- -- Recibe: -- 1. ID de la Banda horaria -- 2. Fecha de inicio -- 3. Fecha de finalizacion -- 4. Periodicidad -- 5. Dia de la semana -- -- Retorna: -- 1. Cantidad de Clases generadas -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_crear_clases_banda_horaria(integer, date, date, varchar, varchar); CREATE OR REPLACE FUNCTION f_crear_clases_banda_horaria( pBandaHoraria Integer, pFechaDesde date, pFechaHasta date, pPeriodicidad varchar(10), pDiaSemana varchar(10)) RETURNS INTEGER AS $BODY$ DECLARE cnt integer; _crear_clase boolean; _fecha date; _valido smallint; _dia_semana_fecha smallint; _fecha_no_valida smallint; BEGIN cnt := 0; -- Recorro todos los dias desde la fecha de inicio y fecha de finalizacion de la asignacion _fecha := pFechaDesde; cnt := 0; WHILE _fecha <= pFechaHasta LOOP -- 0 = Domingo.... 6 = Sabado _dia_semana_fecha := (SELECT EXTRACT(DOW FROM _fecha)); IF (pDiaSemana = 'Domingo' and _dia_semana_fecha = 0) OR (pDiaSemana = 'Lunes' and _dia_semana_fecha = 1) OR (pDiaSemana = 'Martes' and _dia_semana_fecha = 2) OR (pDiaSemana = 'Miercoles' and _dia_semana_fecha = 3) OR (pDiaSemana = 'Jueves' and _dia_semana_fecha = 4) OR (pDiaSemana = 'Viernes' and _dia_semana_fecha = 5) OR (pDiaSemana = 'Sabado' and _dia_semana_fecha = 6) THEN -- Verifico si la clase cae en un dia no laborable. SELECT COUNT(*) INTO _fecha_no_valida FROM sga_dias_no_laborables WHERE fecha = _fecha; IF _fecha_no_valida > 0 THEN _valido := 0; ELSE _valido := 1; END IF; -- Genero la clase cnt := cnt + 1; INSERT INTO sga_clases (banda_horaria, fecha, valido) VALUES (pBandaHoraria, _fecha, 1); -- sumo dias segun la periodicidad IF pPeriodicidad = 'Semanal' THEN _fecha := _fecha + 7; ELSEIF pPeriodicidad = 'Quincenal' THEN _fecha := _fecha + 14; ELSEIF pPeriodicidad = 'Mensual' THEN _fecha := _fecha + 28; ELSE _fecha := _fecha + 1; END IF; ELSE -- sumo un dia _fecha := _fecha + 1; END IF; END LOOP; -- Retorno cantidad de clases generadas RETURN cnt; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_crear_clases_banda_horaria ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_crear_clases_banda_horaria (integer, date, date, varchar, varchar) FROM public; GRANT EXECUTE ON FUNCTION f_crear_clases_banda_horaria (integer, date, date, varchar, varchar) to public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_actualizar_clases_banda_horaria -- -- Crea/Borra las clases de las bandas horarias asociadas a una asignación (sga_clases) -- * Si la fecha es no laborable (sga_dias_no_laborables) la clase se genera pero como no valida. -- * Se crean clases segun la periodicidad y la fecha de inicio y fin de la asignación -- * No se tienen en cuenta los tramos del periodo lectivo -- * Se generan las clases en el rango de fechas definido en la asignación asociada a la banda horaria. -- -- Esta funcion se dispara desde el trigger de update de la tabla sga_asignaciones (tua_sga_asignaciones) -- -- Recibe: -- 1. ID de la Asignación -- 2. Periodicidad de la asignacion -- 3. Fecha de Inicio anterior de la Asignación -- 4. Fecha de Finalización anterior de la Asignación -- 5. Fecha de Inicio nueva de la Asignación -- 6. Fecha de Finalización nueva de la Asignación -- -- Retorna: -- 1. Cantidad de Clases generadas -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_actualizar_clases_banda_horaria(integer, date, date, date, date, varchar, varchar); CREATE OR REPLACE FUNCTION f_actualizar_clases_banda_horaria( pAsignacion Integer, pFechaDesdeAnt date, pFechaHastaAnt date, pFechaDesde date, pFechaHasta date, pPeriodicidad varchar(10), pDiaSemana varchar(10)) RETURNS INTEGER AS $BODY$ DECLARE cnt integer; cur_bh record; _fecha_hasta date; _fecha_desde date; _cant_clases integer; BEGIN cnt := 0; -- Declaro un cursor para recuperar las bandas horarias asociadas a la asignacion, puede haber mas de una si hay comisiones -- que comparten bandas horarias (asignaciones) FOR cur_bh IN SELECT banda_horaria FROM sga_comisiones_bh WHERE asignacion = pAsignacion LOOP -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- BORRO CLASES -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Se corrió la fecha de inicio, debo eliminar las clases anteriores a la fecha de inicio nueva IF pFechaDesdeAnt < pFechaDesde THEN DELETE FROM sga_clases WHERE sga_clases.banda_horaria = cur_bh.banda_horaria AND sga_clases.fecha < pFechaDesde; END IF; IF pFechaHasta < pFechaHastaAnt THEN DELETE FROM sga_clases WHERE sga_clases.banda_horaria = cur_bh.banda_horaria AND sga_clases.fecha > pFechaHasta; END IF; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- CREO CLASES -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Si adelanto la fecha de inicio, entonces creo las clases faltantes. IF pFechaDesde < pFechaDesdeAnt THEN _fecha_hasta := pFechaDesdeAnt - 1; -- creo clases hasta el dia anterior a la fecha de inicio anterior. _cant_clases := f_crear_clases_banda_horaria(_banda_horaria, pFechaDesde, _fecha_hasta, pPeriodicidad, pDiaSemana); END IF; -- Si extiendo la asignacion, creo las creo las clases faltantes. IF pFechaHasta > pFechaHastaAnt THEN _fecha_desde := pFechaHastaAnt + 1; -- sumo un dia a la fecha fin anterior _cant_clases := f_crear_clases_banda_horaria(cur_bh.banda_horaria, _fecha_desde, pFechaHasta, pPeriodicidad, pDiaSemana); END IF; END LOOP; -- Bandas horarias -- Retorno cantidad de clases generadas RETURN cnt; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_actualizar_clases_banda_horaria ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_actualizar_clases_banda_horaria (integer, date, date, date, date, varchar, varchar) FROM public; GRANT EXECUTE ON FUNCTION f_actualizar_clases_banda_horaria (integer, date, date, date, date, varchar, varchar) to public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE: tdb_sga_comisiones_bh -- BEFORE DELETE -- Tabla: sga_comisiones_bh -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION ftdb_sga_comisiones_bh (); CREATE OR REPLACE FUNCTION ftdb_sga_comisiones_bh () RETURNS trigger AS $BODY$ BEGIN -- Borro la banda horaria de las subcomisiones DELETE FROM sga_subcomisiones_bh WHERE banda_horaria = OLD.banda_horaria; -- Borro las clases de la banda horaria DELETE FROM sga_clases WHERE banda_horaria = OLD.banda_horaria; RETURN OLD; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE sobre sga_comisiones_bh -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tdb_sga_comisiones_bh ON sga_comisiones_bh RESTRICT; CREATE TRIGGER tdb_sga_comisiones_bh BEFORE DELETE ON sga_comisiones_bh FOR EACH ROW EXECUTE PROCEDURE ftdb_sga_comisiones_bh(); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de INSERT: tia_sga_comisiones_bh -- AFTER INSERT -- Tabla: sga_comisiones_bh -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION ftia_sga_comisiones_bh (); CREATE OR REPLACE FUNCTION ftia_sga_comisiones_bh () RETURNS trigger AS $BODY$ DECLARE _dia_semana varchar(10); _periodicidad varchar(10); _fecha_desde date; _fecha_hasta date; _cant_clases integer; BEGIN -- Crea las clases en sga_clases segun asignación y comision. SELECT fecha_desde, fecha_hasta, periodicidad, dia_semana INTO _fecha_desde, _fecha_hasta, _periodicidad, _dia_semana FROM sga_asignaciones WHERE asignacion = NEW.asignacion; _cant_clases := f_crear_clases_banda_horaria(NEW.banda_horaria, _fecha_desde, _fecha_hasta, _periodicidad, _dia_semana); RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de INSERT sobre sga_comisiones_bh -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tia_sga_comisiones_bh ON sga_comisiones_bh RESTRICT; CREATE TRIGGER tia_sga_comisiones_bh AFTER INSERT ON sga_comisiones_bh FOR EACH ROW EXECUTE PROCEDURE ftia_sga_comisiones_bh(); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de UPDATE: tua_sga_asignaciones -- AFTER UPDATE -- Tabla: sga_asignaciones -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION ftua_sga_asignaciones (); CREATE OR REPLACE FUNCTION ftua_sga_asignaciones () RETURNS trigger AS $BODY$ DECLARE _cant_clases Integer; BEGIN -- Si cambió la fecha desde/hasta entonces actualizo las clases de las bandas horarias asociadas IF OLD.fecha_desde <> NEW.fecha_desde OR OLD.fecha_hasta <> NEW.fecha_hasta THEN _cant_clases := f_actualizar_clases_banda_horaria (NEW.asignacion, NEW.fecha_desde, NEW.fecha_hasta, OLD.fecha_desde, OLD.fecha_hasta, NEW.periodicidad, NEW.dia_semana); END IF; RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de UPDATE sobre sga_asignaciones -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tua_sga_asignaciones ON sga_asignaciones RESTRICT; CREATE TRIGGER tua_sga_asignaciones AFTER UPDATE ON sga_asignaciones FOR EACH ROW EXECUTE PROCEDURE ftua_sga_asignaciones(); -- Agrego columna "pais_origen" ALTER TABLE mdp_personas ADD COLUMN pais_origen Integer; -- Agrego campo "orden_principal" ALTER TABLE mdp_tipo_documento ADD COLUMN orden_principal Integer NOT NULL DEFAULT 1; UPDATE mdp_tipo_documento SET orden_principal = 1 WHERE tipo_documento = 0; UPDATE mdp_tipo_documento SET orden_principal = 2 WHERE tipo_documento = 1; UPDATE mdp_tipo_documento SET orden_principal = 3 WHERE tipo_documento = 2; UPDATE mdp_tipo_documento SET orden_principal = 4 WHERE tipo_documento = 3; UPDATE mdp_tipo_documento SET orden_principal = 5 WHERE tipo_documento = 18; UPDATE mdp_tipo_documento SET orden_principal = 6 WHERE tipo_documento = 19; UPDATE mdp_tipo_documento SET orden_principal = 7 WHERE tipo_documento = 90; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_personas_extranjeros -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS mdp_personas_extranjeros; CREATE TABLE mdp_personas_extranjeros ( persona Integer NOT NULL, tipo_visa Integer, otorgamiento_visa Date, vencimiento_visa Date, tipo_residencia Integer, residencia_cupo Char(1), otorgamiento_residencia Date, vencimiento_residencia Date ); -- ALTER TABLE mdp_personas_extranjeros DROP CONSTRAINT pk_mdp_personas_extranjeros; ALTER TABLE mdp_personas_extranjeros ADD CONSTRAINT pk_mdp_personas_extranjeros PRIMARY KEY (persona); Revoke all ON mdp_personas_extranjeros FROM public; -- ++++++++++++++++++++++++++ Fin tabla mdp_personas_extranjeros +++++++++++++++++++++++++++++ GRANT select ON mdp_personas_extranjeros TO public; GRANT update ON mdp_personas_extranjeros TO public; GRANT delete ON mdp_personas_extranjeros TO public; GRANT insert ON mdp_personas_extranjeros TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_actividades_con_mesas_vigentes -- -- Recupera actividades que tienen mesas de examen con: -- - Fecha mayor o igual a la fecha actual. -- - Períodos de inscripcion vigentes y habilitados -- - Periodos de inscripcion definidos para la version del plan de estudios pasado por parametro -- y para la ubicación y modalidad de la mesa de examen. -- -- Recibe: -- 1. Propuesta del alumno -- 2. Plan del alumno -- 3. Version de Plan del alumno -- 4. Dentro de un período de inscripción activo: true - Si / false - No -- 5. Si parámetro "exa_rinde_en_cualquier_ubicacion" = 'N' entonces recibe la ubicacion del alumno (sga_alumnos.ubicacion) -- Retorna: -- 1. Integer: ID de las actividades que tienen mesas de examen. (sga_elementos.elemento) -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version. -- DROP FUNCTION f_actividades_con_mesas_vigentes(integer, integer, integer, boolean, integer); CREATE OR REPLACE FUNCTION f_actividades_con_mesas_vigentes(_propuesta integer, _plan integer,_id_plan_version integer, _en_periodo_insc boolean, _ubicacion integer) RETURNS SETOF INTEGER AS $BODY$ DECLARE cur_actividad RECORD; BEGIN /* Parametros: 1. Propuesta del Alumno 2. Plan del Alumno 3. Version de Plan del Alumno 4. Si debe estar dentro de un período de inscripción activo de mesas futuras 5. Si solo rinde en la ubicacion del alumno, recibe la ubicacion. */ -- Creo tabla temporal CREATE TEMP TABLE tmp_llamados ( llamado_mesa integer, mesa_examen integer, periodo_insc integer, periodo_inscripcion integer, fecha_inicio timestamp, fecha_fin timestamp, hs_previas_fin smallint, elemento integer); -- lleno tabla temporal con actividades que tienen mesas de examen con fecha igual o mayor a la actual -- y segun parametro que define que la mesa sea de la ubicación del alumno. INSERT INTO tmp_llamados (mesa_examen, elemento, llamado_mesa, periodo_insc, fecha_inicio, fecha_fin, hs_previas_fin, periodo_inscripcion) SELECT DISTINCT sga_mesas_examen.mesa_examen, sga_mesas_examen.elemento, sga_llamados_mesa.llamado_mesa, sga_periodos_inscripcion_fechas.periodo_insc, sga_periodos_inscripcion_fechas.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_fin, sga_periodos_inscripcion_fechas.hs_previas_fin, sga_periodos_inscripcion_fechas.periodo_inscripcion FROM sga_llamados_mesa, sga_llamados_turno, sga_mesas_examen, sga_mesas_examen_propuestas, sga_periodos_inscripcion_fechas, sga_periodos_inscripcion, sga_periodos_inscripcion_aplanado, sga_per_insc_ubicacion WHERE sga_llamados_mesa.fecha >= CURRENT_DATE AND sga_llamados_mesa.mesa_examen = sga_mesas_examen.mesa_examen AND sga_mesas_examen_propuestas.mesa_examen = sga_mesas_examen.mesa_examen AND sga_mesas_examen_propuestas.propuesta = _propuesta AND sga_mesas_examen_propuestas.plan = _plan AND sga_llamados_turno.llamado = sga_llamados_mesa.llamado AND sga_periodos_inscripcion.periodo = sga_llamados_turno.periodo AND sga_periodos_inscripcion.periodo_inscripcion = sga_periodos_inscripcion_fechas.periodo_inscripcion AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _id_plan_version AND sga_per_insc_ubicacion.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_per_insc_ubicacion.ubicacion = sga_mesas_examen.ubicacion AND (_ubicacion IS NULL OR (_ubicacion IS NOT NULL AND sga_mesas_examen.ubicacion = _ubicacion)); -- Si la fecha de finalizacion es el campo fecha_fin, se FOR cur_actividad IN ( SELECT t.elemento as elemento FROM tmp_llamados as t LEFT JOIN sga_llamados_mesa_excep_perinsc as e ON e.periodo_insc = t.periodo_insc AND e.llamado_mesa = t.llamado_mesa, sga_llamados_mesa WHERE t.llamado_mesa = sga_llamados_mesa.llamado_mesa -- fecha de inicio del periodo de insc. AND CURRENT_DATE >= COALESCE(e.fecha_inicio, t.fecha_inicio) AND ((-- fecha y hora actual se encuentre en un período de inscripcion de la mesa _en_periodo_insc = true AND CURRENT_TIMESTAMP BETWEEN COALESCE(e.fecha_inicio, t.fecha_inicio) AND COALESCE(e.fecha_fin, CASE WHEN e.hs_previas_fin IS NOT NULL THEN CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(e.hs_previas_fin as text) || ' hours' as interval) WHEN e.hs_previas_fin IS NULL THEN COALESCE(t.fecha_fin, CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval)) END ) ) OR (-- Fuera de un periodo de inscripción _en_periodo_insc = false AND -- CURRENT_TIMESTAMP < COALESCE(e.fecha_inicio, t.fecha_inicio) AND CURRENT_TIMESTAMP > COALESCE((e.fecha_fin + CAST('1 days' AS INTERVAL)), -- Porque es fecha y hora CASE WHEN e.hs_previas_fin IS NOT NULL THEN CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(e.hs_previas_fin as text) || ' hours' as interval) WHEN e.hs_previas_fin IS NULL THEN COALESCE(t.fecha_fin + CAST('1 days' AS INTERVAL), CAST(sga_llamados_mesa.fecha::text || ' ' || sga_llamados_mesa.hora_inicio::text as timestamp) - cast(cast(t.hs_previas_fin as text) || ' hours' as interval)) END ) ) ) -- MODALIDAD AND EXISTS (SELECT 1 FROM sga_per_insc_modalidad WHERE sga_per_insc_modalidad.periodo_inscripcion = t.periodo_inscripcion AND sga_per_insc_modalidad.modalidad IN (SELECT modalidad FROM sga_mesas_examen_modalidad WHERE sga_mesas_examen_modalidad.mesa_examen = t.mesa_examen) ) ) LOOP -- Retorno la actividad que tiene mesa con periodo de insc vigente en este momento. RETURN NEXT cur_actividad.elemento; END LOOP; -- Borro la tabla temporal DROP TABLE tmp_llamados; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++ Fin Function f_actividades_con_mesas_vigentes +++++++++++++++++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_actividades_con_mesas_vigentes FROM public; GRANT EXECUTE ON FUNCTION f_actividades_con_mesas_vigentes(integer, integer, integer, boolean, integer) TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_personas_extranjeros -- Check: ck_mdp_personas_extranjeros_residencia_cupo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE mdp_personas_extranjeros DROP CONSTRAINT ck_mdp_personas_extranjeros_residencia_cupo; ALTER TABLE mdp_personas_extranjeros ADD CONSTRAINT ck_mdp_personas_extranjeros_residencia_cupo CHECK (residencia_cupo IN ( 'S', 'N' )); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_personas_extranjeros -- FK: fk_mdp_personas_extranjeros_mdp_personas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mdp_personas_extranjeros_mdp_personas; CREATE INDEX ifk_mdp_personas_extranjeros_mdp_personas ON mdp_personas_extranjeros (persona); -- ALTER TABLE mdp_personas_extranjeros DROP CONSTRAINT fk_mdp_personas_extranjeros_mdp_personas; ALTER TABLE mdp_personas_extranjeros ADD CONSTRAINT fk_mdp_personas_extranjeros_mdp_personas FOREIGN KEY (persona) REFERENCES mdp_personas (persona) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_personas_extranjeros -- FK: fk_mdp_personas_extranjeros_mdp_tipo_residencia -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mdp_personas_extranjeros_mdp_tipo_residencia; CREATE INDEX ifk_mdp_personas_extranjeros_mdp_tipo_residencia ON mdp_personas_extranjeros (tipo_residencia); -- ALTER TABLE mdp_personas_extranjeros DROP CONSTRAINT fk_mdp_personas_extranjeros_mdp_tipo_residencia; ALTER TABLE mdp_personas_extranjeros ADD CONSTRAINT fk_mdp_personas_extranjeros_mdp_tipo_residencia FOREIGN KEY (tipo_residencia) REFERENCES mdp_tipo_residencia (tipo_residencia) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_personas_extranjeros -- FK: fk_mdp_personas_extranjeros_mdp_tipo_visa -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mdp_personas_extranjeros_mdp_tipo_visa; CREATE INDEX ifk_mdp_personas_extranjeros_mdp_tipo_visa ON mdp_personas_extranjeros (tipo_visa); -- ALTER TABLE mdp_personas_extranjeros DROP CONSTRAINT fk_mdp_personas_extranjeros_mdp_tipo_visa; ALTER TABLE mdp_personas_extranjeros ADD CONSTRAINT fk_mdp_personas_extranjeros_mdp_tipo_visa FOREIGN KEY (tipo_visa) REFERENCES mdp_tipo_visa (tipo_visa) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Version 3.0.0 -- Tabla: mdp_personas -- FK: fk_mdp_personas_mug_paises -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mdp_personas_mug_paises; CREATE INDEX ifk_mdp_personas_mug_paises ON mdp_personas (pais_origen); -- ALTER TABLE mdp_personas DROP CONSTRAINT fk_mdp_personas_mug_paises; ALTER TABLE mdp_personas ADD CONSTRAINT fk_mdp_personas_mug_paises FOREIGN KEY (pais_origen) REFERENCES mug_paises (pais) on update restrict on delete restrict; -- Tabla de documentos de la persona. DROP INDEX ifk_mdp_personas_documentos_mdp_tipo_residencia; ALTER TABLE mdp_personas_documentos DROP CONSTRAINT fk_mdp_personas_documentos_mdp_tipo_residencia; DROP INDEX ifk_mdp_personas_documentos_mdp_tipo_visa; ALTER TABLE mdp_personas_documentos DROP CONSTRAINT fk_mdp_personas_documentos_mdp_tipo_visa; ALTER TABLE mdp_personas_documentos DROP CONSTRAINT ck_mdp_personas_documentos_residencia_cupo; -- Inserto un registro por cada persona que tenga cargada visa o residencia INSERT INTO mdp_personas_extranjeros (persona, tipo_visa, otorgamiento_visa, vencimiento_visa, tipo_residencia, residencia_cupo, otorgamiento_residencia, vencimiento_residencia) SELECT DISTINCT d.persona, d.tipo_visa, d.otorgamiento_visa, d.vencimiento_visa, d.tipo_residencia, d.residencia_cupo, d.otorgamiento_residencia, d.vencimiento_residencia FROM mdp_personas_documentos as d, mdp_personas as p WHERE p.persona = d.persona AND p.nacionalidad IN (2, 3, 4) -- (Extranjero, nacionalizado, por opcion) AND (d.tipo_visa IS NOT NULL OR d.tipo_residencia IS NOT NULL); -- Borro columnas de mdp_personas_documentos ALTER TABLE mdp_personas_documentos DROP COLUMN tipo_visa; ALTER TABLE mdp_personas_documentos DROP COLUMN otorgamiento_visa; ALTER TABLE mdp_personas_documentos DROP COLUMN vencimiento_visa; ALTER TABLE mdp_personas_documentos DROP COLUMN tipo_residencia; ALTER TABLE mdp_personas_documentos DROP COLUMN residencia_cupo; ALTER TABLE mdp_personas_documentos DROP COLUMN otorgamiento_residencia; ALTER TABLE mdp_personas_documentos DROP COLUMN vencimiento_residencia; ALTER TABLE mdp_personas ADD COLUMN documento_principal Integer; UPDATE mdp_personas SET documento_principal = (SELECT min(d.documento) FROM mdp_personas_documentos as d WHERE d.persona = mdp_personas.persona AND principal = 'S'); -- Cambioi tipos de instituciones UPDATE sga_instituciones SET tipo_institucion = 12 WHERE tipo_institucion = 16; UPDATE sga_instituciones_tipos SET nombre = 'Asociación Civil' WHERE tipo_institucion = 12; DELETE FROM sga_instituciones_tipos WHERE tipo_institucion = 16; UPDATE sga_instituciones SET tipo_institucion = 7 WHERE tipo_institucion = 14; UPDATE sga_instituciones_tipos SET nombre = 'Asociación Civil' WHERE tipo_institucion = 7; UPDATE sga_instituciones SET tipo_institucion = 14 WHERE tipo_institucion = 15; UPDATE sga_instituciones_tipos SET nombre = 'Empresa Privada' WHERE tipo_institucion = 14; DELETE FROM sga_instituciones_tipos WHERE tipo_institucion = 15; -- Tipo de dato. ALTER TABLE mdp_tipo_documento ADD COLUMN tipo_de_dato char(1); UPDATE mdp_tipo_documento SET tipo_de_dato = 'E' WHERE tipo_documento = 0; UPDATE mdp_tipo_documento SET tipo_de_dato = 'E' WHERE tipo_documento = 1; UPDATE mdp_tipo_documento SET tipo_de_dato = 'S' WHERE tipo_documento = 2; UPDATE mdp_tipo_documento SET tipo_de_dato = 'S' WHERE tipo_documento = 3; UPDATE mdp_tipo_documento SET tipo_de_dato = 'E' WHERE tipo_documento = 18; UPDATE mdp_tipo_documento SET tipo_de_dato = 'E' WHERE tipo_documento = 19; UPDATE mdp_tipo_documento SET tipo_de_dato = 'S' WHERE tipo_documento = 90; ALTER TABLE mdp_tipo_documento ALTER COLUMN tipo_de_dato SET NOT NULL; ALTER TABLE mdp_tipo_documento DROP CONSTRAINT ck_mdp_tipo_documento_tipo_dato; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE: td_mdp_personas_documentos -- Tabla: mdp_personas_documentos -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION ftdb_mdp_personas_documentos (); CREATE OR REPLACE FUNCTION ftdb_mdp_personas_documentos () RETURNS trigger AS $BODY$ DECLARE cnt smallint; _documento integer; BEGIN -- Cambio el documento principal de la persona SELECT COUNT(*) INTO cnt FROM mdp_personas WHERE persona = OLD.persona AND documento_principal = OLD.documento; IF cnt > 0 THEN _documento := NULL; -- Recupero el documento que queda como principal. SELECT documento INTO _documento FROM mdp_personas_documentos, mdp_tipo_documento WHERE persona = OLD.persona AND documento <> OLD.documento AND mdp_personas_documentos.tipo_documento = mdp_tipo_documento.tipo_documento ORDER BY mdp_tipo_documento.orden_principal ASC LIMIT 1; -- Actualizo el documento principal de la persona. UPDATE mdp_personas SET documento_principal = _documento WHERE persona = OLD.persona; END IF; RETURN OLD; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE sobre mdp_personas_documentos -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tdb_mdp_personas_documentos ON mdp_personas_documentos RESTRICT; CREATE TRIGGER tdb_mdp_personas_documentos BEFORE DELETE ON mdp_personas_documentos FOR EACH ROW EXECUTE PROCEDURE ftdb_mdp_personas_documentos(); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de INSERT: tia_mdp_personas_documentos -- AFTER INSERT -- Tabla: mdp_personas_documentos -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION ftia_mdp_personas_documentos (); CREATE OR REPLACE FUNCTION ftia_mdp_personas_documentos () RETURNS trigger AS $BODY$ DECLARE cnt smallint; _documento integer; _orden1 smallint; _orden2 smallint; BEGIN -- Cambio el documento principal de la persona _documento := NULL; SELECT documento_principal INTO _documento FROM mdp_personas WHERE persona = NEW.persona; IF _documento IS NULL THEN -- Actualizo el documento principal de la persona. UPDATE mdp_personas SET documento_principal = NEW.documento WHERE persona = NEW.persona; ELSE -- Ya existe otro documento de la persona, veo si este es de mayor prioridad que el anterior. SELECT mdp_tipo_documento.orden_principal INTO _orden1 FROM mdp_tipo_documento WHERE mdp_tipo_documento.tipo_documento = NEW.tipo_documento; SELECT mdp_tipo_documento.orden_principal INTO _orden2 FROM mdp_personas_documentos, mdp_tipo_documento WHERE mdp_personas_documentos.documento = _documento AND mdp_tipo_documento.tipo_documento = mdp_personas_documentos.tipo_documento; IF _orden1 < _orden2 THEN -- Actualizo el documento principal de la persona. UPDATE mdp_personas SET documento_principal = NEW.documento WHERE persona = NEW.persona; END IF; END IF; RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de INSERT sobre mdp_personas_documentos -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tia_mdp_personas_documentos ON mdp_personas_documentos RESTRICT; CREATE TRIGGER tia_mdp_personas_documentos AFTER INSERT ON mdp_personas_documentos FOR EACH ROW EXECUTE PROCEDURE ftia_mdp_personas_documentos(); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de UPDATE: tua_mdp_personas_documentos -- AFTER UPDATE -- Tabla: mdp_personas_documentos -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION ftua_mdp_personas_documentos (); CREATE OR REPLACE FUNCTION ftua_mdp_personas_documentos () RETURNS trigger AS $BODY$ DECLARE _documento integer; BEGIN -- Si cambió la fecha desde/hasta entonces actualizo las clases de las bandas horarias asociadas IF OLD.tipo_documento <> NEW.tipo_documento THEN _documento := NULL; -- Recupero el documento que queda como principal el primero segun el orden del tipo de documento. SELECT mdp_personas_documentos.documento INTO _documento FROM mdp_personas_documentos, mdp_tipo_documento WHERE persona = NEW.persona AND mdp_personas_documentos.tipo_documento = mdp_tipo_documento.tipo_documento ORDER BY mdp_tipo_documento.orden_principal ASC LIMIT 1; -- Actualizo el documento principal de la persona. UPDATE mdp_personas SET documento_principal = _documento WHERE persona = NEW.persona; END IF; RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de UPDATE sobre mdp_personas_documentos -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tua_mdp_personas_documentos ON mdp_personas_documentos RESTRICT; CREATE TRIGGER tua_mdp_personas_documentos AFTER UPDATE ON mdp_personas_documentos FOR EACH ROW EXECUTE PROCEDURE ftua_mdp_personas_documentos(); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_tipo_documento -- FK: fk_mdp_tipo_documento_par_tipo_dato -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mdp_tipo_documento_par_tipo_dato; CREATE INDEX ifk_mdp_tipo_documento_par_tipo_dato ON mdp_tipo_documento (tipo_de_dato); -- ALTER TABLE mdp_tipo_documento DROP CONSTRAINT fk_mdp_tipo_documento_par_tipo_dato; ALTER TABLE mdp_tipo_documento ADD CONSTRAINT fk_mdp_tipo_documento_par_tipo_dato FOREIGN KEY (tipo_de_dato) REFERENCES par_tipo_dato (tipo_de_dato) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_personas -- Version: 3.0.0 -- Recupera las personas con su documento principal -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW vw_personas; CREATE OR REPLACE VIEW vw_personas ( persona, apellido, nombres, sexo, nacionalidad, usuario, documento, nro_documento, tipo_documento, desc_tipo_documento ) AS SELECT mdp_personas.persona, mdp_personas.apellido, mdp_personas.nombres, mdp_personas.sexo, mdp_personas.nacionalidad, mdp_personas.usuario, mdp_personas_documentos.documento, mdp_personas_documentos.nro_documento, mdp_personas_documentos.tipo_documento, mdp_tipo_documento.desc_abreviada FROM mdp_personas LEFT JOIN mdp_personas_documentos ON mdp_personas_documentos.documento = mdp_personas.documento_principal LEFT JOIN mdp_tipo_documento ON mdp_tipo_documento.tipo_documento = mdp_personas_documentos.tipo_documento ; -- ++++++++++++++++++++++++++++++ Fin view vw_personas +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_personas to public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_pasar_inscripciones_a_historico -- -- Pasa inscripciones a examenes y cursadas a tablas historicas. -- Solo permite pasar inscripciones de años academicos anteriores -- -- Recibe: -- 1.- Integer: Año académico -- 2.- Integer: Pasar inscripciones a cursadas (Valores: 1-Pasar / 0-No pasar) -- 2.- Integer: Pasar inscripciones a examenes (Valores: 1-Pasar / 0-No pasar) -- -- Retorna: Integer: -1 - No paso inscripciones. Año académico no válido / 1 - Paso inscripciones. -- -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_pasar_inscripciones_a_historico(integer, integer, integer); CREATE OR REPLACE FUNCTION f_pasar_inscripciones_a_historico(_anio_academico integer, _cursadas integer, _examenes integer) RETURNS INTEGER AS $BODY$ DECLARE _anio_actual integer; BEGIN --Verifico que el año académico sea un año anterior al actual _anio_actual := f_anio_academico_actual(); IF _anio_academico >= _anio_actual THEN -- El año académico debe ser menor al año académico actual. RETURN -1; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- INSCRIPCIONES A EXAMENES -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF _examenes = 1 THEN -- Deshabilito triggers para que no actuen sobre las tablas de evaluaciones ALTER TABLE sga_insc_examen DISABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log DISABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log_requisitos DISABLE TRIGGER ALL; ALTER TABLE his_insc_examen DISABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log DISABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log_requisitos DISABLE TRIGGER ALL; -- Inscripciones aceptadas/pendientes/exceptuadas INSERT INTO his_insc_examen (inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, interfaz, estado) SELECT i.inscripcion, i.alumno, i.llamado_mesa, i.plan_version, i.instancia, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.interfaz, i.estado FROM sga_insc_examen as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.llamado_mesa = llm.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- Requisitos que fallaron en los rechazos de inscripciones a examenes INSERT INTO his_insc_examen_log_requisitos (inscripcion_requisito, inscripcion, tipo, entidad, requisito, estado, regla, parametros) SELECT a.inscripcion_requisito, a.inscripcion, a.tipo, a.entidad, a.requisito, a.estado, a.regla, a.parametros FROM sga_insc_examen_log_requisitos as a, sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.inscripcion = a.inscripcion AND llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- inscripciones dadas de baja o rechazadas INSERT INTO his_insc_examen_log (inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, nro_transaccion, estado, motivo_rechazo, interfaz, operacion, fecha_operacion, nro_transaccion_log) SELECT i.inscripcion, i.alumno, i.llamado_mesa, i.plan_version, i.instancia, i.fecha_inscripcion, i.nro_transaccion, i.estado, i.motivo_rechazo, i.interfaz, i.operacion, i.fecha_operacion, i.nro_transaccion_log FROM sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- Borro todos los registros de las tablas originales DELETE FROM sga_insc_examen_log_requisitos WHERE inscripcion_requisito IN ( SELECT h.inscripcion_requisito FROM his_insc_examen_log_requisitos as h, sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.inscripcion = h.inscripcion AND llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_examen_log WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_examen_log as h, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE llm.llamado_mesa = h.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_examen WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_examen as h, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE h.llamado_mesa = llm.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); -- Habilito nuevamente los triggers ALTER TABLE sga_insc_examen ENABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log ENABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log_requisitos ENABLE TRIGGER ALL; ALTER TABLE his_insc_examen ENABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log ENABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log_requisitos ENABLE TRIGGER ALL; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- INSCRIPCIONES A CURSADAS -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF _cursadas = 1 THEN -- Deshabilito triggers para que no actuen sobre las tablas de evaluaciones ALTER TABLE sga_insc_cursada DISABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_instancias DISABLE TRIGGER ALL; ALTER TABLE sga_insc_subcomision DISABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log DISABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log_requisitos DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_instancias DISABLE TRIGGER ALL; ALTER TABLE his_insc_subcomision DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log_requisitos DISABLE TRIGGER ALL; -- Inscripciones a cursadas INSERT INTO his_insc_cursada (inscripcion, comision, alumno, tipo, prioridad, estado_preinscripcion, plan_version, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, interfaz, estado) SELECT i.inscripcion, i.comision, i.alumno, i.tipo, i.prioridad, i.estado_preinscripcion, i.plan_version, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.interfaz, i.estado FROM sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Inscripcion a subcomisiones INSERT INTO his_insc_subcomision (inscripcion, subcomision) SELECT s.inscripcion, s.subcomision FROM sga_insc_subcomision as s, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE s.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Instancias de la inscripcion INSERT INTO his_insc_cursada_instancias (inscripcion, instancia) SELECT s.inscripcion, s.instancia FROM sga_insc_cursada_instancias as s, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE s.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Requisitos relacionados con los rechazos de Inscripciones INSERT INTO his_insc_cursada_log_requisitos (inscripcion_requisito, inscripcion, tipo, entidad, requisito, estado, regla, parametros) SELECT r.inscripcion_requisito, r.inscripcion, r.tipo, r.entidad, r.requisito, r.estado, r.regla, r.parametros FROM sga_insc_cursada_log_requisitos as r, sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.inscripcion = r.inscripcion AND c.comision = i.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Bajas y Rechazos de Inscripciones INSERT INTO his_insc_cursada_log (inscripcion, alumno, comision, plan_version, prioridad, fecha_inscripcion, fuera_de_termino, nro_transaccion, estado, motivo_rechazo, interfaz, operacion, fecha_operacion, nro_transaccion_log) SELECT i.inscripcion, i.alumno, i.comision, i.plan_version, i.prioridad, i.fecha_inscripcion, i.fuera_de_termino, i.nro_transaccion, i.estado, i.motivo_rechazo, i.interfaz, i.operacion, i.fecha_operacion, i.nro_transaccion_log FROM sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Borro registros de las tablas de inscripciones DELETE FROM sga_insc_subcomision WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_subcomision as h, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE h.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_instancias WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada_instancias as h, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE h.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_log_requisitos WHERE inscripcion_requisito IN ( SELECT h.inscripcion_requisito FROM his_insc_cursada_log_requisitos as h, sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.inscripcion = h.inscripcion AND c.comision = i.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_log WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada_log as h, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE c.comision = h.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada as h, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE c.comision = h.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); -- Habilito triggers ALTER TABLE sga_insc_cursada ENABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_instancias ENABLE TRIGGER ALL; ALTER TABLE sga_insc_subcomision ENABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log ENABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log_requisitos ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_instancias ENABLE TRIGGER ALL; ALTER TABLE his_insc_subcomision ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log_requisitos ENABLE TRIGGER ALL; END IF; -- OK. Inscripciones pasadas. RETURN 1; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- REVOKE EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico FROM public; GRANT EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico(integer, integer, integer) TO public; -- ++++++++++++++++++++++++++ Fin Function f_pasar_inscripciones_a_historico +++++++++++++++++++++++-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- TRIGGER BEFORE INSERT -- Tabla: sga_insc_cursada_log -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP TRIGGER tib_sga_insc_cursada_log ON sga_insc_cursada_log RESTRICT; DROP FUNCTION ftib_sga_insc_cursada_log(); CREATE OR REPLACE FUNCTION ftib_sga_insc_cursada_log() RETURNS TRIGGER AS $BODY$ BEGIN -- Genera un nro de Transaccion IF NEW.nro_transaccion_log IS NULL THEN NEW.nro_transaccion_log := f_nro_transaccion(); END IF; RETURN NEW; END; $BODY$ LANGUAGE plpgsql; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de INSERT sobre sga_insc_cursada_log -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE TRIGGER tib_sga_insc_cursada_log BEFORE INSERT ON sga_insc_cursada_log FOR EACH ROW EXECUTE PROCEDURE ftib_sga_insc_cursada_log(); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- TRIGGER BEFORE INSERT -- Tabla: sga_insc_examen_log -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP TRIGGER tib_sga_insc_examen_log ON sga_insc_examen_log RESTRICT; DROP FUNCTION ftib_sga_insc_examen_log(); CREATE OR REPLACE FUNCTION ftib_sga_insc_examen_log() RETURNS TRIGGER AS $BODY$ BEGIN -- Genera un nro de Transaccion IF NEW.nro_transaccion_log IS NULL THEN NEW.nro_transaccion_log := f_nro_transaccion(); END IF; RETURN NEW; END; $BODY$ LANGUAGE plpgsql; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de INSERT sobre sga_insc_examen_log -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE TRIGGER tib_sga_insc_examen_log BEFORE INSERT ON sga_insc_examen_log FOR EACH ROW EXECUTE PROCEDURE ftib_sga_insc_examen_log(); INSERT INTO sga_actas_origen (origen, nombre, descripcion) VALUES ('A','Actas de Aprobación por Resolución','Actas de Aprobación por Resolución'); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias_motivos -- Secuencia: sga_licencias_motivos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_licencias_motivos_seq; CREATE SEQUENCE sga_licencias_motivos_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias -- Secuencia: sga_licencias_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_licencias_seq; CREATE SEQUENCE sga_licencias_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_licencias; CREATE TABLE sga_licencias ( licencia INTEGER NOT NULL DEFAULT nextval('sga_licencias_seq'::text) , fecha_alta Timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, persona Integer NOT NULL, motivo_licencia Integer NOT NULL, documento Integer, alcance Smallint NOT NULL, fecha_desde Date, fecha_hasta Date, periodo_lectivo_tipo Varchar(20), cant_periodos_lectivos Smallint, anio_academico Numeric, periodo_lectivo_desde Integer, observaciones Varchar(255), archivo Bytea, estado Varchar(10) NOT NULL ); -- ALTER TABLE sga_licencias DROP CONSTRAINT pk_sga_licencias; ALTER TABLE sga_licencias ADD CONSTRAINT pk_sga_licencias PRIMARY KEY (licencia); Revoke all ON sga_licencias FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_licencias +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias_motivos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_licencias_motivos; CREATE TABLE sga_licencias_motivos ( motivo_licencia INTEGER NOT NULL DEFAULT nextval('sga_licencias_motivos_seq'::text) , nombre Varchar(100) NOT NULL, descripcion Varchar(255) ); -- ALTER TABLE sga_licencias_motivos DROP CONSTRAINT pk_sga_licencias_motivos; ALTER TABLE sga_licencias_motivos ADD CONSTRAINT pk_sga_licencias_motivos PRIMARY KEY (motivo_licencia); Revoke all ON sga_licencias_motivos FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_licencias_motivos +++++++++++++++++++++++++++++ GRANT select ON sga_licencias TO public; GRANT update ON sga_licencias TO public; GRANT delete ON sga_licencias TO public; GRANT insert ON sga_licencias TO public; GRANT select ON sga_licencias_motivos TO public; GRANT update ON sga_licencias_motivos TO public; GRANT delete ON sga_licencias_motivos TO public; GRANT insert ON sga_licencias_motivos TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias -- Check: ck_sga_licencias_alcance -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_licencias DROP CONSTRAINT ck_sga_licencias_alcance; ALTER TABLE sga_licencias ADD CONSTRAINT ck_sga_licencias_alcance CHECK (alcance IN (1, 2, 3)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias -- Check: ck_sga_licencias_estado -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_licencias DROP CONSTRAINT ck_sga_licencias_estado; ALTER TABLE sga_licencias ADD CONSTRAINT ck_sga_licencias_estado CHECK (estado IN ('Aceptado', 'Rechazado', 'Pendiente')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias -- FK: fk_sga_licencias_mdp_personas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_licencias_mdp_personas; CREATE INDEX ifk_sga_licencias_mdp_personas ON sga_licencias (persona); -- ALTER TABLE sga_licencias DROP CONSTRAINT fk_sga_licencias_mdp_personas; ALTER TABLE sga_licencias ADD CONSTRAINT fk_sga_licencias_mdp_personas FOREIGN KEY (persona) REFERENCES mdp_personas (persona) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias -- FK: fk_sga_licencias_sga_anios_academicos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_licencias_sga_anios_academicos; CREATE INDEX ifk_sga_licencias_sga_anios_academicos ON sga_licencias (anio_academico); -- ALTER TABLE sga_licencias DROP CONSTRAINT fk_sga_licencias_sga_anios_academicos; ALTER TABLE sga_licencias ADD CONSTRAINT fk_sga_licencias_sga_anios_academicos FOREIGN KEY (anio_academico) REFERENCES sga_anios_academicos (anio_academico) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias -- FK: fk_sga_licencias_sga_documentos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_licencias_sga_documentos; CREATE INDEX ifk_sga_licencias_sga_documentos ON sga_licencias (documento); -- ALTER TABLE sga_licencias DROP CONSTRAINT fk_sga_licencias_sga_documentos; ALTER TABLE sga_licencias ADD CONSTRAINT fk_sga_licencias_sga_documentos FOREIGN KEY (documento) REFERENCES sga_documentos (documento) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias -- FK: fk_sga_licencias_sga_licencias_motivos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_licencias_sga_licencias_motivos; CREATE INDEX ifk_sga_licencias_sga_licencias_motivos ON sga_licencias (motivo_licencia); -- ALTER TABLE sga_licencias DROP CONSTRAINT fk_sga_licencias_sga_licencias_motivos; ALTER TABLE sga_licencias ADD CONSTRAINT fk_sga_licencias_sga_licencias_motivos FOREIGN KEY (motivo_licencia) REFERENCES sga_licencias_motivos (motivo_licencia) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias -- FK: fk_sga_licencias_sga_periodos_lectivos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_licencias_sga_periodos_lectivos; CREATE INDEX ifk_sga_licencias_sga_periodos_lectivos ON sga_licencias (periodo_lectivo_desde); -- ALTER TABLE sga_licencias DROP CONSTRAINT fk_sga_licencias_sga_periodos_lectivos; ALTER TABLE sga_licencias ADD CONSTRAINT fk_sga_licencias_sga_periodos_lectivos FOREIGN KEY (periodo_lectivo_desde) REFERENCES sga_periodos_lectivos (periodo_lectivo) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias -- FK: fk_sga_licencias_sga_periodos_lectivos_tipos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_licencias_sga_periodos_lectivos_tipos; CREATE INDEX ifk_sga_licencias_sga_periodos_lectivos_tipos ON sga_licencias (periodo_lectivo_tipo); -- ALTER TABLE sga_licencias DROP CONSTRAINT fk_sga_licencias_sga_periodos_lectivos_tipos; ALTER TABLE sga_licencias ADD CONSTRAINT fk_sga_licencias_sga_periodos_lectivos_tipos FOREIGN KEY (periodo_lectivo_tipo) REFERENCES sga_periodos_lectivos_tipos (periodo_lectivo_tipo) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_hist_academica -- Version: 3.0.0 -- Recupera -- * Examenes Aprobados/Reprobados/Ausentes -- * Promociones Aprobadas -- * Examnes / Promociones / Equivalencias totales / Otros Reconocimientos de regularidad. -- ** No se consideran los examenes de Reválidas de cursadas (instancia = 5) -- -- Valores de los campos: -- resultado = A - Aprobado / R - Desaprobado / U - Ausente (examenes ausentes) -- tipo_acta y tipo_tramite = N - Normal / R - Rectificativo -- origen = E - Examen / P - Promocion / Q - Equivalencia / A - Aprob. x Resolucion -- tipo = Examen / Promoción / Equivalencia / Aprob. por Resolución -- -- La vista devuelve lo siguiente: -- a. Promociones: Detalles ACTIVOS y NO RECTIFICADOS de actas CERRADAS de origen PROMOCIÓN. El único resultado válido es APROBADO. -- b. Examenes: Detalles ACTIVOS y NO RECTIFICADOS de actas CERRADAS de origen EXAMEN. Los resultados válidos son: APROBADO, REPROBADO, AUSENTE. -- c. Equivalencias: Detalles ACTIVOS de alcance TOTAL y NO RECTIFICADOS de trámites de equivalencia CERRADOS. Los resultados válidos son: APROBADO, REPROBADO. -- d. Aprobación por Resolución: ACTIVIDADES de tipo TOTAL en trámites de aprobación por resolución CERRADOS. -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW vw_hist_academica; CREATE OR REPLACE VIEW vw_hist_academica ( elemento, id_acta, id_acta_original, nro_acta, tipo_acta, origen, tipo, evaluacion, comision, llamado_mesa, equivalencia_tramite, equivalencia_tramite_original, tipo_tramite, nro_resolucion, equivalencia, alumno, plan_version, instancia, fecha, fecha_vigencia, folio, renglon, escala_nota, nota, resultado, cond_regularidad, estado, pct_asistencia, observaciones, nota_descripcion, resultado_descripcion ) AS -- PROMOCIONES. Actas Original y Rectificativas SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, cast('Promoción' as varchar(30)) as tipo, sga_actas.evaluacion, sga_actas.comision, sga_actas.llamado_mesa, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_comisiones.comision = sga_actas.comision AND sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_actas.estado = 'C' AND sga_actas.origen = 'P' AND sga_actas_detalle.estado = 'A' AND sga_actas_detalle.resultado = 'A' -- Solo Promocionados AND sga_actas_detalle.rectificado = 'N' AND sga_actas_detalle.instancia <> 5 AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado UNION ALL -- EXAMENES: Actas Original y Rectificativas. Examenes y Promociones. SELECT sga_mesas_examen.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, cast('Examen' as varchar(30)) as tipo, sga_actas.evaluacion, sga_actas.comision, sga_actas.llamado_mesa, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_llamados_mesa, sga_mesas_examen, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_llamados_mesa.llamado_mesa = sga_actas.llamado_mesa AND sga_mesas_examen.mesa_examen = sga_llamados_mesa.mesa_examen AND sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'E' AND sga_actas_detalle.estado = 'A' -- Activo AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente de Examenes AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.instancia <> 5 AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado UNION ALL -- EQUIVALENCIAS DE REGULARIDAD Y PARCIALES: Original y Rectificativas SELECT sga_equiv_otorgada.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as varchar(30)) as nro_acta, cast(null as char(1)) as tipo_acta, 'Q' as origen, cast('Equivalencia' as varchar(30)) as tipo, cast(null as integer) as evaluacion, cast(null as integer) as comision, cast(null as integer) as llamado_mesa, sga_equiv_tramite.equivalencia_tramite, CASE sga_equiv_tramite.tipo_tramite WHEN 'N' THEN sga_equiv_tramite.equivalencia_tramite WHEN 'R' THEN sga_equiv_tramite.rectifica_a END as equivalencia_tramite_original, sga_equiv_tramite.tipo_tramite as tipo_tramite, sga_equiv_tramite.documento as nro_resolucion, sga_equiv_otorgada.equivalencia, sga_equiv_tramite.alumno, sga_equiv_tramite.plan_version, cast(null as integer) as instancia, sga_equiv_otorgada.fecha, sga_equiv_otorgada.fecha_vigencia, cast(null as smallint) as folio, cast(null as smallint) as renglon, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado, cast(null as integer) as cond_regularidad, sga_equiv_otorgada.estado, cast(null as numeric(5,2)) as pct_asistencia, sga_equiv_otorgada.temas_a_rendir as observaciones, sga_escalas_notas_det.descripcion, sga_escalas_notas_resultado.descripcion FROM sga_equiv_tramite, sga_equiv_otorgada LEFT JOIN sga_escalas_notas_det ON (sga_equiv_otorgada.escala_nota = sga_escalas_notas_det.escala_nota AND sga_equiv_otorgada.nota = sga_escalas_notas_det.nota), sga_escalas_notas_resultado WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_equiv_tramite.estado = 'C' -- Cerrado AND sga_equiv_otorgada.alcance = 'T' -- Equivalencia Total AND sga_equiv_otorgada.rectificado = 'N' -- No Rectificado AND sga_equiv_otorgada.estado = 'A' -- Activo AND sga_equiv_otorgada.resultado IN ('A','R') -- Aprobado/Reprobado AND sga_escalas_notas_resultado.resultado = sga_equiv_otorgada.resultado UNION ALL -- Aprobaciones por Resolucion. SELECT sga_reconocimiento_act.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as varchar(30)) as nro_acta, cast(null as char(1)) as tipo_acta, 'A' as origen, cast('Aprob. por Resolución' as varchar(30)) as tipo, cast(null as integer) as evaluacion, cast(null as integer) as comision, cast(null as integer) as llamado_mesa, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, sga_reconocimiento.documento as nro_resolucion, cast(null as integer) as equivalencia, sga_reconocimiento.alumno, sga_reconocimiento.plan_version, cast(null as integer) as instancia, sga_reconocimiento.fecha, cast(null as date) as fecha_vigencia, cast(null as smallint) as folio, cast(null as smallint) as renglon, sga_reconocimiento_act.escala_nota, sga_reconocimiento_act.nota, 'A' as resultado, cast(null as integer) as cond_regularidad, 'A' as estado, cast(null as numeric(5,2)) as pct_asistencia, cast(null as text) as observaciones, sga_escalas_notas_det.descripcion, 'Aprobado' as resultado_descripcion FROM sga_reconocimiento, sga_reconocimiento_act LEFT JOIN sga_escalas_notas_det ON (sga_escalas_notas_det.escala_nota = sga_reconocimiento_act.escala_nota AND sga_escalas_notas_det.nota = sga_reconocimiento_act.nota), sga_elementos, sga_g3entidades_subtipos WHERE sga_reconocimiento_act.nro_tramite = sga_reconocimiento.nro_tramite AND sga_reconocimiento.estado = 'C' -- Cerrado AND sga_reconocimiento_act.reconocimiento_total = 'S' AND sga_elementos.elemento = sga_reconocimiento_act.elemento AND sga_g3entidades_subtipos.entidad_subtipo = sga_elementos.entidad_subtipo AND sga_g3entidades_subtipos.entidad_tipo = 2 -- Actividades ; -- ++++++++++++++++++++++++++++++ Fin view vw_hist_academica +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_hist_academica to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_regularidades -- Version: 3.0.0 -- Recupera las cursadas y equivalencias de regularidad (Aprobadas/Reprobadas). -- Cursadas / Equivalencias de Regularidad / Otros Reconocimientos de regularidad. /Promociones (solo cuando la comision no tiene instancia de regularidad) -- -- Valores de los campos: -- origen (cursadas) : R = Acta de Regularidad / P = Acta de Promoción (son alumnos que no estan en acta de cursadas de esa comision) -- alcance (equivalencias) : Equivalencia Parcial / Equivalencia de Regularidad -- tipo : Regularidad / Promoción / Equivalencia Parcial / Equivalencia de Regularidad -- resultado : A - Aprobado / R - Desaprobado / U - Ausente -- tipo_acta y tipo_tramite: N - Normal / R - Rectificativo -- vigente : 1 - Es Vigente / 0 - No esta vigente -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP VIEW vw_regularidades; CREATE OR REPLACE VIEW vw_regularidades ( elemento, id_acta, id_acta_original, nro_acta, tipo_acta, origen, tipo, evaluacion, comision, equivalencia_tramite, equivalencia_tramite_original, tipo_tramite, nro_resolucion, equivalencia, alumno, plan_version, instancia, fecha, fecha_vigencia, folio, renglon, escala_nota, nota, resultado, cond_regularidad, estado, pct_asistencia, observaciones, nota_descripcion, resultado_descripcion, es_vigente ) AS -- Actas de Cursadas y Promociones SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, 'Regularidad' as tipo, sga_actas.evaluacion, sga_actas.comision, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, CASE WHEN (sga_actas_detalle.fecha_vigencia IS NULL OR sga_actas_detalle.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as vigente, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'R' -- Regularidades.. AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.estado = 'A' -- Activo AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente? AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado UNION ALL -- Actas de Promociones (de comisiones que son solo promocionales) SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, 'Promoción' as tipo, sga_actas.evaluacion, sga_actas.comision, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, CASE WHEN (sga_actas_detalle.fecha_vigencia IS NULL OR sga_actas_detalle.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as vigente, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'P' -- Promociones AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.estado = 'A' -- Activo AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente? AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado AND NOT EXISTS (SELECT 1 FROM sga_actas_instancias as ai WHERE ai.id_acta = sga_actas.id_acta AND ai.instancia <> 2) UNION ALL -- EQUIVALENCIAS DE REGULARIDAD Y PARCIALES: Original y Rectificativas SELECT sga_equiv_otorgada.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as varchar(30)) as nro_acta, cast(null as char(1)) as tipo_acta, cast(null as char(1)) as origen, CASE sga_equiv_otorgada.alcance WHEN 'P' THEN 'Equivalencia Parcial' WHEN 'R' THEN 'Equivalencia de Regularidad' END as tipo, cast(null as integer) as evaluacion, cast(null as integer) as comision, sga_equiv_tramite.equivalencia_tramite, CASE sga_equiv_tramite.tipo_tramite WHEN 'N' THEN sga_equiv_tramite.equivalencia_tramite WHEN 'R' THEN sga_equiv_tramite.rectifica_a END as equivalencia_tramite_original, sga_equiv_tramite.tipo_tramite as tipo_tramite, sga_equiv_tramite.documento as nro_resolucion, sga_equiv_otorgada.equivalencia, sga_equiv_tramite.alumno, sga_equiv_tramite.plan_version, cast(null as integer) as instancia, sga_equiv_otorgada.fecha, sga_equiv_otorgada.fecha_vigencia, CASE WHEN (sga_equiv_otorgada.fecha_vigencia IS NULL OR sga_equiv_otorgada.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as vigente, cast(null as smallint) as folio, cast(null as smallint) as renglon, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado, cast(null as integer) as cond_regularidad, sga_equiv_otorgada.estado, cast(null as numeric(5,2)) as pct_asistencia, sga_equiv_otorgada.temas_a_rendir as observaciones, sga_escalas_notas_det.descripcion, sga_escalas_notas_resultado.descripcion FROM sga_equiv_tramite, sga_equiv_otorgada LEFT JOIN sga_escalas_notas_det ON (sga_equiv_otorgada.escala_nota = sga_escalas_notas_det.escala_nota AND sga_equiv_otorgada.nota = sga_escalas_notas_det.nota), sga_escalas_notas_resultado WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_equiv_tramite.estado = 'C' -- Cerrado AND sga_equiv_otorgada.alcance IN ('R','P') -- Equivalencia de Regularidad y Parcial AND sga_equiv_otorgada.rectificado = 'N' -- No Rectificado AND sga_equiv_otorgada.estado = 'A' -- Activo AND sga_equiv_otorgada.resultado IN ('A','R') -- Aprobado/Reprobado AND sga_escalas_notas_resultado.resultado = sga_equiv_otorgada.resultado ; -- ++++++++++++++++++++++++++++++ Fin view vw_regularidades +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_regularidades to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias_motivos -- Actualizacion Nro de Secuencia: sga_licencias_motivos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_licencias_motivos_seq',(SELECT MAX(motivo_licencia) FROM sga_licencias_motivos)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias -- Actualizacion Nro de Secuencia: sga_licencias_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_licencias_seq',(SELECT MAX(licencia) FROM sga_licencias)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Vista: vw_equiv_otorgada -- Usado en Rectificativa de Equivalencias. Se deben buscar las equivalencias por el tramite original (equivalencia_tramite) -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP VIEW IF EXISTS vw_equiv_otorgada; CREATE VIEW vw_equiv_otorgada ( equivalencia, equivalencia_tramite, equivalencia_tramite_original, elemento, alcance, fecha, escala_nota, nota, resultado, fecha_vigencia, temas_a_rendir, grupo_equivalencia, rectificado, rectifica_a, estado ) AS -- Tramite de equivalencia original SELECT sga_equiv_otorgada.equivalencia, sga_equiv_otorgada.equivalencia_tramite, sga_equiv_otorgada.equivalencia_tramite, sga_equiv_otorgada.elemento, sga_equiv_otorgada.alcance, sga_equiv_otorgada.fecha, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado, sga_equiv_otorgada.fecha_vigencia, sga_equiv_otorgada.temas_a_rendir, sga_equiv_otorgada.grupo_equivalencia, sga_equiv_otorgada.rectificado, sga_equiv_otorgada.rectifica_a, sga_equiv_otorgada.estado FROM sga_equiv_tramite, sga_equiv_otorgada WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_equiv_tramite.tipo_tramite = 'N' AND sga_equiv_tramite.estado = 'C' AND sga_equiv_otorgada.rectificado = 'N' AND sga_equiv_otorgada.estado = 'A' UNION ALL -- Tramites rectificativos SELECT sga_equiv_otorgada.equivalencia, rectificativa.equivalencia_tramite, rectificativa.rectifica_a, sga_equiv_otorgada.elemento, sga_equiv_otorgada.alcance, sga_equiv_otorgada.fecha, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado, sga_equiv_otorgada.fecha_vigencia, sga_equiv_otorgada.temas_a_rendir, sga_equiv_otorgada.grupo_equivalencia, sga_equiv_otorgada.rectificado, sga_equiv_otorgada.rectifica_a, sga_equiv_otorgada.estado FROM sga_equiv_tramite as rectificativa, sga_equiv_otorgada WHERE sga_equiv_otorgada.equivalencia_tramite = rectificativa.equivalencia_tramite AND rectificativa.tipo_tramite = 'R' AND rectificativa.estado = 'C' AND sga_equiv_otorgada.rectificado = 'N' AND sga_equiv_otorgada.estado = 'A' ; -- ++++++++++++++++++++++++++ Fin vista vw_equiv_otorgada +++++++++++++++++++++++++++++ GRANT SELECT ON vw_equiv_otorgada TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_regularidades -- Version: 3.0.0 -- Recupera las cursadas y equivalencias de regularidad (Aprobadas/Reprobadas). -- Cursadas / Equivalencias de Regularidad / Otros Reconocimientos de regularidad. /Promociones (solo cuando la comision no tiene instancia de regularidad) -- -- Valores de los campos: -- origen (cursadas) : R = Acta de Regularidad / P = Acta de Promoción (son alumnos que no estan en acta de cursadas de esa comision) -- alcance (equivalencias) : Equivalencia Parcial / Equivalencia de Regularidad -- tipo : Regularidad / Promoción / Equivalencia Parcial / Equivalencia de Regularidad -- resultado : A - Aprobado / R - Desaprobado / U - Ausente -- tipo_acta y tipo_tramite: N - Normal / R - Rectificativo -- vigente : 1 - Es Vigente / 0 - No esta vigente -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP VIEW vw_regularidades; CREATE OR REPLACE VIEW vw_regularidades ( elemento, id_acta, id_acta_original, nro_acta, tipo_acta, origen, tipo, evaluacion, comision, equivalencia_tramite, equivalencia_tramite_original, tipo_tramite, nro_resolucion, equivalencia, alumno, plan_version, instancia, fecha, fecha_vigencia, es_vigente, folio, renglon, escala_nota, nota, resultado, cond_regularidad, estado, pct_asistencia, observaciones, nota_descripcion, resultado_descripcion ) AS -- Actas de Cursadas y Promociones SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, 'Regularidad' as tipo, sga_actas.evaluacion, sga_actas.comision, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, CASE WHEN (sga_actas_detalle.fecha_vigencia IS NULL OR sga_actas_detalle.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as es_vigente, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'R' -- Regularidades.. AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.estado = 'A' -- Activo AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente? AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado UNION ALL -- Actas de Promociones (de comisiones que son solo promocionales) SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, 'Promoción' as tipo, sga_actas.evaluacion, sga_actas.comision, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, CASE WHEN (sga_actas_detalle.fecha_vigencia IS NULL OR sga_actas_detalle.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as es_vigente, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'P' -- Promociones AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.estado = 'A' -- Activo AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente? AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado AND NOT EXISTS (SELECT 1 FROM sga_actas_instancias as ai WHERE ai.id_acta = sga_actas.id_acta AND ai.instancia <> 2) UNION ALL -- EQUIVALENCIAS DE REGULARIDAD Y PARCIALES: Original y Rectificativas SELECT sga_equiv_otorgada.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as varchar(30)) as nro_acta, cast(null as char(1)) as tipo_acta, cast(null as char(1)) as origen, CASE sga_equiv_otorgada.alcance WHEN 'P' THEN 'Equivalencia Parcial' WHEN 'R' THEN 'Equivalencia de Regularidad' END as tipo, cast(null as integer) as evaluacion, cast(null as integer) as comision, sga_equiv_tramite.equivalencia_tramite, CASE sga_equiv_tramite.tipo_tramite WHEN 'N' THEN sga_equiv_tramite.equivalencia_tramite WHEN 'R' THEN sga_equiv_tramite.rectifica_a END as equivalencia_tramite_original, sga_equiv_tramite.tipo_tramite as tipo_tramite, sga_equiv_tramite.documento as nro_resolucion, sga_equiv_otorgada.equivalencia, sga_equiv_tramite.alumno, sga_equiv_tramite.plan_version, cast(null as integer) as instancia, sga_equiv_otorgada.fecha, sga_equiv_otorgada.fecha_vigencia, CASE WHEN (sga_equiv_otorgada.fecha_vigencia IS NULL OR sga_equiv_otorgada.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as es_vigente, cast(null as smallint) as folio, cast(null as smallint) as renglon, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado, cast(null as integer) as cond_regularidad, sga_equiv_otorgada.estado, cast(null as numeric(5,2)) as pct_asistencia, sga_equiv_otorgada.temas_a_rendir as observaciones, sga_escalas_notas_det.descripcion, sga_escalas_notas_resultado.descripcion FROM sga_equiv_tramite, sga_equiv_otorgada LEFT JOIN sga_escalas_notas_det ON (sga_equiv_otorgada.escala_nota = sga_escalas_notas_det.escala_nota AND sga_equiv_otorgada.nota = sga_escalas_notas_det.nota), sga_escalas_notas_resultado WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_equiv_tramite.estado = 'C' -- Cerrado AND sga_equiv_otorgada.alcance IN ('R','P') -- Equivalencia de Regularidad y Parcial AND sga_equiv_otorgada.rectificado = 'N' -- No Rectificado AND sga_equiv_otorgada.estado = 'A' -- Activo AND sga_equiv_otorgada.resultado IN ('A','R') -- Aprobado/Reprobado AND sga_escalas_notas_resultado.resultado = sga_equiv_otorgada.resultado ; -- ++++++++++++++++++++++++++++++ Fin view vw_regularidades +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_regularidades to public; ALTER TABLE sga_movimientos_ha DROP COLUMN nro_resolucion; ALTER TABLE sga_movimientos_ha ADD COLUMN documento Integer; DROP VIEW IF EXISTS vw_actas_orig_rectif; DROP VIEW IF EXISTS vw_equiv_otorgada; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_movimientos_ha -- FK: fk_sga_movimientos_ha_sga_documentos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_movimientos_ha_sga_documentos; CREATE INDEX ifk_sga_movimientos_ha_sga_documentos ON sga_movimientos_ha (documento); -- ALTER TABLE sga_movimientos_ha DROP CONSTRAINT fk_sga_movimientos_ha_sga_documentos; ALTER TABLE sga_movimientos_ha ADD CONSTRAINT fk_sga_movimientos_ha_sga_documentos FOREIGN KEY (documento) REFERENCES sga_documentos (documento) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_actas -- Version: 3.0.0 -- Recupera los datos de un acta y sus rectificativas. -- * Solo el estado final del detalle del acta. -- * Muestra todos los registros que NO esten rectificados, en cualquier estado (Activo, Invalido, Baja) -- * Actas Cerradas. Se debe consultar por el campo "id_acta_original" -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW vw_actas; CREATE OR REPLACE VIEW vw_actas ( id_acta, id_acta_original, nro_acta, tipo_acta, origen, evaluacion, comision, llamado_mesa, alumno, plan_version, instancia, fecha, fecha_vigencia, folio, renglon, escala_nota, nota, resultado, cond_regularidad, estado, pct_asistencia, observaciones, nota_descripcion, resultado_descripcion ) AS -- Actas Original SELECT sga_actas.id_acta, sga_actas.id_acta as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, sga_actas.evaluacion, sga_actas.comision, sga_actas.llamado_mesa, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota, sga_instancias_resultado WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_actas.tipo_acta = 'N' AND sga_actas.estado = 'C' AND sga_actas_detalle.rectificado = 'N' AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado UNION ALL -- Actas Rectificativas SELECT sga_actas.id_acta, sga_actas.acta_referencia as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, sga_actas.evaluacion, sga_actas.comision, sga_actas.llamado_mesa, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_actas.tipo_acta = 'R' AND sga_actas.estado = 'C' AND sga_actas_detalle.rectificado = 'N' AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado ; -- ++++++++++++++++++++++++++++++ Fin view vw_actas +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_actas to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Vista: vw_equivalencias -- Devuelve el estado actual de un trámite de Equivalencias. -- * Equivalencias NO rectificadas (en cualquier estado: Activo, Invalidado, Baja) -- * Equivalencias de Trámites Cerrados -- -- Usado en "Rectificativa de Equivalencias". -- Se deben buscar las equivalencias por el tramite original (equivalencia_tramite_original) -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW IF EXISTS vw_equivalencias; CREATE VIEW vw_equivalencias ( equivalencia, equivalencia_tramite, equivalencia_tramite_original, elemento, alcance, fecha, escala_nota, nota, resultado, fecha_vigencia, temas_a_rendir, grupo_equivalencia, rectificado, rectifica_a, estado, nota_descripcion, resultado_descripcion ) AS -- Tramite de equivalencia original SELECT sga_equiv_otorgada.equivalencia, sga_equiv_otorgada.equivalencia_tramite, sga_equiv_otorgada.equivalencia_tramite, sga_equiv_otorgada.elemento, sga_equiv_otorgada.alcance, sga_equiv_otorgada.fecha, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado, sga_equiv_otorgada.fecha_vigencia, sga_equiv_otorgada.temas_a_rendir, sga_equiv_otorgada.grupo_equivalencia, sga_equiv_otorgada.rectificado, sga_equiv_otorgada.rectifica_a, sga_equiv_otorgada.estado, sga_escalas_notas_det.descripcion, sga_escalas_notas_resultado.descripcion FROM sga_equiv_tramite, sga_equiv_otorgada LEFT JOIN sga_escalas_notas_det ON sga_equiv_otorgada.escala_nota = sga_escalas_notas_det.escala_nota AND sga_equiv_otorgada.nota = sga_escalas_notas_det.nota, sga_escalas_notas_resultado WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_equiv_tramite.tipo_tramite = 'N' AND sga_equiv_tramite.estado = 'C' AND sga_equiv_otorgada.rectificado = 'N' AND sga_escalas_notas_resultado.resultado = sga_equiv_otorgada.resultado UNION ALL -- Tramites rectificativos SELECT sga_equiv_otorgada.equivalencia, rectificativa.equivalencia_tramite, rectificativa.rectifica_a, sga_equiv_otorgada.elemento, sga_equiv_otorgada.alcance, sga_equiv_otorgada.fecha, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado, sga_equiv_otorgada.fecha_vigencia, sga_equiv_otorgada.temas_a_rendir, sga_equiv_otorgada.grupo_equivalencia, sga_equiv_otorgada.rectificado, sga_equiv_otorgada.rectifica_a, sga_equiv_otorgada.estado, sga_escalas_notas_det.descripcion, sga_escalas_notas_resultado.descripcion FROM sga_equiv_tramite as rectificativa, sga_equiv_otorgada LEFT JOIN sga_escalas_notas_det ON sga_equiv_otorgada.escala_nota = sga_escalas_notas_det.escala_nota AND sga_equiv_otorgada.nota = sga_escalas_notas_det.nota, sga_escalas_notas_resultado WHERE sga_equiv_otorgada.equivalencia_tramite = rectificativa.equivalencia_tramite AND rectificativa.tipo_tramite = 'R' AND rectificativa.estado = 'C' AND sga_equiv_otorgada.rectificado = 'N' AND sga_escalas_notas_resultado.resultado = sga_equiv_otorgada.resultado ; -- ++++++++++++++++++++++++++ Fin vista vw_equivalencias +++++++++++++++++++++++++++++ GRANT SELECT ON vw_equivalencias TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient_mov -- Secuencia: sga_alumnos_orient_mov_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_alumnos_orient_mov_seq; CREATE SEQUENCE sga_alumnos_orient_mov_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_alumnos_orient; CREATE TABLE sga_alumnos_orient ( alumno Integer NOT NULL, orientacion Integer NOT NULL, fecha Date NOT NULL DEFAULT CURRENT_DATE ); -- ALTER TABLE sga_alumnos_orient DROP CONSTRAINT pk_sga_alumnos_orient; ALTER TABLE sga_alumnos_orient ADD CONSTRAINT pk_sga_alumnos_orient PRIMARY KEY (alumno,orientacion); Revoke all ON sga_alumnos_orient FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_alumnos_orient +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient_mov -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_alumnos_orient_mov; CREATE TABLE sga_alumnos_orient_mov ( orientacion_mov INTEGER NOT NULL DEFAULT nextval('sga_alumnos_orient_mov_seq'::text) , alumno Integer NOT NULL, orientacion Integer NOT NULL, fecha Timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, operacion Char(1) NOT NULL ); -- ALTER TABLE sga_alumnos_orient_mov DROP CONSTRAINT pk_sga_alumnos_orient_mov; ALTER TABLE sga_alumnos_orient_mov ADD CONSTRAINT pk_sga_alumnos_orient_mov PRIMARY KEY (orientacion_mov); Revoke all ON sga_alumnos_orient_mov FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_alumnos_orient_mov +++++++++++++++++++++++++++++ GRANT select ON sga_alumnos_orient TO public; GRANT update ON sga_alumnos_orient TO public; GRANT delete ON sga_alumnos_orient TO public; GRANT insert ON sga_alumnos_orient TO public; GRANT select ON sga_alumnos_orient_mov TO public; GRANT update ON sga_alumnos_orient_mov TO public; GRANT delete ON sga_alumnos_orient_mov TO public; GRANT insert ON sga_alumnos_orient_mov TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient_mov -- Check: ck_sga_alumnos_orient_mov_operacion -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_alumnos_orient_mov DROP CONSTRAINT ck_sga_alumnos_orient_mov_operacion; ALTER TABLE sga_alumnos_orient_mov ADD CONSTRAINT ck_sga_alumnos_orient_mov_operacion CHECK (operacion IN ('A','B')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient_mov -- FK: fk_sga_alumnos_orient_mov_sga_alumnos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_alumnos_orient_mov_sga_alumnos; CREATE INDEX ifk_sga_alumnos_orient_mov_sga_alumnos ON sga_alumnos_orient_mov (alumno); -- ALTER TABLE sga_alumnos_orient_mov DROP CONSTRAINT fk_sga_alumnos_orient_mov_sga_alumnos; ALTER TABLE sga_alumnos_orient_mov ADD CONSTRAINT fk_sga_alumnos_orient_mov_sga_alumnos FOREIGN KEY (alumno) REFERENCES sga_alumnos (alumno) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient_mov -- FK: fk_sga_alumnos_orient_mov_sga_elementos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_alumnos_orient_mov_sga_elementos; CREATE INDEX ifk_sga_alumnos_orient_mov_sga_elementos ON sga_alumnos_orient_mov (orientacion); -- ALTER TABLE sga_alumnos_orient_mov DROP CONSTRAINT fk_sga_alumnos_orient_mov_sga_elementos; ALTER TABLE sga_alumnos_orient_mov ADD CONSTRAINT fk_sga_alumnos_orient_mov_sga_elementos FOREIGN KEY (orientacion) REFERENCES sga_elementos (elemento) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient -- FK: fk_sga_alumnos_orient_sga_alumnos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_alumnos_orient_sga_alumnos; CREATE INDEX ifk_sga_alumnos_orient_sga_alumnos ON sga_alumnos_orient (alumno); -- ALTER TABLE sga_alumnos_orient DROP CONSTRAINT fk_sga_alumnos_orient_sga_alumnos; ALTER TABLE sga_alumnos_orient ADD CONSTRAINT fk_sga_alumnos_orient_sga_alumnos FOREIGN KEY (alumno) REFERENCES sga_alumnos (alumno) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient -- FK: fk_sga_alumnos_orient_sga_elementos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_alumnos_orient_sga_elementos; CREATE INDEX ifk_sga_alumnos_orient_sga_elementos ON sga_alumnos_orient (orientacion); -- ALTER TABLE sga_alumnos_orient DROP CONSTRAINT fk_sga_alumnos_orient_sga_elementos; ALTER TABLE sga_alumnos_orient ADD CONSTRAINT fk_sga_alumnos_orient_sga_elementos FOREIGN KEY (orientacion) REFERENCES sga_elementos (elemento) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient_mov -- Actualizacion Nro de Secuencia: sga_alumnos_orient_mov_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_alumnos_orient_mov_seq',(SELECT MAX(orientacion_mov) FROM sga_alumnos_orient_mov)); ALTER TABLE sga_reinscripciones ADD COLUMN interfaz Integer NOT NULL DEFAULT 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_personas_tipo_usuario -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS mdp_personas_tipo_usuario; CREATE TABLE mdp_personas_tipo_usuario ( persona Integer NOT NULL, tipo_usuario Varchar(20) NOT NULL ); -- ALTER TABLE mdp_personas_tipo_usuario DROP CONSTRAINT pk_mdp_personas_tipo_usuario; ALTER TABLE mdp_personas_tipo_usuario ADD CONSTRAINT pk_mdp_personas_tipo_usuario PRIMARY KEY (persona,tipo_usuario); Revoke all ON mdp_personas_tipo_usuario FROM public; -- ++++++++++++++++++++++++++ Fin tabla mdp_personas_tipo_usuario +++++++++++++++++++++++++++++ GRANT select ON mdp_personas_tipo_usuario TO public; GRANT update ON mdp_personas_tipo_usuario TO public; GRANT delete ON mdp_personas_tipo_usuario TO public; GRANT insert ON mdp_personas_tipo_usuario TO public; ALTER TABLE mdp_personas DROP CONSTRAINT ck_mdp_personas_usuario_administrativo; ALTER TABLE mdp_personas DROP COLUMN usuario_administrativo; -- Saco la FK DROP INDEX ifk_mdp_personas_grupo_acc_mdp_personas; ALTER TABLE mdp_personas_grupo_acc DROP CONSTRAINT fk_mdp_personas_grupo_acc_mdp_personas; INSERT INTO mdp_personas_tipo_usuario (persona, tipo_usuario) SELECT DISTINCT persona, tipo_usuario FROM mdp_personas_grupo_acc; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_personas_tipo_usuario -- FK: fk_mdp_personas_tipo_usuario_acc_tipos_usuarios -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mdp_personas_tipo_usuario_acc_tipos_usuarios; CREATE INDEX ifk_mdp_personas_tipo_usuario_acc_tipos_usuarios ON mdp_personas_tipo_usuario (tipo_usuario); -- ALTER TABLE mdp_personas_tipo_usuario DROP CONSTRAINT fk_mdp_personas_tipo_usuario_acc_tipos_usuarios; ALTER TABLE mdp_personas_tipo_usuario ADD CONSTRAINT fk_mdp_personas_tipo_usuario_acc_tipos_usuarios FOREIGN KEY (tipo_usuario) REFERENCES acc_tipos_usuarios (tipo_usuario) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_personas_tipo_usuario -- FK: fk_mdp_personas_tipo_usuario_mdp_personas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mdp_personas_tipo_usuario_mdp_personas; CREATE INDEX ifk_mdp_personas_tipo_usuario_mdp_personas ON mdp_personas_tipo_usuario (persona); -- ALTER TABLE mdp_personas_tipo_usuario DROP CONSTRAINT fk_mdp_personas_tipo_usuario_mdp_personas; ALTER TABLE mdp_personas_tipo_usuario ADD CONSTRAINT fk_mdp_personas_tipo_usuario_mdp_personas FOREIGN KEY (persona) REFERENCES mdp_personas (persona) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_reinscripciones -- FK: fk_sga_reinscripciones_acc_interfaces -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_reinscripciones_acc_interfaces; CREATE INDEX ifk_sga_reinscripciones_acc_interfaces ON sga_reinscripciones (interfaz); -- ALTER TABLE sga_reinscripciones DROP CONSTRAINT fk_sga_reinscripciones_acc_interfaces; ALTER TABLE sga_reinscripciones ADD CONSTRAINT fk_sga_reinscripciones_acc_interfaces FOREIGN KEY (interfaz) REFERENCES acc_interfaces (interfaz) on update restrict on delete restrict; ALTER TABLE sga_alumnos_orient_mov DROP CONSTRAINT ck_sga_alumnos_orient_mov_operacion; DROP INDEX ifk_sga_alumnos_orient_mov_sga_elementos; ALTER TABLE sga_alumnos_orient_mov DROP CONSTRAINT fk_sga_alumnos_orient_mov_sga_elementos; DROP INDEX ifk_sga_alumnos_orient_mov_sga_alumnos; ALTER TABLE sga_alumnos_orient_mov DROP CONSTRAINT fk_sga_alumnos_orient_mov_sga_alumnos; DROP INDEX ifk_sga_alumnos_orient_sga_alumnos; ALTER TABLE sga_alumnos_orient DROP CONSTRAINT fk_sga_alumnos_orient_sga_alumnos; DROP TABLE IF EXISTS sga_alumnos_orient; DROP TABLE IF EXISTS sga_alumnos_orient_mov; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient_mov -- Secuencia: sga_alumnos_orient_mov_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP SEQUENCE sga_alumnos_orient_mov_seq; CREATE SEQUENCE sga_alumnos_orient_mov_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE TABLE sga_alumnos_orient ( alumno Integer NOT NULL, orientacion Integer NOT NULL, fecha Date NOT NULL DEFAULT CURRENT_DATE ); -- ALTER TABLE sga_alumnos_orient DROP CONSTRAINT pk_sga_alumnos_orient; ALTER TABLE sga_alumnos_orient ADD CONSTRAINT pk_sga_alumnos_orient PRIMARY KEY (alumno,orientacion); Revoke all ON sga_alumnos_orient FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_alumnos_orient +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient_mov -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE TABLE sga_alumnos_orient_mov ( orientacion_mov INTEGER NOT NULL DEFAULT nextval('sga_alumnos_orient_mov_seq'::text) , alumno Integer NOT NULL, orientacion Integer NOT NULL, fecha Date NOT NULL, fecha_movimiento Timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, tipo_movimiento Varchar(5) NOT NULL ); -- ALTER TABLE sga_alumnos_orient_mov DROP CONSTRAINT pk_sga_alumnos_orient_mov; ALTER TABLE sga_alumnos_orient_mov ADD CONSTRAINT pk_sga_alumnos_orient_mov PRIMARY KEY (orientacion_mov); Revoke all ON sga_alumnos_orient_mov FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_alumnos_orient_mov +++++++++++++++++++++++++++++ GRANT select ON sga_alumnos_orient TO public; GRANT update ON sga_alumnos_orient TO public; GRANT delete ON sga_alumnos_orient TO public; GRANT insert ON sga_alumnos_orient TO public; GRANT select ON sga_alumnos_orient_mov TO public; GRANT update ON sga_alumnos_orient_mov TO public; GRANT delete ON sga_alumnos_orient_mov TO public; GRANT insert ON sga_alumnos_orient_mov TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient_mov -- Check: ck_sga_alumnos_orient_mov_tipo_movimiento -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_alumnos_orient_mov DROP CONSTRAINT ck_sga_alumnos_orient_mov_tipo_movimiento; ALTER TABLE sga_alumnos_orient_mov ADD CONSTRAINT ck_sga_alumnos_orient_mov_tipo_movimiento CHECK (tipo_movimiento IN ('Alta','Baja')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient_mov -- FK: fk_sga_alumnos_orient_mov_sga_alumnos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE INDEX ifk_sga_alumnos_orient_mov_sga_alumnos ON sga_alumnos_orient_mov (alumno); ALTER TABLE sga_alumnos_orient_mov ADD CONSTRAINT fk_sga_alumnos_orient_mov_sga_alumnos FOREIGN KEY (alumno) REFERENCES sga_alumnos (alumno) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient_mov -- FK: fk_sga_alumnos_orient_mov_sga_elementos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE INDEX ifk_sga_alumnos_orient_mov_sga_elementos ON sga_alumnos_orient_mov (orientacion); ALTER TABLE sga_alumnos_orient_mov ADD CONSTRAINT fk_sga_alumnos_orient_mov_sga_elementos FOREIGN KEY (orientacion) REFERENCES sga_elementos (elemento) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient -- FK: fk_sga_alumnos_orient_sga_alumnos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE INDEX ifk_sga_alumnos_orient_sga_alumnos ON sga_alumnos_orient (alumno); ALTER TABLE sga_alumnos_orient ADD CONSTRAINT fk_sga_alumnos_orient_sga_alumnos FOREIGN KEY (alumno) REFERENCES sga_alumnos (alumno) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient -- FK: fk_sga_alumnos_orient_sga_elementos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_alumnos_orient_sga_elementos; CREATE INDEX ifk_sga_alumnos_orient_sga_elementos ON sga_alumnos_orient (orientacion); -- ALTER TABLE sga_alumnos_orient DROP CONSTRAINT fk_sga_alumnos_orient_sga_elementos; ALTER TABLE sga_alumnos_orient ADD CONSTRAINT fk_sga_alumnos_orient_sga_elementos FOREIGN KEY (orientacion) REFERENCES sga_elementos (elemento) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_orient_mov -- Actualizacion Nro de Secuencia: sga_alumnos_orient_mov_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_alumnos_orient_mov_seq',(SELECT MAX(orientacion_mov) FROM sga_alumnos_orient_mov)); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de INSERT: tia_sga_alumnos_orient -- AFTER INSERT -- Tabla: sga_alumnos_orient -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION ftia_sga_alumnos_orient (); CREATE OR REPLACE FUNCTION ftia_sga_alumnos_orient () RETURNS trigger AS $BODY$ BEGIN -- Registro la baja de la orientacion INSERT INTO sga_alumnos_orient_mov (alumno, orientacion, fecha, tipo_movimiento) VALUES (NEW.alumno, NEW.orientacion, NEW.fecha, 'Alta'); RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de INSERT sobre sga_alumnos_orient -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tia_sga_alumnos_orient ON sga_alumnos_orient RESTRICT; CREATE TRIGGER tia_sga_alumnos_orient AFTER INSERT ON sga_alumnos_orient FOR EACH ROW EXECUTE PROCEDURE ftia_sga_alumnos_orient(); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de INSERT tda_sga_alumnos_orient -- TRIGGER AFTER DELETE -- Tabla: sga_alumnos_orient -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION ftda_sga_alumnos_orient(); CREATE OR REPLACE FUNCTION ftda_sga_alumnos_orient() RETURNS TRIGGER AS $BODY$ BEGIN -- Registro la baja de la orientacion INSERT INTO sga_alumnos_orient_mov (alumno, orientacion, fecha, tipo_movimiento) VALUES (OLD.alumno, OLD.orientacion, OLD.fecha, 'Baja'); RETURN OLD; END; $BODY$ LANGUAGE plpgsql; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE sobre sga_alumnos_orient -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tda_sga_alumnos_orient ON sga_alumnos_orient RESTRICT; CREATE TRIGGER tda_sga_alumnos_orient AFTER DELETE ON sga_alumnos_orient FOR EACH ROW EXECUTE PROCEDURE ftda_sga_alumnos_orient(); -- Se agregan los datos ya incorporados en los datos basicos del sistema para manejo de constancias -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Tabla: sga_constancias_formularios -- Objetos que contienen los formularios dinamicos para las constancias que el alumno puede solicitar en la institución -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_constancias_formularios (objeto, nombre) VALUES (37000562, 'Constancia de Examen Parcial'); INSERT INTO sga_constancias_formularios (objeto, nombre) VALUES (34000236, 'Constancia de Examen Final'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Tabla: mce_plantillas -- Plantillas para la impresion en JASPER -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (1, 'Constancia de Alumno Regular', 'Constancia de Alumno Regular', 'ConstanciaRegular.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (3, 'Constancia de Promedio Académico sin Aplazos', NULL, 'ConstanciaPromedioSinAplazos.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (2, 'Constancia de Promedio Académico', NULL, 'ConstanciaPromedio.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (4, 'Constancia de Actividades Rendidas', NULL, 'ConstanciaActivadesRendidas.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (5, 'Constancia de Actividades Aprobadas', NULL, 'ConstanciaActivadesAprobadas.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (6, 'Constancia de Actividades Desaprobadas', NULL, 'ConstanciaActivadesDesaprobadas.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (7, 'Constancia de Examen Final', NULL, 'ConstanciaExamenFinal.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (8, 'Constancia de Examen Parcial', NULL, 'ConstanciaExamenParcial.jasper'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Tabla: sga_constancias -- Constancias que el alumno puede solicitar en la institución -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_constancias (constancia, nombre, descripcion, objeto, max_cant_solicitudes, max_cant_copias, plantilla, activo) VALUES ( 1, 'Constancia de Alumno Regular', 'Certificado de alumno regular en la carrera', NULL, 10, 10, 1, 'S'); INSERT INTO sga_constancias (constancia, nombre, descripcion, objeto, max_cant_solicitudes, max_cant_copias, plantilla, activo) VALUES ( 2, 'Constancia de Promedio Académico', 'Certificado de promedio general en la carrera de todas las actividades rendidas', NULL, 10, 10, 2, 'S'); INSERT INTO sga_constancias (constancia, nombre, descripcion, objeto, max_cant_solicitudes, max_cant_copias, plantilla, activo) VALUES ( 3, 'Constancia de Promedio Académico sin aplazos', 'Certificado de promedio general en la carrera de todas las actividades rendidas sin aplazos', NULL, 10, 10, 3, 'S'); INSERT INTO sga_constancias (constancia, nombre, descripcion, objeto, max_cant_solicitudes, max_cant_copias, plantilla, activo) VALUES ( 4, 'Constancia de Actividades Rendidas', 'Certificado de actividades rendidas por el alumno desde el ingreso a la carrea hasta la fecha', NULL, 10, 10, 4, 'S'); INSERT INTO sga_constancias (constancia, nombre, descripcion, objeto, max_cant_solicitudes, max_cant_copias, plantilla, activo) VALUES ( 5, 'Constancia de Actividades Aprobadas', 'Certificado de actividades aprobadas por el alumno', NULL, 10, 10, 5, 'S'); INSERT INTO sga_constancias (constancia, nombre, descripcion, objeto, max_cant_solicitudes, max_cant_copias, plantilla, activo) VALUES ( 6, 'Constancia de Actividades Desaprobadas', 'Certificado de actividades desaprobadas por el alumno', NULL, 10, 10, 6, 'S'); INSERT INTO sga_constancias (constancia, nombre, descripcion, objeto, max_cant_solicitudes, max_cant_copias, plantilla, activo) VALUES ( 7, 'Constancia de Examen Final', 'Certificado de Examen Final rendido', 34000236, 10, 10, 7, 'S'); INSERT INTO sga_constancias (constancia, nombre, descripcion, objeto, max_cant_solicitudes, max_cant_copias, plantilla, activo) VALUES ( 8, 'Constancia de Examen Parcial', 'Certificado de Examen Parcial rendido', 37000562, 10, 10, 8, 'S'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Tabla: mce_campos -- Campos a utilizar en la impresion de Constancias del sistema -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO mce_campos (campo, etiqueta, tipo_de_dato, descripcion, longitud, cant_decimales) VALUES ('llamado_mesa', 'Llamado Mesa de Examen', 'E', 'ID del Llamado de Mesa de Examen', 0, 0); INSERT INTO mce_campos (campo, etiqueta, tipo_de_dato, descripcion, longitud, cant_decimales) VALUES ('evaluacion', 'Evaluación', 'E', 'Id de la evaluación', 0, 0); ALTER TABLE sga_licencias ADD COLUMN puede_rendir_examen Char(1) NOT NULL DEFAULT 'N'; ALTER TABLE sga_licencias ADD COLUMN es_licencia_financiera Char(1) NOT NULL DEFAULT 'N'; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias -- Check: ck_sga_licencias_es_licencia_financiera -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_licencias DROP CONSTRAINT ck_sga_licencias_es_licencia_financiera; ALTER TABLE sga_licencias ADD CONSTRAINT ck_sga_licencias_es_licencia_financiera CHECK (es_licencia_financiera IN ('S', 'N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias -- Check: ck_sga_licencias_puede_rendir_examen -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_licencias DROP CONSTRAINT ck_sga_licencias_puede_rendir_examen; ALTER TABLE sga_licencias ADD CONSTRAINT ck_sga_licencias_puede_rendir_examen CHECK (puede_rendir_examen IN ('N', 'S')); -- Se agregan los datos ya incorporados en los datos basicos del sistema para manejo de constancias -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Tabla: sga_constancias_formularios -- Objetos que contienen los formularios dinamicos para las constancias que el alumno puede solicitar en la institución -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_constancias_formularios (objeto, nombre) VALUES (34000240, 'Constancia de Alumno Regular'); -- Se asocia el formulario a la constancia UPDATE sga_constancias SET objeto = 34000240 WHERE constancia = 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_personas_titulos -- Secuencia: mdp_personas_titulos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE mdp_personas_titulos_seq; CREATE SEQUENCE mdp_personas_titulos_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_autoridades -- Secuencia: sga_autoridades_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_autoridades_seq; CREATE SEQUENCE sga_autoridades_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_cargos -- Secuencia: sga_cargos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_cargos_seq; CREATE SEQUENCE sga_cargos_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_personas_titulos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS mdp_personas_titulos; CREATE TABLE mdp_personas_titulos ( titulo_persona INTEGER NOT NULL DEFAULT nextval('mdp_personas_titulos_seq'::text) , nombre Varchar(50) NOT NULL, nombre_femenino Varchar(50) NOT NULL, nombre_abreviado Varchar(10) NOT NULL, nombre_femenino_abreviado Varchar(10) NOT NULL ); -- ALTER TABLE mdp_personas_titulos DROP CONSTRAINT pk_mdp_personas_titulos; ALTER TABLE mdp_personas_titulos ADD CONSTRAINT pk_mdp_personas_titulos PRIMARY KEY (titulo_persona); Revoke all ON mdp_personas_titulos FROM public; -- ++++++++++++++++++++++++++ Fin tabla mdp_personas_titulos +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_autoridades -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_autoridades; CREATE TABLE sga_autoridades ( autoridad INTEGER NOT NULL DEFAULT nextval('sga_autoridades_seq'::text) , apellido Varchar(60) NOT NULL, nombres Varchar(60) NOT NULL, sexo Char(1) NOT NULL, titulo_persona Integer, cargo Integer NOT NULL, activo Char(1) NOT NULL DEFAULT 'S' ); -- ALTER TABLE sga_autoridades DROP CONSTRAINT pk_sga_autoridades; ALTER TABLE sga_autoridades ADD CONSTRAINT pk_sga_autoridades PRIMARY KEY (autoridad); Revoke all ON sga_autoridades FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_autoridades +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_cargos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_cargos; CREATE TABLE sga_cargos ( cargo INTEGER NOT NULL DEFAULT nextval('sga_cargos_seq'::text) , nombre Varchar(100) NOT NULL, nombre_femenino Varchar(100) NOT NULL, activo Char(1) NOT NULL DEFAULT 'S' ); -- ALTER TABLE sga_cargos DROP CONSTRAINT pk_sga_cargos; ALTER TABLE sga_cargos ADD CONSTRAINT pk_sga_cargos PRIMARY KEY (cargo); Revoke all ON sga_cargos FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_cargos +++++++++++++++++++++++++++++ ALTER TABLE sga_competencias_x_actividad DROP CONSTRAINT pk_sga_competencias_x_actividad; ALTER TABLE sga_competencias_x_actividad ADD CONSTRAINT pk_sga_competencias_x_actividad PRIMARY KEY (competencia_actividad); GRANT select ON mdp_personas_titulos TO public; GRANT update ON mdp_personas_titulos TO public; GRANT delete ON mdp_personas_titulos TO public; GRANT insert ON mdp_personas_titulos TO public; GRANT select ON sga_autoridades TO public; GRANT update ON sga_autoridades TO public; GRANT delete ON sga_autoridades TO public; GRANT insert ON sga_autoridades TO public; GRANT select ON sga_cargos TO public; GRANT update ON sga_cargos TO public; GRANT delete ON sga_cargos TO public; GRANT insert ON sga_cargos TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_autoridades -- Check: ck_sga_autoridades_activo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_autoridades DROP CONSTRAINT ck_sga_autoridades_activo; ALTER TABLE sga_autoridades ADD CONSTRAINT ck_sga_autoridades_activo CHECK (activo IN ('S', 'N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_cargos -- Check: ck_sga_cargos_activo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_cargos DROP CONSTRAINT ck_sga_cargos_activo; ALTER TABLE sga_cargos ADD CONSTRAINT ck_sga_cargos_activo CHECK (activo IN ('S', 'N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_autoridades -- FK: fk_sga_autoridades_mdp_personas_sexo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_autoridades_mdp_personas_sexo; CREATE INDEX ifk_sga_autoridades_mdp_personas_sexo ON sga_autoridades (sexo); -- ALTER TABLE sga_autoridades DROP CONSTRAINT fk_sga_autoridades_mdp_personas_sexo; ALTER TABLE sga_autoridades ADD CONSTRAINT fk_sga_autoridades_mdp_personas_sexo FOREIGN KEY (sexo) REFERENCES mdp_personas_sexo (sexo) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_autoridades -- FK: fk_sga_autoridades_mdp_personas_titulos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_autoridades_mdp_personas_titulos; CREATE INDEX ifk_sga_autoridades_mdp_personas_titulos ON sga_autoridades (titulo_persona); -- ALTER TABLE sga_autoridades DROP CONSTRAINT fk_sga_autoridades_mdp_personas_titulos; ALTER TABLE sga_autoridades ADD CONSTRAINT fk_sga_autoridades_mdp_personas_titulos FOREIGN KEY (titulo_persona) REFERENCES mdp_personas_titulos (titulo_persona) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_autoridades -- FK: fk_sga_autoridades_sga_cargos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_autoridades_sga_cargos; CREATE INDEX ifk_sga_autoridades_sga_cargos ON sga_autoridades (cargo); -- ALTER TABLE sga_autoridades DROP CONSTRAINT fk_sga_autoridades_sga_cargos; ALTER TABLE sga_autoridades ADD CONSTRAINT fk_sga_autoridades_sga_cargos FOREIGN KEY (cargo) REFERENCES sga_cargos (cargo) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_personas_titulos -- Actualizacion Nro de Secuencia: mdp_personas_titulos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('mdp_personas_titulos_seq',(SELECT MAX(titulo_persona) FROM mdp_personas_titulos)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_autoridades -- Actualizacion Nro de Secuencia: sga_autoridades_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_autoridades_seq',(SELECT MAX(autoridad) FROM sga_autoridades)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_cargos -- Actualizacion Nro de Secuencia: sga_cargos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_cargos_seq',(SELECT MAX(cargo) FROM sga_cargos)); ALTER TABLE sga_licencias DROP COLUMN archivo; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias_doc_digital -- Secuencia: sga_licencias_doc_digital_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_licencias_doc_digital_seq; CREATE SEQUENCE sga_licencias_doc_digital_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_constancias_autoridades -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_constancias_autoridades; CREATE TABLE sga_constancias_autoridades ( constancia Integer NOT NULL, autoridad Integer NOT NULL, en_calidad_de Char(1) NOT NULL ); -- ALTER TABLE sga_constancias_autoridades DROP CONSTRAINT pk_sga_constancias_autoridades; ALTER TABLE sga_constancias_autoridades ADD CONSTRAINT pk_sga_constancias_autoridades PRIMARY KEY (constancia,autoridad,en_calidad_de); Revoke all ON sga_constancias_autoridades FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_constancias_autoridades +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias_doc_digital -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_licencias_doc_digital; CREATE TABLE sga_licencias_doc_digital ( licencia_doc INTEGER NOT NULL DEFAULT nextval('sga_licencias_doc_digital_seq'::text) , licencia Integer NOT NULL, nombre_archivo Varchar(255) NOT NULL, archivo Bytea NOT NULL ); -- ALTER TABLE sga_licencias_doc_digital DROP CONSTRAINT pk_sga_licencias_doc_digital; ALTER TABLE sga_licencias_doc_digital ADD CONSTRAINT pk_sga_licencias_doc_digital PRIMARY KEY (licencia_doc); Revoke all ON sga_licencias_doc_digital FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_licencias_doc_digital +++++++++++++++++++++++++++++ GRANT select ON sga_constancias_autoridades TO public; GRANT update ON sga_constancias_autoridades TO public; GRANT delete ON sga_constancias_autoridades TO public; GRANT insert ON sga_constancias_autoridades TO public; GRANT select ON sga_licencias_doc_digital TO public; GRANT update ON sga_licencias_doc_digital TO public; GRANT delete ON sga_licencias_doc_digital TO public; GRANT insert ON sga_licencias_doc_digital TO public; INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 1, 'Abogado' , 'Abogada' , 'Abog.' , 'Abog.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 2, 'Agrimensor' , 'Agrimensora' , 'Agrim.' , 'Agrim.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 3, 'Analista de Sistemas' , 'Analista de Sistemas' , 'AS' , 'AS'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 4, 'Analista Programador Universitario' , 'Analista Programador Universitario' , 'APU' , 'APU'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 5, 'Antropólogo' , 'Antropóloga' , 'Ant.' , 'Ant.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 6, 'Arquitecta' , 'Arquitecta' , 'Arq.' , 'Arq.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 7, 'Bachiller' , 'Bachiller' , 'Bac.' , 'Bac.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 8, 'Bibliotecario' , 'Bibliotecaria' , 'Bibl.' , 'Bibl.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 9, 'Brigadier' , 'Brigadier' , 'Brig.' , 'Brig.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 10, 'Brigadier Mayor' , 'Brigadier Mayor' , 'Brig. My.' , 'Brig. My.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 11, 'Calculista Científico' , 'Calculista Científico' , 'Cal. Cco.' , 'Cal. Cco.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 12, 'Capitán' , 'Capitán' , 'Cap.' , 'Cap.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 13, 'Comisario General ' , 'Comisario General ' , 'Crio.' , 'Crio.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 14, 'Comodoro' , 'Comodoro' , 'Com.' , 'Com.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 15, 'Contador' , 'Contador' , 'Cr.' , 'Cr.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 16, 'Contador Público Nacional' , 'Contadora Público Nacional' , 'CPN' , 'CPN'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 17, 'Contraalmirante Vgm' , 'Contraalmirante Vgm' , 'Calt.' , 'Calt.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 18, 'Coronel' , 'Coronel' , 'Cnel.' , 'Cnel.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 19, 'Doctor' , 'Doctora' , 'Dr.' , 'Dra.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 20, 'General' , 'General' , 'Gral' , 'Gral'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 21, 'General de Brigada' , 'General de Brigada' , 'Gral B.' , 'Gral B.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 22, 'General de División' , 'General de División' , 'Gral Div.' , 'Gral Div.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 23, 'Geólogo' , 'Geólogo' , 'Geol.' , 'Geol.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 24, 'Ingeniero' , 'Ingeniera ' , 'Ing. Agr.' , 'Ing. Agr.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 25, 'Ingeniero' , 'Ingeniera' , 'Ing.' , 'Ing.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 26, 'Licenciado' , 'Licenciada' , 'Lic.' , 'Lic.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 27, 'Licenciado' , 'Licenciada' , 'Lic.' , 'Lic.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 28, 'Magister' , 'Magister' , 'Mg.' , 'Mg.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 29, 'Master of Science' , 'Master of Science' , 'Msc.' , 'Msc.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 30, 'Mayor' , 'Mayor' , 'My.' , 'My.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 31, 'Médico' , 'Médica' , 'Méd.' , 'Méd.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 32, 'Médico Veterinario' , 'Médica Veterinario' , 'Méd Vet.' , 'Méd Vet.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 33, 'Odontólogo' , 'Odontólogo' , 'Od.' , 'Od.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 34, 'Prefecto' , 'Prefecto' , 'Pref.' , 'Pref.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 35, 'Prefecto General' , 'Prefecto General' , 'Pref.' , 'Pref.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 36, 'Prefecto Mayor' , 'Prefecto Mayor' , 'Pref.' , 'Pref.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 37, 'Presbítero' , 'Presbítera' , 'Presb.' , 'Presb.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 38, 'Profesor' , 'Profesora' , 'Prof.' , 'Prof.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 39, 'Programador' , 'Programadora' , 'Prog.' , 'Prog.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 40, 'Técnico' , 'Técnica' , 'Téc.' , 'Téc.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 41, 'Teniente' , 'Teniente' , 'Tte.' , 'Tte.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 42, 'Teniente Coronel' , 'Teniente Coronel' , 'Tte Cnel.' , 'Tte Cnel.'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 43, 'Teniente Primero' , 'Teniente Primero' , 'Tnte 1ro' , 'Tnte 1ro'); INSERT INTO mdp_personas_titulos (titulo_persona, nombre, nombre_femenino, nombre_abreviado, nombre_femenino_abreviado) VALUES ( 44, 'Vicecomodoro' , 'Vicecomodoro' , 'Vc.' , 'Vc.'); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_constancias_autoridades -- Check: ck_sga_constancias_autoridades_en_calidad_de -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_constancias_autoridades DROP CONSTRAINT ck_sga_constancias_autoridades_en_calidad_de; ALTER TABLE sga_constancias_autoridades ADD CONSTRAINT ck_sga_constancias_autoridades_en_calidad_de CHECK (en_calidad_de IN ('T', 'S')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_constancias_autoridades -- FK: fk_sga_constancias_autoridades_sga_autoridades -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_constancias_autoridades_sga_autoridades; CREATE INDEX ifk_sga_constancias_autoridades_sga_autoridades ON sga_constancias_autoridades (autoridad); -- ALTER TABLE sga_constancias_autoridades DROP CONSTRAINT fk_sga_constancias_autoridades_sga_autoridades; ALTER TABLE sga_constancias_autoridades ADD CONSTRAINT fk_sga_constancias_autoridades_sga_autoridades FOREIGN KEY (autoridad) REFERENCES sga_autoridades (autoridad) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_constancias_autoridades -- FK: fk_sga_constancias_autoridades_sga_constancias -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_constancias_autoridades_sga_constancias; CREATE INDEX ifk_sga_constancias_autoridades_sga_constancias ON sga_constancias_autoridades (constancia); -- ALTER TABLE sga_constancias_autoridades DROP CONSTRAINT fk_sga_constancias_autoridades_sga_constancias; ALTER TABLE sga_constancias_autoridades ADD CONSTRAINT fk_sga_constancias_autoridades_sga_constancias FOREIGN KEY (constancia) REFERENCES sga_constancias (constancia) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias_doc_digital -- FK: fk_sga_licencias_doc_digital_sga_licencias -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_licencias_doc_digital_sga_licencias; CREATE INDEX ifk_sga_licencias_doc_digital_sga_licencias ON sga_licencias_doc_digital (licencia); -- ALTER TABLE sga_licencias_doc_digital DROP CONSTRAINT fk_sga_licencias_doc_digital_sga_licencias; ALTER TABLE sga_licencias_doc_digital ADD CONSTRAINT fk_sga_licencias_doc_digital_sga_licencias FOREIGN KEY (licencia) REFERENCES sga_licencias (licencia) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_licencias_doc_digital -- Actualizacion Nro de Secuencia: sga_licencias_doc_digital_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_licencias_doc_digital_seq',(SELECT MAX(licencia_doc) FROM sga_licencias_doc_digital)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_personas_titulos -- Actualizacion Nro de Secuencia: mdp_personas_titulos_seq -- SIU: 1 a 1000 -- Instituciones: 1001 en adelante -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('mdp_personas_titulos_seq', 1000); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_excep_asistencia -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_alumnos_excep_asistencia; CREATE TABLE sga_alumnos_excep_asistencia ( comision Integer NOT NULL, alumno Integer NOT NULL, documento Integer, procentaje_regular Numeric(5,2), porcentaje_promocion Numeric(5,2), observaciones Varchar(200) ); -- ALTER TABLE sga_alumnos_excep_asistencia DROP CONSTRAINT pk_sga_alumnos_excep_asistencia; ALTER TABLE sga_alumnos_excep_asistencia ADD CONSTRAINT pk_sga_alumnos_excep_asistencia PRIMARY KEY (comision,alumno); Revoke all ON sga_alumnos_excep_asistencia FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_alumnos_excep_asistencia +++++++++++++++++++++++++++++ GRANT select ON sga_alumnos_excep_asistencia TO public; GRANT update ON sga_alumnos_excep_asistencia TO public; GRANT delete ON sga_alumnos_excep_asistencia TO public; GRANT insert ON sga_alumnos_excep_asistencia TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Se considera que el módulo esta cumplido siempre (no se realiza ningun control). -- Utilizado en módulos con actividades optativas. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_reglas (regla, regla_tipo, nombre, mensaje_usuario, mensaje_validacion, php_clase) VALUES (110, 1, 'Actividades optativas', 'El módulo se cumple siempre. Todas las actividades son optativas', 'El módulo se cumple siempre. Todas las actividades son optativas', 'regla_modulo_siempre_cumplido' ); -- Parámetros -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (110,'alumno'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (110,'plan_version'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (110,'modulo'); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_excep_asistencia -- FK: fk_sga_alumnos_excep_asistencia_sga_alumnos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_alumnos_excep_asistencia_sga_alumnos; CREATE INDEX ifk_sga_alumnos_excep_asistencia_sga_alumnos ON sga_alumnos_excep_asistencia (alumno); -- ALTER TABLE sga_alumnos_excep_asistencia DROP CONSTRAINT fk_sga_alumnos_excep_asistencia_sga_alumnos; ALTER TABLE sga_alumnos_excep_asistencia ADD CONSTRAINT fk_sga_alumnos_excep_asistencia_sga_alumnos FOREIGN KEY (alumno) REFERENCES sga_alumnos (alumno) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_excep_asistencia -- FK: fk_sga_alumnos_excep_asistencia_sga_comisiones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_alumnos_excep_asistencia_sga_comisiones; CREATE INDEX ifk_sga_alumnos_excep_asistencia_sga_comisiones ON sga_alumnos_excep_asistencia (comision); -- ALTER TABLE sga_alumnos_excep_asistencia DROP CONSTRAINT fk_sga_alumnos_excep_asistencia_sga_comisiones; ALTER TABLE sga_alumnos_excep_asistencia ADD CONSTRAINT fk_sga_alumnos_excep_asistencia_sga_comisiones FOREIGN KEY (comision) REFERENCES sga_comisiones (comision) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_alumnos_excep_asistencia -- FK: fk_sga_alumnos_excep_asistencia_sga_documentos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_alumnos_excep_asistencia_sga_documentos; CREATE INDEX ifk_sga_alumnos_excep_asistencia_sga_documentos ON sga_alumnos_excep_asistencia (documento); -- ALTER TABLE sga_alumnos_excep_asistencia DROP CONSTRAINT fk_sga_alumnos_excep_asistencia_sga_documentos; ALTER TABLE sga_alumnos_excep_asistencia ADD CONSTRAINT fk_sga_alumnos_excep_asistencia_sga_documentos FOREIGN KEY (documento) REFERENCES sga_documentos (documento) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_regularidades -- Version: 3.0.0 -- Recupera las cursadas y equivalencias de regularidad (Aprobadas/Reprobadas). -- Cursadas / Equivalencias de Regularidad / Otros Reconocimientos de regularidad. /Promociones (solo cuando la comision no tiene instancia de regularidad) -- -- Valores de los campos: -- origen (cursadas) : R = Acta de Regularidad / P = Acta de Promoción (son alumnos que no estan en acta de cursadas de esa comision) -- alcance (equivalencias) : Equivalencia Parcial / Equivalencia de Regularidad -- tipo : Regularidad / Promoción / Equivalencia Parcial / Equivalencia de Regularidad -- resultado : A - Aprobado / R - Desaprobado / U - Ausente -- tipo_acta y tipo_tramite: N - Normal / R - Rectificativo -- vigente : 1 - Es Vigente / 0 - No esta vigente -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW vw_regularidades; CREATE OR REPLACE VIEW vw_regularidades ( elemento, id_acta, id_acta_original, nro_acta, tipo_acta, origen, tipo, evaluacion, comision, equivalencia_tramite, equivalencia_tramite_original, tipo_tramite, nro_resolucion, equivalencia, alumno, plan_version, instancia, fecha, fecha_vigencia, es_vigente, folio, renglon, escala_nota, nota, resultado, cond_regularidad, estado, pct_asistencia, observaciones, nota_descripcion, resultado_descripcion ) AS -- Actas de Cursadas y Promociones SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, 'Regularidad' as tipo, sga_actas.evaluacion, sga_actas.comision, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, CASE WHEN (sga_actas_detalle.fecha_vigencia IS NULL OR sga_actas_detalle.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as es_vigente, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'R' -- Regularidades.. AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.estado = 'A' -- Activo AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente? AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado UNION ALL -- Actas de Promociones (de comisiones que son solo promocionales) SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, 'Promoción' as tipo, sga_actas.evaluacion, sga_actas.comision, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, CASE WHEN (sga_actas_detalle.fecha_vigencia IS NULL OR sga_actas_detalle.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as es_vigente, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'P' -- Promociones AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.estado = 'A' -- Activo AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente? AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado AND NOT EXISTS (SELECT 1 FROM sga_comisiones_instancias WHERE sga_comisiones_instancias.comision = sga_actas.comision AND sga_comisiones_instancias.instancia = 1) -- NO Existe instancia de cursada UNION ALL -- EQUIVALENCIAS DE REGULARIDAD Y PARCIALES: Original y Rectificativas SELECT sga_equiv_otorgada.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as varchar(30)) as nro_acta, cast(null as char(1)) as tipo_acta, cast(null as char(1)) as origen, CASE sga_equiv_otorgada.alcance WHEN 'P' THEN 'Equivalencia Parcial' WHEN 'R' THEN 'Equivalencia de Regularidad' END as tipo, cast(null as integer) as evaluacion, cast(null as integer) as comision, sga_equiv_tramite.equivalencia_tramite, CASE sga_equiv_tramite.tipo_tramite WHEN 'N' THEN sga_equiv_tramite.equivalencia_tramite WHEN 'R' THEN sga_equiv_tramite.rectifica_a END as equivalencia_tramite_original, sga_equiv_tramite.tipo_tramite as tipo_tramite, sga_equiv_tramite.documento as nro_resolucion, sga_equiv_otorgada.equivalencia, sga_equiv_tramite.alumno, sga_equiv_tramite.plan_version, cast(null as integer) as instancia, sga_equiv_otorgada.fecha, sga_equiv_otorgada.fecha_vigencia, CASE WHEN (sga_equiv_otorgada.fecha_vigencia IS NULL OR sga_equiv_otorgada.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as es_vigente, cast(null as smallint) as folio, cast(null as smallint) as renglon, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado, cast(null as integer) as cond_regularidad, sga_equiv_otorgada.estado, cast(null as numeric(5,2)) as pct_asistencia, sga_equiv_otorgada.temas_a_rendir as observaciones, sga_escalas_notas_det.descripcion, sga_escalas_notas_resultado.descripcion FROM sga_equiv_tramite, sga_equiv_otorgada LEFT JOIN sga_escalas_notas_det ON (sga_equiv_otorgada.escala_nota = sga_escalas_notas_det.escala_nota AND sga_equiv_otorgada.nota = sga_escalas_notas_det.nota), sga_escalas_notas_resultado WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_equiv_tramite.estado = 'C' -- Cerrado AND sga_equiv_otorgada.alcance IN ('R','P') -- Equivalencia de Regularidad y Parcial AND sga_equiv_otorgada.rectificado = 'N' -- No Rectificado AND sga_equiv_otorgada.estado = 'A' -- Activo AND sga_equiv_otorgada.resultado IN ('A','R') -- Aprobado/Reprobado AND sga_escalas_notas_resultado.resultado = sga_equiv_otorgada.resultado ; -- ++++++++++++++++++++++++++++++ Fin view vw_regularidades +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_regularidades to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_regularidades_venc -- Secuencia: sga_regularidades_venc_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_regularidades_venc_seq; CREATE SEQUENCE sga_regularidades_venc_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_regularidades_venc -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_regularidades_venc; CREATE TABLE sga_regularidades_venc ( vencimiento INTEGER NOT NULL DEFAULT nextval('sga_regularidades_venc_seq'::text) , origen Char(1) NOT NULL, fecha_alta Date NOT NULL DEFAULT CURRENT_DATE, id_acta Integer, alumno Integer, equivalencia Integer, documento Integer, fecha_vigencia_anterior Date, fecha_vigencia_nuevo Date, observaciones Varchar(200) ); -- ALTER TABLE sga_regularidades_venc DROP CONSTRAINT pk_sga_regularidades_venc; ALTER TABLE sga_regularidades_venc ADD CONSTRAINT pk_sga_regularidades_venc PRIMARY KEY (vencimiento); Revoke all ON sga_regularidades_venc FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_regularidades_venc +++++++++++++++++++++++++++++ GRANT select ON sga_regularidades_venc TO public; GRANT update ON sga_regularidades_venc TO public; GRANT delete ON sga_regularidades_venc TO public; GRANT insert ON sga_regularidades_venc TO public; INSERT INTO sga_acciones_operacion (operacion, accion) VALUES ('800SIUMAT029', 4); -- Reinscripción a Propuesta -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE: td_sga_comisiones -- Tabla: sga_comisiones -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP TRIGGER tdb_sga_comisiones ON sga_comisiones RESTRICT; DROP FUNCTION ftdb_sga_comisiones (); CREATE OR REPLACE FUNCTION ftdb_sga_comisiones () RETURNS trigger AS $BODY$ BEGIN -- Borro la evaluacion automática de la comision. DELETE FROM sga_evaluaciones WHERE entidad = OLD.entidad AND evaluacion_tipo IN (SELECT evaluacion_tipo FROM sga_evaluaciones_tipos WHERE aplica_a = 'C' AND automatica = 'S'); -- Borro tabla de cupos de la comision DELETE FROM sga_comisiones_cupo WHERE comision = OLD.comision; -- Borro tabla de excepciones de asistencia por alumno. DELETE FROM sga_alumnos_excep_asistencia WHERE comision = OLD.comision; RETURN OLD; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE sobre sga_comisiones -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE TRIGGER tdb_sga_comisiones BEFORE DELETE ON sga_comisiones FOR EACH ROW EXECUTE PROCEDURE ftdb_sga_comisiones(); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_regularidades_venc -- Check: ck_sga_regularidades_venc_origen -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_regularidades_venc DROP CONSTRAINT ck_sga_regularidades_venc_origen; ALTER TABLE sga_regularidades_venc ADD CONSTRAINT ck_sga_regularidades_venc_origen CHECK (origen IN ('C', 'E')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_regularidades_venc -- FK: fk_sga_regularidades_venc_sga_actas_detalle -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_regularidades_venc_sga_actas_detalle; CREATE INDEX ifk_sga_regularidades_venc_sga_actas_detalle ON sga_regularidades_venc (id_acta,alumno); -- ALTER TABLE sga_regularidades_venc DROP CONSTRAINT fk_sga_regularidades_venc_sga_actas_detalle; ALTER TABLE sga_regularidades_venc ADD CONSTRAINT fk_sga_regularidades_venc_sga_actas_detalle FOREIGN KEY (id_acta,alumno) REFERENCES sga_actas_detalle (id_acta,alumno) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_regularidades_venc -- FK: fk_sga_regularidades_venc_sga_documentos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_regularidades_venc_sga_documentos; CREATE INDEX ifk_sga_regularidades_venc_sga_documentos ON sga_regularidades_venc (documento); -- ALTER TABLE sga_regularidades_venc DROP CONSTRAINT fk_sga_regularidades_venc_sga_documentos; ALTER TABLE sga_regularidades_venc ADD CONSTRAINT fk_sga_regularidades_venc_sga_documentos FOREIGN KEY (documento) REFERENCES sga_documentos (documento) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_regularidades_venc -- FK: fk_sga_regularidades_venc_sga_equiv_otorgada -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_regularidades_venc_sga_equiv_otorgada; CREATE INDEX ifk_sga_regularidades_venc_sga_equiv_otorgada ON sga_regularidades_venc (equivalencia); -- ALTER TABLE sga_regularidades_venc DROP CONSTRAINT fk_sga_regularidades_venc_sga_equiv_otorgada; ALTER TABLE sga_regularidades_venc ADD CONSTRAINT fk_sga_regularidades_venc_sga_equiv_otorgada FOREIGN KEY (equivalencia) REFERENCES sga_equiv_otorgada (equivalencia) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_equiv_parciales -- Version: 3.0.0 -- Recupera las equivalencias parciales (Aprobadas/Reprobadas) activas. -- Tiene la misma estructura que la vista de regularidades: vw_regularidades -- -- Valores de los campos: -- origen (solo para cursadas) : esta nulo -- alcance (equivalencias) : Equivalencia Parcial -- tipo : Equivalencia Parcial -- resultado : A - Aprobado / R - Desaprobado -- tipo_tramite : N - Normal / R - Rectificativo -- vigente : 1 - Es Vigente / 0 - No esta vigente -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW vw_equiv_parciales; CREATE OR REPLACE VIEW vw_equiv_parciales ( elemento, id_acta, id_acta_original, nro_acta, tipo_acta, origen, tipo, evaluacion, comision, equivalencia_tramite, equivalencia_tramite_original, tipo_tramite, nro_resolucion, equivalencia, alumno, plan_version, instancia, fecha, fecha_vigencia, es_vigente, folio, renglon, escala_nota, nota, resultado, cond_regularidad, estado, pct_asistencia, observaciones, nota_descripcion, resultado_descripcion ) AS SELECT sga_equiv_otorgada.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as varchar(30)) as nro_acta, cast(null as char(1)) as tipo_acta, cast(null as char(1)) as origen, cast('Equivalencia Parcial' as varchar(30)) as tipo, cast(null as integer) as evaluacion, cast(null as integer) as comision, sga_equiv_tramite.equivalencia_tramite, CASE sga_equiv_tramite.tipo_tramite WHEN 'N' THEN sga_equiv_tramite.equivalencia_tramite WHEN 'R' THEN sga_equiv_tramite.rectifica_a END as equivalencia_tramite_original, sga_equiv_tramite.tipo_tramite as tipo_tramite, sga_equiv_tramite.documento as nro_resolucion, sga_equiv_otorgada.equivalencia, sga_equiv_tramite.alumno, sga_equiv_tramite.plan_version, cast(null as integer) as instancia, sga_equiv_otorgada.fecha, sga_equiv_otorgada.fecha_vigencia, CASE WHEN (sga_equiv_otorgada.fecha_vigencia IS NULL OR sga_equiv_otorgada.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as es_vigente, cast(null as smallint) as folio, cast(null as smallint) as renglon, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado, cast(null as integer) as cond_regularidad, sga_equiv_otorgada.estado, cast(null as numeric(5,2)) as pct_asistencia, sga_equiv_otorgada.temas_a_rendir as observaciones, sga_escalas_notas_det.descripcion, sga_escalas_notas_resultado.descripcion FROM sga_equiv_tramite, sga_equiv_otorgada LEFT JOIN sga_escalas_notas_det ON (sga_equiv_otorgada.escala_nota = sga_escalas_notas_det.escala_nota AND sga_equiv_otorgada.nota = sga_escalas_notas_det.nota), sga_escalas_notas_resultado WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_equiv_tramite.estado = 'C' -- Cerrado AND sga_equiv_otorgada.alcance = 'P' -- Equivalencia Parcial AND sga_equiv_otorgada.rectificado = 'N' -- No Rectificado AND sga_equiv_otorgada.estado = 'A' -- Activo AND sga_equiv_otorgada.resultado IN ('A','R') -- Aprobado/Reprobado AND sga_escalas_notas_resultado.resultado = sga_equiv_otorgada.resultado ; -- ++++++++++++++++++++++++++++++ Fin view vw_equiv_parciales +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_equiv_parciales to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_regularidades -- Version: 3.0.0 -- Recupera las cursadas y equivalencias de regularidad (Aprobadas/Reprobadas). -- Cursadas / Equivalencias de Regularidad / Otros Reconocimientos de regularidad. /Promociones (solo cuando la comision no tiene instancia de regularidad) -- -- Valores de los campos: -- origen (cursadas) : R = Acta de Regularidad / P = Acta de Promoción (son alumnos que no estan en acta de cursadas de esa comision) -- alcance (equivalencias) : Equivalencia Parcial / Equivalencia de Regularidad -- tipo : Regularidad / Promoción / Equivalencia de Regularidad (No se consideran las Equivalencias Parciales) -- resultado : A - Aprobado / R - Desaprobado / U - Ausente -- tipo_acta y tipo_tramite: N - Normal / R - Rectificativo -- vigente : 1 - Es Vigente / 0 - No esta vigente -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP VIEW vw_regularidades; CREATE OR REPLACE VIEW vw_regularidades ( elemento, id_acta, id_acta_original, nro_acta, tipo_acta, origen, tipo, evaluacion, comision, equivalencia_tramite, equivalencia_tramite_original, tipo_tramite, nro_resolucion, equivalencia, alumno, plan_version, instancia, fecha, fecha_vigencia, es_vigente, folio, renglon, escala_nota, nota, resultado, cond_regularidad, estado, pct_asistencia, observaciones, nota_descripcion, resultado_descripcion ) AS -- 1. Actas de Cursadas SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, cast('Regularidad' as varchar(30)) as tipo, sga_actas.evaluacion, sga_actas.comision, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, CASE WHEN (sga_actas_detalle.fecha_vigencia IS NULL OR sga_actas_detalle.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as es_vigente, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'R' -- Regularidades.. AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.estado = 'A' -- Activo AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente? AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado UNION ALL -- 2. Actas de Promociones (de comisiones que son solo promocionales) SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, cast('Promoción' as varchar(30)) as tipo, sga_actas.evaluacion, sga_actas.comision, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, CASE WHEN (sga_actas_detalle.fecha_vigencia IS NULL OR sga_actas_detalle.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as es_vigente, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'P' -- Promociones AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.estado = 'A' -- Activo AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente? AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado AND NOT EXISTS (SELECT 1 FROM sga_comisiones_instancias WHERE sga_comisiones_instancias.comision = sga_actas.comision AND sga_comisiones_instancias.instancia = 1) -- NO Existe instancia de cursada UNION ALL -- 3. EQUIVALENCIAS DE REGULARIDAD: Original y Rectificativas SELECT sga_equiv_otorgada.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as varchar(30)) as nro_acta, cast(null as char(1)) as tipo_acta, cast(null as char(1)) as origen, cast('Equivalencia de Regularidad' as varchar(30)) as tipo, cast(null as integer) as evaluacion, cast(null as integer) as comision, sga_equiv_tramite.equivalencia_tramite, CASE sga_equiv_tramite.tipo_tramite WHEN 'N' THEN sga_equiv_tramite.equivalencia_tramite WHEN 'R' THEN sga_equiv_tramite.rectifica_a END as equivalencia_tramite_original, sga_equiv_tramite.tipo_tramite as tipo_tramite, sga_equiv_tramite.documento as nro_resolucion, sga_equiv_otorgada.equivalencia, sga_equiv_tramite.alumno, sga_equiv_tramite.plan_version, cast(null as integer) as instancia, sga_equiv_otorgada.fecha, sga_equiv_otorgada.fecha_vigencia, CASE WHEN (sga_equiv_otorgada.fecha_vigencia IS NULL OR sga_equiv_otorgada.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as es_vigente, cast(null as smallint) as folio, cast(null as smallint) as renglon, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado, cast(null as integer) as cond_regularidad, sga_equiv_otorgada.estado, cast(null as numeric(5,2)) as pct_asistencia, sga_equiv_otorgada.temas_a_rendir as observaciones, sga_escalas_notas_det.descripcion, sga_escalas_notas_resultado.descripcion FROM sga_equiv_tramite, sga_equiv_otorgada LEFT JOIN sga_escalas_notas_det ON (sga_equiv_otorgada.escala_nota = sga_escalas_notas_det.escala_nota AND sga_equiv_otorgada.nota = sga_escalas_notas_det.nota), sga_escalas_notas_resultado WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_equiv_tramite.estado = 'C' -- Cerrado AND sga_equiv_otorgada.alcance = 'R' -- Equivalencia de Regularidad AND sga_equiv_otorgada.rectificado = 'N' -- No Rectificado AND sga_equiv_otorgada.estado = 'A' -- Activo AND sga_equiv_otorgada.resultado IN ('A','R') -- Aprobado/Reprobado AND sga_escalas_notas_resultado.resultado = sga_equiv_otorgada.resultado ; -- ++++++++++++++++++++++++++++++ Fin view vw_regularidades +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_regularidades to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_regularidades_inv -- Version: 3.0.0 -- Recupera las cursadas y equivalencias de regularidad (Aprobadas/Reprobadas) invalidadas (estado = I). -- Cursadas / Equivalencias de Regularidad / Otros Reconocimientos de regularidad. /Promociones (solo cuando la comision no tiene instancia de regularidad) -- -- Valores de los campos: -- origen (cursadas) : R = Acta de Regularidad / P = Acta de Promoción -- alcance (quivalenias): Equivalencia Parcial / Equivalencia de Regularidad -- tipo : Regularidad / Promoción / Equivalencia Parcial / Equivalencia de Regularidad -- resultado : A - Aprobado / R - Desaprobado / U - Ausente -- tipo_acta y tipo_tramite: N - Normal / R - Rectificativo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP VIEW vw_regularidades_inv; CREATE OR REPLACE VIEW vw_regularidades_inv ( elemento, id_acta, id_acta_original, nro_acta, tipo_acta, origen, tipo, evaluacion, comision, equivalencia_tramite, equivalencia_tramite_original, tipo_tramite, nro_resolucion, equivalencia, alumno, plan_version, instancia, fecha, fecha_vigencia, folio, renglon, escala_nota, nota, resultado, cond_regularidad, estado, pct_asistencia, observaciones, nota_descripcion, resultado_descripcion ) AS -- 1. Actas de Cursadas SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, cast('Regularidad' as varchar(30)) as tipo, sga_actas.evaluacion, sga_actas.comision, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'R' -- Regularidades.. AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.estado = 'I' -- Invalidado AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente? AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado UNION ALL -- 2. Actas de Promociones (de comisiones que son solo promocionales) SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.nro_acta, sga_actas.tipo_acta, sga_actas.origen, cast('Promoción' as varchar(30)) as tipo, sga_actas.evaluacion, sga_actas.comision, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as nro_resolucion, cast(null as integer) as equivalencia, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, sga_actas_detalle.folio, sga_actas_detalle.renglon, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado, sga_actas_detalle.cond_regularidad, sga_actas_detalle.estado, sga_actas_detalle.pct_asistencia, sga_actas_detalle.observaciones, sga_escalas_notas_det.descripcion, sga_instancias_resultado.descripcion FROM sga_actas, sga_comisiones, sga_actas_detalle LEFT JOIN sga_escalas_notas_det ON (sga_actas_detalle.escala_nota = sga_escalas_notas_det.escala_nota AND sga_actas_detalle.nota = sga_escalas_notas_det.nota), sga_instancias_resultado WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'P' -- Promociones AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.estado = 'I' -- Invalidado AND sga_actas_detalle.resultado IN ('A','R','U') -- Aprobado/Reprobado/Ausente? AND sga_instancias_resultado.instancia = sga_actas_detalle.instancia AND sga_instancias_resultado.resultado = sga_actas_detalle.resultado AND NOT EXISTS (SELECT 1 FROM sga_comisiones_instancias WHERE sga_comisiones_instancias.comision = sga_actas.comision AND sga_comisiones_instancias.instancia = 1) -- NO Existe instancia de cursada UNION ALL -- 3. Equivalencias de Regularidad (Original y Rectificativas) SELECT sga_equiv_otorgada.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as varchar(30)) as nro_acta, cast(null as char(1)) as tipo_acta, cast(null as char(1)) as origen, cast('Equivalencia de Regularidad' as varchar(30)) as tipo, cast(null as integer) as evaluacion, cast(null as integer) as comision, sga_equiv_tramite.equivalencia_tramite, CASE sga_equiv_tramite.tipo_tramite WHEN 'N' THEN sga_equiv_tramite.equivalencia_tramite WHEN 'R' THEN sga_equiv_tramite.rectifica_a END as equivalencia_tramite_original, sga_equiv_tramite.tipo_tramite as tipo_tramite, sga_equiv_tramite.documento as nro_resolucion, sga_equiv_otorgada.equivalencia, sga_equiv_tramite.alumno, sga_equiv_tramite.plan_version, cast(null as integer) as instancia, sga_equiv_otorgada.fecha, sga_equiv_otorgada.fecha_vigencia, cast(null as smallint) as folio, cast(null as smallint) as renglon, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado, cast(null as integer) as cond_regularidad, sga_equiv_otorgada.estado, cast(null as numeric(5,2)) as pct_asistencia, sga_equiv_otorgada.temas_a_rendir as observaciones, sga_escalas_notas_det.descripcion, sga_escalas_notas_resultado.descripcion FROM sga_equiv_tramite, sga_equiv_otorgada LEFT JOIN sga_escalas_notas_det ON (sga_equiv_otorgada.escala_nota = sga_escalas_notas_det.escala_nota AND sga_equiv_otorgada.nota = sga_escalas_notas_det.nota), sga_escalas_notas_resultado WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_equiv_tramite.estado = 'C' -- Cerrado AND sga_equiv_otorgada.alcance IN ('R','P') -- Equivalencia de Regularidad y Parcial AND sga_equiv_otorgada.rectificado = 'N' -- No Rectificado AND sga_equiv_otorgada.estado = 'I' -- Invalidado AND sga_equiv_otorgada.resultado IN ('A','R') -- Aprobado/Reprobado AND sga_escalas_notas_resultado.resultado = sga_equiv_otorgada.resultado ; -- ++++++++++++++++++++++++++++++ Fin view vw_regularidades_inv +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_regularidades_inv to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_regularidades_venc -- Actualizacion Nro de Secuencia: sga_regularidades_venc_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_regularidades_venc_seq',(SELECT MAX(vencimiento) FROM sga_regularidades_venc)); ALTER TABLE sga_regularidades_venc DROP CONSTRAINT ck_sga_regularidades_venc_origen; ALTER TABLE sga_regularidades_venc DROP COLUMN origen; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_comision_cant_clases -- -- Retorna la cantidad de clases por cada tipo de clase -- * Clases Activas -- * Si hay subcomisiones, clases de las subcomisiones en las que esta inscripto el alumno. -- -- Recibe: f_comision_cant_clases(integer, integer) -- 1. Alumno -- 2. Comision -- -- Retorna: -- 1. Cantidad de Clases validas -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_comision_cant_clases(integer, integer); CREATE OR REPLACE FUNCTION f_comision_cant_clases(_alumno Integer, _comision integer) RETURNS integer AS $BODY$ DECLARE _subcom integer; _cantidad_clases integer; BEGIN _subcom := 0; _cantidad_clases := 0; -- Si la fecha es nula le paso la fecha actual. SELECT COUNT(*) INTO _subcom FROM sga_subcomisiones WHERE comision = _comision; IF _subcom > 0 THEN -- Hay subcomisiones -- Recupero cantidad de clases de las bandas horarias de las subcomisiones en donde esta inscripto el alumno. SELECT COUNT(*) INTO _cantidad_clases FROM sga_insc_cursada, sga_subcomisiones, sga_insc_subcomision, sga_subcomisiones_bh, sga_clases WHERE sga_insc_cursada.alumno = _alumno AND sga_insc_cursada.comision = _comision AND sga_insc_subcomision.inscripcion = sga_insc_cursada.inscripcion AND sga_subcomisiones_bh.subcomision = sga_insc_subcomision.subcomision AND sga_clases.banda_horaria = sga_subcomisiones_bh.banda_horaria AND sga_clases.valido = 1; ELSE -- Sin subcomisiones -- Recupero cantidad de clases de las bandas horarias de la comision SELECT COUNT(*) INTO _cantidad_clases FROM sga_comisiones_bh, sga_clases WHERE sga_comisiones_bh.comision = _comision AND sga_clases.banda_horaria = sga_comisiones_bh.banda_horaria AND sga_clases.valido = 1; END IF; -- Retorno cantidad de clases que le corresponde al alumno RETURN _cantidad_clases; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_comision_cant_clases ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_comision_cant_clases (integer, integer) FROM public; GRANT EXECUTE ON FUNCTION f_comision_cant_clases (integer, integer) to public; ALTER TABLE sga_alumnos_excep_asistencia ADD COLUMN porcentaje_regular Numeric(5,2); ALTER TABLE sga_alumnos_excep_asistencia DROP COLUMN procentaje_regular; INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('mat_reinscripcion_propuesta', 'Define a que propuestas debe reiniscribirse el alumno en cada año académico', 'E', 'S', 4, 'N', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema_valores ( parametro, valor, descripcion ) VALUES ('mat_reinscripcion_propuesta','S','Los alumnos deben reinscribirse en la propuesta'); INSERT INTO par_parametros_sistema_valores ( parametro, valor, descripcion ) VALUES ('mat_reinscripcion_propuesta','N','Los alumnos no deben reinscribirse en la propuesta'); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_criterios_prioridad_ing -- Secuencia: sga_criterios_prioridad_ing_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_criterios_prioridad_ing_seq; CREATE SEQUENCE sga_criterios_prioridad_ing_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_criterios_prioridad_ing -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_criterios_prioridad_ing; CREATE TABLE sga_criterios_prioridad_ing ( criterio INTEGER NOT NULL DEFAULT nextval('sga_criterios_prioridad_ing_seq'::text) , nombre Varchar(100) NOT NULL, descripcion Varchar(255), activo Smallint NOT NULL DEFAULT 1, orden Smallint DEFAULT 1, funcion_base Varchar(100), tabla_campo Varchar(100) ); -- ALTER TABLE sga_criterios_prioridad_ing DROP CONSTRAINT pk_sga_criterios_prioridad_ing; ALTER TABLE sga_criterios_prioridad_ing ADD CONSTRAINT pk_sga_criterios_prioridad_ing PRIMARY KEY (criterio); Revoke all ON sga_criterios_prioridad_ing FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_criterios_prioridad_ing +++++++++++++++++++++++++++++ GRANT select ON sga_criterios_prioridad_ing TO public; GRANT update ON sga_criterios_prioridad_ing TO public; GRANT delete ON sga_criterios_prioridad_ing TO public; GRANT insert ON sga_criterios_prioridad_ing TO public; INSERT INTO par_configuraciones (nombre, valor, descripcion, tipo_de_dato) VALUES ('preinscripcion','preinscripcion','Define la entrada de conexión (en archivo bases.ini del proyecto) a la base del módulo de preinscripción', 'S'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_criterios_prioridad_ing -- Criterios usados para representar la prioridad de inscripción automática a actividades de 1er año a ingresantes de las propuestas. -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_criterios_prioridad_ing (criterio, nombre, descripcion, orden, activo, funcion_base, tabla_campo) VALUES ( 1, 'Trabaja', 'Poseer constancia de trabajo', NULL, 0, 'f_criterio_trabaja', NULL); INSERT INTO sga_criterios_prioridad_ing (criterio, nombre, descripcion, orden, activo, funcion_base, tabla_campo) VALUES ( 2, 'Tiene hijos', '', NULL, 0, 'f_criterio_tiene_hijos', NULL); INSERT INTO sga_criterios_prioridad_ing (criterio, nombre, descripcion, orden, activo, funcion_base, tabla_campo) VALUES ( 3, 'Cursa otra propuesta', '', NULL, 0, 'f_criterio_cursa_otra_prop', NULL); INSERT INTO sga_criterios_prioridad_ing (criterio, nombre, descripcion, orden, activo, funcion_base, tabla_campo) VALUES ( 4, 'Fecha y hora de Inscripción', 'Fecha y hora de inscripción', NULL, 0, NULL, 'sga_propuesta_aspira.fecha_inscripcion'); INSERT INTO sga_criterios_prioridad_ing (criterio, nombre, descripcion, orden, activo, funcion_base, tabla_campo) VALUES ( 5, 'Apellido', 'Apellido del Alumno', NULL, 0, NULL, 'mdp_personas.apellido'); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_criterios_prioridad_ing -- Check: ck_sga_criterios_prioridad_ing_activo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_criterios_prioridad_ing DROP CONSTRAINT ck_sga_criterios_prioridad_ing_activo; ALTER TABLE sga_criterios_prioridad_ing ADD CONSTRAINT ck_sga_criterios_prioridad_ing_activo CHECK (activo in( 1, 0)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_criterios_prioridad_ing -- Actualizacion Nro de Secuencia: sga_criterios_prioridad_ing_seq -- SIU: 1 a 100 -- Institución: 101 en adelante -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_criterios_prioridad_ing_seq',100); ALTER TABLE sga_comisiones ADD visible_al_alumno Char(1) NOT NULL DEFAULT 'S'; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_comisiones -- Check: ck_sga_comisiones_visible_al_alumno -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_comisiones DROP CONSTRAINT ck_sga_comisiones_visible_al_alumno; ALTER TABLE sga_comisiones ADD CONSTRAINT ck_sga_comisiones_visible_al_alumno CHECK (visible_al_alumno IN ('S', 'N')); DELETE FROM par_configuraciones where nombre = 'preinscripcion'; -- Cursadas -- Borro fk. ya que el campo inscripcion pude ser de: -- sga_insc_cursada.inscripcion (por las excepciones) o sga_ins_cursada_log.inscripcion (por los rechazos) DROP INDEX ifk_sga_insc_cursada_log_requisitos_sga_insc_cursada_log; ALTER TABLE sga_insc_cursada_log_requisitos DROP CONSTRAINT fk_sga_insc_cursada_log_requisitos_sga_insc_cursada_log; ALTER TABLE sga_insc_cursada_log ALTER COLUMN inscripcion DROP DEFAULT; -- Examenes -- Borro fk. ya que el campo inscripcion pude ser de: -- sga_insc_examen.inscripcion (por las excepciones) o sga_ins_examen_log.inscripcion (por los rechazos) DROP INDEX ifk_sga_insc_examen_log_requisitos_sga_insc_examen_log; ALTER TABLE sga_insc_examen_log_requisitos DROP CONSTRAINT fk_sga_insc_examen_log_requisitos_sga_insc_examen_log; -- Borro del default que es el llamado a la secuencia ALTER TABLE sga_insc_examen_log ALTER COLUMN inscripcion DROP DEFAULT; -- BORRO SECUENCIAS DROP SEQUENCE sga_insc_examen_log_requisitos_seq; DROP SEQUENCE sga_insc_cursada_log_requisitos_seq; -- Borro triggers DROP TRIGGER tua_sga_insc_examen ON sga_insc_examen RESTRICT; DROP FUNCTION ftua_sga_insc_examen(); DROP TRIGGER tua_sga_insc_cursada ON sga_insc_cursada RESTRICT; DROP FUNCTION ftua_sga_insc_cursada(); DROP TRIGGER tua_sga_asignaciones ON sga_asignaciones RESTRICT; DROP FUNCTION ftua_sga_asignaciones (); -- agrego columna ALTER TABLE sga_insc_cursada ADD COLUMN exceptuado Char(1) NOT NULL DEFAULT 'N'; ALTER TABLE his_insc_cursada ADD COLUMN exceptuado Char(1) NOT NULL DEFAULT 'N'; ALTER TABLE sga_insc_cursada_log ADD COLUMN exceptuado Char(1) NOT NULL DEFAULT 'N'; ALTER TABLE his_insc_cursada_log ADD COLUMN exceptuado Char(1) NOT NULL DEFAULT 'N'; ALTER TABLE sga_insc_examen ADD COLUMN exceptuado Char(1) NOT NULL DEFAULT 'N'; ALTER TABLE his_insc_examen ADD COLUMN exceptuado Char(1) NOT NULL DEFAULT 'N'; ALTER TABLE sga_insc_examen_log ADD COLUMN exceptuado Char(1) NOT NULL DEFAULT 'N'; ALTER TABLE his_insc_examen_log ADD COLUMN exceptuado Char(1) NOT NULL DEFAULT 'N'; -- Marco como exceptuado las inscripciones exceptuadas y las paso a Aceptadas. UPDATE sga_insc_cursada SET exceptuado = 'S', estado = 'A' WHERE estado = 'E'; UPDATE his_insc_cursada SET exceptuado = 'S', estado = 'A' WHERE estado = 'E'; UPDATE sga_insc_cursada_log SET exceptuado = 'S', estado = 'A' WHERE estado = 'E'; UPDATE his_insc_cursada_log SET exceptuado = 'S', estado = 'A' WHERE estado = 'E'; UPDATE sga_insc_examen SET exceptuado = 'S', estado = 'A' WHERE estado = 'E'; UPDATE his_insc_examen SET exceptuado = 'S', estado = 'A' WHERE estado = 'E'; UPDATE sga_insc_examen_log SET exceptuado = 'S', estado = 'A' WHERE estado = 'E'; UPDATE his_insc_examen_log SET exceptuado = 'S', estado = 'A' WHERE estado = 'E'; -- Borro el estado exceptuado. DELETE FROM sga_inscripciones_estados WHERE estado = 'E'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_pasar_inscripciones_a_historico -- -- Pasa inscripciones a examenes y cursadas a tablas historicas. -- Solo permite pasar inscripciones de años academicos anteriores -- -- Recibe: -- 1.- Integer: Año académico -- 2.- Integer: Pasar inscripciones a cursadas (Valores: 1-Pasar / 0-No pasar) -- 2.- Integer: Pasar inscripciones a examenes (Valores: 1-Pasar / 0-No pasar) -- -- Retorna: Integer: -1 - No paso inscripciones. Año académico no válido / 1 - Paso inscripciones. -- -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP FUNCTION f_pasar_inscripciones_a_historico(integer, integer, integer); CREATE OR REPLACE FUNCTION f_pasar_inscripciones_a_historico(_anio_academico integer, _cursadas integer, _examenes integer) RETURNS INTEGER AS $BODY$ DECLARE _anio_actual integer; BEGIN --Verifico que el año académico sea un año anterior al actual _anio_actual := f_anio_academico_actual(); IF _anio_academico >= _anio_actual THEN -- El año académico debe ser menor al año académico actual. RETURN -1; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- INSCRIPCIONES A EXAMENES -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF _examenes = 1 THEN -- Deshabilito triggers para que no actuen sobre las tablas de evaluaciones ALTER TABLE sga_insc_examen DISABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log DISABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log_requisitos DISABLE TRIGGER ALL; ALTER TABLE his_insc_examen DISABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log DISABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log_requisitos DISABLE TRIGGER ALL; -- Inscripciones aceptadas/pendientes/exceptuadas INSERT INTO his_insc_examen (inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado) SELECT i.inscripcion, i.alumno, i.llamado_mesa, i.plan_version, i.instancia, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.exceptuado, i.interfaz, i.estado FROM sga_insc_examen as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.llamado_mesa = llm.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- Requisitos que fallaron en los rechazos de inscripciones a examenes INSERT INTO his_insc_examen_log_requisitos (inscripcion_requisito, inscripcion, tipo, entidad, requisito, estado, regla, parametros) SELECT a.inscripcion_requisito, a.inscripcion, a.tipo, a.entidad, a.requisito, a.estado, a.regla, a.parametros FROM sga_insc_examen_log_requisitos as a, sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.inscripcion = a.inscripcion AND llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- inscripciones dadas de baja o rechazadas INSERT INTO his_insc_examen_log (inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, nro_transaccion, estado, motivo_rechazo, exceptuado, interfaz, operacion, fecha_operacion, nro_transaccion_log) SELECT i.inscripcion, i.alumno, i.llamado_mesa, i.plan_version, i.instancia, i.fecha_inscripcion, i.nro_transaccion, i.estado, i.motivo_rechazo, i.exceptuado, i.interfaz, i.operacion, i.fecha_operacion, i.nro_transaccion_log FROM sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- Borro todos los registros de las tablas originales DELETE FROM sga_insc_examen_log_requisitos WHERE inscripcion_requisito IN ( SELECT h.inscripcion_requisito FROM his_insc_examen_log_requisitos as h, sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.inscripcion = h.inscripcion AND llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_examen_log WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_examen_log as h, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE llm.llamado_mesa = h.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_examen WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_examen as h, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE h.llamado_mesa = llm.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); -- Habilito nuevamente los triggers ALTER TABLE sga_insc_examen ENABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log ENABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log_requisitos ENABLE TRIGGER ALL; ALTER TABLE his_insc_examen ENABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log ENABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log_requisitos ENABLE TRIGGER ALL; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- INSCRIPCIONES A CURSADAS -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF _cursadas = 1 THEN -- Deshabilito triggers para que no actuen sobre las tablas de evaluaciones ALTER TABLE sga_insc_cursada DISABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_instancias DISABLE TRIGGER ALL; ALTER TABLE sga_insc_subcomision DISABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log DISABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log_requisitos DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_instancias DISABLE TRIGGER ALL; ALTER TABLE his_insc_subcomision DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log_requisitos DISABLE TRIGGER ALL; -- Inscripciones a cursadas INSERT INTO his_insc_cursada (inscripcion, comision, alumno, tipo, prioridad, estado_preinscripcion, plan_version, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado) SELECT i.inscripcion, i.comision, i.alumno, i.tipo, i.prioridad, i.estado_preinscripcion, i.plan_version, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.exceptuado, i.interfaz, i.estado FROM sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Inscripcion a subcomisiones INSERT INTO his_insc_subcomision (inscripcion, subcomision) SELECT s.inscripcion, s.subcomision FROM sga_insc_subcomision as s, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE s.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Instancias de la inscripcion INSERT INTO his_insc_cursada_instancias (inscripcion, instancia) SELECT s.inscripcion, s.instancia FROM sga_insc_cursada_instancias as s, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE s.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Requisitos relacionados con los rechazos de Inscripciones INSERT INTO his_insc_cursada_log_requisitos (inscripcion_requisito, inscripcion, tipo, entidad, requisito, estado, regla, parametros) SELECT r.inscripcion_requisito, r.inscripcion, r.tipo, r.entidad, r.requisito, r.estado, r.regla, r.parametros FROM sga_insc_cursada_log_requisitos as r, sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.inscripcion = r.inscripcion AND c.comision = i.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Bajas y Rechazos de Inscripciones INSERT INTO his_insc_cursada_log (inscripcion, alumno, comision, plan_version, prioridad, fecha_inscripcion, fuera_de_termino, nro_transaccion, motivo_rechazo, exceptuado, interfaz, estado, operacion, fecha_operacion, nro_transaccion_log) SELECT i.inscripcion, i.alumno, i.comision, i.plan_version, i.prioridad, i.fecha_inscripcion, i.fuera_de_termino, i.nro_transaccion, i.motivo_rechazo, i.exceptuado, i.interfaz, i.estado, i.operacion, i.fecha_operacion, i.nro_transaccion_log FROM sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Borro registros de las tablas de inscripciones DELETE FROM sga_insc_subcomision WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_subcomision as h, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE h.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_instancias WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada_instancias as h, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE h.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_log_requisitos WHERE inscripcion_requisito IN ( SELECT h.inscripcion_requisito FROM his_insc_cursada_log_requisitos as h, sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.inscripcion = h.inscripcion AND c.comision = i.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_log WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada_log as h, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE c.comision = h.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada as h, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE c.comision = h.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); -- Habilito triggers ALTER TABLE sga_insc_cursada ENABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_instancias ENABLE TRIGGER ALL; ALTER TABLE sga_insc_subcomision ENABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log ENABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log_requisitos ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_instancias ENABLE TRIGGER ALL; ALTER TABLE his_insc_subcomision ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log_requisitos ENABLE TRIGGER ALL; END IF; -- OK. Inscripciones pasadas. RETURN 1; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- REVOKE EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico FROM public; GRANT EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico(integer, integer, integer) TO public; -- ++++++++++++++++++++++++++ Fin Function f_pasar_inscripciones_a_historico +++++++++++++++++++++++-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de UPDATE: tua_sga_asignaciones -- AFTER UPDATE -- Tabla: sga_asignaciones -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE OR REPLACE FUNCTION ftua_sga_asignaciones () RETURNS trigger AS $BODY$ DECLARE _cant_clases Integer; BEGIN -- Si cambió la fecha desde/hasta entonces actualizo las clases de las bandas horarias asociadas IF OLD.fecha_desde <> NEW.fecha_desde OR OLD.fecha_hasta <> NEW.fecha_hasta THEN _cant_clases := f_actualizar_clases_banda_horaria (NEW.asignacion, OLD.fecha_desde, OLD.fecha_hasta, NEW.fecha_desde, NEW.fecha_hasta, NEW.periodicidad, NEW.dia_semana); END IF; RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de UPDATE sobre sga_asignaciones -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE TRIGGER tua_sga_asignaciones AFTER UPDATE ON sga_asignaciones FOR EACH ROW EXECUTE PROCEDURE ftua_sga_asignaciones(); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- TRIGGER ftua_sga_insc_cursada -- AFTER UPDATE -- Tabla: sga_insc_cursada -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE OR REPLACE FUNCTION ftua_sga_insc_cursada() RETURNS TRIGGER AS $BODY$ DECLARE _evaluacion integer; DECLARE _escala_nota_cursada integer; DECLARE _escala_nota_promocion integer; DECLARE _cursada smallint; DECLARE _promocion smallint; DECLARE existe_detalle char(1); DECLARE _instancia_cursada smallint; DECLARE _instancia_promocion smallint; BEGIN -- Si acepto la inscripción IF (NEW.estado = 'A' AND OLD.estado = 'P') THEN -- Recupero la evaluacion automática de la comision SELECT sga_evaluaciones.evaluacion INTO _evaluacion FROM sga_comisiones, sga_evaluaciones, sga_evaluaciones_tipos WHERE sga_comisiones.comision = NEW.comision AND sga_evaluaciones.entidad = sga_comisiones.entidad AND sga_evaluaciones_tipos.evaluacion_tipo = sga_evaluaciones.evaluacion_tipo AND sga_evaluaciones_tipos.automatica = 'S'; -- Generación Automática IF _evaluacion IS NOT NULL THEN -- me fijo porque puede haberse agregado el alumno sin tener la inscripcion. SELECT instancia_cursada, instancia_promocion INTO _cursada, _promocion FROM sga_eval_detalle_cursadas WHERE sga_eval_detalle_cursadas.evaluacion = _evaluacion AND sga_eval_detalle_cursadas.alumno = NEW.alumno; IF NOT FOUND THEN existe_detalle := 'N'; ELSE existe_detalle := 'S'; END IF; -- Instancia: Cursada SELECT sga_comisiones_instancias.escala_nota INTO _escala_nota_cursada FROM sga_comisiones_instancias WHERE sga_comisiones_instancias.comision = NEW.comision AND sga_comisiones_instancias.instancia = 1; -- Si existe la instancia de cursada. IF NOT FOUND THEN _instancia_cursada := 0; ELSE _instancia_cursada := 1; END IF; -- Instancia: Promocion SELECT sga_comisiones_instancias.escala_nota INTO _escala_nota_promocion FROM sga_comisiones_instancias WHERE sga_comisiones_instancias.comision = NEW.comision AND sga_comisiones_instancias.instancia = 2; IF NOT FOUND THEN _instancia_promocion := 0; ELSE _instancia_promocion := 1; END IF; -- Si el alumno no esta en la evaluación automática entonces lo agrego. IF existe_detalle = 'N' THEN INSERT INTO sga_eval_detalle_cursadas (evaluacion, alumno, instancia_cursada, escala_nota_cursada, instancia_promocion, escala_nota_promocion, inscripto) VALUES (_evaluacion, NEW.alumno, _instancia_cursada, _escala_nota_cursada, _instancia_promocion, _escala_nota_promocion, 'S'); END IF; -- El alumno existe en la evaluacion automática. Verifico si hubo algun cambio en las instancias (Regular/Promocion) IF existe_detalle = 'S' AND ((_cursada = 0 and _instancia_cursada = 1) OR (_promocion = 0 and _instancia_promocion = 1)) THEN UPDATE sga_eval_detalle_cursadas SET instancia_cursada = _instancia_cursada, escala_nota_cursada = _escala_nota_cursada, instancia_promocion = _instancia_promocion, escala_nota_promocion = _escala_nota_promocion, inscripto = 'S' WHERE evaluacion = _evaluacion AND alumno = NEW.alumno; END IF; END IF; -- evaluacion END IF; -- cambio de estado de la inscripcion RETURN NEW; END; $BODY$ LANGUAGE plpgsql; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE sobre sga_insc_cursada -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE TRIGGER tua_sga_insc_cursada AFTER UPDATE ON sga_insc_cursada FOR EACH ROW EXECUTE PROCEDURE ftua_sga_insc_cursada(); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- TRIGGER ftua_sga_insc_examen -- AFTER UPDATE -- Tabla: sga_insc_examen -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE OR REPLACE FUNCTION ftua_sga_insc_examen() RETURNS TRIGGER AS $BODY$ DECLARE _evaluacion integer; DECLARE _escala_nota integer; DECLARE _fecha_examen date; DECLARE cnt smallint; BEGIN -- Si acepto la inscripcion IF (NEW.estado AND OLD.estado = 'P') THEN -- Recupero la evaluacion automática de la mesa y llamado SELECT sga_evaluaciones.evaluacion, sga_mesas_examen_instancias.escala_nota, sga_llamados_mesa.fecha INTO _evaluacion, _escala_nota, _fecha_examen FROM sga_llamados_mesa, sga_evaluaciones, sga_evaluaciones_tipos, sga_mesas_examen, sga_mesas_examen_instancias WHERE sga_llamados_mesa.llamado_mesa = NEW.llamado_mesa AND sga_evaluaciones.entidad = sga_llamados_mesa.entidad AND sga_evaluaciones_tipos.evaluacion_tipo = sga_evaluaciones.evaluacion_tipo AND sga_evaluaciones_tipos.automatica = 'S' -- Generación Automática AND sga_mesas_examen.mesa_examen = sga_llamados_mesa.mesa_examen AND sga_mesas_examen_instancias.mesa_examen = sga_mesas_examen.mesa_examen AND sga_mesas_examen_instancias.instancia = NEW.instancia; IF _evaluacion IS NOT NULL THEN -- Si se acepta una inscripción que estaba en estado "Pendiente" IF (NEW.estado = 'A' AND OLD.estado = 'P') THEN SELECT COUNT(*) INTO cnt FROM sga_eval_detalle_examenes WHERE evaluacion = _evaluacion AND alumno = NEW.alumno; IF cnt = 0 THEN -- Inserto la inscripción en el detalle de la evaluacion automática. INSERT INTO sga_eval_detalle_examenes (evaluacion, alumno, instancia, escala_nota, fecha, inscripto ) VALUES ( _evaluacion, NEW.alumno, NEW.instancia, _escala_nota, _fecha_examen, 'S'); END IF; END IF; -- cambio de estado END IF; -- evaluacion -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Inserto un registro por cada evaluacion (de generacion manual) en el detalle -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_eval_detalle (evaluacion, alumno, escala_nota, fecha) SELECT sga_evaluaciones.evaluacion, NEW.alumno, sga_evaluaciones.escala_nota, _fecha_examen FROM sga_llamados_mesa, sga_evaluaciones, sga_evaluaciones_tipos WHERE sga_llamados_mesa.llamado_mesa = NEW.llamado_mesa AND sga_evaluaciones.entidad = sga_llamados_mesa.entidad AND sga_evaluaciones_tipos.evaluacion_tipo = sga_evaluaciones.evaluacion_tipo AND sga_evaluaciones_tipos.automatica = 'N'; -- Generación Manual END IF; -- cambio de estado de la inscripcion RETURN NEW; END; $BODY$ LANGUAGE plpgsql; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE sobre sga_insc_examen -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE TRIGGER tua_sga_insc_examen AFTER UPDATE ON sga_insc_examen FOR EACH ROW EXECUTE PROCEDURE ftua_sga_insc_examen(); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: his_insc_cursada -- Check: ck_his_insc_cursada_exceptuado -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE his_insc_cursada DROP CONSTRAINT ck_his_insc_cursada_exceptuado; ALTER TABLE his_insc_cursada ADD CONSTRAINT ck_his_insc_cursada_exceptuado CHECK (exceptuado IN ('S', 'N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: his_insc_cursada_log -- Check: ck_his_insc_cursada_log_exceptuado -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE his_insc_cursada_log DROP CONSTRAINT ck_his_insc_cursada_log_exceptuado; ALTER TABLE his_insc_cursada_log ADD CONSTRAINT ck_his_insc_cursada_log_exceptuado CHECK (exceptuado IN ('S', 'N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: his_insc_examen -- Check: ck_his_insc_examen_exceptuado -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE his_insc_examen DROP CONSTRAINT ck_his_insc_examen_exceptuado; ALTER TABLE his_insc_examen ADD CONSTRAINT ck_his_insc_examen_exceptuado CHECK (exceptuado IN ('S', 'N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: his_insc_examen_log -- Check: ck_his_insc_examen_log_exceptuado -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE his_insc_examen_log DROP CONSTRAINT ck_his_insc_examen_log_exceptuado; ALTER TABLE his_insc_examen_log ADD CONSTRAINT ck_his_insc_examen_log_exceptuado CHECK (exceptuado IN ('S', 'N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_insc_cursada -- Check: ck_sga_insc_cursada_exceptuado -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_insc_cursada DROP CONSTRAINT ck_sga_insc_cursada_exceptuado; ALTER TABLE sga_insc_cursada ADD CONSTRAINT ck_sga_insc_cursada_exceptuado CHECK (exceptuado IN ('S', 'N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_insc_cursada_log -- Check: ck_sga_insc_cursada_log_exceptuado -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_insc_cursada_log DROP CONSTRAINT ck_sga_insc_cursada_log_exceptuado; ALTER TABLE sga_insc_cursada_log ADD CONSTRAINT ck_sga_insc_cursada_log_exceptuado CHECK (exceptuado IN ('S', 'N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_insc_examen -- Check: ck_sga_insc_examen_exceptuado -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_insc_examen DROP CONSTRAINT ck_sga_insc_examen_exceptuado; ALTER TABLE sga_insc_examen ADD CONSTRAINT ck_sga_insc_examen_exceptuado CHECK (exceptuado IN ('S','N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_insc_examen_log -- Check: ck_sga_insc_examen_log_exceptuado -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_insc_examen_log DROP CONSTRAINT ck_sga_insc_examen_log_exceptuado; ALTER TABLE sga_insc_examen_log ADD CONSTRAINT ck_sga_insc_examen_log_exceptuado CHECK (exceptuado IN ('S', 'N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_insc_cursada -- Version: 3.0.0 -- Inscripciones a cursadas. Recupera inscripciones de la tabla real y la histórica -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP VIEW vw_insc_cursada; CREATE OR REPLACE VIEW vw_insc_cursada ( inscripcion, comision, alumno, tipo, prioridad, estado_preinscripcion, plan_version, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado ) AS SELECT inscripcion, comision, alumno, tipo, prioridad, estado_preinscripcion, plan_version, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado FROM sga_insc_cursada UNION ALL SELECT inscripcion, comision, alumno, tipo, prioridad, estado_preinscripcion, plan_version, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado FROM his_insc_cursada ; -- ++++++++++++++++++++++++++++++ Fin view vw_insc_cursada +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_insc_cursada to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_insc_examen -- Version: 3.0.0 -- Inscripciones a examenes. Recupera inscripciones de la tabla real y la histórica -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP VIEW vw_insc_examen; CREATE OR REPLACE VIEW vw_insc_examen ( inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado ) AS SELECT inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado FROM sga_insc_examen UNION ALL SELECT inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado FROM his_insc_examen ; -- ++++++++++++++++++++++++++++++ Fin view vw_insc_examen +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_insc_examen to public; ALTER TABLE sga_actas ALTER COLUMN observaciones TYPE Varchar(150); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Que el alumno no tenga la actividad aprobada -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) VALUES (315, 3, 'Que el alumno no tenga la actividad aprobada', 'Que el alumno no tenga la actividad aprobada', 'Que el alumno no tenga la actividad aprobada', 'El alumno tiene la actividad aprobada', 'regla_actividad_aprobada'); -- Mensajes INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (315, 1, 'El alumno tiene la actividad aprobada', 'El alumno no tiene la actividad aprobada'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (315, 2, 'Ud. ya tiene la actividad aprobada', 'Ud. no tiene la actividad aprobada'); -- Parametros -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 315,'alumno'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 315,'actividad'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 315,'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_requisitos, sga_requisitos_validos -- Versión: 3.0.0 -- Control: Verificar que el alumno no tenga aprobada la actividad -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) VALUES (65, 6, 'Que el alumno no tenga aprobada la actividad', NULL, 'Que el alumno no tenga aprobada la actividad', 315); INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 65); -- Cursadas INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (2, 65); -- Examenes INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (5, 65); -- Equivalencias -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- TRIGGER ftua_sga_insc_examen -- AFTER UPDATE -- Tabla: sga_insc_examen -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP TRIGGER tua_sga_insc_examen ON sga_insc_examen RESTRICT; DROP FUNCTION ftua_sga_insc_examen(); CREATE OR REPLACE FUNCTION ftua_sga_insc_examen() RETURNS TRIGGER AS $BODY$ DECLARE _evaluacion integer; DECLARE _escala_nota integer; DECLARE _fecha_examen date; DECLARE cnt smallint; BEGIN -- Si acepto la inscripcion IF (NEW.estado = 'A' AND OLD.estado = 'P') THEN -- Recupero la evaluacion automática de la mesa y llamado SELECT sga_evaluaciones.evaluacion, sga_mesas_examen_instancias.escala_nota, sga_llamados_mesa.fecha INTO _evaluacion, _escala_nota, _fecha_examen FROM sga_llamados_mesa, sga_evaluaciones, sga_evaluaciones_tipos, sga_mesas_examen, sga_mesas_examen_instancias WHERE sga_llamados_mesa.llamado_mesa = NEW.llamado_mesa AND sga_evaluaciones.entidad = sga_llamados_mesa.entidad AND sga_evaluaciones_tipos.evaluacion_tipo = sga_evaluaciones.evaluacion_tipo AND sga_evaluaciones_tipos.automatica = 'S' -- Generación Automática AND sga_mesas_examen.mesa_examen = sga_llamados_mesa.mesa_examen AND sga_mesas_examen_instancias.mesa_examen = sga_mesas_examen.mesa_examen AND sga_mesas_examen_instancias.instancia = NEW.instancia; IF _evaluacion IS NOT NULL THEN -- Si se acepta una inscripción que estaba en estado "Pendiente" IF (NEW.estado = 'A' AND OLD.estado = 'P') THEN SELECT COUNT(*) INTO cnt FROM sga_eval_detalle_examenes WHERE evaluacion = _evaluacion AND alumno = NEW.alumno; IF cnt = 0 THEN -- Inserto la inscripción en el detalle de la evaluacion automática. INSERT INTO sga_eval_detalle_examenes (evaluacion, alumno, instancia, escala_nota, fecha, inscripto ) VALUES ( _evaluacion, NEW.alumno, NEW.instancia, _escala_nota, _fecha_examen, 'S'); END IF; END IF; -- cambio de estado END IF; -- evaluacion -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Inserto un registro por cada evaluacion (de generacion manual) en el detalle -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_eval_detalle (evaluacion, alumno, escala_nota, fecha) SELECT sga_evaluaciones.evaluacion, NEW.alumno, sga_evaluaciones.escala_nota, _fecha_examen FROM sga_llamados_mesa, sga_evaluaciones, sga_evaluaciones_tipos WHERE sga_llamados_mesa.llamado_mesa = NEW.llamado_mesa AND sga_evaluaciones.entidad = sga_llamados_mesa.entidad AND sga_evaluaciones_tipos.evaluacion_tipo = sga_evaluaciones.evaluacion_tipo AND sga_evaluaciones_tipos.automatica = 'N'; -- Generación Manual END IF; -- cambio de estado de la inscripcion RETURN NEW; END; $BODY$ LANGUAGE plpgsql; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE sobre sga_insc_examen -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE TRIGGER tua_sga_insc_examen AFTER UPDATE ON sga_insc_examen FOR EACH ROW EXECUTE PROCEDURE ftua_sga_insc_examen(); -- Actividad Aprobada UPDATE sga_requisitos SET regla = 1 WHERE requisito = 65; -- Agrego datos a la regla 1 INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1,'fecha'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (1, 1, 'El alumno tiene la actividad aprobada', 'El alumno no tiene la actividad aprobada'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (1, 2, 'Ud. ya tiene la actividad aprobada', 'Ud. no tiene la actividad aprobada'); -- Borro la Regla 315 (ya existe la regla 1 que hace lo mismo) DELETE FROM sga_reglas_param_contexto WHERE regla = 315; DELETE FROM sga_reglas_mensajes WHERE regla = 315; DELETE FROM sga_reglas WHERE regla = 315; INSERT INTO par_puntos_control_parametros (parametro, descripcion, tipo_de_dato) VALUES ('anio_academico', 'Año Académico','E'); INSERT INTO par_puntos_control_parametros (parametro, descripcion, tipo_de_dato) VALUES ('subcomision', 'Subcomisión','E'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Que el alumno tenga la reinscripción anual en la propuesta -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) VALUES (315, 3, 'Que el alumno tenga la reinscripción anual en la propuesta', 'Que el alumno tenga la reinscripción anual en la propuesta (sga_reinscripcion)', 'Que el alumno tenga la reinscripción anual en la propuesta', 'El alumno no tiene la reinscripcion anual en la propuesta', 'regla_reinscripcion_anual'); -- Mensajes INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (315, 1, 'El alumno no ha realizado la reinscripción anual', 'Ud. no ha realizado la reinscripción anual'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (315, 2, 'El alumno ha realizado la reinscripción anual', 'Ud. ha realizado la reinscripción anual'); -- Parametros -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 315,'alumno'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 315,'anio_academico'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 315,'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_requisitos, sga_requisitos_validos -- Versión: 3.0.0 -- Control: Verificar que el alumno haya realizado la reinscripción anual en la propuesta. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) VALUES (68, 6, 'Que el alumno tenga la reinscripción anual en la propuesta', NULL, 'Que el alumno tenga la reinscripción anual en la propuesta en el año académico que se esta realizando actividad académica (insc a examen, insc a actividad..)', 315); INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 68); -- Cursada INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (2, 68); -- Examenes -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: par_puntos_control par_parametros_x_punto_control sga_requisitos_x_punto_control -- Punto de Control: 4 - Alumno instancia Regular -- Versión: 3.0.0 -- Contiene requisitos relacionados con la regularidad de una actividad. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO par_puntos_control (pto_control, nombre, descripcion) VALUES ( 4, 'Alumno Instancia Regular', 'Recibe el alumno, actividad y fecha'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 4, 'alumno'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 4, 'actividad'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 4, 'fecha'); --INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (4, 57, 1); -- Correlativas de Cursada -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: par_puntos_control par_parametros_x_punto_control sga_requisitos_x_punto_control -- Punto de Control: 5 - Alumno instancia Promocion -- Versión: 3.0.0 -- Contiene requisitos relacionados con la promoción de una actividad. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO par_puntos_control (pto_control, nombre, descripcion) VALUES ( 5, 'Alumno Instancia Promoción', 'Recibe el alumno, actividad y fecha'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 5, 'alumno'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 5, 'actividad'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 5, 'fecha'); --INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (5, 58, 1); -- Correlativas de Examen/Promoción -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: par_puntos_control par_parametros_x_punto_control sga_requisitos_x_punto_control -- Punto de Control: 6 - Alumno Comisión -- Versión: 3.0.0 -- Contiene requisitos relacionados con la comisión a la que se inscribe el alumno -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO par_puntos_control (pto_control, nombre, descripcion) VALUES ( 6, 'Alumno - Comisión', 'Recibe el alumno, comisión, actividad y fecha'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 6, 'alumno'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 6, 'comision'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 6, 'fecha'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 6, 'actividad'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: par_puntos_control par_parametros_x_punto_control sga_requisitos_x_punto_control -- Punto de Control: 6 - Alumno Subcomisión -- Versión: 3.0.0 -- Contiene requisitos relacionados con la subcomisión a la que se inscribe el alumno -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO par_puntos_control (pto_control, nombre, descripcion) VALUES ( 7, 'Alumno - Subcomisión', 'Recibe el alumno, subcomisión, actividad y fecha'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 7, 'alumno'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 7, 'subcomision'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 7, 'fecha'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 7, 'actividad'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 7, 'comision'); DELETE FROM sga_requisitos_x_punto_control WHERE requisito = 57; -- Correlativas de Cursada DELETE FROM sga_requisitos_x_punto_control WHERE requisito = 58; -- Correlativas de Examen INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (3, 64, 1); -- Legajo generado INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (3, 65, 2); -- Actividad Aprobada -- Cambio el orden... UPDATE sga_requisitos_x_punto_control SET orden = 3 WHERE pto_control = 3 and requisito = 62; UPDATE sga_requisitos_x_punto_control SET orden = 4 WHERE pto_control = 3 and requisito = 63; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: par_puntos_control par_parametros_x_punto_control sga_requisitos_x_punto_control -- Punto de Control: 8 - Alumno - Año académico -- Versión: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO par_puntos_control (pto_control, nombre, descripcion) VALUES ( 8, 'Alumno - Año Académico', 'Recibe el alumno y el año académico'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 8, 'alumno'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 8, 'anio_academico'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 8, 'fecha'); -- Requisitos validos en el pto de control INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (8, 68, 1); -- Reinscripción Anual en la propuesta ALTER TABLE mce_circuitos DROP CONSTRAINT ck_mce_circuitos_tipo; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mce_circuitos_tipos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS mce_circuitos_tipos; CREATE TABLE mce_circuitos_tipos ( tipo Varchar(30) NOT NULL, nombre Varchar(100) NOT NULL ); -- ALTER TABLE mce_circuitos_tipos DROP CONSTRAINT pk_mce_circuitos_tipos; ALTER TABLE mce_circuitos_tipos ADD CONSTRAINT pk_mce_circuitos_tipos PRIMARY KEY (tipo); Revoke all ON mce_circuitos_tipos FROM public; -- ++++++++++++++++++++++++++ Fin tabla mce_circuitos_tipos +++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: mce_circuitos_tipos -- Tipos de Circuitos de cambios de estado -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO mce_circuitos_tipos (tipo, nombre) VALUES ('Egreso', 'Circuitos de egreso'); INSERT INTO mce_circuitos_tipos (tipo, nombre) VALUES ('Seguimiento de Tesis', 'Circuitos de seguimiento de Tesis'); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mce_circuitos_tipos_campos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS mce_circuitos_tipos_campos; CREATE TABLE mce_circuitos_tipos_campos ( tipo Varchar(30) NOT NULL, campo Varchar(50) NOT NULL ); -- ALTER TABLE mce_circuitos_tipos_campos DROP CONSTRAINT pk_mce_circuitos_tipos_campos; ALTER TABLE mce_circuitos_tipos_campos ADD CONSTRAINT pk_mce_circuitos_tipos_campos PRIMARY KEY (tipo,campo); Revoke all ON mce_circuitos_tipos_campos FROM public; -- ++++++++++++++++++++++++++ Fin tabla mce_circuitos_tipos_campos +++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: mce_circuitos_tipos_campos -- Conjunto de campos disponibles para las transiciones de los circuitos por tipo de circuito. -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'colacion'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'juramento'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'nro_expediente'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'nro_expediente_externo'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'nro_registro_diploma_fac'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'nro_registro_diploma_uni'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'resolucion_rectorado'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'nro_disposicion_decano'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'fecha_disposicion_decano'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'fecha_ingreso_conacad'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'fecha_aprobacion_conacad'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'fecha_firma_autoridad'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'fecha_elevacion_consup'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'fecha_aprobacion_consup'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'folio_registro_diploma_fac'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'orden_registro_diploma_fac'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'libro_registro_diploma_fac'); GRANT select ON mce_circuitos_tipos TO public; GRANT update ON mce_circuitos_tipos TO public; GRANT delete ON mce_circuitos_tipos TO public; GRANT insert ON mce_circuitos_tipos TO public; GRANT select ON mce_circuitos_tipos_campos TO public; GRANT update ON mce_circuitos_tipos_campos TO public; GRANT delete ON mce_circuitos_tipos_campos TO public; GRANT insert ON mce_circuitos_tipos_campos TO public; INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('exa_cant_veces_rendir_examen_regular', 'Cantidad de veces que el alumno puede rendir examene en condición de regular antes que se le venza la cursada', 'R', 'E', 1, '10', 1, 10, NULL); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mce_circuitos -- FK: fk_mce_circuitos_mce_circuitos_tipos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mce_circuitos_mce_circuitos_tipos; CREATE INDEX ifk_mce_circuitos_mce_circuitos_tipos ON mce_circuitos (tipo); -- ALTER TABLE mce_circuitos DROP CONSTRAINT fk_mce_circuitos_mce_circuitos_tipos; ALTER TABLE mce_circuitos ADD CONSTRAINT fk_mce_circuitos_mce_circuitos_tipos FOREIGN KEY (tipo) REFERENCES mce_circuitos_tipos (tipo) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mce_circuitos_tipos_campos -- FK: fk_mce_circuitos_tipos_campos_mce_circuitos_tipos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mce_circuitos_tipos_campos_mce_circuitos_tipos; CREATE INDEX ifk_mce_circuitos_tipos_campos_mce_circuitos_tipos ON mce_circuitos_tipos_campos (tipo); -- ALTER TABLE mce_circuitos_tipos_campos DROP CONSTRAINT fk_mce_circuitos_tipos_campos_mce_circuitos_tipos; ALTER TABLE mce_circuitos_tipos_campos ADD CONSTRAINT fk_mce_circuitos_tipos_campos_mce_circuitos_tipos FOREIGN KEY (tipo) REFERENCES mce_circuitos_tipos (tipo) on update restrict on delete restrict; -- Se agregan los datos ya incorporados en los datos basicos del sistema para la impresion del modulo de egresados -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Tabla: mce_plantillas -- Plantillas para la impresion en JASPER -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (9, 'Constancia de Inicio de Tramite de Titulo', 'Constancia de Inicio de Tramite de Titulo', 'ConstanciaInicioTramite.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (10, 'Constancia de Título en Trámite', 'Constancia de de Título en Trámite', 'ConstanciaTituloTramite.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (11, 'TED1a', 'TED1a', 'TED1a.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (12, 'TED1b', 'TED1b', 'TED1b.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (13, 'TED1c', 'TED1c', 'TED1c.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (14, 'TED1d', 'TED1d', 'TED1d.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (15, 'TED1e', 'TED1e', 'TED1e.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (16, 'TED1f', 'TED1f', 'TED1f.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (17, 'TED1g', 'TED1g', 'TED1g.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (18, 'TEDII', 'TEDII', 'TEDII.jasper'); INSERT INTO mce_plantillas (plantilla, nombre, descripcion, archivo_plantilla) VALUES (19, 'Certificado de Fin de Carrera', 'Certificado de Fin de Carrera', 'CertificadoFinCarrera.jasper'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Tabla: mce_formularios -- Formularios -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ UPDATE mce_formularios SET plantilla = 9 WHERE formulario = 10; UPDATE mce_formularios SET plantilla = 15 WHERE formulario = 11; UPDATE mce_formularios SET plantilla = 10 WHERE formulario = 12; UPDATE mce_formularios SET plantilla = 11 WHERE formulario = 1; UPDATE mce_formularios SET plantilla = 12 WHERE formulario = 2; UPDATE mce_formularios SET plantilla = 13 WHERE formulario = 3; UPDATE mce_formularios SET plantilla = 14 WHERE formulario = 4; UPDATE mce_formularios SET plantilla = 15 WHERE formulario = 5; UPDATE mce_formularios SET plantilla = 16 WHERE formulario = 6; UPDATE mce_formularios SET plantilla = 17 WHERE formulario = 7; UPDATE mce_formularios SET plantilla = 18, nombre = 'TEDII', descripcion = 'TEDII' WHERE formulario = 8; UPDATE mce_formularios SET plantilla = 19 WHERE formulario = 13; DELETE FROM mce_formularios WHERE formulario = 9; ALTER TABLE sga_docentes ALTER COLUMN legajo DROP NOT NULL; INSERT INTO par_puntos_control_parametros (parametro, descripcion, tipo_de_dato) VALUES ('llamado_mesa', 'Mesa de Exámen en un llamado','E'); DELETE FROM par_puntos_control_parametros WHERE parametro = 'mesa_llamado'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: par_puntos_control par_parametros_x_punto_control sga_requisitos_x_punto_control -- Punto de Control: 9 - Alumno - Mesa de Examen -- Versión: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO par_puntos_control (pto_control, nombre, descripcion) VALUES ( 9, 'Alumno - Mesa de Examen', 'Recibe el alumno, la mesa en el llamado y la actividad'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 9, 'alumno'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 9, 'actividad'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 9, 'llamado_mesa'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 9, 'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: par_puntos_control par_parametros_x_punto_control sga_requisitos_x_punto_control -- Punto de Control: 10 - Alumno - Examen Regular -- Versión: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO par_puntos_control (pto_control, nombre, descripcion) VALUES ( 10, 'Alumno - Examen Regular', 'Recibe el alumno, la mesa en el llamado y la actividad'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 10, 'alumno'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 10, 'actividad'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 10, 'llamado_mesa'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 10, 'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Que el alumno no supere la cantidad máxima de veces que puede rendir examen regular y desaprobar una actividad. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) VALUES (316, 3, 'Cantidad de veces que puede rendir examen regular y desaprobar', 'Que el alumno no supere la cantidad máxima de veces que puede rendir examen regular y desaprobar una actividad', 'Cantidad de veces que puede rendir examen regular y desaprobar', 'El alumno superó la cantidad de veces que puede rendir un examen regular', 'regla_cant_examenes_regulares_desaprobados'); -- Mensajes INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (316, 1, 'Que el alumno no supere la cantidad máxima de veces que puede rendir examen regular y desaprobar una actividad', 'Que el alumno no supere la cantidad máxima de veces que puede rendir examen regular y desaprobar una actividad'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (316, 2, 'Que el alumno no supere la cantidad máxima de veces que puede rendir examen regular y desaprobar una actividad', 'Que el alumno no supere la cantidad máxima de veces que puede rendir examen regular y desaprobar una actividad'); -- Parametros -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 316,'alumno'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 316,'actividad'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 316,'llamado_mesa'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 316,'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_requisitos, sga_requisitos_validos -- Versión: 3.0.0 -- Control: Controla la cantidad de veces que el alumno puede rendir examen -- en condicón de regular y desaprobarla. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) VALUES (69, 6, 'Que el alumno no supere la cantidad máxima de veces que puede rendir en condición de regular', NULL, 'Que el alumno no supere la cantidad máxima de veces que puede rendir en condición de regular y desaprobar una actividad', 316); INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (2, 69); -- Examenes -- Requisitos validos en el pto de control INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (10, 69, 1); -- Cantidad de veces que puede rendir examen regular -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: par_puntos_control par_parametros_x_punto_control sga_requisitos_x_punto_control -- Punto de Control: 11 - Alumno - Examen Libre -- Versión: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO par_puntos_control (pto_control, nombre, descripcion) VALUES ( 11, 'Alumno - Examen Libre', 'Recibe el alumno, la mesa en el llamado y la actividad'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 11, 'alumno'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 11, 'actividad'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 11, 'llamado_mesa'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 11, 'fecha'); -- Instancias x Punto de Control INSERT INTO sga_instancias_puntos_ctrl (pto_control, instancia) VALUES ( 4, 1); -- Cursar Regular INSERT INTO sga_instancias_puntos_ctrl (pto_control, instancia) VALUES ( 5, 2); -- Cursar Promocion INSERT INTO sga_instancias_puntos_ctrl (pto_control, instancia) VALUES (10, 3); -- Examen Regular INSERT INTO sga_instancias_puntos_ctrl (pto_control, instancia) VALUES (11, 4); -- Examen Libre -- Borro la instancia "Otros" DELETE FROM sga_instancias WHERE instancia = 10; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Que el alumno no supere el maximo de inscripciones a actividades permitidas para un período lectivo -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) VALUES (317, 3, 'Que el alumno no supere el maximo de inscripciones permitidas para un período lectivo', 'Que el alumno no supere el maximo de inscripciones permitidas para un período lectivo por propuesta', 'Que el alumno no supere el maximo de inscripciones permitidas para un período lectivo', 'El alumno superó la cantidad máxima permitida de inscripciones a cursadas para un período lectivo', 'regla_cant_max_insc_cursada_x_periodo_lectivo'); -- Mensajes INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (317, 1, 'El alumno supera el máximo de inscripciones permitidas (%1%) para el período lectivo %2%.', 'Ud. supera el máximo de inscripciones permitidas (%1%) para el período lectivo %2%.'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (317, 2, 'El alumno no supera el máximo de inscripciones permitidas (%1) para el período lectivo %2%.', 'Ud. no supera el máximo de inscripciones permitidas (%1%) para el período lectivo %2%.'); -- Parametros -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 317,'alumno'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 317,'comision'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 317,'actividad'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 317,'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_requisitos, sga_requisitos_validos -- Versión: 3.0.0 -- Control: Controla la cantidad maxima de inscripciones a actividades permitidas por periodo lectivo -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) VALUES (70, 6, 'Que el alumno no supere la cantidad máxima permitida de inscripciones a actividades por período lectivo', NULL, 'Que el alumno no supere la cantidad máxima permitida de inscripciones a actividades por período lectivo', 317); INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 70); -- Cursadas -- Inserto el requisito en el punto de control Alumno-Comision. INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (6, 70 , 1); -- Cantidad máxima de inscripciones a actividades por período lectivo -- Criterios de ordenamiento de aspirantes en inscripcion automática a actividades DELETE FROM sga_criterios_prioridad_ing; ALTER TABLE sga_criterios_prioridad_ing DROP COLUMN tabla_campo; ALTER TABLE sga_criterios_prioridad_ing DROP COLUMN funcion_base; ALTER TABLE sga_criterios_prioridad_ing ADD COLUMN criterio_base Varchar(200) NOT NULL; INSERT INTO sga_criterios_prioridad_ing (criterio, nombre, descripcion, orden, activo, criterio_base) VALUES ( 1, 'Trabaja', 'Poseer constancia de trabajo', NULL, 0, 'f_criterio_trabaja(sga_propuestas_aspira.persona)'); INSERT INTO sga_criterios_prioridad_ing (criterio, nombre, descripcion, orden, activo, criterio_base) VALUES ( 2, 'Tiene hijos', '', NULL, 0, 'f_criterio_tiene_hijos(sga_propuestas_aspira.persona)'); INSERT INTO sga_criterios_prioridad_ing (criterio, nombre, descripcion, orden, activo, criterio_base) VALUES ( 3, 'Cursa otra propuesta', '', NULL, 0, 'f_criterio_cursa_otra_prop(sga_propuestas_aspira.persona, sga_propuestas_aspira.propuesta)'); INSERT INTO sga_criterios_prioridad_ing (criterio, nombre, descripcion, orden, activo, criterio_base) VALUES ( 4, 'Fecha y hora de Inscripción', 'Fecha y hora de inscripción', NULL, 0, 'sga_propuesta_aspira.fecha_inscripcion'); INSERT INTO sga_criterios_prioridad_ing (criterio, nombre, descripcion, orden, activo, criterio_base) VALUES ( 5, 'Apellido', 'Apellido del Alumno', NULL, 0, 'mdp_personas.apellido'); ALTER TABLE mdp_personas ADD COLUMN usuario_perfil_datos Bigint; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_criterio_cursa_otra_prop() -- Verifica si la persona esta cursando otra propuesta en la institución -- -- Recibe: -- 1.- Id de la Persona. -- 2.- Id de la Propuesta -- Retorna: Integer: 0 - Cursa otra propuesta / 1 - NO cursa otra propuesta -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_criterio_cursa_otra_prop(integer, integer); CREATE OR REPLACE FUNCTION f_criterio_cursa_otra_prop(_persona integer, _propuesta integer) RETURNS integer AS $BODY$ -- Variables locales DECLARE _cnt integer; BEGIN _cnt := 1; -- no cursa otra propuesta SELECT COUNT(*) INTO _cnt FROM sga_alumnos WHERE persona = _persona AND propuesta <> _propuesta AND calidad = 'A'; IF _cnt > 0 THEN -- Cursa al menos otra propuesta (Alumno Activo) RETURN 0; ELSE -- No cursa otra propuesta RETURN 1; END IF; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_criterio_cursa_otra_prop ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_criterio_cursa_otra_prop (integer, integer) FROM public; GRANT EXECUTE ON FUNCTION f_criterio_cursa_otra_prop(integer, integer) TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_criterio_tiene_hijos() -- Verifica si la persona tiene hijos -- -- Recibe: Id de la Persona. -- Retorna: Integer: 0 - Tiene Hijos / 1 - No tiene hijos -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_criterio_tiene_hijos(integer); CREATE OR REPLACE FUNCTION f_criterio_tiene_hijos(_persona integer) RETURNS integer AS $BODY$ -- Variables locales DECLARE _Hijos integer; DECLARE _Fecha date; BEGIN _Hijos := 1; -- No tiene hijos _Fecha := NULL; SELECT Max(fecha_relevamiento) INTO _Fecha FROM mdp_datos_censales WHERE persona = _persona; IF _Fecha IS NULL THEN -- No hay dato censal, retorno como que no trabaja RETURN 1; END IF; -- Recupero cantidad de hijos... SELECT mdp_datos_personales.cantidad_hijos INTO _Hijos FROM mdp_datos_censales, mdp_datos_personales WHERE mdp_datos_censales.persona = _persona AND mdp_datos_censales.fecha_relevamiento = _Fecha AND mdp_datos_personales.dato_censal = mdp_datos_censales.dato_censal; IF _Hijos > 0 THEN -- Tiene Hijos RETURN 0; ELSE -- No tiene Hijos RETURN 1; END IF; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_criterio_tiene_hijos ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_criterio_tiene_hijos(integer) FROM public; GRANT EXECUTE ON FUNCTION f_criterio_tiene_hijos(integer) TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_criterio_trabaja() -- Verifica si la persona trabaja o trabajó en los ultimos 30 dias según registro de últimos datos censales -- -- Recibe: Id de la Persona. -- Retorna: Integer: 0 - Trabaja / 1 - NO Trabaja -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_criterio_trabaja(integer); CREATE OR REPLACE FUNCTION f_criterio_trabaja(_persona integer) RETURNS integer AS $BODY$ -- Variables locales DECLARE _Trabaja integer; DECLARE _Fecha date; BEGIN _Trabaja := 1; -- No trabaja _Fecha := NULL; SELECT Max(fecha_relevamiento) INTO _Fecha FROM mdp_datos_censales WHERE persona = _persona; IF _Fecha IS NULL THEN -- No hay dato censal, retorno como que no trabaja RETURN 1; END IF; -- Recupero cantidad de hijos... SELECT mdp_datos_economicos.trabajo_existe INTO _Trabaja FROM mdp_datos_censales, mdp_datos_economicos WHERE mdp_datos_censales.persona = _persona AND mdp_datos_censales.fecha_relevamiento = _Fecha AND mdp_datos_economicos.dato_censal = mdp_datos_censales.dato_censal; IF _Trabaja = 1 THEN -- 1 = Trabajó al menos una hora (incluye a los que no trabajaron por licencia, vacaciones, enfermedad) RETURN 0; ELSE -- No trabaja ni trabajó RETURN 1; END IF; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_criterio_trabaja ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_criterio_trabaja(integer) FROM public; GRANT EXECUTE ON FUNCTION f_criterio_trabaja(integer) TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Que el alumno no tenga superposición horaria entre las comisiones en las que está inscripto -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) VALUES (318, 3, 'Que el alumno no tenga superposición horaria en la comision', 'Que el alumno no tenga superposición horaria entre la comision y otras comisiones/subcomisiones en las que está inscripto', 'Que el alumno no tenga superposición horaria entre las comisiones en las que está inscripto', 'El alumno tiene superposición horaria en la comisión', 'regla_superposicion_horaria_comision'); -- Mensajes INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (318, 1, 'El alumno tiene superposición horaria con otras comisiones', 'Ud. tiene superposición horaria con otras comisiones'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (318, 2, 'El alumno no tiene superposición horaria con otras comisiones', 'Ud. no tiene superposición horaria con otras comisiones'); -- Parametros -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 318,'alumno'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 318,'comision'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 318,'actividad'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 318,'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Que el alumno no tenga superposición horaria entre la subcomision -- y otras comisiones/subcomisiones en las que está inscripto -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) VALUES (319, 3, 'Que el alumno tenga superposición horaria en la subcomisión', 'Que el alumno tenga superposición horaria entre la subcomisión con otras comisiones y subcomisiones en las que está inscripto', 'El alumno tiene superposición horaria en la subcomisión', 'El alumno tiene superposición horaria en la subcomisión', 'regla_superposicion_horaria_subcomision'); -- Mensajes INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (319, 1, 'El alumno tiene superposición horaria con otras comisiones/subcomisiones', 'Ud. tiene superposición horaria con otras comisiones/subcomisiones'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (319, 2, 'El alumno no tiene superposición horaria con otras comisiones/subcomisiones', 'Ud. no tiene superposición horaria con otras comisiones/subcomisiones'); -- Parametros -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 319,'alumno'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 319,'actividad'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 319,'comision'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 319,'subcomision'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 319,'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_requisitos, sga_requisitos_validos -- Versión: 3.0.0 -- Control: Controla la superposición horaria de la Comisión -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) VALUES (71, 6, 'Que el alumno no tenga superposición horaria entre las comisiones en las que está inscripto', NULL, 'Que el alumno no tenga superposición horaria entre la comision y otras comisiones/subcomisiones en las que esta inscripto', 318); INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 71); -- Cursadas -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_requisitos, sga_requisitos_validos -- Versión: 3.0.0 -- Control: Controla la superposición horaria de la Comisión -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) VALUES (72, 6, 'Que el alumno no tenga superposición horaria entre la subcomision y comisiones/subcomisiones en las que está inscripto', NULL, 'Que el alumno no tenga superposición horaria entre la subcomision y otras comisiones/subcomisiones en las que esta inscripto', 319); INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 72); -- Cursadas INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (6, 71, 2); -- Superposicion Horaria Comision INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (7, 72, 1); -- Superposición Horaria Subcomision -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_asignaciones -- Indice: id_sga_asignaciones_dia_desde_hasta -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX id_sga_asignaciones_dia_desde_hasta; CREATE INDEX id_sga_asignaciones_dia_desde_hasta ON sga_asignaciones (dia_semana,fecha_desde,fecha_hasta); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: adm_bases_preinscripcion -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS adm_bases_preinscripcion; CREATE TABLE adm_bases_preinscripcion ( fuente_de_datos Varchar(100) NOT NULL, nombre Varchar(100) NOT NULL ); -- ALTER TABLE adm_bases_preinscripcion DROP CONSTRAINT pk_adm_bases_preinscripcion; ALTER TABLE adm_bases_preinscripcion ADD CONSTRAINT pk_adm_bases_preinscripcion PRIMARY KEY (fuente_de_datos); Revoke all ON adm_bases_preinscripcion FROM public; -- ++++++++++++++++++++++++++ Fin tabla adm_bases_preinscripcion +++++++++++++++++++++++++++++ -- Saco la confguracion de tipos de usuario Docente y Alumno respecto de los grupos de acceso. -- Solo queda el grupo de acceso del usuario "Gestion". DELETE FROM mdp_personas_grupo_acc WHERE tipo_usuario IN ('Docente', 'Alumno'); DELETE FROM acc_grupo_acc_x_tipo_usuario WHERE tipo_usuario IN ('Docente', 'Alumno'); -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000117.sql -- +++++++++++++++++++++++++++++++++++++++ -- Se agregoa la duracion real del certificado. ALTER TABLE sga_certificados_otorg ADD COLUMN duracion_real_en_meses Integer; -- ASISTENCIA A CLASE - INASISTENCIAS ALTER TABLE sga_clases_asistencia DROP CONSTRAINT ck_sga_clases_asistencia_activo; ALTER TABLE sga_clases_asistencia DROP CONSTRAINT fk_sga_clases_asistencia_sga_clases; ALTER TABLE sga_clases_asistencia DROP CONSTRAINT fk_sga_clases_asistencia_sga_motivos_ausencias; ALTER TABLE sga_clases_asistencia DROP CONSTRAINT fk_sga_clases_asistencia_sga_alumnos; DROP INDEX ifk_sga_clases_asistencia_sga_clases; DROP INDEX ifk_sga_clases_asistencia_sga_motivos_ausencias; DROP INDEX ifk_sga_clases_asistencia_sga_alumnos; DROP TABLE IF EXISTS sga_clases_asistencia; CREATE TABLE sga_clases_asistencia ( clase Integer NOT NULL, alumno Integer NOT NULL, cant_inasistencias Numeric(5,2) NOT NULL DEFAULT 0, cant_justificadas Numeric(5,2) NOT NULL DEFAULT 0, motivo_ausencia Integer ); -- ALTER TABLE sga_clases_asistencia DROP CONSTRAINT pk_sga_clases_asistencia; ALTER TABLE sga_clases_asistencia ADD CONSTRAINT pk_sga_clases_asistencia PRIMARY KEY (clase,alumno); GRANT select ON sga_clases_asistencia TO public; GRANT update ON sga_clases_asistencia TO public; GRANT delete ON sga_clases_asistencia TO public; GRANT insert ON sga_clases_asistencia TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia -- FK: fk_sga_clases_asistencia_sga_alumnos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE INDEX ifk_sga_clases_asistencia_sga_alumnos ON sga_clases_asistencia (alumno); ALTER TABLE sga_clases_asistencia ADD CONSTRAINT fk_sga_clases_asistencia_sga_alumnos FOREIGN KEY (alumno) REFERENCES sga_alumnos (alumno) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia -- FK: fk_sga_clases_asistencia_sga_motivos_ausencias -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE INDEX ifk_sga_clases_asistencia_sga_motivos_ausencias ON sga_clases_asistencia (motivo_ausencia); ALTER TABLE sga_clases_asistencia ADD CONSTRAINT fk_sga_clases_asistencia_sga_motivos_ausencias FOREIGN KEY (motivo_ausencia) REFERENCES sga_motivos_ausencias (motivo_ausencia) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia -- FK: fk_sga_clases_asistencia_sga_clases -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE INDEX ifk_sga_clases_asistencia_sga_clases ON sga_clases_asistencia (clase); ALTER TABLE sga_clases_asistencia ADD CONSTRAINT fk_sga_clases_asistencia_sga_clases FOREIGN KEY (clase) REFERENCES sga_clases (clase) on update restrict on delete restrict; DROP FUNCTION f_copiar_comision(integer, integer); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_copiar_comision -- -- Copia una comision en en un nuevo periodo lectivo. -- * Datos de la comision, docentes, instancias, propuestas y planes -- * Subcomisiones -- -- Recibe: -- f_copiar_comision(integer, integer, varchar, smallint) -- 1. ID de la comision -- 2. ID del periodo lectivo destino -- 3. Nombre de la Nueva comision. Default valor NULL -- 4. Parámetro que indica si se copian o no las subcomisiones. Valor: 1 - Se copian las subcomisiones (default) / 0 - No se copian las subcomisiones -- -- Retorna: -- 1. un registro con los datos del tipo: type_comision -- -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_copiar_comision(integer, integer, varchar, smallint); CREATE OR REPLACE FUNCTION f_copiar_comision( pComisionOrigen INTEGER, pPeriodoLectivoDestino INTEGER, pComisionNombre varchar(100), pCopiarSubcomisiones SMALLINT) RETURNS SETOF type_comision_copiado_generacion AS $BODY$ DECLARE comision_nueva INTEGER; _nombre_comision VARCHAR(100); subcomision_origen INTEGER; subcomision_nueva INTEGER; _observaciones text; _catedra integer; _estado_catedra char(1); _nombre_catedra varchar(100); _fecha_desde DATE; _fecha_hasta DATE; _elemento INTEGER; cnt SMALLINT; _actividad text; cur_subc record; cur_docentes record; cur_retorno type_comision_copiado_generacion; -- para retornar datos de la comision creada BEGIN cur_retorno.codigo_retorno := 0; -- OK. COMISION COPIADA _observaciones := NULL; -- Recupero datos de la comision origen. SELECT '(' || sga_elementos.codigo || ') ' || sga_elementos.nombre, sga_comisiones.nombre, sga_comisiones.elemento, sga_comisiones.catedra, sga_catedras.nombre, sga_catedras.estado, sga_periodos_lectivos.fecha_inicio_dictado, sga_periodos_lectivos.fecha_fin_dictado INTO _actividad, _nombre_comision, _elemento, _catedra, _nombre_catedra, _estado_catedra, _fecha_desde, _fecha_hasta FROM sga_comisiones LEFT JOIN sga_catedras ON sga_catedras.catedra = sga_comisiones.catedra, sga_elementos, sga_periodos_lectivos WHERE sga_elementos.elemento = sga_comisiones.elemento AND sga_comisiones.comision = pComisionOrigen AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo; IF NOT FOUND THEN -- Salgo. cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La comisión a copiar no existe'; RETURN NEXT cur_retorno; RETURN; -- Salgo END IF; -- Que no exista el Nombre de la comision en el periodo lectivo destino. IF pComisionNombre IS NOT NULL THEN -- Esto es para el caso que se duplica una comision del mismo período lectivo. -- Se pasa un nuevo nombre de Comision. _nombre_comision := pComisionNombre; END IF; SELECT Count(*) INTO cnt FROM sga_comisiones WHERE elemento = _elemento AND periodo_lectivo = pPeriodoLectivoDestino AND nombre = _nombre_comision; IF cnt > 0 THEN -- Salgo. cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La comisión ' || _nombre_comision || ' no se copió porque ya existe en el período lectivo destino'; RETURN NEXT cur_retorno; RETURN; END IF; -- Verifico si la catedra esta activa IF _catedra IS NOT NULL AND _estado_catedra <> 'A' THEN cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La cátedra ' || _nombre_catedra || ' de la comisión esta dada de baja'; RETURN NEXT cur_retorno; RETURN; END IF; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Inserto la comision -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_comisiones (nombre, periodo_lectivo, elemento, turno, catedra, ubicacion, letra_desde, letra_hasta, cupo, inscripcion_habilitada) SELECT nombre, pPeriodoLectivoDestino, elemento, turno, _catedra, ubicacion, letra_desde, letra_hasta, cupo, 'S' FROM sga_comisiones WHERE comision = pComisionOrigen; -- Recupero el Serial de la comision comision_nueva := (SELECT currval('sga_comisiones_seq')); -- Seteo valores para retorno cur_retorno.comision := comision_nueva; cur_retorno.nombre_comision := _nombre_comision; -- Modalidad de Cursada. INSERT INTO sga_comisiones_modalidad (comision, modalidad) SELECT comision_nueva, modalidad FROM sga_comisiones_modalidad WHERE comision = pComisionOrigen; -- Propuestas y Planes de la comision INSERT INTO sga_comisiones_propuestas (comision, propuesta, plan) SELECT comision_nueva, propuesta, plan FROM sga_comisiones_propuestas WHERE comision = pComisionOrigen; -- Instancias de la comision INSERT INTO sga_comisiones_instancias (comision, instancia, escala_nota, porc_asistencia) SELECT comision_nueva, instancia, escala_nota, porc_asistencia FROM sga_comisiones_instancias WHERE comision = pComisionOrigen; -- Docentes de la comision FOR cur_docentes IN SELECT sga_docentes_comision.docente, sga_docentes_comision.responsabilidad, sga_docentes_comision.fecha_desde, sga_docentes_comision.fecha_hasta, sga_docentes.estado, '(' || sga_docentes.legajo || ') ' || mdp_personas.apellido || ' ' || mdp_personas.nombres as nombre_docente FROM sga_docentes_comision, sga_docentes, mdp_personas WHERE sga_docentes_comision.comision = pComisionOrigen AND sga_docentes.docente = sga_docentes_comision.docente AND mdp_personas.persona = sga_docentes.persona LOOP -- Si el docente esta dado de baja, entonces no copio el docente. IF cur_docentes.estado <> 'A' THEN cur_retorno.codigo_retorno = 2; _observaciones := COALESCE(_observaciones || ' - ', ''); _observaciones := _observaciones || 'El docente ' || cur_docentes.nombre_docente || ' no se copió porque esta dado de baja'; CONTINUE; END IF; INSERT INTO sga_docentes_comision (comision, docente, responsabilidad, fecha_desde, fecha_hasta) VALUES (comision_nueva,cur_docentes.docente, cur_docentes.responsabilidad, _fecha_desde, _fecha_hasta); -- Docentes - Dedicacion horaria INSERT INTO sga_docentes_dedicacion_hs (comision, docente, tipo_dedicacion, cnt_horas) SELECT comision_nueva, ddh.docente, ddh.tipo_dedicacion, ddh.cnt_horas FROM sga_docentes_dedicacion_hs as ddh WHERE ddh.comision = pComisionOrigen AND ddh.docente = cur_docentes.docente; END LOOP; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SUBCOMISIONES -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF pCopiarSubcomisiones = 1 OR pCopiarSubcomisiones IS NULL THEN -- Recupero los elementos del Plan (modulos y actividades) FOR cur_subc IN SELECT subcomision, tipo_clase, nombre, letra_desde, letra_hasta, cupo FROM sga_subcomisiones WHERE comision = pComisionOrigen LOOP -- Genero la Subcomision INSERT INTO sga_subcomisiones (comision, tipo_clase, nombre, letra_desde, letra_hasta, cupo, inscripcion_habilitada) VALUES (comision_nueva, cur_subc.tipo_clase, cur_subc.nombre, cur_subc.letra_desde, cur_subc.letra_hasta, cur_subc.cupo, 'S'); -- Recupero el Serial de la subcomision subcomision_nueva := (SELECT currval('sga_subcomisiones_seq')); -- Docentes de la subcomision. Solo docentes Activos. INSERT INTO sga_docentes_subcomision (subcomision, docente, fecha_desde, fecha_hasta) SELECT subcomision_nueva, sga_docentes_subcomision.docente, _fecha_desde, _fecha_hasta FROM sga_docentes_subcomision, sga_docentes WHERE sga_docentes_subcomision.subcomision = cur_subc.subcomision AND sga_docentes.docente = sga_docentes_subcomision.docente AND sga_docentes.estado = 'A'; END LOOP; END IF; -- Subcomisiones -- Retorno datos de la comisión. RETURN NEXT cur_retorno; RETURN; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_copiar_comision(integer, integer, varchar, smallint) ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_copiar_comision (integer, integer, varchar, smallint) FROM public; GRANT EXECUTE ON FUNCTION f_copiar_comision (integer, integer, varchar, smallint) to public; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000117.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000118.sql -- +++++++++++++++++++++++++++++++++++++++ ALTER TABLE mdp_personas_documentos DROP CONSTRAINT ck_mdp_personas_documentos_principal; ALTER TABLE mdp_personas_documentos DROP COLUMN principal; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_copiar_comision -- -- Copia una comision en en un nuevo periodo lectivo. -- * Datos de la comision, docentes, instancias, propuestas y planes -- * Subcomisiones -- -- Recibe: -- f_copiar_comision(integer, integer, varchar, smallint) -- 1. ID de la comision -- 2. ID del periodo lectivo destino -- 3. Nombre de la Nueva comision. Default valor NULL -- 4. Parámetro que indica si se copian o no las subcomisiones. Valor: 1 - Se copian las subcomisiones (default) / 0 - No se copian las subcomisiones -- -- Retorna: -- 1. un registro con los datos del tipo: type_comision -- -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP FUNCTION f_copiar_comision(integer, integer, varchar, smallint); CREATE OR REPLACE FUNCTION f_copiar_comision( pComisionOrigen INTEGER, pPeriodoLectivoDestino INTEGER, pComisionNombre varchar(100), pCopiarSubcomisiones SMALLINT) RETURNS SETOF type_comision_copiado_generacion AS $BODY$ DECLARE comision_nueva INTEGER; _periodo_lectivo_destino Integer; _periodo_lectivo_origen Integer; _nombre_comision VARCHAR(100); subcomision_origen INTEGER; subcomision_nueva INTEGER; _observaciones text; _catedra integer; _estado_catedra char(1); _nombre_catedra varchar(100); _fecha_desde DATE; _fecha_hasta DATE; _elemento INTEGER; cnt SMALLINT; _actividad text; cur_subc record; cur_docentes record; cur_retorno type_comision_copiado_generacion; -- para retornar datos de la comision creada BEGIN cur_retorno.codigo_retorno := 0; -- OK. COMISION COPIADA _observaciones := NULL; -- Recupero datos de la comision origen. SELECT '(' || sga_elementos.codigo || ') ' || sga_elementos.nombre, sga_comisiones.nombre, sga_comisiones.elemento, sga_comisiones.periodo_lectivo, sga_comisiones.catedra, sga_catedras.nombre, sga_catedras.estado, sga_periodos_lectivos.fecha_inicio_dictado, sga_periodos_lectivos.fecha_fin_dictado INTO _actividad, _nombre_comision, _elemento, _periodo_lectivo_origen, _catedra, _nombre_catedra, _estado_catedra, _fecha_desde, _fecha_hasta FROM sga_comisiones LEFT JOIN sga_catedras ON sga_catedras.catedra = sga_comisiones.catedra, sga_elementos, sga_periodos_lectivos WHERE sga_elementos.elemento = sga_comisiones.elemento AND sga_comisiones.comision = pComisionOrigen AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo; IF NOT FOUND THEN -- Salgo. cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La comisión a copiar no existe'; RETURN NEXT cur_retorno; RETURN; -- Salgo END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Esto es para el caso que se duplica una comision del mismo período lectivo. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF pComisionNombre IS NOT NULL THEN -- Se pasa un nuevo nombre de Comision. _nombre_comision := pComisionNombre; END IF; IF pPeriodoLectivoDestino IS NULL THEN -- Se asigna el mismo periodo lectivo que la comision original _periodo_lectivo_destino := _periodo_lectivo_origen; ELSE _periodo_lectivo_destino := pPeriodoLectivoDestino; END IF; -- Verifico que no exista una comision con el mismo nombre para la actividad y periodo lectivo destino. SELECT Count(*) INTO cnt FROM sga_comisiones WHERE elemento = _elemento AND periodo_lectivo = _periodo_lectivo_destino AND nombre = _nombre_comision; IF cnt > 0 THEN -- Salgo. cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La comisión ' || _nombre_comision || ' no se copió porque ya existe en el período lectivo destino'; RETURN NEXT cur_retorno; RETURN; END IF; -- Verifico si la catedra esta activa IF _catedra IS NOT NULL AND _estado_catedra <> 'A' THEN cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La cátedra ' || _nombre_catedra || ' de la comisión esta dada de baja'; RETURN NEXT cur_retorno; RETURN; END IF; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Inserto la comision -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_comisiones (nombre, periodo_lectivo, elemento, turno, catedra, ubicacion, letra_desde, letra_hasta, cupo, inscripcion_habilitada) SELECT nombre, _periodo_lectivo_destino, elemento, turno, _catedra, ubicacion, letra_desde, letra_hasta, cupo, 'S' FROM sga_comisiones WHERE comision = pComisionOrigen; -- Recupero el Serial de la comision comision_nueva := (SELECT currval('sga_comisiones_seq')); -- Seteo valores para retorno cur_retorno.comision := comision_nueva; cur_retorno.nombre_comision := _nombre_comision; -- Modalidad de Cursada. INSERT INTO sga_comisiones_modalidad (comision, modalidad) SELECT comision_nueva, modalidad FROM sga_comisiones_modalidad WHERE comision = pComisionOrigen; -- Propuestas y Planes de la comision INSERT INTO sga_comisiones_propuestas (comision, propuesta, plan) SELECT comision_nueva, propuesta, plan FROM sga_comisiones_propuestas WHERE comision = pComisionOrigen; -- Instancias de la comision INSERT INTO sga_comisiones_instancias (comision, instancia, escala_nota, porc_asistencia) SELECT comision_nueva, instancia, escala_nota, porc_asistencia FROM sga_comisiones_instancias WHERE comision = pComisionOrigen; -- Docentes de la comision FOR cur_docentes IN SELECT sga_docentes_comision.docente, sga_docentes_comision.responsabilidad, sga_docentes_comision.fecha_desde, sga_docentes_comision.fecha_hasta, sga_docentes.estado, '(' || sga_docentes.legajo || ') ' || mdp_personas.apellido || ' ' || mdp_personas.nombres as nombre_docente FROM sga_docentes_comision, sga_docentes, mdp_personas WHERE sga_docentes_comision.comision = pComisionOrigen AND sga_docentes.docente = sga_docentes_comision.docente AND mdp_personas.persona = sga_docentes.persona LOOP -- Si el docente esta dado de baja, entonces no copio el docente. IF cur_docentes.estado <> 'A' THEN cur_retorno.codigo_retorno = 2; _observaciones := COALESCE(_observaciones || ' - ', ''); _observaciones := _observaciones || 'El docente ' || cur_docentes.nombre_docente || ' no se copió porque esta dado de baja'; CONTINUE; END IF; INSERT INTO sga_docentes_comision (comision, docente, responsabilidad, fecha_desde, fecha_hasta) VALUES (comision_nueva,cur_docentes.docente, cur_docentes.responsabilidad, _fecha_desde, _fecha_hasta); -- Docentes - Dedicacion horaria INSERT INTO sga_docentes_dedicacion_hs (comision, docente, tipo_dedicacion, cnt_horas) SELECT comision_nueva, ddh.docente, ddh.tipo_dedicacion, ddh.cnt_horas FROM sga_docentes_dedicacion_hs as ddh WHERE ddh.comision = pComisionOrigen AND ddh.docente = cur_docentes.docente; END LOOP; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SUBCOMISIONES -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF pCopiarSubcomisiones = 1 OR pCopiarSubcomisiones IS NULL THEN -- Recupero los elementos del Plan (modulos y actividades) FOR cur_subc IN SELECT subcomision, tipo_clase, nombre, letra_desde, letra_hasta, cupo FROM sga_subcomisiones WHERE comision = pComisionOrigen LOOP -- Genero la Subcomision INSERT INTO sga_subcomisiones (comision, tipo_clase, nombre, letra_desde, letra_hasta, cupo, inscripcion_habilitada) VALUES (comision_nueva, cur_subc.tipo_clase, cur_subc.nombre, cur_subc.letra_desde, cur_subc.letra_hasta, cur_subc.cupo, 'S'); -- Recupero el Serial de la subcomision subcomision_nueva := (SELECT currval('sga_subcomisiones_seq')); -- Docentes de la subcomision. Solo docentes Activos. INSERT INTO sga_docentes_subcomision (subcomision, docente, fecha_desde, fecha_hasta) SELECT subcomision_nueva, sga_docentes_subcomision.docente, _fecha_desde, _fecha_hasta FROM sga_docentes_subcomision, sga_docentes WHERE sga_docentes_subcomision.subcomision = cur_subc.subcomision AND sga_docentes.docente = sga_docentes_subcomision.docente AND sga_docentes.estado = 'A'; END LOOP; END IF; -- Subcomisiones -- Retorno datos de la comisión. RETURN NEXT cur_retorno; RETURN; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_copiar_comision(integer, integer, varchar, smallint) ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_copiar_comision (integer, integer, varchar, smallint) FROM public; GRANT EXECUTE ON FUNCTION f_copiar_comision (integer, integer, varchar, smallint) to public; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000118.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000119.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_copiar_comision -- -- Copia una comision en en un nuevo periodo lectivo. -- * Datos de la comision, docentes, instancias, propuestas y planes -- * Subcomisiones -- -- Recibe: -- f_copiar_comision(integer, integer, varchar, boolean) -- 1. ID de la comision -- 2. ID del periodo lectivo destino -- 3. Nombre de la Nueva comision. Default valor NULL -- 4. Parámetro que indica si se copian o no las subcomisiones. Valor: true - Se copian las subcomisiones (default) / false - No se copian las subcomisiones -- -- Retorna: -- 1. un registro con los datos del tipo: type_comision -- -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP FUNCTION f_copiar_comision(integer, integer, varchar, smallint); -- definicion anterior. -- DROP FUNCTION f_copiar_comision(integer, integer, varchar, boolean); CREATE OR REPLACE FUNCTION f_copiar_comision( pComisionOrigen integer, pPeriodoLectivoDestino integer, pComisionNombre varchar(100), pCopiarSubcomisiones boolean) RETURNS SETOF type_comision_copiado_generacion AS $BODY$ DECLARE comision_nueva INTEGER; _periodo_lectivo_destino Integer; _periodo_lectivo_origen Integer; _nombre_comision VARCHAR(100); subcomision_origen INTEGER; subcomision_nueva INTEGER; _observaciones text; _catedra integer; _estado_catedra char(1); _nombre_catedra varchar(100); _fecha_desde DATE; _fecha_hasta DATE; _elemento INTEGER; cnt SMALLINT; _actividad text; cur_subc record; cur_docentes record; cur_retorno type_comision_copiado_generacion; -- para retornar datos de la comision creada BEGIN cur_retorno.codigo_retorno := 0; -- OK. COMISION COPIADA _observaciones := NULL; -- Recupero datos de la comision origen. SELECT '(' || sga_elementos.codigo || ') ' || sga_elementos.nombre, sga_comisiones.nombre, sga_comisiones.elemento, sga_comisiones.periodo_lectivo, sga_comisiones.catedra, sga_catedras.nombre, sga_catedras.estado, sga_periodos_lectivos.fecha_inicio_dictado, sga_periodos_lectivos.fecha_fin_dictado INTO _actividad, _nombre_comision, _elemento, _periodo_lectivo_origen, _catedra, _nombre_catedra, _estado_catedra, _fecha_desde, _fecha_hasta FROM sga_comisiones LEFT JOIN sga_catedras ON sga_catedras.catedra = sga_comisiones.catedra, sga_elementos, sga_periodos_lectivos WHERE sga_elementos.elemento = sga_comisiones.elemento AND sga_comisiones.comision = pComisionOrigen AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo; IF NOT FOUND THEN -- Salgo. cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La comisión a copiar no existe'; RETURN NEXT cur_retorno; RETURN; -- Salgo END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Esto es para el caso que se duplica una comision del mismo período lectivo. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF pComisionNombre IS NOT NULL THEN -- Se pasa un nuevo nombre de Comision. _nombre_comision := pComisionNombre; END IF; IF pPeriodoLectivoDestino IS NULL THEN -- Se asigna el mismo periodo lectivo que la comision original _periodo_lectivo_destino := _periodo_lectivo_origen; ELSE _periodo_lectivo_destino := pPeriodoLectivoDestino; END IF; -- Verifico que no exista una comision con el mismo nombre para la actividad y periodo lectivo destino. SELECT Count(*) INTO cnt FROM sga_comisiones WHERE elemento = _elemento AND periodo_lectivo = _periodo_lectivo_destino AND nombre = _nombre_comision; IF cnt > 0 THEN -- Salgo. cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La comisión ' || _nombre_comision || ' no se copió porque ya existe en el período lectivo destino'; RETURN NEXT cur_retorno; RETURN; END IF; -- Verifico si la catedra esta activa IF _catedra IS NOT NULL AND _estado_catedra <> 'A' THEN cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La cátedra ' || _nombre_catedra || ' de la comisión esta dada de baja'; RETURN NEXT cur_retorno; RETURN; END IF; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Inserto la comision -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_comisiones (nombre, periodo_lectivo, elemento, turno, catedra, ubicacion, letra_desde, letra_hasta, cupo, inscripcion_habilitada) SELECT _nombre_comision, _periodo_lectivo_destino, elemento, turno, _catedra, ubicacion, letra_desde, letra_hasta, cupo, 'S' FROM sga_comisiones WHERE comision = pComisionOrigen; -- Recupero el Serial de la comision comision_nueva := (SELECT currval('sga_comisiones_seq')); -- Seteo valores para retorno cur_retorno.comision := comision_nueva; cur_retorno.nombre_comision := _nombre_comision; -- Modalidad de Cursada. INSERT INTO sga_comisiones_modalidad (comision, modalidad) SELECT comision_nueva, modalidad FROM sga_comisiones_modalidad WHERE comision = pComisionOrigen; -- Propuestas y Planes de la comision INSERT INTO sga_comisiones_propuestas (comision, propuesta, plan) SELECT comision_nueva, propuesta, plan FROM sga_comisiones_propuestas WHERE comision = pComisionOrigen; -- Instancias de la comision INSERT INTO sga_comisiones_instancias (comision, instancia, escala_nota, porc_asistencia) SELECT comision_nueva, instancia, escala_nota, porc_asistencia FROM sga_comisiones_instancias WHERE comision = pComisionOrigen; -- Docentes de la comision FOR cur_docentes IN SELECT sga_docentes_comision.docente, sga_docentes_comision.responsabilidad, sga_docentes_comision.fecha_desde, sga_docentes_comision.fecha_hasta, sga_docentes.estado, '(' || sga_docentes.legajo || ') ' || mdp_personas.apellido || ' ' || mdp_personas.nombres as nombre_docente FROM sga_docentes_comision, sga_docentes, mdp_personas WHERE sga_docentes_comision.comision = pComisionOrigen AND sga_docentes.docente = sga_docentes_comision.docente AND mdp_personas.persona = sga_docentes.persona LOOP -- Si el docente esta dado de baja, entonces no copio el docente. IF cur_docentes.estado <> 'A' THEN cur_retorno.codigo_retorno = 2; _observaciones := COALESCE(_observaciones || ' - ', ''); _observaciones := _observaciones || 'El docente ' || cur_docentes.nombre_docente || ' no se copió porque esta dado de baja'; CONTINUE; END IF; INSERT INTO sga_docentes_comision (comision, docente, responsabilidad, fecha_desde, fecha_hasta) VALUES (comision_nueva,cur_docentes.docente, cur_docentes.responsabilidad, _fecha_desde, _fecha_hasta); -- Docentes - Dedicacion horaria INSERT INTO sga_docentes_dedicacion_hs (comision, docente, tipo_dedicacion, cnt_horas) SELECT comision_nueva, ddh.docente, ddh.tipo_dedicacion, ddh.cnt_horas FROM sga_docentes_dedicacion_hs as ddh WHERE ddh.comision = pComisionOrigen AND ddh.docente = cur_docentes.docente; END LOOP; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SUBCOMISIONES -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF pCopiarSubcomisiones OR pCopiarSubcomisiones IS NULL THEN -- Recupero los elementos del Plan (modulos y actividades) FOR cur_subc IN SELECT subcomision, tipo_clase, nombre, letra_desde, letra_hasta, cupo FROM sga_subcomisiones WHERE comision = pComisionOrigen LOOP -- Genero la Subcomision INSERT INTO sga_subcomisiones (comision, tipo_clase, nombre, letra_desde, letra_hasta, cupo, inscripcion_habilitada) VALUES (comision_nueva, cur_subc.tipo_clase, cur_subc.nombre, cur_subc.letra_desde, cur_subc.letra_hasta, cur_subc.cupo, 'S'); -- Recupero el Serial de la subcomision subcomision_nueva := (SELECT currval('sga_subcomisiones_seq')); -- Docentes de la subcomision. Solo docentes Activos. INSERT INTO sga_docentes_subcomision (subcomision, docente, fecha_desde, fecha_hasta) SELECT subcomision_nueva, sga_docentes_subcomision.docente, _fecha_desde, _fecha_hasta FROM sga_docentes_subcomision, sga_docentes WHERE sga_docentes_subcomision.subcomision = cur_subc.subcomision AND sga_docentes.docente = sga_docentes_subcomision.docente AND sga_docentes.estado = 'A'; END LOOP; END IF; -- Subcomisiones -- Retorno datos de la comisión. RETURN NEXT cur_retorno; RETURN; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_copiar_comision ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_copiar_comision (integer, integer, varchar, boolean) FROM public; GRANT EXECUTE ON FUNCTION f_copiar_comision (integer, integer, varchar, boolean) to public; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000119.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000120.sql -- +++++++++++++++++++++++++++++++++++++++ DROP TABLE IF EXISTS sga_clases_asistencia; DROP TABLE IF EXISTS sga_clases_ausencias_docentes; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_clases_asistencia; CREATE TABLE sga_clases_asistencia ( clase Integer NOT NULL, alumno Integer NOT NULL, cant_inasistencias Numeric(5,2) NOT NULL DEFAULT 0, cant_justificadas Numeric(5,2) NOT NULL DEFAULT 0, motivo_ausencia Integer, estado_justificacion Varchar(10) NOT NULL DEFAULT 'Aceptado', observaciones Varchar(100) ); -- ALTER TABLE sga_clases_asistencia DROP CONSTRAINT pk_sga_clases_asistencia; ALTER TABLE sga_clases_asistencia ADD CONSTRAINT pk_sga_clases_asistencia PRIMARY KEY (clase,alumno); Revoke all ON sga_clases_asistencia FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_clases_asistencia +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia_acum -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_clases_asistencia_acum; CREATE TABLE sga_clases_asistencia_acum ( alumno Integer NOT NULL, comision Integer NOT NULL, total_inasistencias Numeric(5,2) NOT NULL DEFAULT 0, total_justificadas Numeric(5,2) NOT NULL DEFAULT 0, libre Smallint NOT NULL DEFAULT 0 ); -- ALTER TABLE sga_clases_asistencia_acum DROP CONSTRAINT pk_sga_clases_asistencia_acum; ALTER TABLE sga_clases_asistencia_acum ADD CONSTRAINT pk_sga_clases_asistencia_acum PRIMARY KEY (alumno,comision); Revoke all ON sga_clases_asistencia_acum FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_clases_asistencia_acum +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_ausencias_docentes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_clases_ausencias_docentes; CREATE TABLE sga_clases_ausencias_docentes ( clase Integer NOT NULL, docente Integer NOT NULL, cant_inasistencias Numeric(5,2) NOT NULL DEFAULT 1, cant_justificadas Numeric(5,2) NOT NULL DEFAULT 0, motivo_ausencia Integer, estado_justificacion Varchar(10) NOT NULL DEFAULT 'Aceptado', observaciones Varchar(100) ); -- ALTER TABLE sga_clases_ausencias_docentes DROP CONSTRAINT pk_sga_clases_ausencias_docentes; ALTER TABLE sga_clases_ausencias_docentes ADD CONSTRAINT pk_sga_clases_ausencias_docentes PRIMARY KEY (clase,docente); Revoke all ON sga_clases_ausencias_docentes FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_clases_ausencias_docentes +++++++++++++++++++++++++++++ GRANT select ON sga_clases_asistencia TO public; GRANT update ON sga_clases_asistencia TO public; GRANT delete ON sga_clases_asistencia TO public; GRANT insert ON sga_clases_asistencia TO public; GRANT select ON sga_clases_asistencia_acum TO public; GRANT update ON sga_clases_asistencia_acum TO public; GRANT delete ON sga_clases_asistencia_acum TO public; GRANT insert ON sga_clases_asistencia_acum TO public; GRANT select ON sga_clases_ausencias_docentes TO public; GRANT update ON sga_clases_ausencias_docentes TO public; GRANT delete ON sga_clases_ausencias_docentes TO public; GRANT insert ON sga_clases_ausencias_docentes TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_copiar_comision -- -- Copia una comision en en un nuevo periodo lectivo. -- * Datos de la comision, docentes, instancias, propuestas y planes -- * Subcomisiones -- -- Recibe: -- f_copiar_comision(integer, integer, varchar, boolean) -- 1. ID de la comision -- 2. ID del periodo lectivo destino -- 3. Nombre de la Nueva comision. Default valor NULL -- 4. Parámetro que indica si se copian o no las subcomisiones. Valor: true - Se copian las subcomisiones (default) / false - No se copian las subcomisiones -- -- Retorna: -- 1. un registro con los datos del tipo: type_comision -- -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP FUNCTION f_copiar_comision(integer, integer, varchar, boolean); CREATE OR REPLACE FUNCTION f_copiar_comision( pComisionOrigen integer, pPeriodoLectivoDestino integer, pComisionNombre varchar(100), pCopiarSubcomisiones boolean) RETURNS SETOF type_comision_copiado_generacion AS $BODY$ DECLARE comision_nueva INTEGER; _periodo_lectivo_destino Integer; _periodo_lectivo_origen Integer; _nombre_comision VARCHAR(100); subcomision_origen INTEGER; subcomision_nueva INTEGER; _observaciones text; _catedra integer; _estado_catedra char(1); _nombre_catedra varchar(100); _fecha_desde DATE; _fecha_hasta DATE; _elemento INTEGER; cnt SMALLINT; _actividad text; cur_subc record; cur_docentes record; cur_retorno type_comision_copiado_generacion; -- para retornar datos de la comision creada BEGIN cur_retorno.codigo_retorno := 0; -- OK. COMISION COPIADA _observaciones := NULL; -- Recupero datos de la comision origen. SELECT '(' || sga_elementos.codigo || ') ' || sga_elementos.nombre, sga_comisiones.nombre, sga_comisiones.elemento, sga_comisiones.periodo_lectivo, sga_comisiones.catedra, sga_catedras.nombre, sga_catedras.estado, sga_periodos_lectivos.fecha_inicio_dictado, sga_periodos_lectivos.fecha_fin_dictado INTO _actividad, _nombre_comision, _elemento, _periodo_lectivo_origen, _catedra, _nombre_catedra, _estado_catedra, _fecha_desde, _fecha_hasta FROM sga_comisiones LEFT JOIN sga_catedras ON sga_catedras.catedra = sga_comisiones.catedra, sga_elementos, sga_periodos_lectivos WHERE sga_elementos.elemento = sga_comisiones.elemento AND sga_comisiones.comision = pComisionOrigen AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo; IF NOT FOUND THEN -- Salgo. cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La comisión a copiar no existe'; RETURN NEXT cur_retorno; RETURN; -- Salgo END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Esto es para el caso que se duplica una comision del mismo período lectivo. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF pComisionNombre IS NOT NULL THEN -- Se pasa un nuevo nombre de Comision. _nombre_comision := pComisionNombre; END IF; IF pPeriodoLectivoDestino IS NULL THEN -- Se asigna el mismo periodo lectivo que la comision original _periodo_lectivo_destino := _periodo_lectivo_origen; ELSE _periodo_lectivo_destino := pPeriodoLectivoDestino; END IF; -- Verifico que no exista una comision con el mismo nombre para la actividad y periodo lectivo destino. SELECT Count(*) INTO cnt FROM sga_comisiones WHERE elemento = _elemento AND periodo_lectivo = _periodo_lectivo_destino AND nombre = _nombre_comision; IF cnt > 0 THEN -- Salgo. cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La comisión ' || _nombre_comision || ' no se copió porque ya existe en el período lectivo destino'; RETURN NEXT cur_retorno; RETURN; END IF; -- Verifico si la catedra esta activa IF _catedra IS NOT NULL AND _estado_catedra <> 'A' THEN cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La cátedra ' || _nombre_catedra || ' de la comisión esta dada de baja'; RETURN NEXT cur_retorno; RETURN; END IF; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Inserto la comision -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_comisiones (nombre, periodo_lectivo, elemento, turno, catedra, ubicacion, letra_desde, letra_hasta, cupo, inscripcion_habilitada, visible_al_alumno) SELECT _nombre_comision, _periodo_lectivo_destino, elemento, turno, _catedra, ubicacion, letra_desde, letra_hasta, cupo, 'S', visible_al_alumno FROM sga_comisiones WHERE comision = pComisionOrigen; -- Recupero el Serial de la comision comision_nueva := (SELECT currval('sga_comisiones_seq')); -- Seteo valores para retorno cur_retorno.comision := comision_nueva; cur_retorno.nombre_comision := _nombre_comision; -- Modalidad de Cursada. INSERT INTO sga_comisiones_modalidad (comision, modalidad) SELECT comision_nueva, modalidad FROM sga_comisiones_modalidad WHERE comision = pComisionOrigen; -- Propuestas y Planes de la comision INSERT INTO sga_comisiones_propuestas (comision, propuesta, plan) SELECT comision_nueva, propuesta, plan FROM sga_comisiones_propuestas WHERE comision = pComisionOrigen; -- Instancias de la comision INSERT INTO sga_comisiones_instancias (comision, instancia, escala_nota, porc_asistencia) SELECT comision_nueva, instancia, escala_nota, porc_asistencia FROM sga_comisiones_instancias WHERE comision = pComisionOrigen; -- Docentes de la comision FOR cur_docentes IN SELECT sga_docentes_comision.docente, sga_docentes_comision.responsabilidad, sga_docentes_comision.fecha_desde, sga_docentes_comision.fecha_hasta, sga_docentes.estado, '(' || sga_docentes.legajo || ') ' || mdp_personas.apellido || ' ' || mdp_personas.nombres as nombre_docente FROM sga_docentes_comision, sga_docentes, mdp_personas WHERE sga_docentes_comision.comision = pComisionOrigen AND sga_docentes.docente = sga_docentes_comision.docente AND mdp_personas.persona = sga_docentes.persona LOOP -- Si el docente esta dado de baja, entonces no copio el docente. IF cur_docentes.estado <> 'A' THEN cur_retorno.codigo_retorno = 2; _observaciones := COALESCE(_observaciones || ' - ', ''); _observaciones := _observaciones || 'El docente ' || cur_docentes.nombre_docente || ' no se copió porque esta dado de baja'; CONTINUE; END IF; INSERT INTO sga_docentes_comision (comision, docente, responsabilidad, fecha_desde, fecha_hasta) VALUES (comision_nueva,cur_docentes.docente, cur_docentes.responsabilidad, _fecha_desde, _fecha_hasta); -- Docentes - Dedicacion horaria INSERT INTO sga_docentes_dedicacion_hs (comision, docente, tipo_dedicacion, cnt_horas) SELECT comision_nueva, ddh.docente, ddh.tipo_dedicacion, ddh.cnt_horas FROM sga_docentes_dedicacion_hs as ddh WHERE ddh.comision = pComisionOrigen AND ddh.docente = cur_docentes.docente; END LOOP; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SUBCOMISIONES -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF pCopiarSubcomisiones OR pCopiarSubcomisiones IS NULL THEN -- Recupero los elementos del Plan (modulos y actividades) FOR cur_subc IN SELECT subcomision, tipo_clase, nombre, letra_desde, letra_hasta, cupo FROM sga_subcomisiones WHERE comision = pComisionOrigen LOOP -- Genero la Subcomision INSERT INTO sga_subcomisiones (comision, tipo_clase, nombre, letra_desde, letra_hasta, cupo, inscripcion_habilitada) VALUES (comision_nueva, cur_subc.tipo_clase, cur_subc.nombre, cur_subc.letra_desde, cur_subc.letra_hasta, cur_subc.cupo, 'S'); -- Recupero el Serial de la subcomision subcomision_nueva := (SELECT currval('sga_subcomisiones_seq')); -- Docentes de la subcomision. Solo docentes Activos. INSERT INTO sga_docentes_subcomision (subcomision, docente, fecha_desde, fecha_hasta) SELECT subcomision_nueva, sga_docentes_subcomision.docente, _fecha_desde, _fecha_hasta FROM sga_docentes_subcomision, sga_docentes WHERE sga_docentes_subcomision.subcomision = cur_subc.subcomision AND sga_docentes.docente = sga_docentes_subcomision.docente AND sga_docentes.estado = 'A'; END LOOP; END IF; -- Subcomisiones -- Retorno datos de la comisión. RETURN NEXT cur_retorno; RETURN; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_copiar_comision +++++++++++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_copiar_comision (integer, integer, varchar, boolean) FROM public; GRANT EXECUTE ON FUNCTION f_copiar_comision (integer, integer, varchar, boolean) to public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_horario_subcomision -- -- Retorna los dias y horarios de las bandas horarias asignadas a la subcomision -- -- Recibe: f_horario_subcomision(integer) -- 1. Subcomision -- Retorna: -- 1. Dias y Horarios de las asignacions de la subcomision -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_horario_subcomision(integer); CREATE OR REPLACE FUNCTION f_horario_subcomision(_subcomision Integer) RETURNS text AS $BODY$ DECLARE _horario text; i smallint; cur_bh record; BEGIN _horario := ''; i := 0; FOR cur_bh IN ( SELECT sga_asignaciones.dia_semana as dia_semana, to_char(sga_asignaciones.hora_inicio, 'HH24:MI') as inicio, to_char(sga_asignaciones.hora_finalizacion, 'HH24:MI') as fin FROM sga_subcomisiones_bh, sga_comisiones_bh, sga_asignaciones WHERE sga_subcomisiones_bh.subcomision = _subcomision AND sga_comisiones_bh.banda_horaria = sga_subcomisiones_bh.banda_horaria AND sga_asignaciones.asignacion = sga_comisiones_bh.asignacion ) LOOP IF i > 0 THEN _horario := _horario || ' - ' ; END IF; _horario := _horario || substring(cur_bh.dia_semana from 1 for 3) || ' ' || cur_bh.inicio || ' a ' || cur_bh.fin; i := i + 1; END LOOP; -- Retorno los dias y horarios de la subcomision RETURN _horario; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_horario_subcomision ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_horario_subcomision (integer) FROM public; GRANT EXECUTE ON FUNCTION f_horario_subcomision (integer) to public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_horario_comision -- -- Retorna los dias y horarios de las bandas horarias asignadas a una comision -- -- Recibe: f_horario_comision(integer) -- 1. Comision -- Retorna: -- 1. Dias y Horarios de las asignacions de la comision -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_horario_comision(integer); CREATE OR REPLACE FUNCTION f_horario_comision(pComision Integer) RETURNS text AS $BODY$ DECLARE _horario text; i smallint; cur_bh record; BEGIN _horario := ''; i := 0; FOR cur_bh IN ( SELECT sga_asignaciones.dia_semana as dia_semana, to_char(sga_asignaciones.hora_inicio, 'HH24:MI') as inicio, to_char(sga_asignaciones.hora_finalizacion, 'HH24:MI') as fin FROM sga_comisiones_bh, sga_asignaciones WHERE sga_comisiones_bh.comision = pComision AND sga_asignaciones.asignacion = sga_comisiones_bh.asignacion ) LOOP IF i > 0 THEN _horario := _horario || ' - ' ; END IF; _horario := _horario || substring(cur_bh.dia_semana from 1 for 3) || ' ' || cur_bh.inicio || ' a ' || cur_bh.fin; i := i + 1; END LOOP; -- Retorno los dias y horarios de la subcomision RETURN _horario; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_horario_comision ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_horario_comision (integer) FROM public; GRANT EXECUTE ON FUNCTION f_horario_comision (integer) to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia_acum -- Check: ck_sga_clases_asistencia_acum_libre -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_clases_asistencia_acum DROP CONSTRAINT ck_sga_clases_asistencia_acum_libre; ALTER TABLE sga_clases_asistencia_acum ADD CONSTRAINT ck_sga_clases_asistencia_acum_libre CHECK (libre IN (0,1)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia -- Check: ck_sga_clases_asistencia_estado_justificacion -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_clases_asistencia DROP CONSTRAINT ck_sga_clases_asistencia_estado_justificacion; ALTER TABLE sga_clases_asistencia ADD CONSTRAINT ck_sga_clases_asistencia_estado_justificacion CHECK (estado_justificacion IN ('Aceptado','Rechazado')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_ausencias_docentes -- Check: ck_sga_clases_ausencias_docentes_estado_justificacion -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_clases_ausencias_docentes DROP CONSTRAINT ck_sga_clases_ausencias_docentes_estado_justificacion; ALTER TABLE sga_clases_ausencias_docentes ADD CONSTRAINT ck_sga_clases_ausencias_docentes_estado_justificacion CHECK (estado_justificacion IN ('Aceptado','Rechazado')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia_acum -- FK: fk_sga_clases_asistencia_acum_sga_alumnos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_asistencia_acum_sga_alumnos; CREATE INDEX ifk_sga_clases_asistencia_acum_sga_alumnos ON sga_clases_asistencia_acum (alumno); -- ALTER TABLE sga_clases_asistencia_acum DROP CONSTRAINT fk_sga_clases_asistencia_acum_sga_alumnos; ALTER TABLE sga_clases_asistencia_acum ADD CONSTRAINT fk_sga_clases_asistencia_acum_sga_alumnos FOREIGN KEY (alumno) REFERENCES sga_alumnos (alumno) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia_acum -- FK: fk_sga_clases_asistencia_acum_sga_comisiones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_asistencia_acum_sga_comisiones; CREATE INDEX ifk_sga_clases_asistencia_acum_sga_comisiones ON sga_clases_asistencia_acum (comision); -- ALTER TABLE sga_clases_asistencia_acum DROP CONSTRAINT fk_sga_clases_asistencia_acum_sga_comisiones; ALTER TABLE sga_clases_asistencia_acum ADD CONSTRAINT fk_sga_clases_asistencia_acum_sga_comisiones FOREIGN KEY (comision) REFERENCES sga_comisiones (comision) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia -- FK: fk_sga_clases_asistencia_sga_alumnos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_asistencia_sga_alumnos; CREATE INDEX ifk_sga_clases_asistencia_sga_alumnos ON sga_clases_asistencia (alumno); -- ALTER TABLE sga_clases_asistencia DROP CONSTRAINT fk_sga_clases_asistencia_sga_alumnos; ALTER TABLE sga_clases_asistencia ADD CONSTRAINT fk_sga_clases_asistencia_sga_alumnos FOREIGN KEY (alumno) REFERENCES sga_alumnos (alumno) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia -- FK: fk_sga_clases_asistencia_sga_clases -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_asistencia_sga_clases; CREATE INDEX ifk_sga_clases_asistencia_sga_clases ON sga_clases_asistencia (clase); -- ALTER TABLE sga_clases_asistencia DROP CONSTRAINT fk_sga_clases_asistencia_sga_clases; ALTER TABLE sga_clases_asistencia ADD CONSTRAINT fk_sga_clases_asistencia_sga_clases FOREIGN KEY (clase) REFERENCES sga_clases (clase) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_asistencia -- FK: fk_sga_clases_asistencia_sga_motivos_ausencias -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_asistencia_sga_motivos_ausencias; CREATE INDEX ifk_sga_clases_asistencia_sga_motivos_ausencias ON sga_clases_asistencia (motivo_ausencia); -- ALTER TABLE sga_clases_asistencia DROP CONSTRAINT fk_sga_clases_asistencia_sga_motivos_ausencias; ALTER TABLE sga_clases_asistencia ADD CONSTRAINT fk_sga_clases_asistencia_sga_motivos_ausencias FOREIGN KEY (motivo_ausencia) REFERENCES sga_motivos_ausencias (motivo_ausencia) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_ausencias_docentes -- FK: fk_sga_clases_ausencias_docentes_sga_clases -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_ausencias_docentes_sga_clases; CREATE INDEX ifk_sga_clases_ausencias_docentes_sga_clases ON sga_clases_ausencias_docentes (clase); -- ALTER TABLE sga_clases_ausencias_docentes DROP CONSTRAINT fk_sga_clases_ausencias_docentes_sga_clases; ALTER TABLE sga_clases_ausencias_docentes ADD CONSTRAINT fk_sga_clases_ausencias_docentes_sga_clases FOREIGN KEY (clase) REFERENCES sga_clases (clase) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_ausencias_docentes -- FK: fk_sga_clases_ausencias_docentes_sga_docentes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_ausencias_docentes_sga_docentes; CREATE INDEX ifk_sga_clases_ausencias_docentes_sga_docentes ON sga_clases_ausencias_docentes (docente); -- ALTER TABLE sga_clases_ausencias_docentes DROP CONSTRAINT fk_sga_clases_ausencias_docentes_sga_docentes; ALTER TABLE sga_clases_ausencias_docentes ADD CONSTRAINT fk_sga_clases_ausencias_docentes_sga_docentes FOREIGN KEY (docente) REFERENCES sga_docentes (docente) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_clases_ausencias_docentes -- FK: fk_sga_clases_ausencias_docentes_sga_motivos_ausencias -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_clases_ausencias_docentes_sga_motivos_ausencias; CREATE INDEX ifk_sga_clases_ausencias_docentes_sga_motivos_ausencias ON sga_clases_ausencias_docentes (motivo_ausencia); -- ALTER TABLE sga_clases_ausencias_docentes DROP CONSTRAINT fk_sga_clases_ausencias_docentes_sga_motivos_ausencias; ALTER TABLE sga_clases_ausencias_docentes ADD CONSTRAINT fk_sga_clases_ausencias_docentes_sga_motivos_ausencias FOREIGN KEY (motivo_ausencia) REFERENCES sga_motivos_ausencias (motivo_ausencia) on update restrict on delete restrict; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000120.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000121.sql -- +++++++++++++++++++++++++++++++++++++++ ALTER TABLE mdp_tipo_documento DROP COLUMN tipo_dato; UPDATE mdp_tipo_documento SET descripcion = 'Cédula de Identidad' WHERE tipo_documento = 2; UPDATE mdp_tipo_documento SET desc_abreviada = 'PAS' WHERE tipo_documento = 90; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE tda_sga_periodos_inscripcion_fechas -- TRIGGER AFTER DELETE -- Tabla: sga_periodos_inscripcion_fechas -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION ftda_sga_periodos_inscripcion_fechas(); CREATE OR REPLACE FUNCTION ftda_sga_periodos_inscripcion_fechas() RETURNS TRIGGER AS $BODY$ -- Variables locales DECLARE _tipo smallint; BEGIN -- Borro excepciones al periodo de inscripcion en el caso que existan SELECT sga_periodos_inscripcion.periodo_generico_tipo INTO _tipo FROM sga_periodos_inscripcion WHERE sga_periodos_inscripcion.periodo_inscripcion = OLD.periodo_inscripcion; -- tipo: 1 = Período Lectivo / 2 = Turno de Examen / 3 - Llamado / 4 - Propuestas IF _tipo = 1 THEN -- Excepciones a los periodos de inscripcion de los períodos lectivos DELETE FROM sga_comisiones_excep_perinsc WHERE periodo_insc = OLD.periodo_insc; END IF; IF _tipo = 3 THEN -- Excepciones a los periodos de inscripcion de los llamados DELETE FROM sga_llamados_mesa_excep_perinsc WHERE periodo_insc = OLD.periodo_insc; END IF; RETURN OLD; END; $BODY$ LANGUAGE plpgsql; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE sobre sga_periodos_inscripcion_fechas -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tda_sga_periodos_inscripcion_fechas ON sga_periodos_inscripcion_fechas RESTRICT; CREATE TRIGGER tda_sga_periodos_inscripcion_fechas AFTER DELETE ON sga_periodos_inscripcion_fechas FOR EACH ROW EXECUTE PROCEDURE ftda_sga_periodos_inscripcion_fechas(); -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000121.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000122.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Que el alumno no exista en otra mesa de examen del misma actividad en el mismo llamado -- Ya sea que sea en la misma propuesta o por otra propuesta que esta cursando. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) VALUES (320, 3, 'Que el alumno no este en otra mesa de examen de la misma actividad', 'Que el alumno no este en otra mesa de examen de la misma actividad. Por la misma u otra propuesta.', 'El alumno existe en otra mesa de examen de la actividad en el mismo llamado', 'El alumno existe en otra mesa de examen de la actividad en el mismo llamado', 'regla_alumno_existe_en_otra_mesa_examen' ); -- Mensajes INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (320, 1, 'El alumno está inscripto o existe en un acta de examen de otra mesa de examen de la actividad en el mismo llamado', 'Ud. está inscripto o existe en un acta de examen de otra mesa de examen de la actividad en el mismo llamado'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (320, 2, 'El alumno no está inscripto o existe en un acta de examen de otra mesa de examen de la actividad en el mismo llamado', 'Ud. no está inscripto o existe en un acta de examen de otra mesa de examen de la actividad en el mismo llamado'); -- Parametros -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 320,'alumno'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 320,'actividad'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 320,'llamado_mesa'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 320,'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto -- Versión: 3.0.0 -- Control: Que el alumno no exista en otra comisión de la misma actividad en el mismo período lectivo. -- Ya sea que sea en la misma propuesta o por otra propuesta que esta cursando. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) VALUES (321, 3, 'Que el alumno no este en otra comision de la misma actividad y período lectivo', 'Que el alumno no este en otra comision de la misma actividad y período lectivo. Por la misma u otra propuesta.', 'El alumno existe en otra comisión de la actividad en el mismo período lectivo', 'El alumno existe en otra comisión de la actividad en el mismo período lectivo', 'regla_alumno_existe_en_otra_comision' ); -- Mensajes INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (321, 1, 'El alumno está inscripto o existe en un acta de otra comisión de la actividad', 'Ud. está inscripto o existe en un acta de otra comisión de la actividad'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (321, 2, 'El alumno no está inscripto o existe en un acta de otra comisión de la actividad', 'Ud. no está inscripto o existe en un acta de otra comisión de la actividad'); -- Parametros -- Parámetros de Contexto INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 321,'alumno'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 321,'actividad'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 321,'comision'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 321,'fecha'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_requisitos, sga_requisitos_validos -- Versión: 3.0.0 -- Control: Verificar que el alumno no exista en un acta de examen abierta -- por cualquiera de las propuestas que el alumno esta cursando. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) VALUES (66, 6, 'Que el alumno no esté en otra mesa de examen o acta de examen de la actividad en el mismo llamado', NULL, 'Que el alumno no esté en otra mesa de examen o acta de examen de la actividad en el mismo llamado. Para cualquiera de las propuestas que esta cursando.', 320); INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (2, 66); -- Examenes -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_requisitos, sga_requisitos_validos -- Versión: 3.0.0 -- Control: Verificar que el alumno no exista en otra comisión de la misma actividad y período lectivo -- Esto se verifica por todas las propuestas que la persona esta cursando -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) VALUES (67, 6, 'Que el alumno no exista en otra comisión de la actividad y mismo período lectivo', NULL, 'Que el alumno no exista en otra comisión de la actividad y mismo período lectivo', 321); INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 67); -- Cursadas -- Reordenar requisitos en el Pto de Control UPDATE sga_requisitos_x_punto_control SET orden = 2 WHERE pto_control = 6 AND requisito = 70; UPDATE sga_requisitos_x_punto_control SET orden = 3 WHERE pto_control = 6 AND requisito = 71; INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (6, 67, 1); -- Alumno no exista en otra comisión de la actividad y período lectivo INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES ( 9, 66, 1); -- Alumno existe en ota mesa del mismo llamado y actividad. -- Agrego operaciones a la accion 1 - Cursadas INSERT INTO sga_acciones_operacion (operacion, accion) VALUES ('800SIUCUR004',1); -- Generación y Carga de Notas en Actas de Regulares INSERT INTO sga_acciones_operacion (operacion, accion) VALUES ('800SIUCUR005',1); -- Baja de Inscripciones a Cursadas INSERT INTO sga_acciones_operacion (operacion, accion) VALUES ('800SIUCUR006',1); -- Generación y Carga de Notas en Actas de promocionales INSERT INTO sga_acciones_operacion (operacion, accion) VALUES ('800SIUCUR013',1); -- Carga de Notas a Instancias de Comisiones INSERT INTO sga_acciones_operacion (operacion, accion) VALUES ('800SIUCUR014',1); -- Carga de Notas en Actas de Regulares INSERT INTO sga_acciones_operacion (operacion, accion) VALUES ('800SIUCUR015',1); -- Carga de Notas en Actas de Promoción INSERT INTO sga_acciones_operacion (operacion, accion) VALUES ('800SIUCUR017',1); -- Cerrar Acta de Regulares INSERT INTO sga_acciones_operacion (operacion, accion) VALUES ('800SIUCUR018',1); -- Cerrar Acta de Promociones -- Agrego operaciones a la accion 2 - Examenes INSERT INTO sga_acciones_operacion (operacion, accion) VALUES ('800SIUEXA004',2); -- Baja de Inscripción a Examen INSERT INTO sga_acciones_operacion (operacion, accion) VALUES ('800SIUEXA006',2); -- Carga de Notas a un Acta de Examen INSERT INTO sga_acciones_operacion (operacion, accion) VALUES ('800SIUEXA008',2); -- Carga de Notas a Mesa de Examen INSERT INTO sga_acciones_operacion (operacion, accion) VALUES ('800SIUEXA011',2); -- Cerrar Actas de Examenes INSERT INTO sga_acciones_operacion (operacion, accion) VALUES ('800SIUEXA012',2); -- Rectificar Actas de Examen -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000122.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000123.sql -- +++++++++++++++++++++++++++++++++++++++ -- Se actualiza la tabla de criterios para ingresantes por un error en los datos UPDATE sga_criterios_prioridad_ing SET criterio_base = 'sga_propuestas_aspira.fecha_inscripcion' WHERE criterio = 4; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000123.sql -- +++++++++++++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_docentes -- Indice: iu_sga_docentes_legajo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX iu_sga_docentes_legajo; CREATE UNIQUE INDEX iu_sga_docentes_legajo ON sga_docentes (legajo); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de UPDATE: tua_sga_comisiones -- AFTER UPDATE -- Tabla: sga_comisiones -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP TRIGGER tua_sga_comisiones ON sga_comisiones RESTRICT; DROP FUNCTION ftua_sga_comisiones(); CREATE OR REPLACE FUNCTION ftua_sga_comisiones() RETURNS trigger AS $BODY$ BEGIN -- Si cambó el cupo entonces cambio el valor en la tabla de cupos IF COALESCE(OLD.cupo, 0) <> COALESCE(NEW.cupo, 0) THEN UPDATE sga_comisiones_cupo SET cupo = COALESCE(NEW.cupo, 0) WHERE comision = NEW.comision; END IF; RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de UPDATE sobre sga_comisiones -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE TRIGGER tua_sga_comisiones AFTER UPDATE ON sga_comisiones FOR EACH ROW EXECUTE PROCEDURE ftua_sga_comisiones(); -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000125.sql -- +++++++++++++++++++++++++++++++++++++++ ALTER TABLE mdp_datos_personales DROP CONSTRAINT ck_mdp_datos_personales_turno_preferido; -- Cambio de tipo de dato de la columna turno_preferido. Cambio de Char(1) a Integer ALTER TABLE mdp_datos_personales ADD COLUMN turno_preferido2 Integer; UPDATE mdp_datos_personales SET turno_preferido2 = '1' WHERE turno_preferido = 'M'; UPDATE mdp_datos_personales SET turno_preferido2 = '2' WHERE turno_preferido = 'T'; UPDATE mdp_datos_personales SET turno_preferido2 = '3' WHERE turno_preferido = 'N'; ALTER TABLE mdp_datos_personales DROP COLUMN turno_preferido; ALTER TABLE mdp_datos_personales RENAME COLUMN turno_preferido2 TO turno_preferido; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_datos_personales -- FK: fk_mdp_datos_personales_sga_turnos_cursadas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mdp_datos_personales_sga_turnos_cursadas; CREATE INDEX ifk_mdp_datos_personales_sga_turnos_cursadas ON mdp_datos_personales (turno_preferido); -- ALTER TABLE mdp_datos_personales DROP CONSTRAINT fk_mdp_datos_personales_sga_turnos_cursadas; ALTER TABLE mdp_datos_personales ADD CONSTRAINT fk_mdp_datos_personales_sga_turnos_cursadas FOREIGN KEY (turno_preferido) REFERENCES sga_turnos_cursadas (turno) on update restrict on delete restrict; INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('aprob_cerrar_tramite_automaticamente', 'Define si en el alta de un trámite de aprobación por resolución el cerrado del mismo se realiza automáticamente', 'E', 'S', 1, 'S', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema_valores ( parametro, valor, descripcion ) VALUES ('aprob_cerrar_tramite_automaticamente', 'S', 'El trámite se cierra automáticamente sin consultar al usuario.'); INSERT INTO par_parametros_sistema_valores ( parametro, valor, descripcion ) VALUES ('aprob_cerrar_tramite_automaticamente', 'N', 'El trámite no se cierra automáticamente.'); INSERT INTO par_parametros_sistema_valores ( parametro, valor, descripcion ) VALUES ('aprob_cerrar_tramite_automaticamente', 'O', 'Se consulta al usuario si el cierre del trámite se realiza o no al momento de confirmar el alta del mismo.'); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('asist_computa_inasis_por_horas', 'Define si se para cargar una inasistencia se cargan las horas o no', 'E', 'S', 1, 'S', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema_valores ( parametro, valor, descripcion ) VALUES ('asist_computa_inasis_por_horas', 'S', 'La asistencia a clase se computa por horas.'); INSERT INTO par_parametros_sistema_valores ( parametro, valor, descripcion ) VALUES ('asist_computa_inasis_por_horas', 'N', 'La asistencia a clase no se computa por horas. Una clase es una asistencia/inasistencia'); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('asist_estado_default_asistencia', 'Estado default de asistencia de los alumnos a clase', 'E', 'S', 1, 'Presente', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema_valores ( parametro, valor, descripcion ) VALUES ('asist_estado_default_asistencia', 'Presente', 'Los alumnos se registran como Presentes en la clase'); INSERT INTO par_parametros_sistema_valores ( parametro, valor, descripcion ) VALUES ('asist_estado_default_asistencia', 'Ausente', 'Los alumnos se registran como Ausentes en la clase'); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('asist_indicar_cantidad_inasistencias', 'Define si se carga la cantidad de inasistencia o si solo se indica si faltó o no', 'E', 'S', 1, 'S', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema_valores ( parametro, valor, descripcion ) VALUES ('asist_indicar_cantidad_inasistencias', 'S', 'Se cargan las horas o el porcentaje de inasistencia'); INSERT INTO par_parametros_sistema_valores ( parametro, valor, descripcion ) VALUES ('asist_indicar_cantidad_inasistencias', 'N', 'Se indica si el alumno faltó o no sin considerar horas'); -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000125.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000126.sql -- +++++++++++++++++++++++++++++++++++++++ DELETE FROM par_parametros_sistema_valores WHERE parametro = 'aprob_cerrar_tramite_automaticamente'; INSERT INTO par_parametros_sistema_valores ( parametro, valor, descripcion ) VALUES ('aprob_cerrar_tramite_automaticamente', 'S', 'El trámite se cierra automáticamente'); INSERT INTO par_parametros_sistema_valores ( parametro, valor, descripcion ) VALUES ('aprob_cerrar_tramite_automaticamente', 'N', 'El trámite no se cierra automáticamente.'); ALTER TABLE sga_evaluaciones ADD COLUMN promediable Char(1) NOT NULL DEFAULT 'N'; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_evaluaciones -- Check: ck_sga_evaluaciones_promediable -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_evaluaciones DROP CONSTRAINT ck_sga_evaluaciones_promediable; ALTER TABLE sga_evaluaciones ADD CONSTRAINT ck_sga_evaluaciones_promediable CHECK (promediable IN ('S', 'N')); -- Borro datos si existen sobre Unidades de Gestion DELETE FROM sga_ug_elementos; DELETE FROM sga_ug_propuestas; DELETE FROM sga_ug_responsables_academicas; DELETE FROM sga_ug_espacios; DELETE FROM sga_unidades_gestion; -- Unidades de Gestion ALTER TABLE sga_unidades_gestion ADD COLUMN dominio Integer NOT NULL DEFAULT 1; ALTER TABLE sga_ug_elementos ADD COLUMN propuesta Integer NOT NULL; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_unidades_gestion -- Check: ck_sga_unidades_gestion_dominio -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_unidades_gestion DROP CONSTRAINT ck_sga_unidades_gestion_dominio; ALTER TABLE sga_unidades_gestion ADD CONSTRAINT ck_sga_unidades_gestion_dominio CHECK (dominio IN (1,2,3,4,5,6)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_ug_tipos_propuestas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_ug_tipos_propuestas; CREATE TABLE sga_ug_tipos_propuestas ( unidad_gestion Integer NOT NULL, propuesta_tipo Integer NOT NULL ); -- ALTER TABLE sga_ug_tipos_propuestas DROP CONSTRAINT pk_sga_ug_tipos_propuestas; ALTER TABLE sga_ug_tipos_propuestas ADD CONSTRAINT pk_sga_ug_tipos_propuestas PRIMARY KEY (unidad_gestion,propuesta_tipo); Revoke all ON sga_ug_tipos_propuestas FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_ug_tipos_propuestas +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_ug_ubicaciones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_ug_ubicaciones; CREATE TABLE sga_ug_ubicaciones ( unidad_gestion Integer NOT NULL, ubicacion Integer NOT NULL ); -- ALTER TABLE sga_ug_ubicaciones DROP CONSTRAINT pk_sga_ug_ubicaciones; ALTER TABLE sga_ug_ubicaciones ADD CONSTRAINT pk_sga_ug_ubicaciones PRIMARY KEY (unidad_gestion,ubicacion); Revoke all ON sga_ug_ubicaciones FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_ug_ubicaciones +++++++++++++++++++++++++++++ GRANT select ON sga_ug_tipos_propuestas TO public; GRANT update ON sga_ug_tipos_propuestas TO public; GRANT delete ON sga_ug_tipos_propuestas TO public; GRANT insert ON sga_ug_tipos_propuestas TO public; GRANT select ON sga_ug_ubicaciones TO public; GRANT update ON sga_ug_ubicaciones TO public; GRANT delete ON sga_ug_ubicaciones TO public; GRANT insert ON sga_ug_ubicaciones TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_ug_tipos_propuestas -- FK: fk_sga_ug_tipos_propuestas_sga_propuestas_tipos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_ug_tipos_propuestas_sga_propuestas_tipos; CREATE INDEX ifk_sga_ug_tipos_propuestas_sga_propuestas_tipos ON sga_ug_tipos_propuestas (propuesta_tipo); -- ALTER TABLE sga_ug_tipos_propuestas DROP CONSTRAINT fk_sga_ug_tipos_propuestas_sga_propuestas_tipos; ALTER TABLE sga_ug_tipos_propuestas ADD CONSTRAINT fk_sga_ug_tipos_propuestas_sga_propuestas_tipos FOREIGN KEY (propuesta_tipo) REFERENCES sga_propuestas_tipos (propuesta_tipo) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_ug_tipos_propuestas -- FK: fk_sga_ug_tipos_propuestas_sga_unidades_gestion -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_ug_tipos_propuestas_sga_unidades_gestion; CREATE INDEX ifk_sga_ug_tipos_propuestas_sga_unidades_gestion ON sga_ug_tipos_propuestas (unidad_gestion); -- ALTER TABLE sga_ug_tipos_propuestas DROP CONSTRAINT fk_sga_ug_tipos_propuestas_sga_unidades_gestion; ALTER TABLE sga_ug_tipos_propuestas ADD CONSTRAINT fk_sga_ug_tipos_propuestas_sga_unidades_gestion FOREIGN KEY (unidad_gestion) REFERENCES sga_unidades_gestion (unidad_gestion) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_ug_elementos -- FK: fk_sga_ug_elementos_sga_propuestas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_ug_elementos_sga_propuestas; CREATE INDEX ifk_sga_ug_elementos_sga_propuestas ON sga_ug_elementos (propuesta); -- ALTER TABLE sga_ug_elementos DROP CONSTRAINT fk_sga_ug_elementos_sga_propuestas; ALTER TABLE sga_ug_elementos ADD CONSTRAINT fk_sga_ug_elementos_sga_propuestas FOREIGN KEY (propuesta) REFERENCES sga_propuestas (propuesta) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_ug_ubicaciones -- FK: fk_sga_ug_ubicaciones_sga_ubicaciones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_ug_ubicaciones_sga_ubicaciones; CREATE INDEX ifk_sga_ug_ubicaciones_sga_ubicaciones ON sga_ug_ubicaciones (ubicacion); -- ALTER TABLE sga_ug_ubicaciones DROP CONSTRAINT fk_sga_ug_ubicaciones_sga_ubicaciones; ALTER TABLE sga_ug_ubicaciones ADD CONSTRAINT fk_sga_ug_ubicaciones_sga_ubicaciones FOREIGN KEY (ubicacion) REFERENCES sga_ubicaciones (ubicacion) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_ug_ubicaciones -- FK: fk_sga_ug_ubicaciones_sga_unidades_gestion -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_ug_ubicaciones_sga_unidades_gestion; CREATE INDEX ifk_sga_ug_ubicaciones_sga_unidades_gestion ON sga_ug_ubicaciones (unidad_gestion); -- ALTER TABLE sga_ug_ubicaciones DROP CONSTRAINT fk_sga_ug_ubicaciones_sga_unidades_gestion; ALTER TABLE sga_ug_ubicaciones ADD CONSTRAINT fk_sga_ug_ubicaciones_sga_unidades_gestion FOREIGN KEY (unidad_gestion) REFERENCES sga_unidades_gestion (unidad_gestion) on update restrict on delete restrict; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000126.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000127.sql -- +++++++++++++++++++++++++++++++++++++++ ALTER TABLE sga_clases_asistencia ALTER COLUMN estado_justificacion DROP NOT NULL; ALTER TABLE sga_clases_asistencia ALTER COLUMN estado_justificacion DROP DEFAULT; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_generar_asistencia -- -- Genera la asistencia en la tabla sga_clases_asistencia de cada alumno inscripto en la comision para la clase seleccionada -- Se utiliza el parámetro del sistema 'asist_estado_default_asistencia' para definir con que estado por default se registran -- a los alumnos en la clase. -- -- Recibe: f_generar_asistencia(integer, integer) -- 1. Clase -- -- Retorna: -- 1. Cantidad de Alumnos registrados en la clase -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_generar_asistencia(integer); CREATE OR REPLACE FUNCTION f_generar_asistencia(pClase Integer) RETURNS integer AS $BODY$ DECLARE _cant_alumnos Integer; _comision Integer; _bh Integer; k smallint; _cant_horas_inasis Decimal(5,2); _cant_horas_clase Decimal(5,2); _estado_default varchar(255); BEGIN _cant_horas_inasis := 0; _cant_horas_clase := 0; k := 0; SELECT COUNT(*) INTO k FROM sga_clases_asistencia WHERE clase = pClase; IF k > 0 THEN -- Si ya hay registros de alumnos para la clase, entonces salgo. RETURN 0; END IF; -- Recupero la cantidad de horas de la clase para registrar la cantidad de inasistencias ya que -- por defecto a los alumnos los seteo como Ausentes en la Clase. SELECT COALESCE(sga_clases.cantidad_horas_dictadas, 0), sga_clases.banda_horaria, sga_comisiones_bh.comision INTO _cant_horas_clase, _bh, _comision FROM sga_clases, sga_comisiones_bh WHERE sga_clases.clase = pClase AND sga_comisiones_bh.banda_horaria = sga_clases.banda_horaria; _cant_horas_inasis := _cant_horas_clase; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recupero el valor del parámetro -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT valor_default INTO _estado_default FROM par_parametros_sistema WHERE parametro = 'asist_estado_default_asistencia'; IF _estado_default = 'Presente' THEN _cant_horas_clase := 0; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recupero alumnos que ya existan en la clase. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE TEMP TABLE temp_alu_clase (alumno Integer); INSERT INTO temp_alu_clase (alumno) SELECT sga_clases_asistencia.alumno FROM sga_clases_asistencia WHERE sga_clases_asistencia.clase = pClase; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Inserto los alumnos inscriptos en la comision que no tengan registro en la clase -- Si hay subcomisiones, solo debo recuperar los alumnos que pertenecen a la subcomision -- a la que pertenece la clase -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT count(*) INTO k FROM sga_subcomisiones WHERE comision = _comision; IF k > 0 THEN -- Hay subcomisiones. Solo selecciono inscriptos a la subcomision (de la comision) -- relacionada con la clase INSERT INTO sga_clases_asistencia (clase, alumno, cant_inasistencias) SELECT pClase, vw_insc_cursada.alumno, _cant_horas_clase FROM sga_subcomisiones_bh, vw_insc_subcomision, vw_insc_cursada WHERE sga_subcomisiones_bh.banda_horaria = _bh AND vw_insc_cursada.comision = _comision AND vw_insc_subcomision.inscripcion = vw_insc_cursada.inscripcion AND vw_insc_subcomision.subcomision = sga_subcomisiones_bh.subcomision AND vw_insc_cursada.alumno NOT IN (SELECT alumno FROM temp_alu_clase); ELSE -- No hay subcomisiones. Inserto todos los alumnos inscriptos en la comision. INSERT INTO sga_clases_asistencia (clase, alumno, cant_inasistencias) SELECT pClase, vw_insc_cursada.alumno, _cant_horas_clase FROM vw_insc_cursada WHERE vw_insc_cursada.comision = _comision AND vw_insc_cursada.alumno NOT IN (SELECT alumno FROM temp_alu_clase); END IF; /* -- Los seteo como ausentes a los alumnos que ya estan LIBRES en la comision -- Hay problema con esto ya que la condición de libre se actualiza por trigger -- cuando se registra la inasistencia. UPDATE sga_clases_asistencia SET cant_inasistencias = _cant_horas_inasis WHERE clase = pClase AND alumno IN (SELECT alumno FROM sga_clases_asistencia_acum WHERE comision = pComision AND libre = 1); */ -- Borro la tabla temporal. DROP TABLE temp_alu_clase; -- Se insertaron registros en la tabla de asistencia de alumnos RETURN 1; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_generar_asistencia ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_generar_asistencia (integer) FROM public; GRANT EXECUTE ON FUNCTION f_generar_asistencia (integer) to public; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000127.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000128.sql -- +++++++++++++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_reglas_calculo -- Secuencia: sga_reglas_calculo_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_reglas_calculo_seq; CREATE SEQUENCE sga_reglas_calculo_seq START 1; ALTER TABLE mdp_personas ADD COLUMN recibe_mensajes_x_mail Smallint NOT NULL DEFAULT 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_reglas_calculo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_reglas_calculo; CREATE TABLE sga_reglas_calculo ( regla_calculo INTEGER NOT NULL DEFAULT nextval('sga_reglas_calculo_seq'::text) , nombre Varchar(100) NOT NULL, descripcion Varchar(250), php_clase Varchar(100) NOT NULL ); -- ALTER TABLE sga_reglas_calculo DROP CONSTRAINT pk_sga_reglas_calculo; ALTER TABLE sga_reglas_calculo ADD CONSTRAINT pk_sga_reglas_calculo PRIMARY KEY (regla_calculo); Revoke all ON sga_reglas_calculo FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_reglas_calculo +++++++++++++++++++++++++++++ GRANT select ON sga_reglas_calculo TO public; GRANT update ON sga_reglas_calculo TO public; GRANT delete ON sga_reglas_calculo TO public; GRANT insert ON sga_reglas_calculo TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: sga_reglas_calculo -- Reglas de cálculo de promedios de evaluaciones de una comisión -- Version 3.0.0 -- SIU: 1 a 99 -- Institucion: 100 en adelante -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_reglas_calculo (regla_calculo, nombre, descripcion, php_clase) VALUES (1, 'Promedio de parciales (no cuenta recuperatorios)', 'Realiza el cálculo del promedio teniendo en cuenta sólo los PARCIALES (aprobados y desaprobados)', 'promedio_parciales'); INSERT INTO sga_reglas_calculo (regla_calculo, nombre, descripcion, php_clase) VALUES (2, 'Promedio de todas las evaluaciones rendidas' , 'Realiza el cálculo del promedio teniendo en cuenta TODAS las evaluaciones (aprobadas y desaprobadas) rendidas por el alumno', 'promedio_evaluaciones_rendidas'); INSERT INTO sga_reglas_calculo (regla_calculo, nombre, descripcion, php_clase) VALUES (3, 'Promedio de última nota de cada evaluación' , 'Realiza el cálculo del promedio teniendo en cuenta sólo la ÚLTIMA nota obtenida en cada evaluación tomada. Es decir, de una evaluación dada y aquellas relacionadas a la misma, se toma la nota de la última de ellas', 'promedio_ultimas_notas'); INSERT INTO sga_reglas_calculo (regla_calculo, nombre, descripcion, php_clase) VALUES (4, 'Promedio de mejor nota de cada evaluación' , 'Realiza el cálculo del promedio teniendo en cuenta sólo la MEJOR nota obtenida en cada evaluación tomada. Es decir, de una evaluación dada y aquellas relacionadas a la misma, se toma la nota de la mejor de ellas', 'promedio_mejores_notas'); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_personas -- Check: ck_mdp_personas_recibe_mensajes_x_mail -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE mdp_personas DROP CONSTRAINT ck_mdp_personas_recibe_mensajes_x_mail; ALTER TABLE mdp_personas ADD CONSTRAINT ck_mdp_personas_recibe_mensajes_x_mail CHECK (recibe_mensajes_x_mail IN (1,0)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_reglas_calculo -- Actualizacion Nro de Secuencia: sga_reglas_calculo_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_reglas_calculo_seq',(SELECT MAX(regla_calculo) FROM sga_reglas_calculo)); -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000128.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000129.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_instancias_evaluacion -- -- Retorna las instancias definidas para una comision -- -- Recibe: f_instancias_evaluacion(integer) -- 1. ID de la comision -- Retorna: -- 1. Nombre de la/s instancias/s de la evaluación -- Ejemplo: Regular / Libre -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_instancias_evaluacion(integer); CREATE OR REPLACE FUNCTION f_instancias_evaluacion(_evaluacion INTEGER) RETURNS TEXT AS $BODY$ DECLARE cnt smallint; _retorno text; cur1 record; BEGIN cnt := 0; _retorno := NULL; -- Recupero el nombre de las modalidades de cursada FOR cur1 IN SELECT sga_instancias.nombre as nombre FROM sga_evaluaciones_instancias, sga_instancias WHERE sga_evaluaciones_instancias.evaluacion = _evaluacion AND sga_evaluaciones_instancias.instancia = sga_instancias.instancia LOOP IF cnt = 0 THEN _retorno := cur1.nombre; ELSE _retorno := _retorno || '/' || cur1.nombre; END IF; cnt := cnt + 1; END LOOP; RETURN _retorno; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_instancias_evaluacion ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_instancias_evaluacion (integer) FROM public; GRANT EXECUTE ON FUNCTION f_instancias_evaluacion (integer) to public; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000129.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000130.sql -- +++++++++++++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_grupos -- Secuencia: men_grupos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE men_grupos_seq; CREATE SEQUENCE men_grupos_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_grupos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS men_grupos; CREATE TABLE men_grupos ( grupo INTEGER NOT NULL DEFAULT nextval('men_grupos_seq'::text) , nombre Varchar(100) NOT NULL, descripcion Varchar(255) ); -- ALTER TABLE men_grupos DROP CONSTRAINT pk_men_grupos; ALTER TABLE men_grupos ADD CONSTRAINT pk_men_grupos PRIMARY KEY (grupo); Revoke all ON men_grupos FROM public; -- ++++++++++++++++++++++++++ Fin tabla men_grupos +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_grupos_personas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS men_grupos_personas; CREATE TABLE men_grupos_personas ( grupo Integer NOT NULL, persona Integer NOT NULL ); -- ALTER TABLE men_grupos_personas DROP CONSTRAINT pk_men_grupos_personas; ALTER TABLE men_grupos_personas ADD CONSTRAINT pk_men_grupos_personas PRIMARY KEY (grupo,persona); Revoke all ON men_grupos_personas FROM public; -- ++++++++++++++++++++++++++ Fin tabla men_grupos_personas +++++++++++++++++++++++++++++ GRANT select ON men_grupos TO public; GRANT update ON men_grupos TO public; GRANT delete ON men_grupos TO public; GRANT insert ON men_grupos TO public; GRANT select ON men_grupos_personas TO public; GRANT update ON men_grupos_personas TO public; GRANT delete ON men_grupos_personas TO public; GRANT insert ON men_grupos_personas TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_grupos_personas -- FK: fk_men_grupos_personas_mdp_personas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_grupos_personas_mdp_personas; CREATE INDEX ifk_men_grupos_personas_mdp_personas ON men_grupos_personas (persona); -- ALTER TABLE men_grupos_personas DROP CONSTRAINT fk_men_grupos_personas_mdp_personas; ALTER TABLE men_grupos_personas ADD CONSTRAINT fk_men_grupos_personas_mdp_personas FOREIGN KEY (persona) REFERENCES mdp_personas (persona) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_grupos_personas -- FK: fk_men_grupos_personas_men_grupos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_grupos_personas_men_grupos; CREATE INDEX ifk_men_grupos_personas_men_grupos ON men_grupos_personas (grupo); -- ALTER TABLE men_grupos_personas DROP CONSTRAINT fk_men_grupos_personas_men_grupos; ALTER TABLE men_grupos_personas ADD CONSTRAINT fk_men_grupos_personas_men_grupos FOREIGN KEY (grupo) REFERENCES men_grupos (grupo) on update restrict on delete restrict; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000130.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000131.sql -- +++++++++++++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_ug_propuestas -- Version: 3.0.0 -- -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW IF EXISTS vw_ug_propuestas; CREATE OR REPLACE VIEW vw_ug_propuestas ( unidad_gestion, propuesta, ubicacion ) AS SELECT sga_ug_propuestas.unidad_gestion, sga_ug_propuestas.propuesta, sga_ug_propuestas.ubicacion FROM sga_ug_propuestas UNION SELECT ra.unidad_gestion, pra.propuesta, po.ubicacion FROM sga_ug_responsables_academicas as ra, sga_propuestas_ra as pra LEFT JOIN sga_propuestas_oferta as po ON po.propuesta = pra.propuesta WHERE pra.responsable_academica = ra.responsable_academica UNION SELECT ub.unidad_gestion, o.propuesta, o.ubicacion FROM sga_ug_ubicaciones as ub, sga_propuestas_oferta as o WHERE o.ubicacion = ub.ubicacion UNION SELECT tp.unidad_gestion, p.propuesta, cast(NULL as integer) as ubicacion FROM sga_ug_tipos_propuestas as tp, sga_propuestas as p WHERE p.propuesta_tipo = tp.propuesta_tipo ; -- ++++++++++++++++++++++++++++++ Fin view vw_ug_propuestas +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_ug_propuestas to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_ug_elementos -- Version: 3.0.0 -- -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW IF EXISTS vw_ug_elementos; CREATE OR REPLACE VIEW vw_ug_elementos ( unidad_gestion, elemento, ubicacion ) AS SELECT sga_ug_elementos.unidad_gestion, sga_ug_elementos.elemento, sga_ug_elementos.ubicacion FROM sga_ug_elementos UNION SELECT pr.unidad_gestion, e.elemento, pr.ubicacion FROM sga_elementos as e, sga_elementos_plan as ep, vw_ug_propuestas as pr, sga_planes as p, sga_planes_versiones as pv, sga_elementos_revision as erv WHERE p.propuesta = pr.propuesta AND p.estado IN ('V','A') AND pv.plan = p.plan AND pv.estado IN ('V','A') AND ep.plan_version = pv.plan_version AND erv.elemento_revision = ep.elemento_revision AND e.elemento = erv.elemento UNION SELECT ura.unidad_gestion, era.elemento, cast(NULL as integer) as ubicacion FROM sga_elementos_ra era, sga_ug_responsables_academicas ura WHERE era.responsable_academica = ura.responsable_academica ; -- ++++++++++++++++++++++++++++++ Fin view vw_ug_elementos +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_ug_elementos to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_ug_ubicaciones -- Version: 3.0.0 -- -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW IF EXISTS vw_ug_ubicaciones; CREATE OR REPLACE VIEW vw_ug_ubicaciones ( unidad_gestion, ubicacion ) AS SELECT sga_ug_ubicaciones.unidad_gestion, sga_ug_ubicaciones.ubicacion FROM sga_ug_ubicaciones UNION SELECT up.unidad_gestion, o.ubicacion FROM vw_ug_propuestas as up, sga_propuestas_oferta as o WHERE o.propuesta = up.propuesta ; -- ++++++++++++++++++++++++++++++ Fin view vw_ug_ubicaciones +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_ug_ubicaciones to public; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000131.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000132.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_copiar_comision -- -- Copia una comision en en un nuevo periodo lectivo. -- * Datos de la comision, docentes, instancias, propuestas y planes -- * Subcomisiones -- -- Recibe: -- f_copiar_comision(integer, integer, varchar, boolean) -- 1. ID de la comision -- 2. ID del periodo lectivo destino -- 3. Nombre de la Nueva comision. Default valor NULL -- 4. Parámetro que indica si se copian o no las subcomisiones. Valor: true - Se copian las subcomisiones (default) / false - No se copian las subcomisiones -- -- Retorna: -- 1. un registro con los datos del tipo: type_comision -- -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_copiar_comision(integer, integer, varchar, boolean); CREATE OR REPLACE FUNCTION f_copiar_comision( pComisionOrigen integer, pPeriodoLectivoDestino integer, pComisionNombre varchar(100), pCopiarSubcomisiones boolean) RETURNS SETOF type_comision_copiado_generacion AS $BODY$ DECLARE comision_nueva INTEGER; _periodo_lectivo_destino Integer; _periodo_lectivo_origen Integer; _nombre_comision VARCHAR(100); subcomision_origen INTEGER; subcomision_nueva INTEGER; _observaciones text; _catedra integer; _estado_catedra char(1); _nombre_catedra varchar(100); _fecha_desde DATE; _fecha_hasta DATE; _fecha_desde_doc DATE; _fecha_hasta_doc DATE; _insc_habilitada char(1); _insc_habilitada_orig char(1); _elemento INTEGER; cnt SMALLINT; _actividad text; cur_subc record; cur_docentes record; cur_retorno type_comision_copiado_generacion; -- para retornar datos de la comision creada BEGIN cur_retorno.codigo_retorno := 0; -- OK. COMISION COPIADA _observaciones := NULL; _insc_habilitada := 'S'; -- Recupero datos de la comision origen. SELECT '(' || sga_elementos.codigo || ') ' || sga_elementos.nombre, sga_comisiones.nombre, sga_comisiones.elemento, sga_comisiones.periodo_lectivo, sga_comisiones.inscripcion_habilitada, sga_comisiones.catedra, sga_catedras.nombre, sga_catedras.estado, sga_periodos_lectivos.fecha_inicio_dictado, sga_periodos_lectivos.fecha_fin_dictado INTO _actividad, _nombre_comision, _elemento, _periodo_lectivo_origen, _insc_habilitada_orig, _catedra, _nombre_catedra, _estado_catedra, _fecha_desde, _fecha_hasta FROM sga_comisiones LEFT JOIN sga_catedras ON sga_catedras.catedra = sga_comisiones.catedra, sga_elementos, sga_periodos_lectivos WHERE sga_elementos.elemento = sga_comisiones.elemento AND sga_comisiones.comision = pComisionOrigen AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo; IF NOT FOUND THEN -- Salgo. cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La comisión a copiar no existe'; RETURN NEXT cur_retorno; RETURN; -- Salgo END IF; _fecha_desde_doc = _fecha_desde; _fecha_hasta_doc = _fecha_hasta; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Esto es para el caso que se duplica una comision del mismo período lectivo. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF pComisionNombre IS NOT NULL THEN -- Se pasa un nuevo nombre de Comision. _nombre_comision := pComisionNombre; END IF; IF pPeriodoLectivoDestino IS NULL THEN -- Se asigna el mismo periodo lectivo que la comision original _periodo_lectivo_destino := _periodo_lectivo_origen; -- Para que copie la fecha desde y hasta de los docentes de la comision origen _fecha_desde_doc := NULL; _fecha_hasta_doc := NULL; _insc_habilitada := NULL; ELSE _periodo_lectivo_destino := pPeriodoLectivoDestino; END IF; -- Verifico que no exista una comision con el mismo nombre para la actividad y periodo lectivo destino. SELECT Count(*) INTO cnt FROM sga_comisiones WHERE elemento = _elemento AND periodo_lectivo = _periodo_lectivo_destino AND nombre = _nombre_comision; IF cnt > 0 THEN -- Salgo. cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La comisión ' || _nombre_comision || ' no se copió porque ya existe en el período lectivo destino'; RETURN NEXT cur_retorno; RETURN; END IF; -- Verifico si la catedra esta activa IF _catedra IS NOT NULL AND _estado_catedra <> 'A' THEN cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La cátedra ' || _nombre_catedra || ' de la comisión esta dada de baja'; RETURN NEXT cur_retorno; RETURN; END IF; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Inserto la comision -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_comisiones (nombre, periodo_lectivo, elemento, turno, catedra, ubicacion, letra_desde, letra_hasta, cupo, inscripcion_habilitada, visible_al_alumno) SELECT _nombre_comision, _periodo_lectivo_destino, elemento, turno, _catedra, ubicacion, letra_desde, letra_hasta, cupo, COALESCE(_insc_habilitada, _insc_habilitada_orig), visible_al_alumno FROM sga_comisiones WHERE comision = pComisionOrigen; -- Recupero el Serial de la comision comision_nueva := (SELECT currval('sga_comisiones_seq')); -- Seteo valores para retorno cur_retorno.comision := comision_nueva; cur_retorno.nombre_comision := _nombre_comision; -- Modalidad de Cursada. INSERT INTO sga_comisiones_modalidad (comision, modalidad) SELECT comision_nueva, modalidad FROM sga_comisiones_modalidad WHERE comision = pComisionOrigen; -- Propuestas y Planes de la comision INSERT INTO sga_comisiones_propuestas (comision, propuesta, plan) SELECT comision_nueva, propuesta, plan FROM sga_comisiones_propuestas WHERE comision = pComisionOrigen; -- Instancias de la comision INSERT INTO sga_comisiones_instancias (comision, instancia, escala_nota, porc_asistencia) SELECT comision_nueva, instancia, escala_nota, porc_asistencia FROM sga_comisiones_instancias WHERE comision = pComisionOrigen; -- Docentes de la comision FOR cur_docentes IN SELECT sga_docentes_comision.docente, sga_docentes_comision.responsabilidad, sga_docentes_comision.fecha_desde, sga_docentes_comision.fecha_hasta, sga_docentes.estado, '(' || sga_docentes.legajo || ') ' || mdp_personas.apellido || ' ' || mdp_personas.nombres as nombre_docente FROM sga_docentes_comision, sga_docentes, mdp_personas WHERE sga_docentes_comision.comision = pComisionOrigen AND sga_docentes.docente = sga_docentes_comision.docente AND mdp_personas.persona = sga_docentes.persona LOOP -- Si el docente esta dado de baja, entonces no copio el docente. IF cur_docentes.estado <> 'A' THEN cur_retorno.codigo_retorno = 2; _observaciones := COALESCE(_observaciones || ' - ', ''); _observaciones := _observaciones || 'El docente ' || cur_docentes.nombre_docente || ' no se copió porque esta dado de baja'; CONTINUE; END IF; INSERT INTO sga_docentes_comision (comision, docente, responsabilidad, fecha_desde, fecha_hasta) VALUES (comision_nueva, cur_docentes.docente, cur_docentes.responsabilidad, COALESCE(_fecha_desde_doc, cur_docentes.fecha_desde), COALESCE(_fecha_hasta_doc, cur_docentes.fecha_hasta) ); -- Docentes - Dedicacion horaria INSERT INTO sga_docentes_dedicacion_hs (comision, docente, tipo_dedicacion, cnt_horas) SELECT comision_nueva, ddh.docente, ddh.tipo_dedicacion, ddh.cnt_horas FROM sga_docentes_dedicacion_hs as ddh WHERE ddh.comision = pComisionOrigen AND ddh.docente = cur_docentes.docente; END LOOP; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SUBCOMISIONES -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF pCopiarSubcomisiones OR pCopiarSubcomisiones IS NULL THEN -- Recupero los elementos del Plan (modulos y actividades) FOR cur_subc IN SELECT subcomision, tipo_clase, nombre, letra_desde, letra_hasta, cupo FROM sga_subcomisiones WHERE comision = pComisionOrigen LOOP -- Genero la Subcomision INSERT INTO sga_subcomisiones (comision, tipo_clase, nombre, letra_desde, letra_hasta, cupo, inscripcion_habilitada) VALUES (comision_nueva, cur_subc.tipo_clase, cur_subc.nombre, cur_subc.letra_desde, cur_subc.letra_hasta, cur_subc.cupo, 'S'); -- Recupero el Serial de la subcomision subcomision_nueva := (SELECT currval('sga_subcomisiones_seq')); -- Docentes de la subcomision. Solo docentes Activos. INSERT INTO sga_docentes_subcomision (subcomision, docente, fecha_desde, fecha_hasta) SELECT subcomision_nueva, sga_docentes_subcomision.docente, _fecha_desde, _fecha_hasta FROM sga_docentes_subcomision, sga_docentes WHERE sga_docentes_subcomision.subcomision = cur_subc.subcomision AND sga_docentes.docente = sga_docentes_subcomision.docente AND sga_docentes.estado = 'A'; END LOOP; END IF; -- Subcomisiones -- Retorno datos de la comisión. RETURN NEXT cur_retorno; RETURN; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_copiar_comision +++++++++++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_copiar_comision (integer, integer, varchar, boolean) FROM public; GRANT EXECUTE ON FUNCTION f_copiar_comision (integer, integer, varchar, boolean) to public; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000132.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000133.sql -- +++++++++++++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_alcances -- Secuencia: men_alcances_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE men_alcances_seq; CREATE SEQUENCE men_alcances_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_dominio -- Secuencia: men_dominio_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE men_dominio_seq; CREATE SEQUENCE men_dominio_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- Secuencia: men_mensajes_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE men_mensajes_seq; CREATE SEQUENCE men_mensajes_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: rep_archivos -- Secuencia: rep_archivos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE rep_archivos_seq; CREATE SEQUENCE rep_archivos_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_alcances -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS men_alcances; CREATE TABLE men_alcances ( alcance INTEGER NOT NULL DEFAULT nextval('men_alcances_seq'::text) , nombre Varchar(100) NOT NULL, descripcion Varchar(250) ); -- ALTER TABLE men_alcances DROP CONSTRAINT pk_men_alcances; ALTER TABLE men_alcances ADD CONSTRAINT pk_men_alcances PRIMARY KEY (alcance); Revoke all ON men_alcances FROM public; -- ++++++++++++++++++++++++++ Fin tabla men_alcances +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_destinatarios -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS men_destinatarios; CREATE TABLE men_destinatarios ( mensaje Integer NOT NULL, persona Integer NOT NULL, fecha_lectura Timestamp with time zone ); -- ALTER TABLE men_destinatarios DROP CONSTRAINT pk_men_destinatarios; ALTER TABLE men_destinatarios ADD CONSTRAINT pk_men_destinatarios PRIMARY KEY (mensaje,persona); Revoke all ON men_destinatarios FROM public; -- ++++++++++++++++++++++++++ Fin tabla men_destinatarios +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_documentos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS men_documentos; CREATE TABLE men_documentos ( mensaje Integer NOT NULL, id_archivo Integer NOT NULL ); Revoke all ON men_documentos FROM public; -- ++++++++++++++++++++++++++ Fin tabla men_documentos +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_dominio -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS men_dominio; CREATE TABLE men_dominio ( dominio INTEGER NOT NULL DEFAULT nextval('men_dominio_seq'::text) , mensaje Integer NOT NULL, propuesta Integer, responsable_academica Integer, ubicacion Integer, grupo Integer, catedra Integer, comision Integer, llamado_mesa Integer ); -- ALTER TABLE men_dominio DROP CONSTRAINT pk_men_dominio; ALTER TABLE men_dominio ADD CONSTRAINT pk_men_dominio PRIMARY KEY (dominio); Revoke all ON men_dominio FROM public; -- ++++++++++++++++++++++++++ Fin tabla men_dominio +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS men_mensajes; CREATE TABLE men_mensajes ( mensaje INTEGER NOT NULL DEFAULT nextval('men_mensajes_seq'::text) , alcance Integer NOT NULL, titulo Varchar(100) NOT NULL, cuerpo Varchar(300) NOT NULL, fecha_desde Date NOT NULL, fecha_hasta Date NOT NULL, enviar_por_mail Smallint NOT NULL DEFAULT 0, enviar_por_twitter Smallint NOT NULL DEFAULT 0, activo Smallint NOT NULL DEFAULT 1, persona_alta Integer NOT NULL, fecha_alta Timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP ); -- ALTER TABLE men_mensajes DROP CONSTRAINT pk_men_mensajes; ALTER TABLE men_mensajes ADD CONSTRAINT pk_men_mensajes PRIMARY KEY (mensaje); Revoke all ON men_mensajes FROM public; -- ++++++++++++++++++++++++++ Fin tabla men_mensajes +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: rep_archivos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS rep_archivos; CREATE TABLE rep_archivos ( id_archivo INTEGER NOT NULL DEFAULT nextval('rep_archivos_seq'::text) , nombre_archivo Varchar(200) NOT NULL, path_archivo Varchar(200) NOT NULL, fecha_upload Timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, descripcion Varchar(255), tamanio_en_kb Integer, extension Varchar(10) ); -- ALTER TABLE rep_archivos DROP CONSTRAINT pk_rep_archivos; ALTER TABLE rep_archivos ADD CONSTRAINT pk_rep_archivos PRIMARY KEY (id_archivo); Revoke all ON rep_archivos FROM public; -- ++++++++++++++++++++++++++ Fin tabla rep_archivos +++++++++++++++++++++++++++++ GRANT select ON men_alcances TO public; GRANT update ON men_alcances TO public; GRANT delete ON men_alcances TO public; GRANT insert ON men_alcances TO public; GRANT select ON men_destinatarios TO public; GRANT update ON men_destinatarios TO public; GRANT delete ON men_destinatarios TO public; GRANT insert ON men_destinatarios TO public; GRANT select ON men_documentos TO public; GRANT update ON men_documentos TO public; GRANT delete ON men_documentos TO public; GRANT insert ON men_documentos TO public; GRANT select ON men_dominio TO public; GRANT update ON men_dominio TO public; GRANT delete ON men_dominio TO public; GRANT insert ON men_dominio TO public; GRANT select ON men_mensajes TO public; GRANT update ON men_mensajes TO public; GRANT delete ON men_mensajes TO public; GRANT insert ON men_mensajes TO public; GRANT select ON rep_archivos TO public; GRANT update ON rep_archivos TO public; GRANT delete ON rep_archivos TO public; GRANT insert ON rep_archivos TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- Check: ck_men_mensajes_activo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE men_mensajes DROP CONSTRAINT ck_men_mensajes_activo; ALTER TABLE men_mensajes ADD CONSTRAINT ck_men_mensajes_activo CHECK (activo IN (0, 1)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- Check: ck_men_mensajes_enviar_por_mail -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE men_mensajes DROP CONSTRAINT ck_men_mensajes_enviar_por_mail; ALTER TABLE men_mensajes ADD CONSTRAINT ck_men_mensajes_enviar_por_mail CHECK (enviar_por_mail IN (1,0)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- Check: ck_men_mensajes_enviar_por_twitter -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE men_mensajes DROP CONSTRAINT ck_men_mensajes_enviar_por_twitter; ALTER TABLE men_mensajes ADD CONSTRAINT ck_men_mensajes_enviar_por_twitter CHECK (enviar_por_twitter IN (1,0)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_destinatarios -- FK: fk_men_destinatarios_mdp_personas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_destinatarios_mdp_personas; CREATE INDEX ifk_men_destinatarios_mdp_personas ON men_destinatarios (persona); -- ALTER TABLE men_destinatarios DROP CONSTRAINT fk_men_destinatarios_mdp_personas; ALTER TABLE men_destinatarios ADD CONSTRAINT fk_men_destinatarios_mdp_personas FOREIGN KEY (persona) REFERENCES mdp_personas (persona) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_destinatarios -- FK: fk_men_destinatarios_men_mensajes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_destinatarios_men_mensajes; CREATE INDEX ifk_men_destinatarios_men_mensajes ON men_destinatarios (mensaje); -- ALTER TABLE men_destinatarios DROP CONSTRAINT fk_men_destinatarios_men_mensajes; ALTER TABLE men_destinatarios ADD CONSTRAINT fk_men_destinatarios_men_mensajes FOREIGN KEY (mensaje) REFERENCES men_mensajes (mensaje) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_documentos -- FK: fk_men_documentos_men_mensajes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_documentos_men_mensajes; CREATE INDEX ifk_men_documentos_men_mensajes ON men_documentos (mensaje); -- ALTER TABLE men_documentos DROP CONSTRAINT fk_men_documentos_men_mensajes; ALTER TABLE men_documentos ADD CONSTRAINT fk_men_documentos_men_mensajes FOREIGN KEY (mensaje) REFERENCES men_mensajes (mensaje) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_documentos -- FK: fk_men_documentos_rep_archivos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_documentos_rep_archivos; CREATE INDEX ifk_men_documentos_rep_archivos ON men_documentos (id_archivo); -- ALTER TABLE men_documentos DROP CONSTRAINT fk_men_documentos_rep_archivos; ALTER TABLE men_documentos ADD CONSTRAINT fk_men_documentos_rep_archivos FOREIGN KEY (id_archivo) REFERENCES rep_archivos (id_archivo) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_dominio -- FK: fk_men_dominio_men_grupos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_dominio_men_grupos; CREATE INDEX ifk_men_dominio_men_grupos ON men_dominio (grupo); -- ALTER TABLE men_dominio DROP CONSTRAINT fk_men_dominio_men_grupos; ALTER TABLE men_dominio ADD CONSTRAINT fk_men_dominio_men_grupos FOREIGN KEY (grupo) REFERENCES men_grupos (grupo) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_dominio -- FK: fk_men_dominio_men_mensajes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_dominio_men_mensajes; CREATE INDEX ifk_men_dominio_men_mensajes ON men_dominio (mensaje); -- ALTER TABLE men_dominio DROP CONSTRAINT fk_men_dominio_men_mensajes; ALTER TABLE men_dominio ADD CONSTRAINT fk_men_dominio_men_mensajes FOREIGN KEY (mensaje) REFERENCES men_mensajes (mensaje) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_dominio -- FK: fk_men_dominio_sga_catedras -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_dominio_sga_catedras; CREATE INDEX ifk_men_dominio_sga_catedras ON men_dominio (catedra); -- ALTER TABLE men_dominio DROP CONSTRAINT fk_men_dominio_sga_catedras; ALTER TABLE men_dominio ADD CONSTRAINT fk_men_dominio_sga_catedras FOREIGN KEY (catedra) REFERENCES sga_catedras (catedra) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_dominio -- FK: fk_men_dominio_sga_comisiones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_dominio_sga_comisiones; CREATE INDEX ifk_men_dominio_sga_comisiones ON men_dominio (comision); -- ALTER TABLE men_dominio DROP CONSTRAINT fk_men_dominio_sga_comisiones; ALTER TABLE men_dominio ADD CONSTRAINT fk_men_dominio_sga_comisiones FOREIGN KEY (comision) REFERENCES sga_comisiones (comision) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_dominio -- FK: fk_men_dominio_sga_llamados_mesa -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_dominio_sga_llamados_mesa; CREATE INDEX ifk_men_dominio_sga_llamados_mesa ON men_dominio (llamado_mesa); -- ALTER TABLE men_dominio DROP CONSTRAINT fk_men_dominio_sga_llamados_mesa; ALTER TABLE men_dominio ADD CONSTRAINT fk_men_dominio_sga_llamados_mesa FOREIGN KEY (llamado_mesa) REFERENCES sga_llamados_mesa (llamado_mesa) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_dominio -- FK: fk_men_dominio_sga_propuestas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_dominio_sga_propuestas; CREATE INDEX ifk_men_dominio_sga_propuestas ON men_dominio (propuesta); -- ALTER TABLE men_dominio DROP CONSTRAINT fk_men_dominio_sga_propuestas; ALTER TABLE men_dominio ADD CONSTRAINT fk_men_dominio_sga_propuestas FOREIGN KEY (propuesta) REFERENCES sga_propuestas (propuesta) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_dominio -- FK: fk_men_dominio_sga_responsables_academicas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_dominio_sga_responsables_academicas; CREATE INDEX ifk_men_dominio_sga_responsables_academicas ON men_dominio (responsable_academica); -- ALTER TABLE men_dominio DROP CONSTRAINT fk_men_dominio_sga_responsables_academicas; ALTER TABLE men_dominio ADD CONSTRAINT fk_men_dominio_sga_responsables_academicas FOREIGN KEY (responsable_academica) REFERENCES sga_responsables_academicas (responsable_academica) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_dominio -- FK: fk_men_dominio_sga_ubicaciones -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_dominio_sga_ubicaciones; CREATE INDEX ifk_men_dominio_sga_ubicaciones ON men_dominio (ubicacion); -- ALTER TABLE men_dominio DROP CONSTRAINT fk_men_dominio_sga_ubicaciones; ALTER TABLE men_dominio ADD CONSTRAINT fk_men_dominio_sga_ubicaciones FOREIGN KEY (ubicacion) REFERENCES sga_ubicaciones (ubicacion) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- FK: fk_men_mensajes_mdp_personas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_mensajes_mdp_personas; CREATE INDEX ifk_men_mensajes_mdp_personas ON men_mensajes (persona_alta); -- ALTER TABLE men_mensajes DROP CONSTRAINT fk_men_mensajes_mdp_personas; ALTER TABLE men_mensajes ADD CONSTRAINT fk_men_mensajes_mdp_personas FOREIGN KEY (persona_alta) REFERENCES mdp_personas (persona) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- FK: fk_men_mensajes_men_alcances -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_mensajes_men_alcances; CREATE INDEX ifk_men_mensajes_men_alcances ON men_mensajes (alcance); -- ALTER TABLE men_mensajes DROP CONSTRAINT fk_men_mensajes_men_alcances; ALTER TABLE men_mensajes ADD CONSTRAINT fk_men_mensajes_men_alcances FOREIGN KEY (alcance) REFERENCES men_alcances (alcance) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_alcances -- Actualizacion Nro de Secuencia: men_alcances_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('men_alcances_seq',(SELECT MAX(alcance) FROM men_alcances)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_dominio -- Actualizacion Nro de Secuencia: men_dominio_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('men_dominio_seq',(SELECT MAX(dominio) FROM men_dominio)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- Actualizacion Nro de Secuencia: men_mensajes_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('men_mensajes_seq',(SELECT MAX(mensaje) FROM men_mensajes)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: rep_archivos -- Actualizacion Nro de Secuencia: rep_archivos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('rep_archivos_seq',(SELECT MAX(id_archivo) FROM rep_archivos)); -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000133.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000134.sql -- +++++++++++++++++++++++++++++++++++++++ DROP INDEX ifk_mdp_celulares_dominio_mdp_celulares_companias; ALTER TABLE mdp_celulares_dominios DROP CONSTRAINT fk_mdp_celulares_dominio_mdp_celulares_companias; DROP INDEX ifk_sga_escalas_notas_det_sga_escala_notas; ALTER TABLE sga_escalas_notas_det DROP CONSTRAINT fk_sga_escalas_notas_det_sga_escala_notas; DROP INDEX ifk_sga_eval_detalle_cursadas_sga_escalas_notas_resultado; ALTER TABLE sga_eval_detalle_cursadas DROP CONSTRAINT fk_sga_eval_detalle_cursadas_sga_escalas_notas_resultado; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000134.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000135.sql -- +++++++++++++++++++++++++++++++++++++++ INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('facebook_clave', 'Clave de la cuenta de Facebook de la institución', 'L', 'S', 1, '12345', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('facebook_cuenta', 'Cuenta de facebook de la institución', 'L', 'S', 1, 'cuenta_facebook', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('facebook_usuario', 'Usuario de la cuenta de facebook de la institución', 'L', 'S', 1, 'guarani_facebook', NULL, NULL, NULL ); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: men_alcance -- Alcance de los mensajes -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Datos de los diferentes alcances de un mensaje. INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 1, 'Todos los alumnos y docentes','Todos los alumno y docentes de la Institución'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 2, 'Todos los alumnos','Todos los alumnos de la Institución'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 3, 'Alumnos de una ubicación','Todos los alumnos de una o varias ubicaciones'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 4, 'Alumnos de una propuesta','Todos los alumnos de una o varias propuestas'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 5, 'Alumno o grupo de alumnos','Un alumno o grupo de alumnos'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 6, 'Alumnos ingresantes','Todos los alumnos ingresantes en un año académico de una o varias propuestas'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 7, 'Alumnos de una comisión','Todos los alumnos inscriptos en una comisión'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 8, 'Alumnos de una mesa de examen','Todos los alumnos inscriptos en una mesa de examen'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 9, 'Todos los docentes','Todos los docentes de la Institución'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (10, 'Docente o grupo de docentes','A uno o mas docentes'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (11, 'Docentes de una mesa de examen','Todos los docentes asociados a una mesa de examen'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (12, 'Docentes de una comisión','Todos los docentes asociados a una comisión'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (13, 'Docentes de una cátedra','Todos los docentes de una o varias cátedras'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (14, 'Grupo de Destinatarios','Grupo de destinatarios ad-hoc'); -- Parametros INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('twitter_clave', 'Clave de la cuenta de twitter de la institución', 'L', 'S', 2, '12345', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('twitter_cuenta', 'Cuenta de twitter de la institución', 'L', 'S', 1, '@cuentatwitter', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('twitter_usuario', 'Usuario de la cuenta de twitter de la institución', 'L', 'S', 2, '@guarani_twitter', NULL, NULL, NULL ); -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000135.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000136.sql -- +++++++++++++++++++++++++++++++++++++++ -- Campos que no estan en la tabla sga_insc_examen_log, his_insc_examen_log y vista vw_insc_examen_log ALTER TABLE sga_insc_examen_log ADD fuera_de_termino Char(1) NOT NULL DEFAULT 'N'; ALTER TABLE sga_insc_examen_log ADD autorizado_por Varchar(100); ALTER TABLE sga_insc_examen_log ADD motivo_excepcion Integer; ALTER TABLE his_insc_examen_log ADD fuera_de_termino Char(1) NOT NULL DEFAULT 'N'; ALTER TABLE his_insc_examen_log ADD autorizado_por Varchar(100); ALTER TABLE his_insc_examen_log ADD motivo_excepcion Integer; -- Campos que no estan en la tabla sga_insc_cursada_log, his_insc_cursada_log y vista vw_insc_cursada_log ALTER TABLE sga_insc_cursada_log ADD tipo Char(1) NOT NULL DEFAULT 'I'; ALTER TABLE sga_insc_cursada_log ADD estado_preinscripcion Char(1) NOT NULL DEFAULT 'P'; ALTER TABLE sga_insc_cursada_log ADD autorizado_por Varchar(100); ALTER TABLE sga_insc_cursada_log ADD motivo_excepcion Integer; ALTER TABLE his_insc_cursada_log ADD tipo Char(1) NOT NULL DEFAULT 'I'; ALTER TABLE his_insc_cursada_log ADD estado_preinscripcion Char(1) NOT NULL DEFAULT 'P'; ALTER TABLE his_insc_cursada_log ADD autorizado_por Varchar(100); ALTER TABLE his_insc_cursada_log ADD motivo_excepcion Integer; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: men_alcances -- Alcance de los mensajes -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DELETE FROM men_alcances; INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 1, 'Todos los alumnos y docentes','Todos los alumno y docentes de la Institución'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 2, 'Todos los alumnos','Todos los alumnos de la Institución'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 3, 'Alumnos de Responsables Académicas','Todos los alumnos de una o varias ubicaciones'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 4, 'Alumnos de una o varias ubicaciones','Todos los alumnos de una o varias ubicaciones'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 5, 'Alumnos de una o varias propuestas','Todos los alumnos de una o varias propuestas'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 6, 'Alumno o grupo de alumnos','Un alumno o grupo de alumnos'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 7, 'Alumnos ingresantes','Todos los alumnos ingresantes en un año académico de una o varias propuestas'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 8, 'Alumnos de una comisión','Todos los alumnos inscriptos en una comisión'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 9, 'Alumnos de una mesa de examen','Todos los alumnos inscriptos en una mesa de examen'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (10, 'Todos los docentes','Todos los docentes de la Institución'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (11, 'Docente o grupo de docentes','A uno o mas docentes'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (12, 'Docentes de una mesa de examen','Todos los docentes asociados a una mesa de examen'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (13, 'Docentes de una comisión','Todos los docentes asociados a una comisión'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (14, 'Docentes de una cátedra','Todos los docentes de una o varias cátedras'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (15, 'Grupo de Destinatarios','Grupo de destinatarios ad-hoc'); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_insc_cursada_log -- Version: 3.0.0 -- Inscripciones a cursadas de bajas y rechazos. -- Recupera inscripciones de la tabla real y la histórica -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW vw_insc_cursada_log; CREATE OR REPLACE VIEW vw_insc_cursada_log ( inscripcion, comision, alumno, tipo, prioridad, estado_preinscripcion, plan_version, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado, motivo_rechazo, operacion, fecha_operacion, nro_transaccion_log ) AS SELECT inscripcion, comision, alumno, tipo, prioridad, estado_preinscripcion, plan_version, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado, motivo_rechazo, operacion, fecha_operacion, nro_transaccion_log FROM sga_insc_cursada_log UNION ALL SELECT inscripcion, comision, alumno, tipo, prioridad, estado_preinscripcion, plan_version, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado, motivo_rechazo, operacion, fecha_operacion, nro_transaccion_log FROM his_insc_cursada_log ; -- ++++++++++++++++++++++++++++++ Fin view vw_insc_cursada +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_insc_cursada_log to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_insc_examen_log -- Version: 3.0.0 -- Inscripciones a examenes (bajas y rechazos). -- Recupera inscripciones de la tabla real y la histórica -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW vw_insc_examen_log; CREATE OR REPLACE VIEW vw_insc_examen_log ( inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado, motivo_rechazo, operacion, fecha_operacion, nro_transaccion_log ) AS SELECT inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado, motivo_rechazo, operacion, fecha_operacion, nro_transaccion_log FROM sga_insc_examen_log UNION ALL SELECT inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado, motivo_rechazo, operacion, fecha_operacion, nro_transaccion_log FROM his_insc_examen_log ; -- ++++++++++++++++++++++++++++++ Fin view vw_insc_examen_log +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_insc_examen_log to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_comprobantes -- Version: 3.0.0 -- Recupera registros de: -- * Inscripciones a Examenes -- * Bajas de Inscripciones a Examenes -- * Inscripciones a Cursadas -- * Bajas de Inscripciones a Cursadas -- * Inscripciones a Propuestas -- * Reinscripciones a Propuestas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW vw_comprobantes; CREATE OR REPLACE VIEW vw_comprobantes ( tipo, descripcion, alumno, inscripcion, fecha, nro_transaccion, propuesta, anio_academico, periodo_lectivo_turno, actividad_codigo, actividad_nombre, ubicacion, estado ) AS SELECT cast('IE' as varchar(3)), cast('Insc. a Examen' as varchar(30)), vw_insc_examen.alumno, vw_insc_examen.inscripcion, vw_insc_examen.fecha_inscripcion, vw_insc_examen.nro_transaccion, cast(null as integer) as propuesta, vw_mesas_examen.turno_examen_anio_academico as anio_academico, vw_mesas_examen.turno_examen_nombre as periodo_lectivo_turno, sga_elementos.codigo, sga_elementos.nombre, vw_mesas_examen.mesa_examen_ubicacion, vw_insc_examen.estado FROM vw_insc_examen, vw_mesas_examen, sga_elementos WHERE vw_mesas_examen.llamado_mesa = vw_insc_examen.llamado_mesa AND sga_elementos.elemento = vw_mesas_examen.mesa_examen_elemento UNION ALL SELECT cast('BIE' as varchar(3)), cast('Baja Insc. a Examen' as varchar(30)), vw_insc_examen_log.alumno, vw_insc_examen_log.inscripcion, vw_insc_examen_log.fecha_operacion, vw_insc_examen_log.nro_transaccion_log, cast(null as integer) as propuesta, vw_mesas_examen.turno_examen_anio_academico as anio_academico, cast(vw_mesas_examen.turno_examen_nombre as varchar(100)) as periodo_lectivo_turno, sga_elementos.codigo, sga_elementos.nombre, vw_mesas_examen.mesa_examen_ubicacion, vw_insc_examen_log.estado FROM vw_insc_examen_log, vw_mesas_examen, sga_elementos WHERE vw_insc_examen_log.operacion = 'B' AND vw_mesas_examen.llamado_mesa = vw_insc_examen_log.llamado_mesa AND sga_elementos.elemento = vw_mesas_examen.mesa_examen_elemento UNION ALL SELECT cast('IC' as varchar(3)), cast('Insc. a Actividad' as varchar(30)), vw_insc_cursada.alumno, vw_insc_cursada.inscripcion, vw_insc_cursada.fecha_inscripcion, vw_insc_cursada.nro_transaccion, sga_alumnos.propuesta as propuesta, vw_periodos_lectivos.anio_academico, vw_periodos_lectivos.nombre as periodo_lectivo_turno, sga_elementos.codigo, sga_elementos.nombre, sga_comisiones.ubicacion, vw_insc_cursada.estado FROM vw_insc_cursada, sga_alumnos, sga_comisiones, vw_periodos_lectivos, sga_elementos WHERE sga_comisiones.comision = vw_insc_cursada.comision AND sga_alumnos.alumno = vw_insc_cursada.alumno AND vw_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_elementos.elemento = sga_comisiones.elemento UNION ALL SELECT 'BIC', cast('Baja Insc. a Activididad' as varchar(30)), vw_insc_cursada_log.alumno, vw_insc_cursada_log.inscripcion, vw_insc_cursada_log.fecha_operacion, vw_insc_cursada_log.nro_transaccion_log, cast(null as integer) as propuesta, vw_periodos_lectivos.anio_academico, vw_periodos_lectivos.nombre as periodo_lectivo_turno, sga_elementos.codigo, sga_elementos.nombre, sga_comisiones.ubicacion, vw_insc_cursada_log.estado FROM vw_insc_cursada_log, sga_comisiones, vw_periodos_lectivos, sga_elementos WHERE vw_insc_cursada_log.operacion = 'B' AND sga_comisiones.comision = vw_insc_cursada_log.comision AND vw_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_elementos.elemento = sga_comisiones.elemento UNION ALL SELECT cast('IP' as varchar(3)), cast('Inscripción a Propuesta' as varchar(30)), sga_alumnos.alumno, sga_propuestas_aspira.propuesta_aspira, sga_propuestas_aspira.fecha_inscripcion, sga_propuestas_aspira.nro_transaccion, sga_propuestas_aspira.propuesta, sga_propuestas_aspira.anio_academico, cast(null as varchar(100)) as periodo_lectivo_turno, cast(null as varchar(10)) as actividad_codigo, cast(null as varchar(255)) as actividad_nombre, sga_propuestas_aspira.ubicacion, sga_situacion_aspirante.resultado_asp FROM sga_propuestas_aspira, sga_alumnos, sga_situacion_aspirante WHERE sga_alumnos.persona = sga_propuestas_aspira.persona AND sga_alumnos.propuesta = sga_propuestas_aspira.propuesta AND sga_situacion_aspirante.situacion_asp = sga_propuestas_aspira.situacion_asp AND sga_situacion_aspirante.resultado_asp IN ('A','P') UNION ALL SELECT cast('RP' as varchar(3)), cast('Reinscripción a Propuesta' as varchar(30)), sga_reinscripciones.alumno, sga_reinscripciones.reinscripcion, sga_reinscripciones.fecha_reinscripcion, sga_reinscripciones.nro_transaccion, sga_alumnos.propuesta, sga_reinscripciones.anio_academico, cast(null as varchar(100)) as periodo_lectivo_turno, cast(null as varchar(10)) as actividad_codigo, cast(null as varchar(255)) as actividad_nombre, sga_alumnos.ubicacion, cast(null as char(1)) as estado FROM sga_reinscripciones, sga_alumnos WHERE sga_reinscripciones.alumno = sga_alumnos.alumno ; -- ++++++++++++++++++++++++++++++ Fin view vw_comprobantes +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_comprobantes to public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_pasar_inscripciones_a_historico -- -- Pasa inscripciones a examenes y cursadas a tablas historicas. -- Solo permite pasar inscripciones de años academicos anteriores -- -- Recibe: -- 1.- Integer: Año académico -- 2.- Integer: Pasar inscripciones a cursadas (Valores: 1-Pasar / 0-No pasar) -- 2.- Integer: Pasar inscripciones a examenes (Valores: 1-Pasar / 0-No pasar) -- -- Retorna: Integer: -1 - No paso inscripciones. Año académico no válido / 1 - Paso inscripciones. -- -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_pasar_inscripciones_a_historico(integer, integer, integer); CREATE OR REPLACE FUNCTION f_pasar_inscripciones_a_historico(_anio_academico integer, _cursadas integer, _examenes integer) RETURNS INTEGER AS $BODY$ DECLARE _anio_actual integer; BEGIN --Verifico que el año académico sea un año anterior al actual _anio_actual := f_anio_academico_actual(); IF _anio_academico >= _anio_actual THEN -- El año académico debe ser menor al año académico actual. RETURN -1; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- INSCRIPCIONES A EXAMENES -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF _examenes = 1 THEN -- Deshabilito triggers para que no actuen sobre las tablas de evaluaciones ALTER TABLE sga_insc_examen DISABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log DISABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log_requisitos DISABLE TRIGGER ALL; ALTER TABLE his_insc_examen DISABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log DISABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log_requisitos DISABLE TRIGGER ALL; -- Inscripciones aceptadas/pendientes/exceptuadas INSERT INTO his_insc_examen (inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado) SELECT i.inscripcion, i.alumno, i.llamado_mesa, i.plan_version, i.instancia, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.exceptuado, i.interfaz, i.estado FROM sga_insc_examen as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.llamado_mesa = llm.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- Requisitos que fallaron en los rechazos de inscripciones a examenes INSERT INTO his_insc_examen_log_requisitos (inscripcion_requisito, inscripcion, tipo, entidad, requisito, estado, regla, parametros) SELECT a.inscripcion_requisito, a.inscripcion, a.tipo, a.entidad, a.requisito, a.estado, a.regla, a.parametros FROM sga_insc_examen_log_requisitos as a, sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.inscripcion = a.inscripcion AND llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- inscripciones dadas de baja o rechazadas INSERT INTO his_insc_examen_log (inscripcion, alumno, llamado_mesa, plan_version, instancia, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado, motivo_rechazo, operacion, fecha_operacion, nro_transaccion_log) SELECT i.inscripcion, i.alumno, i.llamado_mesa, i.plan_version, i.instancia, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.exceptuado, i.interfaz, i.estado, i.motivo_rechazo, i.operacion, i.fecha_operacion, i.nro_transaccion_log FROM sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico; -- Borro todos los registros de las tablas originales DELETE FROM sga_insc_examen_log_requisitos WHERE inscripcion_requisito IN ( SELECT h.inscripcion_requisito FROM his_insc_examen_log_requisitos as h, sga_insc_examen_log as i, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE i.inscripcion = h.inscripcion AND llm.llamado_mesa = i.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_examen_log WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_examen_log as h, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE llm.llamado_mesa = h.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_examen WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_examen as h, sga_llamados_mesa as llm, sga_llamados_turno as ll, sga_periodos as p WHERE h.llamado_mesa = llm.llamado_mesa AND ll.llamado = llm.llamado AND ll.periodo = p.periodo AND p.anio_academico = _anio_academico); -- Habilito nuevamente los triggers ALTER TABLE sga_insc_examen ENABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log ENABLE TRIGGER ALL; ALTER TABLE sga_insc_examen_log_requisitos ENABLE TRIGGER ALL; ALTER TABLE his_insc_examen ENABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log ENABLE TRIGGER ALL; ALTER TABLE his_insc_examen_log_requisitos ENABLE TRIGGER ALL; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- INSCRIPCIONES A CURSADAS -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF _cursadas = 1 THEN -- Deshabilito triggers para que no actuen sobre las tablas de evaluaciones ALTER TABLE sga_insc_cursada DISABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_instancias DISABLE TRIGGER ALL; ALTER TABLE sga_insc_subcomision DISABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log DISABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log_requisitos DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_instancias DISABLE TRIGGER ALL; ALTER TABLE his_insc_subcomision DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log DISABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log_requisitos DISABLE TRIGGER ALL; -- Inscripciones a cursadas INSERT INTO his_insc_cursada (inscripcion, comision, alumno, tipo, prioridad, estado_preinscripcion, plan_version, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado) SELECT i.inscripcion, i.comision, i.alumno, i.tipo, i.prioridad, i.estado_preinscripcion, i.plan_version, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.exceptuado, i.interfaz, i.estado FROM sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Inscripcion a subcomisiones INSERT INTO his_insc_subcomision (inscripcion, subcomision) SELECT s.inscripcion, s.subcomision FROM sga_insc_subcomision as s, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE s.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Instancias de la inscripcion INSERT INTO his_insc_cursada_instancias (inscripcion, instancia) SELECT s.inscripcion, s.instancia FROM sga_insc_cursada_instancias as s, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE s.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Requisitos relacionados con los rechazos de Inscripciones INSERT INTO his_insc_cursada_log_requisitos (inscripcion_requisito, inscripcion, tipo, entidad, requisito, estado, regla, parametros) SELECT r.inscripcion_requisito, r.inscripcion, r.tipo, r.entidad, r.requisito, r.estado, r.regla, r.parametros FROM sga_insc_cursada_log_requisitos as r, sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.inscripcion = r.inscripcion AND c.comision = i.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Bajas y Rechazos de Inscripciones INSERT INTO his_insc_cursada_log (inscripcion, alumno, comision, plan_version, tipo, prioridad, estado_preinscripcion, fecha_inscripcion, fuera_de_termino, autorizado_por, nro_transaccion, motivo_excepcion, exceptuado, interfaz, estado, motivo_rechazo, operacion, fecha_operacion, nro_transaccion_log) SELECT i.inscripcion, i.alumno, i.comision, i.plan_version, i.tipo, i.prioridad, i.estado_preinscripcion, i.fecha_inscripcion, i.fuera_de_termino, i.autorizado_por, i.nro_transaccion, i.motivo_excepcion, i.exceptuado, i.interfaz, i.estado, i.motivo_rechazo, i.operacion, i.fecha_operacion, i.nro_transaccion_log FROM sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico; -- Borro registros de las tablas de inscripciones DELETE FROM sga_insc_subcomision WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_subcomision as h, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE h.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_instancias WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada_instancias as h, sga_insc_cursada as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE h.inscripcion = i.inscripcion AND i.comision = c.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_log_requisitos WHERE inscripcion_requisito IN ( SELECT h.inscripcion_requisito FROM his_insc_cursada_log_requisitos as h, sga_insc_cursada_log as i, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE i.inscripcion = h.inscripcion AND c.comision = i.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada_log WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada_log as h, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE c.comision = h.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); DELETE FROM sga_insc_cursada WHERE inscripcion IN ( SELECT h.inscripcion FROM his_insc_cursada as h, sga_comisiones as c, sga_periodos_lectivos as pl, sga_periodos as p WHERE c.comision = h.comision AND pl.periodo_lectivo = c.periodo_lectivo AND p.periodo = pl.periodo AND p.anio_academico = _anio_academico); -- Habilito triggers ALTER TABLE sga_insc_cursada ENABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_instancias ENABLE TRIGGER ALL; ALTER TABLE sga_insc_subcomision ENABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log ENABLE TRIGGER ALL; ALTER TABLE sga_insc_cursada_log_requisitos ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_instancias ENABLE TRIGGER ALL; ALTER TABLE his_insc_subcomision ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log ENABLE TRIGGER ALL; ALTER TABLE his_insc_cursada_log_requisitos ENABLE TRIGGER ALL; END IF; -- OK. Inscripciones pasadas. RETURN 1; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- REVOKE EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico FROM public; GRANT EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico(integer, integer, integer) TO public; -- ++++++++++++++++++++++++++ Fin Function f_pasar_inscripciones_a_historico +++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000136.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000136.sql -- +++++++++++++++++++++++++++++++++++++++ -- Se setea el campo cantidad_horas_dictadas de sga_clases como "NOT NULL DEFAULT 1" y se actualizan los valores de los registros existentes ALTER TABLE sga_clases ALTER COLUMN cantidad_horas_dictadas SET DEFAULT 1; UPDATE sga_clases SET cantidad_horas_dictadas = 1 WHERE cantidad_horas_dictadas IS NULL; ALTER TABLE sga_clases ALTER COLUMN cantidad_horas_dictadas SET NOT NULL; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_generar_asistencia -- -- Genera la asistencia en la tabla sga_clases_asistencia de cada alumno inscripto en la comision para la clase seleccionada -- Se utiliza el parámetro del sistema 'asist_estado_default_asistencia' para definir con que estado por default se registran -- a los alumnos en la clase. -- -- Recibe: f_generar_asistencia(integer) -- 1. Clase -- -- Retorna: -- 0 si no se insertaron registros en la clase que registra las asistencia de Alumnos en la clase -- 1 si se insertaron los registros correspondientes en la clase que registra las asistencia de Alumnos en la clase -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE OR REPLACE FUNCTION f_generar_asistencia(pClase Integer) RETURNS integer AS $BODY$ DECLARE _cant_alumnos Integer; _comision Integer; _bh Integer; k smallint; _cant_horas_inasis Decimal(5,2); _cant_horas_clase Decimal(5,2); _estado_default varchar(255); BEGIN _cant_horas_inasis := 0; _cant_horas_clase := 0; k := 0; SELECT COUNT(*) INTO k FROM sga_clases_asistencia WHERE clase = pClase; IF k > 0 THEN -- Si ya hay registros de alumnos para la clase, entonces salgo. RETURN 0; END IF; -- Recupero la cantidad de horas de la clase para registrar la cantidad de inasistencias ya que -- por defecto a los alumnos los seteo como Ausentes en la Clase. SELECT sga_clases.cantidad_horas_dictadas, sga_clases.banda_horaria, sga_comisiones_bh.comision INTO _cant_horas_clase, _bh, _comision FROM sga_clases, sga_comisiones_bh WHERE sga_clases.clase = pClase AND sga_comisiones_bh.banda_horaria = sga_clases.banda_horaria; _cant_horas_inasis := _cant_horas_clase; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recupero el valor del parámetro -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT valor_default INTO _estado_default FROM par_parametros_sistema WHERE parametro = 'asist_estado_default_asistencia'; IF _estado_default = 'Presente' THEN _cant_horas_inasis := 0; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Inserto los alumnos inscriptos en la comision que no tengan registro en la clase -- Si hay subcomisiones, solo debo recuperar los alumnos que pertenecen a la subcomision -- a la que pertenece la clase -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT count(*) INTO k FROM sga_subcomisiones WHERE comision = _comision; IF k > 0 THEN -- Hay subcomisiones. Solo selecciono inscriptos a la subcomision (de la comision) -- relacionada con la clase INSERT INTO sga_clases_asistencia (clase, alumno, cant_inasistencias) SELECT pClase, vw_insc_cursada.alumno, _cant_horas_inasis FROM sga_subcomisiones_bh, vw_insc_subcomision, vw_insc_cursada WHERE sga_subcomisiones_bh.banda_horaria = _bh AND vw_insc_cursada.comision = _comision AND vw_insc_subcomision.inscripcion = vw_insc_cursada.inscripcion AND vw_insc_subcomision.subcomision = sga_subcomisiones_bh.subcomision; ELSE -- No hay subcomisiones. Inserto todos los alumnos inscriptos en la comision. INSERT INTO sga_clases_asistencia (clase, alumno, cant_inasistencias) SELECT pClase, vw_insc_cursada.alumno, _cant_horas_inasis FROM vw_insc_cursada WHERE vw_insc_cursada.comision = _comision; END IF; /* -- Los seteo como ausentes a los alumnos que ya estan LIBRES en la comision -- Hay problema con esto ya que la condición de libre se actualiza por trigger -- cuando se registra la inasistencia. UPDATE sga_clases_asistencia SET cant_inasistencias = _cant_horas_inasis WHERE clase = pClase AND alumno IN (SELECT alumno FROM sga_clases_asistencia_acum WHERE comision = pComision AND libre = 1); */ -- Se insertaron registros en la tabla de asistencia de alumnos RETURN 1; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_generar_asistencia ++++++++++++++++ GRANT EXECUTE ON FUNCTION f_generar_asistencia (integer) to public; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000136.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000138.sql -- +++++++++++++++++++++++++++++++++++++++ ALTER TABLE men_dominio ADD COLUMN plan Integer; DROP INDEX ifk_men_destinatarios_men_mensajes; ALTER TABLE men_destinatarios DROP CONSTRAINT fk_men_destinatarios_men_mensajes; DROP INDEX ifk_men_documentos_men_mensajes; ALTER TABLE men_documentos DROP CONSTRAINT fk_men_documentos_men_mensajes; DROP INDEX ifk_men_dominio_men_mensajes; ALTER TABLE men_dominio DROP CONSTRAINT fk_men_dominio_men_mensajes; DROP INDEX ifk_men_mensajes_mdp_personas; ALTER TABLE men_mensajes DROP CONSTRAINT fk_men_mensajes_mdp_personas; DROP INDEX ifk_men_mensajes_men_alcances; ALTER TABLE men_mensajes DROP CONSTRAINT fk_men_mensajes_men_alcances; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP TABLE IF EXISTS men_mensajes; CREATE TABLE men_mensajes ( mensaje INTEGER NOT NULL DEFAULT nextval('men_mensajes_seq'::text) , alcance Integer NOT NULL, titulo Varchar(100) NOT NULL, cuerpo Varchar(300) NOT NULL, fecha_desde Date NOT NULL, fecha_hasta Date NOT NULL, enviar_por_mail Smallint NOT NULL DEFAULT 0, enviar_por_twitter Smallint NOT NULL DEFAULT 0, enviar_por_facebook Smallint NOT NULL DEFAULT 0, activo Smallint NOT NULL DEFAULT 1, persona_alta Integer NOT NULL, fecha_alta Timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP ); -- ALTER TABLE men_mensajes DROP CONSTRAINT pk_men_mensajes; ALTER TABLE men_mensajes ADD CONSTRAINT pk_men_mensajes PRIMARY KEY (mensaje); Revoke all ON men_mensajes FROM public; -- ++++++++++++++++++++++++++ Fin tabla men_mensajes +++++++++++++++++++++++++++++ GRANT select ON men_mensajes TO public; GRANT update ON men_mensajes TO public; GRANT delete ON men_mensajes TO public; GRANT insert ON men_mensajes TO public; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: men_alcances -- Alcance de los mensajes -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DELETE FROM men_alcances; INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 1, 'Todos los alumnos y docentes','Todos los alumno y docentes de la Institución'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 2, 'Todos los alumnos','Todos los alumnos de la Institución'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 3, 'Alumnos de Responsables Académicas','Todos los alumnos de una o varias ubicaciones'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 4, 'Alumnos de Ubicaciones','Todos los alumnos de una o varias ubicaciones'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 5, 'Alumnos de Propuestas','Todos los alumnos de una o varias propuestas'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 6, 'Alumnos de Propuestas y Planes de Estudio','Todos los alumnos de una o varias propuestas y planes de estudios'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 7, 'Alumnos de Propuestas, Planes de Estudios y Ubicaciones','Todos los alumnos de propuestas + planes + ubicaciones'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 8, 'Alumno o grupo de alumnos','Un alumno o grupo de alumnos'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES ( 9, 'Alumnos ingresantes','Todos los alumnos ingresantes en el año académico actual de una o varias propuestas'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (10, 'Alumnos de una comisión','Todos los alumnos inscriptos en una comisión'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (11, 'Alumnos de una mesa de examen','Todos los alumnos inscriptos en una mesa de examen'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (12, 'Todos los docentes','Todos los docentes de la Institución'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (13, 'Docente o grupo de docentes','A uno o mas docentes'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (14, 'Docentes de una mesa de examen','Todos los docentes asociados a una mesa de examen'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (15, 'Docentes de una comisión','Todos los docentes asociados a una comisión'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (16, 'Docentes de una cátedra','Todos los docentes de una o varias cátedras'); INSERT INTO men_alcances (alcance, nombre, descripcion) VALUES (17, 'Grupo de Destinatarios','Grupo de destinatarios ad-hoc'); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- Check: ck_men_mensajes_activo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE men_mensajes DROP CONSTRAINT ck_men_mensajes_activo; ALTER TABLE men_mensajes ADD CONSTRAINT ck_men_mensajes_activo CHECK (activo IN (0, 1)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- Check: ck_men_mensajes_enviar_por_facebook -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE men_mensajes DROP CONSTRAINT ck_men_mensajes_enviar_por_facebook; ALTER TABLE men_mensajes ADD CONSTRAINT ck_men_mensajes_enviar_por_facebook CHECK (enviar_por_facebook IN (1,0)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- Check: ck_men_mensajes_enviar_por_mail -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE men_mensajes DROP CONSTRAINT ck_men_mensajes_enviar_por_mail; ALTER TABLE men_mensajes ADD CONSTRAINT ck_men_mensajes_enviar_por_mail CHECK (enviar_por_mail IN (1,0)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- Check: ck_men_mensajes_enviar_por_twitter -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE men_mensajes DROP CONSTRAINT ck_men_mensajes_enviar_por_twitter; ALTER TABLE men_mensajes ADD CONSTRAINT ck_men_mensajes_enviar_por_twitter CHECK (enviar_por_twitter IN (1,0)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_destinatarios -- FK: fk_men_destinatarios_men_mensajes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_destinatarios_men_mensajes; CREATE INDEX ifk_men_destinatarios_men_mensajes ON men_destinatarios (mensaje); -- ALTER TABLE men_destinatarios DROP CONSTRAINT fk_men_destinatarios_men_mensajes; ALTER TABLE men_destinatarios ADD CONSTRAINT fk_men_destinatarios_men_mensajes FOREIGN KEY (mensaje) REFERENCES men_mensajes (mensaje) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_documentos -- FK: fk_men_documentos_men_mensajes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_documentos_men_mensajes; CREATE INDEX ifk_men_documentos_men_mensajes ON men_documentos (mensaje); -- ALTER TABLE men_documentos DROP CONSTRAINT fk_men_documentos_men_mensajes; ALTER TABLE men_documentos ADD CONSTRAINT fk_men_documentos_men_mensajes FOREIGN KEY (mensaje) REFERENCES men_mensajes (mensaje) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_dominio -- FK: fk_men_dominio_men_mensajes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_dominio_men_mensajes; CREATE INDEX ifk_men_dominio_men_mensajes ON men_dominio (mensaje); -- ALTER TABLE men_dominio DROP CONSTRAINT fk_men_dominio_men_mensajes; ALTER TABLE men_dominio ADD CONSTRAINT fk_men_dominio_men_mensajes FOREIGN KEY (mensaje) REFERENCES men_mensajes (mensaje) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_dominio -- FK: fk_men_dominio_sga_planes -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_dominio_sga_planes; CREATE INDEX ifk_men_dominio_sga_planes ON men_dominio (propuesta); -- ALTER TABLE men_dominio DROP CONSTRAINT fk_men_dominio_sga_planes; ALTER TABLE men_dominio ADD CONSTRAINT fk_men_dominio_sga_planes FOREIGN KEY (plan) REFERENCES sga_planes (plan) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- FK: fk_men_mensajes_mdp_personas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_mensajes_mdp_personas; CREATE INDEX ifk_men_mensajes_mdp_personas ON men_mensajes (persona_alta); -- ALTER TABLE men_mensajes DROP CONSTRAINT fk_men_mensajes_mdp_personas; ALTER TABLE men_mensajes ADD CONSTRAINT fk_men_mensajes_mdp_personas FOREIGN KEY (persona_alta) REFERENCES mdp_personas (persona) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- FK: fk_men_mensajes_men_alcances -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_men_mensajes_men_alcances; CREATE INDEX ifk_men_mensajes_men_alcances ON men_mensajes (alcance); -- ALTER TABLE men_mensajes DROP CONSTRAINT fk_men_mensajes_men_alcances; ALTER TABLE men_mensajes ADD CONSTRAINT fk_men_mensajes_men_alcances FOREIGN KEY (alcance) REFERENCES men_alcances (alcance) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: men_mensajes -- Actualizacion Nro de Secuencia: men_mensajes_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('men_mensajes_seq',(SELECT MAX(mensaje) FROM men_mensajes)); -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000138.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000139.sql -- +++++++++++++++++++++++++++++++++++++++ ALTER TABLE mce_estados ADD COLUMN tipo Varchar(30); ALTER TABLE mce_formularios ADD COLUMN tipo Varchar(30); ALTER TABLE mce_acciones ADD COLUMN tipo Varchar(30); GRANT select ON mce_acciones TO public; GRANT update ON mce_acciones TO public; GRANT delete ON mce_acciones TO public; GRANT insert ON mce_acciones TO public; GRANT select ON mce_estados TO public; GRANT update ON mce_estados TO public; GRANT delete ON mce_estados TO public; GRANT insert ON mce_estados TO public; GRANT select ON mce_formularios TO public; GRANT update ON mce_formularios TO public; GRANT delete ON mce_formularios TO public; GRANT insert ON mce_formularios TO public; -- Agrego el dato del campo "tipo" UPDATE mce_estados SET tipo = 'Egreso'; UPDATE mce_formularios SET tipo = 'Egreso'; UPDATE mce_acciones SET tipo = 'Egreso'; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mce_acciones -- FK: fk_mce_acciones_mce_circuitos_tipos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mce_acciones_mce_circuitos_tipos; CREATE INDEX ifk_mce_acciones_mce_circuitos_tipos ON mce_acciones (tipo); -- ALTER TABLE mce_acciones DROP CONSTRAINT fk_mce_acciones_mce_circuitos_tipos; ALTER TABLE mce_acciones ADD CONSTRAINT fk_mce_acciones_mce_circuitos_tipos FOREIGN KEY (tipo) REFERENCES mce_circuitos_tipos (tipo) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mce_estados -- FK: fk_mce_estados_mce_circuitos_tipos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mce_estados_mce_circuitos_tipos; CREATE INDEX ifk_mce_estados_mce_circuitos_tipos ON mce_estados (tipo); -- ALTER TABLE mce_estados DROP CONSTRAINT fk_mce_estados_mce_circuitos_tipos; ALTER TABLE mce_estados ADD CONSTRAINT fk_mce_estados_mce_circuitos_tipos FOREIGN KEY (tipo) REFERENCES mce_circuitos_tipos (tipo) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mce_formularios -- FK: fk_mce_formularios_mce_circuitos_tipos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mce_formularios_mce_circuitos_tipos; CREATE INDEX ifk_mce_formularios_mce_circuitos_tipos ON mce_formularios (tipo); -- ALTER TABLE mce_formularios DROP CONSTRAINT fk_mce_formularios_mce_circuitos_tipos; ALTER TABLE mce_formularios ADD CONSTRAINT fk_mce_formularios_mce_circuitos_tipos FOREIGN KEY (tipo) REFERENCES mce_circuitos_tipos (tipo) on update restrict on delete restrict; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000139.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000140.sql -- +++++++++++++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_personas -- Version: 3.0.0 -- Recupera las personas con su documento principal -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP VIEW vw_personas; CREATE OR REPLACE VIEW vw_personas ( persona, apellido, nombres, apellido_nombres, sexo, nacionalidad, usuario, documento, nro_documento, tipo_documento, desc_tipo_documento, tipo_nro_documento ) AS SELECT mdp_personas.persona, mdp_personas.apellido, mdp_personas.nombres, mdp_personas.apellido || ' ' || mdp_personas.nombres, mdp_personas.sexo, mdp_personas.nacionalidad, mdp_personas.usuario, mdp_personas_documentos.documento, mdp_personas_documentos.nro_documento, mdp_personas_documentos.tipo_documento, mdp_tipo_documento.desc_abreviada, mdp_tipo_documento.desc_abreviada || ' ' || mdp_personas_documentos.nro_documento FROM mdp_personas LEFT JOIN mdp_personas_documentos ON mdp_personas_documentos.documento = mdp_personas.documento_principal LEFT JOIN mdp_tipo_documento ON mdp_tipo_documento.tipo_documento = mdp_personas_documentos.tipo_documento ; -- ++++++++++++++++++++++++++++++ Fin view vw_personas +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_personas to public; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000140.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000141_pre.sql -- +++++++++++++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Circuito de Tesis -- -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DELETE FROM mce_caminos_form WHERE camino IN (SELECT circuito FROM mce_circuitos WHERE circuito = 2); DELETE FROM mce_caminos_campos WHERE camino IN (SELECT circuito FROM mce_circuitos WHERE circuito = 2); DELETE FROM mce_caminos WHERE circuito = 2; DELETE FROM mce_circuitos WHERE circuito = 2; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000141_pre.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000141.sql -- +++++++++++++++++++++++++++++++++++++++ -- parametros de la cuenta de twitter DELETE FROM par_parametros_sistema WHERE parametro in ('twitter_usuario', 'twitter_cuenta', 'twitter_clave'); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('twitter_access_token', 'Registro del ACCESS TOKEN de la cuenta de twitter de la institución', 'L', 'S', 1, '', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('twitter_access_token_secret', 'Registro del ACCESS TOKEN SECRET de la cuenta de twitter de la institución', 'L', 'S', 1, '', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('twitter_consumer_key', 'Registro del CONSUMER KEY de la cuenta de twitter de la institución', 'L', 'S', 1, '', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('twitter_consumer_secret', 'Registro del CONSUMER SECRET de la cuenta de twitter de la institución', 'L', 'S', 1, '', NULL, NULL, NULL ); -- Agrego columna ALTER TABLE men_mensajes ADD COLUMN mensaje_twitter Varchar(140); -- Circuitos DELETE FROM mce_circuitos_tipos WHERE tipo = 'Seguimiento de Tesis'; INSERT INTO mce_circuitos_tipos (tipo, nombre) VALUES ('Tesis', 'Circuito de seguimiento de Tesis'); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Circuito de Tesis -- -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO mce_circuitos (circuito, nombre, tipo, activo) VALUES (2, 'Seguimiento de Tesis', 'Tesis', 'S'); -- Default de Guarani 2. INSERT INTO mce_campos (campo, etiqueta, tipo_de_dato, descripcion, longitud, cant_decimales) VALUES ('fecha_aprobacion' , 'Fecha de aprobación', 'F', 'Fecha de aprobación de la tesis por el tribunal docente', 0, 0); INSERT INTO mce_campos (campo, etiqueta, tipo_de_dato, descripcion, longitud, cant_decimales) VALUES ('fecha_defensa' , 'Fecha de defensa', 'F', 'Fecha de defensa de la tesis', 0, 0); INSERT INTO mce_campos (campo, etiqueta, tipo_de_dato, descripcion, longitud, cant_decimales) VALUES ('fecha_vencimiento' , 'Fecha de vencimento', 'F', 'Fecha de vencimiento de la tesis', 0, 0); INSERT INTO mce_campos (campo, etiqueta, tipo_de_dato, descripcion, longitud, cant_decimales) VALUES ('resolucion_tesis' , 'Nro de resolución de aprobacion de la tesis', 'E','Nro de resolución de aprobacion de la tesis', 0, 0); INSERT INTO mce_campos (campo, etiqueta, tipo_de_dato, descripcion, longitud, cant_decimales) VALUES ('resolucion_alumnos' , 'Nro de resolución de alumnos', 'E', 'Nro Resolución de Alumnos de la Tsis', 0, 0); INSERT INTO mce_campos (campo, etiqueta, tipo_de_dato, descripcion, longitud, cant_decimales) VALUES ('resolucion_tutores' , 'Nro de resolución de tutores', 'E', 'Nro Resolución de Tutores de la Tesis', 0, 0); INSERT INTO mce_campos (campo, etiqueta, tipo_de_dato, descripcion, longitud, cant_decimales) VALUES ('resolucion_evaluadores', 'Nro de resolución de evaluadores', 'E', 'Nro Resolución de Evaluadores de la Tesis', 0, 0); -- Estados del Circuito de Tesis INSERT INTO mce_estados (estado, nombre, descripcion, tipo, activo) VALUES (20, 'Pendiente de entrega', 'Pendiente de entrega', 'Tesis', 'S'); -- G2: PE INSERT INTO mce_estados (estado, nombre, descripcion, tipo, activo) VALUES (21, 'Entregado al Tribunal Docente', 'Entregado al tribunal docente', 'Tesis', 'S'); -- G2: ED INSERT INTO mce_estados (estado, nombre, descripcion, tipo, activo) VALUES (22, 'Aprobado por Tribunal Docente', 'Aprobado por tribunal', 'Tesis', 'S'); -- G2: AT INSERT INTO mce_estados (estado, nombre, descripcion, tipo, activo) VALUES (23, 'Observado por Tribunal Docente', 'Observado por tribunal', 'Tesis', 'S'); -- G2: OT INSERT INTO mce_estados (estado, nombre, descripcion, tipo, activo) VALUES (24, 'Rechazado por Tribunal Docente', 'Rechazado por tribunal', 'Tesis', 'S'); -- G2: RT INSERT INTO mce_estados (estado, nombre, descripcion, tipo, activo) VALUES (25, 'Listo para defensa', 'Listo para defensa', 'Tesis', 'S'); -- G2: LD INSERT INTO mce_estados (estado, nombre, descripcion, tipo, activo) VALUES (26, 'Tesis aprobada', 'Tesis aprobada', 'Tesis', 'S'); -- G2: TA INSERT INTO mce_estados (estado, nombre, descripcion, tipo, activo) VALUES (27, 'Tesis desaprobada', 'Tesis desaprobada', 'Tesis', 'S'); -- G2: TD -- Acciones del Circuito de Tesis INSERT INTO mce_acciones (accion, nombre, descripcion, tipo, activo) VALUES ( 20, 'Presentar Tesis', 'Presentar Tesis por Alumnos', 'Tesis', 'S'); INSERT INTO mce_acciones (accion, nombre, descripcion, tipo, activo) VALUES ( 21, 'Entregar Tesis a Docentes', 'Entregar tesis a docentes', 'Tesis', 'S'); INSERT INTO mce_acciones (accion, nombre, descripcion, tipo, activo) VALUES ( 22, 'Tesis aprobada por el Tribunal Docente', 'Tesis aprobada por el Tribunal Docente', 'Tesis', 'S'); INSERT INTO mce_acciones (accion, nombre, descripcion, tipo, activo) VALUES ( 23, 'Tesis observada por el Tribunal Docente', 'Tesis observada por el Tribunal Docente', 'Tesis', 'S'); INSERT INTO mce_acciones (accion, nombre, descripcion, tipo, activo) VALUES ( 24, 'Tesis rechazada por el Tribunal Docente', 'Tesis rechazada por el Tribunal Docente', 'Tesis', 'S'); INSERT INTO mce_acciones (accion, nombre, descripcion, tipo, activo) VALUES ( 25, 'Tesis aprobada por el Tribunal Evaluador', 'Tesis aprobada por el Tribunal Evaluador', 'Tesis', 'S'); INSERT INTO mce_acciones (accion, nombre, descripcion, tipo, activo) VALUES ( 26, 'Tesis desaprobada por el Tribunal Evaluador', 'Tesis desaprobada por el Tribunal Evaluador', 'Tesis', 'S'); -- Caminos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Circuito de Tesis -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO mce_caminos (camino, circuito, accion, estado_inicial, estado_final, recalcular_histacad, enviar_aviso_alumno, controlar_pago) VALUES (100, 2, 20, NULL, 20, 'N', 'S', 'N'); -- G2= - PE INSERT INTO mce_caminos (camino, circuito, accion, estado_inicial, estado_final, recalcular_histacad, enviar_aviso_alumno, controlar_pago) VALUES (101, 2, 21, 20, 21, 'N', 'S', 'N'); -- G2= PE - ED INSERT INTO mce_caminos (camino, circuito, accion, estado_inicial, estado_final, recalcular_histacad, enviar_aviso_alumno, controlar_pago) VALUES (102, 2, 21, 21, 25, 'N', 'S', 'N'); -- Nuevo G3 = ED - LT INSERT INTO mce_caminos (camino, circuito, accion, estado_inicial, estado_final, recalcular_histacad, enviar_aviso_alumno, controlar_pago) VALUES (103, 2, 23, 21, 20, 'N', 'S', 'N'); -- Nuevo: ED - PE INSERT INTO mce_caminos (camino, circuito, accion, estado_inicial, estado_final, recalcular_histacad, enviar_aviso_alumno, controlar_pago) VALUES (104, 2, 24, 21, 24, 'N', 'S', 'N'); -- G2= ED - RT INSERT INTO mce_caminos (camino, circuito, accion, estado_inicial, estado_final, recalcular_histacad, enviar_aviso_alumno, controlar_pago) VALUES (105, 2, 25, 25, 26, 'N', 'S', 'N'); -- G2= LD - TA INSERT INTO mce_caminos (camino, circuito, accion, estado_inicial, estado_final, recalcular_histacad, enviar_aviso_alumno, controlar_pago) VALUES (106, 2, 26, 25, 27, 'N', 'S', 'N'); -- G2= LD - TD -- Campos por Tipo de Circuito INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Tesis', 'fecha_aprobacion'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Tesis', 'fecha_defensa'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Tesis', 'fecha_vencimiento'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Tesis', 'resolucion_tesis'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Tesis', 'resolucion_alumnos'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Tesis', 'resolucion_tutores'); INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Tesis', 'resolucion_evaluadores'); -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000141.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000142.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- TRIGGER BEFORE INSERT -- Tabla: sga_reinscripciones -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION ftib_sga_reinscripciones(); CREATE OR REPLACE FUNCTION ftib_sga_reinscripciones() RETURNS TRIGGER AS $BODY$ BEGIN -- Genera un nro de Transaccion IF NEW.nro_transaccion IS NULL THEN NEW.nro_transaccion := f_nro_transaccion(); END IF; RETURN NEW; END; $BODY$ LANGUAGE plpgsql; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000142.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000143.sql -- +++++++++++++++++++++++++++++++++++++++ DELETE FROM par_param_sist_valores_subtipo WHERE param_valor IN (SELECT param_valor FROM par_param_sist_valores WHERE parametro IN ('facebook_cuenta', 'facebook_clave', 'facebook_usuario') ); DELETE FROM par_param_sist_valores_entidad WHERE param_valor IN (SELECT param_valor FROM par_param_sist_valores WHERE parametro IN ('facebook_cuenta', 'facebook_clave', 'facebook_usuario') ); DELETE FROM par_param_sist_valores WHERE parametro IN ('facebook_cuenta', 'facebook_clave', 'facebook_usuario'); DELETE FROM par_parametros_sistema WHERE parametro IN ('facebook_cuenta', 'facebook_clave', 'facebook_usuario'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE: tdb_sga_comisiones_bh -- BEFORE DELETE -- Tabla: sga_comisiones_bh -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP TRIGGER tdb_sga_comisiones_bh ON sga_comisiones_bh RESTRICT; DROP FUNCTION ftdb_sga_comisiones_bh (); CREATE OR REPLACE FUNCTION ftdb_sga_comisiones_bh () RETURNS trigger AS $BODY$ BEGIN -- Borro las clases de la banda horaria DELETE FROM sga_clases WHERE banda_horaria = OLD.banda_horaria; RETURN OLD; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE sobre sga_comisiones_bh -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE TRIGGER tdb_sga_comisiones_bh BEFORE DELETE ON sga_comisiones_bh FOR EACH ROW EXECUTE PROCEDURE ftdb_sga_comisiones_bh(); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('facebook_access_token', 'Valor del dato ACCESS TOKEN de la cuenta de facebook de la institución', 'L', 'S', 1, '', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('facebook_app_id', 'Valor del dato APP ID de la cuenta de facebook de la institución', 'L', 'S', 1, '', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('facebook_app_secret', 'Valor del dato APP SECRET de la cuenta de Facebook de la institución', 'L', 'S', 1, '', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('facebook_pagina_id', 'Valor del dato PAGINA ID de la cuenta de facebook de la institución', 'L', 'S', 1, '', NULL, NULL, NULL ); -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000143.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000144.sql -- +++++++++++++++++++++++++++++++++++++++ -- Cambio de longitud el campo valor. (de 50 a 150) ALTER TABLE par_parametros_sistema ALTER COLUMN valor_desde TYPE Varchar(150); ALTER TABLE par_parametros_sistema ALTER COLUMN valor_hasta TYPE Varchar(150); ALTER TABLE par_parametros_sistema ALTER COLUMN valor_default TYPE Varchar(150); ALTER TABLE par_param_sist_valores ALTER COLUMN valor TYPE Varchar(150); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_cmb -- Secuencia: sga_tesis_cmb_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_tesis_cmb_seq; CREATE SEQUENCE sga_tesis_cmb_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_roles_evaluador -- Secuencia: sga_tesis_roles_evaluador_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_tesis_roles_evaluador_seq; CREATE SEQUENCE sga_tesis_roles_evaluador_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_roles_tutor -- Secuencia: sga_tesis_roles_tutor_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_tesis_roles_tutor_seq; CREATE SEQUENCE sga_tesis_roles_tutor_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis -- Secuencia: sga_tesis_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE sga_tesis_seq; CREATE SEQUENCE sga_tesis_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_tesis; CREATE TABLE sga_tesis ( tesis INTEGER NOT NULL DEFAULT nextval('sga_tesis_seq'::text) , titulo Varchar(255) NOT NULL, circuito Integer NOT NULL, expediente Varchar(20), fecha_alta Date NOT NULL DEFAULT CURRENT_DATE, actividad Integer, fecha_aprobacion Date, fecha_vencimiento Date, fecha_defensa Date, resolucion_tesis Integer, resolucion_tutores Integer, resolucion_evaluadores Integer, prorrogada Char(1) NOT NULL DEFAULT 'N', estado_actual Integer, fecha_ult_cambio Timestamp with time zone, descripcion Text ); -- ALTER TABLE sga_tesis DROP CONSTRAINT pk_sga_tesis; ALTER TABLE sga_tesis ADD CONSTRAINT pk_sga_tesis PRIMARY KEY (tesis); Revoke all ON sga_tesis FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_tesis +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_alumnos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_tesis_alumnos; CREATE TABLE sga_tesis_alumnos ( alumno Integer NOT NULL, tesis Integer NOT NULL ); -- ALTER TABLE sga_tesis_alumnos DROP CONSTRAINT pk_sga_tesis_alumnos; ALTER TABLE sga_tesis_alumnos ADD CONSTRAINT pk_sga_tesis_alumnos PRIMARY KEY (alumno,tesis); Revoke all ON sga_tesis_alumnos FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_tesis_alumnos +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_cmb -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_tesis_cmb; CREATE TABLE sga_tesis_cmb ( cambio_estado INTEGER NOT NULL DEFAULT nextval('sga_tesis_cmb_seq'::text) , tesis Integer NOT NULL, fecha Timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, estado_anterior Integer, estado_nuevo Integer NOT NULL, observaciones Varchar(255) ); -- ALTER TABLE sga_tesis_cmb DROP CONSTRAINT pk_sga_tesis_cmb; ALTER TABLE sga_tesis_cmb ADD CONSTRAINT pk_sga_tesis_cmb PRIMARY KEY (cambio_estado); Revoke all ON sga_tesis_cmb FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_tesis_cmb +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_evaluadores -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_tesis_evaluadores; CREATE TABLE sga_tesis_evaluadores ( tesis Integer NOT NULL, persona Integer NOT NULL, rol_evaluador Integer NOT NULL ); -- ALTER TABLE sga_tesis_evaluadores DROP CONSTRAINT pk_sga_tesis_evaluadores; ALTER TABLE sga_tesis_evaluadores ADD CONSTRAINT pk_sga_tesis_evaluadores PRIMARY KEY (tesis,persona); Revoke all ON sga_tesis_evaluadores FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_tesis_evaluadores +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_roles_evaluador -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_tesis_roles_evaluador; CREATE TABLE sga_tesis_roles_evaluador ( rol_evaluador INTEGER NOT NULL DEFAULT nextval('sga_tesis_roles_evaluador_seq'::text) , nombre Varchar(50) NOT NULL, descripcion Varchar(250) ); -- ALTER TABLE sga_tesis_roles_evaluador DROP CONSTRAINT pk_sga_tesis_roles_evaluador; ALTER TABLE sga_tesis_roles_evaluador ADD CONSTRAINT pk_sga_tesis_roles_evaluador PRIMARY KEY (rol_evaluador); Revoke all ON sga_tesis_roles_evaluador FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_tesis_roles_evaluador +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_roles_tutor -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_tesis_roles_tutor; CREATE TABLE sga_tesis_roles_tutor ( rol_tutor INTEGER NOT NULL DEFAULT nextval('sga_tesis_roles_tutor_seq'::text) , nombre Varchar(50) NOT NULL, descripcion Varchar(250) ); -- ALTER TABLE sga_tesis_roles_tutor DROP CONSTRAINT pk_sga_tesis_roles_tutor; ALTER TABLE sga_tesis_roles_tutor ADD CONSTRAINT pk_sga_tesis_roles_tutor PRIMARY KEY (rol_tutor); Revoke all ON sga_tesis_roles_tutor FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_tesis_roles_tutor +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_tutores -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS sga_tesis_tutores; CREATE TABLE sga_tesis_tutores ( tesis Integer NOT NULL, persona Integer NOT NULL, rol_tutor Integer NOT NULL ); -- ALTER TABLE sga_tesis_tutores DROP CONSTRAINT pk_sga_tesis_tutores; ALTER TABLE sga_tesis_tutores ADD CONSTRAINT pk_sga_tesis_tutores PRIMARY KEY (tesis,persona); Revoke all ON sga_tesis_tutores FROM public; -- ++++++++++++++++++++++++++ Fin tabla sga_tesis_tutores +++++++++++++++++++++++++++++ GRANT select ON sga_tesis TO public; GRANT update ON sga_tesis TO public; GRANT delete ON sga_tesis TO public; GRANT insert ON sga_tesis TO public; GRANT select ON sga_tesis_alumnos TO public; GRANT update ON sga_tesis_alumnos TO public; GRANT delete ON sga_tesis_alumnos TO public; GRANT insert ON sga_tesis_alumnos TO public; GRANT select ON sga_tesis_cmb TO public; GRANT update ON sga_tesis_cmb TO public; GRANT delete ON sga_tesis_cmb TO public; GRANT insert ON sga_tesis_cmb TO public; GRANT select ON sga_tesis_evaluadores TO public; GRANT update ON sga_tesis_evaluadores TO public; GRANT delete ON sga_tesis_evaluadores TO public; GRANT insert ON sga_tesis_evaluadores TO public; GRANT select ON sga_tesis_roles_evaluador TO public; GRANT update ON sga_tesis_roles_evaluador TO public; GRANT delete ON sga_tesis_roles_evaluador TO public; GRANT insert ON sga_tesis_roles_evaluador TO public; GRANT select ON sga_tesis_roles_tutor TO public; GRANT update ON sga_tesis_roles_tutor TO public; GRANT delete ON sga_tesis_roles_tutor TO public; GRANT insert ON sga_tesis_roles_tutor TO public; GRANT select ON sga_tesis_tutores TO public; GRANT update ON sga_tesis_tutores TO public; GRANT delete ON sga_tesis_tutores TO public; GRANT insert ON sga_tesis_tutores TO public; INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('email_to', 'Define el destinatario del mail cuando el envio de mails es por BCC', 'L', 'S', 2, '', NULL, NULL, NULL ); INSERT INTO par_parametros_sistema ( parametro, descripcion, tipo_de_parametro, tipo_de_dato, nivel, valor_default, valor_desde, valor_hasta, tabla_referenciada ) VALUES ('repositorio_raiz', 'Dirección fisica donde se guardarán los archivos en el repositorio de archivos', 'L', 'S', 1, '', NULL, NULL, NULL ); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: mce_circuitos_tipos -- Roles de los evaluadores de las tesis -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_tesis_roles_evaluador (rol_evaluador, nombre, descripcion) VALUES (1, 'President', 'Presidente del tribunal evaluador de tesis'); -- G2 = P INSERT INTO sga_tesis_roles_evaluador (rol_evaluador, nombre, descripcion) VALUES (2, 'Vocal', 'Vocal del tribunal evaluador de tesis'); -- G2 = V INSERT INTO sga_tesis_roles_evaluador (rol_evaluador, nombre, descripcion) VALUES (3, 'Suplente', 'Suplente del tribunal evaluador de tesis'); -- G2 = S -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: mce_circuitos_tipos -- Roles de los tutores de las tesis -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_tesis_roles_tutor (rol_tutor, nombre, descripcion) VALUES (1, 'Director', 'Director de Tesis'); -- G2 = D INSERT INTO sga_tesis_roles_tutor (rol_tutor, nombre, descripcion) VALUES (2, 'Codirector', 'Codirector de Tesis'); -- G2 = C INSERT INTO sga_tesis_roles_tutor (rol_tutor, nombre, descripcion) VALUES (3, 'Consejero', 'Consejero'); -- G2 = E -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_copiar_comision -- -- Copia una comision en en un nuevo periodo lectivo. -- * Datos de la comision, docentes, instancias, propuestas y planes -- * Subcomisiones -- -- Recibe: -- f_copiar_comision(integer, integer, varchar, boolean) -- 1. ID de la comision -- 2. ID del periodo lectivo destino -- 3. Nombre de la Nueva comision. Default valor NULL -- 4. Parámetro que indica si se copian o no las subcomisiones. Valor: true - Se copian las subcomisiones (default) / false - No se copian las subcomisiones -- -- Retorna: -- 1. un registro con los datos del tipo: type_comision -- -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP FUNCTION f_copiar_comision(integer, integer, varchar, boolean); CREATE OR REPLACE FUNCTION f_copiar_comision( pComisionOrigen integer, pPeriodoLectivoDestino integer, pComisionNombre varchar(100), pCopiarSubcomisiones boolean) RETURNS SETOF type_comision_copiado_generacion AS $BODY$ DECLARE comision_nueva INTEGER; _periodo_lectivo_destino Integer; _periodo_lectivo_origen Integer; _nombre_comision VARCHAR(100); subcomision_origen INTEGER; subcomision_nueva INTEGER; _observaciones text; _catedra integer; _estado_catedra char(1); _nombre_catedra varchar(100); _fecha_desde DATE; _fecha_hasta DATE; _fecha_desde_doc DATE; _fecha_hasta_doc DATE; _insc_habilitada char(1); _insc_habilitada_orig char(1); _elemento INTEGER; cnt SMALLINT; _actividad text; cur_subc record; cur_docentes record; cur_retorno type_comision_copiado_generacion; -- para retornar datos de la comision creada BEGIN cur_retorno.codigo_retorno := 0; -- OK. COMISION COPIADA _observaciones := NULL; _insc_habilitada := 'S'; -- Recupero datos de la comision origen. SELECT '(' || sga_elementos.codigo || ') ' || sga_elementos.nombre, sga_comisiones.nombre, sga_comisiones.elemento, sga_comisiones.periodo_lectivo, sga_comisiones.inscripcion_habilitada, sga_comisiones.catedra, sga_catedras.nombre, sga_catedras.estado, sga_periodos_lectivos.fecha_inicio_dictado, sga_periodos_lectivos.fecha_fin_dictado INTO _actividad, _nombre_comision, _elemento, _periodo_lectivo_origen, _insc_habilitada_orig, _catedra, _nombre_catedra, _estado_catedra, _fecha_desde, _fecha_hasta FROM sga_comisiones LEFT JOIN sga_catedras ON sga_catedras.catedra = sga_comisiones.catedra, sga_elementos, sga_periodos_lectivos WHERE sga_elementos.elemento = sga_comisiones.elemento AND sga_comisiones.comision = pComisionOrigen AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo; IF NOT FOUND THEN -- Salgo. cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La comisión a copiar no existe'; RETURN NEXT cur_retorno; RETURN; -- Salgo END IF; _fecha_desde_doc = _fecha_desde; _fecha_hasta_doc = _fecha_hasta; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Esto es para el caso que se duplica una comision del mismo período lectivo. -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF pComisionNombre IS NOT NULL THEN -- Se pasa un nuevo nombre de Comision. _nombre_comision := pComisionNombre; END IF; IF pPeriodoLectivoDestino IS NULL THEN -- Se asigna el mismo periodo lectivo que la comision original _periodo_lectivo_destino := _periodo_lectivo_origen; -- Para que copie la fecha desde y hasta de los docentes de la comision origen _fecha_desde_doc := NULL; _fecha_hasta_doc := NULL; _insc_habilitada := NULL; ELSE _periodo_lectivo_destino := pPeriodoLectivoDestino; END IF; -- Verifico que no exista una comision con el mismo nombre para la actividad y periodo lectivo destino. SELECT Count(*) INTO cnt FROM sga_comisiones WHERE elemento = _elemento AND periodo_lectivo = _periodo_lectivo_destino AND nombre = _nombre_comision; IF cnt > 0 THEN -- Salgo. cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La comisión ' || _nombre_comision || ' no se copió porque ya existe en el período lectivo destino'; RETURN NEXT cur_retorno; RETURN; END IF; -- Verifico si la catedra esta activa IF _catedra IS NOT NULL AND _estado_catedra <> 'A' THEN cur_retorno.codigo_retorno := 1; -- Comision no copiada cur_retorno.observaciones := 'La cátedra ' || _nombre_catedra || ' de la comisión esta dada de baja'; RETURN NEXT cur_retorno; RETURN; END IF; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Inserto la comision -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_comisiones (nombre, periodo_lectivo, elemento, turno, catedra, ubicacion, letra_desde, letra_hasta, cupo, inscripcion_habilitada, visible_al_alumno) SELECT _nombre_comision, _periodo_lectivo_destino, elemento, turno, _catedra, ubicacion, letra_desde, letra_hasta, cupo, COALESCE(_insc_habilitada, _insc_habilitada_orig), visible_al_alumno FROM sga_comisiones WHERE comision = pComisionOrigen; -- Recupero el Serial de la comision comision_nueva := (SELECT currval('sga_comisiones_seq')); -- Seteo valores para retorno cur_retorno.comision := comision_nueva; cur_retorno.nombre_comision := _nombre_comision; -- Modalidad de Cursada. INSERT INTO sga_comisiones_modalidad (comision, modalidad) SELECT comision_nueva, modalidad FROM sga_comisiones_modalidad WHERE comision = pComisionOrigen; -- Propuestas y Planes de la comision INSERT INTO sga_comisiones_propuestas (comision, propuesta, plan) SELECT comision_nueva, propuesta, plan FROM sga_comisiones_propuestas WHERE comision = pComisionOrigen; -- Instancias de la comision INSERT INTO sga_comisiones_instancias (comision, instancia, escala_nota, porc_asistencia) SELECT comision_nueva, instancia, escala_nota, porc_asistencia FROM sga_comisiones_instancias WHERE comision = pComisionOrigen; -- Docentes de la comision FOR cur_docentes IN SELECT sga_docentes_comision.docente, sga_docentes_comision.responsabilidad, sga_docentes_comision.fecha_desde, sga_docentes_comision.fecha_hasta, sga_docentes.estado, '(' || sga_docentes.legajo || ') ' || mdp_personas.apellido || ' ' || mdp_personas.nombres as nombre_docente FROM sga_docentes_comision, sga_docentes, mdp_personas WHERE sga_docentes_comision.comision = pComisionOrigen AND sga_docentes.docente = sga_docentes_comision.docente AND mdp_personas.persona = sga_docentes.persona LOOP -- Si el docente esta dado de baja, entonces no copio el docente. IF cur_docentes.estado <> 'A' THEN cur_retorno.codigo_retorno = 2; _observaciones := COALESCE(_observaciones || ' - ', ''); _observaciones := _observaciones || 'El docente ' || cur_docentes.nombre_docente || ' no se copió porque esta dado de baja'; CONTINUE; END IF; INSERT INTO sga_docentes_comision (comision, docente, responsabilidad, fecha_desde, fecha_hasta) VALUES (comision_nueva, cur_docentes.docente, cur_docentes.responsabilidad, COALESCE(_fecha_desde_doc, cur_docentes.fecha_desde), COALESCE(_fecha_hasta_doc, cur_docentes.fecha_hasta) ); -- Docentes - Dedicacion horaria INSERT INTO sga_docentes_dedicacion_hs (comision, docente, tipo_dedicacion, cnt_horas) SELECT comision_nueva, ddh.docente, ddh.tipo_dedicacion, ddh.cnt_horas FROM sga_docentes_dedicacion_hs as ddh WHERE ddh.comision = pComisionOrigen AND ddh.docente = cur_docentes.docente; END LOOP; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SUBCOMISIONES -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IF pCopiarSubcomisiones OR pCopiarSubcomisiones IS NULL THEN -- Recupero los elementos del Plan (modulos y actividades) FOR cur_subc IN SELECT subcomision, tipo_clase, nombre, letra_desde, letra_hasta, cupo FROM sga_subcomisiones WHERE comision = pComisionOrigen LOOP -- Genero la Subcomision INSERT INTO sga_subcomisiones (comision, tipo_clase, nombre, letra_desde, letra_hasta, cupo, inscripcion_habilitada) VALUES (comision_nueva, cur_subc.tipo_clase, cur_subc.nombre, cur_subc.letra_desde, cur_subc.letra_hasta, cur_subc.cupo, 'S'); -- Recupero el Serial de la subcomision subcomision_nueva := (SELECT currval('sga_subcomisiones_seq')); -- Docentes de la subcomision. Solo docentes Activos. INSERT INTO sga_docentes_subcomision (subcomision, docente, fecha_desde, fecha_hasta) SELECT subcomision_nueva, sga_docentes_subcomision.docente, _fecha_desde, _fecha_hasta FROM sga_docentes_subcomision, sga_docentes WHERE sga_docentes_subcomision.subcomision = cur_subc.subcomision AND sga_docentes.docente = sga_docentes_subcomision.docente AND sga_docentes.estado = 'A'; END LOOP; END IF; -- Subcomisiones -- asigno las observaciones. cur_retorno.observaciones := _observaciones; -- Retorno datos de la comisión. RETURN NEXT cur_retorno; RETURN; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_copiar_comision +++++++++++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_copiar_comision (integer, integer, varchar, boolean) FROM public; GRANT EXECUTE ON FUNCTION f_copiar_comision (integer, integer, varchar, boolean) to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis -- Check: ck_sga_tesis_prorrogada -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_tesis DROP CONSTRAINT ck_sga_tesis_prorrogada; ALTER TABLE sga_tesis ADD CONSTRAINT ck_sga_tesis_prorrogada CHECK (prorrogada IN ('S', 'N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_alumnos -- FK: fk_sga_tesis_alumnos_sga_alumnos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_alumnos_sga_alumnos; CREATE INDEX ifk_sga_tesis_alumnos_sga_alumnos ON sga_tesis_alumnos (alumno); -- ALTER TABLE sga_tesis_alumnos DROP CONSTRAINT fk_sga_tesis_alumnos_sga_alumnos; ALTER TABLE sga_tesis_alumnos ADD CONSTRAINT fk_sga_tesis_alumnos_sga_alumnos FOREIGN KEY (alumno) REFERENCES sga_alumnos (alumno) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_alumnos -- FK: fk_sga_tesis_alumnos_sga_tesis -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_alumnos_sga_tesis; CREATE INDEX ifk_sga_tesis_alumnos_sga_tesis ON sga_tesis_alumnos (tesis); -- ALTER TABLE sga_tesis_alumnos DROP CONSTRAINT fk_sga_tesis_alumnos_sga_tesis; ALTER TABLE sga_tesis_alumnos ADD CONSTRAINT fk_sga_tesis_alumnos_sga_tesis FOREIGN KEY (tesis) REFERENCES sga_tesis (tesis) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_cmb -- FK: fk_sga_tesis_cmb_mce_estados_estado_anterior -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_cmb_mce_estados_estado_anterior; CREATE INDEX ifk_sga_tesis_cmb_mce_estados_estado_anterior ON sga_tesis_cmb (estado_anterior); -- ALTER TABLE sga_tesis_cmb DROP CONSTRAINT fk_sga_tesis_cmb_mce_estados_estado_anterior; ALTER TABLE sga_tesis_cmb ADD CONSTRAINT fk_sga_tesis_cmb_mce_estados_estado_anterior FOREIGN KEY (estado_anterior) REFERENCES mce_estados (estado) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_cmb -- FK: fk_sga_tesis_cmb_mce_estados_estado_nuevo -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_cmb_mce_estados_estado_nuevo; CREATE INDEX ifk_sga_tesis_cmb_mce_estados_estado_nuevo ON sga_tesis_cmb (estado_nuevo); -- ALTER TABLE sga_tesis_cmb DROP CONSTRAINT fk_sga_tesis_cmb_mce_estados_estado_nuevo; ALTER TABLE sga_tesis_cmb ADD CONSTRAINT fk_sga_tesis_cmb_mce_estados_estado_nuevo FOREIGN KEY (estado_nuevo) REFERENCES mce_estados (estado) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_cmb -- FK: fk_sga_tesis_cmb_sga_tesis -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_cmb_sga_tesis; CREATE INDEX ifk_sga_tesis_cmb_sga_tesis ON sga_tesis_cmb (tesis); -- ALTER TABLE sga_tesis_cmb DROP CONSTRAINT fk_sga_tesis_cmb_sga_tesis; ALTER TABLE sga_tesis_cmb ADD CONSTRAINT fk_sga_tesis_cmb_sga_tesis FOREIGN KEY (tesis) REFERENCES sga_tesis (tesis) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_evaluadores -- FK: fk_sga_tesis_evaluadores_mdp_personas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_evaluadores_mdp_personas; CREATE INDEX ifk_sga_tesis_evaluadores_mdp_personas ON sga_tesis_evaluadores (persona); -- ALTER TABLE sga_tesis_evaluadores DROP CONSTRAINT fk_sga_tesis_evaluadores_mdp_personas; ALTER TABLE sga_tesis_evaluadores ADD CONSTRAINT fk_sga_tesis_evaluadores_mdp_personas FOREIGN KEY (persona) REFERENCES mdp_personas (persona) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_evaluadores -- FK: fk_sga_tesis_evaluadores_sga_tesis -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_evaluadores_sga_tesis; CREATE INDEX ifk_sga_tesis_evaluadores_sga_tesis ON sga_tesis_evaluadores (tesis); -- ALTER TABLE sga_tesis_evaluadores DROP CONSTRAINT fk_sga_tesis_evaluadores_sga_tesis; ALTER TABLE sga_tesis_evaluadores ADD CONSTRAINT fk_sga_tesis_evaluadores_sga_tesis FOREIGN KEY (tesis) REFERENCES sga_tesis (tesis) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_evaluadores -- FK: fk_sga_tesis_evaluadores_sga_tesis_roles_evaluador -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_evaluadores_sga_tesis_roles_evaluador; CREATE INDEX ifk_sga_tesis_evaluadores_sga_tesis_roles_evaluador ON sga_tesis_evaluadores (rol_evaluador); -- ALTER TABLE sga_tesis_evaluadores DROP CONSTRAINT fk_sga_tesis_evaluadores_sga_tesis_roles_evaluador; ALTER TABLE sga_tesis_evaluadores ADD CONSTRAINT fk_sga_tesis_evaluadores_sga_tesis_roles_evaluador FOREIGN KEY (rol_evaluador) REFERENCES sga_tesis_roles_evaluador (rol_evaluador) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis -- FK: fk_sga_tesis_mce_circuitos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_mce_circuitos; CREATE INDEX ifk_sga_tesis_mce_circuitos ON sga_tesis (circuito); -- ALTER TABLE sga_tesis DROP CONSTRAINT fk_sga_tesis_mce_circuitos; ALTER TABLE sga_tesis ADD CONSTRAINT fk_sga_tesis_mce_circuitos FOREIGN KEY (circuito) REFERENCES mce_circuitos (circuito) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis -- FK: fk_sga_tesis_mce_estados -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_mce_estados; CREATE INDEX ifk_sga_tesis_mce_estados ON sga_tesis (estado_actual); -- ALTER TABLE sga_tesis DROP CONSTRAINT fk_sga_tesis_mce_estados; ALTER TABLE sga_tesis ADD CONSTRAINT fk_sga_tesis_mce_estados FOREIGN KEY (estado_actual) REFERENCES mce_estados (estado) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis -- FK: fk_sga_tesis_sga_documentos_resol_alumnos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_sga_documentos_resol_alumnos; CREATE INDEX ifk_sga_tesis_sga_documentos_resol_alumnos ON sga_tesis (resolucion_tutores); -- ALTER TABLE sga_tesis DROP CONSTRAINT fk_sga_tesis_sga_documentos_resol_alumnos; ALTER TABLE sga_tesis ADD CONSTRAINT fk_sga_tesis_sga_documentos_resol_alumnos FOREIGN KEY (resolucion_tutores) REFERENCES sga_documentos (documento) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis -- FK: fk_sga_tesis_sga_documentos_resol_aprobacion -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_sga_documentos_resol_aprobacion; CREATE INDEX ifk_sga_tesis_sga_documentos_resol_aprobacion ON sga_tesis (resolucion_tesis); -- ALTER TABLE sga_tesis DROP CONSTRAINT fk_sga_tesis_sga_documentos_resol_aprobacion; ALTER TABLE sga_tesis ADD CONSTRAINT fk_sga_tesis_sga_documentos_resol_aprobacion FOREIGN KEY (resolucion_tesis) REFERENCES sga_documentos (documento) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis -- FK: fk_sga_tesis_sga_documentos_resol_evaluadores -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_sga_documentos_resol_evaluadores; CREATE INDEX ifk_sga_tesis_sga_documentos_resol_evaluadores ON sga_tesis (resolucion_evaluadores); -- ALTER TABLE sga_tesis DROP CONSTRAINT fk_sga_tesis_sga_documentos_resol_evaluadores; ALTER TABLE sga_tesis ADD CONSTRAINT fk_sga_tesis_sga_documentos_resol_evaluadores FOREIGN KEY (resolucion_evaluadores) REFERENCES sga_documentos (documento) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis -- FK: fk_sga_tesis_sga_elementos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_sga_elementos; CREATE INDEX ifk_sga_tesis_sga_elementos ON sga_tesis (actividad); -- ALTER TABLE sga_tesis DROP CONSTRAINT fk_sga_tesis_sga_elementos; ALTER TABLE sga_tesis ADD CONSTRAINT fk_sga_tesis_sga_elementos FOREIGN KEY (actividad) REFERENCES sga_elementos (elemento) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_tutores -- FK: fk_sga_tesis_tutores_mdp_personas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_tutores_mdp_personas; CREATE INDEX ifk_sga_tesis_tutores_mdp_personas ON sga_tesis_tutores (persona); -- ALTER TABLE sga_tesis_tutores DROP CONSTRAINT fk_sga_tesis_tutores_mdp_personas; ALTER TABLE sga_tesis_tutores ADD CONSTRAINT fk_sga_tesis_tutores_mdp_personas FOREIGN KEY (persona) REFERENCES mdp_personas (persona) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_tutores -- FK: fk_sga_tesis_tutores_sga_tesis -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_tutores_sga_tesis; CREATE INDEX ifk_sga_tesis_tutores_sga_tesis ON sga_tesis_tutores (tesis); -- ALTER TABLE sga_tesis_tutores DROP CONSTRAINT fk_sga_tesis_tutores_sga_tesis; ALTER TABLE sga_tesis_tutores ADD CONSTRAINT fk_sga_tesis_tutores_sga_tesis FOREIGN KEY (tesis) REFERENCES sga_tesis (tesis) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_tutores -- FK: fk_sga_tesis_tutores_sga_tesis_roles_tutor -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_sga_tesis_tutores_sga_tesis_roles_tutor; CREATE INDEX ifk_sga_tesis_tutores_sga_tesis_roles_tutor ON sga_tesis_tutores (rol_tutor); -- ALTER TABLE sga_tesis_tutores DROP CONSTRAINT fk_sga_tesis_tutores_sga_tesis_roles_tutor; ALTER TABLE sga_tesis_tutores ADD CONSTRAINT fk_sga_tesis_tutores_sga_tesis_roles_tutor FOREIGN KEY (rol_tutor) REFERENCES sga_tesis_roles_tutor (rol_tutor) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_cmb -- Actualizacion Nro de Secuencia: sga_tesis_cmb_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_tesis_cmb_seq',(SELECT MAX(cambio_estado) FROM sga_tesis_cmb)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_roles_evaluador -- Actualizacion Nro de Secuencia: sga_tesis_roles_evaluador_seq -- SIU: 1 a 100 -- Institución: 101 en adelante -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_tesis_roles_evaluador_seq',100); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis_roles_tutor -- Actualizacion Nro de Secuencia: sga_tesis_roles_tutor_seq -- SIU: 1 a 100 -- Institución: 101 en adelante -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_tesis_roles_tutor_seq',100); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: sga_tesis -- Actualizacion Nro de Secuencia: sga_tesis_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('sga_tesis_seq',(SELECT MAX(tesis) FROM sga_tesis)); -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000144.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000145.sql -- +++++++++++++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_equiv_parciales_basica -- Version: 3.0.0 -- Recupera las equivalencias parciales (Aprobadas/Reprobadas) activas. -- Tiene la misma estructura que la vista de regularidades: vw_regularidades -- -- Valores de los campos: -- origen (solo para cursadas) : D - Equivalencas Parciales (sga_actas_origen.origen) -- alcance (equivalencias) : P = Equivalencia Parcial -- tipo : Equivalencia Parcial -- resultado : A - Aprobado / R - Desaprobado -- tipo_tramite : N - Normal / R - Rectificativo -- vigente : 1 - Es Vigente / 0 - No esta vigente -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW vw_equiv_parciales_basica; CREATE OR REPLACE VIEW vw_equiv_parciales_basica ( elemento, origen, equivalencia_tramite, equivalencia_tramite_original, tipo_tramite, equivalencia, persona, alumno, plan_version, fecha, fecha_vigencia, es_vigente, escala_nota, nota, resultado ) AS SELECT sga_equiv_otorgada.elemento, cast('D' as char(1)) as origen, sga_equiv_tramite.equivalencia_tramite, CASE sga_equiv_tramite.tipo_tramite WHEN 'N' THEN sga_equiv_tramite.equivalencia_tramite WHEN 'R' THEN sga_equiv_tramite.rectifica_a END as equivalencia_tramite_original, sga_equiv_tramite.tipo_tramite as tipo_tramite, sga_equiv_otorgada.equivalencia, sga_alumnos.persona, sga_equiv_tramite.alumno, sga_equiv_tramite.plan_version, sga_equiv_otorgada.fecha, sga_equiv_otorgada.fecha_vigencia, CASE WHEN (sga_equiv_otorgada.fecha_vigencia IS NULL OR sga_equiv_otorgada.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as es_vigente, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado FROM sga_equiv_tramite, sga_equiv_otorgada, sga_alumnos WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_alumnos.alumno = sga_equiv_tramite.alumno AND sga_equiv_tramite.estado = 'C' -- Cerrado AND sga_equiv_otorgada.alcance = 'P' -- Equivalencia Parcial AND sga_equiv_otorgada.rectificado = 'N' -- No Rectificado AND sga_equiv_otorgada.estado = 'A' -- Activo AND sga_equiv_otorgada.resultado IN ('A','R') -- Aprobado/Reprobado ; -- ++++++++++++++++++++++++++++++ Fin view vw_equiv_parciales_basica +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_equiv_parciales_basica to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_hist_academica_basica (idem vw_hist_academica sin informacion adicional) -- Version: 3.0.0 -- Recupera -- * Examenes Aprobados/Reprobados/Ausentes -- * Promociones Aprobadas -- * Examenes / Promociones / Equivalencias totales / Otros Reconocimientos de actividades. -- ** No se consideran los examenes de Reválidas de cursadas (instancia = 5) -- -- Valores de los campos: -- resultado = A - Aprobado / R - Desaprobado / U - Ausente (examenes ausentes) -- tipo_acta y tipo_tramite = N - Normal / R - Rectificativo -- origen = E - Examen / P - Promocion / B - Equivalencia Total / A - Aprob. x Resolucion -- tipo = Examen / Promoción / Equivalencia / Aprob. por Resolución -- -- La vista devuelve lo siguiente: -- a. Promociones: Detalles ACTIVOS y NO RECTIFICADOS de actas CERRADAS de origen PROMOCIÓN. El único resultado válido es APROBADO. -- b. Examenes: Detalles ACTIVOS y NO RECTIFICADOS de actas CERRADAS de origen EXAMEN. Los resultados válidos son: APROBADO, REPROBADO, AUSENTE. -- c. Equivalencias: Detalles ACTIVOS de alcance TOTAL y NO RECTIFICADOS de trámites de equivalencia CERRADOS. Los resultados válidos son: APROBADO, REPROBADO. -- d. Aprobación por Resolución: ACTIVIDADES de tipo TOTAL en trámites de aprobación por resolución CERRADOS. -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW vw_hist_academica_basica; CREATE OR REPLACE VIEW vw_hist_academica_basica ( elemento, id_acta, id_acta_original, tipo_acta, origen, comision, llamado_mesa, equivalencia_tramite, equivalencia_tramite_original, tipo_tramite, equivalencia, persona, alumno, plan_version, instancia, fecha, fecha_vigencia, escala_nota, nota, resultado ) AS -- Exámenes y Promociones. Actas Original y Rectificativas SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.tipo_acta, sga_actas.origen, sga_actas.comision, sga_actas.llamado_mesa, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as equivalencia, sga_alumnos.persona, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado FROM sga_actas, sga_actas_detalle, sga_comisiones, sga_alumnos WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_alumnos.alumno = sga_actas_detalle.alumno AND sga_actas.estado = 'C' AND sga_actas.origen = 'P' AND sga_actas_detalle.estado = 'A' AND sga_actas_detalle.rectificado = 'N' UNION ALL -- EXAMENES: Actas Original y Rectificativas SELECT sga_mesas_examen.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.tipo_acta, sga_actas.origen, sga_actas.comision, sga_actas.llamado_mesa, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as equivalencia, sga_alumnos.persona, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.instancia, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado FROM sga_actas, sga_actas_detalle, sga_llamados_mesa, sga_mesas_examen, sga_alumnos WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_llamados_mesa.llamado_mesa = sga_actas.llamado_mesa AND sga_mesas_examen.mesa_examen = sga_llamados_mesa.mesa_examen AND sga_alumnos.alumno = sga_actas_detalle.alumno AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'E' AND sga_actas_detalle.estado = 'A' -- Activo AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.instancia IN (3, 4) -- Regulares y Libres UNION ALL -- Equivalencias Totales: Original y Rectificativas SELECT sga_equiv_otorgada.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as char(1)) as tipo_acta, 'B' as origen, cast(null as integer) as comision, cast(null as integer) as llamado_mesa, sga_equiv_tramite.equivalencia_tramite, CASE sga_equiv_tramite.tipo_tramite WHEN 'N' THEN sga_equiv_tramite.equivalencia_tramite WHEN 'R' THEN sga_equiv_tramite.rectifica_a END as equivalencia_tramite_original, sga_equiv_tramite.tipo_tramite as tipo_tramite, sga_equiv_otorgada.equivalencia, sga_alumnos.persona, sga_equiv_tramite.alumno, sga_equiv_tramite.plan_version, cast(null as integer) as instancia, sga_equiv_otorgada.fecha, sga_equiv_otorgada.fecha_vigencia, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado FROM sga_equiv_tramite, sga_equiv_otorgada, sga_alumnos WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_alumnos.alumno = sga_equiv_tramite.alumno AND sga_equiv_tramite.estado = 'C' -- Cerrado AND sga_equiv_tramite.estado = 'C' -- Cerrado AND sga_equiv_otorgada.alcance = 'T' -- Equivalencia Total AND sga_equiv_otorgada.rectificado = 'N' -- No Rectificado AND sga_equiv_otorgada.estado = 'A' -- Activo AND sga_equiv_otorgada.resultado IN ('A','R') -- Aprobado/Reprobado UNION ALL -- Aprobaciones por Resolucion. Solo actividades (No modulos) SELECT sga_reconocimiento_act.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as char(1)) as tipo_acta, 'A' as origen, cast(null as integer) as comision, cast(null as integer) as llamado_mesa, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as equivalencia, sga_alumnos.persona, sga_reconocimiento.alumno, sga_reconocimiento.plan_version, cast(null as integer) as instancia, sga_reconocimiento.fecha, cast(null as date) as fecha_vigencia, sga_reconocimiento_act.escala_nota, sga_reconocimiento_act.nota, 'A' as resultado FROM sga_reconocimiento, sga_reconocimiento_act, sga_alumnos, sga_elementos, sga_g3entidades_subtipos WHERE sga_reconocimiento_act.nro_tramite = sga_reconocimiento.nro_tramite AND sga_alumnos.alumno = sga_reconocimiento.alumno AND sga_reconocimiento.estado = 'C' -- Cerrado AND sga_reconocimiento_act.reconocimiento_total = 'S' AND sga_elementos.elemento = sga_reconocimiento_act.elemento AND sga_g3entidades_subtipos.entidad_subtipo = sga_elementos.entidad_subtipo AND sga_g3entidades_subtipos.entidad_tipo = 2 -- Actividades ; -- ++++++++++++++++++++++++++++++ Fin view vw_hist_academica_basica +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_hist_academica_basica to public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- View: vw_regularidades_basica -- Version: 3.0.0 -- Recupera las cursadas y equivalencias de regularidad (Aprobadas/Reprobadas). -- Cursadas / Equivalencias de Regularidad / Otros Reconocimientos de regularidad. /Promociones (solo cuando la comision no tiene instancia de regularidad) -- -- Valores de los campos: -- origen (cursadas) : R = Acta de Regularidad / P = Acta de Promoción (son alumnos que no estan en acta de cursadas de esa comision) / C = Equivalencia de Regularidad -- alcance (equivalencias) : Equivalencia de Regularidad (Solo recupera estas) -- tipo : Regularidad / Promoción / Equivalencia de Regularidad (No se consideran las Equivalencias Parciales) -- resultado : A - Aprobado / R - Desaprobado / U - Ausente -- tipo_acta y tipo_tramite: N - Normal / R - Rectificativo -- vigente : 1 - Es Vigente / 0 - No esta vigente -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP VIEW vw_regularidades_basica; CREATE OR REPLACE VIEW vw_regularidades_basica ( elemento, id_acta, id_acta_original, tipo_acta, origen, comision, equivalencia_tramite, equivalencia_tramite_original, tipo_tramite, equivalencia, persona, alumno, plan_version, fecha, fecha_vigencia, es_vigente, escala_nota, nota, resultado ) AS -- 1. Actas de Cursadas SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.tipo_acta, sga_actas.origen, sga_actas.comision, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as equivalencia, sga_alumnos.persona, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, CASE WHEN (sga_actas_detalle.fecha_vigencia IS NULL OR sga_actas_detalle.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as es_vigente, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado FROM sga_actas, sga_actas_detalle, sga_comisiones, sga_alumnos WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_alumnos.alumno = sga_actas_detalle.alumno AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'R' -- Regularidades.. AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.estado = 'A' -- Activo UNION ALL -- 2. Actas de Promociones (de comisiones que son solo promocionales) SELECT sga_comisiones.elemento, sga_actas.id_acta, CASE sga_actas.tipo_acta WHEN 'N' THEN sga_actas.id_acta WHEN 'R' THEN sga_actas.acta_referencia END as id_acta_original, sga_actas.tipo_acta, sga_actas.origen, sga_actas.comision, cast(null as integer) as equivalencia_tramite, cast(null as integer) as equivalencia_tramite_original, cast(null as char(1)) as tipo_tramite, cast(null as integer) as equivalencia, sga_alumnos.persona, sga_actas_detalle.alumno, sga_actas_detalle.plan_version, sga_actas_detalle.fecha, sga_actas_detalle.fecha_vigencia, CASE WHEN (sga_actas_detalle.fecha_vigencia IS NULL OR sga_actas_detalle.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as es_vigente, sga_actas_detalle.escala_nota, sga_actas_detalle.nota, sga_actas_detalle.resultado FROM sga_actas, sga_actas_detalle, sga_comisiones, sga_alumnos WHERE sga_actas_detalle.id_acta = sga_actas.id_acta AND sga_comisiones.comision = sga_actas.comision AND sga_alumnos.alumno = sga_actas_detalle.alumno AND sga_actas.estado = 'C' -- Cerrado AND sga_actas.origen = 'P' -- Promociones AND sga_actas_detalle.rectificado = 'N' -- No Rectificado AND sga_actas_detalle.estado = 'A' -- Activo AND NOT EXISTS (SELECT 1 FROM sga_comisiones_instancias WHERE sga_comisiones_instancias.comision = sga_actas.comision AND sga_comisiones_instancias.instancia = 1) -- NO Existe instancia de cursada UNION ALL -- 3. Equivalencias de regularidad: Original y Rectificativas SELECT sga_equiv_otorgada.elemento, cast(null as integer) as id_acta, cast(null as integer) as id_acta_original, cast(null as char(1)) as tipo_acta, 'C' as origen, cast(null as integer) as comision, sga_equiv_tramite.equivalencia_tramite, CASE sga_equiv_tramite.tipo_tramite WHEN 'N' THEN sga_equiv_tramite.equivalencia_tramite WHEN 'R' THEN sga_equiv_tramite.rectifica_a END as equivalencia_tramite_original, sga_equiv_tramite.tipo_tramite as tipo_tramite, sga_equiv_otorgada.equivalencia, sga_alumnos.persona, sga_equiv_tramite.alumno, sga_equiv_tramite.plan_version, sga_equiv_otorgada.fecha, sga_equiv_otorgada.fecha_vigencia, CASE WHEN (sga_equiv_otorgada.fecha_vigencia IS NULL OR sga_equiv_otorgada.fecha_vigencia >= CURRENT_DATE) THEN 1 ELSE 0 END as es_vigente, sga_equiv_otorgada.escala_nota, sga_equiv_otorgada.nota, sga_equiv_otorgada.resultado FROM sga_equiv_tramite, sga_equiv_otorgada, sga_alumnos WHERE sga_equiv_otorgada.equivalencia_tramite = sga_equiv_tramite.equivalencia_tramite AND sga_alumnos.alumno = sga_equiv_tramite.alumno AND sga_equiv_tramite.estado = 'C' -- Cerrado AND sga_equiv_otorgada.alcance = 'R' -- Equivalencia de Regularidad AND sga_equiv_otorgada.rectificado = 'N' -- No Rectificado AND sga_equiv_otorgada.estado = 'A' -- Activo AND sga_equiv_otorgada.resultado IN ('A','R') -- Aprobado/Reprobado ; -- ++++++++++++++++++++++++++++++ Fin view vw_regularidades_basica +++++++++++++++++++++++++++++++++++++++ GRANT SELECT ON vw_regularidades_basica to public; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000145.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000146.sql -- +++++++++++++++++++++++++++++++++++++++ UPDATE par_parametros_sistema SET descripcion = 'Define si el legajo de alumno es el mismo para todas las propuetas en las que esta el alumno' WHERE parametro = 'mat_legajo_alumno_unico'; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_datos_salud -- Secuencia: mdp_datos_salud_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE mdp_datos_salud_seq; CREATE SEQUENCE mdp_datos_salud_seq START 1; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_discapacidades_tipos -- Secuencia: mdp_discapacidades_tipos_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP SEQUENCE mdp_discapacidades_tipos_seq; CREATE SEQUENCE mdp_discapacidades_tipos_seq START 1; ALTER TABLE mdp_personas ADD apellido_elegido Varchar(60); ALTER TABLE mdp_personas ADD nombres_elegido Varchar(60); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_datos_salud -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS mdp_datos_salud; CREATE TABLE mdp_datos_salud ( dato_salud INTEGER NOT NULL DEFAULT nextval('mdp_datos_salud_seq'::text) , persona Integer NOT NULL, tipo Integer NOT NULL, grado Char(1) NOT NULL, caracter Char(1) NOT NULL, fecha_desde Date, fecha_hasta Date, certificado Char(1) NOT NULL DEFAULT 'N', cobertura_salud Char(1) NOT NULL DEFAULT 'N', observaciones Varchar(255) ); -- ALTER TABLE mdp_datos_salud DROP CONSTRAINT pk_mdp_datos_salud; ALTER TABLE mdp_datos_salud ADD CONSTRAINT pk_mdp_datos_salud PRIMARY KEY (dato_salud); Revoke all ON mdp_datos_salud FROM public; -- ++++++++++++++++++++++++++ Fin tabla mdp_datos_salud +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_discapacidades_caracter -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS mdp_discapacidades_caracter; CREATE TABLE mdp_discapacidades_caracter ( caracter Char(1) NOT NULL, nombre Varchar(50) NOT NULL, descripcion Varchar(255) ); -- ALTER TABLE mdp_discapacidades_caracter DROP CONSTRAINT pk_mdp_discapacidades_caracter; ALTER TABLE mdp_discapacidades_caracter ADD CONSTRAINT pk_mdp_discapacidades_caracter PRIMARY KEY (caracter); Revoke all ON mdp_discapacidades_caracter FROM public; -- ++++++++++++++++++++++++++ Fin tabla mdp_discapacidades_caracter +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_discapacidades_grado -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS mdp_discapacidades_grado; CREATE TABLE mdp_discapacidades_grado ( grado Char(1) NOT NULL, nombre Varchar(50) NOT NULL, descripcion Varchar(255) ); -- ALTER TABLE mdp_discapacidades_grado DROP CONSTRAINT pk_mdp_discapacidades_grado; ALTER TABLE mdp_discapacidades_grado ADD CONSTRAINT pk_mdp_discapacidades_grado PRIMARY KEY (grado); Revoke all ON mdp_discapacidades_grado FROM public; -- ++++++++++++++++++++++++++ Fin tabla mdp_discapacidades_grado +++++++++++++++++++++++++++++ -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_discapacidades_tipos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TABLE IF EXISTS mdp_discapacidades_tipos; CREATE TABLE mdp_discapacidades_tipos ( tipo INTEGER NOT NULL DEFAULT nextval('mdp_discapacidades_tipos_seq'::text) , nombre Varchar(50) NOT NULL, descripcion Varchar(255) ); -- ALTER TABLE mdp_discapacidades_tipos DROP CONSTRAINT pk_mdp_discapacidades_tipos; ALTER TABLE mdp_discapacidades_tipos ADD CONSTRAINT pk_mdp_discapacidades_tipos PRIMARY KEY (tipo); Revoke all ON mdp_discapacidades_tipos FROM public; -- ++++++++++++++++++++++++++ Fin tabla mdp_discapacidades_tipos +++++++++++++++++++++++++++++ GRANT select ON mdp_datos_salud TO public; GRANT update ON mdp_datos_salud TO public; GRANT delete ON mdp_datos_salud TO public; GRANT insert ON mdp_datos_salud TO public; GRANT select ON mdp_discapacidades_caracter TO public; GRANT update ON mdp_discapacidades_caracter TO public; GRANT delete ON mdp_discapacidades_caracter TO public; GRANT insert ON mdp_discapacidades_caracter TO public; GRANT select ON mdp_discapacidades_grado TO public; GRANT update ON mdp_discapacidades_grado TO public; GRANT delete ON mdp_discapacidades_grado TO public; GRANT insert ON mdp_discapacidades_grado TO public; GRANT select ON mdp_discapacidades_tipos TO public; GRANT update ON mdp_discapacidades_tipos TO public; GRANT delete ON mdp_discapacidades_tipos TO public; GRANT insert ON mdp_discapacidades_tipos TO public; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_datos_salud -- Check: ck_mdp_datos_salud_certificado -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE mdp_datos_salud DROP CONSTRAINT ck_mdp_datos_salud_certificado; ALTER TABLE mdp_datos_salud ADD CONSTRAINT ck_mdp_datos_salud_certificado CHECK (certificado IN ('S', 'N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_datos_salud -- Check: ck_mdp_datos_salud_cobertura_salud -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE mdp_datos_salud DROP CONSTRAINT ck_mdp_datos_salud_cobertura_salud; ALTER TABLE mdp_datos_salud ADD CONSTRAINT ck_mdp_datos_salud_cobertura_salud CHECK (cobertura_salud IN ('S', 'N')); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_datos_salud -- FK: fk_mdp_datos_salud_mdp_discapacidades_caracter -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mdp_datos_salud_mdp_discapacidades_caracter; CREATE INDEX ifk_mdp_datos_salud_mdp_discapacidades_caracter ON mdp_datos_salud (caracter); -- ALTER TABLE mdp_datos_salud DROP CONSTRAINT fk_mdp_datos_salud_mdp_discapacidades_caracter; ALTER TABLE mdp_datos_salud ADD CONSTRAINT fk_mdp_datos_salud_mdp_discapacidades_caracter FOREIGN KEY (caracter) REFERENCES mdp_discapacidades_caracter (caracter) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_datos_salud -- FK: fk_mdp_datos_salud_mdp_discapacidades_grado -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mdp_datos_salud_mdp_discapacidades_grado; CREATE INDEX ifk_mdp_datos_salud_mdp_discapacidades_grado ON mdp_datos_salud (grado); -- ALTER TABLE mdp_datos_salud DROP CONSTRAINT fk_mdp_datos_salud_mdp_discapacidades_grado; ALTER TABLE mdp_datos_salud ADD CONSTRAINT fk_mdp_datos_salud_mdp_discapacidades_grado FOREIGN KEY (grado) REFERENCES mdp_discapacidades_grado (grado) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_datos_salud -- FK: fk_mdp_datos_salud_mdp_discapacidades_tipos -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mdp_datos_salud_mdp_discapacidades_tipos; CREATE INDEX ifk_mdp_datos_salud_mdp_discapacidades_tipos ON mdp_datos_salud (tipo); -- ALTER TABLE mdp_datos_salud DROP CONSTRAINT fk_mdp_datos_salud_mdp_discapacidades_tipos; ALTER TABLE mdp_datos_salud ADD CONSTRAINT fk_mdp_datos_salud_mdp_discapacidades_tipos FOREIGN KEY (tipo) REFERENCES mdp_discapacidades_tipos (tipo) on update restrict on delete restrict; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_datos_salud -- FK: fk_mdp_datos_salud_mdp_personas -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP INDEX ifk_mdp_datos_salud_mdp_personas; CREATE INDEX ifk_mdp_datos_salud_mdp_personas ON mdp_datos_salud (persona); -- ALTER TABLE mdp_datos_salud DROP CONSTRAINT fk_mdp_datos_salud_mdp_personas; ALTER TABLE mdp_datos_salud ADD CONSTRAINT fk_mdp_datos_salud_mdp_personas FOREIGN KEY (persona) REFERENCES mdp_personas (persona) on update restrict on delete restrict; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: mdp_discapacidades_tipos -- Tipos de Discapacidades de las personas -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO mdp_discapacidades_tipos (tipo, nombre, descripcion) VALUES( 1, 'Neurológica', 'Neurológica'); INSERT INTO mdp_discapacidades_tipos (tipo, nombre, descripcion) VALUES( 2, 'Psicológica', 'Psicológica'); INSERT INTO mdp_discapacidades_tipos (tipo, nombre, descripcion) VALUES( 3, 'Motora', 'Motora'); INSERT INTO mdp_discapacidades_tipos (tipo, nombre, descripcion) VALUES( 4, 'Renal', 'Renal'); INSERT INTO mdp_discapacidades_tipos (tipo, nombre, descripcion) VALUES( 5, 'Respiratoria', 'Respiratoria'); INSERT INTO mdp_discapacidades_tipos (tipo, nombre, descripcion) VALUES( 6, 'Auditiva', 'Auditiva'); INSERT INTO mdp_discapacidades_tipos (tipo, nombre, descripcion) VALUES( 7, 'Cardiaca', 'Cardiaca'); INSERT INTO mdp_discapacidades_tipos (tipo, nombre, descripcion) VALUES( 8, 'Visual', 'Visual'); INSERT INTO mdp_discapacidades_tipos (tipo, nombre, descripcion) VALUES( 9, 'Metabólica', 'Metabólica'); INSERT INTO mdp_discapacidades_tipos (tipo, nombre, descripcion) VALUES(10, 'Trastornos del lenguaje', 'Trastornos del lenguaje'); INSERT INTO mdp_discapacidades_tipos (tipo, nombre, descripcion) VALUES(11, 'Otras', 'Otras'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: mdp_discapacidades_grado -- Grado de Discapacidad de las personas -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO mdp_discapacidades_grado (grado, nombre, descripcion) VALUES ('S', 'Severa', 'Discapacidad de grado severa'); INSERT INTO mdp_discapacidades_grado (grado, nombre, descripcion) VALUES ('M', 'Moderada', 'Discapadidad de grado moderad'); INSERT INTO mdp_discapacidades_grado (grado, nombre, descripcion) VALUES ('L', 'Leve', 'Discapadidad de grado leve'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: mdp_discapacidades_caracter -- Alcance de los mensajes -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO mdp_discapacidades_caracter (caracter, nombre, descripcion) VALUES ( 'T', 'Transitoria', 'Discapacidad de caracter transitoria'); INSERT INTO mdp_discapacidades_caracter (caracter, nombre, descripcion) VALUES ( 'P', 'Permanente', 'Discapadidad de caracter permanente'); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_datos_salud -- Actualizacion Nro de Secuencia: mdp_datos_salud_seq -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('mdp_datos_salud_seq',(SELECT MAX(dato_salud) FROM mdp_datos_salud)); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 - Sistema de Gestión Académica -- Versión 3.0.0 -- Tabla: mdp_discapacidades_tipos -- Actualizacion Nro de Secuencia: mdp_discapacidades_tipos_seq -- SIU: 1 a 100 -- Institucion: 101 en adelante -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT setval('mdp_discapacidades_tipos_seq', 100); -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000146.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000147.sql -- +++++++++++++++++++++++++++++++++++++++ -- Cambia nombre año por anio. DELETE FROM sga_reglas_parametros WHERE regla in (503,504, 505, 506, 507, 508, 509, 510) and parametro = 'año'; /*INSERT INTO sga_reglas_parametros (regla, parametro, orden, tipo_de_dato, etiqueta, valor_desde, valor_hasta) VALUES (503,'anio', 2, 'E', 'Año', '1','10'); INSERT INTO sga_reglas_parametros (regla, parametro, orden, tipo_de_dato, etiqueta, valor_desde, valor_hasta) VALUES (504,'anio', 2, 'E', 'Año', '1','10'); INSERT INTO sga_reglas_parametros (regla, parametro, orden, tipo_de_dato, etiqueta, valor_desde, valor_hasta) VALUES (505,'anio', 2, 'E', 'Año', '1','10'); INSERT INTO sga_reglas_parametros (regla, parametro, orden, tipo_de_dato, etiqueta, valor_desde, valor_hasta) VALUES (506,'anio', 2, 'E', 'Año', '1','10'); INSERT INTO sga_reglas_parametros (regla, parametro, orden, tipo_de_dato, etiqueta, valor_desde, valor_hasta) VALUES (507,'anio', 1, 'E', 'Año', '1','10'); INSERT INTO sga_reglas_parametros (regla, parametro, orden, tipo_de_dato, etiqueta, valor_desde, valor_hasta) VALUES (508,'anio', 1, 'E', 'Año', '1','10'); INSERT INTO sga_reglas_parametros (regla, parametro, orden, tipo_de_dato, etiqueta, valor_desde, valor_hasta) VALUES (509,'anio', 1, 'E', 'Año', '1','10'); INSERT INTO sga_reglas_parametros (regla, parametro, orden, tipo_de_dato, etiqueta, valor_desde, valor_hasta) VALUES (510,'anio', 1, 'E', 'Año', '1','10');*/ -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000147.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000148.sql -- +++++++++++++++++++++++++++++++++++++++ DELETE FROM sga_reglas_parametros where regla = 106 and parametro = 'creditos'; --INSERT INTO sga_reglas_parametros (regla, parametro, etiqueta, tipo_de_dato, orden, valor_desde, valor_hasta) VALUES (106,'creditos', 'Créditos','F', 1, '1.00', '1000.00'); -- Borro las dos funciones existentes y dejo una sola con 3 parametros. DROP FUNCTION f_es_ingresante(integer, varchar); DROP FUNCTION f_es_ingresante(integer, integer); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_es_ingresante(integer, varchar, integer) -- Verifica si un alumno es ingresante segun el año académico correspondiente a una fecha. -- -- Recibe: -- 1. Id Alumno -- 2. Fecha. (Formato string yyyy-mm-dd. Puede ser nulo si se pasa el año académico) -- 3. Año académico (puede ser nulo. en ese caso se calcula el año segun la fecha) -- -- Retorna: 1 - Es Ingresante / 0 - No es Ingresante -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_es_ingresante (integer, varchar, integer); CREATE OR REPLACE FUNCTION f_es_ingresante (pAlumno integer, pFecha varchar(10), pAnioAcademico Integer) RETURNS integer AS $BODY$ -- Variables locales DECLARE _anio integer; DECLARE _cnt integer; DECLARE _dFecha date; DECLARE _es_ingresante smallint; BEGIN _cnt := 0; _anio := NULL; _es_ingresante := 0; -- Si el año academico no viene como parámetro recupero el año académico segun la fecha IF pAnioAcademico IS NULL THEN IF pFecha IS NULL THEN _dFecha := CURRENT_DATE; ELSE -- Convierto la fecha en formato yyyy-mm-dd a date _dFecha := date(pFecha); END IF; -- Busca el año académico correspondiente a la fecha SELECT anio_academico INTO _anio FROM sga_anios_academicos WHERE _dFecha BETWEEN fecha_inicio AND fecha_fin; ELSE _anio := pAnioAcademico; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Verifica el año académico de la inscripción a propuesta del alumno en estado Aceptada o Pendiente -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT COUNT(*) INTO _cnt FROM sga_alumnos, sga_propuestas_aspira, sga_situacion_aspirante WHERE sga_alumnos.alumno = pAlumno AND sga_propuestas_aspira.persona = sga_alumnos.persona AND sga_propuestas_aspira.propuesta = sga_alumnos.propuesta AND sga_situacion_aspirante.situacion_asp = sga_propuestas_aspira.situacion_asp AND sga_situacion_aspirante.resultado_asp IN ('A','P') AND sga_propuestas_aspira.anio_academico = _anio; IF _cnt > 0 THEN _es_ingresante := 1; END IF; -- Retorna si es ingresante o no. RETURN _es_ingresante; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_es_ingresante ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_es_ingresante (integer, varchar, integer) FROM public; GRANT EXECUTE ON FUNCTION f_es_ingresante(integer, varchar, integer) TO public; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000148.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000149.sql -- +++++++++++++++++++++++++++++++++++++++ DROP FUNCTION f_generar_asistencia(integer); -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000148.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000150.sql -- +++++++++++++++++++++++++++++++++++++++ ALTER TABLE men_mensajes ADD COLUMN error_envio_mail TEXT; UPDATE sga_reglas SET nombre = 'Tener aprobado el año x', descripcion = 'Tener aprobado un año de la propuesta', mensaje_usuario = 'Tener aprobado el %1% año', mensaje_validacion = 'Tener aprobado el año x', php_clase = 'regla_tener_aprobado_un_anio' WHERE regla = 507; UPDATE sga_reglas SET nombre = 'Tener n créditos en actividades regularizadas de (1er, 2do, ...) año', descripcion = 'Tener una cierta cantidad de créditos de actividades regularizadas de un año de la propuesta', mensaje_usuario = 'Tener %1% créditos de actividades regularizadas de %2% año', mensaje_validacion = 'Tener n créditos en actividades regularizadas de (1er, 2do, ...) año' WHERE regla = 513; UPDATE sga_reglas SET nombre = 'Tener N créditos en actividades aprobadas de (1er, 2do, ...) año', mensaje_usuario = 'Tener %1% créditos de actividades aprobadas de %2% año', mensaje_validacion = 'Tener N créditos de actividades aprobadas de (1er, 2do, ...) año' WHERE regla = 514; UPDATE sga_reglas SET descripcion = 'Tener aprobado hasta un año de la propuesta' WHERE regla = 509; UPDATE sga_reglas SET descripcion = 'Tener una cierta cantidad de créditos de actividades regularizadas' WHERE regla = 512; UPDATE sga_reglas SET descripcion = 'Tener una cierta cantidad de créditos en actividades aprobadas' WHERE regla = 511; UPDATE sga_reglas SET nombre = 'Tener regularizado el año x', descripcion = 'Tener regularizado un año del plan de estudios', mensaje_usuario = 'Tener regularizado el %1% año', mensaje_validacion = 'Tener regularizado el año x', php_clase = 'regla_tener_regularizado_un_anio' WHERE regla = 508; -- Seteo las reglas de cada requisito en la tabla sga_requisitos_x_accion UPDATE sga_requisitos_x_accion SET regla = r.regla FROM sga_requisitos as r WHERE sga_requisitos_x_accion.tipo = 'R' AND sga_requisitos_x_accion.requisito = r.requisito; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: get_regla_mensaje -- -- Recupera los elementos que consituyen una version de plan de estudios. -- -- Recibe: get_regla_mensaje(integer, text) -- 1.- ID de la Regla -- 2.- Parámetros de la regla (separados por el pipe |) -- -- Retorna: String con el mensaje al usuario. -- -- Ejemplo: get_regla_mensaje(2, '50|5|10') -- Mensaje genérico de la regla: "Obtener %1% Créditos, tener al menos %2% materias aprobadas y %3% materias cursadas" -- La función retorna: "Obtener 50 Créditos, tener al menos 5 materias aprobadas y 10 materias cursadas" -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION get_regla_mensaje(integer, text); CREATE OR REPLACE FUNCTION get_regla_mensaje(pRegla integer, pParametros text) RETURNS text AS $BODY$ DECLARE _valores text[]; _valor text; _param text[]; _mensaje_compuesto text; _i smallint; _cant smallint; cur_parametros record; BEGIN -- Mensaje al usuario SELECT mensaje_usuario INTO _mensaje_compuesto FROM sga_reglas WHERE regla = pRegla; _i := 0; FOR cur_parametros IN SELECT parametro FROM sga_reglas_parametros WHERE regla = pRegla LOOP _i := _i + 1; _param[_i] := cur_parametros.parametro; END LOOP; IF _i = 0 THEN -- Retorno el mensaje. No tiene parametros. RETURN _mensaje_compuesto; ELSE _cant := _i; -- Paso a un array los valores del 2do parametro de la funcion SELECT regexp_split_to_array( pParametros, $$\|$$) INTO _valores; -- Reemplazo los valores de los parametros en el mensaje para el usuario. Busco los %i% FOR _i IN 1 .. _cant LOOP _valor := _valores[_i]; IF UpperBound(_param) >= _i THEN IF _param[_i] = 'anio' THEN IF _valores[_i] = '1' THEN _valor := _valores[_i] || 'er'; ELSEIF _valores[_i] = '2' THEN _valor := _valores[_i] || 'do'; ELSEIF _valores[_i] = '3' THEN _valor := _valores[_i] || 'er'; ELSEIF _valores[_i] = '4' THEN _valor := _valores[_i] || 'to'; ELSEIF _valores[_i] = '5' THEN _valor := _valores[_i] || 'to'; ELSEIF _valores[_i] = '6' THEN _valor := _valores[_i] || 'to'; ELSEIF _valores[_i] = '7' THEN _valor := _valores[_i] || 'mo'; ELSEIF _valores[_i] = '8' THEN _valor := _valores[_i] || 'vo'; ELSEIF _valores[_i] = '9' THEN _valor := _valores[_i] || 'no'; ELSEIF _valores[_i] = '10' THEN _valor := _valores[_i] || 'mo'; END IF; END IF; END IF; _mensaje_compuesto := regexp_replace(_mensaje_compuesto, '%' || _i::text || '%', _valor); END LOOP; -- Retorno el mensaje compuesto RETURN _mensaje_compuesto; END IF; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++++ Fin Function get_regla_mensaje(integer, text) ++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION get_regla_mensaje (integer, text) FROM public; GRANT EXECUTE ON FUNCTION get_regla_mensaje (integer, text) to public; -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000150.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000151.sql -- +++++++++++++++++++++++++++++++++++++++ -- ALTER TABLE sga_equiv_tramite ALTER COLUMN operador DROP NOT NULL; ALTER TABLE sga_equiv_otorgada ALTER COLUMN escala_nota DROP NOT NULL; INSERT INTO par_puntos_control_parametros (parametro, descripcion, tipo_de_dato) VALUES ('elemento', 'Actividad/Modulo','E'); ALTER TABLE sga_g3entidades_subtipos ADD tabla_id varchar(50); ALTER TABLE sga_g3entidades_subtipos ADD query_id_nombre varchar(300); UPDATE sga_g3entidades_subtipos SET tabla_id = 'elemento', query_id_nombre = 'SELECT elemento as id, nombre FROM sga_elementos WHERE entidad = ' WHERE entidad_tipo IN (1,2); UPDATE sga_g3entidades_subtipos SET tabla_id = 'institucion', query_id_nombre = 'SELECT institucion as id, nombre FROM sga_instituciones WHERE entidad = ' WHERE entidad_tipo = 4; UPDATE sga_g3entidades_subtipos SET tabla_id = 'responsable_academica', query_id_nombre = 'SELECT responsable_academica as id, nombre FROM sga_responsables_academicas WHERE entidad = ' WHERE entidad_tipo = 5; UPDATE sga_g3entidades_subtipos SET tabla_id = 'propuesta_tipo', query_id_nombre = 'SELECT propuesta_tipo as id, descripcion as nombre FROM sga_propuestas_tipos WHERE propuesta_tipo = ' WHERE entidad_tipo = 6; UPDATE sga_g3entidades_subtipos SET tabla_id = 'plan', query_id_nombre = 'SELECT plan as id, nombre FROM sga_planes WHERE entidad = ' WHERE entidad_tipo = 7; UPDATE sga_g3entidades_subtipos SET tabla_id = 'plan_version', query_id_nombre = 'SELECT plan_version as id, nombre FROM sga_planes_versiones WHERE entidad = ' WHERE entidad_tipo = 8; UPDATE sga_g3entidades_subtipos SET tabla_id = 'convenio', query_id_nombre = 'SELECT convenio_tipo as id, nombre FROM sga_convenios as c, sga_convenios_tipos as t WHERE c.convenio_tipo = c.convenio_tipo AND c.entidad = ' WHERE entidad_tipo = 9; UPDATE sga_g3entidades_subtipos SET tabla_id = 'certificado', query_id_nombre = 'SELECT certificado as id, nombre FROM sga_certificados WHERE entidad = ' WHERE entidad_tipo = 10; UPDATE sga_g3entidades_subtipos SET tabla_id = 'periodo_lectivo', query_id_nombre = 'SELECT pl.periodo_lectivo as id, p.nombre as nombre FROM sga_periodos_lectivos as pl, sga_periodos as p WHERE pl.periodo = p.periodo AND pl.entidad = ' WHERE entidad_tipo = 11 AND entidad_subtipo = 300; UPDATE sga_g3entidades_subtipos SET tabla_id = 'comision', query_id_nombre = 'SELECT comision as id, nombre as nombre FROM sga_comisiones WHERE entidad = ' WHERE entidad_tipo = 11 AND entidad_subtipo = 350; UPDATE sga_g3entidades_subtipos SET tabla_id = 'mesa_examen', query_id_nombre = 'SELECT m.mesa_examen as id, p.nombre as nombre FROM sga_mesas_examen as m, sga_periodos as p WHERE m.periodo = p.periodo AND m.entidad = ' WHERE entidad_tipo = 12; UPDATE sga_g3entidades_subtipos SET tabla_id = 'llamado_mesa', query_id_nombre = 'SELECT llm.llamado_mesa as id, p.nombre as nombre FROM sga_llamados_mesa as llm, sga_llamados_turno as llt, sga_periodos as p WHERE llm.llamado = llt.llamado AND llt.periodo = p.periodo AND llm.entidad = ' WHERE entidad_tipo = 13; -- Setea los mnsajes de validacion de algunas reglas DELETE FROM sga_reglas_mensajes WHERE regla < 10; -- Los %1% son los parametros propios de la regla (sga_reglas_parametros.parametro) y los $1$ son los parámetros extras para componer el mensaje -- de validación de la regla. -- $1$ = Nombre de la actividad INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (1, 1, 'El alumno debe tener aprobada la actividad $1$', 'El alumno no debe tener aprobada la actividad $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (1, 2, 'Debes tener aprobada la actividad $1$', 'No debes tener aprobada la actividad $1$'); -- $1$ = Nombre de la actividad INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (2, 1, 'El alumno debe tener regularizada la actividad $1$', 'El alumno no debe tener regularizada la actividad $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (2, 2, 'Debes tener regularizada la actividad $1$', 'No debes tener regularizada la actividad $1$'); -- $1$ = Nombre de la actividad INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (3, 1, 'El alumno debe estar inscripto para cursar la actividad $1$', 'El alumno no debe estar inscripto para cursar la actividad $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (3, 2, 'Debes estar inscripto para cursar la actividad $1$', 'No debes estar inscripto para cursar la actividad $1$'); -- $1$ = Nombre de la actividad INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (4, 1, 'El alumno debe estar inscripto a examen en la actividad $1$', 'El alumno no debe estar inscripto a examen en la actividad $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (4, 2, 'Debes estar inscripto a examen en la actividad $1$', 'No debes estar inscripto a examen en la actividad $1$'); -- $1$ = Nombre de la actividad INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (5, 1, 'El alumno debe estar inscripto para cursar o tener regularizada la actividad $1$', 'El alumno no debe estar inscripto para cursar ni tener regularizada la actividad $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (5, 2, 'Debes debe estar inscripto para cursar o tener regularizada la actividad $1$', 'No debes estar inscripto para cursar ni tener regularizada la actividad $1$'); UPDATE sga_reglas SET nombre = 'Todas las actividades son optativas' WHERE regla = 110; DELETE FROM sga_reglas_mensajes WHERE regla BETWEEN 100 and 110; -- $1$ = Cantidad de puntos del modulo / $2$ = Nombre del Módulo / $3$ = Cantidad de puntos obtenidos de las actividades aprobadas del módulo /*INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (100, 1, 'El alumno debe obtener $1$ puntos del módulo $2$. Obtuvo $3$ puntos', 'El alumno debe obtener menos de $1$ puntos del módulo $2$. Obtuvo $3$ puntos'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (100, 2, 'Debes obtener $1$ puntos del módulo $2$. Obtuviste $3$ puntos', 'Debes obtener menos de $1$ puntos del módulo $2$. Obtuvo $3$ puntos');*/ -- $2$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (101, 1, 'El alumno debe tener todas las actividades aprobadas del módulo $1$', 'El alumno no debe tener todas las actividades aprobadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (101, 2, 'Debes tener todas las actividades aprobadas del módulo $1$', 'No debes tener todas las actividades aprobadas del módulo $1$'); -- $1$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (102, 1, 'El alumno debe tener todas las actividades regularizadas del módulo $1$', 'El alumno no debe tener todas las actividades regularizadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (102, 2, 'Debes tener todas las actividades regularizadas del módulo $1$', 'No debes tener todas las actividades regularizadas del módulo $1$'); -- %1% = Cantidad de actividades aprobadas / $1$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (103, 1, 'El alumno debe tener al menos %1% actividades aprobadas del módulo $1$', 'El alumno debe tener menos de %1% actividades aprobadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (103, 2, 'Debes tener al menos %1% actividades aprobadas del módulo $1$', 'El alumno debe tener menos de %1% actividades aprobadas del módulo $1$'); -- %1% = Cantidad de actividades regularizadas / $1$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (104, 1, 'El alumno debe tener al menos %1% actividades regularizadas del módulo $1$', 'El alumno debe tener menos de %1% actividades regularizadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (104, 2, 'Debes tener al menos %1% actividades regularizadas del módulo $1$', 'El alumno debe tener menos de %1% actividades regularizadas del módulo $1$'); -- %1% = Creditos / $1$ = Nombre del Módulo /*INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (105, 1, 'El alumno debe obtener %1% créditos del módulo $1$', 'El alumno debe obtener menos de %1% créditos del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (105, 2, 'Debes obtener %1% créditos del módulo $1$', 'El alumno debe obtener menos de %1% créditos del módulo $1$'); -- %1% = Cantidad de creditos / %2$% = Cantidad de actividades aprobadas / $1$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (106, 1, 'El alumno debe obtener %1% créditos y tener %2% actividades aprobadas del módulo $1$', 'El alumno no debe obtener %1% créditos ni tener %2% actividades aprobadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (106, 2, 'Debes obtener %1% créditos y tener %2% actividades aprobadas del módulo $1$', 'No debes obtener %1% créditos ni tener %2% actividades aprobadas del módulo $1$'); -- %1% = Cantidad de creditos / %2$% = Cantidad de actividades aprobadas / $1$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (107, 1, 'El alumno debe obtener %1% créditos o tener %2% actividades aprobadas del módulo $1$', 'El alumno no debe obtener %1% créditos o tener %2% actividades aprobadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (107, 2, 'Debes obtener %1% créditos o tener %2% actividades aprobadas del módulo $1$', 'No debes obtener %1% créditos ni tener %2% actividades aprobadas del módulo $1$');*/ -- %1% = Porcentaje de actividades aprobadas / $1$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (108, 1, 'El alumno debe tener el %1%% actividades aprobadas del módulo $1$', 'El alumno debe tener menos del %2%% actividades aprobadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (108, 2, 'Debes tener el %2%% de actividades aprobadas del módulo $1$', 'Debes tener menos del %2%% de actividades aprobadas del módulo $1$'); -- %1% = Cantidad de actividades regularizadas / $1$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (109, 1, 'El alumno debe tener %2% actividades regularizadas del módulo $1$', 'El alumno no debe tener %2% actividades regularizadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (109, 2, 'Debes debe tener %2% actividades regularizadas del módulo $1$', 'No debes tener %2% actividades regularizadas del módulo $1$'); -- $1$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (110, 1, 'El módulo $1$ se cumple siempre, todas las actividades son optativas.', 'El alumno debe tener todas las actividades aprobadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (110, 2, 'El módulo $1$ se cumple siempre, todas las actividades son optativas.', 'Debes debe tener todas las actividades aprobadas del módulo $1$'); -- 200 DELETE FROM sga_reglas_mensajes WHERE regla = 120; -- $1$ = Listado de Requisitos que debe presentar el alumno /*INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (200, 1, 'El alumno debe presentar los siguientes requisitos: $1$', 'El alumno no debió presentar los siguientes requisitos: $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (200, 2, 'Debes presentar los siguientes requisitos: $1$', 'No debes presentar los siguientes requisitos $1$');*/ -- Faltan las 300 -- Reglas generales UPDATE sga_reglas SET php_clase = 'regla_n_actividades_aprobadas' WHERE regla = 501; UPDATE sga_reglas SET php_clase = 'regla_n_actividades_regularizadas' WHERE regla = 502; UPDATE sga_reglas SET php_clase = 'regla_n_actividades_aprobadas_un_anio' WHERE regla = 503; UPDATE sga_reglas SET php_clase = 'regla_n_actividades_regularizadas_un_anio' WHERE regla = 504; UPDATE sga_reglas SET php_clase = 'regla_porcentaje_actividades_aprobadas_un_anio' WHERE regla = 505; UPDATE sga_reglas SET php_clase = 'regla_porcentaje_actividades_regularizadas_un_anio' WHERE regla = 506; UPDATE sga_reglas SET php_clase = 'regla_n_creditos_actividades_aprobadas' WHERE regla = 511; UPDATE sga_reglas SET php_clase = 'regla_n_creditos_actividades_regularizadas' WHERE regla = 512; UPDATE sga_reglas SET php_clase = 'regla_n_creditos_actividades_regularizadas_un_anio' WHERE regla = 513; UPDATE sga_reglas SET php_clase = 'regla_n_creditos_actividades_aprobadas_un_anio' WHERE regla = 514; DELETE FROM sga_reglas_mensajes WHERE regla BETWEEN 500 and 514; -- %1% = Cantidad de Actividades aprobdas /*INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (501, 1, 'El alumno debe tener %1% actividades aprobadas del plan de estudios', 'El alumno no debe tener %1% actividades aprobadas del plan de estudios'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (501, 2, 'Debes tener %1% actividades aprobadas del plan de estudios', 'No debes tener %1% actividades aprobadas del plan de estudios'); -- %1% = Cantidad de Actividades regularizadas INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (502, 1, 'El alumno debe tener %1% actividades regularizadas del plan de estudios', 'El alumno no debe tener %1% actividades regularizadas del plan de estudios'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (502, 2, 'Debes tener %1% actividades regularizadas del plan de estudios', 'No debes tener %1% actividades regularizadas del plan de estudios'); -- %1% = Cantidad de Actividades aprobadas / %2% = Año de la propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (503, 1, 'El alumno debe tener %1% actividades aprobadas de %2% año', 'El alumno no debe tener %1% actividades aprobadas de %2% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (503, 2, 'Debes tener %1% actividades aprobadas de %2% año', 'No debes tener %1% actividades aprobadas de %2% año'); -- %1% = Cantidad de Actividades regularizadas / %2% = Año de la propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (504, 1, 'El alumno debe tener %1% actividades regularizadas de %2% año', 'El alumno no debe tener %1% actividades regularizadas de %2% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (504, 2, 'Debes tener %1% actividades regularizadas de %2% año', 'No debes tener %1% actividades regularizadas de %2% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (505, 1, 'El alumno debe tener el %1%% de actividades aprobadas de %2% año.', 'El alumno debe tener menos del %1%% de actividades aprobadas de %2% año.'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (505, 2, 'Debes tener el %1%% de actividades aprobadas de %2% año.', 'No debes tener menos del %1% de actividades aprobadas de %2% año.'); -- %1% = Porcentaje de actividades regularizadas / %2% = Año de la propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (506, 1, 'El alumno debe tener el %1%% de actividades regularizadas de %2% año.', 'El alumno debe tener menos del %1%% de actividades regularizadas de %2% año.'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (506, 2, 'Debes tener el %1%% de actividades regularizadas de %2% año.', 'No debes tener menos del %1% de actividades regularizadas de %2% año.'); -- %1% = Año de la propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (507, 1, 'El alumno debe tener aprobado el %1% año', 'El alumno no debe tener aprobado el %1% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (507, 2, 'Debes tener tener aprobado el %1% año', 'No debes tener aprobado el %1% año'); -- %1% = Año de la propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (508, 1, 'El alumno debe tener regularizado el %1% año', 'El alumno no debe tener regularizado el %1% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (508, 2, 'Debes tener tener regularizado el %1% año', 'No debes tener regularizado el %1% año'); -- %1% = Año de la propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (509, 1, 'El alumno debe tener aprobado el %1% año', 'El alumno no debe tener aprobado el %1% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (509, 2, 'Debes tener tener aprobado el %1% año', 'No debes tener aprobado el %1% año'); -- %1% = Año de la propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (510, 1, 'El alumno debe tener regularizado hasta %1% año', 'El alumno no debe tener regularizado hasta %1% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (510, 2, 'Debes tener tener regularizado hasta %1% año', 'No debes tener regularizado hasta %1% año'); -- %1% = Cantidad de créditos que debe tener de actividades aprobadas / %2% = Cantidad de creditos que tiene en actividades aprobadas de la propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (511, 1, 'El alumno debe tener %1% créditos de actividades aprobadas. Tiene %2% créditos', 'El alumno no debe tener %1% créditos de actividades aprobadas. Tiene %2% créditos'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (511, 2, 'Debes tener %1% créditos de actividades aprobadas. Tenes %2% créditos.', 'Debes tener menos de %1% créditos de actividades aprobadas. Tenes %2% créditos'); -- %1% = Cantidad de créditos que debe tener de actividades regularizadas / %2% = Cantidad de creditos que tiene en actividades regularizadas de la propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (512, 1, 'El alumno debe tener %1% créditos de actividades regularizadas. Tiene %2% créditos', 'El alumno no debe tener %1% créditos de actividades regularizadas. Tiene %2% créditos'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (512, 2, 'Debes tener %1% créditos de actividades regularizadas. Tenes %2% créditos.', 'Debes tener menos de %1% créditos de actividades regularizadas. Tenes %2% créditos'); -- %1% = Cantidad de créditos que debe tener de actividades regularizadas / -- %2% = Año de la propuesta -- %3% = Cantidad de creditos que tiene en actividades regularizadas de la propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (513, 1, 'El alumno debe tener %1% créditos de actividades regularizadas de %2% año. Tiene %2% créditos', 'El alumno no debe tener %1% créditos de actividades regularizadas de %2% año. Tiene %3% créditos'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (513, 2, 'Debes tener %1% créditos de actividades regularizadas de %2% año. Tiene %3% créditos', 'Debes tener menos de %1% créditos de actividades regularizadas de %2% año. Tiene %3% créditos'); -- %1% = Cantidad de créditos que debe tener de actividades aprobadas -- %2% = Año de la propuesta -- %3% = Cantidad de creditos que tiene en actividades aprobadas de la propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (514, 1, 'El alumno debe tener %1% créditos de actividades aprobadas de %2% año. Tiene %2% créditos', 'El alumno no debe tener %1% créditos de actividades aprobadas de %2% año. Tiene %3% créditos'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (514, 2, 'Debes tener %1% créditos de actividades aprobadas de %2% año. Tiene %3% créditos', 'Debes tener menos de %1% créditos de actividades aprobadas de %2% año. Tiene %3% créditos');*/ UPDATE sga_actas_origen SET nombre = 'Actas de Examen' WHERE origen = 'E'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: get_entidad_id_nombre -- Dado el valor de una entidad, devuelve el nombre del campo de los parametros de contexto, el id que corresponde a la entidad -- y el nombre de dicha entidad. -- -- Recibe: get_entidad_id_nombre(integer) -- 1.- ID entidad (sga_g3entidades.entidad) -- -- Retorna: -- 1. Nombre del parametro de contexto + id de la entidad que corresponde + nombre de la entidad + subtipo de la entidad -- Ejemplo: "elemento,2050,Fisica II,50" -- "certificado,38,Técnico Dental,20" -- "elemento,2014,Ciclo básico,3" -- "propuesta,548,Ingeniería Industrial,200" -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION get_entidad_id_nombre(integer); CREATE OR REPLACE FUNCTION get_entidad_id_nombre(pEntidad INTEGER) RETURNS TEXT AS $BODY$ DECLARE _retorno text; _parametro_contexto text; _query text; _query2 text; _subtipo integer; rs RECORD; BEGIN _retorno := ',,,'; -- Obtengo nombre de la tabla del subtipo de la entidad SELECT sga_g3entidades.entidad_subtipo, sga_g3entidades_subtipos.tabla_id, sga_g3entidades_subtipos.query_id_nombre INTO _subtipo, _parametro_contexto, _query FROM sga_g3entidades, sga_g3entidades_subtipos WHERE sga_g3entidades.entidad_subtipo = sga_g3entidades_subtipos.entidad_subtipo AND sga_g3entidades.entidad = pEntidad; -- Obtengo el nombre de la entidad FOR rs IN EXECUTE _query || pEntidad::text LOOP _retorno := _parametro_contexto || ',' || rs.id::text || ',' || rs.nombre || ',' || _subtipo::text ; END LOOP; -- Retorno el nombre de la entidad RETURN _retorno; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function get_entidad_id_nombre ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION get_entidad_id_nombre (integer) FROM public; GRANT EXECUTE ON FUNCTION get_entidad_id_nombre (integer) to public; -- Se paso el cogido del AFTER al BEFORE DROP TRIGGER tda_sga_periodos_inscripcion_fechas ON sga_periodos_inscripcion_fechas RESTRICT; DROP FUNCTION ftda_sga_periodos_inscripcion_fechas(); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE tdb_sga_periodos_inscripcion_fechas -- TRIGGER BEFORE DELETE -- Tabla: sga_periodos_inscripcion_fechas -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION ftdb_sga_periodos_inscripcion_fechas(); CREATE OR REPLACE FUNCTION ftdb_sga_periodos_inscripcion_fechas() RETURNS TRIGGER AS $BODY$ -- Variables locales DECLARE _tipo smallint; BEGIN -- Borro excepciones al periodo de inscripcion en el caso que existan SELECT sga_periodos_inscripcion.periodo_generico_tipo INTO _tipo FROM sga_periodos_inscripcion WHERE sga_periodos_inscripcion.periodo_inscripcion = OLD.periodo_inscripcion; -- tipo: 1 = Período Lectivo / 2 = Turno de Examen / 3 - Llamado / 4 - Propuestas IF _tipo = 1 THEN -- Excepciones a los periodos de inscripcion de los períodos lectivos DELETE FROM sga_comisiones_excep_perinsc WHERE periodo_insc = OLD.periodo_insc; END IF; IF _tipo = 3 THEN -- Excepciones a los periodos de inscripcion de los llamados DELETE FROM sga_llamados_mesa_excep_perinsc WHERE periodo_insc = OLD.periodo_insc; END IF; RETURN OLD; END; $BODY$ LANGUAGE plpgsql; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE sobre sga_periodos_inscripcion_fechas -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tdb_sga_periodos_inscripcion_fechas ON sga_periodos_inscripcion_fechas RESTRICT; CREATE TRIGGER tdb_sga_periodos_inscripcion_fechas BEFORE DELETE ON sga_periodos_inscripcion_fechas FOR EACH ROW EXECUTE PROCEDURE ftdb_sga_periodos_inscripcion_fechas(); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Cambio el parámetro de contexto "actividad" por "elemento" -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DELETE FROM sga_reglas_param_contexto WHERE regla between 1 and 5 AND parametro = 'actividad'; INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (2,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (3,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (4,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (5,'elemento'); -- Agrego el parametro de contexto "fecha" a las reglas relacionadas con actividades. INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 2,'fecha'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 3,'fecha'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 4,'fecha'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 5,'fecha'); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Cambio el parámetro de contexto "modulo" por "elemento" -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DELETE FROM sga_reglas_param_contexto WHERE regla between 100 and 110 AND parametro = 'modulo'; --INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (100,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (101,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (102,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (103,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (104,'elemento'); /*INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (105,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (106,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (107,'elemento');*/ INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (108,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (109,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (110,'elemento'); -- -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000151.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000152.sql -- +++++++++++++++++++++++++++++++++++++++ DELETE FROM sga_reglas_mensajes WHERE regla IN (108, 109, 110, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 317); -- Mensajes -- %1% = Porcentaje de actividades aprobadas / $1$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (108, 1, 'El alumno debe tener el %1%% actividades aprobadas del módulo $1$', 'El alumno debe tener menos del %1%% actividades aprobadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (108, 2, 'Debes tener el %1%% de actividades aprobadas del módulo $1$', 'Debes tener menos del %1%% de actividades aprobadas del módulo $1$'); -- Mensajes -- %1% = Cantidad de actividades regularizadas / $1$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (109, 1, 'El alumno debe tener %1% actividades regularizadas del módulo $1$', 'El alumno no debe tener %1% actividades regularizadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (109, 2, 'Debes debe tener %1% actividades regularizadas del módulo $1$', 'No debes tener %1% actividades regularizadas del módulo $1$'); -- Mensajes -- $1$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (110, 1, 'El módulo se cumple siempre, todas las actividades son optativas.', 'El alumno debe tener todas las actividades aprobadas del módulo'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (110, 2, 'El módulo se cumple siempre, todas las actividades son optativas.', 'Debes debe tener todas las actividades aprobadas del módulo'); -- Mensajes -- $1$ = Nombre del Alumno INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (300, 1, 'El alumno $1$ tiene la visa vencida', 'El alumno $1$ debe tener vencida la visa' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (300, 2, 'Ud. tiene la visa vencida', 'Ud. no debe tener vencida la visa'); -- Mensajes -- $1$ = Nombre del Alumno /*INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (301, 1, 'El alumno $1$ tiene encuestas pendientes de completar', 'El alumno $1$ no tiene encuestas pendientes de completar' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (301, 2, 'Ud. tiene encuestas pendientes de completar', 'No tenes encuestas encuestas pendientes de completar' );*/ -- Mensajes -- $1$ = Nombre del Alumno INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (302, 1, 'El alumno $1$ esta sancionado', 'El alumno $1$ esta sancionado' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (302, 2, 'Estas sancionado', 'No estas sancionado' ); -- Mensajes -- $1$ = Nombre del Alumno INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (303, 1, 'El alumno $1$ no esta activo en la propuesta', 'El alumno $1$ esta activo en la propuesta' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (303, 2, 'No sos alumno activo', 'Sos alumno activo' ); -- Mensajes -- $1$ = Nombre del Alumno / $2$ = Nombre de la Propuesta /*INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (304, 1, 'El alumno $1$ no esta reinscripto en la propuesta $2$', 'El alumno $1$ esta reinscripto en la propuesta $2$' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (304, 2, 'Debes estar reinscripto en la propuesta $2$', 'No debes estar reinscripto en la propuesta $2$' ); -- Mensajes -- $1$ = Nombre del Alumno / $2$ = Nombre de la Propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (305, 1, 'El alumno $1$ debe cuotas de la propuesta $2$', 'El alumno $1$ no debe cuotas en la propuesta $2$' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (305, 2, 'Debes cuotas en la propuesta $2$', 'No debes cuotas en la propuesta $2$' ); -- Mensajes -- $1$ = Nombre del Alumno INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (306, 1, 'El alumno $1$ debe actualizar los datos censales', 'El alumno $1$ no debe actualizar los datos censales' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (306, 2, 'Debes actualizar tus datos censales', 'No debes actualizar tus datos censales' ); -- Mensajes -- $1$ = Nombre del Alumno / $2$ = Listado de actividades/requisitos que debe como correlativas. INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (307, 1, 'El alumno $1$ debe las siguientes correlativas de cursada: $2$', 'El alumno $1$ cumplió con las correlativas de cursadas'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (307, 2, 'Debes las siguientes correlativas de cursada: $2$', 'Cumpliste con las correlativas de cursadas'); -- Mensajes -- $1$ = Nombre del Alumno / $2$ = Listado de actividades/requisitos que debe como correlativas de examen. INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (308, 1, 'El alumno $1$ debe las siguientes correlativas de aprobación: $2$', 'El alumno $1$ cumplió con las correlativas de aprobación'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (308, 2, 'Debes las siguientes correlativas de aprobación: $2$', 'Cumpliste con las correlativas de aprobación');*/ -- Mensajes -- $1$ = Nombre del Alumno / $2$ = Nombre de la Propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (309, 1, 'El alumno $1$ no es alumno regular en la propuesta %2%', 'El alumno $1$ es alumno regular en la propuesta %2%'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (309, 2, 'No sos alumno regular en la propuesta %2%', 'Sos alumno regular en la propuesta %2%'); -- Mensajes -- $1$ = Nombre del Alumno INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (310, 1, 'El alumno $1$ debe requisitos de ingreso obligatorios', 'El alumno $1$ cumple con los requisitos de ingreso obligatorios' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (310, 2, 'Ud. debe requisitos de ingreso obligatorios', 'Ud. cumple con los requisitos de ingreso obligatorios'); -- Mensajes -- $1$ = Nombre del Alumno INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (311, 1, 'El alumno $1$ esta expulsado en otra institución', 'El alumno $1$ no esta expulsado en otra institución'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (311, 2, 'Estas expulsado en otra institución', 'No estas expulsado en otra institución'); -- Mensajes -- $1$ = Tope de Créditos de actividades regularizadas vigentes -- $2$ = Cantidad de créditos de actividades regularizadas del alumno. INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (312, 1, 'El alumno ha superado los créditos de regularidades vigentes. Tope de créditos $1$. Créditos de actividades regularizadas: $2$', 'El alumno no ha superado los créditos de regularidades vigentes. Tope de créditos $1$. Créditos de actividades regularizadas: $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (312, 2, 'Ud. ha superado los créditos de actividades regularizadas vigente. Tope de créditos $1$. Créditos de actividades regularizadas: $2$', 'Ud. no ha superado los créditos de actividades regularizadas vigente. Tope de créditos $1$. Créditos de actividades regularizadas: $2$'); -- Mensajes -- $1$ = Cantidad máxima de créditos de actividades inscriptos a cursada -- $2$ = Cantidad de créditos de actividades en los que el alumno esta inscripto para cursar (periodos lectivos vigentes) INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (313, 1, 'El alumno ha excedido el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: $1$. Cantidad de créditos en inscripciones: $2$', 'El alumno no ha excedido el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: $1$. Créditos en inscripciones: $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (313, 2, 'Ud. ha excedido el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: $1$. Créditos en inscripciones: $2$', 'Ud. no ha excedido el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: $1$. Créditos en inscripciones: $2$'); -- Mensajes -- $1$ = Cantidad de inscripciones a cursadas permitidas -- $2$ = Nombre del Período Lectivo. INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (317, 1, 'El alumno supera el máximo de inscripciones permitidas ($1$) para el período lectivo $2$.', 'Ud. supera el máximo de inscripciones permitidas ($1$) para el período lectivo $2$.'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (317, 2, 'El alumno no supera el máximo de inscripciones permitidas (%1) para el período lectivo $2$.', 'Ud. no supera el máximo de inscripciones permitidas ($1$) para el período lectivo $2$.'); -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000152.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000153.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: get_regla_mensaje -- -- Recupera los elementos que consituyen una version de plan de estudios. -- -- Recibe: get_regla_mensaje(integer, text) -- 1.- ID de la Regla -- 2.- Parámetros de la regla (separados por el pipe |) -- -- Retorna: String con el mensaje al usuario. -- -- Ejemplo: get_regla_mensaje(2, '50|5|10') -- Mensaje genérico de la regla: "Obtener %1% Créditos, tener al menos %2% materias aprobadas y %3% materias cursadas" -- La función retorna: "Obtener 50 Créditos, tener al menos 5 materias aprobadas y 10 materias cursadas" -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION get_regla_mensaje(integer, text); CREATE OR REPLACE FUNCTION get_regla_mensaje(pRegla integer, pParametros text) RETURNS text AS $BODY$ DECLARE _valores text[]; _valor text; _param text[]; _mensaje_compuesto text; _i smallint; _cant smallint; cur_parametros record; BEGIN -- Mensaje al usuario SELECT mensaje_usuario INTO _mensaje_compuesto FROM sga_reglas WHERE regla = pRegla; _i := 0; FOR cur_parametros IN SELECT parametro FROM sga_reglas_parametros WHERE regla = pRegla LOOP _i := _i + 1; _param[_i] := cur_parametros.parametro; END LOOP; IF _i = 0 THEN -- Retorno el mensaje. No tiene parametros. RETURN _mensaje_compuesto; ELSE _cant := _i; -- Paso a un array los valores del 2do parametro de la funcion SELECT regexp_split_to_array( pParametros, $$\|$$) INTO _valores; -- Reemplazo los valores de los parametros en el mensaje para el usuario. Busco los %i% FOR _i IN 1 .. _cant LOOP _valor := _valores[_i]; IF array_upper(_param, 1) >= _i THEN IF _param[_i] = 'anio' THEN IF _valores[_i] = '1' THEN _valor := _valores[_i] || 'er'; ELSEIF _valores[_i] = '2' THEN _valor := _valores[_i] || 'do'; ELSEIF _valores[_i] = '3' THEN _valor := _valores[_i] || 'er'; ELSEIF _valores[_i] = '4' THEN _valor := _valores[_i] || 'to'; ELSEIF _valores[_i] = '5' THEN _valor := _valores[_i] || 'to'; ELSEIF _valores[_i] = '6' THEN _valor := _valores[_i] || 'to'; ELSEIF _valores[_i] = '7' THEN _valor := _valores[_i] || 'mo'; ELSEIF _valores[_i] = '8' THEN _valor := _valores[_i] || 'vo'; ELSEIF _valores[_i] = '9' THEN _valor := _valores[_i] || 'no'; ELSEIF _valores[_i] = '10' THEN _valor := _valores[_i] || 'mo'; END IF; END IF; END IF; _mensaje_compuesto := regexp_replace(_mensaje_compuesto, '%' || _i::text || '%', _valor); END LOOP; -- Retorno el mensaje compuesto RETURN _mensaje_compuesto; END IF; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++++ Fin Function get_regla_mensaje(integer, text) ++++++++++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION get_regla_mensaje (integer, text) FROM public; GRANT EXECUTE ON FUNCTION get_regla_mensaje (integer, text) to public; DELETE FROM sga_reglas_mensajes WHERE regla IN (108, 109); -- Mensajes -- %1% = Porcentaje de actividades aprobadas / $1$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (108, 1, 'El alumno debe tener el %1%% de actividades aprobadas del módulo $1$', 'El alumno debe tener menos del %1%% de actividades aprobadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (108, 2, 'Debes tener el %1%% de actividades aprobadas del módulo $1$', 'Debes tener menos del %1%% de actividades aprobadas del módulo $1$'); -- Mensajes -- %1% = Porcentaje de actividades regularizadas / $1$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (109, 1, 'El alumno debe tener el %1%% de actividades regularizadas del módulo $1$', 'El alumno no debe tener el %1%% de actividades regularizadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (109, 2, 'Debes tener el %1%% de actividades regularizadas del módulo $1$', 'No debes tener el %1%% de actividades regularizadas del módulo $1$'); -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000153.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000154.sql -- +++++++++++++++++++++++++++++++++++++++ INSERT INTO par_puntos_control_parametros (parametro, descripcion, tipo_de_dato) VALUES ('entidad', 'Entidad','E'); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Tabla: par_puntos_control par_parametros_x_punto_control sga_requisitos_x_punto_control -- Punto de Control: 0 - Alumno - Entidad -- Versión: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO par_puntos_control (pto_control, nombre, descripcion) VALUES ( 0, 'Alumno - Entidad', 'Recibe la identificacion del alumno y una entidad (actividad, modulo, certificado, etc) para evaluar su estado'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 0, 'alumno'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 0, 'entidad'); INSERT INTO par_parametros_x_punto_control (pto_control, parametro) VALUES ( 0, 'fecha'); -- Requisitos asociados. Ninguno. Ya que es una entidad, no requisito. (sga_requisito_x_accion.tipo = E) -- INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (0, , ); -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000154.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000155.sql -- +++++++++++++++++++++++++++++++++++++++ -- BORRO MENSAJES DELETE FROM sga_reglas_mensajes WHERE regla BETWEEN 1 AND 5; DELETE FROM sga_reglas_mensajes WHERE regla BETWEEN 100 AND 109; DELETE FROM sga_reglas_mensajes WHERE regla = 200; DELETE FROM sga_reglas_mensajes WHERE regla BETWEEN 300 AND 321; DELETE FROM sga_reglas_mensajes WHERE regla BETWEEN 501 AND 514; -- CREO MENSAJES -- %1% = Cantidad de Actividades aprobdas -- $1$ = Nombre del alumno /*INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (501, 1, 'El alumno $1$ debe tener %1% actividades aprobadas del plan de estudios', 'El alumno $1$ no debe tener %1% actividades aprobadas del plan de estudios'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (501, 2, 'Debés tener %1% actividades aprobadas del plan de estudios', 'No debés tener %1% actividades aprobadas del plan de estudios'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (502, 1, 'El alumno $1$ debe tener %1% actividades regularizadas del plan de estudios', 'El alumno $1$ no debe tener %1% actividades regularizadas del plan de estudios'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (502, 2, 'Debés tener %1% actividades regularizadas del plan de estudios', 'No debés tener %1% actividades regularizadas del plan de estudios'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (503, 1, 'El alumno $1$ debe tener %1% actividades aprobadas de %2% año', 'El alumno $1$ no debe tener %1% actividades aprobadas de %2% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (503, 2, 'Debés tener %1% actividades aprobadas de %2% año', 'No debés tener %1% actividades aprobadas de %2% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (504, 1, 'El alumno $1$ debe tener %1% actividades regularizadas de %2% año', 'El alumno $1$ no debe tener %1% actividades regularizadas de %2% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (504, 2, 'Debés tener %1% actividades regularizadas de %2% año', 'No debés tener %1% actividades regularizadas de %2% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (505, 1, 'El alumno $1$ debe tener el %1%% de actividades aprobadas de %2% año.', 'El alumno $1$ debe tener menos del %1%% de actividades aprobadas de %2% año.'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (505, 2, 'Debés tener el %1%% de actividades aprobadas de %2% año.', 'No debés tener menos del %1% de actividades aprobadas de %2% año.'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (506, 1, 'El alumno $1$ debe tener el %1%% de actividades regularizadas de %2% año.', 'El alumno $1$ debe tener menos del %1%% de actividades regularizadas de %2% año.'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (506, 2, 'Debés tener el %1%% de actividades regularizadas de %2% año.', 'No debés tener menos del %1% de actividades regularizadas de %2% año.'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (507, 1, 'El alumno $1$ debe tener aprobado el %1% año', 'El alumno $1$ no debe tener aprobado el %1% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (507, 2, 'Debés tener tener aprobado el %1% año', 'No debés tener aprobado el %1% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (508, 1, 'El alumno $1$ debe tener regularizado el %1% año', 'El alumno $1$ no debe tener regularizado el %1% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (508, 2, 'Debés tener tener regularizado el %1% año', 'No debés tener regularizado el %1% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (509, 1, 'El alumno $1$ debe tener aprobado el %1% año', 'El alumno $1$ no debe tener aprobado el %1% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (509, 2, 'Debés tener tener aprobado el %1% año', 'No debés tener aprobado el %1% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (510, 1, 'El alumno $1$ debe tener regularizado hasta %1% año', 'El alumno $1$ no debe tener regularizado hasta %1% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (510, 2, 'Debés tener tener regularizado hasta %1% año', 'No debés tener regularizado hasta %1% año'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (511, 1, 'El alumno $1$ debe tener %1% créditos de actividades aprobadas. Tiene %2% créditos', 'El alumno $1$ no debe tener %1% créditos de actividades aprobadas. Tiene %2% créditos'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (511, 2, 'Debés tener %1% créditos de actividades aprobadas. Tenes %2% créditos.', 'Debés tener menos de %1% créditos de actividades aprobadas. Tenes %2% créditos'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (512, 1, 'El alumno $1$ debe tener %1% créditos de actividades regularizadas. Tiene %2% créditos', 'El alumno $1$ no debe tener %1% créditos de actividades regularizadas. Tiene %2% créditos'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (512, 2, 'Debés tener %1% créditos de actividades regularizadas. Tenes %2% créditos.', 'Debés tener menos de %1% créditos de actividades regularizadas. Tenes %2% créditos'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (513, 1, 'El alumno $1$ debe tener %1% créditos de actividades regularizadas de %2% año. Tiene %2% créditos', 'El alumno $1$ no debe tener %1% créditos de actividades regularizadas de %2% año. Tiene %3% créditos'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (513, 2, 'Debés tener %1% créditos de actividades regularizadas de %2% año. Tiene %3% créditos', 'Debés tener menos de %1% créditos de actividades regularizadas de %2% año. Tiene %3% créditos'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (514, 1, 'El alumno $1$ debe tener %1% créditos de actividades aprobadas de %2% año. Tiene %2% créditos', 'El alumno $1$ no debe tener %1% créditos de actividades aprobadas de %2% año. Tiene %3% créditos'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (514, 2, 'Debés tener %1% créditos de actividades aprobadas de %2% año. Tiene %3% créditos', 'Debés tener menos de %1% créditos de actividades aprobadas de %2% año. Tiene %3% créditos');*/ -- $1$ = Nombre del Alumno / $2$ = Nombre de la actividad INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (1, 1, 'El alumno $1$ debe tener aprobada la actividad $2$', 'El alumno $1$ no debe tener aprobada la actividad $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (1, 2, 'Debés tener aprobada la actividad $2$', 'No debés tener aprobada la actividad $2$'); -- $1$ = Nombre del Alumno / $2$ = Nombre de la actividad INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (2, 1, 'El alumno $1$ debe tener regularizada la actividad $2$', 'El alumno $1$ no debe tener regularizada la actividad $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (2, 2, 'Debés tener regularizada la actividad $1$', 'No debés tener regularizada la actividad $2$'); -- $1$ = Nombre del Alumno / $2$ = Nombre de la actividad INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (3, 1, 'El alumno $1$ debe estar inscripto para cursar la actividad $2$', 'El alumno $1$ no debe estar inscripto para cursar la actividad $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (3, 2, 'Debés estar inscripto para cursar la actividad $2$', 'No debés estar inscripto para cursar la actividad $2$'); -- $1$ = Nombre del Alumno / $2$ = Nombre de la actividad INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (4, 1, 'El alumno $1$ debe estar inscripto a examen en la actividad $2$', 'El alumno $1$ no debe estar inscripto a examen en la actividad $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (4, 2, 'Debés estar inscripto a examen en la actividad $2$', 'No debés estar inscripto a examen en la actividad $2$'); -- $1$ = Nombre del Alumno / $2$ = Nombre de la actividad INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (5, 1, 'El alumno $1$ debe estar inscripto para cursar o tener regularizada la actividad $2$', 'El alumno $1$ no debe estar inscripto para cursar ni tener regularizada la actividad $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (5, 2, 'Debés debe estar inscripto para cursar o tener regularizada la actividad $2$', 'No debés estar inscripto para cursar ni tener regularizada la actividad $2$'); -- %1% = Cantidad de puntos del modulo -- $1$ = Nombre del Alumno / $2$ = Nombre del Módulo / $3$ = Cantidad de puntos obtenidos de las actividades aprobadas del módulo /*INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (100, 1, 'El alumno $1$ debe obtener $1$ puntos del módulo $2$. Obtuvo $3$ puntos', 'El alumno $1$ debe obtener menos de $1$ puntos del módulo $2$. Obtuvo $3$ puntos'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (100, 2, 'Debés obtener %1% puntos del módulo $2$. Obtuviste $3$ puntos', 'Debés obtener menos de %1% puntos del módulo $2$. Obtuviste $3$ puntos');*/ -- $1$ = Nombre del Alumno / $2$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (101, 1, 'El alumno $1$ debe tener todas las actividades aprobadas del módulo $2$', 'El alumno $1$ no debe tener todas las actividades aprobadas del módulo $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (101, 2, 'Debés tener todas las actividades aprobadas del módulo $2$', 'No debés tener todas las actividades aprobadas del módulo $2$'); -- $1$ = Nombre del Alumno / $2$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (102, 1, 'El alumno $1$ debe tener todas las actividades regularizadas del módulo $2$', 'El alumno $1$ no debe tener todas las actividades regularizadas del módulo $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (102, 2, 'Debés tener todas las actividades regularizadas del módulo $2$', 'No debés tener todas las actividades regularizadas del módulo $2$'); -- %1% = Cantidad de actividades aprobadas -- $1$ = Nombre del Alumno / $2$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (103, 1, 'El alumno $1$ debe tener al menos %1% actividades aprobadas del módulo $2$', 'El alumno $1$ debe tener menos de %1% actividades aprobadas del módulo $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (103, 2, 'Debés tener al menos %1% actividades aprobadas del módulo $2$', 'Debés tener menos de %1% actividades aprobadas del módulo $2$'); -- %1% = Cantidad de actividades regularizadas -- $1$ = Nombre del Alumno / $2$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (104, 1, 'El alumno $1$ debe tener al menos %1% actividades regularizadas del módulo $2$', 'El alumno $1$ debe tener menos de %1% actividades regularizadas del módulo $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (104, 2, 'Debés tener al menos %1% actividades regularizadas del módulo $2$', 'Debés debe tener menos de %1% actividades regularizadas del módulo $2$'); -- %1% = Creditos -- $1$ = Nombre del Alumno / $2$ = Nombre del Módulo /*INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (105, 1, 'El alumno $1$ debe obtener %1% créditos del módulo $2$', 'El alumno $1$ debe obtener menos de %1% créditos del módulo $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (105, 2, 'Debés obtener %1% créditos del módulo $2$', 'Debés obtener menos de %1% créditos del módulo $2$'); -- %1% = Cantidad de creditos / %2$% = Cantidad de actividades aprobadas -- $1$ = Nombre del Alumno / $2$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (106, 1, 'El alumno $1$ debe obtener %1% créditos y tener %2% actividades aprobadas del módulo $2$', 'El alumno $1$ no debe obtener %1% créditos ni tener %2% actividades aprobadas del módulo $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (106, 2, 'Debés obtener %1% créditos y tener %2% actividades aprobadas del módulo $2$', 'No debés obtener %1% créditos ni tener %2% actividades aprobadas del módulo $2$'); -- %1% = Cantidad de creditos de actividades aprobadas / %2$% = Cantidad de actividades aprobadas -- $1$ = Nombre del Alumno / $2$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (107, 1, 'El alumno $1$ debe obtener %1% créditos o tener %2% actividades aprobadas del módulo $2$', 'El alumno $1$ no debe obtener %1% créditos o tener %2% actividades aprobadas del módulo $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (107, 2, 'Debés obtener %1% créditos o tener %2% actividades aprobadas del módulo $2$', 'No debes obtener %1% créditos ni tener %2% actividades aprobadas del módulo $2$');*/ INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (108, 1, 'El alumno debe tener el %1%% de actividades aprobadas del módulo $1$', 'El alumno debe tener menos del %1%% de actividades aprobadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (108, 2, 'Debés tener el %1%% de actividades aprobadas del módulo $1$', 'Debés tener menos del %1%% de actividades aprobadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (109, 1, 'El alumno debe tener el %1%% de actividades regularizadas del módulo $1$', 'El alumno no debe tener el %1%% de actividades regularizadas del módulo $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (109, 2, 'Debés tener el %1%% de actividades regularizadas del módulo $1$', 'No debés tener el %1%% de actividades regularizadas del módulo $1$'); /*INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (200, 1, 'El alumno debe presentar los siguientes requisitos: $1$', 'El alumno no debe presentar los siguientes requisitos: $1$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (200, 2, 'Debés presentar los siguientes requisitos: $1$', 'No debés presentar los siguientes requisitos $1$');*/ INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (300, 1, 'El alumno $1$ tiene vencida la visa temporaria', 'El alumno $1$ debe tener vencida la visa temporaria' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (300, 2, 'Tenés vencida la visa temporaria', 'No debés tener vencida la visa temporaria'); UPDATE sga_reglas set nombre = 'Tener las Encuestas Obligatorias Contestadas' where regla = 301; /*INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (301, 1, 'El alumno $1$ tiene encuestas pendientes de completar', 'El alumno $1$ no tiene encuestas pendientes de completar' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (301, 2, 'Tenés encuestas pendientes de completar', 'No tenés encuestas encuestas pendientes de completar' );*/ INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (302, 1, 'El alumno $1$ esta sancionado', 'El alumno $1$ esta sancionado' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (302, 2, 'Estás sancionado', 'No estás sancionado' ); -- $1$ = Nombre del Alumno -- $2$ = Nombre de la propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (303, 1, 'El alumno $1$ no esta activo en la propuesta $2$', 'El alumno $1$ esta activo en la propuesta $2$' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (303, 2, 'No sos alumno activo en la propuesta $2$', 'Sos alumno activo en la propuesta $2$' ); /*INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (304, 1, 'El alumno $1$ no esta reinscripto en la propuesta $2$', 'El alumno $1$ esta reinscripto en la propuesta $2$' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (304, 2, 'Debés estar reinscripto en la propuesta $2$', 'No debés estar reinscripto en la propuesta $2$' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (305, 1, 'El alumno $1$ debe cuotas de la propuesta $2$', 'El alumno $1$ no debe cuotas en la propuesta $2$' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (305, 2, 'Debés cuotas en la propuesta $2$', 'No debés cuotas en la propuesta $2$' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (306, 1, 'El alumno $1$ debe actualizar los datos censales', 'El alumno $1$ no debe actualizar los datos censales' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (306, 2, 'Debés actualizar tus datos censales', 'No debés actualizar tus datos censales' ); -- $1$ = Nombre del Alumno / $2$ = Listado de actividades/requisitos que debe como correlativas. INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (307, 1, 'El alumno $1$ debe las siguientes correlativas de cursada: $2$', 'El alumno $1$ cumplió con las correlativas de cursadas'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (307, 2, 'Debés las siguientes correlativas de cursada: $2$', 'Cumpliste con las correlativas de cursadas'); -- $1$ = Nombre del Alumno / $2$ = Listado de actividades/requisitos que debe como correlativas de examen. INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (308, 1, 'El alumno $1$ debe las siguientes correlativas de aprobación: $2$', 'El alumno $1$ cumplió con las correlativas de aprobación'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (308, 2, 'Debés las siguientes correlativas de aprobación: $2$', 'Cumpliste con las correlativas de aprobación');*/ -- $1$ = Nombre del Alumno / $2$ = Nombre de la Propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (309, 1, 'El alumno $1$ no es alumno regular en la propuesta $2$', 'El alumno $1$ es alumno regular en la propuesta $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (309, 2, 'Debés ser alumno regular en la propuesta $2$', 'Sos alumno regular en la propuesta $2$'); -- $1$ = Nombre del Alumno -- $2$ = Nombre de la Propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (310, 1, 'El alumno $1$ debe requisitos de ingreso obligatorios en la propuesta $2$', 'El alumno $1$ cumple con los requisitos de ingreso obligatorios en la propuesta $2$' ); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (310, 2, 'Debés requisitos de ingreso a la propuesta', 'No debés requisitos de ingreso obligatorios'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (311, 1, 'El alumno $1$ está expulsado en otra institución', 'El alumno $1$ no está expulsado en otra institución'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (311, 2, 'Estás expulsado en otra institución', 'No estás expulsado en otra institución'); -- $1$ = Tope de Créditos de actividades regularizadas vigentes -- $2$ = Cantidad de créditos de actividades regularizadas del alumno. -- $3$ = Cantidad de créditos de la actividad a la que se esta inscribiendo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (312, 1, 'El alumno ha superado los créditos de regularidades vigentes. Tope de créditos $1$. Créditos de actividades regularizadas (incluye los créditos de la actividad $3$): $2$', 'El alumno no ha superado los créditos de regularidades vigentes. Tope de créditos $1$. Créditos de actividades regularizadas (incluye los créditos de la actividad $3$): $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (312, 2, 'Ud. ha superado los créditos de actividades regularizadas vigente. Tope de créditos $1$. Créditos de actividades regularizadas (incluye los créditos de la actividad $3$): $2$', 'Ud. no ha superado los créditos de actividades regularizadas vigente. Tope de créditos $1$. Créditos de actividades regularizadas (incluye los créditos de la actividad $3$): $2$'); -- $1$ = Cantidad máxima de créditos de actividades inscriptos a cursada -- $2$ = Cantidad de créditos de actividades en los que el alumno esta inscripto para cursar (periodos lectivos vigentes) -- $3$ = Cantidad de créditos de la actividad a la que se esta inscribiendo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (313, 1, 'El alumno ha excedido el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: $1$. Cantidad de créditos en inscripciones (incluye los créditos de la actividad $3$): $2$', 'El alumno no ha excedido el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: $1$. Créditos en inscripciones (incluye los créditos de la actividad $3$): $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (313, 2, 'Excediste el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: $1$. Créditos en inscripciones (incluye los créditos de la actividad $3$): $2$', 'Ud. no ha excedido el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: $1$. Créditos en inscripciones (incluye los créditos de la actividad $3$): $2$'); -- $1$ = Nombre Alumno / $2$ = Nombre Propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (314, 1, 'El alumno $1$ no tiene legajo generado en la propuesta $2$', 'El alumno $1$ tiene legajo generado en la propuesta $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (314, 2, 'No tenés legajo generado en la propuesta $2$', 'Ud. ya tiene legajo generado en la propuesta $2$'); -- $1$ = Nombre Alumno / $2$ = Nombre Propuesta INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (315, 1, 'El alumno $1$ no ha realizado la reinscripción anual en la propuesta $2$', 'El alumno $1$ realizó la reinscripción anual en la propuesta $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (315, 2, 'Debés realizar la reinscripción anual en la propuesta $2$', 'Ud. ha realizado la reinscripción anual en la propuesta $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (316, 1, 'Que el alumno no supere la cantidad máxima de veces que puede rendir examen regular y desaprobar una actividad', 'Que el alumno no supere la cantidad máxima de veces que puede rendir examen regular y desaprobar una actividad'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (316, 2, 'Superás la cantidad máxima de veces que podés rendir examen regular y desaprobar una actividad', 'No superás la cantidad máxima de veces que puede rendir examen regular y desaprobar una actividad'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (317, 1, 'El alumno supera el máximo de inscripciones permitidas ($1$) para el período lectivo $2$.', 'Ud. supera el máximo de inscripciones permitidas ($1$) para el período lectivo $2$.'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (317, 2, 'Superás el máximo de inscripciones permitidas (%1) para el período lectivo $2$.', 'Ud. no supera el máximo de inscripciones permitidas ($1$) para el período lectivo $2$.'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (318, 1, 'El alumno tiene superposición horaria con otras comisiones en las que esta inscripto', 'Ud. tiene superposición horaria con otras comisiones en las que esta inscripto'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (318, 2, 'La comisión tiene superposición horaria con otras comisiones en las que estas inscripto', 'Ud. no tiene superposición horaria con otras comisiones en las que estas inscripto'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (319, 1, 'El alumno tiene superposición horaria con otras comisiones/subcomisiones', 'Ud. tiene superposición horaria con otras comisiones/subcomisiones'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (319, 2, 'La comisión tiene superposición horaria con otras comisiones/subcomisiones', 'Ud. no tiene superposición horaria con otras comisiones/subcomisiones'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (320, 1, 'El alumno está inscripto o existe en un acta de examen de otra mesa de examen de la actividad en el mismo llamado', 'Ud. está inscripto o existe en un acta de examen de otra mesa de examen de la actividad en el mismo llamado'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (320, 2, 'Estás inscripto o estas en un acta de examen de otra mesa de examen de la actividad en el mismo llamado', 'Ud. no está inscripto o existe en un acta de examen de otra mesa de examen de la actividad en el mismo llamado'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (321, 1, 'El alumno está inscripto o existe en un acta de otra comisión de la actividad', 'Ud. está inscripto o existe en un acta de otra comisión de la actividad'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (321, 2, 'Estás inscripto o estas en un acta de regulares de otra comisión de la actividad', 'No está inscripto o existe en un acta de otra comisión de la actividad'); -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000155.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Inicio Script de conversión 000156.sql -- +++++++++++++++++++++++++++++++++++++++ -- BORRO MENSAJES DELETE FROM sga_reglas_mensajes WHERE regla BETWEEN 108 AND 109; DELETE FROM sga_reglas_mensajes WHERE regla BETWEEN 312 AND 313; DELETE FROM sga_reglas_mensajes WHERE regla BETWEEN 316 AND 321; -- $1$ = Nombre Alumno / $2$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (109, 1, 'El alumno $1$ debe tener el %1%% de actividades regularizadas del módulo $2$', 'El alumno $1$ no debe tener el %1%% de actividades regularizadas del módulo $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (109, 2, 'Debés tener el %1%% de actividades regularizadas del módulo $2$', 'No debés tener el %1%% de actividades regularizadas del módulo $2$'); -- $1$ = Nombre Alumno / $2$ = Nombre del Módulo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (108, 1, 'El alumno $1$ debe tener el %1%% de actividades aprobadas del módulo $2$', 'El alumno $1$ debe tener menos del %1%% de actividades aprobadas del módulo $2$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (108, 2, 'Debés tener el %1%% de actividades aprobadas del módulo $2$', 'Debés tener menos del %1%% de actividades aprobadas del módulo $2$'); -- $1$ = Nombre Alumno -- $2$ = Tope de Créditos de actividades regularizadas vigentes -- $3$ = Cantidad de créditos de actividades regularizadas del alumno. -- $4$ = Cantidad de créditos de la actividad a la que se esta inscribiendo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (312, 1, 'El alumno $1$ ha superado los créditos de regularidades vigentes. Tope de créditos $2$. Créditos de actividades regularizadas (incluye los créditos de la actividad $4$): $3$', 'El alumno $1$ no ha superado los créditos de regularidades vigentes. Tope de créditos $2$. Créditos de actividades regularizadas (incluye los créditos de la actividad $4$): $3$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (312, 2, 'Superaste los créditos de actividades regularizadas vigentes. Tope de créditos $2$. Créditos de actividades regularizadas (incluye los créditos de la actividad $4$): $3$', 'No has superado los créditos de actividades regularizadas vigentes. Tope de créditos $2$. Créditos de actividades regularizadas (incluye los créditos de la actividad $4$): $3$'); -- $1$ = Nombre Alumno -- $2$ = Cantidad máxima de créditos de actividades inscriptos a cursada -- $3$ = Cantidad de créditos de actividades en los que el alumno esta inscripto para cursar (periodos lectivos vigentes) -- $4$ = Cantidad de créditos de la actividad a la que se esta inscribiendo INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (313, 1, 'El alumno $1$ ha excedido el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: $2$. Cantidad de créditos en inscripciones (incluye los créditos de la actividad $4$): $3$', 'El alumno $1$ no ha excedido el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: $2$. Créditos en inscripciones (incluye los créditos de la actividad $4$): $3$'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (313, 2, 'Excediste el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: $2$. Créditos en inscripciones (incluye los créditos de la actividad $4$): $3$', 'Has excedido el máximo de créditos permitidos para inscripciones. Cantidad máxima de créditos: $2$. Créditos en inscripciones (incluye los créditos de la actividad $4$): $3$'); -- $1$ = Nombre del Alumno -- $2$ = Cantidad maxima de inscripciones como regular que puede desaprobar. INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (316, 1, 'El alumno $1$ supera la cantidad máxima de veces que puede rendir examen regular y desaprobar la actividad', 'El alumno $1$ no supera la cantidad máxima de veces ($2$) que puede rendir examen regular y desaprobar la actividad'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (316, 2, 'Superás la cantidad máxima de veces ($2$) que podés rendir examen regular y desaprobar la actividad', 'No superás la cantidad máxima de veces ($2$) que puede rendir examen regular y desaprobar la actividad'); -- $1$ = Nombre Alumno -- $2$ = Cantidad de inscripciones a cursadas permitidas -- $3$ = Nombre del Período Lectivo. INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (317, 1, 'El alumno $1$ supera el máximo de inscripciones permitidas ($2$) para el período lectivo $3$.', 'El alumno $1$ supera el máximo de inscripciones permitidas ($2$) para el período lectivo $3$.'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (317, 2, 'Superás el máximo de inscripciones permitidas ($2$) para el período lectivo $3$.', 'No superás el máximo de inscripciones permitidas ($2$) para el período lectivo $3$.'); -- $1$ = Nombre Alumno INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (318, 1, 'El alumno $1$ tiene superposición horaria con otras comisiones en las que está inscripto', 'El alumno $1$ tiene superposición horaria con otras comisiones en las que está inscripto'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (318, 2, 'La comisión tiene superposición horaria con otras comisiones en las que estás inscripto', 'La comisión no tiene superposición horaria con otras comisiones en las que estás inscripto'); -- $1$ = Nombre Alumno INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (319, 1, 'El alumno $1$ tiene superposición horaria con otras comisiones/subcomisiones', 'El alumno $1$ tiene superposición horaria con otras comisiones/subcomisiones'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (319, 2, 'La comisión tiene superposición horaria con otras comisiones/subcomisiones', 'La comisión no tiene superposición horaria con otras comisiones/subcomisiones'); -- $1$ = Nombre del Alumno INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (320, 1, 'El alumno $1$ está inscripto o existe en un acta de examen de otra mesa de examen de la actividad en el mismo llamado', 'El alumno $1$ está inscripto o existe en un acta de examen de otra mesa de examen de la actividad en el mismo llamado'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (320, 2, 'Estás inscripto o estas en un acta de examen de otra mesa de examen de la actividad en el mismo llamado', 'No estás inscripto o existe en un acta de examen de otra mesa de examen de la actividad en el mismo llamado'); -- $1$ = Nombre Alumno INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (321, 1, 'El alumno $1$ está inscripto o existe en un acta de otra comisión de la actividad', 'El alumno $1$ no está inscripto o existe en un acta de otra comisión de la actividad'); INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) VALUES (321, 2, 'Estás inscripto o estás en un acta de regulares de otra comisión de la actividad', 'No estás inscripto o existe en un acta de otra comisión de la actividad'); -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000156.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Inicio Script de conversión 000157.sql -- +++++++++++++++++++++++++++++++++++++++ UPDATE sga_requisitos SET nombre = 'Que el alumno tenga aprobada la actividad', descripcion = 'Que el alumno tenga aprobada la actividad' WHERE requisito = 65; DELETE FROM sga_reglas_param_contexto WHERE parametro IN ('modulo', 'actividad', 'elemento') AND regla IN (4, 5, 307, 308, 312, 313, 316, 317, 318, 319, 320, 321); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 4,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES ( 5,'elemento'); /*INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (307,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (308,'elemento');*/ INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (312,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (313,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (316,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (317,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (318,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (319,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (320,'elemento'); INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (321,'elemento'); -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000157.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000158.sql -- +++++++++++++++++++++++++++++++++++++++ -- Oculto tipo de requisitos de correlativas para cursar y rendir... UPDATE sga_requisitos_tipos SET publico = 'N' WHERE requisito_tipo IN (1, 2, 6); -- Pongo visibles los requisitos de tipo Proceso y Documentales UPDATE sga_requisitos_tipos SET publico = 'S' WHERE requisito_tipo IN (4, 5); UPDATE sga_requisitos SET requisito_tipo = 5 WHERE requisito_tipo = 3; -- Borro correlativas especiales. DELETE FROM sga_requisitos_tipos WHERE requisito_tipo = 3; -- Actualizo los estados y las reglas de verificación de cada estado de los tipos de activdades. UPDATE sga_g3entidades_subtipos_estados SET regla = 2 WHERE entidad_subtipo IN (51, 52, 53, 54, 55) AND estado = 'C'; UPDATE sga_g3entidades_subtipos_estados SET regla = 3 WHERE entidad_subtipo IN (51, 52, 53, 54, 55) AND estado = 'I'; UPDATE sga_g3entidades_subtipos_estados SET regla = 1 WHERE entidad_subtipo IN (51, 52, 53, 54, 55) AND estado = 'A'; UPDATE sga_g3entidades_subtipos_estados SET regla = 5 WHERE entidad_subtipo IN (51, 52, 53, 54, 55) AND estado = 'X'; -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Nuevo tipo de actividad: CURSO -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_g3entidades_subtipos (entidad_subtipo, entidad_tipo, nombre, tabla, tabla_id, query_id_nombre, es_elemento, revisionable, modificable, para_condiciones, para_requisitos, php_clase_gui, php_clase_negocio, php_clase_edicion, icono) VALUES ( 56, 2, 'Curso', 'sga_elementos', 'elemento', 'SELECT elemento as id, nombre FROM sga_elementos WHERE entidad = ', 'S','N','N','S','S', 'plan_elemento_gui_actividad', 'actividad_validacion', 'plan_elemento_actividad', 'propuesta/g_actividad_curso.png'); -- Estados del "Curso" INSERT INTO sga_g3entidades_subtipos_estados (entidad_subtipo, estado, regla, estado_final, estado_default) VALUES (56, 'C', 2, 'N', 'S'); INSERT INTO sga_g3entidades_subtipos_estados (entidad_subtipo, estado, regla, estado_final, estado_default) VALUES (56, 'I', 3, 'N', 'S'); INSERT INTO sga_g3entidades_subtipos_estados (entidad_subtipo, estado, regla, estado_final, estado_default) VALUES (56, 'A', 1, 'N', 'S'); INSERT INTO sga_g3entidades_subtipos_estados (entidad_subtipo, estado, regla, estado_final, estado_default) VALUES (56, 'X', 5, 'N', 'S'); -- Módulos que pueden contener la actividad de tipo "Curso" INSERT INTO sga_elementos_reglas_composicion (entidad_subtipo_padre, entidad_subtipo_hijo) VALUES (0, 56); INSERT INTO sga_elementos_reglas_composicion (entidad_subtipo_padre, entidad_subtipo_hijo) VALUES (1, 56); INSERT INTO sga_elementos_reglas_composicion (entidad_subtipo_padre, entidad_subtipo_hijo) VALUES (2, 56); INSERT INTO sga_elementos_reglas_composicion (entidad_subtipo_padre, entidad_subtipo_hijo) VALUES (3, 56); INSERT INTO sga_elementos_reglas_composicion (entidad_subtipo_padre, entidad_subtipo_hijo) VALUES (5, 56); -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Nuevo tipo de propuesta: CURSO DE EXTENSION -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INSERT INTO sga_g3entidades_subtipos (entidad_subtipo, entidad_tipo, nombre, tabla, tabla_id, query_id_nombre, es_elemento, revisionable, modificable, para_condiciones, para_requisitos, php_clase_gui, php_clase_negocio, php_clase_edicion, icono) VALUES (208, 6, 'Curso de Extensión','sga_propuestas', 'propuesta_tipo', 'SELECT propuesta_tipo as id, descripcion as nombre FROM sga_propuestas_tipos WHERE propuesta_tipo = ','N','N','N','N','N', NULL, NULL, NULL, NULL ); INSERT INTO sga_propuestas_tipos (propuesta_tipo, descripcion, otorga_titulo, reporta_araucano, permite_matricular, permite_inscribir) VALUES (208, 'Curso de Extensión', 'N','N','N','S'); -- Guarani 2 = no hay. -- +++++++++++++++++++++++++++++++++++++++ -- Fin Script de conversión 000158.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000160.sql -- +++++++++++++++++++++++++++++++++++++++ -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- TRIGGER ftdb_sga_insc_cursada_instancias -- BEFORE DELETE -- Tabla: sga_insc_cursada_instancias -- Version 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DROP TRIGGER tdb_sga_insc_cursada_instancias ON sga_insc_cursada_instancias RESTRICT; DROP FUNCTION ftdb_sga_insc_cursada_instancias(); CREATE OR REPLACE FUNCTION ftdb_sga_insc_cursada_instancias() RETURNS TRIGGER AS $BODY$ DECLARE _evaluacion integer; DECLARE _cursada smallint; DECLARE _alumno integer; DECLARE _promocion smallint; BEGIN -- Instancias: 1-Cursadas / 2-Promocion -- Recupero la evaluacion automatica de la comision. SELECT sga_insc_cursada.alumno, sga_evaluaciones.evaluacion INTO _alumno, _evaluacion FROM sga_insc_cursada, sga_comisiones, sga_evaluaciones, sga_evaluaciones_tipos WHERE sga_insc_cursada.inscripcion = OLD.inscripcion AND sga_comisiones.comision = sga_insc_cursada.comision AND sga_evaluaciones.entidad = sga_comisiones.entidad AND sga_evaluaciones_tipos.evaluacion_tipo = sga_evaluaciones.evaluacion_tipo AND sga_evaluaciones_tipos.automatica = 'S'; -- Generación Automática IF _evaluacion IS NOT NULL THEN -- Verifico si tiene registro en el detalle de las evaluaciones y si esta inscripto a otra instancia SELECT instancia_cursada, instancia_promocion INTO _cursada, _promocion FROM sga_eval_detalle_cursadas WHERE sga_eval_detalle_cursadas.evaluacion = _evaluacion AND sga_eval_detalle_cursadas.alumno = _alumno; -- Borro el registro del detalle de la evaluacion automática. -- Instancas: 1-Regular / 2-Promocion IF (_cursada IS NULL AND _promocion IS NULL) OR (OLD.instancia = 1 AND _promocion = 0) OR (OLD.instancia = 2 AND _cursada = 0) THEN DELETE FROM sga_eval_detalle_cursadas WHERE evaluacion = _evaluacion AND alumno = _alumno; END IF; -- Cursadas IF OLD.instancia = 1 THEN UPDATE sga_eval_detalle_cursadas SET instancia_cursada = 0, nota_cursada = NULL, resultado_cursada = NULL WHERE evaluacion = _evaluacion AND alumno = _alumno; END IF; -- Promociones IF OLD.instancia = 2 THEN UPDATE sga_eval_detalle_cursadas SET instancia_promocion = 0, nota_promocion = NULL, resultado_promocion = NULL WHERE evaluacion = _evaluacion AND alumno = _alumno; END IF; END IF; -- evaluacion. RETURN OLD; END; $BODY$ LANGUAGE plpgsql; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de DELETE sobre sga_insc_cursada_instancias -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE TRIGGER tdb_sga_insc_cursada_instancias BEFORE DELETE ON sga_insc_cursada_instancias FOR EACH ROW EXECUTE PROCEDURE ftdb_sga_insc_cursada_instancias(); -- +++++++++++++++++++++++++++++++++++++++ -- Script de conversión 000160.sql -- +++++++++++++++++++++++++++++++++++++++