NotsTecnicas/DiffVersion37

Cambios de BD de la Versión 3.7

FK

fk_sga_actas_folios_sga_libros_actas.sql
fk_his_propuestas_relacion_his_propuestas_relacion_cambios.sql
fk_sga_propuestas_relacion_sga_propuestas.sql
fk_his_propuestas_relacion_plan_his_propuestas_relacion_cambios.sql
fk_sga_libros_tomos_sga_libros_actas.sql
fk_his_propuestas_relacion_grupo_his_propuestas_relacion_cambios.sql
fk_sga_propuestas_relacion_sga_planes.sql
fk_sga_actas_folios_sga_libros_tomos.sql
fk_sga_propuestas_relacion_grupo_sga_propuestas_relacion.sql
fk_sga_propuestas_relacion_plan_sga_planes.sql
fk_sga_propuestas_relacion_sga_anios_academicos.sql
fk_sga_propuestas_relacion_plan_sga_propuestas_relacion_grupo.sql

Permisos

Grants_sga_propuestas_relacion_grupo.sql
Grants_mdp_datos_censales_config.sql
Grants_sga_libros_tomos.sql
Grants_sga_propuestas_relacion_plan.sql
Grants_sga_propuestas_relacion.sql
Grants_his_propuestas_relacion_plan.sql
Grants_his_propuestas_relacion_grupo.sql
Grants_his_propuestas_relacion.sql
sga_propuestas_relacion_seq.sql

Secuencias

sga_propuestas_relacion_seq.sql
sga_propuestas_relacion_plan_seq.sql
sga_libros_tomos_seq.sql
sga_propuestas_relacion_grupo_seq.sql
his_propuestas_relacion_cambios_seq.sql

Tablas

his_propuestas_relacion.sql
his_propuestas_relacion_cambios.sql
sga_certificados.sql
sga_propuestas_relacion_plan.sql
his_propuestas_relacion_plan.sql
sga_libros_tomos.sql
mdp_datos_censales_config.sql
sga_actas_folios.sql
his_propuestas_relacion_grupo.sql
sga_alumnos_hist_planes.sql
sga_escalas_notas_det.sql
sga_propuestas_relacion.sql
mdp_datos_salud.sql
sga_titulos_categ_coneau.sql
sga_libros_actas.sql
sga_propuestas_relacion_grupo.sql

Triggers

tua_sga_mesas_examen_instancias.sql
tua_sga_comisiones_instancias.sql
tia_sga_insc_cursada.sql tia_sga_insc_cursada.sql

Funciones

f_generar_escala_notas_continua.sql
f_criterio_trabaja.sql
f_duplicar_libro_de_actas.sql
f_horario_subcomision_aula.sql
f_encuestas_generar_items.sql
f_horario_comision_aula.sql
f_evaluacion_alta.sql
f_duplicar_tomo_libro.sql
f_encuestas_subcom_alumnos.sql
f_get_max_nro_tomo.sql
f_encuestas_sync_alumno.sql
f_certificado_actividades.sql
f_pasar_inscripciones_a_historico.sql
get_nombre_grupos_relacion.sql
get_relacion_propuesta.sql
get_ultimo_dato_censal.sql
f_cambios_relacion_propuestas.sql
f_evaluacion_modificar_nota.sql
f_criterio_tiene_hijos.sql
f_evaluacion_baja.sql
get_mayor.sql
f_libros_acta.sql
f_copiar_escala_notas.sql
f_encuestas_subcomisiones.sql
f_mesa_examen_alta.sql
f_tomos_libros_acta.sql
f_acta_examen_alta.sql
f_evaluaciones_relacionadas.sql
f_evaluacion_modificacion.sql
get_nombre_planes_relacion_grupo.sql

Vistas

vw_hist_academica.sql
z_vw_derechos.sql
vw_comisiones.sql
vw_regularidades.sql
vw_equiv_parciales.sql
z_vw_comprobantes.sql
b_vw_ug_elementos.sql

Varios

ck_sga_propuestas_relacion_grupo_inscripcion_automatica.sql
ck_sga_propuestas_relacion_grupo_incluir_en_analitico.sql
ck_mdp_datos_censales_config_obligatorio.sql
ck_mdp_datos_censales_config_visible.sql
iu_sga_actas_folios_libro_tomo_folio_fisico.sql
iu_sga_libros_tomos_libro_nro_tomo.sql
SETVAL_sga_libros_tomos_seq.sql
SETVAL_his_propuestas_relacion_cambios_seq.sql
SETVAL_sga_propuestas_relacion_plan_seq.sql
SETVAL_sga_propuestas_relacion_grupo_seq.sql
SETVAL_sga_propuestas_relacion_seq.sql
type_retorno_creacion_acta_examen.sql
type_retorno_creacion_mesa.sql
type_retorno_funcion.sql

Detalle de cambios

FK/fk_sga_actas_folios_sga_libros_actas.sql

  • FK/fk_sga_actas_folios_sga_libros_actas.sql

     
    1 -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    2 -- SIU-GUARANI 3 - Sistema de Gestión Académica 
    3 -- Versión 3.0.0 
    4 -- Tabla: sga_actas_folios 
    5 -- FK: fk_sga_actas_folios_sga_libros_actas 
    6 -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    7  
    8 -- DROP INDEX ifk_sga_actas_folios_sga_libros_actas; 
    9 CREATE INDEX ifk_sga_actas_folios_sga_libros_actas ON  sga_actas_folios (libro); 
    10  
    11 -- ALTER TABLE sga_actas_folios DROP CONSTRAINT fk_sga_actas_folios_sga_libros_actas;  
    12 ALTER TABLE sga_actas_folios  
    13         ADD CONSTRAINT fk_sga_actas_folios_sga_libros_actas FOREIGN KEY (libro)  
    14         REFERENCES sga_libros_actas (libro) on update restrict on delete restrict; 
    15  
    16  

(^índice)

FK/fk_his_propuestas_relacion_his_propuestas_relacion_cambios.sql

  • FK/fk_his_propuestas_relacion_his_propuestas_relacion_cambios.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: his_propuestas_relacion 
     5-- FK: fk_his_propuestas_relacion_his_propuestas_relacion_cambios 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7 
     8-- DROP INDEX ifk_his_propuestas_relacion_his_propuestas_relacion_cambios; 
     9CREATE INDEX ifk_his_propuestas_relacion_his_propuestas_relacion_cambios ON  his_propuestas_relacion (id_cambio); 
     10 
     11-- ALTER TABLE his_propuestas_relacion DROP CONSTRAINT fk_his_propuestas_relacion_his_propuestas_relacion_cambios;  
     12ALTER TABLE his_propuestas_relacion  
     13        ADD CONSTRAINT fk_his_propuestas_relacion_his_propuestas_relacion_cambios FOREIGN KEY (id_cambio)  
     14        REFERENCES his_propuestas_relacion_cambios (id_cambio) on update restrict on delete restrict; 
     15 
     16 

(^índice)

FK/fk_sga_propuestas_relacion_sga_propuestas.sql

  • FK/fk_sga_propuestas_relacion_sga_propuestas.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_propuestas_relacion 
     5-- FK: fk_sga_propuestas_relacion_sga_propuestas 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7 
     8-- DROP INDEX ifk_sga_propuestas_relacion_sga_propuestas; 
     9CREATE INDEX ifk_sga_propuestas_relacion_sga_propuestas ON  sga_propuestas_relacion (propuesta); 
     10 
     11-- ALTER TABLE sga_propuestas_relacion DROP CONSTRAINT fk_sga_propuestas_relacion_sga_propuestas;  
     12ALTER TABLE sga_propuestas_relacion  
     13        ADD CONSTRAINT fk_sga_propuestas_relacion_sga_propuestas FOREIGN KEY (propuesta)  
     14        REFERENCES sga_propuestas (propuesta) on update restrict on delete restrict; 
     15 
     16 

(^índice)

FK/fk_his_propuestas_relacion_plan_his_propuestas_relacion_cambios.sql

  • FK/fk_his_propuestas_relacion_plan_his_propuestas_relacion_cambios.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: his_propuestas_relacion_plan 
     5-- FK: fk_his_propuestas_relacion_plan_his_propuestas_relacion_cambios 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7 
     8-- DROP INDEX ifk_his_propuestas_relacion_plan_his_propuestas_relacion_cambios; 
     9CREATE INDEX ifk_his_propuestas_relacion_plan_his_propuestas_relacion_cambios ON  his_propuestas_relacion_plan (id_cambio); 
     10 
     11-- ALTER TABLE his_propuestas_relacion_plan DROP CONSTRAINT fk_his_propuestas_relacion_plan_his_propuestas_relacion_cambios;  
     12ALTER TABLE his_propuestas_relacion_plan  
     13        ADD CONSTRAINT fk_his_propuestas_relacion_plan_his_propuestas_relacion_cambios FOREIGN KEY (id_cambio)  
     14        REFERENCES his_propuestas_relacion_cambios (id_cambio) on update restrict on delete restrict; 
     15 

(^índice)

FK/fk_sga_libros_tomos_sga_libros_actas.sql

  • FK/fk_sga_libros_tomos_sga_libros_actas.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_libros_tomos 
     5-- FK: fk_sga_libros_tomos_sga_libros_actas 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7 
     8-- DROP INDEX ifk_sga_libros_tomos_sga_libros_actas; 
     9CREATE INDEX ifk_sga_libros_tomos_sga_libros_actas ON  sga_libros_tomos (libro); 
     10 
     11-- ALTER TABLE sga_libros_tomos DROP CONSTRAINT fk_sga_libros_tomos_sga_libros_actas;  
     12ALTER TABLE sga_libros_tomos  
     13        ADD CONSTRAINT fk_sga_libros_tomos_sga_libros_actas FOREIGN KEY (libro)  
     14        REFERENCES sga_libros_actas (libro) on update restrict on delete restrict; 
     15 
     16 

(^índice)

FK/fk_his_propuestas_relacion_grupo_his_propuestas_relacion_cambios.sql

  • FK/fk_his_propuestas_relacion_grupo_his_propuestas_relacion_cambios.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: his_propuestas_relacion_grupo 
     5-- FK: fk_his_propuestas_relacion_grupo_his_propuestas_relacion_cambios 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7 
     8-- DROP INDEX ifk_his_propuestas_relacion_grupo_his_propuestas_relacion_cambios; 
     9CREATE INDEX ifk_his_propuestas_relacion_grupo_his_propuestas_relacion_cambios ON  his_propuestas_relacion_grupo (id_cambio); 
     10 
     11-- ALTER TABLE his_propuestas_relacion_grupo DROP CONSTRAINT fk_his_propuestas_relacion_grupo_his_propuestas_relacion_cambios;  
     12ALTER TABLE his_propuestas_relacion_grupo  
     13        ADD CONSTRAINT fk_his_propuestas_relacion_grupo_his_propuestas_relacion_cambios FOREIGN KEY (id_cambio)  
     14        REFERENCES his_propuestas_relacion_cambios (id_cambio) on update restrict on delete restrict; 
     15 
     16 

(^índice)

FK/fk_sga_propuestas_relacion_sga_planes.sql

  • FK/fk_sga_propuestas_relacion_sga_planes.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_propuestas_relacion 
     5-- FK: fk_sga_propuestas_relacion_sga_planes 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7 
     8-- DROP INDEX ifk_sga_propuestas_relacion_sga_planes; 
     9CREATE INDEX ifk_sga_propuestas_relacion_sga_planes ON  sga_propuestas_relacion (plan); 
     10 
     11-- ALTER TABLE sga_propuestas_relacion DROP CONSTRAINT fk_sga_propuestas_relacion_sga_planes;  
     12ALTER TABLE sga_propuestas_relacion  
     13        ADD CONSTRAINT fk_sga_propuestas_relacion_sga_planes FOREIGN KEY (plan)  
     14        REFERENCES sga_planes (plan) on update restrict on delete restrict; 
     15 
     16 

(^índice)

FK/fk_sga_actas_folios_sga_libros_tomos.sql

  • FK/fk_sga_actas_folios_sga_libros_tomos.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_actas_folios 
     5-- FK: fk_sga_actas_folios_sga_libros_tomos 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7 
     8-- DROP INDEX ifk_sga_actas_folios_sga_libros_tomos; 
     9CREATE INDEX ifk_sga_actas_folios_sga_libros_tomos ON  sga_actas_folios (libro_tomo); 
     10 
     11-- ALTER TABLE sga_actas_folios DROP CONSTRAINT fk_sga_actas_folios_sga_libros_tomos;  
     12ALTER TABLE sga_actas_folios  
     13        ADD CONSTRAINT fk_sga_actas_folios_sga_libros_tomos FOREIGN KEY (libro_tomo)  
     14        REFERENCES sga_libros_tomos (libro_tomo) on update restrict on delete restrict; 
     15 
     16 

(^índice)

FK/fk_sga_propuestas_relacion_grupo_sga_propuestas_relacion.sql

  • FK/fk_sga_propuestas_relacion_grupo_sga_propuestas_relacion.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_propuestas_relacion_grupo 
     5-- FK: fk_sga_propuestas_relacion_grupo_sga_propuestas_relacion 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7 
     8-- DROP INDEX ifk_sga_propuestas_relacion_grupo_sga_propuestas_relacion; 
     9CREATE INDEX ifk_sga_propuestas_relacion_grupo_sga_propuestas_relacion ON  sga_propuestas_relacion_grupo (relacion); 
     10 
     11-- ALTER TABLE sga_propuestas_relacion_grupo DROP CONSTRAINT fk_sga_propuestas_relacion_grupo_sga_propuestas_relacion;  
     12ALTER TABLE sga_propuestas_relacion_grupo  
     13        ADD CONSTRAINT fk_sga_propuestas_relacion_grupo_sga_propuestas_relacion FOREIGN KEY (relacion)  
     14        REFERENCES sga_propuestas_relacion (relacion) on update restrict on delete restrict; 
     15 
     16 

(^índice)

FK/fk_sga_propuestas_relacion_plan_sga_planes.sql

  • FK/fk_sga_propuestas_relacion_plan_sga_planes.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_propuestas_relacion_plan 
     5-- FK: fk_sga_propuestas_relacion_plan_sga_planes 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7 
     8-- DROP INDEX ifk_sga_propuestas_relacion_plan_sga_planes; 
     9CREATE INDEX ifk_sga_propuestas_relacion_plan_sga_planes ON  sga_propuestas_relacion_plan (plan); 
     10 
     11-- ALTER TABLE sga_propuestas_relacion_plan DROP CONSTRAINT fk_sga_propuestas_relacion_plan_sga_planes;  
     12ALTER TABLE sga_propuestas_relacion_plan  
     13        ADD CONSTRAINT fk_sga_propuestas_relacion_plan_sga_planes FOREIGN KEY (plan)  
     14        REFERENCES sga_planes (plan) on update restrict on delete restrict; 
     15 
     16 

(^índice)

FK/fk_sga_propuestas_relacion_sga_anios_academicos.sql

  • FK/fk_sga_propuestas_relacion_sga_anios_academicos.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_propuestas_relacion 
     5-- FK: fk_sga_propuestas_relacion_sga_anios_academicos 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7 
     8-- DROP INDEX ifk_sga_propuestas_relacion_sga_anios_academicos; 
     9CREATE INDEX ifk_sga_propuestas_relacion_sga_anios_academicos ON  sga_propuestas_relacion (anio_academico); 
     10 
     11-- ALTER TABLE sga_propuestas_relacion DROP CONSTRAINT fk_sga_propuestas_relacion_sga_anios_academicos;  
     12ALTER TABLE sga_propuestas_relacion  
     13        ADD CONSTRAINT fk_sga_propuestas_relacion_sga_anios_academicos FOREIGN KEY (anio_academico)  
     14        REFERENCES sga_anios_academicos (anio_academico) on update restrict on delete restrict; 
     15 
     16 

(^índice)

FK/fk_sga_propuestas_relacion_plan_sga_propuestas_relacion_grupo.sql

  • FK/fk_sga_propuestas_relacion_plan_sga_propuestas_relacion_grupo.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_propuestas_relacion_plan 
     5-- FK: fk_sga_propuestas_relacion_plan_sga_propuestas_relacion_grupo 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7 
     8-- DROP INDEX ifk_sga_propuestas_relacion_plan_sga_propuestas_relacion_grupo; 
     9CREATE INDEX ifk_sga_propuestas_relacion_plan_sga_propuestas_relacion_grupo ON  sga_propuestas_relacion_plan (relacion_grupo); 
     10 
     11-- ALTER TABLE sga_propuestas_relacion_plan DROP CONSTRAINT fk_sga_propuestas_relacion_plan_sga_propuestas_relacion_grupo;  
     12ALTER TABLE sga_propuestas_relacion_plan  
     13        ADD CONSTRAINT fk_sga_propuestas_relacion_plan_sga_propuestas_relacion_grupo FOREIGN KEY (relacion_grupo)  
     14        REFERENCES sga_propuestas_relacion_grupo (relacion_grupo) on update restrict on delete restrict; 

^índice

Permisos/Grants?_sga_propuestas_relacion_grupo.sql

  • Permisos/Grants_sga_propuestas_relacion_grupo.sql

     
     1GRANT select ON sga_propuestas_relacion_grupo TO public; 
     2GRANT update ON sga_propuestas_relacion_grupo TO public; 
     3GRANT delete ON sga_propuestas_relacion_grupo TO public; 
     4GRANT insert ON sga_propuestas_relacion_grupo TO public; 
     5 
     6 

^índice

Permisos/Grants?_mdp_datos_censales_config.sql

  • Permisos/Grants_mdp_datos_censales_config.sql

     
     1GRANT select ON mdp_datos_censales_config TO public; 
     2GRANT update ON mdp_datos_censales_config TO public; 
     3GRANT delete ON mdp_datos_censales_config TO public; 
     4GRANT insert ON mdp_datos_censales_config TO public; 
     5 
     6 

^índice

Permisos/Grants?_sga_libros_tomos.sql

  • Permisos/Grants_sga_libros_tomos.sql

     
     1GRANT select ON sga_libros_tomos TO public; 
     2GRANT update ON sga_libros_tomos TO public; 
     3GRANT delete ON sga_libros_tomos TO public; 
     4GRANT insert ON sga_libros_tomos TO public; 
     5 
     6 

^índice

Permisos/Grants?_sga_propuestas_relacion_plan.sql

  • Permisos/Grants_sga_propuestas_relacion_plan.sql

     
     1GRANT select ON sga_propuestas_relacion_plan TO public; 
     2GRANT update ON sga_propuestas_relacion_plan TO public; 
     3GRANT delete ON sga_propuestas_relacion_plan TO public; 
     4GRANT insert ON sga_propuestas_relacion_plan TO public; 
     5 
     6 

^índice

Permisos/Grants?_sga_propuestas_relacion.sql

  • Permisos/Grants_sga_propuestas_relacion.sql

     
     1GRANT select ON sga_propuestas_relacion TO public; 
     2GRANT update ON sga_propuestas_relacion TO public; 
     3GRANT delete ON sga_propuestas_relacion TO public; 
     4GRANT insert ON sga_propuestas_relacion TO public; 
     5 
     6 

^índice

Permisos/Grants?_his_propuestas_relacion_plan.sql

  • Permisos/Grants_his_propuestas_relacion_plan.sql

     
     1GRANT select ON his_propuestas_relacion_plan TO public; 
     2GRANT update ON his_propuestas_relacion_plan TO public; 
     3GRANT delete ON his_propuestas_relacion_plan TO public; 
     4GRANT insert ON his_propuestas_relacion_plan TO public; 
     5 
     6 

^índice

Permisos/Grants?_his_propuestas_relacion_grupo.sql

  • Permisos/Grants_his_propuestas_relacion_grupo.sql

     
     1GRANT select ON his_propuestas_relacion_grupo TO public; 
     2GRANT update ON his_propuestas_relacion_grupo TO public; 
     3GRANT delete ON his_propuestas_relacion_grupo TO public; 
     4GRANT insert ON his_propuestas_relacion_grupo TO public; 
     5 
     6 

^índice

Permisos/Grants?_his_propuestas_relacion.sql

  • Permisos/Grants_his_propuestas_relacion.sql

     
     1GRANT select ON his_propuestas_relacion TO public; 
     2GRANT update ON his_propuestas_relacion TO public; 
     3GRANT delete ON his_propuestas_relacion TO public; 
     4GRANT insert ON his_propuestas_relacion TO public; 
     5 
     6 

^índice

Permisos/Grants?_his_propuestas_relacion_cambios.sql

  • Permisos/Grants_his_propuestas_relacion_cambios.sql

     
     1GRANT select ON his_propuestas_relacion_cambios TO public; 
     2GRANT update ON his_propuestas_relacion_cambios TO public; 
     3GRANT delete ON his_propuestas_relacion_cambios TO public; 
     4GRANT insert ON his_propuestas_relacion_cambios TO public; 
     5 
     6 

^índice

Secuencias/sga_propuestas_relacion_seq.sql

  • Secuencias/sga_propuestas_relacion_seq.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_propuestas_relacion 
     5-- Secuencia: sga_propuestas_relacion_seq 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7-- DROP SEQUENCE sga_propuestas_relacion_seq; 
     8CREATE SEQUENCE sga_propuestas_relacion_seq START 1; 
     9 
     10 

^índice

Secuencias/sga_propuestas_relacion_plan_seq.sql

  • Secuencias/sga_propuestas_relacion_plan_seq.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_propuestas_relacion_plan 
     5-- Secuencia: sga_propuestas_relacion_plan_seq 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7-- DROP SEQUENCE sga_propuestas_relacion_plan_seq; 
     8CREATE SEQUENCE sga_propuestas_relacion_plan_seq START 1; 
     9 
     10 

^índice

Secuencias/sga_libros_tomos_seq.sql

  • Secuencias/sga_libros_tomos_seq.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_libros_tomos 
     5-- Secuencia: sga_libros_tomos_seq 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7-- DROP SEQUENCE sga_libros_tomos_seq; 
     8CREATE SEQUENCE sga_libros_tomos_seq START 1; 
     9 
     10 

^índice

Secuencias/sga_propuestas_relacion_grupo_seq.sql

  • Secuencias/sga_propuestas_relacion_grupo_seq.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_propuestas_relacion_grupo 
     5-- Secuencia: sga_propuestas_relacion_grupo_seq 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7-- DROP SEQUENCE sga_propuestas_relacion_grupo_seq; 
     8CREATE SEQUENCE sga_propuestas_relacion_grupo_seq START 1; 
     9 
     10 

^índice

Secuencias/his_propuestas_relacion_cambios_seq.sql

  • Secuencias/his_propuestas_relacion_cambios_seq.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: his_propuestas_relacion_cambios 
     5-- Secuencia: his_propuestas_relacion_cambios_seq 
     6-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7-- DROP SEQUENCE his_propuestas_relacion_cambios_seq; 
     8CREATE SEQUENCE his_propuestas_relacion_cambios_seq START 1; 
     9 
     10 

^índice

Tablas/his_propuestas_relacion.sql

  • Tablas/his_propuestas_relacion.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.7.0 
     4-- Tabla: his_propuestas_relacion 
     5-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     6 
     7-- DROP TABLE IF EXISTS his_propuestas_relacion; 
     8CREATE TABLE his_propuestas_relacion 
     9( 
     10        id_cambio Integer NOT NULL, 
     11        relacion Integer NOT NULL, 
     12        propuesta Integer NOT NULL, 
     13        plan Integer, 
     14        anio_academico Numeric NOT NULL, 
     15        fecha_alta Timestamp(0) with time zone NOT NULL 
     16); 
     17 
     18-- ALTER TABLE his_propuestas_relacion DROP CONSTRAINT pk_his_propuestas_relacion; 
     19ALTER TABLE his_propuestas_relacion ADD CONSTRAINT pk_his_propuestas_relacion PRIMARY KEY (id_cambio,relacion); 
     20 
     21Revoke all ON his_propuestas_relacion FROM public; 
     22-- ++++++++++++++++++++++++++ Fin tabla his_propuestas_relacion +++++++++++++++++++++++++++++ 
     23 

^índice

Tablas/his_propuestas_relacion_cambios.sql

  • Tablas/his_propuestas_relacion_cambios.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.7.0 
     4-- Tabla: his_propuestas_relacion_cambios 
     5-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     6 
     7-- DROP TABLE IF EXISTS his_propuestas_relacion_cambios; 
     8CREATE TABLE his_propuestas_relacion_cambios 
     9( 
     10        id_cambio INTEGER NOT NULL DEFAULT nextval('his_propuestas_relacion_cambios_seq'::text) , 
     11        fecha_cambio Timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP 
     12); 
     13 
     14-- ALTER TABLE his_propuestas_relacion_cambios DROP CONSTRAINT pk_his_propuestas_relacion_cambios; 
     15ALTER TABLE his_propuestas_relacion_cambios ADD CONSTRAINT pk_his_propuestas_relacion_cambios PRIMARY KEY (id_cambio); 
     16 
     17Revoke all ON his_propuestas_relacion_cambios FROM public; 
     18-- ++++++++++++++++++++++++++ Fin tabla his_propuestas_relacion_cambios +++++++++++++++++++++++++++++ 
     19 

^índice

Tablas/sga_certificados.sql

  • Tablas/sga_certificados.sql

     
    2323        fecha_resolucion_ministerio Date, 
    2424        nro_resolucion_ministerio Varchar(20), 
    2525        acreditado_coneau Char(1), 
    26         categorizacion_coneau Char(1), 
     26        categorizacion_coneau Varchar(2), 
    2727        titulo_araucano Integer, 
    2828        incumbencia_profesional Text, 
    2929        perfil_profesional Text, 

^índice

Tablas/sga_propuestas_relacion_plan.sql

  • Tablas/sga_propuestas_relacion_plan.sql

    
            
            
     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_propuestas_relacion_plan 
     5-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     6 
     7-- DROP TABLE IF EXISTS sga_propuestas_relacion_plan; 
     8CREATE TABLE sga_propuestas_relacion_plan 
     9( 
     10        relacion_plan INTEGER NOT NULL DEFAULT nextval('sga_propuestas_relacion_plan_seq'::text) , 
     11        relacion_grupo Integer NOT NULL, 
     12        plan Integer NOT NULL 
     13); 
     14 
     15-- ALTER TABLE sga_propuestas_relacion_plan DROP CONSTRAINT pk_sga_propuestas_relacion_plan; 
     16ALTER TABLE sga_propuestas_relacion_plan ADD CONSTRAINT pk_sga_propuestas_relacion_plan PRIMARY KEY (relacion_plan); 
     17 
     18Revoke all ON sga_propuestas_relacion_plan FROM public; 
     19-- ++++++++++++++++++++++++++ Fin tabla sga_propuestas_relacion_plan +++++++++++++++++++++++++++++ 
     20 

^índice

Tablas/his_propuestas_relacion_plan.sql

  • Tablas/his_propuestas_relacion_plan.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.7.0 
     4-- Tabla: his_propuestas_relacion_plan 
     5-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     6 
     7-- DROP TABLE IF EXISTS his_propuestas_relacion_plan; 
     8CREATE TABLE his_propuestas_relacion_plan 
     9( 
     10        id_cambio Integer NOT NULL, 
     11        relacion_plan Integer NOT NULL, 
     12        relacion_grupo Integer NOT NULL, 
     13        plan Integer NOT NULL 
     14); 
     15 
     16-- ALTER TABLE his_propuestas_relacion_plan DROP CONSTRAINT pk_his_propuestas_relacion_plan; 
     17ALTER TABLE his_propuestas_relacion_plan ADD CONSTRAINT pk_his_propuestas_relacion_plan PRIMARY KEY (id_cambio,relacion_plan); 
     18 
     19Revoke all ON his_propuestas_relacion_plan FROM public; 
     20-- ++++++++++++++++++++++++++ Fin tabla his_propuestas_relacion_plan +++++++++++++++++++++++++++++ 
     21 

^índice

Tablas/sga_libros_tomos.sql

  • Tablas/sga_libros_tomos.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_libros_tomos 
     5-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     6 
     7-- DROP TABLE IF EXISTS sga_libros_tomos; 
     8CREATE  TABLE sga_libros_tomos 
     9( 
     10        libro_tomo INTEGER NOT NULL DEFAULT nextval('sga_libros_tomos_seq'::text) , 
     11        libro Integer NOT NULL, 
     12        nro_tomo Integer NOT NULL DEFAULT 1, 
     13        cant_max_folios Integer, 
     14        ultimo_acta Integer, 
     15        ultimo_folio Integer 
     16); 
     17 
     18-- ALTER TABLE sga_libros_tomos DROP CONSTRAINT pk_sga_libros_tomos; 
     19ALTER TABLE sga_libros_tomos ADD CONSTRAINT pk_sga_libros_tomos PRIMARY KEY (libro_tomo); 
     20 
     21Revoke all ON sga_libros_tomos FROM public; 
     22-- ++++++++++++++++++++++++++ Fin tabla sga_libros_tomos +++++++++++++++++++++++++++++ 
     23 

^índice

Tablas/mdp_datos_censales_config.sql

  • Tablas/mdp_datos_censales_config.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: mdp_datos_censales_config 
     5-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     6 
     7-- DROP TABLE IF EXISTS mdp_datos_censales_config; 
     8CREATE TABLE mdp_datos_censales_config 
     9( 
     10        tabla Varchar(50) NOT NULL, 
     11        campo Varchar(50) NOT NULL, 
     12        etiqueta Varchar(255), 
     13        orden Integer, 
     14        visible Char(1) NOT NULL DEFAULT 'S', 
     15        obligatorio Char(1) NOT NULL DEFAULT 'N' 
     16); 
     17 
     18-- ALTER TABLE mdp_datos_censales_config DROP CONSTRAINT pk_mdp_datos_censales_config; 
     19ALTER TABLE mdp_datos_censales_config ADD CONSTRAINT pk_mdp_datos_censales_config PRIMARY KEY (tabla, campo); 
     20 
     21Revoke all ON mdp_datos_censales_config FROM public; 
     22-- ++++++++++++++++++++++++++ Fin tabla mdp_datos_censales_config +++++++++++++++++++++++++++++ 
     23 

^índice

Tablas/sga_actas_folios.sql

  • Tablas/sga_actas_folios.sql

     
    99( 
    1010        id_acta Integer NOT NULL, 
    1111        folio Smallint NOT NULL, 
    12         folio_fisico Integer, 
    13         libro Integer 
     12        libro_tomo Integer, 
     13        folio_fisico Integer 
    1414); 
    1515 
    1616-- ALTER TABLE sga_actas_folios DROP CONSTRAINT pk_sga_actas_folios; 

^índice

Tablas/his_propuestas_relacion_grupo.sql

  • Tablas/his_propuestas_relacion_grupo.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.7.0 
     4-- Tabla: his_propuestas_relacion_grupo 
     5-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     6 
     7-- DROP TABLE IF EXISTS his_propuestas_relacion_grupo; 
     8CREATE TABLE his_propuestas_relacion_grupo 
     9( 
     10        id_cambio Integer NOT NULL, 
     11        relacion_grupo Integer NOT NULL, 
     12        relacion       Integer NOT NULL, 
     13        incluir_en_analitico Char(1) NOT NULL, 
     14        inscripcion_automatica Char(1) NOT NULL 
     15); 
     16 
     17-- ALTER TABLE his_propuestas_relacion_grupo DROP CONSTRAINT pk_his_propuestas_relacion_grupo; 
     18ALTER TABLE his_propuestas_relacion_grupo ADD CONSTRAINT pk_his_propuestas_relacion_grupo PRIMARY KEY (id_cambio,relacion_grupo); 
     19 
     20Revoke all ON his_propuestas_relacion_grupo FROM public; 
     21-- ++++++++++++++++++++++++++ Fin tabla his_propuestas_relacion_grupo +++++++++++++++++++++++++++++ 
     22 

^índice

Tablas/sga_alumnos_hist_planes.sql

  • Tablas/sga_alumnos_hist_planes.sql

     
    1111        alumno Integer NOT NULL, 
    1212        plan_version Integer NOT NULL, 
    1313        motivo_plan Integer NOT NULL, 
    14   fecha Timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, 
     14        fecha Timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    1515        tipo Smallint NOT NULL DEFAULT 1, 
    1616        documento Integer, 
    1717        observaciones Varchar(200) 

^índice

Tablas/sga_escalas_notas_det.sql

  • Tablas/sga_escalas_notas_det.sql

     
    1212        descripcion Varchar(100) NOT NULL, 
    1313        concepto Integer, 
    1414        resultado Char(1) NOT NULL, 
    15         valor_numerico Numeric(8,3) 
     15        valor_numerico Numeric(8,3), 
     16        orden Integer 
    1617); 
    1718 
    1819-- ALTER TABLE sga_escalas_notas_det DROP CONSTRAINT pk_sga_escalas_notas_det; 

^índice

Tablas/sga_propuestas_relacion.sql

  • Tablas/sga_propuestas_relacion.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_propuestas_relacion 
     5-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     6 
     7-- DROP TABLE IF EXISTS sga_propuestas_relacion; 
     8CREATE TABLE sga_propuestas_relacion 
     9( 
     10        relacion INTEGER NOT NULL DEFAULT nextval('sga_propuestas_relacion_seq'::text) , 
     11        propuesta Integer NOT NULL, 
     12        plan Integer, 
     13        anio_academico Numeric NOT NULL, 
     14        fecha_alta Timestamp(0) with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP 
     15); 
     16 
     17-- ALTER TABLE sga_propuestas_relacion DROP CONSTRAINT pk_sga_propuestas_relacion; 
     18ALTER TABLE sga_propuestas_relacion ADD CONSTRAINT pk_sga_propuestas_relacion PRIMARY KEY (relacion); 
     19 
     20Revoke all ON sga_propuestas_relacion FROM public; 
     21-- ++++++++++++++++++++++++++ Fin tabla sga_propuestas_relacion +++++++++++++++++++++++++++++ 
     22 

^índice

Tablas/mdp_datos_salud.sql

  • Tablas/mdp_datos_salud.sql

     
    1010        dato_salud INTEGER NOT NULL DEFAULT nextval('mdp_datos_salud_seq'::text) , 
    1111        persona Integer NOT NULL, 
    1212        tipo Integer NOT NULL, 
    13         grado Char(1) NOT NULL, 
    14         caracter Char(1) NOT NULL, 
     13        grado Char(1), 
     14        caracter Char(1), 
    1515        fecha_desde Date, 
    1616        fecha_hasta Date, 
    1717        certificado Char(1) NOT NULL DEFAULT 'N', 

^índice

Tablas/sga_titulos_categ_coneau.sql

  • Tablas/sga_titulos_categ_coneau.sql

     
    77-- DROP TABLE IF EXISTS sga_titulos_categ_coneau; 
    88CREATE  TABLE sga_titulos_categ_coneau 
    99( 
    10         categorizacion_coneau Char(1) NOT NULL, 
     10        categorizacion_coneau Varchar(2) NOT NULL, 
    1111        descripcion Varchar(50) NOT NULL 
    1212); 
    1313 

^índice

Tablas/sga_libros_actas.sql

  • Tablas/sga_libros_actas.sql

     
    1414        fecha_activacion Date, 
    1515        fecha_fin_vigencia Date, 
    1616        es_libro_activo Char(1) DEFAULT 'S', 
    17         anio_academico Numeric, 
    18         ultimo_nro_acta Integer, 
    19         ultimo_nro_folio Integer, 
    20         cant_max_folios Smallint, 
    21         nro_tomo Smallint 
     17        anio_academico Numeric 
    2218); 
    2319 
    2420-- ALTER TABLE sga_libros_actas DROP CONSTRAINT pk_sga_libros_actas; 

^índice

Tablas/sga_propuestas_relacion_grupo.sql

  • Tablas/sga_propuestas_relacion_grupo.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 - Sistema de Gestión Académica 
     3-- Versión 3.0.0 
     4-- Tabla: sga_propuestas_relacion_grupo 
     5-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     6 
     7-- DROP TABLE IF EXISTS sga_propuestas_relacion_grupo; 
     8CREATE TABLE sga_propuestas_relacion_grupo 
     9( 
     10        relacion_grupo INTEGER NOT NULL DEFAULT nextval('sga_propuestas_relacion_grupo_seq'::text) , 
     11        relacion Integer NOT NULL, 
     12        incluir_en_analitico Char(1) NOT NULL DEFAULT 'N', 
     13        inscripcion_automatica Char(1) NOT NULL DEFAULT 'N' 
     14); 
     15 
     16-- ALTER TABLE sga_propuestas_relacion_grupo DROP CONSTRAINT pk_sga_propuestas_relacion_grupo; 
     17ALTER TABLE sga_propuestas_relacion_grupo ADD CONSTRAINT pk_sga_propuestas_relacion_grupo PRIMARY KEY (relacion_grupo); 
     18 
     19Revoke all ON sga_propuestas_relacion_grupo FROM public; 
     20-- ++++++++++++++++++++++++++ Fin tabla sga_propuestas_relacion_grupo +++++++++++++++++++++++++++++ 
     21 

^índice

Triggers/tua_sga_mesas_examen_instancias.sql

  • Triggers/tua_sga_mesas_examen_instancias.sql

     
    1111DECLARE _evaluacion Integer; 
    1212BEGIN 
    1313 
    14    -- Si se modifico la escala de notas, actualizo la misma en los alumnos de la comision 
     14   -- Si se modifico la escala de notas, actualizo la misma en los alumnos de la mesa de examen 
    1515   IF NEW.escala_nota <> OLD.escala_nota THEN 
    1616     SELECT sga_evaluaciones.evaluacion  
    1717       INTO _evaluacion 
     
    2626     -- Actualizo la escala de notas a los alumnos de esa instancia 
    2727     UPDATE sga_eval_detalle_examenes 
    2828        SET escala_nota = NEW.escala_nota, 
    29             nota = NULL  
     29            nota = NULL,  
     30            resultado = NULL  
    3031      WHERE evaluacion = _evaluacion 
    3132        AND instancia = NEW.instancia; 
    3233 
     
    3536     UPDATE sga_actas_instancias 
    3637        SET escala_nota = NEW.escala_nota 
    3738       FROM sga_actas 
    38        WHERE sga_actas.evaluacion = NEW.evaluacion 
     39       WHERE sga_actas.evaluacion = _evaluacion 
    3940         AND sga_actas.origen = 'E' 
    4041         AND sga_actas_instancias.id_acta = sga_actas.id_acta 
    4142         AND sga_actas_instancias.instancia = NEW.instancia    

^índice

Triggers/tua_sga_comisiones_instancias.sql

  • Triggers/tua_sga_comisiones_instancias.sql

     
    2727       -- Actualizo la escala de notas a los alumnos  
    2828       UPDATE sga_eval_detalle_cursadas  
    2929          SET escala_nota_cursada = NEW.escala_nota, 
    30               nota_cursada = NULL  
     30              nota_cursada = NULL,  
     31              resultado_cursada = NULL  
    3132        WHERE evaluacion = _evaluacion; 
    3233     END IF;    
    3334 
     
    3637       -- Actualizo la escala de notas a los alumnos  
    3738       UPDATE sga_eval_detalle_cursadas 
    3839          SET escala_nota_promocion = NEW.escala_nota, 
    39               nota_promocion = NULL  
     40              nota_promocion = NULL, 
     41              resultado_promocion = NULL  
    4042        WHERE evaluacion = _evaluacion; 
    4143     END IF;    
    4244      

^índice

Triggers/tia_sga_insc_cursada.sql

  • Triggers/tia_sga_insc_cursada.sql

     
     1-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- TRIGGER ftia_sga_insc_cursada 
     3-- AFTER INSERT 
     4-- Tabla: sga_insc_cursada 
     5-- Version 3.7.0 
     6-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     7 
     8-- DROP FUNCTION ftia_sga_insc_cursada(); 
     9CREATE OR REPLACE FUNCTION ftia_sga_insc_cursada() RETURNS TRIGGER AS $BODY$ 
     10  DECLARE _rtn_encuestas smallint; 
     11  BEGIN 
     12    -- Si la inscripción esta aceptada 
     13    IF NEW.estado = 'A' THEN 
     14      -- Actualizo encuestas. Alta de encuestas vigentes relacionadas con la comision. 
     15      _rtn_encuestas := f_encuestas_sync_alumno (NEW.alumno, NEW.comision, 'A', NULL, NEW.estado); 
     16    END IF; 
     17      
     18    RETURN NEW; 
     19  END; 
     20$BODY$ LANGUAGE plpgsql; 
     21 
     22 
     23-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     24-- Trigger de INSERT sobre sga_insc_cursada 
     25-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     26-- DROP TRIGGER tia_sga_insc_cursada ON sga_insc_cursada RESTRICT; 
     27CREATE TRIGGER tia_sga_insc_cursada  
     28    AFTER INSERT ON sga_insc_cursada 
     29    FOR EACH ROW EXECUTE PROCEDURE ftia_sga_insc_cursada(); 

^índice

Funciones/f_generar_escala_notas_continua.sql

  • Funciones/f_generar_escala_notas_continua.sql

     
    11-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    22-- SIU-GUARANI 3 
    3 -- Version 3.0.0 
     3-- Version 3.0.0, 3.7.0 
    44-- Function: f_generar_escala_notas_continua(integer) 
    55-- 
    66-- Genera las notas de una escala de notas CONTINUA y NUMÉRICA. 
    77--   
    88-- Recibe:   
    99--        1. ID de la escala de notas 
    10 -- Devuelve: cantidad de notas generadas. 
     10-- Devuelve:  
     11--        1. cantidad de notas generadas. 
    1112-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    1213 
    1314-- DROP FUNCTION f_generar_escala_notas_continua(integer); 
     
    3233   _resultado_fin       numeric; 
    3334   _concepto_id integer; 
    3435   _concepto_fin        numeric; 
     36   _orden integer; 
    3537BEGIN 
    3638 
    3739_resultado_fin := NULL; 
     
    4648_cant_notas := ((_nota_final * 10^_decimales) - (_nota_inicial * 10^_decimales))::integer ; 
    4749 
    4850_k := 0; 
     51_orden := 1; 
    4952_nota := (_nota_inicial * 10^_decimales)::integer; 
    5053 
    5154WHILE _k <= _cant_notas 
     
    8285          AND _nota_num BETWEEN nota_inicial AND nota_final; 
    8386    END IF; 
    8487     
    85     INSERT INTO sga_escalas_notas_det (escala_nota, nota, descripcion, resultado, concepto,  valor_numerico) 
    86          VALUES (pEscalaNotas, _nota_txt, _nota_desc, _resultado_id, _concepto_id, _nota_num); 
     88    INSERT INTO sga_escalas_notas_det (escala_nota, nota, descripcion, resultado, concepto,  valor_numerico, orden) 
     89         VALUES (pEscalaNotas, _nota_txt, _nota_desc, _resultado_id, _concepto_id, _nota_num, _orden); 
    8790     
    8891  -- incremento el contador 
    8992  _nota := _nota + 1; 
    9093  _k := _k + 1; 
     94  _orden := _orden + 1; 
    9195END LOOP; -- while 
    9296 
    9397-- cantidad de notas generadas 

^índice

Funciones/f_criterio_trabaja.sql

  • Funciones/f_criterio_trabaja.sql

     
    99-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    1010 
    1111-- DROP FUNCTION f_criterio_trabaja(integer); 
    12 CREATE OR REPLACE FUNCTION f_criterio_trabaja(_persona integer) 
     12CREATE OR REPLACE FUNCTION f_criterio_trabaja(pPersona integer) 
    1313  RETURNS integer AS 
    1414$BODY$ 
    1515 
    1616 -- Variables locales 
    1717 DECLARE _Trabaja integer; 
    18  DECLARE _Fecha  date; 
    19  
     18  
    2019BEGIN 
    2120  _Trabaja := 1; -- No trabaja 
    22   _Fecha := NULL; 
    2321   
    24   SELECT Max(fecha_relevamiento) INTO _Fecha 
    25     FROM mdp_datos_censales  
    26     WHERE persona = _persona; 
    27    
    28   IF _Fecha IS NULL THEN 
    29     -- No hay dato censal, retorno como que no trabaja 
    30     RETURN 1; 
    31   END IF;   
    32  
    3322  -- Recupero cantidad de hijos...    
    3423  SELECT mdp_datos_economicos.trabajo_existe  
    3524    INTO _Trabaja 
    3625    FROM mdp_datos_censales,  
    3726         mdp_datos_economicos 
    38    WHERE mdp_datos_censales.persona = _persona 
    39      AND mdp_datos_censales.fecha_relevamiento = _Fecha 
     27   WHERE mdp_datos_censales.persona = pPersona 
    4028     AND mdp_datos_economicos.dato_censal = mdp_datos_censales.dato_censal; 
    4129      
    42       
    4330  IF _Trabaja = 1 THEN 
    4431    -- 1 = Trabajó al menos una hora (incluye a los que no trabajaron por licencia, vacaciones, enfermedad) 
    4532    RETURN 0; 
     
    5542 
    5643-- REVOKE EXECUTE ON FUNCTION f_criterio_trabaja(integer) FROM public; 
    5744GRANT EXECUTE ON FUNCTION f_criterio_trabaja(integer) TO public; 
    58  
    59  
    60  
    61  

^índice

Funciones/f_duplicar_libro_de_actas.sql

  • Funciones/f_duplicar_libro_de_actas.sql

     
    99--     2. Indica si activa el nuevo libro y desactiva el libro copiado.  
    1010--        Valores: S - Activa el nuevo libro y desactiva el original /  
    1111--                 N - Deja el original como esta y el nuevo lo pone como inactivo. 
    12 -- Retorna: Integer: ID del nuevo libro 
     12-- 
     13-- Retorna:  
     14--     1. ID del Tomo 1 del Nuevo libro creado 
    1315-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    1416 
    15 -- DROP FUNCTION f_duplicar_libro_de_actas(integer, char); 
     17--DROP FUNCTION f_duplicar_libro_de_actas(integer, char); 
    1618CREATE OR REPLACE FUNCTION f_duplicar_libro_de_actas(pLibro Integer, pActivarLibro char(1)) 
    1719  RETURNS integer AS 
    1820$BODY$ 
    1921 
    2022 -- Variables locales 
    2123 DECLARE _libro_nuevo integer; 
     24 DECLARE _libro_tomo_1 integer; 
    2225 DECLARE _fecha_actual DATE; 
    2326 DECLARE _activo char(1); 
    2427 
    2528BEGIN 
     29  _libro_nuevo  := NULL; 
     30  _libro_tomo_1 := NULL; 
    2631  _fecha_actual := CURRENT_DATE; 
     32   
    2733  IF pActivarLibro = 'S' THEN 
    2834    _activo := 'S'; 
    2935  ELSE 
     
    3137  END IF; 
    3238         
    3339  INSERT INTO sga_libros_actas ( 
    34        nro_libro, nombre, descripcion, fecha_activacion, fecha_fin_vigencia,es_libro_activo,  
    35        anio_academico, ultimo_nro_acta, ultimo_nro_folio,cant_max_folios,nro_tomo) 
    36     SELECT nro_libro, nombre, descripcion, _fecha_actual, NULL, _activo, anio_academico, NULL, NULL, cant_max_folios, nro_tomo 
     40       nro_libro, nombre, descripcion, fecha_activacion, fecha_fin_vigencia, es_libro_activo, anio_academico, cant_max_tomos) 
     41    SELECT nro_libro, nombre, descripcion, _fecha_actual, NULL, _activo, anio_academico, cant_max_tomos 
    3742      FROM sga_libros_actas 
    3843     WHERE libro = pLibro; 
    39      
     44 
    4045  -- Obtengo el ID del libro    
    4146  _libro_nuevo := (SELECT currval('sga_libros_actas_seq')); 
    42    
     47 
     48  -- Tomos del Libro 
     49  INSERT INTO sga_libros_tomos (libro, nro_tomo, cant_max_folios, ultima_acta, ultimo_folio) 
     50    SELECT _libro_nuevo, nro_tomo, cant_max_folios, NULL, NULL 
     51      FROM sga_libros_tomos 
     52     WHERE libro = pLibro; 
     53 
     54  -- Obtengo el id del tomo 1 del nuevo libro    
     55  SELECT libro_tomo  
     56    INTO _libro_tomo_1 
     57    FROM sga_libros_tomos 
     58   WHERE libro = _libro_nuevo 
     59     AND nro_tomo = 1; 
     60 
    4361  -- Copio la definicion del libro  
    4462  -- Alcance 
    4563  INSERT INTO sga_libros_actas_alcance (libro, origen)  
     
    6280    UPDATE sga_libros_actas SET es_libro_activo = 'N' WHERE libro = pLibro; 
    6381  END IF; 
    6482 
    65   -- Retorno el id del nuevo libro duplicado   
    66   RETURN _libro_nuevo; 
     83  -- Retorno el id del tomo 1 del nuevo libro creado   
     84  RETURN _libro_tomo_1; 
    6785 
    6886END; 
    6987$BODY$ 

^índice

Funciones/f_horario_subcomision_aula.sql

  • Funciones/f_horario_subcomision_aula.sql

     
     1-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 
     3-- Version 3.7.0 
     4-- Function: f_horario_subcomision_aula 
     5-- 
     6-- Retorna los dias y horarios de las bandas horarias asignadas a la subcomision 
     7--   
     8-- Recibe:  f_horario_subcomision_aula(integer) 
     9--   1. Subcomision 
     10--   2. Si muestra o no el tipo de Clase 
     11-- Retorna:  
     12--   1. Dias y Horarios de las asignacions de la subcomision 
     13-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     14 
     15-- DROP FUNCTION f_horario_subcomision_aula_aula(integer, boolean); 
     16CREATE OR REPLACE FUNCTION f_horario_subcomision_aula(_subcomision Integer, pMostrarTipoClase boolean) 
     17  RETURNS text AS  
     18$BODY$ 
     19DECLARE  
     20  _horario text;  
     21  i smallint;      
     22  cur_bh record; 
     23BEGIN 
     24   
     25  _horario := ''; 
     26  i := 0; 
     27  FOR cur_bh IN  
     28   ( 
     29   SELECT sga_asignaciones.dia_semana as dia_semana, 
     30          to_char(sga_asignaciones.hora_inicio, 'HH24:MI') as inicio, 
     31          to_char(sga_asignaciones.hora_finalizacion, 'HH24:MI') as fin, 
     32          sga_clases_tipos.nombre as desc_tipo_clase, 
     33          sga_espacios.nombre as espacio_nombre 
     34     FROM sga_subcomisiones_bh, 
     35          sga_comisiones_bh, 
     36          sga_clases_tipos, 
     37          sga_asignaciones 
     38            LEFT JOIN sga_espacios ON sga_espacios.espacio = sga_asignaciones.espacio 
     39      WHERE sga_subcomisiones_bh.subcomision = _subcomision 
     40        AND sga_comisiones_bh.banda_horaria = sga_subcomisiones_bh.banda_horaria 
     41        AND sga_clases_tipos.tipo_clase = sga_comisiones_bh.tipo_clase 
     42        AND sga_asignaciones.asignacion = sga_comisiones_bh.asignacion 
     43     ORDER BY CASE sga_asignaciones.dia_semana 
     44                WHEN 'Lunes' THEN 1 
     45                WHEN 'Martes' THEN 2 
     46                WHEN 'Miercoles' THEN 3 
     47                WHEN 'Jueves' THEN 4 
     48                WHEN 'Viernes' THEN 5 
     49                WHEN 'Sabado' THEN 6 
     50                WHEN 'Domingo' THEN 7 
     51                ELSE 0 
     52              END, 2    
     53   ) 
     54  LOOP 
     55   IF i > 0 THEN 
     56    _horario := _horario || ' / ' ; 
     57   END IF; 
     58 
     59   IF pMostrarTipoClase THEN 
     60     _horario := _horario || substring(cur_bh.dia_semana from 1 for 3) || ' ' || cur_bh.inicio || ' a ' || cur_bh.fin || ' - ' || cur_bh.desc_tipo_clase || COALESCE( ' (' || cur_bh.espacio_nombre || ')', ''); 
     61   ELSE 
     62     _horario := _horario || substring(cur_bh.dia_semana from 1 for 3) || ' ' || cur_bh.inicio || ' a ' || cur_bh.fin || COALESCE( ' (' || cur_bh.espacio_nombre || ')', ''); 
     63   END IF;   
     64   i := i + 1; 
     65  END LOOP; 
     66     
     67  -- Retorno los dias y horarios de la subcomision 
     68  RETURN _horario; 
     69     
     70END; 
     71$BODY$ 
     72LANGUAGE 'plpgsql' VOLATILE; 
     73-- ++++++++++++++++++++++++++++++ Fin Function f_horario_subcomision_aula ++++++++++++++++ 
     74 
     75-- REVOKE EXECUTE ON FUNCTION f_horario_subcomision_aula (integer, boolean) FROM public; 
     76GRANT EXECUTE ON FUNCTION f_horario_subcomision_aula (integer, boolean) to public; 
     77 

^índice

Funciones/f_encuestas_generar_items.sql

  • Funciones/f_encuestas_generar_items.sql

     
    2727  cur_form RECORD; 
    2828  cur_com RECORD; 
    2929  cur_subcom RECORD; 
     30  cur_alu RECORD;  
    3031  hab  gde_habilitaciones%ROWTYPE; 
    3132  _existen_items boolean; 
    3233  _nombre_actividad varchar(255); 
     
    8687      docente Integer); 
    8788 
    8889  -- Formularios Originales 
     90  CREATE TEMP TABLE temp_form (formulario Integer NOT NULL, titulo Text NOT NULL, habilitacion Integer NOT NULL, estado char(1)); 
     91 
    8992  CREATE TEMP TABLE temp_form_orig (formulario Integer NOT NULL, titulo Text NOT NULL, habilitacion Integer NOT NULL, estado char(1)); 
    90   CREATE TEMP TABLE temp_form (formulario Integer NOT NULL, titulo Text NOT NULL, habilitacion Integer NOT NULL, estado char(1)); 
     93  INSERT INTO temp_form_orig (formulario, titulo, habilitacion, estado)  
     94    SELECT formulario, titulo, habilitacion, estado  
     95      FROM gde_formularios 
     96     WHERE habilitacion = pHabilitacion; 
    9197   
     98  -- Encuestas pendientes originales. 
    9299  CREATE TEMP TABLE temp_pend_orig (respuesta Integer Not Null, persona Integer Not Null, formulario Integer Not Null, propuesta Integer);  
    93  
    94   -- Encuestas pendientes originales. 
    95100  INSERT INTO temp_pend_orig (respuesta, persona, formulario) 
    96101       SELECT p.respuesta, p.persona, p.formulario 
    97102         FROM gde_formularios as f, 
     
    99104        WHERE p.formulario = f.formulario 
    100105          AND f.habilitacion = pHabilitacion; 
    101106 
    102   -- Formularios 
    103   INSERT INTO temp_form_orig (formulario, titulo, habilitacion, estado)  
    104     SELECT formulario, titulo, habilitacion, estado  
    105       FROM gde_formularios 
    106      WHERE habilitacion = pHabilitacion; 
    107    
    108  
    109  
    110107  -- Recupero los datos de la habilitación 
    111108  SELECT * INTO hab FROM gde_habilitaciones WHERE habilitacion = pHabilitacion; 
    112109 
     
    121118  ELSE 
    122119    _existen_items := false; 
    123120  END IF; 
     121 
     122  
    124123   
    125124 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    126125 --  1 - Evaluación docente / 2 - Evaluación académica / 3 - Evaluación docente y académica 
    127126 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    128127 IF hab.tipo = 1 OR hab.tipo = 2 OR hab.tipo = 3 THEN 
    129128   CREATE TEMP TABLE temp_alumnos_com (comision Integer Not Null, alumno Integer Not Null, persona Integer Not Null, subcomisiones integer[]);  
     129   CREATE TEMP TABLE temp_alumnos_com_orig (comision Integer Not Null, alumno Integer Not Null, persona Integer Not Null, subcomisiones integer[]);  
     130   CREATE TEMP TABLE temp_alumnos_com_new  (comision Integer Not Null, alumno Integer Not Null, persona Integer Not Null, subcomisiones integer[]);  
    130131   CREATE TEMP TABLE temp_com (comision Integer Not Null, tiene_subcomisiones integer NOT NULL DEFAULT 0);  
    131132   CREATE TEMP TABLE temp_com2 (comision Integer Not Null, tiene_subcomisiones integer NOT NULL DEFAULT 0);   
    132133   CREATE TEMP TABLE temp_doc  (comision Integer Not Null, subcomision Integer, docente Integer Not Null, responsabilidad Integer);  
     134   CREATE TEMP TABLE temp_com_orig (comision Integer, tiene_subcomisiones integer NOT NULL DEFAULT 0);  
    133135 
     136 
     137   -- Recupero los alumnos originales que ya estan para contestar las encuestas... 
     138   INSERT INTO temp_alumnos_com_orig (comision, alumno, persona, subcomisiones) 
     139      SELECT f.comision, a.alumno, p.persona, f.subcomisiones 
     140        FROM gde_formularios as f, 
     141             gde_encuestas_pendientes as p, 
     142             sga_alumnos as a 
     143       WHERE f.habilitacion = pHabilitacion 
     144         AND p.formulario = f.formulario 
     145         AND a.persona = p.persona; 
     146 
     147   -- Comisiones que estan alcanzadas por la habilitacion 
     148   INSERT INTO temp_com_orig (comision)  
     149    SELECT DISTINCT comision  FROM gde_formularios WHERE habilitacion = pHabilitacion AND comision IS NOT NULL; 
     150   UPDATE temp_com_orig 
     151       SET tiene_subcomisiones = (SELECT count(*) FROM sga_subcomisiones WHERE comision = temp_com_orig.comision); 
     152 
    134153    -- Inserto todas las comisiones del año académico y periodo lectivo (si fue definido) 
    135154    IF hab.alcance = 1 THEN 
    136155       -- comisiones 
     
    438457   
    439458  -- Por cada comision nueva, genero el formulario y sus items asociados 
    440459  FOR cur_com IN  
    441          SELECT comision 
    442            FROM temp_com  
     460         SELECT comision FROM temp_com  
    443461         EXCEPT 
    444462         SELECT DISTINCT comision FROM temp_items_orig 
    445463  LOOP 
     
    475493                WHERE comision = cur_com.comision; 
    476494     END IF; -- Comision sin subcomisiones 
    477495      
     496      
    478497     --  La Comision tiene subcomisiones. 
    479      --  Se generan un formulario para la comision por cada combinacion de subcomisiones por diferente tipo de clase exista 
    480      --  en las inscripciones de los alumnos 
     498     --  Se generan un formulario para la comision por cada combinacion de subcomisiones por diferente tipo de clase exista  en las inscripciones de los alumnos 
     499      
    481500     IF _tiene_subcomisiones > 0 THEN 
     501      
    482502        -- Genero tantos formularios como combinaciones de subcomisiones por tipo de clase hay 
    483         FOR cur_subcom IN SELECT DISTINCT f_encuestas_subcom_alumnos(alumno, comision) as subcom 
    484                          FROM sga_insc_cursada 
    485                         WHERE comision = cur_com.comision  
    486                      ORDER BY 1 
     503        -- FOR cur_subcom IN SELECT DISTINCT f_encuestas_subcom_alumnos(alumno, comision) as subcom 
     504        --                 FROM sga_insc_cursada 
     505        --                WHERE comision = cur_com.comision  
     506        --             ORDER BY 1 
     507         
     508        FOR cur_subcom IN SELECT pComision, pCombinaciones 
     509                            FROM f_encuestas_subcomisiones(NULL, cur_com.comision) 
    487510        LOOP 
    488511          -- Inserto el formulario para la nueva comision 
    489512          INSERT INTO gde_formularios (titulo, habilitacion, comision, subcomisiones, estado)  
    490                VALUES (_nombre_actividad, pHabilitacion, cur_com.comision, cur_subcom.subcom, 'A'); 
     513               VALUES (_nombre_actividad, pHabilitacion, cur_com.comision, cur_subcom.pCombinaciones, 'A'); 
    491514          _formulario := (SELECT currval('gde_formularios_seq')); 
    492515 
    493  
    494516          -- inserto los items de la comision y subcomisiones involucradas 
    495517          INSERT INTO gde_formulario_items (formulario, item)  
    496518               SELECT _formulario, gde_items.item 
    497519                 FROM gde_items 
    498520                WHERE gde_items.habilitacion = pHabilitacion 
    499521                  AND gde_items.comision     = cur_com.comision 
    500                   AND (gde_items.subcomision = ANY (cur_subcom.subcom) OR   -- Items de los docentes por subcomision (docente) 
    501                        (gde_items.subcomision IS NULL AND gde_items.docente IS NULL) -- Item de la comision (academica)  
     522                  AND (gde_items.subcomision = ANY (cur_subcom.pCombinaciones) OR   -- Items de los docentes por subcomision (docente) 
     523                       (gde_items.subcomision IS NULL AND gde_items.docente IS NULL)     -- Item de la comision (academica)  
    502524                      ); 
    503525 
    504           -- Alumnos que esten inscriptos a esas mismas subcomisiones 
    505           INSERT INTO gde_encuestas_pendientes (persona, formulario) 
    506                SELECT temp_alumnos_com.persona, _formulario 
    507                  FROM temp_alumnos_com 
    508                 WHERE comision = cur_com.comision 
    509                   AND temp_alumnos_com.subcomisiones = cur_subcom.subcom; 
    510                   -- AND f_encuestas_subcom_alumnos(alumno, comision) = cur_subcom.subcom; 
     526          -- Alumnos que esten inscriptos a esas mismas subcomisiones 
     527          INSERT INTO gde_encuestas_pendientes (persona, formulario) 
     528               SELECT temp_alumnos_com.persona, _formulario 
     529                 FROM temp_alumnos_com 
     530                WHERE comision = cur_com.comision 
     531                  AND temp_alumnos_com.subcomisiones = cur_subcom.pCombinaciones; 
    511532           
    512533        END LOOP;  
    513534 
     
    594615                            gde_items as i 
    595616                      WHERE fi.formulario = gde_formularios.formulario 
    596617                        AND i.item = fi.item 
    597                         AND i.estado = 'A'); 
     618                        AND i.estado = 'A' 
     619                     ); 
    598620 
    599621  -- FALTA ACTUALIZAR el array gde_formularios.subcomisiones si es que hay items de subcomisiones que ya no estan mas. 
    600622 
     
    643665   -- FALTA!!! 
    644666 
    645667 
     668 
     669  -- ******************************************************************** 
     670  -- NUEVOS ALUMNOS de comisiones existentes 
     671  -- ******************************************************************** 
     672  -- Recupero alumnos nuevos de las comisiones originales 
     673  INSERT INTO temp_alumnos_com_new (alumno, persona, comision, subcomisiones) 
     674       SELECT a.alumno, a.persona, a.comision, a.subcomisiones 
     675         FROM temp_alumnos_com as a,  
     676              temp_com_orig as c 
     677        WHERE a.comision = c.comision  
     678       EXCEPT 
     679       SELECT a.alumno, a.persona, a.comision, a.subcomisiones 
     680         FROM temp_alumnos_com_orig as a,  
     681              temp_com_orig as c 
     682        WHERE a.comision = c.comision;  
     683 
     684  -- Recorro las comisiones originales 
     685  FOR cur_com IN SELECT comision, tiene_subcomisiones FROM temp_com_orig 
     686 
     687  LOOP 
     688     IF cur_com.tiene_subcomisiones = 0 THEN 
     689        -- Sin subcomisiones 
     690        SELECT formulario INTO _formulario FROM gde_formularios WHERE comision = cur_com.comision; 
     691 
     692        INSERT INTO gde_encuestas_pendientes (persona, formulario) 
     693             SELECT persona, _formulario 
     694               FROM temp_alumnos_com_new 
     695              WHERE comision = cur_com.comision; 
     696  
     697     ELSE 
     698       -- Con subcomisiones. Debo buscar en que formulario de la comision segun la combinacion de subcomisiones lo asigno al alumno 
     699        
     700       -- Asigno el nombre de la actividad al formulario   
     701       SELECT sga_elementos.nombre INTO _nombre_actividad 
     702         FROM sga_comisiones, sga_elementos 
     703        WHERE sga_comisiones.comision = cur_com.comision 
     704          AND sga_elementos.elemento = sga_comisiones.elemento; 
     705 
     706       -- 1ro veo si debo generar nuevos formularios para la comision por la combinación de subcomisiones de los nuevos alumnos. 
     707       FOR cur_alu IN  
     708                   SELECT DISTINCT subcomisiones FROM temp_alumnos_com_new WHERE comision = cur_com.comision  
     709                   EXCEPT  
     710                   SELECT DISTINCT subcomisiones FROM gde_formularios WHERE comision = cur_com.comision 
     711       LOOP 
     712                
     713          -- Inserto el formulario para la nueva comision y combinacion de subcomisiones 
     714          INSERT INTO gde_formularios (titulo, habilitacion, comision, subcomisiones, estado)  
     715               VALUES (_nombre_actividad, pHabilitacion, cur_com.comision, cur_alu.subcomisiones, 'A'); 
     716          _formulario := (SELECT currval('gde_formularios_seq')); 
     717 
     718 
     719          -- inserto los items de la comision y subcomisiones involucradas 
     720          INSERT INTO gde_formulario_items (formulario, item)  
     721               SELECT _formulario, gde_items.item 
     722                 FROM gde_items 
     723                WHERE gde_items.habilitacion = pHabilitacion 
     724                  AND gde_items.comision     = cur_com.comision 
     725                  AND (gde_items.subcomision = ANY (cur_alu.subcomisiones) OR   -- Items de los docentes por subcomision (docente) 
     726                       (gde_items.subcomision IS NULL AND gde_items.docente IS NULL) -- Item de la comision (academica)  
     727                      ); 
     728       END LOOP; -- Nuevos formularios de comisiones originales (x subcomisiones).             
     729        
     730       -- 2do Agrego nuevos alumnos 
     731       INSERT INTO gde_encuestas_pendientes (persona, formulario) 
     732         SELECT a.persona, f.formulario 
     733           FROM temp_alumnos_com_new as a, 
     734                gde_formularios as f 
     735          WHERE a.comision = cur_com.comision 
     736            AND f.comision = cur_com.comision 
     737            AND a.subcomisiones = f.subcomisiones; 
     738 
     739     END IF; -- con/sin subcomisiones 
     740 
     741 
     742  END LOOP;   
     743  -- +++++++++++++++++ Fin Nuevos alumnos de comisiones originales ++++++++++++++++++++ 
     744 
     745 
     746 
    646747   -- Borro tablas temporales 
    647748   --DROP TABLE temp_com_orig 
    648749   DROP TABLE temp_com; 
    649750   DROP TABLE temp_com2; 
    650751   DROP TABLE temp_doc; 
    651752   DROP TABLE temp_alumnos_com; 
     753   DROP TABLE temp_alumnos_com_orig; 
     754   DROP TABLE temp_alumnos_com_new; 
    652755 
    653756 END IF;  -- Tipo 1, 2 o 3 
    654757 

^índice

Funciones/f_horario_comision_aula.sql

  • Funciones/f_horario_comision_aula.sql

     
     1-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 
     3-- Version 3.7.0 
     4-- Function: f_horario_comision_aula 
     5-- 
     6-- Retorna los dias y horarios de las bandas horarias asignadas a una comision 
     7--   
     8-- Recibe:  f_horario_comision_aula(integer) 
     9--   1. Comision 
     10--   2. Si muestra o no el tipo de Clase 
     11-- Retorna:  
     12--   1. Dias y Horarios de las asignaciones de la comision 
     13-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     14 
     15-- DROP FUNCTION f_horario_comision_aula(integer, boolean); 
     16CREATE OR REPLACE FUNCTION f_horario_comision_aula(pComision Integer, pMostrarTipoClase boolean) 
     17  RETURNS text AS  
     18$BODY$ 
     19DECLARE  
     20  _horario text;  
     21  i smallint;      
     22  cur_bh record; 
     23BEGIN 
     24   
     25  _horario := ''; 
     26  i := 0; 
     27  FOR cur_bh IN  
     28   ( 
     29   SELECT sga_asignaciones.dia_semana as dia_semana, 
     30          to_char(sga_asignaciones.hora_inicio, 'HH24:MI') as inicio, 
     31          to_char(sga_asignaciones.hora_finalizacion, 'HH24:MI') as fin, 
     32          sga_clases_tipos.nombre as desc_tipo_clase, 
     33          sga_espacios.nombre as espacio_nombre 
     34     FROM sga_comisiones_bh, 
     35          sga_clases_tipos, 
     36          sga_asignaciones 
     37            LEFT JOIN sga_espacios ON sga_espacios.espacio = sga_asignaciones.espacio 
     38      WHERE sga_comisiones_bh.comision = pComision 
     39        AND sga_clases_tipos.tipo_clase = sga_comisiones_bh.tipo_clase 
     40        AND sga_asignaciones.asignacion = sga_comisiones_bh.asignacion 
     41     ORDER BY CASE sga_asignaciones.dia_semana 
     42                WHEN 'Lunes' THEN 1 
     43                WHEN 'Martes' THEN 2 
     44                WHEN 'Miercoles' THEN 3 
     45                WHEN 'Jueves' THEN 4 
     46                WHEN 'Viernes' THEN 5 
     47                WHEN 'Sabado' THEN 6 
     48                WHEN 'Domingo' THEN 7 
     49                ELSE 0 
     50              END, 2    
     51         
     52   ) 
     53  LOOP 
     54   IF i > 0 THEN 
     55    _horario := _horario || ' / ' ; 
     56   END IF; 
     57   IF pMostrarTipoClase THEN 
     58     _horario := _horario || substring(cur_bh.dia_semana from 1 for 3) || ' ' || cur_bh.inicio || ' a ' || cur_bh.fin || ' - ' || cur_bh.desc_tipo_clase || COALESCE( ' (' || cur_bh.espacio_nombre || ')', ''); 
     59   ELSE 
     60     _horario := _horario || substring(cur_bh.dia_semana from 1 for 3) || ' ' || cur_bh.inicio || ' a ' || cur_bh.fin || COALESCE( ' (' || cur_bh.espacio_nombre || ')', ''); 
     61   END IF;   
     62   i := i + 1; 
     63  END LOOP; 
     64     
     65  -- Retorno los dias y horarios de la subcomision 
     66  RETURN _horario; 
     67     
     68END; 
     69$BODY$ 
     70LANGUAGE 'plpgsql' VOLATILE; 
     71-- ++++++++++++++++++++++++++++++ Fin Function f_horario_comision_aula ++++++++++++++++ 
     72 
     73-- REVOKE EXECUTE ON FUNCTION f_horario_comision_aula (integer, boolean) FROM public; 
     74GRANT EXECUTE ON FUNCTION f_horario_comision_aula (integer, boolean) to public; 
     75 

^índice

Funciones/f_evaluacion_alta.sql

  • Funciones/f_evaluacion_alta.sql

     
     1-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 
     3-- Version 3.7.0 
     4-- Function: f_evaluacion_alta 
     5-- 
     6-- Registra la inscripcion a una comision y subcomisiones en el caso que sea con subcomisiones. 
     7--   
     8-- Recibe:   
     9--      1.  Comision 
     10--      2.  Nombre Evaluacion 
     11--      3.  Desripcion 
     12--      4.  Tipo Evaluacion   
     13--      5.  Fecha 
     14--      6.  Hora Inicio 
     15--      7.  Hora Fin 
     16--      8.  Escala de Notas 
     17--      9.  Visible al Alumno (S / N) 
     18--      10. Promediable (S / N) 
     19--      11. Instancias (array) 
     20--      12. Evaluaciones relacionadas (array) 
     21-- 
     22-- 
     23-- Retorna:  
     24--      1. Retorna el tipo de datos type_retorno_inscripcion 
     25-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     26 
     27-- DROP FUNCTION f_evaluacion_alta (integer, varchar, varchar, integer, varchar, varchar, varchar, integer, char, char, integer[], integer[]); 
     28CREATE OR REPLACE FUNCTION f_evaluacion_alta( 
     29     pComision integer,  
     30     pNombre varchar(100),  
     31     pDescripcion varchar(255),  
     32     pEvaluacionTipo integer,  
     33     pFecha varchar(10),  
     34     pHoraInicio varchar(5),  
     35     pHoraFin varchar(5),  
     36     pEscalaNota integer,  
     37     pVisibleAlAlumno char(1), 
     38     pPromediable char(1), 
     39     pInstancias integer[], 
     40     pEvaluacionesRel integer[] 
     41     )  
     42RETURNS type_retorno_funcion AS  
     43$BODY$ 
     44 
     45DECLARE  
     46  cur_retorno   type_retorno_funcion; 
     47  _evaluacion   Integer; 
     48  _entidad      Integer; 
     49  i Integer; 
     50  _cant_instancias Integer; 
     51  _cant_relacion Integer; 
     52  vFecha Date; 
     53  vHI Time; 
     54  vHF Time; 
     55 
     56BEGIN 
     57/* Formato de los datos: 
     58   pFecha      = DD/MM/YYY 
     59   pHoraInicio = HH:MM 
     60   pHoraFin    = HH:MM 
     61*/   
     62 
     63  -- Variables de retorno 
     64  cur_retorno.resultado := 1; 
     65  cur_retorno.mensaje_indice := '800CUR_evaluacion_alta_ok'; 
     66  cur_retorno.mensaje_param  := NULL; 
     67   
     68  SELECT entidad INTO _entidad FROM sga_comisiones WHERE comision = pComision; 
     69   
     70  _cant_instancias := 0; 
     71  IF pInstancias IS NOT NULL THEN 
     72    -- _cant_instancias := array_lenght(pInstancias[]); -- Para version 9.0 en adelante 
     73    _cant_instancias := (select array_upper( pInstancias , 1) - array_lower( pInstancias ,1) + 1); 
     74  END IF; 
     75 
     76  _cant_relacion := 0; 
     77  IF pEvaluacionesRel IS NOT NULL THEN 
     78    -- _cant_relacion := array_lenght(pEvaluacionesRel[]); -- Para version 9.0 en adelante 
     79    _cant_relacion := (select array_upper( pEvaluacionesRel , 1) - array_lower( pEvaluacionesRel ,1) + 1); 
     80  END IF; 
     81   
     82-- Comienzo transacción. 
     83BEGIN 
     84 
     85 
     86  -- Alta de la evaluacion 
     87  vFecha := to_date(pFecha, 'DD/MM/YYYY'); 
     88  vHI := pHoraInicio::time; 
     89  vHF := pHoraFin::time; 
     90  INSERT INTO sga_evaluaciones (entidad, nombre, descripcion, evaluacion_tipo, visible_al_alumno, promediable, fecha, hora_inicio, hora_fin, escala_nota, estado) 
     91     VALUES (_entidad, pNombre, pDescripcion, pEvaluacionTipo, pVisibleAlAlumno, pPromediable, vFecha, vHI, vHF, pEscalaNota, 'A'); 
     92 
     93  -- Recupero el Serial de la inscripcion 
     94  _evaluacion := (SELECT currval('sga_evaluaciones_seq')); 
     95 
     96  -- Inserto las instancias de la evaluacion 
     97  FOR i IN 1 .. _cant_instancias  
     98  LOOP 
     99    INSERT INTO  sga_evaluaciones_instancias (evaluacion, instancia) VALUES (_evaluacion, pInstancias[i]); 
     100  END LOOP; 
     101 
     102  -- Inserto las evluaciones relacionadas 
     103  FOR i IN 1 .. _cant_relacion 
     104  LOOP 
     105    INSERT INTO  sga_evaluaciones_relacion (evaluacion_padre, evaluacion_hijo) VALUES (_evaluacion, pEvaluacionesRel[i]); 
     106  END LOOP; 
     107 
     108 
     109  -- Error. 
     110  EXCEPTION WHEN OTHERS THEN 
     111      IF cur_retorno.resultado = -1 then 
     112         -- El error viene desde el RAISE EXCEPTION. 
     113         cur_retorno.sqlerrm := SQLERRM; 
     114      ELSE 
     115        -- El error se produjo en los inserts... 
     116        cur_retorno.resultado      := -1; 
     117        cur_retorno.mensaje_indice := '800CUR_evaluacion_alta_error_db'; 
     118        cur_retorno.sqlerrm  := SQLERRM; 
     119        cur_retorno.sqlstate := SQLSTATE; 
     120      END IF;  
     121      RETURN cur_retorno; 
     122 
     123END; -- Fin bloque de actualizacion en la base 
     124 
     125   
     126  -- Seteo valores para retorno 
     127  cur_retorno.resultado      := 1; 
     128  cur_retorno.mensaje_indice := '800CUR_evaluacion_alta_ok'; 
     129   
     130  RETURN cur_retorno; 
     131 
     132END; 
     133$BODY$ 
     134LANGUAGE 'plpgsql' VOLATILE; 
     135-- ++++++++++++++++++++++++++++++ Fin Function f_evaluacion_alta +++++++++++++++++++++++++++++++++ 
     136 
     137-- REVOKE EXECUTE ON FUNCTION f_evaluacion_alta (integer, varchar, varchar, integer, varchar, varchar, varchar, integer, char, char, integer[], integer[]) FROM public; 
     138GRANT EXECUTE ON FUNCTION f_evaluacion_alta (integer, varchar, varchar, integer, varchar, varchar, varchar, integer, char, char, integer[], integer[]) TO public; 

^índice

Funciones/f_duplicar_tomo_libro.sql

  • Funciones/f_duplicar_tomo_libro.sql

     
     1-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 
     3-- Version 3.7.0 
     4-- Function:  f_duplicar_tomo_libro(integer) 
     5-- Crea un nuevo tomo dentro de un libro de actas 
     6-- 
     7-- Recibe:   
     8--     1. ID de tomo a cuplicar 
     9-- Retorna:  
     10--     1: ID del nuevo tomo 
     11-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     12 
     13-- DROP FUNCTION f_duplicar_tomo_libro(integer); 
     14CREATE OR REPLACE FUNCTION f_duplicar_tomo_libro(pTomo Integer) 
     15  RETURNS integer AS 
     16$BODY$ 
     17 
     18 -- Variables locales 
     19 DECLARE new_tomo_libro integer; 
     20 DECLARE _nro_tomo integer; 
     21 DECLARE _libro integer; 
     22 
     23BEGIN 
     24         
     25  INSERT INTO sga_libros_tomos (nro_tomo, libro, cant_max_folios) 
     26    SELECT (SELECT max(b.nro_tomo) + 1 
     27              FROM sga_libros_tomos as a, 
     28                   sga_libros_tomos as b 
     29             WHERE a.libro_tomo = pTomo 
     30               AND b.libro = a.libro 
     31           ), 
     32           libro,  
     33           cant_max_folios  
     34      FROM sga_libros_tomos 
     35     WHERE libro_tomo = pTomo; 
     36     
     37  -- Obtengo el ID del tomo 
     38  new_tomo_libro := (SELECT currval('sga_libros_tomos_seq')); 
     39 
     40  RETURN new_tomo_libro; 
     41 
     42END; 
     43$BODY$ 
     44LANGUAGE 'plpgsql' VOLATILE; 
     45-- ++++++++++++++++++++++ Fin Function f_duplicar_tomo_libro ++++++++++++++++ 
     46 
     47-- REVOKE EXECUTE ON FUNCTION f_duplicar_tomo_libro (Integer) FROM public; 
     48GRANT EXECUTE ON FUNCTION f_duplicar_tomo_libro (Integer) TO public; 
     49 

^índice

Funciones/f_encuestas_subcom_alumnos.sql

  • Funciones/f_encuestas_subcom_alumnos.sql

     
    33-- Version 3.0.0 
    44-- Function: f_encuestas_subcom_alumnos 
    55-- 
    6 -- Retorna las subcomisiones en las que esta inscripto un alumno separado por - 
     6-- Retorna las subcomisiones en las que esta inscripto un alumno 
     7-- Subcomisiones ordenadas por tipo de clase en forma ascendente. 
    78--   
    89-- Recibe:   
    910--    1. Alumno 
     
    3031  -- Recupero el nombre de los docentes 
    3132  FOR cur1 IN SELECT i.subcomision 
    3233                FROM sga_insc_cursada as c, 
    33                      sga_insc_subcomision as i 
     34                     sga_insc_subcomision as i, 
     35                     sga_subcomisiones as subco 
    3436               WHERE c.comision = pComision  
    3537                 AND c.alumno = pAlumno 
    3638                 AND i.inscripcion = c.inscripcion 
    37             ORDER BY i.subcomision 
     39                 AND subco.subcomision = i.subcomision 
     40            ORDER BY subco.tipo_clase  
    3841  LOOP 
    3942      cnt := cnt + 1; 
    4043      _subcomisiones[cnt] := cur1.subcomision; 

^índice

Funciones/f_get_max_nro_tomo.sql

  • Funciones/f_get_max_nro_tomo.sql

     
     1-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 
     3-- Version 3.7.0 
     4-- Function: f_get_max_nro_tomo 
     5-- 
     6-- Retorna el ultimo nro de tomo de un libro 
     7--   
     8-- Recibe:  f_get_max_nro_tomo(integer) 
     9--              1. ID del libro de acta 
     10-- Retorna:  
     11--      1. Máximo número de tomo generado para ese libro. 
     12-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     13 
     14-- DROP FUNCTION f_get_max_nro_tomo(integer); 
     15CREATE OR REPLACE FUNCTION f_get_max_nro_tomo(pLibro integer)  
     16 RETURNS INTEGER AS  
     17$BODY$ 
     18BEGIN 
     19  RETURN (SELECT MAX(nro_tomo) FROM sga_libros_tomos WHERE libro = pLibro); 
     20END; 
     21$BODY$ 
     22LANGUAGE 'plpgsql' VOLATILE; 
     23-- ++++++++++++++++++++++++ Fin Function f_get_max_nro_tomo ++++++++++++++++++ 
     24 
     25-- REVOKE EXECUTE ON FUNCTION f_get_max_nro_tomo (integer) FROM public; 
     26GRANT EXECUTE ON FUNCTION f_get_max_nro_tomo (integer) to public; 

^índice

Funciones/f_encuestas_sync_alumno.sql

  • Funciones/f_encuestas_sync_alumno.sql

     
    11-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    22-- SIU-GUARANI 3 
    3 -- Version 3.0.0 
     3-- Version 3.7.0 
    44-- Function: f_encuestas_sync_alumno 
    55-- 
    6 --  
    7 --   
    86-- Recibe:   
    97--    1. Alumno 
    108--    2. Comision 
    119-- Retorna:  
    12 --    1. Integer:  -1 = Error / 0 - No hay encuesta / 1 - Encuesta OK. 
     10--    1. Integer:  -1 = Error / 0 - No hay encuesta / 1 - Encuesta OK. / 2 - Se borro la encuesta.. / 3- El alumno ya tiene el formulario de la encuesta para contestarla. 
    1311-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    1412 
    1513-- DROP FUNCTION f_encuestas_sync_alumno(integer, integer, varchar, char, char); 
    1614CREATE OR REPLACE FUNCTION f_encuestas_sync_alumno( 
    17  pAlumno Integer,  
    18  pComision Integer,  
    19  pAccion varchar(2), 
    20  pEstadoAnterior char(1),  
    21  pEstadoNuevo char(1))  
     15  pAlumno Integer,  
     16  pComision Integer,  
     17  pAccion varchar(2), 
     18  pEstadoAnterior char(1),  
     19  pEstadoNuevo char(1))  
    2220 RETURNS Integer AS  
    2321$BODY$ 
    2422DECLARE  
     
    3230  cur_hab record; 
    3331  _nombre_actividad varchar(255); 
    3432  _cnt integer; 
     33  _retorno smallint; 
    3534   
    36 -- pAccion: B = Borrar Inscripcion / R = Rechazar Inscripcion / CE = Cambiar estado de la inscripcion / CS = Cambio de subcomision 
     35-- pAccion: A = Alta inscripcion / B = Borrar Inscripcion / R = Rechazar Inscripcion / CE = Cambiar estado de la inscripcion / CS = Cambio de subcomision 
    3736BEGIN 
    3837    
    39    _subcomisiones := NULL; 
    40    _tiene_subcomisiones := 0; 
    41    _cnt_items := 0; 
    42     
     38 _subcomisiones := NULL; 
     39 _tiene_subcomisiones := 0; 
     40 _cnt_items := 0; 
     41 _retorno := 0; -- No se hizo nada. 
    4342 
    44    -- verifico si hay encuestas para la comision 
    45    SELECT COUNT(*) INTO _cnt_items FROM gde_formularios WHERE comision = pComision;  
    46    IF _cnt_items = 0 THEN 
    47       -- No hay encuestas para esta comision 
    48       RETURN 0; 
    49    END IF; 
     43 -- verifico si hay encuestas para la comision. Encuestas vigentes. 
     44 SELECT COUNT(*) INTO _cnt_items  
     45   FROM gde_formularios as f,  
     46        gde_habilitaciones as h  
     47  WHERE f.comision = pComision 
     48    AND f.habilitacion = h.habilitacion 
     49    AND h.fecha_hasta >= CURRENT_DATE; 
    5050 
    51    SELECT persona INTO _persona FROM sga_alumnos WHERE alumno = pAlumno; 
    52    IF NOT FOUND THEN 
    53       RETURN 0; 
    54    END IF; 
     51 IF _cnt_items = 0 THEN 
     52   -- No hay encuestas para esta comision 
     53   RETURN _retorno; 
     54 END IF; 
    5555 
     56 SELECT persona INTO _persona FROM sga_alumnos WHERE alumno = pAlumno; 
     57 IF NOT FOUND THEN 
     58    RETURN 0; 
     59 END IF; 
    5660 
    57 BEGIN    
    58    -- Si cambia de estado la inscripcion a cursada, saco al alumno de las encuestas que tuviere en esa comision 
    59    IF ((pAccion = 'B' OR pAccion = 'R' OR pAccion = 'CS') AND pEstadoAnterior = 'A') OR 
    60       (pAccion = 'CE' AND pEstadoAnterior = 'A' AND pEstadoNuevo = 'P') THEN 
     61BEGIN 
     62  -- Si cambia de estado la inscripcion a cursada, saco al alumno de las encuestas que tuviere en esa comision 
     63  IF ((pAccion = 'B' OR pAccion = 'R' OR pAccion = 'CS') AND pEstadoAnterior = 'A') OR 
     64     (pAccion = 'CE' AND pEstadoAnterior = 'A' AND pEstadoNuevo = 'P') THEN 
     65      
     66     DELETE FROM gde_encuestas_pendientes 
     67      WHERE persona = _persona 
     68        AND formulario IN (SELECT formulario FROM gde_formularios WHERE comision = pComision) 
     69        AND fecha_respuesta IS NULL; 
     70 
     71    IF pAccion = 'B' OR pAccion = 'R' OR pAccion = 'CE' THEN 
     72       _retorno := 2; 
     73    END IF; 
     74  END IF;  -- Fin cambio de Aceptado a Pendiente 
     75  
     76  -- Cambio de Subcomision / Cambio de Estado de la inscripcion / Alta inscripcion en estado Aceptado.    
     77  -- Las encuestas solo se generan a inscripciones con estado Aceptado. 
     78  IF (pAccion = 'CS' AND pEstadoAnterior = 'A') OR  
     79     (pAccion = 'CE' AND pEstadoAnterior = 'P' AND pEstadoNuevo = 'A') OR 
     80     (pAccion = 'A' AND pEstadoNuevo = 'A') THEN 
    6181       
    62       DELETE FROM gde_encuestas_pendientes 
    63        WHERE persona = _persona 
    64          AND formulario IN (SELECT formulario FROM gde_formularios WHERE comision = pComision) 
    65          AND fecha_respuesta IS NULL; 
    66           
    67      IF pAccion = 'B' OR pAccion = 'R' OR pAccion = 'CE' THEN 
    68         RETURN 1; 
    69      END IF; 
    70    END IF;  -- Fin cambio de Aceptado a Pendiente 
    71   
    72    -- Cambio de Subcomision o Cambio de Estado de la inscripcion.    
    73    -- Las encuestas solo se generan a inscripciones con estado Aceptado. 
    74    IF (pAccion = 'CS' AND pEstadoAnterior = 'A') OR (pAccion = 'CE' AND pEstadoAnterior = 'P' AND pEstadoNuevo = 'A') THEN 
    75         
    76            SELECT count(*) INTO _tiene_subcomisiones  FROM sga_subcomisiones WHERE comision = pComision; 
    77              
    78            IF _tiene_subcomisiones = 0 THEN 
    79                
    80               INSERT INTO gde_encuestas_pendientes (formulario, persona) 
    81                  SELECT formulario, _persona  
    82                    FROM gde_formularios WHERE comision = pComision 
    83                    AND NOT EXISTS (SELECT 1 FROM gde_encuestas_pendientes as e where e.formulario = gde_formularios.formulario 
    84                                            AND e.persona  = _persona ) ; 
    85            END IF; 
    86             
    87            -- Comision con subcomisiones 
    88            IF _tiene_subcomisiones > 0 THEN 
    89               _subcomisiones := f_encuestas_subcom_alumnos(pAlumno, pComision); 
    90                
    91               -- Verifico si existe un formulario con la combinacion de subcomisiones en las que esta el alumno, sino lo creo 
    92               -- Aca considera que la encuesta es académica y de actuacion docente (por las subcomisiones) 
    93               SELECT formulario INTO _formulario 
    94                 FROM gde_formularios  
    95                WHERE comision = pComision 
    96                  AND subcomisiones = _subcomisiones; 
    97                   
    98               IF FOUND THEN      
    99                 -- Agrego al alumno para que responda la encuesta 
    100                 SELECT count(*) INTO _cnt FROM gde_encuestas_pendientes  WHERE formulario = _formulario  AND persona  = _persona; 
    101                 IF _cnt = 0 THEN 
    102                    INSERT INTO gde_encuestas_pendientes (formulario, persona) VALUES (_formulario, _persona); 
    103                 END IF; 
    104                  
    105               ELSE 
    106                 -- Asigno al formulario el nombre de la actividad.   
    107             SELECT sga_elementos.nombre  
    108               INTO _nombre_actividad 
    109               FROM sga_comisiones, sga_elementos 
    110              WHERE sga_comisiones.comision = pComision 
    111                AND sga_elementos.elemento = sga_comisiones.elemento; 
     82    SELECT count(*) INTO _tiene_subcomisiones FROM sga_subcomisiones WHERE comision = pComision; 
     83      
     84    IF _tiene_subcomisiones = 0 THEN 
     85       -- Encuestas asociadas a comisiones 
     86       INSERT INTO gde_encuestas_pendientes (formulario, persona) 
     87          SELECT formulario, _persona  
     88            FROM gde_formularios as f,  
     89                 gde_habilitaciones as h  
     90           WHERE f.comision = pComision 
     91             AND f.habilitacion = h.habilitacion 
     92             AND h.fecha_hasta >= CURRENT_DATE 
     93             AND NOT EXISTS (SELECT 1 FROM gde_encuestas_pendientes as e  
     94                               WHERE e.formulario = f.formulario 
     95                                 AND e.persona  = _persona ); 
     96    END IF; 
    11297 
    113                 -- Debo generar un formulario, sus items y registrar la encuesta pendiente para este alumno. 
    114                 -- Recorro las diferentes habilitaciones para la comision. 
    115             FOR cur_hab IN SELECT DISTINCT habilitacion 
    116                              FROM gde_items 
    117                             WHERE comision = pComision 
    118             LOOP 
    119               -- Inserto el formulario para la comision y subcomisiones del alumno 
    120               INSERT INTO gde_formularios (titulo, habilitacion, comision, subcomisiones, estado)  
    121                    VALUES (_nombre_actividad, cur_hab.habilitacion, pComision, _subcomisiones, 'A'); 
    122               _formulario := (SELECT currval('gde_formularios_seq')); 
    123      
    124      
    125               -- inserto los items de la comision y subcomisiones involucradas 
    126               INSERT INTO gde_formulario_items (formulario, item)  
    127                    SELECT _formulario, gde_items.item 
    128                      FROM gde_items 
    129                     WHERE gde_items.habilitacion = cur_hab.Habilitacion 
    130                       AND gde_items.comision     = pComision 
    131                       AND (gde_items.subcomision = ANY (_subcomisiones) OR   -- Items de los docentes por subcomision (docente) 
    132                            (gde_items.subcomision IS NULL AND gde_items.docente IS NULL) -- Item de la comision (academica)  
    133                           ); 
     98    -- Comision con subcomisiones 
     99    IF _tiene_subcomisiones > 0 THEN 
     100       -- Combinacion de subcomisiones en las que esta inscripto el alumno 
     101       _subcomisiones := f_encuestas_subcom_alumnos(pAlumno, pComision); 
    134102 
    135                   INSERT INTO gde_encuestas_pendientes (formulario, persona) VALUES (_formulario, _persona); 
    136      
    137                 END LOOP; -- Habilitaciones 
    138               END IF; 
    139            END IF; 
    140        RETURN 1; 
    141    END IF; -- Fin cambio de Pendiente a Aceptado 
     103       -- Verifico si existe un formulario con la combinacion de subcomisiones en las que esta el alumno, sino lo creo 
     104       -- Aca considera que la encuesta es académica y de actuacion docente (por las subcomisiones) 
     105       -- Considera que solo hay una encuesta por comision... 
     106       SELECT f.formulario INTO _formulario 
     107         FROM gde_formularios as f,  
     108              gde_habilitaciones as h 
     109        WHERE f.comision = pComision 
     110          AND f.subcomisiones = _subcomisiones 
     111          AND f.habilitacion = h.habilitacion 
     112          AND h.fecha_hasta >= CURRENT_DATE 
     113          LIMIT 1; 
    142114 
    143    EXCEPTION  
    144      WHEN unique_violation THEN 
    145         RETURN 1; 
    146     WHEN OTHERS THEN 
    147         RETURN -1; 
     115      IF FOUND THEN 
     116        -- Agrego al alumno para que responda la encuesta 
     117        SELECT count(*) INTO _cnt FROM gde_encuestas_pendientes WHERE formulario = _formulario AND persona = _persona; 
     118        IF _cnt = 0 THEN 
     119           INSERT INTO gde_encuestas_pendientes (formulario, persona) VALUES (_formulario, _persona); 
     120           _retorno := 1; 
     121        END IF; 
     122         
     123      ELSE 
     124        -- Asigno al formulario el nombre de la actividad.   
     125        SELECT sga_elementos.nombre  
     126          INTO _nombre_actividad 
     127          FROM sga_comisiones, sga_elementos 
     128         WHERE sga_comisiones.comision = pComision 
     129           AND sga_elementos.elemento = sga_comisiones.elemento; 
     130 
     131        -- Debo generar un formulario, sus items y registrar la encuesta pendiente para este alumno. 
     132        -- Recorro las diferentes habilitaciones para la comision. 
     133        FOR cur_hab IN SELECT DISTINCT i.habilitacion 
     134                         FROM gde_items as i,  
     135                              gde_habilitaciones as h 
     136                         WHERE i.comision = pComision 
     137                           AND h.habilitacion = i.habilitacion 
     138                           AND h.fecha_hasta >= CURRENT_DATE 
     139        LOOP 
     140          -- Inserto el formulario para la comision y subcomisiones del alumno 
     141          INSERT INTO gde_formularios (titulo, habilitacion, comision, subcomisiones, estado)  
     142               VALUES (_nombre_actividad, cur_hab.habilitacion, pComision, _subcomisiones, 'A'); 
     143          _formulario := (SELECT currval('gde_formularios_seq')); 
     144 
     145          -- inserto los items de la comision y subcomisiones involucradas 
     146          INSERT INTO gde_formulario_items (formulario, item)  
     147               SELECT _formulario, gde_items.item 
     148                 FROM gde_items 
     149                WHERE gde_items.habilitacion = cur_hab.Habilitacion 
     150                  AND gde_items.comision     = pComision 
     151                  AND (gde_items.subcomision = ANY (_subcomisiones) OR   -- Items de los docentes por subcomision (docente) 
     152                       (gde_items.subcomision IS NULL AND gde_items.docente IS NULL) -- Item de la comision (academica)  
     153                      ); 
     154 
     155          INSERT INTO gde_encuestas_pendientes (formulario, persona) VALUES (_formulario, _persona); 
     156          _retorno := 1; 
     157 
     158        END LOOP; -- Habilitaciones 
     159      END IF; -- Comision con subcomisiones 
     160    END IF; 
     161  END IF; -- Fin cambio de Pendiente a Aceptado 
     162 
     163  EXCEPTION  
     164    WHEN unique_violation THEN 
     165       RETURN 3; -- Ya existe el alumno asociado a la encuesta (formulario) 
     166   WHEN OTHERS THEN 
     167       RETURN -1; 
    148168END; 
    149169 
    150170-- OK 
    151 RETURN 1; 
     171RETURN _retorno; 
    152172 
    153173END; 
    154174$BODY$ 
     
    157177 
    158178-- REVOKE EXECUTE ON FUNCTION f_encuestas_sync_alumno (integer, integer, varchar, char, char) FROM public; 
    159179GRANT EXECUTE ON FUNCTION f_encuestas_sync_alumno (integer, integer, varchar, char, char) to public; 
    160  

^índice

Funciones/f_certificado_actividades.sql

  • Funciones/f_certificado_actividades.sql

     
     1-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 
     3-- Version 3.7.0 
     4-- Function: f_certificado_actividades 
     5-- 
     6-- Recupera las actividades realizadas por alumno. 
     7-- Actividades segun resultado y origen del mismo. 
     8-- Actividades en la propuesta actual (cualquier plan de estudios) 
     9-- 
     10-- Recibe:   
     11--    1. ID de Alumnos 
     12--    2. Resultado de Actividades: T - Todas / A - Aprobadas / D - Desaprobadas 
     13--    3. Origen de Actividades. 
     14--       Valores: T - Todas / E - Examenes Finales / P - Promociones / B - Equivalencias Totales / A - Aprobaciones por Resolucion 
     15--    4. Actividades del Plan Actual o de cualquier plan de la propuesta (planes anteriores) 
     16--       Valores: A - Actividades de la version actual del alumno  
     17--                T - Cualquier plan/version de la propuesta del alumno.  
     18-- 
     19-- Retorna: Lista de Actividades y datos de la misma 
     20-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     21 
     22 
     23-- DROP FUNCTION public.f_certificado_actividades(integer, char, char, char); 
     24CREATE OR REPLACE FUNCTION public.f_certificado_actividades( 
     25  pAlumno integer,  
     26  pResultado char(1), 
     27  pOrigen char(1), 
     28  pPlanVersionActual char(1) 
     29 ) 
     30  RETURNS TABLE(actividad_codigo character varying, actividad_nombre character varying, fecha character varying, nota character varying, nota_descripcion character varying, tipo character varying, actividad_documento character varying, folio_fisico integer, creditos numeric, plan_codigo character varying, plan_nombre character varying, origen character) AS 
     31$BODY$ 
     32DECLARE  
     33  _PropuestaAlumno Integer; 
     34  _PlanVersionAlumno Integer; 
     35  _PlanAlumno Integer; 
     36  _Persona Integer; 
     37 
     38BEGIN 
     39 
     40CREATE TABLE _temp_prop_alumno (alumno integer, propuesta integer, plan integer, orden integer); 
     41CREATE TABLE _temp_relacion (relacion integer); 
     42 
     43 -- +++++++++++++++++++++++++++++++++++++++++++++++++ 
     44 -- Actividades de propuestas vinculadas a la propuesta del alumno 
     45 -- +++++++++++++++++++++++++++++++++++++++++++++++++ 
     46 SELECT a.persona, a.propuesta, a.plan_version, v.plan   
     47   INTO _Persona, _PropuestaAlumno, _PlanVersionAlumno, _PlanAlumno 
     48   FROM sga_alumnos as a,  
     49        sga_planes_versiones as v 
     50  WHERE a.plan_version = v.plan_version 
     51    AND a.alumno = pAlumno; 
     52 
     53 
     54 -- Propuesta del alumno  y plan actual 
     55 INSERT INTO _temp_prop_alumno (alumno, propuesta, plan, orden) VALUES (pAlumno, _PropuestaAlumno, _PlanAlumno, 2); 
     56  
     57  
     58 -- Propuestas Vinculadas 
     59 INSERT INTO _temp_relacion (relacion) SELECT * FROM get_relacion_propuesta(pAlumno); 
     60  
     61 -- Recupera todos los planes de estudio de propuestas vinculadas de cada grupo 
     62 -- Saca el distinct porque puede estar el mismo plan de estudios en diferentes grupos 
     63 INSERT INTO _temp_prop_alumno (alumno, propuesta, plan, orden) 
     64       SELECT DISTINCT sga_alumnos.alumno, sga_planes.propuesta, sga_planes.plan, 1 
     65         FROM _temp_relacion as t, 
     66              sga_propuestas_relacion_grupo, 
     67              sga_propuestas_relacion_plan, 
     68              sga_planes,  
     69              sga_alumnos   
     70        WHERE sga_propuestas_relacion_grupo.relacion = t.relacion 
     71          AND sga_propuestas_relacion_grupo.incluir_en_analitico = 'S' 
     72          AND sga_propuestas_relacion_plan.relacion_grupo = sga_propuestas_relacion_grupo.relacion_grupo 
     73          AND sga_planes.plan = sga_propuestas_relacion_plan.plan 
     74          AND sga_alumnos.persona = _Persona 
     75          AND sga_alumnos.propuesta = sga_planes.propuesta; 
     76     
     77  
     78 
     79 
     80 -- +++++++++++++++++++++++++++++++++++++++++++++++++ 
     81 -- Actividades del Plan Actual del Alumno.  
     82 -- Actividades realizadas en la misma propuesta o en otra propuesta (actividades comunes) 
     83 --  Actividades de la version actual del alumno en cada plan de estudios de cada propuesta 
     84 -- +++++++++++++++++++++++++++++++++++++++++++++++++ 
     85 FOR actividad_codigo, actividad_nombre, fecha, nota, nota_descripcion, origen, tipo, actividad_documento, folio_fisico, creditos, plan_codigo, plan_nombre IN 
     86     SELECT  
     87        vw_hist_academica.actividad_codigo as actividad_codigo, 
     88        vw_hist_academica.actividad_nombre as actividad_nombre, 
     89        to_char(vw_hist_academica.fecha, 'DD/MM/YYYY') as fecha, 
     90        vw_hist_academica.nota as nota, 
     91        vw_hist_academica.nota_descripcion as nota_descripcion, 
     92        vw_hist_academica.origen as origen, 
     93        CASE  
     94          WHEN vw_hist_academica.tipo='Aprob. por Resolución' THEN 'Resolución' 
     95          ELSE vw_hist_academica.tipo 
     96        END as tipo, 
     97        CASE vw_hist_academica.origen 
     98          WHEN 'P' THEN vw_hist_academica.nro_acta 
     99          WHEN 'E' THEN vw_hist_academica.nro_acta 
     100          WHEN 'B' THEN vw_hist_academica.nro_resolucion_descripcion 
     101          WHEN 'A' THEN vw_hist_academica.nro_resolucion_descripcion 
     102        END as actividad_documento, 
     103        sga_actas_folios.folio_fisico as folio_fisico, 
     104        vw_hist_academica.creditos as creditos, 
     105        sga_planes.codigo as plan_codigo, 
     106        sga_planes.nombre as plan_nombre 
     107     FROM  
     108         _temp_prop_alumno as t, 
     109         vw_hist_academica 
     110           LEFT JOIN sga_actas_folios ON sga_actas_folios.id_acta = vw_hist_academica.id_acta 
     111                                     AND sga_actas_folios.folio  = vw_hist_academica.folio, 
     112         sga_alumnos, 
     113         sga_planes_versiones as plan_version_alumno, 
     114         sga_planes_versiones, 
     115         sga_planes 
     116    WHERE vw_hist_academica.alumno = t.alumno 
     117      AND sga_alumnos.alumno = t.alumno 
     118      AND plan_version_alumno.plan_version = sga_alumnos.plan_version 
     119      AND plan_version_alumno.plan = t.plan   -- mismo plan de la vinculación 
     120      AND sga_planes_versiones.plan_version = vw_hist_academica.plan_version 
     121      AND sga_planes.plan = sga_planes_versiones.plan 
     122      AND (pResultado = 'T' OR vw_hist_academica.resultado = pResultado) 
     123      AND (pOrigen = 'T' OR vw_hist_academica.origen = pOrigen) 
     124 
     125      AND (pPlanVersionActual = 'T' OR  
     126           (pPlanVersionActual = 'A' AND -- Solo actividades de la version actual del plan del alumno 
     127            (vw_hist_academica.elemento IN (SELECT elemento FROM vw_elementos_plan as ep  WHERE ep.plan_version = sga_alumnos.plan_version)) 
     128           ) 
     129          )  
     130    ORDER BY t.orden, vw_hist_academica.fecha 
     131LOOP 
     132 
     133  RETURN NEXT; 
     134   
     135END LOOP;               
     136               
     137 
     138 -- Borro la tabla temporal 
     139 DROP TABLE _temp_prop_alumno; 
     140 DROP TABLE _temp_relacion; 
     141               
     142END; 
     143$BODY$ 
     144LANGUAGE 'plpgsql' VOLATILE; 
     145   
     146-- ++++++++++++++++++++++++++ Fin Function f_certificado_actividades +++++++++++++++++++++++++++++++++++++++ 
     147   
     148-- REVOKE EXECUTE ON FUNCTION public.f_certificado_actividades (integer, char, char, char) FROM public; 
     149GRANT EXECUTE ON FUNCTION public.f_certificado_actividades(integer, char, char, char) TO public; 
     150 
     151 
     152 

^índice

Funciones/f_pasar_inscripciones_a_historico.sql

  • Funciones/f_pasar_inscripciones_a_historico.sql

     
    215215      AND inst.inscripcion = i.inscripcion; 
    216216 
    217217  -- Log de inscripcion a subcomisiones de Bajas y Rechazos de Inscripciones 
    218   INSERT INTO his_insc_cursada_instancias_log (inscripcion, subcomision) 
     218  INSERT INTO his_insc_subcomision_log (inscripcion, subcomision) 
    219219   SELECT s.inscripcion, s.subcomision 
    220220    FROM temp_com as c, 
    221221         sga_insc_cursada_log as i,  
     
    318318END 
    319319$BODY$ 
    320320LANGUAGE 'plpgsql' VOLATILE; 
     321 
     322-- ++++++++++++++++++++++++++ Fin Function f_pasar_inscripciones_a_historico +++++++++++++++++++++++ 
    321323   
    322324-- REVOKE EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico FROM public; 
    323325GRANT EXECUTE ON FUNCTION f_pasar_inscripciones_a_historico(integer, integer, integer) TO public; 
    324326 
    325 -- ++++++++++++++++++++++++++ Fin Function f_pasar_inscripciones_a_historico +++++++++++++++++++++++ 

^índice

Funciones/get_nombre_grupos_relacion.sql

  • Funciones/get_nombre_grupos_relacion.sql

     
     1-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 
     3-- Version 3.0.0 
     4-- Function: get_nombre_grupos_relacion 
     5-- 
     6-- Retorna el nombre de los grupos asociados a una relación entre propuestas 
     7--   
     8-- Recibe:  get_nombre_grupos_relacion(integer) 
     9--              1. ID de la relación 
     10-- Retorna:  
     11--      1. Nombre de los grupos de la relación 
     12-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     13 
     14-- DROP FUNCTION get_nombre_grupos_relacion(integer); 
     15CREATE OR REPLACE FUNCTION get_nombre_grupos_relacion(_relacion integer) 
     16 RETURNS text AS 
     17$BODY$ 
     18DECLARE 
     19        cant SMALLINT; 
     20        retorno TEXT; 
     21        cur RECORD; 
     22BEGIN 
     23        cant := 0; 
     24        retorno := NULL; 
     25 
     26        -- Recupero el nombre de los grupos. 
     27        FOR cur IN      SELECT  get_nombre_planes_relacion_grupo(sga_propuestas_relacion_grupo.relacion_grupo) as nombre 
     28                                FROM    sga_propuestas_relacion_grupo 
     29                                WHERE   sga_propuestas_relacion_grupo.relacion = _relacion 
     30        LOOP 
     31                IF cant = 0 THEN                 
     32                        retorno := cur.nombre; 
     33                ELSE 
     34                        retorno := retorno || ' o ' || cur.nombre; 
     35                END IF;    
     36                cant := cant + 1; 
     37        END LOOP; 
     38 
     39        RETURN retorno; 
     40END; 
     41$BODY$ 
     42LANGUAGE 'plpgsql' VOLATILE; 
     43-- ++++++++++++++++++++++++++++++ Fin Function get_nombre_grupos_relacion(integer) ++++++++++++++++ 
     44 
     45-- REVOKE EXECUTE ON FUNCTION get_nombre_grupos_relacion(integer) FROM public; 
     46GRANT EXECUTE ON FUNCTION get_nombre_grupos_relacion(integer) to public; 

^índice

Funciones/get_relacion_propuesta.sql

  • Funciones/get_relacion_propuesta.sql

     
     1-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 
     3-- Version 3.0.0 
     4-- Function: get_relacion_propuesta 
     5-- 
     6--   
     7-- Recibe:  get_relacion_propuesta(integer) 
     8--              1. Alumno 
     9-- Retorna:  
     10--      1. ID de la relacion entre la propuesta del alumno y las propuestas relacionadas 
     11-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     12 
     13-- DROP FUNCTION get_relacion_propuesta(integer); 
     14CREATE OR REPLACE FUNCTION get_relacion_propuesta(pAlumno Integer)  
     15RETURNS Integer AS  
     16$BODY$ 
     17DECLARE  
     18  _relacion Integer; 
     19  _anio Integer; 
     20         
     21BEGIN 
     22 _relacion := NULL; 
     23 _anio := NULL; 
     24 
     25 -- Recupero el año de ingreso en la propuesta 
     26 SELECT sga_propuestas_aspira.anio_academico 
     27   INTO _anio 
     28   FROM sga_alumnos, 
     29        sga_propuestas_aspira, 
     30        sga_situacion_aspirante 
     31  WHERE sga_alumnos.persona = sga_propuestas_aspira.persona 
     32    AND sga_alumnos.propuesta = sga_propuestas_aspira.propuesta 
     33    AND sga_situacion_aspirante.situacion_asp = sga_propuestas_aspira.situacion_asp 
     34    AND sga_alumnos.alumno = pAlumno 
     35    AND sga_situacion_aspirante.resultado_asp IN ('A','P'); 
     36 IF _anio IS NULL THEN 
     37   RETURN _relacion; 
     38 END IF;  
     39  
     40 
     41 -- Tomo la relacion entre propuestas que corresponde a la propuesta/plan del alumno y año académico de ingreso.  
     42 SELECT sga_propuestas_relacion.relacion  
     43   INTO _relacion 
     44   FROM sga_alumnos, 
     45        sga_planes_versiones, 
     46        sga_propuestas_relacion 
     47  WHERE sga_alumnos.alumno = pAlumno 
     48    AND sga_planes_versiones.plan_version = sga_alumnos.plan_version 
     49    AND sga_propuestas_relacion.propuesta = sga_alumnos.propuesta 
     50    AND (sga_propuestas_relacion.plan IS NULL OR sga_propuestas_relacion.plan = sga_planes_versiones.plan) 
     51    AND (sga_propuestas_relacion.anio_academico IS NULL OR sga_propuestas_relacion.anio_academico <= _anio) 
     52   ORDER BY sga_propuestas_relacion.anio_academico DESC, 
     53                        sga_propuestas_relacion.plan NULLS LAST 
     54 LIMIT 1;        
     55   
     56 RETURN _relacion; 
     57 
     58END; 
     59$BODY$ 
     60LANGUAGE 'plpgsql' VOLATILE; 
     61-- ++++++++++++++++++++++++++++++ Fin Function get_relacion_propuesta ++++++++++++++++++++++++++++++ 
     62 
     63-- REVOKE EXECUTE ON FUNCTION get_relacion_propuesta (integer) FROM public; 
     64GRANT EXECUTE ON FUNCTION get_relacion_propuesta (integer) to public; 
     65 

^índice

Funciones/get_ultimo_dato_censal.sql

  • Funciones/get_ultimo_dato_censal.sql

     
    1212-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    1313 
    1414-- DROP FUNCTION get_ultimo_dato_censal(integer); 
    15 CREATE OR REPLACE FUNCTION get_ultimo_dato_censal(idpersona integer)  
    16         RETURNS INTEGER AS 
    17          
    18  
     15CREATE OR REPLACE FUNCTION get_ultimo_dato_censal(pPersona integer)  
     16 RETURNS INTEGER AS 
    1917$BODY$ 
    20         DECLARE 
    21         --dc integer; 
    22          
    23         BEGIN 
    24                 RETURN dato_censal 
    25                 FROM mdp_datos_censales 
    26                 WHERE persona = $1 
    27                 ORDER BY fecha_relevamiento DESC 
    28                 LIMIT 1; 
     18DECLARE iDatoCensal Integer; 
     19BEGIN 
     20   iDatoCensal := NULL; 
     21    
     22   SELECT dato_censal INTO iDatoCensal 
     23        FROM mdp_datos_censales 
     24        WHERE persona = pPersona; 
    2925 
    30                 -- Retorno el id del Dato Censal de la persona 
     26  -- Retorno el id del Dato Censal de la persona 
     27  Return iDatoCensal; 
    3128         
    32         END; 
     29END; 
    3330$BODY$ 
    3431  LANGUAGE 'plpgsql' IMMUTABLE; 
    3532-- ++++++++++++++++++++++++++++++ Fin Function get_ultimo_dato_censal(integer) ++++++++++++++++ 
    3633 
    3734-- REVOKE EXECUTE ON FUNCTION get_ultimo_dato_censal (integer) FROM public; 
    3835GRANT EXECUTE ON FUNCTION get_ultimo_dato_censal (integer) to public; 
    39  
    40 /* 
    41  
    42 select * from get_ultimo_dato_censal(34); 
    43 select get_ultimo_dato_censal(34); 
    44 */ 

^índice

Funciones/f_cambios_relacion_propuestas.sql

  • Funciones/f_cambios_relacion_propuestas.sql

     
     1-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 
     3-- Version 3.7.0 
     4-- Function:  f_cambios_relacion_propuestas(integer) 
     5-- Registra el alta o cambio de relaciones entre propuestas. 
     6-- 
     7-- Recibe:   
     8--     1. ID Relacion 
     9-- 
     10-- Retorna:  
     11--      
     12-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     13 
     14-- DROP FUNCTION f_cambios_relacion_propuestas(integer); 
     15CREATE OR REPLACE FUNCTION f_cambios_relacion_propuestas(pRelacion Integer) 
     16  RETURNS VOID AS 
     17$BODY$ 
     18 
     19 -- Variables locales 
     20 DECLARE _id_cambio integer; 
     21 
     22BEGIN 
     23         
     24  -- Cabecera del historico de cambios en relaciones entre propuestas    
     25  INSERT INTO his_propuestas_relacion_cambios DEFAULT VALUES; 
     26 
     27  _id_cambio := (SELECT currval('his_propuestas_relacion_cambios_seq')); 
     28 
     29  INSERT INTO his_propuestas_relacion (id_cambio, relacion, propuesta, plan, anio_academico, fecha_alta) 
     30    SELECT _id_cambio, relacion, propuesta, plan, anio_academico, fecha_alta 
     31      FROM sga_propuestas_relacion 
     32     WHERE relacion = pRelacion; 
     33 
     34  INSERT INTO his_propuestas_relacion_grupo (id_cambio, relacion_grupo, relacion, incluir_en_analitico, inscripcion_automatica) 
     35    SELECT _id_cambio, relacion_grupo, relacion, incluir_en_analitico, inscripcion_automatica 
     36      FROM sga_propuestas_relacion_grupo 
     37     WHERE relacion = pRelacion; 
     38 
     39  INSERT INTO his_propuestas_relacion_plan (id_cambio, relacion_plan, relacion_grupo, plan) 
     40    SELECT _id_cambio,  
     41           sga_propuestas_relacion_plan.relacion_plan,  
     42           sga_propuestas_relacion_plan.relacion_grupo,  
     43           sga_propuestas_relacion_plan.plan 
     44      FROM sga_propuestas_relacion_grupo, 
     45           sga_propuestas_relacion_plan 
     46     WHERE sga_propuestas_relacion_grupo.relacion = pRelacion 
     47       AND sga_propuestas_relacion_grupo.relacion_grupo = sga_propuestas_relacion_plan.relacion_grupo; 
     48 
     49END; 
     50$BODY$ 
     51LANGUAGE 'plpgsql' VOLATILE; 
     52-- ++++++++++++++++++++++ Fin Function f_cambios_relacion_propuestas ++++++++++++++++ 
     53 
     54-- REVOKE EXECUTE ON FUNCTION f_cambios_relacion_propuestas (Integer) FROM public; 
     55GRANT EXECUTE ON FUNCTION f_cambios_relacion_propuestas (Integer) TO public; 
     56 

^índice

Funciones/f_evaluacion_modificar_nota.sql

  • Funciones/f_evaluacion_modificar_nota.sql

     
     1-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 
     3-- Version 3.7.0 
     4-- Function: f_evaluacion_modificar_nota 
     5-- 
     6-- Registra la modificacion de los datos de la evaluacion a un alumno 
     7--   
     8-- Recibe:   
     9--      1. Evaluacion 
     10--      2. Alumno 
     11--      5. Fecha 
     12--      3. Nota 
     13--      4. Resultado 
     14--      5. Corregido por 
     15--      6. Observaciones  
     16--      7. Fecha y hora de ultima actualizacion. Formato: DD/MM/YYYY HH24:MM:SS.SSS 
     17-- 
     18-- Retorna:  
     19--      1. Retorna el tipo de datos type_retorno_funcion 
     20-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     21 
     22-- DROP FUNCTION f_evaluacion_modificar_nota (integer, integer, varchar, varchar, char, varchar, varchar, varchar); 
     23CREATE OR REPLACE FUNCTION f_evaluacion_modificar_nota( 
     24     pEvaluacion integer,  
     25     pAlumno integer,  
     26     pFecha  varchar(10), 
     27     pNota varchar(10), 
     28     pResultado char(1), 
     29     pCorregidoPor varchar(50), 
     30     pObservaciones varchar(100), 
     31     pUltimoCambio varchar(23) 
     32     )  
     33RETURNS type_retorno_funcion AS  
     34$BODY$ 
     35 
     36DECLARE  
     37  cur_retorno   type_retorno_funcion; 
     38  _cnt integer; 
     39  _ultimo_cambio timestamp with time zone; 
     40 
     41BEGIN 
     42/* Formato de los datos: 
     43   pFecha        = DD/MM/YYYY 
     44   pUltimoCambio = DD/MM/YYYY HH:MM:SS.SSS 
     45*/   
     46 
     47  -- Variables de retorno 
     48  cur_retorno.resultado := 1; 
     49  cur_retorno.mensaje_indice := '800CUR_evaluacion_modif_ok'; 
     50  cur_retorno.mensaje_param  := NULL; 
     51   
     52-- Comienzo transacción. 
     53BEGIN 
     54 
     55  -- Actualizo al alumno 
     56  UPDATE sga_eval_detalle 
     57        SET fecha         = to_date(pFecha, 'DD/MM/YYYY'), 
     58            nota          = pNota, 
     59            resultado     = pResultado, 
     60            corregido_por = pCorregidoPor, 
     61            observaciones = pObservaciones 
     62        WHERE evaluacion  = pEvaluacion 
     63          AND alumno      = pAlumno 
     64          AND to_char(ultimo_cambio, 'DD/MM/YYYY HH24:MI:SS.MS') = pUltimoCambio; 
     65   
     66  -- Si no hubo actualización es porque hubo algun error. 
     67  IF NOT FOUND THEN 
     68     cur_retorno.resultado      = -1; 
     69     cur_retorno.mensaje_indice = '800CUR_evaluacion_modif_nota_error'; -- Error generico 
     70 
     71     -- Recupero nombre y apellido  y lo guardo en los parámetros de retorno      
     72     SELECT p.apellido || ' ' || p.nombres  
     73       INTO cur_retorno.mensaje_param 
     74       FROM  sga_alumnos as a, mdp_personas as p  
     75      WHERE a.alumno = pAlumno 
     76        AND p.persona = a.alumno; 
     77         
     78    -- Si no encontro el registro veo a que se debe 
     79    SELECT COUNT(*) INTO _cnt FROM sga_evaluaciones WHERE evaluacion = pEvaluacion; 
     80    IF _cnt = 0 THEN 
     81        -- No existe la evaluacion 
     82        cur_retorno.mensaje_indice := '800CUR_evaluacion_modif_no_existe'; 
     83    ELSE 
     84      -- Verifico ultima modificacion del registro 
     85      SELECT ultimo_cambio INTO _ultimo_cambio 
     86        FROM sga_eval_detalle  
     87       WHERE evaluacion  = pEvaluacion 
     88         AND alumno      = pAlumno; 
     89      IF NOT FOUND THEN 
     90         -- El alumno no existe en la evaluacion 
     91         cur_retorno.mensaje_indice := '800CUR_evaluacion_alumno_no_existe'; 
     92      ELSE 
     93        -- Alguien modifico datos del alumno entre que se levanto el registro y se actualizó 
     94        IF to_char(_ultimo_cambio, 'DD/MM/YYYY HH24:MI:SS.MS') <> pUltimoCambio THEN 
     95               cur_retorno.mensaje_indice := '800CUR_evaluacion_alumno_modificado'; 
     96        END IF;   
     97      END IF;   
     98    END IF; 
     99     
     100    RETURN cur_retorno; 
     101  END IF;   
     102   
     103  -- Error. 
     104  EXCEPTION WHEN OTHERS THEN 
     105      IF cur_retorno.resultado = -1 then 
     106         -- El error viene desde el RAISE EXCEPTION. 
     107         cur_retorno.sqlerrm := SQLERRM; 
     108      ELSE 
     109        -- El error se produjo en los inserts... 
     110        cur_retorno.resultado      := -1; 
     111        cur_retorno.mensaje_indice := '800CUR_evaluacion_modif_error_db'; 
     112        cur_retorno.sqlerrm  := SQLERRM; 
     113        cur_retorno.sqlstate := SQLSTATE; 
     114      END IF;  
     115      RETURN cur_retorno; 
     116 
     117END; -- Fin bloque de actualizacion en la base 
     118 
     119   
     120  -- Seteo valores para retorno 
     121  cur_retorno.resultado      := 1; 
     122  cur_retorno.mensaje_indice := '800CUR_evaluacion_modif_ok'; 
     123   
     124  RETURN cur_retorno; 
     125 
     126END; 
     127$BODY$ 
     128LANGUAGE 'plpgsql' VOLATILE; 
     129-- ++++++++++++++++++++++++++++++ Fin Function f_evaluacion_modificar_nota +++++++++++++++++++++++++++++++++ 
     130 
     131-- REVOKE EXECUTE ON FUNCTION f_evaluacion_modificar_nota (integer, integer, varchar, varchar, char, varchar, varchar, varchar) FROM public; 
     132GRANT EXECUTE ON FUNCTION f_evaluacion_modificar_nota (integer, integer, varchar, varchar, char, varchar, varchar, varchar) TO public; 

^índice

Funciones/f_criterio_tiene_hijos.sql

  • Funciones/f_criterio_tiene_hijos.sql

     
    99-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    1010 
    1111-- DROP FUNCTION f_criterio_tiene_hijos(integer); 
    12 CREATE OR REPLACE FUNCTION f_criterio_tiene_hijos(_persona integer) 
     12CREATE OR REPLACE FUNCTION f_criterio_tiene_hijos(pPersona integer) 
    1313  RETURNS integer AS 
    1414$BODY$ 
    1515 
    1616 -- Variables locales 
    1717 DECLARE _Hijos integer; 
    18  DECLARE _Fecha  date; 
    19  
     18  
    2019BEGIN 
    2120  _Hijos := 1; -- No tiene hijos 
    22   _Fecha := NULL; 
    2321   
    24   SELECT Max(fecha_relevamiento) INTO _Fecha 
    25     FROM mdp_datos_censales  
    26     WHERE persona = _persona; 
    27    
    28   IF _Fecha IS NULL THEN 
    29     -- No hay dato censal, retorno como que no trabaja 
    30     RETURN 1; 
    31   END IF;   
    32  
    3322  -- Recupero cantidad de hijos...    
    3423  SELECT mdp_datos_personales.cantidad_hijos  
    3524    INTO _Hijos 
    3625    FROM mdp_datos_censales,  
    3726         mdp_datos_personales 
    38    WHERE mdp_datos_censales.persona = _persona 
    39      AND mdp_datos_censales.fecha_relevamiento = _Fecha 
     27   WHERE mdp_datos_censales.persona = pPersona 
    4028     AND mdp_datos_personales.dato_censal = mdp_datos_censales.dato_censal; 
    4129      
    4230  IF _Hijos > 0 THEN 

^índice

Funciones/f_evaluacion_baja.sql

  • Funciones/f_evaluacion_baja.sql

     
     1-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 
     3-- Version 3.67.0 
     4-- Function: f_evaluacion_baja 
     5-- 
     6-- Da de baja una evaluacion_parcial 
     7--   
     8-- Recibe:   
     9--    1. ID Evaluacion 
     10-- 
     11-- Retorna:  
     12--    1. Retorna el tipo de datos type_retorno_funcion 
     13-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     14 
     15-- DROP FUNCTION f_evaluacion_baja (integer); 
     16CREATE OR REPLACE FUNCTION f_evaluacion_baja( 
     17  pEvaluacion Integer) 
     18RETURNS type_retorno_funcion AS  
     19$BODY$ 
     20 
     21DECLARE  
     22  _evaluacion  sga_evaluaciones%ROWTYPE; 
     23  _cant Integer; 
     24  cur_retorno type_retorno_funcion; 
     25 
     26BEGIN 
     27   
     28  -- Variables  
     29  cur_retorno.resultado := -1; 
     30  cur_retorno.mensaje_param  := NULL; 
     31   
     32  -- 1. Verifico que la evaluacion no este cerrada  
     33  SELECT * INTO _evaluacion FROM sga_evaluaciones WHERE evaluacion = pEvaluacion; 
     34    
     35  IF NOT FOUND THEN 
     36    -- No existe la evaluacion a dar de baja 
     37    cur_retorno.mensaje_indice := '800CUR_evaluacion_baja_no_existe'; 
     38    RETURN cur_retorno; 
     39  END IF; 
     40   
     41  -- 2. Verifico que la evaluacion no este cerrada  
     42  IF _evaluacion.estado = 'C' THEN 
     43    cur_retorno.mensaje_indice := '800CUR_evaluacion_baja_cerrada'; 
     44    RETURN cur_retorno; 
     45  END IF; 
     46   
     47  /* Este control NO SE HACE 
     48  -- 3. Si hay alumnos que no tengan nota cargada 
     49  SELECT COUNT(*) INTO _cant 
     50    FROM sga_eval_detalle 
     51   WHERE evaluacion = pEvaluacion 
     52     AND nota IS NOT NULL; 
     53      
     54  IF _cant > 0 THEN 
     55    cur_retorno.mensaje_indice := '800CUR_evaluacion_baja_alumnos_con_nota'; 
     56    RETURN cur_retorno; 
     57  END IF; 
     58  */ 
     59   
     60  -- 4. Si hay alguna evaluacion que esta relacionada con esta, no la permito borrar 
     61  SELECT COUNT(*) INTO _cant 
     62    FROM sga_evaluaciones_relacion 
     63   WHERE evaluacion_hijo = pEvaluacion; 
     64      
     65  IF _cant > 0 THEN 
     66    cur_retorno.mensaje_indice := '800CUR_evaluacion_baja_relacion'; 
     67    RETURN cur_retorno; 
     68  END IF; 
     69   
     70-- Comienza la Transacción 
     71BEGIN 
     72 
     73    -- Borro los datos de la evaluacion 
     74    DELETE FROM sga_eval_detalle WHERE evaluacion = pEvaluacion; 
     75    DELETE FROM sga_evaluaciones_instancias WHERE evaluacion = pEvaluacion; 
     76    DELETE FROM sga_evaluaciones_relacion   WHERE evaluacion_padre = pEvaluacion; 
     77    DELETE FROM sga_evaluaciones WHERE evaluacion = pEvaluacion; 
     78                                                                                                            
     79  -- Error. 
     80  EXCEPTION 
     81     WHEN OTHERS THEN 
     82        -- El error se produjo en los inserts... 
     83        cur_retorno.mensaje_indice := '800CUR_evaluacion_baja_error_db'; 
     84        cur_retorno.sqlerrm  := SQLERRM; 
     85        cur_retorno.sqlstate := SQLSTATE; 
     86      RETURN cur_retorno; 
     87 
     88END; -- Fin bloque de actualizacion en la base 
     89 
     90  -- La evaluacion se dio de baja 
     91  cur_retorno.resultado        := 1; 
     92  cur_retorno.mensaje_indice   := '800CUR_evaluacion_baja_ok'; 
     93   
     94  RETURN cur_retorno; 
     95 
     96END; 
     97$BODY$ 
     98LANGUAGE 'plpgsql' VOLATILE; 
     99-- ++++++++++++++++++++++++++++++ Fin Function f_evaluacion_baja +++++++++++++++++++++++++++++++++ 
     100 
     101-- REVOKE EXECUTE ON FUNCTION f_evaluacion_baja (integer) FROM public; 
     102GRANT EXECUTE ON FUNCTION f_evaluacion_baja (integer) to public; 

^índice

Funciones/get_mayor.sql

  • Funciones/get_mayor.sql

     
     1CREATE OR REPLACE FUNCTION get_mayor(pValor1 anyelement, pValor2 anyelement) 
     2RETURNS anyelement AS  
     3$BODY$ 
     4BEGIN 
     5 IF pValor1 > pValor2 THEN 
     6   RETURN pValor1; 
     7 ELSE 
     8   RETURN pValor2; 
     9 END IF; 
     10END; 
     11$BODY$ 
     12  LANGUAGE 'plpgsql' VOLATILE; 
     13-- ++++++++++++++++++++++++++++++ Fin Function  +++++++++++++++++++++++++++++++++ 
     14 
     15-- REVOKE EXECUTE ON FUNCTION get_mayor (anyelement, anyelement) FROM public; 
     16GRANT EXECUTE ON FUNCTION get_mayor (anyelement, anyelement) to public; 
     17/* 
     18select * from get_mayor(current_timestamp , now()); 
     19select * from get_mayor(2 , 5); 
     20select * from get_mayor('a'::varchar, 'b'::varchar); 
     21*/ 
     22 No newline at end of file 

^índice

Funciones/f_libros_acta.sql

  • Funciones/f_libros_acta.sql

     
    1717--          (XXXII) Libro de Actas de Examen Nro 32 
    1818-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    1919 
    20 -- DROP FUNCTION f_libros_acta(integer, integer); 
     20--DROP FUNCTION f_libros_acta(integer, integer); 
    2121CREATE OR REPLACE FUNCTION f_libros_acta(pIdActa integer, pMostrar integer)  
    2222  RETURNS TEXT AS  
    2323$BODY$ 
     
    2828         
    2929BEGIN 
    3030  cnt := 0; 
    31   _retorno := NULL; 
     31  _retorno := ''; 
    3232 
    3333  -- Recupero el nombre de las propuestas. 
    3434  FOR cur1 IN  SELECT DISTINCT  
    3535                    sga_libros_actas.nro_libro as nro_libro, 
    3636                    sga_libros_actas.nombre as nombre 
    3737               FROM sga_actas_folios, 
     38                    sga_libros_tomos, 
    3839                    sga_libros_actas 
    3940               WHERE sga_actas_folios.id_acta = pIdActa 
    40                  AND sga_libros_actas.libro = sga_actas_folios.libro 
     41                 AND sga_libros_tomos.libro_tomo = sga_actas_folios.libro_tomo 
     42                 AND sga_libros_actas.libro = sga_libros_tomos.libro 
    4143  LOOP 
    42     IF cnt = 0 THEN 
    43        _retorno := ''; 
    44     ELSE 
     44    IF cnt > 0 THEN 
    4545       _retorno :=  _retorno || ' / '; 
    4646    END IF; 
    4747     

^índice

Funciones/f_copiar_escala_notas.sql

  • Funciones/f_copiar_escala_notas.sql

     
     1-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 
     3-- Version 3.7.0 
     4-- Function: f_copiar_escala_notas 
     5-- 
     6-- Crea una nueva escala de notas, con sus correspondientes detalles, a partir de 
     7-- un ID de escala (discreta) recibido como parámetro 
     8--  
     9-- Recibe:   
     10--              Integer: Escala de notas desde la cual se va a realizar la copia 
     11-- 
     12-- Retorna:   
     13--              Integer: ID de la nueva escala de notas 
     14--        
     15-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     16 
     17-- DROP FUNCTION f_copiar_escala_notas (integer); 
     18CREATE OR REPLACE FUNCTION f_copiar_escala_notas(pEscalaOrigen integer)  
     19RETURNS INTEGER AS 
     20$BODY$ 
     21 
     22DECLARE  
     23  _escala_nueva integer; 
     24   
     25BEGIN 
     26        -- Se inserta la cabecera de la escala. Estado Activo. 
     27        INSERT INTO sga_escalas_notas (nombre, descripcion, tipo, es_numerica, cantidad_decimales, separador_decimal, nota_inicial, nota_final, estado) 
     28                SELECT  
     29                        left(nombre || ' - copia', 50), 
     30                        descripcion, 
     31                        tipo, 
     32                        es_numerica, 
     33                        cantidad_decimales, 
     34                        separador_decimal, 
     35                        nota_inicial, 
     36                        nota_final, 
     37                        'A' 
     38                FROM  
     39                        sga_escalas_notas 
     40                WHERE  
     41                        escala_nota = pEscalaOrigen; 
     42       
     43  -- Se recupera el serial de la nueva escala 
     44  _escala_nueva := (SELECT currval('sga_escalas_notas_seq')); 
     45   
     46  -- Se copian los detalles de la escala 
     47        INSERT INTO sga_escalas_notas_det(escala_nota, nota, descripcion, concepto, resultado, valor_numerico, orden)  
     48                SELECT  
     49                        _escala_nueva, 
     50                        nota, 
     51                        descripcion, 
     52                        concepto, 
     53                        resultado, 
     54                        valor_numerico, 
     55                        orden 
     56                FROM  
     57                        sga_escalas_notas_det 
     58                WHERE 
     59                        escala_nota = pEscalaOrigen; 
     60         
     61        -- sga_escalas_notas_rangos_resultados 
     62        INSERT INTO sga_escalas_notas_rangos_resultados(escala_nota, resultado, nota_inicial, nota_final)  
     63                SELECT  
     64                        _escala_nueva, 
     65                        resultado, 
     66                        nota_inicial, 
     67                        nota_final 
     68                FROM  
     69                        sga_escalas_notas_rangos_resultados 
     70                WHERE 
     71                        escala_nota = pEscalaOrigen; 
     72         
     73        -- sga_escalas_notas_rangos_conceptos 
     74        INSERT INTO sga_escalas_notas_rangos_conceptos(escala_nota, concepto, nota_inicial, nota_final)  
     75                SELECT  
     76                        _escala_nueva, 
     77                        concepto, 
     78                        nota_inicial, 
     79                        nota_final 
     80                FROM  
     81                        sga_escalas_notas_rangos_conceptos 
     82                WHERE 
     83                        escala_nota = pEscalaOrigen; 
     84         
     85        -- Se retorna el ID de la nueva escala 
     86        return _escala_nueva; 
     87  
     88END; 
     89$BODY$ 
     90LANGUAGE 'plpgsql' VOLATILE; 
     91-- ++++++++++++++++++++++++++++++ Fin Function f_copiar_escala_notas ++++++++++++++++ 
     92 
     93-- REVOKE EXECUTE ON FUNCTION f_copiar_escala_notas (integer) FROM public; 
     94GRANT EXECUTE ON FUNCTION f_copiar_escala_notas (integer) to public; 
     95 

^índice

Funciones/f_encuestas_subcomisiones.sql

  • Funciones/f_encuestas_subcomisiones.sql

     
     1-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- Función recursiva que arma todas las posibles combinaciones de subcomisiones por tipo de clase,  
     3-- para un periodo lectivo o comision determinado. 
     4-- Devuelve un array con las combinaciones de subcomisiones por tipo de clase ordenadas de menor a mayor por tipo de clase.+ 
     5-- Ejemplo: {234,200} 
     6--          {234,201} 
     7-- La funcion "f_encuestas_subccomisiones" se llama desde la funcion "f_encuestas_generar_items" 
     8-- 
     9-- Uso: 
     10--     Todas las comisiones de un periodo lectivo:  
     11--          SELECT * FROM f_encuestas_subccomisiones(33, NULL);  -- Período Lectivo nro 33 
     12--     Una comision:  
     13--          SELECT * FROM f_encuestas_subccomisiones(NULL, 345); -- Comision nro 345 
     14-- 
     15-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     16 
     17 
     18-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     19-- Function: f_armar_comb(integer, integer[], integer) 
     20-- Esta funcion es llamada desde la funcion f_encuestas_subcomisiones() 
     21-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     22 
     23-- DROP FUNCTION f_armar_comb(integer, integer[], integer); 
     24 
     25CREATE OR REPLACE FUNCTION f_armar_comb(pComision integer, pTiposClases integer[], pTiposId integer) 
     26  RETURNS SETOF integer[] AS 
     27$BODY$ 
     28DECLARE  
     29 
     30cur_subco RECORD; 
     31j int; 
     32k int; 
     33subco2 int[]; 
     34 
     35 
     36BEGIN 
     37  FOR cur_subco IN (SELECT subcomision FROM sga_subcomisiones  
     38                 WHERE sga_subcomisiones.comision = pComision  
     39                   AND sga_subcomisiones.tipo_clase = pTiposClases[pTiposId] 
     40                ORDER BY tipo_clase, subcomision) 
     41  LOOP 
     42        IF (pTiposId < array_length(pTiposClases,1)) THEN 
     43           FOR subco2 IN (SELECT * FROM f_armar_comb(pComision, pTiposClases, pTiposId + 1)) 
     44           LOOP 
     45             k := array_length(subco2,1) + 1; 
     46             subco2[k] := cur_subco.subcomision; 
     47             RETURN NEXT subco2;  
     48             -- RETURN NEXT cur_subco.subcomision::text || ' - ' || subco2::text;  
     49           END LOOP; 
     50        ELSE 
     51           RETURN NEXT array[cur_subco.subcomision];  
     52        END IF; 
     53  END LOOP; 
     54 
     55END 
     56$BODY$ 
     57LANGUAGE plpgsql VOLATILE; 
     58 
     59GRANT EXECUTE ON FUNCTION f_armar_comb(integer, integer[], integer) TO public; 
     60 
     61 
     62 
     63-- **************************************************************************** 
     64-- Function: f_encuestas_subcomisiones(integer, integer) 
     65-- Recibe:  
     66--    1. Periodo Lectivo 
     67--    2. Comision 
     68-- Debe recibir periodo lectivo o comision. Si recibe el periodo lectivo entonces 
     69-- tomará todas las comisiones de ese período lectivo. 
     70-- Develve:  
     71--    1. Comision 
     72--    2. Combinacion de subcomisiones por tipo de clase, ordenadas por tipo de clase en forma ascendente. Es un array, ej: {234,250,230} 
     73-- **************************************************************************** 
     74 
     75-- DROP FUNCTION f_encuestas_subcomisiones(integer, integer); 
     76CREATE OR REPLACE FUNCTION f_encuestas_subcomisiones( 
     77  pPeriodoLectivo integer,  
     78  pComisionIN integer,  
     79  OUT pComision integer,  
     80  OUT pCombinaciones integer[]) 
     81  RETURNS SETOF record AS 
     82$BODY$ 
     83 
     84DECLARE  
     85 cur_comision RECORD; 
     86 cur_tipos RECORD; 
     87 tipos_clase int[]; 
     88 combinacion_subc int[]; 
     89 i int; 
     90 
     91BEGIN 
     92 
     93  -- Recorro las comisiones del periodo lectivo o la comision pasada por parametro 
     94  FOR cur_comision IN (SELECT comision  
     95                         FROM sga_comisiones  
     96                        WHERE (pComisionIN IS NOT NULL AND sga_comisiones.comision = pComisionIN ) OR 
     97                              (pPeriodoLectivo IS NOT NULL AND sga_comisiones.periodo_lectivo = pPeriodoLectivo) 
     98                       ORDER BY comision) 
     99  LOOP 
     100        i := 1; 
     101        tipos_clase := ARRAY[0]; 
     102         
     103        -- Recupera los distintos tipos de clases de las subcomisiones de una comision ordenadas por tipo de clase 
     104        FOR cur_tipos IN (SELECT DISTINCT tipo_clase  
     105                        FROM sga_subcomisiones  
     106                       WHERE sga_subcomisiones.comision = cur_comision.comision 
     107                       ORDER BY tipo_clase) 
     108        LOOP 
     109          tipos_clase[i] := cur_tipos.tipo_clase; 
     110          i := i + 1; 
     111        END LOOP; 
     112 
     113    -- Devuelvo cada combinacion de subcomisiones por tipo de clase de una comision. 
     114    -- El array estará ordenado por subcomisiones segun el id de tipo de clase de cada una (de menor a mayor) 
     115        FOR combinacion_subc IN SELECT * FROM f_armar_comb(cur_comision.comision, tipos_clase, 1 ) 
     116        LOOP 
     117                pComision      := cur_comision.comision; 
     118                pCombinaciones := combinacion_subc; 
     119                RETURN NEXT; 
     120        END LOOP; 
     121  END LOOP; 
     122END 
     123$BODY$ 
     124LANGUAGE plpgsql VOLATILE; 
     125 
     126GRANT EXECUTE ON FUNCTION f_encuestas_subcomisiones(integer, integer) TO public; 

^índice

Funciones/f_mesa_examen_alta.sql

  • Funciones/f_mesa_examen_alta.sql

     
     1-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     2-- SIU-GUARANI 3 
     3-- Version 3.7.0 
     4-- Function: f_mesa_examen_alta 
     5-- 
     6-- Da de alta una mesa de examen  
     7--   
     8-- Recibe:   
     9--      1.  Nombre 
     10--      2.  Elemento 
     11--      3.  Cátedra 
     12--      4.  Ubicación 
     13--      5.  Observaciones 
     14--      6.  Mesa en Tuno de Examen? 
     15--      7.  Año Académico 
     16--      8.  Division 
     17--      9.  Fecha 
     18 
     19-- 
     20-- Retorna:  
     21--      1. Retorna el tipo de datos type_retorno_creacion_mesa 
     22-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     23 
     24 --DROP FUNCTION f_mesa_examen_alta (varchar, integer, integer, integer, varchar, char, integer, integer, varchar, varchar, varchar, integer, text[], text[], text[]); 
     25CREATE OR REPLACE FUNCTION f_mesa_examen_alta( 
     26   pNombre Varchar(50), 
     27   pElemento Integer, 
     28   pCatedra Integer, 
     29   pUbicacion Integer, 
     30   pObservaciones Varchar(255), 
     31   pMesa_en_turno_examen Char(1), 
     32   pAnio_academico Integer, 
     33   pDivision Integer, 
     34   pFecha varchar(10), 
     35   pHoraInicio varchar(5), 
     36   pHoraFinalizacion varchar(5), 
     37   pEspacio integer, 
     38   pInstancias text[], -- '{{1,1},{2,1}}'  -> {instancia, escala_nota} 
     39   pModalidad text[], -- '{P,D}'  -> {modalidad} 
     40   pDocente text[]   -- '{{145,1},{105,3},{540,2}}' -> {docente, rol} 
     41   )  
     42RETURNS type_retorno_creacion_mesa AS  
     43$BODY$ 
     44 
     45DECLARE  
     46  cur_retorno   type_retorno_creacion_mesa; 
     47  _mesa_examen Integer; 
     48  _llamado_mesa Integer; 
     49  _entidad Integer; 
     50  _evaluacion Integer; 
     51  vFecha Date; 
     52  vHI Time; 
     53  vHF Time; 
     54 
     55  i Integer; 
     56  _cant_instancias Integer; 
     57  _cant_planes Integer; 
     58  _cant_modalidad Integer; 
     59  _cant_docentes Integer; 
     60 
     61BEGIN 
     62/* Formato de los datos: 
     63   pFecha      = DD/MM/YYYY 
     64   pHoraInicio = HH:MM 
     65   pHoraFinalizacion    = HH:MM 
     66*/   
     67 
     68  -- Variables de retorno 
     69  cur_retorno.resultado := 1; 
     70  cur_retorno.mensaje_indice := '800EXA_mesa_examen_acta_alta_ok'; 
     71  cur_retorno.mensaje_param  := NULL; 
     72   
     73     
     74  -- Recupero valores de los arreglos 
     75  _cant_instancias := 0; 
     76  IF pInstancias IS NOT NULL THEN 
     77    -- _cant_instancias := array_lenght(pInstancias[]); -- Para version 9.0 en adelante 
     78    _cant_instancias := (select array_upper(pInstancias , 1) - array_lower(pInstancias ,1) + 1); 
     79  END IF; 
     80  IF _cant_instancias = 0 THEN  
     81    -- Error 
     82  END IF; 
     83   
     84  _cant_modalidad := 0; 
     85  IF pModalidad IS NOT NULL THEN 
     86    -- _cant_modalidad := array_lenght(pModalidad[]); -- Para version 9.0 en adelante 
     87    _cant_modalidad := (select array_upper(pModalidad , 1) - array_lower(pModalidad ,1) + 1); 
     88  END IF; 
     89  IF _cant_modalidad = 0 THEN  
     90    -- Error 
     91  END IF; 
     92 
     93  _cant_docentes := 0; 
     94  IF pDocente IS NOT NULL THEN 
     95    -- _cant_docentes := array_lenght(pDocente[]); -- Para version 9.0 en adelante 
     96    _cant_docentes := (select array_upper(pDocente , 1) - array_lower(pDocente ,1) + 1); 
     97  END IF; 
     98 
     99  -- Seteo Variables 
     100  vFecha := to_date(pFecha, 'DD/MM/YYYY'); 
     101  vHI := pHoraInicio::time; 
     102  vHF := pHoraFinalizacion::time; 
     103 
     104-- Comienzo transacción. 
     105BEGIN 
     106 
     107 
     108  -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     109  -- Genero la mesa de examen 
     110  -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
     111  INSERT INTO sga_mesas_examen (nombre, elemento, catedra, ubicacion, observaciones, mesa_en_turno_examen, anio_academico, division) 
     112    VALUES (pNombre, pElemento, pCatedra, pUbicacion, pObservaciones, pMesa_en_turno_examen, pAnio_academico, pDivision); 
     113 
     114  _mesa_examen = (SELECT currval('sga_mesas_examen_seq')); 
     115 
     116  -- 2. Inserto la mesa en un llamado 
     117  INSERT INTO sga_llamados_mesa (mesa_examen, fecha, hora_inicio, hora_finalizacion, espacio) 
     118    VALUES (_mesa_examen, vFecha, vHI, vHF, pEspacio); 
     119 
     120  _llamado_mesa = (SELECT currval('sga_llamados_mesa_seq')); 
     121 
     122  -- Recupero evaluacion y entidad de la mesa en el llamado   
     123  SELECT sga_evaluaciones.entidad, sga_evaluaciones.evaluacion  
     124    INTO _entidad, _evaluacion   
     125    FROM sga_llamados_mesa, 
     126         sga_evaluaciones  
     127    WHERE sga_llamados_mesa.llamado_mesa = _llamado_mesa 
     128      AND sga_evaluaciones.entidad = sga_llamados_mesa.entidad ; 
     129       
     130 
     131  -- Inserto las instancias 
     132  FOR i IN 1 .. _cant_instancias  
     133  LOOP 
     134        INSERT INTO sga_mesas_examen_instancias (mesa_examen, instancia, escala_nota) VALUES (_mesa_examen, pInstancias[i][1]::smallint, pInstancias[i][2]::integer); 
     135  END LOOP; 
     136 
     137   
     138 -- Inserto los docentes 
     139  FOR i IN 1 .. _cant_docentes 
     140  LOOP 
     141     INSERT INTO sga_docentes_mesa_llamado (llamado_mesa, docente, rol) VALUES (_llamado_mesa, pDocente[i][1]::integer, pDocente[i][2]::integer); 
     142  END LOOP; 
     143 
     144  -- Inserto las modalidades 
     145  FOR i IN 1 .. _cant_modalidad 
     146  LOOP 
     147     INSERT INTO sga_mesas_examen_modalidad (mesa_examen, modalidad) VALUES (_mesa_examen, pModalidad[i]); 
     148  END LOOP; 
     149 
     150  -- Inserto los planes en la mesa de examen de todos los planes donde se encuentra la actividad. 
     151  INSERT INTO sga_mesas_examen_propuestas (mesa_examen, propuesta, plan) 
     152         SELECT DISTINCT _mesa_examen, propuesta, plan 
     153           FROM vw_actividades_plan 
     154      WHERE elemento = pElemento; 
     155 
     156 
     157  -- Error. 
     158  EXCEPTION WHEN OTHERS THEN 
     159      IF cur_retorno.resultado = -1 then 
     160         -- El error viene desde el RAISE EXCEPTION. 
     161         cur_retorno.sqlerrm := SQLERRM; 
     162      ELSE 
     163        -- El error se produjo en los inserts... 
     164        cur_retorno.resultado      := -1; 
     165        cur_retorno.mensaje_indice := '800EXA_mesa_examen_alta_error_db'; 
     166        cur_retorno.sqlerrm  := SQLERRM; 
     167        cur_retorno.sqlstate := SQLSTATE; 
     168      END IF;  
     169      RETURN cur_retorno; 
     170 
     171END; -- Fin bloque de actualizacion en la base 
     172 
     173   
     174  -- Seteo valores para retorno 
     175  cur_retorno.resultado      := 1; 
     176  cur_retorno.mensaje_indice := '800EXA_mesa_examen_alta_ok'; 
     177   
     178  cur_retorno.evaluacion = _evaluacion;   
     179  cur_retorno.llamado_mesa = _llamado_mesa;   
     180   
     181   
     182  RETURN cur_retorno; 
     183 
     184END; 
     185$BODY$ 
     186LANGUAGE 'plpgsql' VOLATILE; 
     187-- ++++++++++++++++++++++++++++++ Fin Function f_mesa_examen_acta_alta +++++++++++++++++++++++++++++++++ 
     188 
     189-- REVOKE EXECUTE ON FUNCTION f_mesa_examen_acta_alta (varchar, integer, integer, integer, varchar, char, integer, integer, varchar, varchar, varchar, integer, text[], text[], text[]) FROM public; 
     190GRANT EXECUTE ON FUNCTION f_mesa_examen_alta (varchar, integer, integer, integer, varchar, char, integer, integer, varchar, varchar, varchar, integer, text[], text[], text[]) TO public; 
     191 
     192 
     193/* 
     194select * from f_mesa_examen_alta ( 
     195'Mesa A', 23, NULL, 1, 'Prueba de una meas de examen fuera de calendario', 'N', 
     1962013, NULL, '2013-09-25', '18:30', NULL, NULL, 
     197'{{3,1},{4,1}}', -- instancias 
     198'{P,D}', -- modalidad 
     199'{{523,1},{123,2},{540,2}}',  -- Docentes 
     200--'{{55,3,1},{90,3,1}}'  -- Alumnos 
     201) 
     202 
     203 
     204CREATE OR REPLACE FUNCTION f_mesa_examen_acta_alta( 
     205        pNombre Varchar(50), 
     206        pElemento Integer, 
     207        pCatedra Integer, 
     208        pUbicacion Integer, 
     209        pObservaciones Varchar(255), 
     210        pMesa_en_turno_examen Char(1), 
     211        pAnio_academico Integer, 
     212        pDivision Integer, 
     213        pFecha varchar(10), 
     214        pHoraInicio varchar(5), 
     215        pHoraFinalizacion varchar(5), 
     216        pEspacio integer, 
     217    pInstancia text[], -- '{{1,1},{2,1}}'  -> {instancia, escala_nota} 
     218    pModalidad text[], -- '{P,D}'  -> {modalidad} 
     219    pDocente text[],   -- '{{145,1},{105,3},{540,2}}' -> {docente, rol} 
     220--    pAlumno text[],    -- '{{542,1,1},{545,1,1},{903,2,1},{250,1,1}}' -> {alumno, instancia, escala_nota} 
     221    pNroActa varchar(30), 
     222    pRenglonesFolio integer, 
     223    pObservacionesActa Varchar(150) )  
     224*/ 
     225 No newline at end of file 

^índice

Funciones/f_tomos_libros_acta.sql

  • Funciones/f_tomos_libros_acta.sql

    
            
            
     
    88-- Recibe:  f_libros_acta(integer) 
    99--   1. ID de acta 
    1010-- Retorna:  
    11 --   1. Nombre del o los tomos de libros donde se encuentra el acta 
     11--   1. Nombre del/los tomo/s de libros donde se encuentra el acta 
    1212-- Ejemplo: Tomo 1/Tomo 2 
    1313-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
    1414 
    15 -- DROP FUNCTION f_tomos_libros_acta(integer); 
    16 CREATE OR REPLACE FUNCTION f_tomos_libros_acta(_id_acta INTEGER)  
     15--DROP FUNCTION f_tomos_libros_acta(integer); 
     16CREATE OR REPLACE FUNCTION f_tomos_libros_acta(pIdActa INTEGER)  
    1717 RETURNS TEXT AS  
    1818$BODY$ 
    1919DECLARE  
     
    2323         
    2424  BEGIN 
    2525   cnt := 0;     
    26    _retorno := NULL; 
     26   _retorno := ''; 
    2727                 
    28   -- Recupero el nombre de las propuestas. 
    29   FOR cur1 IN   SELECT  sga_libros_actas.nro_tomo as nombre 
    30                                 FROM    sga_actas_folios, 
    31                                                 sga_libros_actas 
    32                                 WHERE   sga_actas_folios.id_acta = _id_acta 
    33                                                 AND sga_libros_actas.libro = sga_actas_folios.libro 
     28  -- Recupero el nombre de los tomos donde se encuentra el acta 
     29  FOR cur1 IN SELECT sga_libros_tomos.nro_tomo as nro_tomo 
     30                FROM sga_actas_folios, 
     31                     sga_libros_tomos 
     32               WHERE sga_actas_folios.id_acta = pIdActa 
     33                 AND sga_libros_tomos.libro_tomo = sga_actas_folios.libro_tomo 
    3434  LOOP 
    35       IF cnt = 0 THEN            
    36          _retorno :=  cur1.nombre; 
    37       ELSE 
    38          _retorno :=  _retorno || '/' || cur1.nombre; 
     35      IF cnt > 0 THEN            
     36         _retorno := _retorno || '/'; 
    3937      END IF;    
     38      _retorno := _retorno || 'Tomo ' || cast(cur1.nro_tomo as text); 
    4039      cnt := cnt + 1; 
    4140  END LOOP; 
    4241         
     
    4544  END; 
    4645$BODY$ 
    4746LANGUAGE 'plpgsql' VOLATILE; 
    48 -- ++++++++++++++++++++++++++++++ Fin Function f_tomos_libros_acta(integer) ++++++++++++++++ 
     47-- ++++++++++++++++++++++++++++++ Fin Function f_tomos_libros_acta  +++++++++++++++++++++++ 
    4948 
    5049-- REVOKE EXECUTE ON FUNCTION f_tomos_libros_acta (integer) FROM public; 
    5150GRANT EXECUTE ON FUNCTION f_tomos_libros_acta (integer) to public; 

^índice

Funciones/f_acta_examen_alta.sql