Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GUAYAQUIL
Facultad de Ciencias
Matemáticas y Físicas
Carrera de Ingeniería en
Sistemas Computacionales
PROYECTO DE GRADO
Sistema De Aula Virtual
”Módulo De Inscripción del
Aula Virtual”
Previo a la Obtención del
Título de:
INGENIERO EN SISTEMAS
COMPUTACIONALES
Autores:
Asqui Yánez Gustavo
Misael
Sánchez Vásquez Wendy
Stalina
GUAYAQUIL - ECUADOR
Año: 2009
AGRADECIMIENTO
suscritos, perteneciendo a la
C.I. 0919017251
C.I. 0920644812
INDICE GENERAL
Pág. No.
AGRADECIMIENTO
II
DEDICATORIA
III
TRIBUNAL DE GRADUACIÓN
IV
DECLARACION EXPRESA
INDICE GENERAL
VI
INDICE GENERAL
CAPITULO 1
MANUAL DE USUARIO
1.2 Componentes del Sistema de Aula Virtual “Módulo de Inscripción de
Aula Virtual”
1.3 Opciones del Sistema de Aula Virtual “Módulo de Inscripción del
Aula Virtual”
1.3.1 Opciones a nivel de usuario Alumno
1.3.1.1 Registro: Alumno
1.3.2 Opciones a nivel de usuario Administrado
1.3.2.1 Registro: Administrador
1.3.2.2 Consultar o Actualizar
1.3.2.3 Nuevo
1.3.2.4 Pagos
1.3.2.5 Precio de tasa
1.3.2.6 Porcentaje Cuota
1.3.2.7 Reportes
CAPITULO 2
MANUAL TECNICO
INDICE DE TABLAS
sistema.
2
se debe cobrar por una cuota, actualiza precios, generar las órdenes de pago
Digite su usuario
Digite su contraseña
b. Menú Lateral: Esta zona cambia de acuerdo al perfil del usuario que
acceder a alguna de ellas hay que hacer doble click sobre el nombre
de la opción.
En todas las opciones, si deseamos salir de una pantalla del Aula Virtual
Salir
“OPERACIÓN CANCELADA”
7
Aula Virtual”
INSCRIPCION AULA
REGISTRO
ALUMNO
en Sistemas si está repitiendo una materia por tercera vez sólo puede
INSCRIPCION AULA
REGISTRO
ADMINISTRADOR
CONSULTAR O ACTUALIZAR
REGISTRO
MATERIA/S DE PROFESOR
PARAMETROS
12
NUEVO
PARALELO
MATERIA/S A PROFESOR
PERIODO LECTIVO
PAGOS
POR ALUMNO
MASIVA
TASA CATEGORIA
PRECIO DE TASA
• NUEVO
• CONSULTA/ACTUALIZA
PORCENTAJE DE CUOTA
• NUEVO
• CONSULTA/ACTUALIZA
REPORTES
CONSULTAR
13
administradores.
1. Búsqueda de Alumno/s
Examen de Gracia
Para inscribir a
un alumno en
un examen de
gracia, Primero
marcar la casilla
y luego seguir
los pasos 1-3
2. Elegir materias
inscribirse.
3. Confirmar Inscripción
realizada la inscripción.
17
Registro
Modificar
modificar un registro.
inscripción total.
materias.
continuación:
21
Opción ANULACION
√
1. Marcar la casilla correspondiente a la/s materia/s que quiere anular
acción.
Números de alumnos
inscritos actualmente
reporte seleccionado.
1.- Seleccionar el
tipo de reporte y
el formato de
visualización
Materias de Profesor
asignadas a un profesor.
1.- Seleccionar
el registro de un
profesor.
2.- Seleccionar
las materias que
serán anuladas
Parámetros
Tales como números de materias que un alumno puede ver por primera
1.3.2.3 Nuevo
Paralelo
detallan a continuación:
1.- Seleccionar
un nivel
Nuevos paralelos
creados
botón CONSULTAR
sección.
2.-Pulsar Buscar
para visualizar los
paralelos creados
1.-Seleccionar un
criterio de búsqueda
período lectivo.
Seleccionar una malla y un nivel para visualizar las materias que aún no
Luego, elegir la/s materia/s que serán creadas marcando las casillas
la/s materia/s.
2.-Elegir un nivel
1.-Seleccionar una malla
4.-Click en GRABAR
3.-Marcar las casillas de para concluir con la
las materias que serán creación de materias
creadas
período lectivo.
por malla y por semestre seleccionar una malla y un nivel en los campos
respectivos.
disponibles.
35
máximo de estudiantes
A continuación se detalla los pasos a seguir para realizar cada una de las
acciones descritas:
5.-Click en ANULAR
SELECCIÓN para
1.-Seleccionar un nivel 2.-Elegir la opción
y un paralelo ANULA SELECCION confirmar la acción a
como elegidas por lo cual sólo debe seleccionar el motivo por el cual
confirmar la acción.
38
4.-Click en ANULAR
TODO para confirmar
1.-Seleccionar un nivel 2.-Elegir la opción la acción a realizar
y un paralelo ANULA TODO
Modificar Cupo/s
paralelo seleccionado.
6.-Click en MODIFICAR
CUPOS SELECCIÓN…
1.-Seleccionar un nivel 2.-Elegir la opción para confirmar la acción a
y un paralelo MODIFICAR CUPOS realizar
de materias.
Materias a Profesor
4.- Pulsar GRABAR para concluir 3.- Seleccionar la/s materia/s que
la asignación de materias serán asignadas al profesor
seleccionado
Figura 31: Interfaz Profesor-Asignación
Período Lectivo
Esta pantalla permite crear un periodo lectivo, para ello ingresar los datos
solicitados y pulsar
42
1.3.2.4 Pagos
Por Alumno
un determinado alumno.
un alumno son:
43
2. Confirmar acción
Masiva
Los pasos a seguir para generar órdenes de pago en forma masiva son:
1. Consultar inscripciones
Seleccionar una fecha desde y una fecha hasta para visualizar todas
2. Confirmar acción
3.-Marcar la
casillas para
seleccionar las
inscripciones
Tasa Categoría
categoría de tasa.
Nuevo
click en
Consulta/Actualiza
click en QUITAR.
Nuevo
Pantalla que permite asignar el porcentaje del valor de una tasa que se
SELECCIONAS
Consulta/Actualiza
Pantalla que permite anular una tasa o modificar el porcentaje del valor
Para actualizar o anular una tasa, previamente debe consultar las tasas.
1. Consultar
ingresada.
Modificar
Anular
la acción
55
1.3.2.7 Reportes
Consultar
alfabético.
paralelo.
el campo PARALELO.
2. Seleccionar formato
3. Presentar reporte
CAPITULO 2
MANUAL TECNICO
más fácil.
62
Actores Secundarios:
de pago.
Nivel 1
Registro de Materia
«extends»
«extends»
Consultas de
Registro
«extends»
Alumno Actualización de
Registro
«extends»
«extends»
Asignacion de
Materia
«extends»
«extends»
Creacion de
Paralelo
«extends»
«extends»
Actualiza Tasa
Generar Orden de
Pago
Asignacion
Prefesor_Materia
Anula asignacion
Profesor Materia
Nivel 2
Registro de Materia
«extends»
«extends»
Consultas de
Registro
«extends»
Crear Categoria de
Tasa
Administrador «extends»
«extends»
Asignar Porcentaje
a tasa
«extends»
Actualiza Precio
de Tasa
Generar Orden de
«uses» Pago por Alumno
Generar Orden de «uses»
Pago
Generar Orden de
Pago Masiva
Asignacion
Prefesor_Materia
Anula asignacion
Profesor Materia
Eventos
ACTOR Eventos SISTEMA
Flujo Principal: 1. Alumno selecciona 1. El sistema presenta el listado de materias
la/s materia/s y el disponibles (Curriculares, electivas y
paralelo en el que extracurriculares) por alumno y los paralelos con
desea inscribirse cupo disponible (mayor a 0), a partir de la fecha
establecida en el cronograma de inscripción. En
esta pantalla el alumno podrá elegir el paralelo
de la materia en la que desea registrarse, esta
selección se realizara para cada materia
disponible. Además el alumno/a podrá elegir si
desea carnet estudiantil e inscribirse en el curso
de Inglés
Nombre:
Cambiar Paralelo
Actor:
Empleado-Administrador
Descripción: Proceso que permite hacer cambios de paralelos en una o más
materias
Empleado-
Actor: Administrador
Pos condición:
Tabla N° 6 Caso de uso crear paralelo
71
Empleado -
Actor: Administrador
Descripción: Consulta de paralelos creados en el periodo lectivo vigente
Eventos ACTOR Eventos SISTEMA
1.- Administrado ingresa al 1. El Sistema presenta una pantalla en la
sistema académico cual se realizará la búsqueda de los
2. Tiene la opción de buscar: paralelos que se han creado, Permite
-Todos los paralelos creados realizar la búsqueda de los paralelos por
en el periodo lectivo vigente. sección, nivel o de todos los paralelos
-Los paralelos creados en un creados en el periodo lectivo vigente
Flujo Principal:
nivel o sección determinada. 2.-Sistema valida datos.
3.- El usuario elige el criterio 3. El Sistema Muestra en pantalla un
de búsqueda de los paralelos listado de los paralelos creados con su
creados. respectivo nivel y sección en un periodo
4.- El usuario confirma la lectivo vigente.
consultar.
Usuario esté conectado al sistema con rol de Administrador.
Precondición:
Paralelo previamente creado
Pos condición: Mostrar los paralelos creados en un determinado periodo lectivo
Tabla N° 7 Caso de Uso Consultar Paralelo
72
Asignación de
Nombre: materia
Empleado-
Actor: Administrador
Caso de uso para asignar las materias que se dictaran en el
Descripción: periodo lectivo vigente.
Eventos ACTOR Eventos SISTEMA
1. El usuario accede a las 1. El Sistema presenta una pantalla en la
materias disponibles que el usuario podrá consultar las
seleccionando la malla y el materias disponibles que se pueden
nivel. dictar en un periodo lectivo. Se
2. El usuario selecciona la/s visualizan las materias seleccionando
materia/s que será/n una malla y un nivel.
asignadas creadas en el 2. El sistema muestra las materias que
periodo lectivo vigente. pertenecen al nivel y malla seleccionada
3. Confirmar la asignación de las cuales pueden ser asignadas a un
las materias seleccionadas. periodo lectivo vigente.
Flujo Principal: 3. Sistema valida datos.
4. Sistema envía datos de confirmación
Asignación de
Nombre: materias a paralelo
Empleado-
Actor: Administrador
Proceso que permite asignar materias, cupo máximo y
mínimo a uno o varios paralelos que pertenecen a un nivel
Descripción: determinado.
Eventos ACTOR Eventos SISTEMA
1.- Usuario elige la opción 1.-El Sistema muestra una pantalla en la
de crear paralelo-materia. cual el usuario podrá consultar por nivel las
2.-Usuario Selecciona la/s materias y los paralelos creados en un
materia/s y los paralelos en periodo lectivo vigente.
los cuales se crearan las 2.-El sistema muestra la lista de materias
materias elegidas. que pueden ser asignadas a uno o varios
3.-El Usuario digita el cupo paralelos y permite ingresar el cupo de
Flujo Principal: máximo y mínimo de estudiantes mínimo y máximo para cada
estudiantes que se paralelo.
aceptarán para cada 3.- Sistema valida datos.
paralelo. 4. Sistema envía datos de confirmación.
3. Usuario verifica datos y 5. Sistema actualiza el cupo mínimo y
confirma la creación máximo de estudiantes permitidos en uno o
varios paralelos.
Anular Todo
-El sistema permite cerrar un paralelo
perteneciente a un nivel seleccionado
2.- Sistema valida datos.
3.- Sistema envía datos de confirmación.
4.- Sistema actualiza el estado (ANULADO)
de un paralelo o materia y actualiza el cupo
máximo o mínimo de estudiantes.
Pos condición: Paralelo actualizado
Tabla N° 10 Caso de uso Actualización/Anulación de paralelo
75
Actor: Empleado-Administrador
Valida usuario
Envia datos de usuario
Mensaje13 Mensaje9
Confirmacion de inscripcion
Transfiere solicitud
Solicitud de busqueda
actualizacion de cupo
Conclusión satisfactoria
Conclusión satisfactoria
muestra mensaje de conclusion satisfactoria
Solicitud de busqueda
actualizacion de cupo
Conclusión satisfactoria
Conclusión satisfactoria
muestra mensaje de conclusion satisfactoria
actualizacion de cupo
Solicitud de busqueda
Transfiere solicitud
Soliditud dato de alumno
envia solicitud
envia datos
envia datos
Muestra paralelos datos de alumnoenvia mensaje
devuelve paralelo
transfiere mensaje
envia mensaje envia materias
Muestra datos de materias registradas
Solicitud de busqueda
Solicitar paralelos disponibles
Solicitar seccion
Conclusión satisfactoria
Paquete superior::Administrador
Solicitud de busqueda
Solicitar paralelos creados
Solicitar descripion de paralelo
seccion de paralelo
transfiere mensaje
Muestra paralelos disponibles y creados
Solicitud de busqueda
transferir solicitud
Selecciona materia/s
Conclusión satisfactoria
Solicitud de busqueda
transferir solicitud
Conclusión satisfactoria
Solicitud de busqueda
transferir solicitud
Conclusión satisfactoria
Conclusión satisfactoria
Ingresa categoria
transferir solicitud
Envia conclusion
Solicitud de busqueda
transferir solicitud
Solicitar semestre
Solicitar semestre
Muestra Categoria
Ingresa precio
Valida dato
Muestra dato
Solicitud de busqueda
transferir solicitud
Muestra Categoria
Ingresa Porcentaje
Valida dato
Muestra dato
Solicitud de busqueda
transferir solicitud
Confirma Actualizacion
Crea Obtejo Tasa Cuota
:Interfaz de Usuario :Inscripcion Alumno Persona :Inscripcion_Detalle :Paralelo :Materia Orden_Pago Detalle_Orden
Paquete superior::Administrador
Solicitud de busqueda
Transfiere solicitud
Soliditud dato de alumno
envia solicitud
envia datos
envia datos
Muestra paralelos datos de alumnoenvia mensaje
devuelve paralelo
transfiere mensaje
envia mensaje envia materias
Muestra datos de materias registradas
Solicitud de busqueda
Selecciona Profesor
Envia solicitud de materia
Valida dato
Crea Obtejo Profesor_Asignacion
Solicitud de busqueda
Transfiere solicitud
Envia datos
Muestra profesor y materias
Valida dato
Actualiza Obtejo Profesor_Asignacion
-------------------------fin de la información--------------------------
93
2.4.2 Comentarios
código correspondiente
Ejemplo:
variable
94
Ejemplo:
por línea.
Ejemplo:
LN_VALOR NUMBER;
LV_RESULTADO VARCHAR2(100);
si es necesario.
SINGULAR.
Ejemplo:
_GRUPO 9
--FECHA: 27-03-09
--OBJETIVO: ACTUALIZAR EL CUPO DE UNA MATERIA EN UN
--PARALELO
------------Fin de la información------------
Pre-requisito:
UTL_FILE que se utilizan para enviar mails. Para ello ejecutar una por
Procedimiento SEND_EMIAL
CREATE OR REPLACE PROCEDURE SEND_EMAIL(SENDER IN VARCHAR2,RECIPIENT IN
VARCHAR2, SUBJECT IN VARCHAR2,MESSAGE IN VARCHAR2) IS
MAILHOST VARCHAR2(30) := '192.168.1.199';
MAIL_CONN UTL_SMTP.CONNECTION;
LV_MESSAGE VARCHAR2(700);
CRLF VARCHAR2(2) := CHR(13) || CHR(10);
MESG VARCHAR2(15000);
LW_LENGHT_LINE NUMBER;
LW_POS_START NUMBER;
LW_POS_CHAR NUMBER;
V_RECIPIENT VARCHAR2(200);
LN_NUMERO NUMBER;
BEGIN
MAIL_CONN := UTL_SMTP.OPEN_CONNECTION(MAILHOST, 25, 60);
MESG := 'DATE: ' || TO_CHAR(SYSDATE, 'DD MON YY HH24:MI:SS') || CRLF ||
'FROM: <' || SENDER || '>' || CRLF || 'SUBJECT: ' || SUBJECT || CRLF ||
'TO: ' || RECIPIENT || CRLF || '' || CRLF || MESSAGE;
UTL_SMTP.HELO(MAIL_CONN, MAILHOST);
UTL_SMTP.MAIL(MAIL_CONN, SENDER);
LW_LENGHT_LINE := LENGTH(RECIPIENT);
LW_POS_START := 1;
<<LOOPINTERNO>>
LOOP
LW_POS_CHAR := INSTR(RECIPIENT, ';', LW_POS_START);
V_RECIPIENT := SUBSTR(RECIPIENT,
LW_POS_START,
LW_POS_CHAR - LW_POS_START);
UTL_SMTP.RCPT(MAIL_CONN, V_RECIPIENT);
EXIT LOOPINTERNO WHEN LW_POS_CHAR = LW_LENGHT_LINE;
LW_POS_START := LW_POS_CHAR + 1;
END LOOP;
UTL_SMTP.DATA(MAIL_CONN, MESG);
UTL_SMTP.QUIT(MAIL_CONN);
EXCEPTION
WHEN OTHERS THEN
LV_MESSAGE := 'ERROR '||SUBSTR(SQLERRM,1,90);
SELECT NVL(MAX(ERRL_CODE_MESSAGE),0) + 1 INTO LN_NUMERO FROM
CTS_ERRORS_LOG;
INSERT INTO CTS_ERRORS_LOG(ERRL_CODE_MESSAGE, ERRL_CONTAINER,
ERRL_REFERENCE, ERRL_DATA, ERRL_MESSAGE,
ERRL_DATE, ERRL_USER)
VALUES(LN_NUMERO, 'SENDMAIL', NULL, 'NN', LV_MESSAGE, SYSDATE,
USER);
END SEND_EMAIL;
98
lo siguiente.
Sintaxis:
Nombre_de_cadena: userid=usuario/contraseña@servicio
nombre_parametro2=%2,…. %*
que captura la salida. Puede ser screen, file, printer, mail, sysout, cache,
localfile.
99
USUARIO_MODIFICACION VARCHAR2(50));
ALTER TABLE PROFESOR_ASIGNACION
ADD CONSTRAINT PROFESOR_ASIGNACION_P PRIMARY KEY (ID_PROFESOR_ASIGNACION);
ALTER TABLE PROFESOR_ASIGNACION
ADD CONSTRAINT PARALELO_R8 FOREIGN KEY (ID_ESTADO)
REFERENCES ESTADO (ID_ESTADO);
ALTER TABLE PROFESOR_ASIGNACION
ADD CONSTRAINT PROFESOR_ASIGNACION_R2 FOREIGN KEY (ID_EMPLEADO)
REFERENCES EMPLEADO (ID_EMPLEADO);
ALTER TABLE PROFESOR_ASIGNACION
ADD CONSTRAINT PROFESOR_ASIGNACION_R3 FOREIGN KEY (ID_PERIODO_LECTIVO)
REFERENCES PERIODO_LECTIVO (ID_PERIODO_LECTIVO);
ALTER TABLE PROFESOR_ASIGNACION
ADD CONSTRAINT PROFESOR_ASIGNACION_R4 FOREIGN KEY (ID_PARALELO_MATERIA)
REFERENCES PARALELO_MATERIA (ID_PARALELO_MATERIA);
ALTER TABLE PROFESOR_ASIGNACION
ADD CONSTRAINT PROFESOR_ASIGNACION_N7
CHECK ("USUARIO_REGISTRO" IS NOT NULL);
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN 'NO SE HA ENCONTRADO NINGÚN DATO';
WHEN OTHERS THEN
RETURN SQLERRM;
END ;
--EXTRAE EL NOMBRE DEL USUARIO
---GRUPO 9 3 DE JUNIO DEL 2009 -- 8:55AM
FUNCTION GET_NOMBRE_USUARIO(PV_USUARIO VARCHAR2)RETURN VARCHAR2 IS
LV_NOMBRE_PERSONA VARCHAR2(200);
BEGIN
SELECT GET_NOMBRE_PERSONA(U.ID_PERSONA)INTO LV_NOMBRE_PERSONA
FROM USUARIO U
WHERE LOWER(U.LOGIN)=LOWER(PV_USUARIO)
AND ROWNUM=1;
RETURN LV_NOMBRE_PERSONA;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN 'NO SE HA ENCONTRADO NINGÚN DATO';
WHEN OTHERS THEN
RETURN SQLERRM;
END;
--EXTRAE EL NOMBRE DEL PERFIL GRUPO 9 3/JUNIO/2009 9:11AM
FUNCTION GET_NOMBRE_PERFIL(PN_ID_PERFIL NUMBER)RETURN VARCHAR2
IS
LV_PERFIL VARCHAR2(50);
BEGIN
SELECT P.DESCRIPCION INTO LV_PERFIL
FROM ADM_PERFILES P
WHERE P.ID_PERFIL=PN_ID_PERFIL;
RETURN LV_PERFIL;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN 'NO SE HA ENCONTRADO NINGÚN DATO';
WHEN OTHERS THEN
RETURN SQLERRM;
END;
RETURN NVL(LV_NOMBRES_ALUMNO,'');
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(SQLERRM);
END;
INSERT INTO
PARALELO(ID_PARALELO,DESCRIPCION,ID_PERIODO_LECTIVO,ID_SECCION,ID_ESTADO,FECHA_REGISTRO,USUARIO_R
EGISTRO)
VALUES(ID_PARALELO,PV_DESCRIPCION,PN_ID_PERIODO_LECTIVO,PN_ID_SECCION,PN_ID_ESTADO,CURRENT_DATE,P
V_USUARIO);
END;
--INSERT_PARALELO_MATERIA
PROCEDURE INSERT_PARALELO_MATERIA(PN_ID_PARALELO NUMBER,PN_ID_MATERIA NUMBER,PN_CUPO_MINIMO
NUMBER,PN_CUPO_MAXIMO NUMBER,PN_CUPO_OCUPADO NUMBER,PN_CUPO_DISPONIBLE NUMBER,PV_USUARIO
VARCHAR2,LV_RESPUESTA OUT VARCHAR2)IS
LN_ID_PARALELO_MATERIA NUMBER(5);
LN_CANT_PM NUMBER(3);
BEGIN
SELECT COUNT(*)INTO LN_CANT_PM
FROM PARALELO_MATERIA PM
WHERE PM.ID_ESTADO=1 AND PM.ID_PARALELO=PN_ID_PARALELO
AND PM.ID_MATERIA=PN_ID_MATERIA;
IF LN_CANT_PM=0 THEN
SELECT NVL(MAX(ID_PARALELO_MATERIA),0)+1 INTO LN_ID_PARALELO_MATERIA
FROM PARALELO_MATERIA;
INSERT INTO
PARALELO_MATERIA(ID_PARALELO_MATERIA,ID_PARALELO,ID_MATERIA,CUPO_MINIMO,CUPO_MAXIMO,CUPO_OCUPAD
O,CUPO_DISPONIBLE,ID_ESTADO,FECHA_REGISTRO,USUARIO_REGISTRO)
VALUES(LN_ID_PARALELO_MATERIA,PN_ID_PARALELO,PN_ID_MATERIA,PN_CUPO_MINIMO,PN_CUPO_MAXIMO,PN_CUP
O_OCUPADO,PN_CUPO_DISPONIBLE,1,CURRENT_DATE,PV_USUARIO);
LV_RESPUESTA:='GRABACIÓN EXITOSA';
ELSIF LN_CANT_PM>0 THEN
LV_RESPUESTA:='NO SE PUEDE GRABAR MATERIA :' || GET_NOMBRE_MATERIA(PN_ID_MATERIA) || ' EN PARALELO: '
||GET_NOMBRE_PARALELO(PN_ID_PARALELO) || ' , PORQUE YA EXISTE EN EL PERIODO LECTIVO VIGENTE';
END IF;
EXCEPTION
WHEN OTHERS THEN
LV_RESPUESTA:=SQLERRM;
END INSERT_PARALELO_MATERIA;
-------------------------
-----------------------
END LOOP;
114
END GET_PARALELOS_DISPONIBLES;
----------------------------------
-------------PR_ANULA_PARALELO_MATERIA--POR GUSTAVO ASQUI 24 FEB 09--10:51
PROCEDURE PR_MODIF_PARALELO_MATERIA(PV_OPCION VARCHAR2,PN_ID_PERIODO_LECTIVO
NUMBER,PN_ID_MATERIA NUMBER,PN_ID_PARALELO NUMBER,PV_RESPUESTA OUT VARCHAR2,PV_USUARIO
VARCHAR2,PV_OBSERVACION VARCHAR2,PN_CUPO_MINIMO INT,PN_CUPO_MAXIMO INT)
IS
LN_CUPO_MINIMO NUMBER(5);
LN_CUPO_OCUPADO NUMBER(5);
--LAS CONDICIONES PARA ANULACION DE UNA MATERIA DE UN PARALELO
--SON QUE NO TENGA ALUMNOS INSCRITOS
--O QUE EL NUMERO DE ESTOS NO SUPERE EL MINIMO PERMITIDO
BEGIN
IF PV_OPCION='ANULACION' THEN
--SI EXISTE ALGUNA NOTA DEL PRIEMR PARCIAL EN EL PARALELO EN UNA MATERIA NO SE PUEDE ANULAR
IF GET_NOTA_1_GENERAL(PN_ID_PERIODO_LECTIVO,PN_ID_MATERIA,PN_ID_PARALELO) =0 THEN
IF LN_CUPO_OCUPADO<LN_CUPO_MINIMO THEN
UPDATE PARALELO_MATERIA
SET
ID_ESTADO=3,FECHA_MODIFICACION=CURRENT_DATE,USUARIO_MODIFICACION=PV_USUARIO,OBSERVACION=PV_OB
SERVACION
WHERE ID_MATERIA=PN_ID_MATERIA AND ID_PARALELO=PN_ID_PARALELO
AND ID_ESTADO=1;
UPDATE INSCRIPCION_DETALLE
SET ID_ESTADO = 3
WHERE ID_ESTADO=1 AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND ID_PARALELO=PN_ID_PARALELO
AND ID_MATERIA=PN_ID_MATERIA;
PV_RESPUESTA:='SI SE HA GRABADO CON ÉXITO';
ELSE--NO SE PUEDE ANULARE DEBUDO A QUE YA HA SUPERADO EL CUPO OCUPADO AL CUPO MINIMO
PV_RESPUESTA:='NO SE PUEDE ANULAR DEBIDO A QUE SE HA DETECTADO QUE EL CUPO OCUPADO ES: ' ||
LN_CUPO_OCUPADO || 'SIENDO MAYOR AL CUPO MINIMO DE: ' ||LN_CUPO_MINIMO;
END IF;
ELSE--ES CUANDO YA EXISTE NOTA PERIODO LECTIVA ACTUAL
PV_RESPUESTA:='NO SE PUEDE ELIMINAR DEBIDO A QUE TIENE NOTA ACTUAL EN EL PARALELO: '||
GET_NOMBRE_PARALELO(PN_ID_PARALELO) || ' CON LA MATERIA : ' || GET_NOMBRE_MATERIA(PN_ID_MATERIA);
END IF;--SI
ELSIF PV_OPCION='MODIFICACION' THEN
UPDATE PARALELO_MATERIA
SET CUPO_MINIMO=PN_CUPO_MINIMO,CUPO_MAXIMO=PN_CUPO_MAXIMO,CUPO_DISPONIBLE=PN_CUPO_MAXIMO -
CUPO_OCUPADO,FECHA_MODIFICACION=CURRENT_DATE,USUARIO_MODIFICACION=PV_USUARIO,OBSERVACION=PV_
OBSERVACION
WHERE ID_MATERIA=PN_ID_MATERIA AND ID_PARALELO=PN_ID_PARALELO
AND ID_ESTADO=1;
PV_RESPUESTA:='SI SE HA ACTUALIZADO EXITOSAMENTE LOS CUPOS DE LA/S MATERIA/S EN EL PARALELO: ' ||
GET_NOMBRE_PARALELO(PN_ID_PARALELO);
END IF;
EXCEPTION
WHEN OTHERS THEN
PV_RESPUESTA:=SQLERRM;
END PR_MODIF_PARALELO_MATERIA;
-----------------------------------
----------------GET_NOTA_1 DE UN ALUMNO
FUNCTION GET_NOTA_1_ALUMNO(PN_ID_ALUMNO INT,PN_ID_PERIODO_LECTIVO INT,PN_ID_MATERIA
INT,PN_ID_PARALELO INT)RETURN NUMBER
IS
LN_NOTA1 NUMBER(10,2);
BEGIN
SELECT NVL(N.NOTA_PARCIAL1,0)NOTA_1 INTO LN_NOTA1
FROM NOTAS N
WHERE N.ID_ESTADO<>3 AND N.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
115
----------------------
----------------GET_NOTA_1 DE UN ALUMNO
FUNCTION GET_NOTA_1_GENERAL(PN_ID_PERIODO_LECTIVO INT,PN_ID_MATERIA INT,PN_ID_PARALELO INT)RETURN
NUMBER
IS
LN_CUENTA_NOTA1 NUMBER(10,2);
BEGIN
SELECT COUNT(*) INTO LN_CUENTA_NOTA1
FROM NOTAS N
WHERE N.ID_ESTADO<>3 AND N.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND N.ID_MATERIA=PN_ID_MATERIA
AND N.ID_PARALELO=PN_ID_PARALELO
AND NVL(N.NOTA_PARCIAL1,0)>0;
RETURN NVL(LN_CUENTA_NOTA1,0);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END GET_NOTA_1_GENERAL;
----------------------
--*- -*GET_PARAMETRO
RETURN NVL(LN_VALOR,0);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
BEGIN
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(SQLERRM);
END GET_PARALELOS_REGISTRADOS;
-----------
BEGIN
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(SQLERRM);
END GET_PARALELO_REG_SIN_MATERIAS;
-----------
BEGIN
SELECT COUNT(*) INTO CUENTA_PERIODOS
FROM PERIODO_LECTIVO
WHERE ID_ESTADO=1;
IF CUENTA_PERIODOS=1 THEN
SELECT ID_PERIODO_LECTIVO,ANIO,CICLO INTO PN_ID_PERIODO_lECTIVO,
PV_ANIO_PERIODO,PV_CICLO_PERIODO
FROM PERIODO_LECTIVO
WHERE ID_ESTADO=1;
ELSIF CUENTA_PERIODOS=0 THEN
PN_ID_PERIODO_lECTIVO:=0;
PV_ANIO_PERIODO:=0;
PV_CICLO_PERIODO:=0;
ELSE
PN_ID_PERIODO_lECTIVO:=-1;
PV_ANIO_PERIODO:=-1;
PV_CICLO_PERIODO:=-1;
END IF;
END GET_PERIODO_LECTIVO_VIGENTE;
------------------------------------------------------------------
PROCEDURE GET_MALLA(REG_MALLA OUT MALLA_TYPE,NUM_REGISTROS OUT INT)IS
LE_ERROR EXCEPTION;
i BINARY_INTEGER := 0;
BEGIN
END LOOP;
EXCEPTION
WHEN OTHERS THEN
NULL;
END GET_MALLA;
IF LN_NUM_MATERIA_EN_PERIODO=0 THEN
INSERT INTO PERIODO_MATERIA(ID_PERIODO_MATERIA,ID_MATERIA,ID_PERIODO_LECTIVO,ID_ESTADO)
117
VALUES(LN_ID_PERIODO_MATERIA,PN_ID_MATERIA,PN_ID_PERIODO_LECTIVO,PN_ID_ESTADO);
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(SQLERRM);
END INSERTA_PERIODO_MATERIA;
-----------------------------------------------------------------------
--------------GET_NOMBRE_PARALELO
FUNCTION GET_NOMBRE_PARALELO(PN_ID_PARALELO INT) RETURN VARCHAR2
IS
LV_NOMBRE_PARARLELO VARCHAR2(50);
BEGIN
RETURN LV_NOMBRE_PARARLELO;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
end if;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
SELECT DISTINCT
B.ID_MATERIA,C.CODIGO_MATERIA,C.DESCRIPCION,A.CUPO_MINIMO,A.CUPO_MAXIMO,A.CUPO_OCUPADO,A.CUPO_DIS
PONIBLE
FROM PARALELO_MATERIA A,MALLA_DETALLE B,MATERIA C
WHERE A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_MATERIA=B.ID_MATERIA AND B.ID_MATERIA=C.ID_MATERIA AND
B.ID_SEMESTRE=PN_ID_SEMESTRE
AND C.ID_TIPO_MATERIA IN (4,5)AND A.ID_PARALELO=PN_ID_PARALELO
ORDER BY C.CODIGO_MATERIA;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
------------------------------------------------------
---------------------------------------------------------
--EXTRAE SOLO LOS NIVELES/SEMESTRES DE LOS PARALELOS CREADOSA EN EL PERIODO LECTIVO VIGENTE
PROCEDURE GET_SEMESTRES_PARALELOS(PN_ID_PERIODO_LECTIVO IN NUMBER,PC_SEMESTRES_PARALELOS IN
OUT r_cursor)IS
BEGIN
OPEN PC_SEMESTRES_PARALELOS FOR
SELECT DISTINCT B.SEMESTRE
FROM PARALELO A,PARALELO_DESCRIPCION B
WHERE A.DESCRIPCION=B.DESCRIPCION
AND A.ID_ESTADO=1 AND A.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
ORDER BY B.SEMESTRE;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
PROCEDURE EJECUTAR_TRANSACCION IS
BEGIN
COMMIT;
120
END;
PROCEDURE DESHACER_TRANSACCION IS
BEGIN
ROLLBACK;
END;
----------------------------------------------------------
----PARA PANTALLA DE INSCRIPCIUON LO SIGUIENTE
-----------------------------------------------------------
PROCEDURE GET_ALUMNOS(PV_OPCION VARCHAR2,PN_CEDULA VARCHAR2,PV_COD_ESTUDIANTIL
VARCHAR2,PV_APE_PATERNO VARCHAR2,PV_APE_MATERNO VARCHAR2,PV_PRIMER_NOMBRE
VARCHAR2,PV_SEG_NOMBRE VARCHAR2,PC_ALUMNOS OUT r_cursor)IS
BEGIN
IF PV_OPCION='TODOS' THEN
OPEN PC_ALUMNOS FOR
SELECT A.ID_ALUMNO,B.CEDULA,A.CODIGO_ESTUDIANTIL,B.APELLIDO_PATERNO || ' ' || B.APELLIDO_MATERNO || ' ' ||
B.PRIMER_NOMBRE || ' ' || B.SEGUNDO_NOMBRE,C.DESCRIPCION
FROM ALUMNO A,PERSONA B,ALUMNO_CATEGORIA C
WHERE A.ID_PERSONA=B.ID_PERSONA AND A.ID_ALUMNO_CATEGORIA=C.ID_ALUMNO_CATEGORIA
AND A.ID_ESTADO=1
ORDER BY B.APELLIDO_PATERNO || ' ' || B.APELLIDO_MATERNO || ' ' || B.PRIMER_NOMBRE || ' ' || B.SEGUNDO_NOMBRE
;
ELSIF PV_OPCION='CEDULA' THEN--POR C.I.
OPEN PC_ALUMNOS FOR
SELECT A.ID_ALUMNO,B.CEDULA,A.CODIGO_ESTUDIANTIL,B.APELLIDO_PATERNO || ' ' || B.APELLIDO_MATERNO || ' ' ||
B.PRIMER_NOMBRE || ' ' || B.SEGUNDO_NOMBRE,C.DESCRIPCION
FROM ALUMNO A,PERSONA B,ALUMNO_CATEGORIA C
WHERE A.ID_PERSONA=B.ID_PERSONA AND A.ID_ALUMNO_CATEGORIA=C.ID_ALUMNO_CATEGORIA
AND A.ID_ESTADO=1 AND B.CEDULA LIKE TRIM(PN_CEDULA) || '%'
ORDER BY B.APELLIDO_PATERNO || ' ' || B.APELLIDO_MATERNO || ' ' || B.PRIMER_NOMBRE || ' ' || B.SEGUNDO_NOMBRE
;
ELSIF PV_OPCION='CODIGO' THEN--POR CODIGO ESTUDIANTIL
OPEN PC_ALUMNOS FOR
SELECT A.ID_ALUMNO,B.CEDULA,A.CODIGO_ESTUDIANTIL,B.APELLIDO_PATERNO || ' ' || B.APELLIDO_MATERNO || ' ' ||
B.PRIMER_NOMBRE || ' ' || B.SEGUNDO_NOMBRE,C.DESCRIPCION
FROM ALUMNO A,PERSONA B,ALUMNO_CATEGORIA C
WHERE A.ID_PERSONA=B.ID_PERSONA AND A.ID_ALUMNO_CATEGORIA=C.ID_ALUMNO_CATEGORIA
AND A.ID_ESTADO=1 AND A.CODIGO_ESTUDIANTIL LIKE '%' || PV_COD_ESTUDIANTIL || '%'
ORDER BY B.APELLIDO_PATERNO || ' ' || B.APELLIDO_MATERNO || ' ' || B.PRIMER_NOMBRE || ' ' || B.SEGUNDO_NOMBRE
;
ELSIF PV_OPCION='NOMBRES' THEN--POR NOMBRES
ORDER BY NVL(B.APELLIDO_PATERNO,'') || ' ' || NVL(B.APELLIDO_MATERNO,'') || ' ' || NVL(B.PRIMER_NOMBRE,'') || ' ' ||
NVL(B.SEGUNDO_NOMBRE,'')
;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END GET_ALUMNOS;
--END;
121
SELECT * FROM
(
SELECT MD.ID_MATERIA,M.CODIGO_MATERIA,M.DESCRIPCION
NOMBRE_MATERIA,get_vez_tomada_materia(PN_ID_ALUMNO,MD.ID_MATERIA,PN_ID_PERIODO_LECTIVO)VEZ_TOMADA
FROM MALLA_DETALLE MD,MATERIA M
WHERE MD.ID_ESTADO=1-- AND ID_TIPO_REQUISITO=1
--LO SIG ES PARA NO MOSTRAR MATERIA OPTATIVAS O ELECTIVAS
AND MD.ID_MATERIA=M.ID_MATERIA AND M.ID_TIPO_MATERIA IN(0,1,2,3)
--CON TABLA NOTAS
AND
((MD.ID_MATERIA_REQUISITO IN (SELECT DISTINCT ID_MATERIA
FROM NOTAS
WHERE ID_ESTADO=14 AND ID_ALUMNO=PN_ID_ALUMNO AND (NVL(NOTA_PROMEDIO,0)>=7 OR
NVL(NOTA_GRACIA,0)>=7)AND ((ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND
TRIM(TIPO_NOTA)='SEM')OR TRIM(TIPO_NOTA) IN('HOM','GRA')))
AND MD.ID_MATERIA NOT IN(SELECT DISTINCT ID_MATERIA
FROM MALLA_DETALLE
WHERE ID_ESTADO=1 AND ID_TIPO_REQUISITO=1 AND ID_MATERIA=MD.ID_MATERIA
AND ID_MATERIA_REQUISITO NOT IN(SELECT DISTINCT ID_MATERIA
FROM NOTAS
WHERE ID_ESTADO=14 AND ID_ALUMNO=PN_ID_ALUMNO
AND (NVL(NOTA_PROMEDIO,0)>=7 OR
NVL(NOTA_GRACIA,0)>=7)AND ((ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO
AND TRIM(TIPO_NOTA)='SEM')OR TRIM(TIPO_NOTA) IN('HOM','GRA')))
)
-- AHORA CON TABLA HISTORIAL_NOTAS
OR
(
ID_MATERIA_REQUISITO IN (SELECT DISTINCT ID_MATERIA
FROM HISTORIAL_NOTAS
WHERE ID_ESTADO=1 AND ID_ALUMNO=PN_ID_ALUMNO AND (NVL(PROMEDIO,0)>=7 OR
NVL(EX_GRACIA,0)>=7)AND NVL(ID_MATERIA,0)<>0)
AND MD.ID_MATERIA NOT IN(SELECT DISTINCT ID_MATERIA
FROM MALLA_DETALLE
WHERE ID_ESTADO=1 AND ID_TIPO_REQUISITO=1 AND ID_MATERIA=MD.ID_MATERIA
AND ID_MATERIA_REQUISITO NOT IN(SELECT DISTINCT ID_MATERIA
FROM HISTORIAL_NOTAS
WHERE ID_ESTADO=1 AND ID_ALUMNO=PN_ID_ALUMNO
AND (NVL(PROMEDIO,0)>=7 OR
NVL(EX_GRACIA,0)>=7)AND NVL(ID_MATERIA,0)<>0)
)
))
FROM NOTAS
WHERE ID_ESTADO=14 AND ID_ALUMNO=PN_ID_ALUMNO
AND (NVL(NOTA_PROMEDIO,0)>=7 OR
NVL(NOTA_GRACIA,0)>=7)AND NVL(ID_MATERIA,0)<>0
AND ((ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND TRIM(TIPO_NOTA)='SEM')OR
TRIM(TIPO_NOTA) IN('HOM','GRA'))
)
--HASTA AQUI AUMENTADO 15/05/2009 12:56 PM
--******************** AUMENTADO EL 9 DE JUNIO 09
-----
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM MATERIA_EQUIVALENTE
WHERE ID_MATERIA_EQUIVALE IN
(SELECT DISTINCT ID_MATERIA
FROM HISTORIAL_NOTAS
WHERE ID_ESTADO=1 AND ID_ALUMNO=PN_ID_ALUMNO
AND (NVL(PROMEDIO,0)>=7 OR
NVL(EX_GRACIA,0)>=7)AND NVL(ID_MATERIA,0)<>0
)
AND ID_ESTADO=1
)
/*
AND MD.ID_MATERIA IN (SELECT MDET.ID_MATERIA
FROM MALLA_DETALLE MDET
WHERE MDET.ID_PENSUM_MALLA IN (select distinct(id_pensum_malla)
from malla_detalle
where id_semestre=GET_NIVEL_MATERIA(MD.ID_MATERIA) and id_materia in (select id_materia
from periodo_materia where id_periodo_lectivo=PN_ID_PERIODO_LECTIVO and id_estado=1)
)
AND MDET.ID_SEMESTRE=GET_NIVEL_MATERIA(MD.ID_MATERIA)
AND MDET.ID_ESTADO=1
) */
--******************** HASTA AQUI AUMENTADO EL 9 DE JUNIO 09
UNION
--2--USANDO TABLA DE MATERIAS EQUIVALENTES
SELECT MD.ID_MATERIA,M.CODIGO_MATERIA,M.DESCRIPCION
NOMBRE_MATERIA,get_vez_tomada_materia(PN_ID_ALUMNO,MD.ID_MATERIA,PN_ID_PERIODO_LECTIVO)VEZ_TOMADA
FROM MALLA_DETALLE MD,MATERIA M
WHERE MD.ID_ESTADO=1-- AND ID_TIPO_REQUISITO=1
AND MD.ID_MATERIA=M.ID_MATERIA AND M.ID_TIPO_MATERIA IN(0,1,2,3)
--CON TABLA NOTAS
AND
((ID_MATERIA_REQUISITO IN (SELECT DISTINCT ME.ID_MATERIA
FROM NOTAS N,MATERIA_EQUIVALENTE ME
WHERE N.ID_ESTADO=14 AND ME.ID_ESTADO=1 AND ID_ALUMNO=PN_ID_ALUMNO AND
(NVL(NOTA_PROMEDIO,0)>=7 OR NVL(NOTA_GRACIA,0)>=7)AND
N.ID_MATERIA=ME.ID_MATERIA_EQUIVALE
--AUMENTADO EL 28/05/2009 PARA QUE NO SE MUESTREN LAS MATERIAS VISTAS PERIODO_LECTIVO
VIGENTE COMO
--PREREQUISITOS
AND ((N.ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND TRIM(N.TIPO_NOTA)='SEM')OR
TRIM(N.TIPO_NOTA) IN('HOM','GRA'))
)
AND MD.ID_MATERIA NOT IN(SELECT DISTINCT ID_MATERIA
FROM MALLA_DETALLE
WHERE ID_ESTADO=1 AND ID_TIPO_REQUISITO=1 AND ID_MATERIA=MD.ID_MATERIA
AND ID_MATERIA_REQUISITO NOT IN(SELECT DISTINCT ME.ID_MATERIA
FROM NOTAS N,MATERIA_EQUIVALENTE ME
WHERE N.ID_ESTADO=14 AND ME.ID_ESTADO=1 AND ID_ALUMNO=PN_ID_ALUMNO AND
(NVL(NOTA_PROMEDIO,0)>=7 OR NVL(NOTA_GRACIA,0)>=7)AND
N.ID_MATERIA=ME.ID_MATERIA_EQUIVALE
--AUMENTADO EL 28/05/2009 PARA QUE NO SE MUESTREN LAS MATERIAS VISTAS
PERIODO_LECTIVO VIGENTE COMO
--PREREQUISITOS
AND ((N.ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND
TRIM(N.TIPO_NOTA)='SEM')OR TRIM(N.TIPO_NOTA) IN('HOM','GRA'))
)
)
)
-- AHORA CON TABLA HISTORIAL_NOTAS
OR
(
ID_MATERIA_REQUISITO IN (SELECT DISTINCT ME.ID_MATERIA
FROM HISTORIAL_NOTAS HN,MATERIA_EQUIVALENTE ME
123
AND MDET.ID_ESTADO=1
) */
SELECT MD.ID_MATERIA,M.CODIGO_MATERIA,M.DESCRIPCION
NOMBRE_MATERIA,get_vez_tomada_materia(PN_ID_ALUMNO,MD.ID_MATERIA,PN_ID_PERIODO_LECTIVO)VEZ_TOMADA
FROM MALLA_DETALLE MD,MATERIA M
WHERE MD.ID_TIPO_REQUISITO=0 AND
MD.ID_SEMESTRE<=get_nivel_alumno(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)+1
--LO SIG ES PARA NO MOSTRAR LAS MATERIAS OPTATIVAS O ELECTIVAS
AND MD.ID_MATERIA=M.ID_MATERIA AND M.ID_TIPO_MATERIA IN(0,1,2,3)
--LO SIG . ES SOLO PARA MOSTRAR LAS MATERIAS QUE ESTEN ACTIVAS EN PERIODO_MATERIA
AND MD.ID_MATERIA IN (SELECT ID_MATERIA FROM PERIODO_MATERIA WHERE
ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND ID_ESTADO=1)
--LO SIG VERIFICA QUE NO ESTEN APROBADAS EN TABLA NOTAS
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM NOTAS WHERE ID_ESTADO=14 AND
ID_ALUMNO=PN_ID_ALUMNO AND (NOTA_PROMEDIO>=7 OR
NOTA_GRACIA>=7)
--AUMENTADO EL 28/05/2009 PARA QUE NO SE MUESTREN LAS MATERIAS VISTAS PERIODO_LECTIVO
VIGENTE COMO
--PREREQUISITOS
AND ((ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND TRIM(TIPO_NOTA)='SEM')OR
TRIM(TIPO_NOTA) IN('HOM','GRA'))
)
--LO SIG VERIFICA QUE NO ESTEN APROBADAS EN TABLA HISTORIAL_NOTAS
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM HISTORIAL_NOTAS WHERE ID_ESTADO=1 AND
ID_ALUMNO=PN_ID_ALUMNO AND (PROMEDIO>=7 OR
EX_GRACIA>=7)AND NVL(ID_MATERIA,0)<>0
)
--LO SIG. ES PARA EVITAR MOSTRAR MATERIAS INSCRITAS EN PERIODO_LECTIVO VIGENTE
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA
FROM INSCRIPCION I,INSCRIPCION_DETALLE ID
WHERE I.ID_INSCRIPCION=ID.ID_INSCRIPCION AND ID.ID_ESTADO=1
AND ID_ALUMNO=PN_ID_ALUMNO AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO)
--LO SIG. EVITA QUE SE MEUSTREN MATERIAS CON OTROS REQUISITOS
AND NVL(MD.CREDITOS_REQUERIDOS,0)=0 AND NVL(MD.NIVELES_REQUERIDOS,0)=0 AND
NVL(MD.MATERIAS_REQUERIDAS,0)=0
from malla_detalle
where id_semestre=GET_NIVEL_MATERIA(MD.ID_MATERIA) and id_materia in (select id_materia
from periodo_materia where id_periodo_lectivo=PN_ID_PERIODO_LECTIVO and id_estado=1)
)
AND MDET.ID_SEMESTRE=GET_NIVEL_MATERIA(MD.ID_MATERIA)
AND MDET.ID_ESTADO=1
)
*/
--******************** HASTA AQUI AUMENTADO EL 9 DE JUNIO 09
--4------
UNION
SELECT MD.ID_MATERIA,M.CODIGO_MATERIA,M.DESCRIPCION
NOMBRE_MATERIA,get_vez_tomada_materia(PN_ID_ALUMNO,MD.ID_MATERIA,PN_ID_PERIODO_LECTIVO)VEZ_TOMADA
FROM MALLA_DETALLE MD,MATERIA M
WHERE MD.ID_TIPO_REQUISITO=0 AND MD.ID_SEMESTRE<=get_nivel_alumno(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO
)+1
--LO SIG ES PARA NO MOSTRAR LAS MATERIAS OPTATIVAS O ELECTIVAS
AND MD.ID_MATERIA=M.ID_MATERIA AND M.ID_TIPO_MATERIA IN(0,1,2,3)
--LO SIG . ES SOLO PARA MOSTRAR LAS MATERIAS QUE ESTEN ACTIVAS EN PERIODO_MATERIA
AND MD.ID_MATERIA IN (SELECT ID_MATERIA FROM PERIODO_MATERIA WHERE
ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND ID_ESTADO=1)
--LO SIG VERIFICA QUE NO ESTEN APROBADAS EN TABLA NOTAS
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM NOTAS WHERE ID_ESTADO=14 AND
ID_ALUMNO=PN_ID_ALUMNO AND (NOTA_PROMEDIO>=7 OR
NOTA_GRACIA>=7)
--AUMENTADO EL 28/05/2009 PARA QUE NO SE MUESTREN LAS MATERIAS VISTAS PERIODO_LECTIVO
VIGENTE COMO
--PREREQUISITOS
AND ((ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND TRIM(TIPO_NOTA)='SEM')OR
TRIM(TIPO_NOTA) IN('HOM','GRA'))
)
--LO SIG VERIFICA QUE NO ESTEN APROBADAS EN TABLA HISTORIAL_NOTAS
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM HISTORIAL_NOTAS WHERE ID_ESTADO=1 AND
ID_ALUMNO=PN_ID_ALUMNO AND (PROMEDIO>=7 OR
EX_GRACIA>=7)AND NVL(ID_MATERIA,0)<>0
)
--LO SIG. ES PARA EVITAR MOSTRAR MATERIAS INSCRITAS EN PERIODO_LECTIVO VIGENTE
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA
FROM INSCRIPCION I,INSCRIPCION_DETALLE ID
WHERE I.ID_INSCRIPCION=ID.ID_INSCRIPCION AND ID.ID_ESTADO=1
AND ID_ALUMNO=PN_ID_ALUMNO AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO)
--LO SIG. ES PARA MOSTRAR SOLO LAS MATERIAS QUE HAYAN SIDO CUMPLIDOS LOS CREDITOS REQUERIDOS
AND GET_NUMERO_CREDITOS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)>=NVL(MD.CREDITOS_REQUERIDOS,0)
AND NVL(MD.CREDITOS_REQUERIDOS,0)>0
AND ID_ESTADO=1
)
/*
AND MD.ID_MATERIA IN (SELECT MDET.ID_MATERIA
FROM MALLA_DETALLE MDET
WHERE MDET.ID_PENSUM_MALLA IN (select distinct(id_pensum_malla)
from malla_detalle
where id_semestre=GET_NIVEL_MATERIA(MD.ID_MATERIA) and id_materia in (select id_materia
from periodo_materia where id_periodo_lectivo=PN_ID_PERIODO_LECTIVO and id_estado=1)
)
AND MDET.ID_SEMESTRE=GET_NIVEL_MATERIA(MD.ID_MATERIA)
AND MDET.ID_ESTADO=1
) */
-----
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM MATERIA_EQUIVALENTE
WHERE ID_MATERIA_EQUIVALE IN
(SELECT DISTINCT ID_MATERIA
FROM HISTORIAL_NOTAS
WHERE ID_ESTADO=1 AND ID_ALUMNO=PN_ID_ALUMNO
AND (NVL(PROMEDIO,0)>=7 OR
NVL(EX_GRACIA,0)>=7)AND NVL(ID_MATERIA,0)<>0
)
AND ID_ESTADO=1
)
/*
AND MD.ID_MATERIA IN (SELECT MDET.ID_MATERIA
FROM MALLA_DETALLE MDET
WHERE MDET.ID_PENSUM_MALLA IN (select distinct(id_pensum_malla)
from malla_detalle
where id_semestre=GET_NIVEL_MATERIA(MD.ID_MATERIA) and id_materia in (select id_materia
from periodo_materia where id_periodo_lectivo=PN_ID_PERIODO_LECTIVO and id_estado=1)
)
AND MDET.ID_SEMESTRE=GET_NIVEL_MATERIA(MD.ID_MATERIA)
AND MDET.ID_ESTADO=1
) */
)
--------------
WHERE ID_MATERIA NOT IN (
--
)
--PARA NO MOSTRAR MATERIAS YA APROBADAS ESPECIALMENTE D ELA MALLA NUEVA
AND ID_MATERIA NOT IN (SELECT ID_MATERIA FROM MATERIA_EQUIVALENTE WHERE ID_MATERIA_EQUIVALE IN
(SELECT ID_MATERIA FROM HISTORIAL_NOTAS WHERE ID_ESTADO=1 AND ID_ALUMNO=PN_ID_ALUMNO AND
(PROMEDIO>=7 OR EX_GRACIA>=7)))
------MODFI
--******************** HASTA AQUI AUMENTADO EL 9 DE JUNIO 09
;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END GET_MATERIAS_INSCRIPCION;
-------------------
128
---------------GET_TIPO_MATERIA
FUNCTION GET_TIPO_MATERIA(PN_ID_MATERIA INT)RETURN VARCHAR2
IS
LV_TIPO_MATERIA VARCHAR2(50);
BEGIN
SELECT UPPER(TRIM(NVL(B.DESCRIPCION,' ')))INTO LV_TIPO_MATERIA
FROM MATERIA A,TIPO_MATERIA B
WHERE A.ID_TIPO_MATERIA=B.ID_TIPO_MATERIA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_MATERIA=PN_ID_MATERIA;
RETURN LV_TIPO_MATERIA;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
---PARA EXTRAER TODOS LOS PARALELOS QUE HAYAN SIDO REGISTRADOS UNA MATERIA
--CUYO CUPO DISPONIBLE >0
PROCEDURE GET_PARALELOS_MATERIA(PV_OPCION VARCHAR2,PN_ID_PERIODO_LECTIVO NUMBER,PN_ID_MATERIA
NUMBER,PC_PARALELOS_MATERIA OUT r_cursor)
IS
BEGIN
IF PV_OPCION='POR MATERIA' THEN
OPEN PC_PARALELOS_MATERIA FOR
SELECT a.id_paralelo,b.descripcion,B.ID_SECCION
FROM PARALELO_MATERIA A,PARALELO B
WHERE A.ID_ESTADO=1 AND A.ID_PARALELO=B.ID_PARALELO
AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND B.ID_ESTADO=1
AND A.ID_MATERIA=PN_ID_MATERIA AND A.CUPO_DISPONIBLE>0;
ELSIF PV_OPCION='TODOS' THEN
OPEN PC_PARALELOS_MATERIA FOR
SELECT DISTINCT a.id_paralelo,b.descripcion--,B.ID_SECCION
FROM PARALELO_MATERIA A,PARALELO B,PARALELO_DESCRIPCION C
WHERE A.ID_ESTADO=1 AND A.ID_PARALELO=B.ID_PARALELO
AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND B.ID_ESTADO=1
AND B.DESCRIPCION=C.DESCRIPCION
AND C.SEMESTRE=PN_ID_MATERIA
AND C.ID_ESTADO=1
ORDER BY b.descripcion
;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END GET_PARALELOS_MATERIA;
----------------------------------------------------------
----------------------------------------------------------
PROCEDURE PR_INSCRIBIR(PN_ID_INSCRIPCION OUT NUMBER,PN_ID_ALUMNO NUMBER,PN_ID_EMPLEADO
NUMBER,PN_ID_ESTADO NUMBER,PV_RESULTADO OUT VARCHAR2,PV_USUARIO_INSCRIBE VARCHAR2)IS
LN_ID_INSCRIPCION NUMBER(5);
BEGIN
SELECT NVL(MAX(ID_INSCRIPCION),0)+1 INTO LN_ID_INSCRIPCION
FROM INSCRIPCION;
--IF FUN_FUE_ALUMNO_INSCRITO(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)=FALSE OR
FUN_FUE_ALUMNO_INSCRITO_GRACIA
(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO,PN_ID_MATERIA,LV_RESPUESTA)=FALSE THEN
INSERT INTO
INSCRIPCION(ID_INSCRIPCION,ID_ALUMNO,FECHA_INSCRIPCION,HORA_INSCRIPCION,ID_EMPLEADO_INSCRIBE,ID_EST
ADO,USUARIO_INSCRIBE)
VALUES(LN_ID_INSCRIPCION,PN_ID_ALUMNO,CURRENT_DATE,CURRENT_DATE,PN_ID_EMPLEADO,PN_ID_ESTADO,PV_
USUARIO_INSCRIBE);
--END IF;
PN_ID_INSCRIPCION:=LN_ID_INSCRIPCION;
PV_RESULTADO:='GRABACIÓN EXITOSA';
EXCEPTION
WHEN OTHERS THEN
PV_RESULTADO:=SQLERRM;
END PR_INSCRIBIR;
129
------------------------------PR_INSCRIBE_DETALLE
PROCEDURE PR_INSCRIBE_DETALLE(PN_ID_INSCRIPCION NUMBER,PN_PERIODO_LECTIVO NUMBER,PN_PARALELO
NUMBER,PN_MATERIA NUMBER,PN_VEZ_TOMADA NUMBER,PN_ID_ESTADO NUMBER,PV_USUARIO
VARCHAR2,PV_OBSERVACION VARCHAR2,PV_RESULTADO OUT VARCHAR2,PN_ID_ALUMNO INT)
IS
LN_ID_PARALELO_MATERIA INT;
LN_CUPO_DISPONIBLE INT;
--PARA ASIGNARLE EL VALOR DE LA INSCRIPCION
LN_ID_INSCRIPCION INT;
LV_OBSERVACION VARCHAR2(100);
LV_TIPO_INSCRIPCION VARCHAR2(100);
--
LN_PAR_MAT_REP NUMBER(5);
LE_ERROR EXCEPTION;
BEGIN
LV_TIPO_INSCRIPCION:=UPPER(TRIM(SUBSTR(PV_OBSERVACION,1,INSTR(PV_OBSERVACION,'-',1,1)-1)));
END IF;
------------------------------
IF SUBSTR(PV_RESULTADO,1,2)='NO' OR SUBSTR(PV_RESULTADO,1,3)='ORA' THEN
RAISE LE_ERROR;
END IF;
LN_ID_PARALELO_MATERIA:=GET_PARALELO_MATERIA(PN_PARALELO,PN_MATERIA);
--ACTUALIZA CUPOS
IF NVL(LN_ID_PARALELO_MATERIA,0)<>0 THEN
PR_ACTUALIZA_CUPOS(LN_ID_PARALELO_MATERIA,LN_CUPO_DISPONIBLE);
ELSE
LN_CUPO_DISPONIBLE:=1;--ESTE 1 SOLO SIRVE EN EL CASO DE QUE SEA EXAMENES DE GRACIA
END IF;
IF LN_CUPO_DISPONIBLE>=0 THEN
SELECT COUNT(*)INTO LN_PAR_MAT_REP
FROM INSCRIPCION_DETALLE
WHERE ID_INSCRIPCION=LN_ID_INSCRIPCION AND ID_ESTADO=1
AND ID_PERIODO_LECTIVO=PN_PERIODO_LECTIVO
AND ID_MATERIA=PN_MATERIA;
--------------------------------------------------------
130
--------------------------------------------------------
IF LN_PAR_MAT_REP>0 THEN
PV_RESULTADO:='NO SE PUEDE GRABAR MATERIA: ' ||GET_NOMBRE_MATERIA(PN_MATERIA) || ' EN PARALELO: ' ||
GET_NOMBRE_PARALELO(PN_PARALELO) || ' , DEBIDO A QUE EL ALUMNO A INSCRIBIR YA HA GRABADO ESTA MATERIA
EN OTRO PARALELO';
RAISE LE_ERROR;
END IF;
EXCEPTION
WHEN LE_ERROR THEN
PV_RESULTADO:=PV_RESULTADO;
WHEN OTHERS THEN
PV_RESULTADO:=SQLERRM;
END PR_INSCRIBE_DETALLE;
--------------FUN_TIPO_MATRICULA---------------------
FUNCTION FUN_TIPO_MATRICULA RETURN VARCHAR2 IS
--LN_FECHA_DESDE DATE;
--LN_FECHA_HASTA DATE;
--MODIFICADO 16 DE JUNIO DEL 2009
LV_TIPO_INSCRIPCION VARCHAR2(100):=' ';
LN_FECHA_ACTUAL DATE;
CURSOR CUR IS
SELECT FECHA_DESDE,FECHA_HASTA,TIPO_INSCRIPCION
FROM PERIODO_INSCRIPCION
WHERE ID_ESTADO=1;
BEGIN
END IF;
END LOOP;
IF LV_TIPO_INSCRIPCION=' ' THEN
LV_TIPO_INSCRIPCION:='NO ES TIEMPO DE INSCRIPCION';
END IF;
RETURN LV_TIPO_INSCRIPCION;
/*
SELECT FECHA_DESDE,FECHA_HASTA INTO LN_FECHA_DESDE,LN_FECHA_HASTA
FROM PERIODO_INSCRIPCION
WHERE ID_ESTADO=1 ;
IF TO_DATE(LN_FECHA_ACTUAL,'DD/MM/YYYY')>=TO_DATE(LN_FECHA_DESDE,'DD/MM/YYYY') AND
TO_DATE(LN_FECHA_HASTA,'DD/MM/YYYY')>=TO_DATE(LN_FECHA_ACTUAL,'DD/MM/YYYY') THEN
RETURN 'ORDINARIA';
ELSIF TO_DATE(LN_FECHA_ACTUAL,'DD/MM/YYYY')>TO_DATE(LN_FECHA_HASTA,'DD/MM/YYYY') THEN
RETURN 'EXTRAORDINARIA';
END IF;*/
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END FUN_TIPO_MATRICULA;
--------------------------------------------------------------
---------PR_MATERIAS_OPTATIVAS_DISPONIBLES
PROCEDURE PR_MATERIAS_OPTATIVAS_DISP(PN_ID_ALUMNO INT,PN_ID_PERIODO_LECTIVO
131
--
BEGIN
/*LN_NIVEL_ALUMNO:=get_nivel_alumno(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO);
IF NVL(LN_NIVEL_ALUMNO,0)=0 THEN
LN_NIVEL_ALUMNO:=1;
END IF;*/
OPEN PC_ALUMNO_MATERIAS FOR
/*SELECT DISTINCT
MO.ID_MATERIA,M.CODIGO_MATERIA,get_nombre_materia(MO.ID_MATERIA)nombre_materia,get_vez_tomada_materia(PN_ID_
ALUMNO,MO.id_materia,PN_ID_PERIODO_LECTIVO)vez_tomada
FROM MATERIA_OPTATIVA MO,MATERIA M
WHERE MO.ID_MATERIA_ELECTIVA IN(
SELECT DISTINCT A.ID_MATERIA--
,B.CODIGO_MATERIA,get_nombre_materia(A.ID_MATERIA),get_nombre_materia(A.ID_MATERIA_REQUISITO)
FROM MALLA_DETALLE A,MATERIA B
WHERE A.ID_MATERIA=B.ID_MATERIA
AND B.ID_TIPO_MATERIA IN(6,7) AND A.ID_ESTADO=1
AND B.ID_ESTADO=1 AND A.ID_MATERIA_REQUISITO IN(SELECT ID_MATERIA
FROM HISTORIAL_NOTAS HN
WHERE HN.ID_ALUMNO=PN_ID_ALUMNO AND (PROMEDIO>=7 OR EX_GRACIA>=7) AND
ID_ESTADO=1
)
AND A.ID_MATERIA NOT IN (SELECT ID_MATERIA FROM MALLA_DETALLE WHERE ID_MATERIA=A.ID_MATERIA AND
ID_MATERIA_REQUISITO NOT IN
(SELECT ID_MATERIA
FROM HISTORIAL_NOTAS HN
WHERE HN.ID_ALUMNO=PN_ID_ALUMNO AND (PROMEDIO>=7 OR EX_GRACIA>=7) AND ID_ESTADO=1
)
)
)
AND MO.ID_MATERIA IN (SELECT ID_MATERIA FROM PERIODO_MATERIA WHERE
ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND ID_ESTADO=1)
AND MO.ID_MATERIA NOT IN(SELECT ID.ID_MATERIA FROM INSCRIPCION I,INSCRIPCION_DETALLE ID WHERE
I.ID_INSCRIPCION=ID.ID_INSCRIPCION
AND I.ID_ESTADO=1 AND ID.ID_ESTADO=1 AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND
I.ID_ALUMNO=PN_ID_ALUMNO)
AND MO.ID_MATERIA=M.ID_MATERIA
UNION
--LO SIG . ES PARA MATERIAS ELECTIVAS
SELECT DISTINCT
MD.ID_MATERIA,M.CODIGO_MATERIA,get_nombre_materia(M.ID_MATERIA),get_vez_tomada_materia(PN_ID_ALUMNO,M.ID_M
ATERIA,PN_ID_PERIODO_LECTIVO)VEZ_TOMADA
FROM MALLA_DETALLE MD,MATERIA M
WHERE MD.ID_MATERIA=M.ID_MATERIA
AND M.ID_TIPO_MATERIA IN (4)AND (MD.ID_MATERIA_REQUISITO IN(SELECT ID_MATERIA
FROM HISTORIAL_NOTAS HN
WHERE HN.ID_ESTADO=1 AND HN.ID_ALUMNO=PN_ID_ALUMNO AND
(HN.PROMEDIO>=7 OR HN.EX_GRACIA>=7)
)
OR MD.ID_MATERIA_REQUISITO=0)
AND MD.ID_ESTADO=1 AND M.ID_ESTADO=1
AND MD.ID_MATERIA IN (SELECT ID_MATERIA FROM PERIODO_MATERIA WHERE
ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND ID_ESTADO=1)
AND MD.ID_MATERIA NOT IN(SELECT ID.ID_MATERIA FROM INSCRIPCION I,INSCRIPCION_DETALLE ID WHERE
I.ID_INSCRIPCION=ID.ID_INSCRIPCION
AND I.ID_ESTADO=1 AND ID.ID_ESTADO=1 AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND
I.ID_ALUMNO=PN_ID_ALUMNO)
;*/
--MODIFICADO 10 DE MAYO 2009 14:33
/*COMENTADO 11 DE JUNIO DEL 2009
SELECT DISTINCT
MO.ID_MATERIA,M.CODIGO_MATERIA,get_nombre_materia(MO.ID_MATERIA)nombre_materia,get_vez_tomada_materia(PN_ID_
ALUMNO,MO.id_materia,PN_ID_PERIODO_LECTIVO)vez_tomada
132
WHERE ID_MATERIA_EQUIVALE IN
(SELECT DISTINCT ID_MATERIA
FROM HISTORIAL_NOTAS
WHERE ID_ESTADO=1 AND ID_ALUMNO=PN_ID_ALUMNO
AND (NVL(PROMEDIO,0)>=7 OR
NVL(EX_GRACIA,0)>=7)AND NVL(ID_MATERIA,0)<>0
)
AND ID_ESTADO=1
)
SELECT DISTINCT
MO.ID_MATERIA,M.CODIGO_MATERIA,get_nombre_materia(MO.ID_MATERIA)nombre_materia,get_vez_tomada_materia(PN_ID_
ALUMNO,MO.id_materia,PN_ID_PERIODO_LECTIVO)vez_tomada
FROM MATERIA_OPTATIVA MO,MATERIA M
WHERE MO.ID_MATERIA_ELECTIVA IN(
SELECT DISTINCT A.ID_MATERIA--
,B.CODIGO_MATERIA,get_nombre_materia(A.ID_MATERIA),get_nombre_materia(A.ID_MATERIA_REQUISITO)
FROM MALLA_DETALLE A,MATERIA B
WHERE A.ID_MATERIA=B.ID_MATERIA
AND B.ID_TIPO_MATERIA IN(6,7) AND A.ID_ESTADO=1
AND B.ID_ESTADO=1 AND A.ID_MATERIA_REQUISITO IN(SELECT ID_MATERIA
FROM NOTAS HN
WHERE HN.ID_ALUMNO=PN_ID_ALUMNO AND (HN.NOTA_PROMEDIO>=7
OR HN.NOTA_GRACIA>=7) AND HN.ID_ESTADO=14
--AUMENTADO EL 28/05/2009 PARA QUE NO SE MUESTREN LAS
MATERIAS VISTAS PERIODO_LECTIVO VIGENTE COMO
--PREREQUISITOS
AND HN.ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO
)
AND A.ID_MATERIA NOT IN (SELECT ID_MATERIA FROM MALLA_DETALLE WHERE
ID_MATERIA=A.ID_MATERIA AND ID_MATERIA_REQUISITO NOT IN
(SELECT ID_MATERIA
FROM NOTAS HN
WHERE HN.ID_ALUMNO=PN_ID_ALUMNO AND (HN.NOTA_PROMEDIO>=7 OR HN.NOTA_GRACIA>=7) AND
HN.ID_ESTADO=14
--AUMENTADO EL 28/05/2009 PARA QUE NO SE MUESTREN LAS MATERIAS VISTAS PERIODO_LECTIVO
VIGENTE COMO
--PREREQUISITOS
AND HN.ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO
)
)
)
AND MO.ID_MATERIA IN (SELECT ID_MATERIA FROM PERIODO_MATERIA WHERE
ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND ID_ESTADO=1)
AND MO.ID_MATERIA NOT IN(SELECT ID.ID_MATERIA FROM INSCRIPCION I,INSCRIPCION_DETALLE ID WHERE
I.ID_INSCRIPCION=ID.ID_INSCRIPCION
AND I.ID_ESTADO=1 AND ID.ID_ESTADO=1 AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND
I.ID_ALUMNO=PN_ID_ALUMNO)
AND MO.ID_MATERIA=M.ID_MATERIA
--******************** AUMENTADO EL 9 DE JUNIO 09
-----
AND MO.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM MATERIA_EQUIVALENTE
WHERE ID_MATERIA_EQUIVALE IN
(SELECT DISTINCT ID_MATERIA
FROM HISTORIAL_NOTAS
WHERE ID_ESTADO=1 AND ID_ALUMNO=PN_ID_ALUMNO
AND (NVL(PROMEDIO,0)>=7 OR
NVL(EX_GRACIA,0)>=7)AND NVL(ID_MATERIA,0)<>0
)
AND ID_ESTADO=1
)
134
_NOMBRE_MATERIA(A.ID_MATERIA_REQUISITO)
FROM MALLA_DETALLE A,MATERIA B
WHERE A.ID_MATERIA=B.ID_MATERIA
AND B.ID_TIPO_MATERIA IN(6,7) AND A.ID_ESTADO=1
AND B.ID_ESTADO=1 AND A.ID_MATERIA_REQUISITO IN(SELECT ID_MATERIA
FROM HISTORIAL_NOTAS HN
WHERE HN.ID_ALUMNO=PN_ID_ALUMNO AND (PROMEDIO>=7 OR EX_GRACIA>=7) AND
ID_ESTADO=1
)
AND A.ID_MATERIA NOT IN (SELECT ID_MATERIA FROM MALLA_DETALLE WHERE ID_MATERIA=A.ID_MATERIA AND
ID_MATERIA_REQUISITO NOT IN
(SELECT ID_MATERIA
FROM HISTORIAL_NOTAS HN
WHERE HN.ID_ALUMNO=PN_ID_ALUMNO AND (PROMEDIO>=7 OR EX_GRACIA>=7) AND ID_ESTADO=1
)
)
)
--
AND MO.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM HISTORIAL_NOTAS WHERE ID_ESTADO=1 AND
ID_ALUMNO=PN_ID_ALUMNO AND (PROMEDIO>=7 OR EX_GRACIA>=7))
AND MO.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM MATERIA_EQUIVALENTE WHERE ID_MATERIA_EQUIVALE IN(
SELECT ID_MATERIA FROM HISTORIAL_NOTAS WHERE ID_ESTADO=1 AND ID_ALUMNO=PN_ID_ALUMNO AND
(PROMEDIO>=7 OR EX_GRACIA>=7)))
AND MO.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM NOTAS WHERE ID_ALUMNO=PN_ID_ALUMNO AND
(NOTA_PROMEDIO>=7 OR NOTA_GRACIA>=7)AND ((ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND
TRIM(TIPO_NOTA)='SEM')OR TRIM(TIPO_NOTA) IN('HOM','GRA')) AND ID_ESTADO=14)
AND MO.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM MATERIA_EQUIVALENTE WHERE ID_MATERIA_EQUIVALE IN(
SELECT ID_MATERIA FROM NOTAS WHERE ID_ALUMNO=PN_ID_ALUMNO AND (NOTA_PROMEDIO>=7 OR
NOTA_GRACIA>=7)AND ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND ID_ESTADO=14))
--
AND MO.ID_MATERIA IN (SELECT ID_MATERIA FROM PERIODO_MATERIA WHERE
ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND ID_ESTADO=1)
AND MO.ID_MATERIA NOT IN(SELECT ID.ID_MATERIA FROM INSCRIPCION I,INSCRIPCION_DETALLE ID WHERE
I.ID_INSCRIPCION=ID.ID_INSCRIPCION
AND I.ID_ESTADO=1 AND ID.ID_ESTADO=1 AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND
I.ID_ALUMNO=PN_ID_ALUMNO)
UNION
--LO SIG . ES PARA MATERIAS ELECTIVAS
SELECT DISTINCT
MD.ID_MATERIA,M.CODIGO_MATERIA,PROCESOS_INSCRIPCION.GET_NOMBRE_MATERIA(M.ID_MATERIA),PROCESOS_IN
SCRIPCION.get_vez_tomada_materia(PN_ID_ALUMNO,M.ID_MATERIA,PN_ID_PERIODO_LECTIVO)VEZ_TOMADA
FROM MALLA_DETALLE MD,MATERIA M
WHERE MD.ID_MATERIA=M.ID_MATERIA
AND M.ID_TIPO_MATERIA IN (4)AND (MD.ID_MATERIA_REQUISITO IN(SELECT ID_MATERIA
FROM HISTORIAL_NOTAS HN
WHERE HN.ID_ESTADO=1 AND HN.ID_ALUMNO=PN_ID_ALUMNO AND
(HN.PROMEDIO>=7 OR HN.EX_GRACIA>=7)
)
OR MD.ID_MATERIA_REQUISITO=0)
AND MD.ID_ESTADO=1 AND M.ID_ESTADO=1
AND MD.ID_MATERIA IN (SELECT ID_MATERIA FROM PERIODO_MATERIA WHERE
ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND ID_ESTADO=1)
AND MD.ID_MATERIA NOT IN(SELECT ID.ID_MATERIA FROM INSCRIPCION I,INSCRIPCION_DETALLE ID WHERE
I.ID_INSCRIPCION=ID.ID_INSCRIPCION
AND I.ID_ESTADO=1 AND ID.ID_ESTADO=1 AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND
I.ID_ALUMNO=PN_ID_ALUMNO)
--
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM HISTORIAL_NOTAS WHERE ID_ESTADO=1 AND
ID_ALUMNO=PN_ID_ALUMNO AND (PROMEDIO>=7 OR EX_GRACIA>=7))
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM MATERIA_EQUIVALENTE WHERE ID_MATERIA_EQUIVALE IN(
SELECT ID_MATERIA FROM HISTORIAL_NOTAS WHERE ID_ESTADO=1 AND ID_ALUMNO=PN_ID_ALUMNO AND
(PROMEDIO>=7 OR EX_GRACIA>=7)))
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM NOTAS WHERE ID_ALUMNO=PN_ID_ALUMNO AND
(NOTA_PROMEDIO>=7 OR NOTA_GRACIA>=7)AND ((ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND
TRIM(TIPO_NOTA)='SEM')OR TRIM(TIPO_NOTA) IN('HOM','GRA')) AND ID_ESTADO=14)
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM MATERIA_EQUIVALENTE WHERE ID_MATERIA_EQUIVALE IN(
SELECT ID_MATERIA FROM NOTAS WHERE ID_ALUMNO=PN_ID_ALUMNO AND (NOTA_PROMEDIO>=7 OR
NOTA_GRACIA>=7)AND ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND ID_ESTADO=14))
136
--
UNION--ESTO ES PARA MANEJO DE MATERIAS OPTATIVAS EN TABLA NOTAS
--***********************************
SELECT DISTINCT
MO.ID_MATERIA,M.CODIGO_MATERIA,PROCESOS_INSCRIPCION.GET_NOMBRE_MATERIA(MO.ID_MATERIA)nombre_materi
a,PROCESOS_INSCRIPCION.get_vez_tomada_materia(PN_ID_ALUMNO,MO.id_materia,PN_ID_PERIODO_LECTIVO)vez_tomad
a
FROM MATERIA_OPTATIVA MO,MATERIA M
WHERE MO.ID_MATERIA_ELECTIVA IN(
SELECT DISTINCT A.ID_MATERIA--
,B.CODIGO_MATERIA,PROCESOS_INSCRIPCION.GET_NOMBRE_MATERIA(A.ID_MATERIA),PROCESOS_INSCRIPCION.GET
_NOMBRE_MATERIA(A.ID_MATERIA_REQUISITO)
FROM MALLA_DETALLE A,MATERIA B
WHERE A.ID_MATERIA=B.ID_MATERIA
AND B.ID_TIPO_MATERIA IN(6,7) AND A.ID_ESTADO=1
AND B.ID_ESTADO=1 AND A.ID_MATERIA_REQUISITO IN(SELECT ID_MATERIA
FROM NOTAS HN
WHERE HN.ID_ALUMNO=PN_ID_ALUMNO AND (HN.NOTA_PROMEDIO>=7
OR HN.NOTA_GRACIA>=7) AND HN.ID_ESTADO=14
--AUMENTADO EL 28/05/2009 PARA QUE NO SE MUESTREN LAS
MATERIAS VISTAS PERIODO_LECTIVO VIGENTE COMO
--PREREQUISITOS
AND HN.ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO
)
AND A.ID_MATERIA NOT IN (SELECT ID_MATERIA FROM MALLA_DETALLE WHERE
ID_MATERIA=A.ID_MATERIA AND ID_MATERIA_REQUISITO NOT IN
(SELECT ID_MATERIA
FROM NOTAS HN
WHERE HN.ID_ALUMNO=PN_ID_ALUMNO AND (HN.NOTA_PROMEDIO>=7 OR HN.NOTA_GRACIA>=7) AND
HN.ID_ESTADO=14
--AUMENTADO EL 28/05/2009 PARA QUE NO SE MUESTREN LAS MATERIAS VISTAS PERIODO_LECTIVO
VIGENTE COMO
--PREREQUISITOS
AND ((HN.ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND TRIM(HN.TIPO_NOTA)='SEM')OR
TRIM(HN.TIPO_NOTA) IN('HOM','GRA'))
)
)
)
AND MO.ID_MATERIA IN (SELECT ID_MATERIA FROM PERIODO_MATERIA WHERE
ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND ID_ESTADO=1)
AND MO.ID_MATERIA NOT IN(SELECT ID.ID_MATERIA FROM INSCRIPCION I,INSCRIPCION_DETALLE ID WHERE
I.ID_INSCRIPCION=ID.ID_INSCRIPCION
AND I.ID_ESTADO=1 AND ID.ID_ESTADO=1 AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND
I.ID_ALUMNO=PN_ID_ALUMNO)
AND MO.ID_MATERIA=M.ID_MATERIA
--
AND MO.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM HISTORIAL_NOTAS WHERE ID_ESTADO=1 AND
ID_ALUMNO=PN_ID_ALUMNO AND (PROMEDIO>=7 OR EX_GRACIA>=7))
AND MO.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM MATERIA_EQUIVALENTE WHERE ID_MATERIA_EQUIVALE IN(
SELECT ID_MATERIA FROM HISTORIAL_NOTAS WHERE ID_ESTADO=1 AND ID_ALUMNO=PN_ID_ALUMNO AND
(PROMEDIO>=7 OR EX_GRACIA>=7)))
AND MO.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM NOTAS WHERE ID_ALUMNO=PN_ID_ALUMNO AND
(NOTA_PROMEDIO>=7 OR NOTA_GRACIA>=7)AND ((ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND
TRIM(TIPO_NOTA)='SEM')OR TRIM(TIPO_NOTA) IN('HOM','GRA')) AND ID_ESTADO=14)
AND MO.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM MATERIA_EQUIVALENTE WHERE ID_MATERIA_EQUIVALE IN(
SELECT ID_MATERIA FROM NOTAS WHERE ID_ALUMNO=PN_ID_ALUMNO AND (NOTA_PROMEDIO>=7 OR
NOTA_GRACIA>=7)AND ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND ID_ESTADO=14))
--
UNION
--LO SIG . ES PARA MATERIAS ELECTIVAS
SELECT DISTINCT
MD.ID_MATERIA,M.CODIGO_MATERIA,PROCESOS_INSCRIPCION.GET_NOMBRE_MATERIA(M.ID_MATERIA),PROCESOS_IN
SCRIPCION.get_vez_tomada_materia(PN_ID_ALUMNO,M.ID_MATERIA,PN_ID_PERIODO_LECTIVO)VEZ_TOMADA
FROM MALLA_DETALLE MD,MATERIA M
WHERE MD.ID_MATERIA=M.ID_MATERIA
AND M.ID_TIPO_MATERIA IN (4)AND (MD.ID_MATERIA_REQUISITO IN(SELECT ID_MATERIA
FROM NOTAS HN
WHERE HN.ID_ESTADO=14 AND HN.ID_ALUMNO=PN_ID_ALUMNO AND
(HN.NOTA_PROMEDIO>=7 OR HN.NOTA_GRACIA>=7)
137
--
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM HISTORIAL_NOTAS WHERE ID_ESTADO=1 AND
ID_ALUMNO=PN_ID_ALUMNO AND (PROMEDIO>=7 OR EX_GRACIA>=7))
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM MATERIA_EQUIVALENTE WHERE ID_MATERIA_EQUIVALE IN(
SELECT ID_MATERIA FROM HISTORIAL_NOTAS WHERE ID_ESTADO=1 AND ID_ALUMNO=PN_ID_ALUMNO AND
(PROMEDIO>=7 OR EX_GRACIA>=7)))
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM NOTAS WHERE ID_ALUMNO=PN_ID_ALUMNO AND
(NOTA_PROMEDIO>=7 OR NOTA_GRACIA>=7)AND ((ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND
TRIM(TIPO_NOTA)='SEM')OR TRIM(TIPO_NOTA) IN('HOM','GRA')) AND ID_ESTADO=14)
AND MD.ID_MATERIA NOT IN(SELECT ID_MATERIA FROM MATERIA_EQUIVALENTE WHERE ID_MATERIA_EQUIVALE IN(
SELECT ID_MATERIA FROM NOTAS WHERE ID_ALUMNO=PN_ID_ALUMNO AND (NOTA_PROMEDIO>=7 OR
NOTA_GRACIA>=7)AND ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND ID_ESTADO=14))
--
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END PR_MATERIAS_OPTATIVAS_DISP;
---------------------------------------------------------------
------------------GET_PARALELO_MATERIA------------------
FUNCTION GET_PARALELO_MATERIA(PN_ID_PARALELO IN INT,PN_ID_MATERIA IN INT)RETURN INT
IS
LN_CUENTA_REG INT;
LN_RESULTADO INT;
BEGIN
SELECT COUNT(*)INTO LN_CUENTA_REG
FROM PARALELO_MATERIA
WHERE ID_ESTADO=1
AND ID_PARALELO=PN_ID_PARALELO
AND ID_MATERIA=PN_ID_MATERIA;
IF LN_CUENTA_REG>1 THEN
LN_RESULTADO:=-1;
ELSIF LN_CUENTA_REG=1 THEN
SELECT ID_PARALELO_MATERIA INTO LN_RESULTADO
FROM PARALELO_MATERIA
WHERE ID_ESTADO=1
AND ID_PARALELO=PN_ID_PARALELO
AND ID_MATERIA=PN_ID_MATERIA;
ELSE
LN_RESULTADO:=0;
END IF ;
RETURN LN_RESULTADO;
END GET_PARALELO_MATERIA;
---------------------------------------------------------------
----------------FUN_FUE_ALUMNO_INSCRITO
FUNCTION FUN_FUE_ALUMNO_INSCRITO(PN_ID_ALUMNO INT,PN_ID_PERIDO_LECTIVO INT) RETURN BOOLEAN
IS
LN_CANT INT;
BEGIN
SELECT COUNT(*)INTO LN_CANT
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_ESTADO=1 AND A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND B.ID_ESTADO=1
AND UPPER(TRIM(SUBSTR(B.OBSERVACION,1,INSTR(B.OBSERVACION,'-',1,1)-1))) IN('ORDINARIA','EXTRAORDINARIA')
138
AND A.ID_ALUMNO=PN_ID_ALUMNO
AND B.ID_PERIODO_LECTIVO=PN_ID_PERIDO_LECTIVO;
IF LN_CANT>0 THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
--------------------------------------------------------------
----------------FUN_FUE_ALUMNO_INSCRITO_GRACIA
FUNCTION FUN_FUE_ALUMNO_INSCRITO_GRACIA(PN_ID_ALUMNO INT,PN_ID_PERIDO_LECTIVO INT,PN_ID_MATERIA
NUMBER,LV_RESPUESTA OUT VARCHAR2) RETURN BOOLEAN
IS
LN_CANT INT;
BEGIN
SELECT COUNT(*)INTO LN_CANT
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_ESTADO=1 AND A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND B.ID_ESTADO=1 AND UPPER(TRIM(SUBSTR(B.OBSERVACION,1,INSTR(B.OBSERVACION,'-',1,1)-1)))='EXAMEN DE
GRACIA'
AND A.ID_ALUMNO=PN_ID_ALUMNO
AND B.ID_PERIODO_LECTIVO=PN_ID_PERIDO_LECTIVO
--AUMENTADO JUEVES 11 DE JUNIO DEL 2009 A LAS 20:59 PARA VALIDAR
--QUE SOLO EMITA EL VALOR TRUE SOLO SI YAN HA SIDO ALUMNO INSCRITO EN
--LA MATERIA DE LA ORDEN.
AND B.ID_MATERIA=PN_ID_MATERIA;
IF LN_CANT>0 THEN
LV_RESPUESTA:='NO PUEDE INSCRIBIR LA MATERIA: '|| GET_NOMBRE_MATERIA(PN_ID_MATERIA)|| ' PARA EXÁMEN DE
GRACIA DEBIDO A QUE EL ALUMNO: ' || GET_NOMBRE_ALUMNO(PN_ID_ALUMNO) || ' , YA TIENE UN EXÁMEN EN ESTA
MATERIA REGISTRADO ACTUALMENTE';
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
EXCEPTION
WHEN OTHERS THEN
LV_RESPUESTA:=SQLERRM;
END;
-----
------------------------------------------------------------------------
-----------------PR_ACTUALIZA_CUPOS----------------
PROCEDURE PR_ACTUALIZA_CUPOS(PN_ID_PARALELO_MATERIA IN INT,PV_RESULTADO OUT INT)
IS
BEGIN
UPDATE PARALELO_MATERIA
SET CUPO_OCUPADO=CUPO_OCUPADO +1,CUPO_DISPONIBLE=CUPO_DISPONIBLE - 1
WHERE ID_PARALELO_MATERIA=PN_ID_PARALELO_MATERIA
AND ID_ESTADO=1;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END PR_ACTUALIZA_CUPOS;
--------------------------------------------------
--------------------GET_ALUMNO_INSCRITO
PROCEDURE GET_ALUMNO_INSCRITO(PV_OPCION VARCHAR2,PV_ARGUMENTO VARCHAR2,PN_ID_ALUMNO
INT,PN_ID_PERIODO_LECTIVO INT,PC_ALUMNO_INCRITO OUT r_cursor,PV_APELLIDO_MATERNO
VARCHAR2,PV_PRIMER_NOMBRE VARCHAR2,PV_SEGUNDO_NOMBRE VARCHAR2)
139
IS
BEGIN
IF PN_ID_ALUMNO=0 THEN
IF PV_OPCION='CEDULA'THEN
ELSIF PV_OPCION='CODIGO'THEN
OPEN PC_ALUMNO_INCRITO FOR
SELECT DISTINCT TO_CHAR(A.FECHA_INSCRIPCION,'DD/MM/YYYY HH24:MI:SS'),
D.APELLIDO_PATERNO || ' ' || D.APELLIDO_MATERNO || ' ' || D.PRIMER_NOMBRE || ' ' || NVL(D.SEGUNDO_NOMBRE,'
')ALUMNO,
D.CEDULA,C.CODIGO_ESTUDIANTIL,c.id_alumno
FROM INSCRIPCION A,INSCRIPCION_DETALLE B,ALUMNO C,PERSONA D
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
--AND A.ID_ALUMNO=PN_ID_ALUMNO
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND C.ID_PERSONA=D.ID_PERSONA
AND C.ID_ALUMNO=A.ID_ALUMNO AND C.CODIGO_ESTUDIANTIL LIKE '%' || PV_ARGUMENTO || '%'
AND B.OBSERVACION<>TRIM('EXAMEN DE GRACIA-0-0')
--ORDER BY A.ID_INSCRIPCION
;
ELSIF PV_OPCION='NOMBRES'THEN
--NOMBRES VARCHAR2(100):=TRIM('GUSTAVO ASQUI YANEZ DS');
END IF;
AND B.ID_MATERIA=E.ID_MATERIA
AND B.OBSERVACION<>TRIM('EXAMEN DE GRACIA-0-0')
ORDER BY E.CODIGO_MATERIA
;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END GET_ALUMNO_INSCRITO;
------------------------------------------------------------------------*-
-------------------PRO_ANULA_INSCRIPCION
PROCEDURE PRO_ANULA_INSCRIPCION(PN_ID_ALUMNO INT,PN_ID_PARALELO INT,PN_ID_MATERIA
INT,PN_ID_PERIODO_LECTIVO INT,PV_USUARIO VARCHAR2,PV_RESULTADO OUT VARCHAR2)
IS
LN_ID_INSCRIPCION INT;
LN_DETALLES_ACTIVOS INT;
--NUEVAS 28/05/2009
LN_EXISTE_REGISTRO NUMBER(3);
LN_EXISTE_NOTAS_ACTUALES NUMBER(3);
LE_ERROR EXCEPTION;
BEGIN
SELECT DISTINCT A.ID_INSCRIPCION INTO LN_ID_INSCRIPCION
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND B.OBSERVACION LIKE '%ORDINARIA%';
-->>>>>>>>>>>>>>>>>>>>>>>>>><
/*--VALIDACIONES AÑADIDAS EL 28/05/2009 20:50
--LO SIG VALIDA QUE NO TENGA ORDNENES DE PAGO ACTUAL GENERADA PARA PODER
--ACTUALIZAR CARNET
--ACTUALIZADO 28/05/2009 19:06 PM
SELECT COUNT(*)INTO LN_EXISTE_ORDEN_PAGO
FROM ORDEN_PAGO OP,ORDEN_PAGO_DETALLE OPD
WHERE OP.ID_ORDEN_PAGO=OPD.ID_ORDEN_PAGO AND OP.ID_ESTADO=1
AND OPD.ID_ESTADO=1 AND OP.ID_ALUMNO=PN_ID_ALUMNO AND
OP.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO ;*/
--*************************************
--LO SIG. VERIFICA QUE NO EXISTAN NOTAS EN PERIODO LECTIVO VIGENTE
SELECT NVL(MAX(NVL(N.NOTA_PARCIAL1,0)),0)INTO LN_EXISTE_NOTAS_ACTUALES
FROM NOTAS N
WHERE ID_ESTADO<>3 AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND N.ID_ALUMNO=PN_ID_ALUMNO AND N.ID_MATERIA=PN_ID_MATERIA AND N.TIPO_NOTA='SEM';
--ACTUALIZA CUPOS
UPDATE PARALELO_MATERIA A
SET A.CUPO_OCUPADO=A.CUPO_OCUPADO-1,A.CUPO_DISPONIBLE=A.CUPO_DISPONIBLE+1
WHERE A.ID_PARALELO=PN_ID_PARALELO AND A.ID_MATERIA=PN_ID_MATERIA
AND A.ID_ESTADO=1;
ELSE
PV_RESULTADO:='NO SE PUEDE ANULAR DEBIDO A QUE NO EXISTE PARALELO:'
||GET_NOMBRE_PARALELO(PN_ID_PARALELO) || ' CON LA MATERIA : ' || GET_NOMBRE_MATERIA(PN_ID_MATERIA) || ' O
YA SE ANULÓ ';
RAISE LE_ERROR;
END IF;
PV_RESULTADO:='SI SE HA ANULADO EXITOSAMENTE,LAS MATERIAS ELEGIDAS';
ELSE
PV_RESULTADO:='NO SE PUEDE ANULAR LA MATERIA : ' || GET_NOMBRE_MATERIA(PN_ID_MATERIA) || ' EN LA
INSCRIPCIÓN DEL ALUMNO, DEBIDO A QUE LA MATERIA YA TIENE NOTAS ';
RAISE LE_ERROR;
END IF;
EXCEPTION
WHEN LE_ERROR THEN
PV_RESULTADO:=PV_RESULTADO;
WHEN OTHERS THEN
PV_RESULTADO:=SQLERRM;
END PRO_ANULA_INSCRIPCION;
--------------------------------------------------------------
---------------------------PRO_ACTUALIZAR_INGLES
FUNCTION PRO_ACTUALIZAR_INGLES(PN_ID_ALUMNO INT,PN_ID_PERIODO_LECTIVO INT,PN_INGLES INT)RETURN
VARCHAR2
IS
LN_ID_INSCRIPCION INT;
LV_RESULTADO VARCHAR2(1000);
LN_EXISTE_ORDEN_PAGO NUMBER(3);
LN_EXISTE_NOTAS_ACTUALES NUMBER(3);
BEGIN
--LO SIG VALIDA QUE NO TENGA ORDNE DE PAGO ACTUAL GENERADA PARA PODER
--ACTUALIZAR CARNET
--ACTUALIZADO 28/05/2009 19:06 PM
SELECT COUNT(*)INTO LN_EXISTE_ORDEN_PAGO
FROM ORDEN_PAGO OP,ORDEN_PAGO_DETALLE OPD
WHERE OP.ID_ORDEN_PAGO=OPD.ID_ORDEN_PAGO AND OP.ID_ESTADO=1
AND OPD.ID_ESTADO=1 AND OP.ID_ALUMNO=PN_ID_ALUMNO AND
OP.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO ;
--LO SIG. VERIFICA QUE NO EXISTAN NOTAS EN PERIODO LECTIVO VIGENTE
SELECT NVL(MAX(NVL(N.NOTA_PARCIAL1,0)),0) INTO LN_EXISTE_NOTAS_ACTUALES
FROM NOTAS N
WHERE N.ID_ESTADO<>3 AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND N.ID_ALUMNO=PN_ID_ALUMNO;
--************************************
SELECT DISTINCT A.ID_INSCRIPCION INTO LN_ID_INSCRIPCION
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO;
EXCEPTION
WHEN OTHERS THEN
LV_RESULTADO:=SQLERRM;
RETURN LV_RESULTADO;
END;
-------------------
---------------------------PRO_ACTUALIZAR_CARNET
FUNCTION PRO_ACTUALIZAR_CARNET(PN_ID_ALUMNO INT,PN_ID_PERIODO_LECTIVO INT,PN_CARNET INT)RETURN
VARCHAR2
IS
LN_ID_INSCRIPCION INT;
LV_RESULTADO VARCHAR2(1000);
LN_EXISTE_ORDEN_PAGO NUMBER(3);
LN_EXISTE_NOTAS_ACTUALES NUMBER(3);
BEGIN
SELECT DISTINCT A.ID_INSCRIPCION INTO LN_ID_INSCRIPCION
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO;
--LO SIG VALIDA QUE NO TENGA ORDNE DE PAGO ACTUAL GENERADA PARA PODER
--ACTUALIZAR CARNET
--ACTUALIZADO 28/05/2009 19:06 PM
SELECT COUNT(*)INTO LN_EXISTE_ORDEN_PAGO
FROM ORDEN_PAGO OP,ORDEN_PAGO_DETALLE OPD
WHERE OP.ID_ORDEN_PAGO=OPD.ID_ORDEN_PAGO AND OP.ID_ESTADO=1
AND OPD.ID_ESTADO=1 AND OP.ID_ALUMNO=PN_ID_ALUMNO AND
OP.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO ;
--LO SIG. VERIFICA QUE NO EXISTAN NOTAS EN PERIODO LECTIVO VIGENTE
SELECT NVL(MAX(NVL(N.NOTA_PARCIAL1,0)),0)INTO LN_EXISTE_NOTAS_ACTUALES
FROM NOTAS N
WHERE N.ID_ESTADO<>3 AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND N.ID_ALUMNO=PN_ID_ALUMNO;
LN_CUPO_DISPONIBLE_NEW INT;
--28/05/2009 22:18
LN_EXISTE_NOTAS_ACTUALES NUMBER(3);
BEGIN
SELECT DISTINCT A.ID_INSCRIPCION INTO LN_ID_INSCRIPCION
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
143
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ALUMNO=PN_ID_ALUMNO
AND A.ID_ESTADO=1
AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND B.OBSERVACION LIKE '%ORDINARIA%';
--<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
---AUMENTADO 28/05/2009 22:18
--LO SIG. VERIFICA QUE NO EXISTAN NOTAS DEL SEMESTRE PARA EL ALUMNO EN LA MATERIA
--QUE DESEA CAMBIAR DE PARALELO EN PERIODO LECTIVO VIGENTE
SELECT NVL(MAX(NVL(N.NOTA_PARCIAL1,0)),0)INTO LN_EXISTE_NOTAS_ACTUALES
FROM NOTAS N
WHERE N.ID_ESTADO<>3 AND N.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND N.ID_ALUMNO=PN_ID_ALUMNO AND N.ID_MATERIA=PN_ID_MATERIA AND N.TIPO_NOTA='SEM';
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><>>>>>>>>>>>
IF LN_EXISTE_NOTAS_ACTUALES=0 THEN--SI NO TIENE NOTAS EN PERIODO LECTVO VIGENTE
--ANULA ANTES DE VOLVER A INSERTAR UN NUEVO REGISTRO AL CAMBIAR DE PARALELO
UPDATE INSCRIPCION_DETALLE
SET ID_ESTADO=3,HORA_MODIFICACION=CURRENT_DATE,USUARIO_MODIFICACION=PV_USUARIO
WHERE ID_INSCRIPCION=LN_ID_INSCRIPCION AND ID_MATERIA=PN_ID_MATERIA
AND ID_PARALELO=PN_ID_PARALELO_OLD AND ID_ESTADO=1;
IF LN_CUPO_DISPONIBLE_NEW>=0 THEN
PV_RESULTADO:='SI';
ELSE
PV_RESULTADO:='NO SE PUEDE CAMBIAR LA MATERIA :'|| get_nombre_materia(PN_ID_MATERIA) || ' AL PARALELO : ' ||
GET_NOMBRE_PARALELO(PN_ID_PARALELO_NEW) || ' ,PORQUE NO EXISTE CUPO EN ESTE PARALELO';
END IF;
ELSE--QUE SI TIENE NOTAS
PV_RESULTADO:='NO SE PUEDE CAMBIAR LA MATERIA :'|| get_nombre_materia(PN_ID_MATERIA) || ' AL PARALELO : ' ||
GET_NOMBRE_PARALELO(PN_ID_PARALELO_NEW) || ' ,PORQUE LA MATERIA YA TIENE NOTAS ';
END IF;
144
EXCEPTION
WHEN OTHERS THEN
PV_RESULTADO:=SQLERRM;
END PRO_CAMBIO_PARALELO;
---------------------------------------------------------------------
--------------------FUN_NIVELES_CURSA_ALUMNO
FUNCTION FUN_NIVELES_CURSA_ALUMNO(PN_ID_ALUMNO INT,PN_ID_PERIODO_LECTIVO INT)RETURN INT
IS
LN_NUMERO_NIVELES INT;
BEGIN
SELECT COUNT(DISTINCT M.ID_SEMESTRE) INTO LN_NUMERO_NIVELES
FROM MALLA_DETALLE M
WHERE M.ID_MATERIA IN(SELECT B.ID_MATERIA
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO)
AND M.ID_ESTADO=1;
RETURN LN_NUMERO_NIVELES;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END FUN_NIVELES_CURSA_ALUMNO;
----------------------------------------------------------
----------------FUN_CUENTA_VECES_TOMADAS_MATERIA
FUNCTION FUN_CUENTA_VECES_MATERIA_INS(PN_ID_ALUMNO INT,PN_ID_PERIODO_LECTIVO INT)RETURN INT
IS
LN_COUNT_DIF_VEZ_TOMADAS_MAT INT;
BEGIN
SELECT COUNT(DISTINCT(B.VEZ_TOMADA))INTO LN_COUNT_DIF_VEZ_TOMADAS_MAT
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO;
RETURN LN_COUNT_DIF_VEZ_TOMADAS_MAT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(SQLERRM);
END FUN_CUENTA_VECES_MATERIA_INS;
--------------------------------------------
---------------------FUN_CUENTA_MATERIAS_INSCRITAS
FUNCTION FUN_CUENTA_MATERIAS_INSCRITAS(PN_ID_ALUMNO INT,PN_ID_PERIODO_LECTIVO INT)RETURN INT
IS
LN_NUM_MATERIAS_INSCRIPCION INT;
BEGIN
SELECT COUNT(DISTINCT(B.ID_MATERIA))INTO LN_NUM_MATERIAS_INSCRIPCION
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO;
RETURN LN_NUM_MATERIAS_INSCRIPCION;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END FUN_CUENTA_MATERIAS_INSCRITAS;
--
------------------------------------
------------------------FUNCION PRO_CALCULA_PAGOS
/*FUNCTION PRO_CALCULA_PAGOS(PN_ID_ALUMNO INT,PN_ID_PERIODO_LECTIVO INT)RETURN NUMBER
IS
LN_VEZ_TOMADA_UNICA INT;
LN_COSTO NUMBER(10,2);
BEGIN
--LO SIG. ES SI UN ALUMNO SOLO CURSA UN SOLO NIVEL
IF FUN_NIVELES_CURSA_ALUMNO(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)=1 AND
FUN_CUENTA_VECES_MATERIA_INS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)=1 THEN--SI TIENE DIFERENETES
VECES TOMADAS EJM
--1ERA VEZ,2DA VEZ(SERIAN 2 PORQUE EN LA INSCRIPCION HAY 2 VECES TOMADAS DIFERENTES
145
IF LN_VEZ_TOMADA_UNICA=1 AND
FUN_CUENTA_MATERIAS_INSCRITAS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)>=4 THEN
--ES DECIR SI SOLO SE VE TODAS MATERIAS POR PRIMERA VEZ Y 1 SOLO NIVEL
--Y SI VE 4 O MAS MATERIAS SE APLICA EL COSTO DE COMBO
SELECT SUM(NVL(PRECIO,0))INTO LN_COSTO
FROM
(
SELECT PRECIO--MUESTRA EL COSTO DEL COMBO EN BASE A LA CATEGORIA DEL ALUMNO
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND A.DESCRIPCION LIKE '%COMBO%'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
UNION ALL
SELECT PRECIO --AGREGAR LOS RUBROS OBLIGATORIOS
FROM TASA A,TASA_PRECIO B,TASA_CATEGORIA C
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND C.ID_ESTADO=1 AND C.DESCRIPCION='PAGOS OBLIGATORIOS'
AND C.ID_TASA_CATEGORIA=A.ID_TASA_CATEGORIA
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
UNION ALL
---AGREGAR EL COSTO DE INGLES SI TIENE
SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-')+1,1)* (
SELECT B.PRECIO --PRECIO INGLES
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.DESCRIPCION LIKE '%INGLES%'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA
FROM ALUMNO WHERE ID_ALUMNO=PN_ID_ALUMNO))
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1
)TABLA;
--lo sig si cursa un solo nivel y por priemra vez pero menos de 4 materra
ELSIF LN_VEZ_TOMADA_UNICA=1 AND
FUN_CUENTA_MATERIAS_INSCRITAS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)<4 THEN
SELECT SUM(NVL(PRECIO,0))INTO LN_COSTO
FROM
(
SELECT NVL(B.VEZ_TOMADA,0)* (SELECT PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
)PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
UNION ALL
SELECT PRECIO --AGREGAR LOS RUBROS OBLIGATORIOS
FROM TASA A,TASA_PRECIO B,TASA_CATEGORIA C
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND C.ID_ESTADO=1 AND C.DESCRIPCION='PAGOS OBLIGATORIOS'
AND C.ID_TASA_CATEGORIA=A.ID_TASA_CATEGORIA
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
146
UNION ALL
---AGREGAR EL COSTO DE INGLES SI TIENE
SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-')+1,1)* (
SELECT B.PRECIO --PRECIO INGLES
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.DESCRIPCION LIKE '%INGLES%'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA
FROM ALUMNO WHERE ID_ALUMNO=PN_ID_ALUMNO))
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1
)TABLA;
END IF;
--LO SIG. ES PARA ALUNOS DE 1 SOLO NIVEL Y QUE TIENEN MAS DE 1 VEZ
ELSIF FUN_NIVELES_CURSA_ALUMNO(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)=1 AND
FUN_CUENTA_VECES_MATERIA_INS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)>1 THEN--SI TIENE DIFERENETES
VECES TOMADAS EJM
SELECT SUM(NVL(PRECIO,0))INTO LN_COSTO
FROM
(
SELECT NVL(B.VEZ_TOMADA,0)* (SELECT PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
)PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
UNION ALL
SELECT PRECIO --AGREGAR LOS RUBROS OBLIGATORIOS
FROM TASA A,TASA_PRECIO B,TASA_CATEGORIA C
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND C.ID_ESTADO=1 AND C.DESCRIPCION='PAGOS OBLIGATORIOS'
AND C.ID_TASA_CATEGORIA=A.ID_TASA_CATEGORIA
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
UNION ALL
---AGREGAR EL COSTO DE INGLES SI TIENE
SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-')+1,1)* (
SELECT B.PRECIO --PRECIO INGLES
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.DESCRIPCION LIKE '%INGLES%'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA
FROM ALUMNO WHERE ID_ALUMNO=PN_ID_ALUMNO))
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1
)TABLA;
--LO SIG. ES PARA ALUNOS DE MAS DE 1 NIVEL /SEMESTRE
ELSIF FUN_NIVELES_CURSA_ALUMNO(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)>1 THEN
SELECT SUM(NVL(PRECIO,0))INTO LN_COSTO
FROM
(
--LO SIG ES PARA AUMNETRA EL VALOR DEL COMBO AL PRECIO CALCULADO DE CADA MATERIA
SELECT PRECIO--MUESTRA EL COSTO DEL COMBO EN BASE A LA CATEGORIA DEL ALUMNO
FROM TASA A,TASA_PRECIO B
147
WHERE A.ID_TASA=B.ID_TASA
AND A.DESCRIPCION LIKE '%COMBO%'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
UNION ALL
SELECT NVL(B.VEZ_TOMADA,0)* (SELECT PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
)PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
UNION ALL
SELECT PRECIO --AGREGAR LOS RUBROS OBLIGATORIOS
FROM TASA A,TASA_PRECIO B,TASA_CATEGORIA C
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND C.ID_ESTADO=1 AND C.DESCRIPCION='PAGOS OBLIGATORIOS'
AND C.ID_TASA_CATEGORIA=A.ID_TASA_CATEGORIA
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
UNION ALL
---AGREGAR EL COSTO DE INGLES SI TIENE
SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-')+1,1)* (
SELECT B.PRECIO --PRECIO INGLES
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.DESCRIPCION LIKE '%INGLES%'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA
FROM ALUMNO WHERE ID_ALUMNO=PN_ID_ALUMNO))
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1
)TABLA;
END IF;
RETURN NVL(LN_COSTO,0);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
-----
-----------------PR_CALCULA_PAGOS2
FUNCTION PR_CALCULA_PAGOS2(PN_ID_ALUMNO INT,PN_ID_PERIODO_LECTIVO INT)RETURN NUMBER
IS
LN_VEZ_TOMADA_UNICA INT;
LN_COSTO NUMBER(10,2);
BEGIN
--LO SIG. ES SI UN ALUMNO TIENE SOLO UNA VEZ DE ESTUDIO DIFERENTE
IF FUN_CUENTA_VECES_MATERIA_INS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)=1 THEN--SI TIENE DIFERENETES
VECES TOMADAS EJM
--1ERA VEZ,2DA VEZ(SERIAN 2 PORQUE EN LA INSCRIPCION HAY 2 VECES TOMADAS DIFERENTES
IF LN_VEZ_TOMADA_UNICA=1 THEN
--SI TODAS LAS VECES SON POR PRIMERA VEZ NO IMPORTANDO EL NIVEL
--ES GRATIS TODO EXCETUANDO INTERNET Y CARNET POSTERIOR A LA 2DA VEZ.
148
SELECT NVL(SUM(PRECIO),0) INTO LN_COSTO--AGREGAR LOS RUBROS OBLIGATORIOS--EN ESTE CASO ES INTERNET
FROM TASA A,TASA_PRECIO B,TASA_CATEGORIA C,ALUMNO_CATEGORIA AC
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND C.ID_ESTADO=1 AND C.DESCRIPCION='PAGOS OBLIGATORIOS'
AND C.ID_TASA_CATEGORIA=A.ID_TASA_CATEGORIA
AND B.ID_ALUMNO_CATEGORIA=AC.ID_ALUMNO_CATEGORIA AND AC.ID_ESTADO=1
AND (B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)OR
AC.DESCRIPCION LIKE '%INDIFERENTE%')
;
end if;
--FALTARIA EL CARNET EN CASO DE TENERLO
--LO SIG. ES PARA ALUNOS DE 1 SOLO NIVEL Y QUE TIENEN MAS DE 1 VEZ
--AQUI SI DEBE PAGAR LA AUTOFINANCIACION
ELSIF FUN_CUENTA_VECES_MATERIA_INS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)>1 THEN--SI TIENE
DIFERENETES VECES TOMADAS EJM
UNION ALL
SELECT TABLA.ID_TASA,TABLA.ID_PRECIO,SUM(TABLA.PRECIO)PRECIO
FROM
(
SELECT (SELECT B.ID_TASA--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_TASA,--PARA ID_TASA
(SELECT B.ID_PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_PRECIO,--PARA ID_PRECIO
(NVL(B.VEZ_TOMADA,0)* (SELECT PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
))PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND B.VEZ_TOMADA>1
)TABLA
GROUP BY TABLA.ID_TASA,TABLA.ID_PRECIO
--
UNION ALL
SELECT B.ID_TASA,B.ID_PRECIO,PRECIO --AGREGAR LOS RUBROS OBLIGATORIOS--EN ESTE CASO ES INTERNET
149
UNION ALL
---AGREGAR EL COSTO DE INGLES SI TIENE
END IF;
RETURN NVL(LN_COSTO,0);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END PR_CALCULA_PAGOS2;
----------------------
-------PR_COSTO_NIVEL_DIF : ES PARA CALCULAR LOS PAGOS DE UN ALUMNO CON DIFERENTES
---NIVELES
CURSOR CUR_PAGOS IS
SELECT B.ID_TASA,B.ID_PRECIO,PRECIO--MUESTRA EL COSTO DEL COMBO EN BASE A LA CATEGORIA DEL ALUMNO
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND A.DESCRIPCION LIKE '%COMBO%'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
UNION ALL
SELECT TABLA.ID_TASA,TABLA.ID_PRECIO,SUM(TABLA.PRECIO)PRECIO
FROM
(
SELECT (SELECT B.ID_TASA--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_TASA,--PARA ID_TASA
(SELECT B.ID_PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
150
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_PRECIO,--PARA ID_PRECIO
(NVL(B.VEZ_TOMADA,0)* (SELECT PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
))PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
)TABLA
GROUP BY TABLA.ID_TASA,TABLA.ID_PRECIO
----
----
UNION ALL
SELECT B.ID_TASA,B.ID_PRECIO,PRECIO --AGREGAR LOS RUBROS OBLIGATORIOS
FROM TASA A,TASA_PRECIO B,TASA_CATEGORIA C
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND C.ID_ESTADO=1 AND C.DESCRIPCION='PAGOS OBLIGATORIOS'
AND C.ID_TASA_CATEGORIA=A.ID_TASA_CATEGORIA
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
UNION ALL
---AGREGAR EL COSTO DE INGLES SI TIENE
BEGIN
LN_RUBRO_TOTAL:=PRO_CALCULA_PAGOS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO);
LN_VALORES_ADICIONALES:=LN_RUBRO_TOTAL - LN_VALOR_MATRICULA;
FROM ORDEN_PAGO_DETALLE;
ELSIF LN_NUM_RECIBO <> 1 AND (REG.ID_TASA =1 OR REG.ID_TASA =2 ) THEN
INSERT INTO ORDEN_PAGO_DETALLE(ID_ORDEN_DETALLE,ID_TASA,ID_ORDEN_PAGO,
ID_ESTADO,VALOR_FINAL,ID_PRECIO,VALOR_TASA,PORCENTAJE_TASA)
SELECT NVL(MAX(ID_ORDEN_DETALLE),0)+1,REG.ID_TASA,LN_ID_ORDEN_PAGO,1,
REG.PRECIO * ((CASE
WHEN REG.ID_TASA=1 OR REG.ID_TASA=2 THEN
get_parametro('PORCENTAJE ORDEN PAGO CUOTA '||TO_CHAR(LN_NUM_RECIBO),9)
ELSE
100
END)/100)
,REG.ID_PRECIO,GET_VALOR_TASA(REG.ID_TASA,PN_ID_ALUMNO),
(CASE
WHEN REG.ID_TASA=1 OR REG.ID_TASA=2 THEN
get_parametro('PORCENTAJE ORDEN PAGO CUOTA '||TO_CHAR(LN_NUM_RECIBO),9)
ELSE
100
END)PORCENTAJE
FROM ORDEN_PAGO_DETALLE;
END IF;
END IF;
END LOOP;
-------------
LN_NUM_RECIBO:=LN_NUM_RECIBO+1;
LN_DIAS_VENCIMIENTO:=LN_DIAS_VENCIMIENTO + 30;
END LOOP;
--INSERTAR EN ORDEN_PAGO_DETALLE
\* FOR REG IN CUR_PAGOS LOOP
IF REG.PRECIO<>0 THEN
INSERT INTO ORDEN_PAGO_DETALLE
152
SELECT NVL(MAX(ID_ORDEN_DETALLE),0)+1,REG.ID_TASA,LN_ID_ORDEN_PAGO,1,REG.PRECIO,REG.ID_PRECIO
FROM ORDEN_PAGO_DETALLE;
END IF;
END LOOP;*\
--INSERTAR EN RECIBO_PAGO
\*LN_CANT_RECIBOS:=get_parametro('NUMERO DE CUOTAS ORDEN PAGO',9);
LN_VALOR_CUOTA:=PRO_CALCULA_PAGOS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)*
(get_parametro('PORCENTAJE ORDEN PAGO CUOTA '||TO_CHAR(LN_NUM_RECIBO),9)/100);
LN_VALOR_CUOTA_ACUMULADO:=LN_VALOR_CUOTA_ACUMULADO + LN_VALOR_CUOTA;
IF LN_NUM_RECIBO=LN_CANT_RECIBOS-1 THEN
LN_VALOR_CUOTA:=PRO_CALCULA_PAGOS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)-
LN_VALOR_CUOTA_ACUMULADO;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
--********
----------------------------------------------------
-----------------PR_COSTO_UN_NIVEL_UNA_VEZ_
---GRABA EN LAS TABLAS DE ORDEN Y ORDEN_DETALLE Y RECIBO_PAGOS
---CUANDO EL ALUMNO EN EL PEIRODO VIGENTE VE 1 SOLO NIVEL Y 1 SOLA VEZ Y MAS DE 4 MATERIA
UNION ALL
AND ROWNUM=1)SUBTOTAL
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.DESCRIPCION LIKE '%INGLES%'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO) ;
LN_VALOR_MATRICULA NUMBER(10,2):=0;
LN_RUBRO_TOTAL NUMBER(10,2):=0;
LN_VALORES_ADICIONALES NUMBER(10,2):=0;
BEGIN
LN_RUBRO_TOTAL:=PRO_CALCULA_PAGOS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO);
LN_VALORES_ADICIONALES:=LN_RUBRO_TOTAL - LN_VALOR_MATRICULA;
FROM ORDEN_PAGO_DETALLE;
ELSIF LN_NUM_RECIBO <> 1 AND (REG.ID_TASA =1 OR REG.ID_TASA =2 ) THEN
INSERT INTO ORDEN_PAGO_DETALLE(ID_ORDEN_DETALLE,ID_TASA,ID_ORDEN_PAGO,
ID_ESTADO,VALOR_FINAL,ID_PRECIO,VALOR_TASA,PORCENTAJE_TASA)
SELECT NVL(MAX(ID_ORDEN_DETALLE),0)+1,REG.ID_TASA,LN_ID_ORDEN_PAGO,1,
REG.PRECIO * ((CASE
WHEN REG.ID_TASA=1 OR REG.ID_TASA=2 THEN
get_parametro('PORCENTAJE ORDEN PAGO CUOTA '||TO_CHAR(LN_NUM_RECIBO),9)
ELSE
100
END)/100)
,REG.ID_PRECIO,GET_VALOR_TASA(REG.ID_TASA,PN_ID_ALUMNO),
(CASE
WHEN REG.ID_TASA=1 OR REG.ID_TASA=2 THEN
get_parametro('PORCENTAJE ORDEN PAGO CUOTA '||TO_CHAR(LN_NUM_RECIBO),9)
ELSE
100
END)PORCENTAJE
FROM ORDEN_PAGO_DETALLE;
END IF;
END IF;
END LOOP;
-------------
LN_NUM_RECIBO:=LN_NUM_RECIBO+1;
LN_DIAS_VENCIMIENTO:=LN_DIAS_VENCIMIENTO + 30;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
\*BEGIN
--INSERTAR EN ORDEN_PAGO_DETALLE
FOR REG IN CUR_PAGOS LOOP
IF REG.PRECIO<>0 THEN
INSERT INTO ORDEN_PAGO_DETALLE
SELECT NVL(MAX(ID_ORDEN_DETALLE),0)+1,REG.ID_TASA,LN_ID_ORDEN_PAGO,1,REG.PRECIO,REG.ID_PRECIO
FROM ORDEN_PAGO_DETALLE;
END IF;
END LOOP;
--INSERTAR EN RECIBO_PAGO
LN_CANT_RECIBOS:=get_parametro('NUMERO DE CUOTAS ORDEN PAGO',9);
LN_VALOR_CUOTA:=PRO_CALCULA_PAGOS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)*
(get_parametro('PORCENTAJE ORDEN PAGO CUOTA '||TO_CHAR(LN_NUM_RECIBO),9)/100);
LN_VALOR_CUOTA_ACUMULADO:=LN_VALOR_CUOTA_ACUMULADO + LN_VALOR_CUOTA;
IF LN_NUM_RECIBO=LN_CANT_RECIBOS-1 THEN
LN_VALOR_CUOTA:=PRO_CALCULA_PAGOS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)-
LN_VALOR_CUOTA_ACUMULADO;
END IF;
LN_DIAS_VENCIMIENTO:=LN_DIAS_VENCIMIENTO + 30;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;*\
------------------------
--PR_COSTO_UN_NIVEL_UNA_VEZ_MENOS_MAT->>INSERTA 1 NIVEL 1 VEZ MENOS DE 4 MATERIA
PROCEDURE PR_COSTO_UN_NIV_UN_VEZ_MM(PN_ID_ALUMNO INT,PN_ID_PERIODO_LECTIVO INT)
IS
LN_ID_ORDEN_PAGO INT;
LN_CANT_RECIBOS INT:=0;
LN_NUM_RECIBO INT:=1;
LN_DIAS_VENCIMIENTO INT:=30;
LN_VALOR_CUOTA NUMBER(10,2):=0;
LN_VALOR_CUOTA_ACUMULADO NUMBER(10,2):=0;
CURSOR CUR_PAGOS IS
SELECT TABLA.ID_TASA,TABLA.ID_PRECIO,SUM(TABLA.PRECIO)PRECIO
FROM
(SELECT (SELECT B.ID_TASA--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_TASA,--PARA ID_TASA
(SELECT B.ID_PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_PRECIO,--PARA ID_PRECIO
(NVL(B.VEZ_TOMADA,0)* (SELECT PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
))PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
)TABLA
GROUP BY TABLA.ID_TASA,TABLA.ID_PRECIO
UNION ALL
SELECT B.ID_TASA,B.ID_PRECIO,PRECIO --AGREGAR LOS RUBROS OBLIGATORIOS
FROM TASA A,TASA_PRECIO B,TASA_CATEGORIA C
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND C.ID_ESTADO=1 AND C.DESCRIPCION='PAGOS OBLIGATORIOS'
AND C.ID_TASA_CATEGORIA=A.ID_TASA_CATEGORIA
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
UNION ALL
---AGREGAR EL COSTO DE INGLES SI TIENE
SELECT B.ID_TASA,B.ID_PRECIO,( SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-')+1,1) *
B.PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1)SUBTOTAL
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.DESCRIPCION LIKE '%INGLES%'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO) ;
156
LN_VALOR_MATRICULA NUMBER(10,2):=0;
LN_RUBRO_TOTAL NUMBER(10,2):=0;
LN_VALORES_ADICIONALES NUMBER(10,2):=0;
BEGIN
LN_RUBRO_TOTAL:=PRO_CALCULA_PAGOS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO);
LN_VALORES_ADICIONALES:=LN_RUBRO_TOTAL - LN_VALOR_MATRICULA;
FROM ORDEN_PAGO_DETALLE;
ELSIF LN_NUM_RECIBO <> 1 AND (REG.ID_TASA =1 OR REG.ID_TASA =2 ) THEN
INSERT INTO ORDEN_PAGO_DETALLE(ID_ORDEN_DETALLE,ID_TASA,ID_ORDEN_PAGO,
ID_ESTADO,VALOR_FINAL,ID_PRECIO,VALOR_TASA,PORCENTAJE_TASA)
SELECT NVL(MAX(ID_ORDEN_DETALLE),0)+1,REG.ID_TASA,LN_ID_ORDEN_PAGO,1,
REG.PRECIO * ((CASE
WHEN REG.ID_TASA=1 OR REG.ID_TASA=2 THEN
get_parametro('PORCENTAJE ORDEN PAGO CUOTA '||TO_CHAR(LN_NUM_RECIBO),9)
157
ELSE
100
END)/100)
,REG.ID_PRECIO,GET_VALOR_TASA(REG.ID_TASA,PN_ID_ALUMNO),
(CASE
WHEN REG.ID_TASA=1 OR REG.ID_TASA=2 THEN
get_parametro('PORCENTAJE ORDEN PAGO CUOTA '||TO_CHAR(LN_NUM_RECIBO),9)
ELSE
100
END)PORCENTAJE
FROM ORDEN_PAGO_DETALLE;
END IF;
END IF;
END LOOP;
-------------
LN_NUM_RECIBO:=LN_NUM_RECIBO+1;
LN_DIAS_VENCIMIENTO:=LN_DIAS_VENCIMIENTO + 30;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
\*BEGIN
--INSERTAR EN ORDEN_PAGO_DETALLE
FOR REG IN CUR_PAGOS LOOP
IF REG.PRECIO<>0 THEN
INSERT INTO ORDEN_PAGO_DETALLE
SELECT NVL(MAX(ID_ORDEN_DETALLE),0)+1,REG.ID_TASA,LN_ID_ORDEN_PAGO,1,REG.PRECIO,REG.ID_PRECIO
FROM ORDEN_PAGO_DETALLE;
END IF;
END LOOP;
--INSERTAR EN RECIBO_PAGO
LN_CANT_RECIBOS:=get_parametro('NUMERO DE CUOTAS ORDEN PAGO',9);
LN_VALOR_CUOTA:=PRO_CALCULA_PAGOS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)*
(get_parametro('PORCENTAJE ORDEN PAGO CUOTA '||TO_CHAR(LN_NUM_RECIBO),9)/100);
LN_VALOR_CUOTA_ACUMULADO:=LN_VALOR_CUOTA_ACUMULADO + LN_VALOR_CUOTA;
IF LN_NUM_RECIBO=LN_CANT_RECIBOS-1 THEN
LN_VALOR_CUOTA:=PRO_CALCULA_PAGOS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)-
LN_VALOR_CUOTA_ACUMULADO;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
*\
158
---------------------------------
---
PROCEDURE PR_COSTO_UN_NIVEL_VECES_DIF(PN_ID_ALUMNO INT,PN_ID_PERIODO_LECTIVO INT)
IS
LN_ID_ORDEN_PAGO INT;
LN_CANT_RECIBOS INT:=0;
LN_NUM_RECIBO INT:=1;
LN_DIAS_VENCIMIENTO INT:=30;
LN_VALOR_CUOTA NUMBER(10,2):=0;
LN_VALOR_CUOTA_ACUMULADO NUMBER(10,2):=0;
CURSOR CUR_PAGOS IS
SELECT TABLA.ID_TASA,TABLA.ID_PRECIO,SUM(TABLA.PRECIO)PRECIO
FROM
(
SELECT (SELECT B.ID_TASA--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_TASA,--PARA ID_TASA
(SELECT B.ID_PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_PRECIO,--PARA ID_PRECIO
(NVL(B.VEZ_TOMADA,0)* (SELECT PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND trim(A.DESCRIPCION)='MATRICULA POR CADA MATERIA 1ERA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
))PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
)TABLA
GROUP BY TABLA.ID_TASA,TABLA.ID_PRECIO
----
----
UNION ALL
SELECT B.ID_TASA,B.ID_PRECIO,PRECIO --AGREGAR LOS RUBROS OBLIGATORIOS
FROM TASA A,TASA_PRECIO B,TASA_CATEGORIA C
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND C.ID_ESTADO=1 AND C.DESCRIPCION='PAGOS OBLIGATORIOS'
AND C.ID_TASA_CATEGORIA=A.ID_TASA_CATEGORIA
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
UNION ALL
---AGREGAR EL COSTO DE INGLES SI TIENE
LN_VALOR_MATRICULA NUMBER(10,2):=0;
LN_RUBRO_TOTAL NUMBER(10,2):=0;
159
LN_VALORES_ADICIONALES NUMBER(10,2):=0;
BEGIN
LN_RUBRO_TOTAL:=PRO_CALCULA_PAGOS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO);
LN_VALORES_ADICIONALES:=LN_RUBRO_TOTAL - LN_VALOR_MATRICULA;
FROM ORDEN_PAGO_DETALLE;
ELSIF LN_NUM_RECIBO <> 1 AND (REG.ID_TASA =1 OR REG.ID_TASA =2 ) THEN
INSERT INTO ORDEN_PAGO_DETALLE(ID_ORDEN_DETALLE,ID_TASA,ID_ORDEN_PAGO,
ID_ESTADO,VALOR_FINAL,ID_PRECIO,VALOR_TASA,PORCENTAJE_TASA)
SELECT NVL(MAX(ID_ORDEN_DETALLE),0)+1,REG.ID_TASA,LN_ID_ORDEN_PAGO,1,
REG.PRECIO * ((CASE
WHEN REG.ID_TASA=1 OR REG.ID_TASA=2 THEN
get_parametro('PORCENTAJE ORDEN PAGO CUOTA '||TO_CHAR(LN_NUM_RECIBO),9)
ELSE
100
END)/100)
,REG.ID_PRECIO,GET_VALOR_TASA(REG.ID_TASA,PN_ID_ALUMNO),
(CASE
WHEN REG.ID_TASA=1 OR REG.ID_TASA=2 THEN
get_parametro('PORCENTAJE ORDEN PAGO CUOTA '||TO_CHAR(LN_NUM_RECIBO),9)
ELSE
160
100
END)PORCENTAJE
FROM ORDEN_PAGO_DETALLE;
END IF;
END IF;
END LOOP;
-------------
LN_NUM_RECIBO:=LN_NUM_RECIBO+1;
LN_DIAS_VENCIMIENTO:=LN_DIAS_VENCIMIENTO + 30;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
\*BEGIN
--INSERTAR EN ORDEN_PAGO_DETALLE
FOR REG IN CUR_PAGOS LOOP
IF REG.PRECIO<>0 THEN
INSERT INTO ORDEN_PAGO_DETALLE
SELECT NVL(MAX(ID_ORDEN_DETALLE),0)+1,REG.ID_TASA,LN_ID_ORDEN_PAGO,1,REG.PRECIO,REG.ID_PRECIO
FROM ORDEN_PAGO_DETALLE;
END IF;
END LOOP;
--INSERTAR EN RECIBO_PAGO
LN_CANT_RECIBOS:=get_parametro('NUMERO DE CUOTAS ORDEN PAGO',9);
LN_VALOR_CUOTA:=PRO_CALCULA_PAGOS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)*
(get_parametro('PORCENTAJE ORDEN PAGO CUOTA '||TO_CHAR(LN_NUM_RECIBO),9)/100);
LN_VALOR_CUOTA_ACUMULADO:=LN_VALOR_CUOTA_ACUMULADO + LN_VALOR_CUOTA;
IF LN_NUM_RECIBO=LN_CANT_RECIBOS-1 THEN
LN_VALOR_CUOTA:=PRO_CALCULA_PAGOS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)-
LN_VALOR_CUOTA_ACUMULADO;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;*\
----------------------
--PR_GRABA_RUBROS_ALUMNO
--***********************************
PROCEDURE PR_GRABA_RUBROS_ALUMNO(PN_ID_ALUMNO INT,PN_ID_PERIODO_LECTIVO INT,LV_RESPUESTA OUT
VARCHAR2)
IS
LN_VEZ_TOMADA_UNICA INT;
--LN_COSTO NUMBER(10,2);
LN_ALUMNO_TIENE_RUBROS INT;
161
BEGIN
SELECT COUNT(*) INTO LN_ALUMNO_TIENE_RUBROS
FROM ORDEN_PAGO
WHERE ID_ESTADO=1 AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ID_ALUMNO=PN_ID_ALUMNO;
IF LN_VEZ_TOMADA_UNICA=1 AND
FUN_CUENTA_MATERIAS_INSCRITAS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)>=4 THEN
--ES DECIR SI SOLO SE VE TODAS MATERIAS POR PRIMERA VEZ Y 1 SOLO NIVEL
--Y SI VE 4 O MAS MATERIAS SE APLICA EL COSTO DE COMBO
PR_COSTO_UN_NIVEL_UNA_VEZ_(PN_ID_ALUMNO ,PN_ID_PERIODO_LECTIVO );
--lo sig si cursa un solo nivel y por priemra vez pero menos de 4 materra
ELSIF LN_VEZ_TOMADA_UNICA=1 AND
FUN_CUENTA_MATERIAS_INSCRITAS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)<4 THEN
PR_COSTO_UN_NIV_UN_VEZ_MM (PN_ID_ALUMNO ,PN_ID_PERIODO_LECTIVO );
END IF;
--LO SIG. ES PARA ALUNOS DE 1 SOLO NIVEL Y QUE TIENEN MAS DE 1 VEZ
ELSIF FUN_NIVELES_CURSA_ALUMNO(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)=1 AND
FUN_CUENTA_VECES_MATERIA_INS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)>1 THEN--SI TIENE DIFERENETES
VECES TOMADAS EJM
PR_COSTO_UN_NIVEL_VECES_DIF(PN_ID_ALUMNO ,PN_ID_PERIODO_LECTIVO );
--LO SIG. ES PARA ALUNOS DE MAS DE 1 NIVEL /SEMESTRE
ELSIF FUN_NIVELES_CURSA_ALUMNO(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)>1 THEN
PR_COSTO_NIVEL_DIF(PN_ID_ALUMNO ,PN_ID_PERIODO_LECTIVO );
END IF;
EXCEPTION
WHEN OTHERS THEN
LV_RESPUESTA:=SQLERRM;
END;
*/
BEGIN
----------------------
SELECT COUNT(DISTINCT( B.VEZ_TOMADA)) INTO LN_CUENTA_VECES--ESTO ES PARA CONTAR
--CUANTAS VECES VE LAS MATERIAS DE SU INSCRIPCION
162
EXCEPTION
WHEN OTHERS THEN
LV_RESPUESTA:=SQLERRM;
END;
IF LN_CANTIDAD_CUOTAS_PEN>0 THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END ;
-----------------FU_CONECTAR
/*FUNCTION FU_CONECTAR (PV_USUARIO VARCHAR2,CLAVE VARCHAR2)RETURN VARCHAR2
IS
LN_EXISTE_USUARIO INT;
LV_TIPO_USUARIO VARCHAR2(100);
BEGIN
SELECT COUNT(*)INTO LN_EXISTE_USUARIO
FROM USUARIO
WHERE upper(LOGIN)=upper(PV_USUARIO) AND PASSWORD=CLAVE
AND ID_ESTADO=1;
IF LN_EXISTE_USUARIO>0 THEN
IF CLAVE IS NOT NULL THEN
SELECT A.TIPO_USUARIO INTO LV_TIPO_USUARIO
FROM USUARIO A,PERSONA P
WHERE upper(A.LOGIN)=upper(PV_USUARIO)
AND A.ID_PERSONA=P.ID_PERSONA
AND A.ID_ESTADO=1 AND A.PASSWORD=CLAVE;
IF LV_TIPO_USUARIO IS NOT NULL THEN
RETURN LV_TIPO_USUARIO;
ELSE
RETURN 'NO LA CONSTRASEÑA NO ES CORRECTA';
END IF;
ELSE
ELSE
RETURN 'NO USUARIO NO EXISTE/CONTRASEÑA INCORRECTA';
END IF;
EXCEPTION
WHEN OTHERS THEN
RETURN 'NO ' ||SQLERRM;
END;*/
---PARA SACAR LOS DATOS DE UNA PERSONA CONECTADA
/*FUNCTION GET_DATOS_CONECTADO(PV_USUARIO VARCHAR2,PV_CLAVE VARCHAR2)RETURN REG_CONECTADO
IS
LR_PERS_CONECTADA REG_CONECTADO;
BEGIN
IF FU_CONECTAR(PV_USUARIO,PV_CLAVE)='ALUMNO' THEN
SELECT A.TIPO_USUARIO,AL.ID_ALUMNO,GET_NOMBRE_ALUMNO(AL.ID_ALUMNO),P.CEDULA,AL.CODIGO_ESTUDIANTIL
INTO LR_PERS_CONECTADA --LV_TIPO_USUARIO
FROM USUARIO A,PERSONA P,ALUMNO AL
WHERE upper(A.LOGIN)=upper(PV_USUARIO)
AND A.ID_PERSONA=P.ID_PERSONA
AND AL.ID_PERSONA=P.ID_PERSONA
AND A.ID_ESTADO=1 AND A.PASSWORD=PV_CLAVE
AND ROWNUM=1;
elsif FU_CONECTAR(PV_USUARIO,PV_CLAVE)='INS-ADMIN' THEN
SELECT U.TIPO_USUARIO,E.ID_EMPLEADO,P.APELLIDO_PATERNO|| ' ' || P.APELLIDO_MATERNO || ' ' || P.PRIMER_NOMBRE
|| ' ' || P.SEGUNDO_NOMBRE EMPLEADO,P.CEDULA,'O' INTO LR_PERS_CONECTADA
FROM PERSONA P,USUARIO U,EMPLEADO E
WHERE P.ID_ESTADO=1 AND P.ID_PERSONA=U.ID_PERSONA
AND E.ID_PERSONA=P.ID_PERSONA AND E.ID_ESTADO=1
AND U.ID_ESTADO=1 AND upper(U.LOGIN)=upper(PV_USUARIO)
AND U.PASSWORD=PV_CLAVE
AND ROWNUM=1;
END IF;
RETURN LR_PERS_CONECTADA;
EXCEPTION
WHEN OTHERS THEN
164
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;*/
-------------GET_VALOR_TASA
FUNCTION GET_VALOR_TASA(PN_ID_TASA INT,PN_ID_ALUMNO INT)RETURN NUMBER
IS
LN_PRECIO NUMBER(10,2);
BEGIN
RETURN LN_NUMERO_CUOTAS;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
-----------------------------------
-------------------------esto es paralas funciones y procedimientos
-----externos
-----ES_TASA_DE_CUOTA
FUNCTION ES_TASA_DE_CUOTA(PN_ID_TASA INT,PN_ID_PERIODO_LECTIVO INT,PN_ID_CUOTA INT)RETURN BOOLEAN
IS
LN_ES_TASA_DE_CUOTA INT;
BEGIN
SELECT COUNT(*) INTO LN_ES_TASA_DE_CUOTA
FROM TASA_CUOTA
WHERE ID_TASA=PN_ID_TASA AND ID_ESTADO=1 AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND N_CUOTA=PN_ID_CUOTA;
return ln_nivel_aprobado;
end;*/
--GET_NIVEL ALUMNO MODIFICADO EL 10 DE MAYO DEL 2009
function get_nivel_alumno(pn_id_alumno number,PN_ID_PERIODO_LECTIVO number)return number
is
ln_nivel_aprobado number;
165
begin
SELECT MAX(NIVEL)NIVEL_MAXIMO into ln_nivel_aprobado
FROM
(
select nvl(max(b.id_semestre),0) NIVEL--into ln_nivel_aprobado
from historial_notas a, malla_detalle b
where a.id_materia=b.id_materia and (a.promedio>=7 OR A.EX_GRACIA>=7)
and a.id_alumno=pn_id_alumno
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
UNION
select nvl(max(b.id_semestre),0)NIVEL--into ln_nivel_aprobado
from notas a, malla_detalle b
where a.id_materia=b.id_materia and (a.nota_promedio>=7 OR A.NOTA_GRACIA>=7)
and a.id_alumno=pn_id_alumno
AND A.ID_ESTADO=14 AND B.ID_ESTADO=1
--AUMENTADO EL 28/05/2009 PARA QUE NO SE MUESTREN LAS MATERIAS VISTAS PERIODO_LECTIVO VIGENTE COMO
--PREREQUISITOS
AND ((a.ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND TRIM(a.TIPO_NOTA)='SEM')OR TRIM(a.TIPO_NOTA)
IN('HOM','GRA'))
);
return ln_nivel_aprobado;
end;
---GET_NOMBRE_MATERIA
/*CREATE OR REPLACE FUNCTION GET_NOMBRE_MATERIA(PN_ID_MATERIA NUMBER)RETURN VARCHAR2 IS
NOMBRE_MATERIA VARCHAR2(100);
BEGIN
SELECT DESCRIPCION INTO NOMBRE_MATERIA FROM MATERIA
WHERE ID_MATERIA=PN_ID_MATERIA;
RETURN NOMBRE_MATERIA;
END;
*/
/*HASTA 10 MAYO 2009
FUNCTION GET_NUMERO_CREDITOS(PN_ID_ALUMNO NUMBER,PN_ID_PERIODO_LECTIVO NUMBER)RETURN NUMBER
IS
LN_NUMERO_CREDITOS NUMBER(3);
BEGIN
union
select id_materia
from materia_equivalente
where id_estado=1 and id_materia_equivale in(
select y.id_materia
from historial_notas y
where y.id_materia not in(select id_materia from periodo_materia where id_estado=1
and id_periodo_lectivo=PN_ID_PERIODO_LECTIVO)
and y.ID_estado=1 and y.id_alumno=PN_ID_ALUMNO and(y.promedio>=7 or y.ex_gracia>=7)
)
);
RETURN LN_NUMERO_CREDITOS;
END;
*/
union
select id_materia
from materia_equivalente
where id_estado=1 and id_materia_equivale in(
select y.id_materia
from historial_notas y
where y.id_materia not in(select id_materia from periodo_materia where id_estado=1
and id_periodo_lectivo=PN_ID_PERIODO_LECTIVO)
and y.ID_estado=1 and y.id_alumno=PN_ID_ALUMNO and(y.promedio>=7 or y.ex_gracia>=7)
)
)
OR
ID_MATERIA IN(
SELECT Y.ID_MATERIA
from notas y
where y.ID_estado=14 and y.id_alumno=PN_ID_ALUMNO and(y.NOTA_promedio>=7 or y.NOTA_gracia>=7)
and y.id_materia in(select id_materia from periodo_materia where id_estado=1 and
id_periodo_lectivo=PN_ID_PERIODO_LECTIVO)
--AUMENTADO EL 28/05/2009 PARA QUE NO SE MUESTREN LAS MATERIAS VISTAS PERIODO_LECTIVO VIGENTE
COMO
--PREREQUISITOS
--modificado el 14 de junio de 2009 6:57am
AND ((y.ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND TRIM(y.TIPO_NOTA)='SEM')OR
TRIM(y.TIPO_NOTA) IN('HOM','GRA'))
union
select id_materia
from materia_equivalente
where id_estado=1 and id_materia_equivale in(
select y.id_materia
from notas y
where y.id_materia not in(select id_materia from periodo_materia where id_estado=1
and id_periodo_lectivo=PN_ID_PERIODO_LECTIVO)
and y.ID_estado=14 and y.id_alumno=PN_ID_ALUMNO and(y.NOTA_promedio>=7 or y.NOTA_gracia>=7)
--AUMENTADO EL 28/05/2009 PARA QUE NO SE MUESTREN LAS MATERIAS VISTAS PERIODO_LECTIVO
VIGENTE COMO
--PREREQUISITOS
--ult modificacion 14 Junio 2009 6:58 am
AND ((y.ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND TRIM(y.TIPO_NOTA)='SEM')OR
TRIM(y.TIPO_NOTA) IN('HOM','GRA'))
)
)
;
RETURN LN_NUMERO_CREDITOS;
END;
--FU_MATERIAS_APRO_SEMESTRE PARA EXTRAER LA CANTIDAD DE MATERIAS DE UN NIVEL
function FU_MATERIAS_APRO_SEMESTRE(PN_ID_ALUMNO number,PN_SEMESTRE NUMBER,PN_ID_PERIODO_LECTIVO
NUMBER)return number
is
LN_CANT_MATERIA number;
begin
SELECT COUNT(ID_MATERIA)INTO LN_CANT_MATERIA
FROM
(
select A.ID_MATERIA--into ln_nivel_aprobado
from historial_notas a, malla_detalle b
where a.id_materia=b.id_materia and (a.promedio>=7 OR A.EX_GRACIA>=7)
and a.id_alumno=PN_ID_ALUMNO
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1 AND B.ID_SEMESTRE=PN_SEMESTRE
AND A.ID_MATERIA IN (SELECT ID_MATERIA FROM PERIODO_MATERIA WHERE ID_ESTADO=1)
UNION
select A.ID_MATERIA--into ln_nivel_aprobado
from notas a, malla_detalle b
where a.id_materia=b.id_materia and (a.nota_promedio>=7 OR A.NOTA_GRACIA>=7)
and a.id_alumno=PN_ID_ALUMNO
AND A.ID_ESTADO=14 AND B.ID_ESTADO=1 AND B.ID_SEMESTRE=PN_SEMESTRE
AND A.ID_MATERIA IN (SELECT ID_MATERIA FROM PERIODO_MATERIA WHERE ID_ESTADO=1)
--AUMENTADO EL 28/05/2009 PARA QUE NO SE MUESTREN LAS MATERIAS VISTAS PERIODO_LECTIVO VIGENTE COMO
--PREREQUISITOS
--ult modificacion 14 Junio 09 6:59 am
AND ((a.ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND TRIM(a.TIPO_NOTA)='SEM')OR TRIM(a.TIPO_NOTA)
IN('HOM','GRA'))
UNION
167
SELECT ID_MATERIA
FROM MATERIA_EQUIVALENTE
WHERE ID_MATERIA_EQUIVALE IN(select A.ID_MATERIA--into ln_nivel_aprobado
from notas a, malla_detalle b
where a.id_materia=b.id_materia and (a.nota_promedio>=7 OR A.NOTA_GRACIA>=7)
and a.id_alumno=PN_ID_ALUMNO
AND A.ID_ESTADO=14 AND B.ID_ESTADO=1 AND B.ID_SEMESTRE=PN_SEMESTRE
--AUMENTADO EL 28/05/2009 PARA QUE NO SE MUESTREN LAS MATERIAS VISTAS PERIODO_LECTIVO
VIGENTE COMO
--PREREQUISITOS
AND ((a.ID_PERIODO_LECTIVO<>PN_ID_PERIODO_LECTIVO AND TRIM(a.TIPO_NOTA)='SEM')OR
TRIM(a.TIPO_NOTA) IN('HOM','GRA'))
)
AND ID_ESTADO=1
UNION
SELECT ID_MATERIA
FROM MATERIA_EQUIVALENTE
WHERE ID_MATERIA_EQUIVALE IN(select A.ID_MATERIA--into ln_nivel_aprobado
from HISTORIAL_NOTAS a, malla_detalle b
where a.id_materia=b.id_materia and (a.promedio>=7 OR A.EX_GRACIA>=7)
and a.id_alumno=PN_ID_ALUMNO
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1 AND B.ID_SEMESTRE=PN_SEMESTRE
)
AND ID_ESTADO=1
);
return LN_CANT_MATERIA;
end;
--GET_NUMERO_RECIBO
FUNCTION GET_NUMERO_RECIBO(PN_ID_PERIODO_LECTIVO INT)RETURN NUMBER
IS
LN_NUMERO_RECIBO NUMBER(5);
BEGIN
SELECT NVL(MAX(NUM_RECIBO),0)+1 INTO LN_NUMERO_RECIBO
FROM ORDEN_PAGO
WHERE ID_ESTADO=1 AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO;
RETURN LN_NUMERO_RECIBO;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
--GET_PARAMETRO
/*FUNCTION GET_PARAMETRO(PV_DESCRIPCION VARCHAR2,PN_ID_MODULO INT)RETURN NUMBER
IS
LN_VALOR NUMBER(5);
BEGIN
SELECT VALOR INTO LN_VALOR
FROM PARAMETROS
WHERE ID_ESTADO=1 AND UPPER(DESCRIPCION)=UPPER(PV_DESCRIPCION)
AND MODULO=PN_ID_MODULO;
RETURN NVL(LN_VALOR,0);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;*/
--GET_PORCENTAJE
FUNCTION GET_PORCENTAJE(PN_ID_TASA INT,PN_ID_PERIODO_LECTIVO INT,PN_ID_CUOTA INT)RETURN NUMBER
IS
LN_ES_TASA_DE_CUOTA INT;
LN_PORCENTAJE NUMBER(10,2);
BEGIN
SELECT COUNT(*) INTO LN_ES_TASA_DE_CUOTA
FROM TASA_CUOTA
WHERE ID_TASA=PN_ID_TASA AND ID_ESTADO=1 AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND N_CUOTA=PN_ID_CUOTA;
RETURN LN_PRECIO;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
--GET_TOTAL_CUOTA
FUNCTION GET_TOTAL_CUOTA(PN_ID_PERIODO_LECTIVO INT,PN_ID_ALUMNO INT,PN_CUOTA
INT,PN_ID_TIPO_MOVIMIENTO INT)RETURN NUMBER
IS
LN_VALOR_CUOTA NUMBER(10,2);
LN_VEZ_TOMADA_UNICA INT;
LN_CUENTA_VECES INT;
BEGIN
SELECT COUNT(DISTINCT( B.VEZ_TOMADA)) INTO LN_CUENTA_VECES--MUESTRA LA UNICA VEZ
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO;
END IF;
--------------------
-------------------
IF FUN_CUENTA_VECES_MATERIA_INS(PN_ID_ALUMNO,PN_ID_PERIODO_LECTIVO)=1 AND LN_VEZ_TOMADA_UNICA=1
THEN--SI TIENE DIFERENETES VECES TOMADAS EJM
--1ERA VEZ,2DA VEZ(SERIAN 2 PORQUE EN LA INSCRIPCION HAY 2 VECES TOMADAS DIFERENTES
--COSTO DE AUTOFINANCIAMIENTO
SELECT NVL(SUM((TABLA_FINAL.PRECIO * TC.PORC_CUOTA)/100),0)INTO LN_VALOR_CUOTA
FROM TASA_CUOTA TC,(
--RUBROS OBLIGATORIOS
SELECT COUNT(TABLA.ID_TASA)CANTIDAD,TABLA.ID_TASA,TABLA.ID_PRECIO,SUM(TABLA.PRECIO)PRECIO
FROM
(
SELECT B.ID_TASA,B.ID_PRECIO,PRECIO
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA C
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(A.DESCRIPCION) =UPPER('AUTOFINANCIAMIENTO')
AND B.ID_ALUMNO_CATEGORIA=C.ID_ALUMNO_CATEGORIA AND C.ID_ESTADO=1
AND (B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
OR UPPER(C.DESCRIPCION) LIKE '%TODOS%')
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1 AND B.ID_SEMESTRE=(SELECT NVL(MAX(PD.SEMESTRE),0) FROM
169
UNION ALL
------- LO SIGUIENTE ES APLICABLE A LOS ALUMNOS QUE VEAN LA MATERIAS POR UNA SOLA VEZ
SELECT B.ID_TASA,B.ID_PRECIO,PRECIO
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA C
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(A.DESCRIPCION) ='EXONERACION DE AUTOFINANCIAMIENTO'
AND B.ID_ALUMNO_CATEGORIA=C.ID_ALUMNO_CATEGORIA AND C.ID_ESTADO=1
AND (B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
OR UPPER(C.DESCRIPCION) LIKE '%TODOS%')
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1 AND B.ID_SEMESTRE=(SELECT NVL(MAX(PD.SEMESTRE),0) FROM
INSCRIPCION I,INSCRIPCION_DETALLE ID,PARALELO P,PARALELO_DESCRIPCION PD
WHERE P.DESCRIPCION=PD.DESCRIPCION AND I.ID_INSCRIPCION=ID.ID_INSCRIPCION
AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND ID.ID_PARALELO=P.ID_PARALELO AND
I.ID_ALUMNO=PN_ID_ALUMNO )
AND A.ID_TIPO_MOVIMIENTO=2--2 ES EGRESO
-----------
UNION ALL
--LO SIG DEBEN PAGAR TODOS AUNQUE TENGAN BENEFICIOS DE EXONERACION
SELECT B.ID_TASA,B.ID_PRECIO,PRECIO --AGREGAR LOS RUBROS OBLIGATORIOS--EN ESTE CASO ES INTERNET
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA AC
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.OBLIGATORIO='SI'
UNION ALL
---AGREGAR EL COSTO DE INGLES SI TIENE
UNION ALL
--ESTO ES EN CASO DE QUE SEA ALUMNO EXONERADO DEBERA QUITARSELE EL VALOR DE INGLES SI TIENE
SELECT B.ID_TASA,B.ID_PRECIO,( SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-',1,1)+1,1) *
B.PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1)SUBTOTAL
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA AC
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND UPPER(TRIM(A.DESCRIPCION)) =UPPER(TRIM('EXONERACION MODULO DE INGLES'))
AND AC.ID_ALUMNO_CATEGORIA=B.ID_ALUMNO_CATEGORIA AND AC.ID_ESTADO=1
AND (B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)OR
UPPER( AC.DESCRIPCION) LIKE '%TODOS%')
170
UNION ALL
---------------------------------
--lo sif es para el carnet
SELECT B.ID_TASA,B.ID_PRECIO,( SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-',1,2)+1,1) *
B.PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1)SUBTOTAL
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA AC
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND UPPER(TRIM(A.DESCRIPCION)) =TRIM('CARNET')
AND AC.ID_ALUMNO_CATEGORIA=B.ID_ALUMNO_CATEGORIA AND AC.ID_ESTADO=1
AND (B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)OR
UPPER(AC.DESCRIPCION) LIKE '%TODOS%')
UNION ALL
---PARA EXPONERAR EL CARNET SU COSTO
SELECT B.ID_TASA,B.ID_PRECIO,( SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-',1,2)+1,1) *
B.PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1)SUBTOTAL
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA AC
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND UPPER(TRIM(A.DESCRIPCION)) =TRIM('EXONERACION DE CARNET')
AND AC.ID_ALUMNO_CATEGORIA=B.ID_ALUMNO_CATEGORIA AND AC.ID_ESTADO=1
AND (B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)OR
UPPER(AC.DESCRIPCION) LIKE '%TODOS%')
)TABLA
GROUP BY TABLA.ID_TASA,TABLA.ID_PRECIO
)TABLA_FINAL,TASA T
WHERE TC.ID_ESTADO=1 AND TC.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND N_CUOTA=PN_CUOTA
AND TC.ID_TASA=TABLA_FINAL.ID_TASA AND T.ID_TASA=TABLA_FINAL.ID_TASA
AND TC.ID_TASA=T.ID_TASA AND T.ID_TIPO_MOVIMIENTO=PN_ID_TIPO_MOVIMIENTO;
-------------------------
------------------
ELSE
SELECT NVL(SUM((TABLA_FINAL.PRECIO * TC.PORC_CUOTA)/100),0)INTO LN_VALOR_CUOTA
FROM TASA_CUOTA TC,(
--RUBROS OBLIGATORIOS
SELECT COUNT(TABLA.ID_TASA)CANTIDAD,TABLA.ID_TASA,TABLA.ID_PRECIO,SUM(TABLA.PRECIO)PRECIO
FROM
(
SELECT B.ID_TASA,B.ID_PRECIO,PRECIO --AGREGAR LOS RUBROS OBLIGATORIOS--EN ESTE CASO ES INTERNET
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA AC
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND UPPER(A.OBLIGATORIO)='SI'
UNION ALL
--MODULO DE INGLES
SELECT COUNT(TABLA.ID_TASA)CANTIDAD, TABLA.ID_TASA,TABLA.ID_PRECIO,SUM(TABLA.SUBTOTAL )PRECIO
FROM
(
SELECT B.ID_TASA,B.ID_PRECIO,( SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-',1,1)+1,1) *
B.PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1)SUBTOTAL
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA AC
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND UPPER(TRIM(A.DESCRIPCION)) =UPPER(TRIM('MODULO DE INGLES'))
AND AC.ID_ALUMNO_CATEGORIA=B.ID_ALUMNO_CATEGORIA AND AC.ID_ESTADO=1
AND (B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)OR
UPPER(AC.DESCRIPCION) LIKE '%TODOS%')
)TABLA
GROUP BY TABLA.ID_TASA,TABLA.ID_PRECIO
UNION ALL
--CARNET
SELECT COUNT(TABLA.ID_TASA)CANTIDAD,TABLA.ID_TASA,TABLA.ID_PRECIO,SUM(SUBTOTAL)PRECIO
FROM
(
SELECT B.ID_TASA,B.ID_PRECIO,( SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-',1,2)+1,1) *
B.PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1)SUBTOTAL
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA AC
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND UPPER(TRIM(A.DESCRIPCION)) =UPPER(TRIM('CARNET'))
AND AC.ID_ALUMNO_CATEGORIA=B.ID_ALUMNO_CATEGORIA AND AC.ID_ESTADO=1
AND (B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)OR
UPPER(AC.DESCRIPCION) LIKE '%TODOS%')
)TABLA
GROUP BY TABLA.ID_TASA,TABLA.ID_PRECIO
UNION ALL
--MATRICULA POR CADA MATERIA 1ERA VEZ'
SELECT COUNT(TABLA.ID_TASA)CANTIDAD,TABLA.ID_TASA,TABLA.ID_PRECIO,SUM(TABLA.PRECIO)PRECIO
FROM
(
SELECT (SELECT B.ID_TASA--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))=UPPER('MATRICULA POR CADA MATERIA 1ERA VEZ')
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_TASA,--PARA ID_TASA
(SELECT B.ID_PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))=UPPER('MATRICULA POR CADA MATERIA 1ERA VEZ')
172
UNION ALL
--RECARGO POR REPETICION SEGUNDA VEZ
SELECT COUNT(TABLA.ID_TASA)CANTIDAD,TABLA.ID_TASA,TABLA.ID_PRECIO,SUM(TABLA.PRECIO)PRECIO
FROM
(
SELECT (SELECT B.ID_TASA--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))=UPPER('RECARGO POR REPETICION SEGUNDA VEZ')
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_TASA,--PARA ID_TASA
(SELECT B.ID_PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))='RECARGO POR REPETICION SEGUNDA VEZ'
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_PRECIO,--PARA ID_PRECIO
(SELECT PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))=UPPER('RECARGO POR REPETICION SEGUNDA VEZ')
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
)PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND B.VEZ_TOMADA=2
)TABLA
GROUP BY TABLA.ID_TASA,TABLA.ID_PRECIO
UNION ALL
--LO SIG ES PARA EL RECARGO EN CASO DE QUE ALUMNO TIENE MATERIA POR TERCERA VEZ
SELECT COUNT(TABLA.ID_TASA)CANTIDAD,TABLA.ID_TASA,TABLA.ID_PRECIO,SUM(TABLA.PRECIO)PRECIO
FROM
(
SELECT (SELECT B.ID_TASA--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))=UPPER('RECARGO POR REPETICION TERCERA VEZ')
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_TASA,--PARA ID_TASA
(SELECT B.ID_PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))=UPPER('RECARGO POR REPETICION TERCERA VEZ')
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_PRECIO,--PARA ID_PRECIO
173
END IF;
RETURN LN_VALOR_CUOTA;
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END ;
--get_vez_tomada_materia
--MODIFICADO 11 DE MAYO DEL 2009
function get_vez_tomada_materia(pn_id_alumno number,pn_id_materia number,pn_id_perido_lectivo number)return number
is
ln_vez_tomada number(3):=0;--representa la vez en que se tomara una materia es decir las veces que existen el
--el historial de notas sumado(+) 1 (uno)
ln_id_materia number(4):=0;
ln_cuenta number(3):=0;
--AUMENTADO 11 DE JUNIO DE 2009
LN_CUENTA_EQUIVALENTE NUMBER(2):=0;
EXISTE_MATERIA NUMBER(3):=0;
begin
--ojo es necesario comprobar si una materia que no existe pero es equivalente se la cuenta como
--primera vez o se le suma a la materia equivalente reprobada
else
ln_id_materia:=pn_id_materia;
end if;
-----------------------
SELECT MAX(CANT) INTO EXISTE_MATERIA
FROM
(
SELECT COUNT(*)CANT
FROM HISTORIAL_NOTAS
WHERE ID_ESTADO=1 AND ID_MATERIA= ln_id_materia AND ID_ALUMNO=PN_ID_ALUMNO
UNION
SELECT COUNT(*)CANT
FROM NOTAS
WHERE ID_ESTADO<>3 AND ID_MATERIA= ln_id_materia AND ID_ALUMNO=PN_ID_ALUMNO
);
-------------------------
IF EXISTE_MATERIA=0 THEN
SELECT NVL(MAX(VECES),0)into ln_vez_tomada
174
FROM
(
select nvl(max(numero_veces),0)VECES--into ln_vez_tomada
from historial_notas
where ID_estado=1 and id_alumno=PN_ID_ALUMNO and id_materia in (select id_materia_equivale from materia_equivalente
where id_materia=ln_id_materia)
UNION
select nvl(max(N.NO_VEZ),0)VECES--into ln_vez_tomada
from NOTAS N
where N.ID_estado<>3 and N.id_alumno=PN_ID_ALUMNO and id_materia in (select id_materia_equivale from materia_equivalente
where id_materia=ln_id_materia)
--AUMENTADO EL 28/05/2009 PARA QUE NO SE MUESTREN LAS MATERIAS VISTAS PERIODO_LECTIVO VIGENTE COMO
--PREREQUISITOS
AND N.ID_PERIODO_LECTIVO<>pn_id_perido_lectivo
);
-------------------------
------------------------
ELSE
return ln_vez_tomada + 1;
end get_vez_tomada_materia;
--PR_GRAB_COSTO_CON_EXO
PROCEDURE PR_GRAB_COSTO_CON_EXO(PN_ID_ALUMNO INT,PN_ID_PERIODO_LECTIVO INT,LV_RESULTA OUT
VARCHAR2,PV_USUARIO VARCHAR2)
IS
LN_NUMERO_CUOTAS INT;
LN_CUOTA INT:=1;
LN_ID_INSCRIPCION INT;
LN_NUM_MESES INT:=1;
LN_ID_ORDEN_PAGO INT;
LN_NUMERO_RECIBO NUMBER(5);
CURSOR CUR_PAGOS IS
SELECT COUNT(TABLA.ID_TASA)CANTIDAD,TABLA.ID_TASA,TABLA.ID_PRECIO,SUM(TABLA.PRECIO)PRECIO
FROM
(
SELECT B.ID_TASA,B.ID_PRECIO,PRECIO
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA C
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(A.DESCRIPCION) ='AUTOFINANCIAMIENTO'
AND B.ID_ALUMNO_CATEGORIA=C.ID_ALUMNO_CATEGORIA AND C.ID_ESTADO=1
AND (B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
OR UPPER(C.DESCRIPCION) LIKE '%TODOS%')
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1 AND B.ID_SEMESTRE=(SELECT NVL(MAX(PD.SEMESTRE),0) FROM
INSCRIPCION I,INSCRIPCION_DETALLE ID,PARALELO P,PARALELO_DESCRIPCION PD
WHERE P.DESCRIPCION=PD.DESCRIPCION AND I.ID_INSCRIPCION=ID.ID_INSCRIPCION
AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND ID.ID_PARALELO=P.ID_PARALELO AND
I.ID_ALUMNO=PN_ID_ALUMNO )
AND A.ID_TIPO_MOVIMIENTO=1--1 ES INGRESO
UNION ALL
------- LO SIGUIENTE ES APLICABLE A LOS ALUMNOS QUE VEAN LA MATERIAS POR UNA SOLA VEZ
SELECT B.ID_TASA,B.ID_PRECIO,PRECIO
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA C
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(A.DESCRIPCION) =UPPER('EXONERACION DE AUTOFINANCIAMIENTO')
AND B.ID_ALUMNO_CATEGORIA=C.ID_ALUMNO_CATEGORIA AND C.ID_ESTADO=1
175
UNION ALL
---AGREGAR EL COSTO DE INGLES SI TIENE
UNION ALL
--ESTO ES EN CASO DE QUE SEA ALUMNO EXONERADO DEBERA QUITARSELE EL VALOR DE INGLES SI TIENE
SELECT B.ID_TASA,B.ID_PRECIO,( SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-',1,1)+1,1) *
B.PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1)SUBTOTAL
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA AC
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND UPPER(TRIM(A.DESCRIPCION)) =UPPER(TRIM('EXONERACION MODULO DE INGLES'))
AND AC.ID_ALUMNO_CATEGORIA=B.ID_ALUMNO_CATEGORIA AND AC.ID_ESTADO=1
AND (B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)OR
UPPER(AC.DESCRIPCION) LIKE '%TODOS%')
UNION ALL
---------------------------------
--lo sif es para el carnet
SELECT B.ID_TASA,B.ID_PRECIO,( SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-',1,2)+1,1) *
B.PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1)SUBTOTAL
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA AC
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND UPPER(TRIM(A.DESCRIPCION)) =UPPER(TRIM('CARNET'))
176
UNION ALL
---PARA EXPONERAR EL CARNET SU COSTO
SELECT B.ID_TASA,B.ID_PRECIO,( SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-',1,2)+1,1) *
B.PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1)SUBTOTAL
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA AC
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND UPPER(TRIM(A.DESCRIPCION)) =UPPER(TRIM('EXONERACION DE CARNET'))
AND AC.ID_ALUMNO_CATEGORIA=B.ID_ALUMNO_CATEGORIA AND AC.ID_ESTADO=1
AND (B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)OR
UPPER(AC.DESCRIPCION) LIKE '%TODOS%')
)TABLA
GROUP BY TABLA.ID_TASA,TABLA.ID_PRECIO
;
BEGIN
SELECT GET_NUMERO_CUOTAS(PN_ID_PERIODO_LECTIVO)INTO LN_NUMERO_CUOTAS
FROM DUAL;
--ID_INSCRIPCION
SELECT DISTINCT I.ID_INSCRIPCION INTO LN_ID_INSCRIPCION
FROM INSCRIPCION I,INSCRIPCION_DETALLE ID
WHERE I.ID_INSCRIPCION=ID.ID_INSCRIPCION AND I.ID_ESTADO=1 AND ID.ID_ESTADO=1
AND I.ID_ALUMNO=PN_ID_ALUMNO AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO;
IF LN_NUMERO_CUOTAS>0 THEN
END IF;
END LOOP;
LN_NUM_MESES:=LN_NUM_MESES + 1;
177
LN_CUOTA:=LN_CUOTA +1;
LN_NUMERO_RECIBO:=LN_NUMERO_RECIBO +1;
END LOOP;
LV_RESULTA:='SI';
ELSE
LV_RESULTA:='NO PUEDE GRABAR DEBIDO A QUE NO EXISTE VALORES ASIGNADOS PARA LAS CUOTAS DE LAS TASAS';
END IF;
EXCEPTION
WHEN OTHERS THEN
LV_RESULTA:=SQLERRM;
END;
-------PR_GRAB_COSTO_SIN_EXO-------------
PROCEDURE PR_GRAB_COSTO_SIN_EXO(PN_ID_ALUMNO INT,PN_ID_PERIODO_LECTIVO INT,LV_RESULTA OUT
VARCHAR2)
IS
LN_NUMERO_CUOTAS INT;
LN_CUOTA INT:=1;
LN_ID_INSCRIPCION INT;
LN_NUM_MESES INT:=1;
LN_ID_ORDEN_PAGO INT;
LN_NUMERO_RECIBO NUMBER(5);
CURSOR CUR_PAGOS IS
SELECT
COUNT(TABLA_FINAL.ID_TASA)CANTIDAD,TABLA_FINAL.ID_TASA,TABLA_FINAL.ID_PRECIO,SUM(TABLA_FINAL.PRECIO)P
RECIO
FROM
(
--RUBROS OBLIGATORIOS
SELECT B.ID_TASA,B.ID_PRECIO,PRECIO --AGREGAR LOS RUBROS OBLIGATORIOS--EN ESTE CASO ES INTERNET
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA AC
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND UPPER(A.OBLIGATORIO)='SI'
UNION ALL
--MODULO DE INGLES
SELECT B.ID_TASA,B.ID_PRECIO,( SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-',1,1)+1,1) *
B.PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1)SUBTOTAL
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA AC
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND UPPER(TRIM(A.DESCRIPCION)) =UPPER(TRIM('MODULO DE INGLES'))
AND AC.ID_ALUMNO_CATEGORIA=B.ID_ALUMNO_CATEGORIA AND AC.ID_ESTADO=1
AND (B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)OR
UPPER(AC.DESCRIPCION) LIKE '%TODOS%')
178
UNION ALL
--CARNET
SELECT B.ID_TASA,B.ID_PRECIO,( SELECT DISTINCT SUBSTR(B.OBSERVACION,INSTR(B.OBSERVACION,'-',1,2)+1,1) *
B.PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ROWNUM=1)SUBTOTAL
FROM TASA A,TASA_PRECIO B,ALUMNO_CATEGORIA AC
WHERE A.ID_TASA=B.ID_TASA
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND UPPER(TRIM(A.DESCRIPCION)) =UPPER(TRIM('CARNET'))
AND AC.ID_ALUMNO_CATEGORIA=B.ID_ALUMNO_CATEGORIA AND AC.ID_ESTADO=1
AND (B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)OR
UPPER(AC.DESCRIPCION) LIKE '%TODOS%')
UNION ALL
--MATRICULA POR CADA MATERIA 1ERA VEZ'
SELECT (SELECT B.ID_TASA--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))=UPPER('MATRICULA POR CADA MATERIA 1ERA VEZ')
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_TASA,--PARA ID_TASA
(SELECT B.ID_PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))=UPPER('MATRICULA POR CADA MATERIA 1ERA VEZ')
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_PRECIO,--PARA ID_PRECIO
(SELECT PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(TRIM(A.DESCRIPCION))=UPPER('MATRICULA POR CADA MATERIA 1ERA VEZ')
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
)PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND B.VEZ_TOMADA>1
UNION ALL
--RECARGO POR REPETICION SEGUNDA VEZ
SELECT TABLA.ID_TASA,TABLA.ID_PRECIO,SUM(TABLA.PRECIO)PRECIO
FROM
(
SELECT (SELECT B.ID_TASA--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))=UPPER('RECARGO POR REPETICION SEGUNDA VEZ')
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_TASA,--PARA ID_TASA
(SELECT B.ID_PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))=UPPER('RECARGO POR REPETICION SEGUNDA VEZ')
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_PRECIO,--PARA ID_PRECIO
(SELECT PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))=UPPER('RECARGO POR REPETICION SEGUNDA VEZ')
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
)PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
179
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND B.VEZ_TOMADA=2
)TABLA
GROUP BY TABLA.ID_TASA,TABLA.ID_PRECIO
UNION ALL
--LO SIG ES PARA EL RECARGO EN CASO DE QUE ALUMNO TIENE MATERIA POR TERCERA VEZ
SELECT TABLA.ID_TASA,TABLA.ID_PRECIO,SUM(TABLA.PRECIO)PRECIO
FROM
(
SELECT (SELECT B.ID_TASA--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))=UPPER('RECARGO POR REPETICION TERCERA VEZ')
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_TASA,--PARA ID_TASA
(SELECT B.ID_PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))=UPPER('RECARGO POR REPETICION TERCERA VEZ')
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1)ID_PRECIO,--PARA ID_PRECIO
(SELECT PRECIO--MUESTRA EL COSTO por cada materia
FROM TASA A,TASA_PRECIO B
WHERE A.ID_TASA=B.ID_TASA
AND UPPER(trim(A.DESCRIPCION))=UPPER('RECARGO POR REPETICION TERCERA VEZ')
AND B.ID_ALUMNO_CATEGORIA=(SELECT DISTINCT ID_ALUMNO_CATEGORIA FROM ALUMNO WHERE
ID_ALUMNO=PN_ID_ALUMNO)
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
)PRECIO
FROM INSCRIPCION A,INSCRIPCION_DETALLE B
WHERE A.ID_INSCRIPCION=B.ID_INSCRIPCION
AND A.ID_ESTADO=1 AND B.ID_ESTADO=1
AND A.ID_ALUMNO=PN_ID_ALUMNO AND B.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND B.VEZ_TOMADA=3
)TABLA
GROUP BY TABLA.ID_TASA,TABLA.ID_PRECIO
)TABLA_FINAL
GROUP BY TABLA_FINAL.ID_TASA,TABLA_FINAL.ID_PRECIO
;
BEGIN
SELECT GET_NUMERO_CUOTAS(PN_ID_PERIODO_LECTIVO)INTO LN_NUMERO_CUOTAS
FROM DUAL;
--ID_INSCRIPCION
SELECT DISTINCT I.ID_INSCRIPCION INTO LN_ID_INSCRIPCION
FROM INSCRIPCION I,INSCRIPCION_DETALLE ID
WHERE I.ID_INSCRIPCION=ID.ID_INSCRIPCION AND I.ID_ESTADO=1 AND ID.ID_ESTADO=1
AND I.ID_ALUMNO=PN_ID_ALUMNO AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO;
IF LN_NUMERO_CUOTAS>0 THEN
WHILE LN_CUOTA<=LN_NUMERO_CUOTAS LOOP
SELECT NVL(MAX(ID_ORDEN_PAGO),0)+1 INTO LN_ID_ORDEN_PAGO
FROM ORDEN_PAGO;
END IF;
END LOOP;
LN_NUM_MESES:=LN_NUM_MESES + 1;
LN_CUOTA:=LN_CUOTA +1;
LN_NUMERO_RECIBO:=LN_NUMERO_RECIBO +1;
END LOOP;
LV_RESULTA:='SI';
ELSE
LV_RESULTA:='NO PUEDE GRABAR DEBIDO A QUE NO EXISTE VALORES ASIGNADOS PARA LAS CUOTAS DE LAS TASAS';
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
END;
IF LN_CANT_REPETIDOS=0 THEN
END;
END;
--GET_TASA_CUOTA
PROCEDURE GET_TASA_CUOTA(PV_OPCION VARCHAR2,PN_NUM_CUOTA INT,PN_ID_PERIODO_LECTIVO
INT,PC_TASA_CUOTA OUT R_CURSOR)
IS
BEGIN
IF PV_OPCION='TODAS' THEN
OPEN PC_TASA_CUOTA FOR
select tc.ID_TASA,t.descripcion TASA,TC.N_CUOTA,TC.PORC_CUOTA
from tasa_cuota tc,tasa t
where tc.id_periodo_lectivo=PN_ID_PERIODO_LECTIVO
and t.id_tasa=tc.id_tasa
and tc.id_estado=1 and t.id_estado=1
order by tc.n_cuota,tc.id_tasa;
ELSIF PV_OPCION='CUOTA' THEN
OPEN PC_TASA_CUOTA FOR
select tc.ID_TASA,t.descripcion TASA,TC.N_CUOTA,TC.PORC_CUOTA
from tasa_cuota tc,tasa t
where tc.id_periodo_lectivo=PN_ID_PERIODO_LECTIVO
and t.id_tasa=tc.id_tasa
and tc.id_estado=1 and t.id_estado=1
AND TC.N_CUOTA=PN_NUM_CUOTA
order by tc.n_cuota,tc.id_tasa;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
---ACTUALIZA TASA_CUOTA
PROCEDURE ACTUALIZA_TASA_CUOTA(PN_ID_PERIODO_LECTIVO INT,PN_ID_TASA INT,PN_NUM_CUOTA
INT,PN_PORCENTAJE NUMBER,PV_RESULTADO OUT VARCHAR2)IS
--AUMENTADO 12 DE JUNIO 18:35
LN_SUMA_PORCENTAJE NUMBER(5,2):=0.00;
BEGIN
UPDATE TASA_CUOTA
SET PORC_CUOTA=PN_PORCENTAJE
WHERE ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ID_TASA=PN_ID_TASA AND N_CUOTA=PN_NUM_CUOTA
AND ID_ESTADO=1;
------------------------------------------
--AUMENTADO 12 DE JUNIO DEL 2009 A LAS 18:35
SELECT NVL(SUM(NVL(PORC_CUOTA,0)),0) INTO LN_SUMA_PORCENTAJE
FROM TASA_CUOTA
WHERE ID_ESTADO=1 AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ID_TASA=PN_ID_TASA;
-------------------------------------------------------------
--VALIDA QUE UNA TASA SUPERE EN PORCENTAJE AL 100 EN LAS DIFERENTES
--CUOTAS
IF LN_SUMA_PORCENTAJE >100 THEN
PV_RESULTADO:='NO SE PUEDE ACTUALIZAR PORCENTAJE DE TASA DEBIDO A QUE LAS SUMA DE PORCENTAJES EN
DIFERENTES CUOTAS SUPERA AL 100%, SIENDO :'|| LN_SUMA_PORCENTAJE || '%';
ELSE
PV_RESULTADO:='SE ACTUALIZO CON ÉXITO EL/LOS PORCENTAJE/S DE LA TASA/S SELECCIONADAS';
END IF;
EXCEPTION
WHEN OTHERS THEN
PV_RESULTADO:=SQLERRM;
END;
---ANULA TASA_CUOTA
PROCEDURE ANULA_TASA_CUOTA(PN_ID_PERIODO_LECTIVO INT,PN_ID_TASA INT,PN_NUM_CUOTA
INT,PV_RESULTADO OUT VARCHAR2)IS
BEGIN
UPDATE TASA_CUOTA
SET ID_ESTADO=3--3 EQUIVALE A ANULADO EL REGISTRO
WHERE ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ID_TASA=PN_ID_TASA AND N_CUOTA=PN_NUM_CUOTA
AND ID_ESTADO=1;
PV_RESULTADO:='SE HA ANULADO CON ÉXITO LA TASA EN LA CUOTA SOLICITADA';
EXCEPTION
WHEN OTHERS THEN
PV_RESULTADO:=SQLERRM;
END;
--INSERTA EN TABLA TASA_CUOTA
----------------------------------------------------------
182
IS
LN_TASA_CUOTA_EXISTENTE INT;
--AUMENTADO 12 DE JUNIO 18:00
LN_SUMA_PORCENTAJE NUMBER(5,2):=0.00;
BEGIN
SELECT COUNT(*)INTO LN_TASA_CUOTA_EXISTENTE
FROM TASA_CUOTA
WHERE ID_TASA=PN_ID_TASA AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND
N_CUOTA=PN_NUM_CUOTA AND ID_ESTADO=1;
--
IF LN_TASA_CUOTA_EXISTENTE=0 THEN
INSERT INTO TASA_CUOTA(ID_TASA,ID_PERIODO_LECTIVO,N_CUOTA,PORC_CUOTA,ID_ESTADO)
VALUES(PN_ID_TASA,PN_ID_PERIODO_LECTIVO,PN_NUM_CUOTA,PN_PORC_CUOTA,1);
------------------------------------------
--AUMENTADO 12 DE JUNIO DEL 2009 A LAS 17:59
SELECT NVL(SUM(NVL(PORC_CUOTA,0)),0) INTO LN_SUMA_PORCENTAJE
FROM TASA_CUOTA
WHERE ID_ESTADO=1 AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND ID_TASA=PN_ID_TASA;
-------------------------------------------------------------
--VALIDA QUE UNA TASA SUPERE EN PORCENTAJE AL 100 EN LAS DIFERENTES
--CUOTAS
IF LN_SUMA_PORCENTAJE >100 THEN
PV_RESPUESTA:='NO SE PUEDE GRABAR PORCENTAJE DE TASA DEBIDO A QUE LAS SUMA DE PORCENTAJES EN
DIFERENTES CUOTAS SUPERA AL 100%, SIENDO :'|| LN_SUMA_PORCENTAJE || '%';
ELSE
PV_RESPUESTA:='GRABACIÓN EXITOSA DE LOS PORCENTAJES DE LA/S TASA/S DE LA CUOTA: ' || PN_NUM_CUOTA;
END IF;
ELSE
PV_RESPUESTA:='NO SE PUEDE GRABAR PORCENTAJE PARA LA TASA SOLICITADA DEBIDO A QUE EN LA CUOTA: '||
PN_NUM_CUOTA || ' YA HA SIDO GRABADA' ;
END IF;
EXCEPTION
WHEN OTHERS THEN
PV_RESPUESTA:=SQLERRM;
END PR_INSERTA_TASA_CUOTA;
--------------------------------------------------------
--12/ABRIL/2009
--PR_GET_TASA_PRECIO
PROCEDURE PR_GET_TASA_PRECIO(PV_RESPUESTA OUT VARCHAR2,PN_ID_PERIODO_LECTIVO INT,PC_TASA_PRECIO
OUT R_CURSOR,PV_OPCION VARCHAR2,PN_VALOR NUMBER)
IS
BEGIN
IF PV_OPCION='TODOS' THEN
OPEN PC_TASA_PRECIO FOR
select DISTINCT a.id_precio,a.id_tasa,b.descripcion tasa,a.precio,a.id_alumno_categoria,c.descripcion,a.id_semestre,(select
nvl(descripcion,'') from semestre where id_semestre=a.id_semestre)semestre
from tasa_precio a,tasa b,alumno_categoria c
where a.id_periodo_lectivo=PN_ID_PERIODO_LECTIVO
and a.id_estado=1 and a.id_tasa=b.id_tasa
and a.id_alumno_categoria=c.id_alumno_categoria
order by a.id_tasa,a.id_alumno_categoria,a.id_semestre;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
PV_RESPUESTA:='NO EXISTE NADA QUE MOSTRAR';
WHEN OTHERS THEN
PV_RESPUESTA:=SQLERRM;
END PR_GET_TASA_PRECIO;
--PR_GET_SEMESTRES 12/04/2009
PROCEDURE PR_GET_SEMESTRES(PC_SEMESTRES OUT R_CURSOR)
IS
BEGIN
OPEN PC_SEMESTRES FOR
SELECT ID_SEMESTRE,DESCRIPCION SEMESTRE FROM SEMESTRE
WHERE ID_ESTADO=1;
END PR_GET_SEMESTRES;
--PR_GET_ALUMNO_CATEGORIA 12/04/2009
PROCEDURE PR_GET_ALUMNO_CATEGORIA(PC_ALUMNO_CATEGORIA OUT R_CURSOR)
IS
BEGIN
OPEN PC_ALUMNO_CATEGORIA FOR
SELECT ID_ALUMNO_CATEGORIA,DESCRIPCION ALUMNO_CATEGORIA
FROM ALUMNO_CATEGORIA
WHERE ID_ESTADO=1;
END PR_GET_ALUMNO_CATEGORIA;
UPDATE TASA_PRECIO TP
SET TP.PRECIO=PN_PRECIO
WHERE TP.ID_PRECIO=PN_ID_PRECIO AND TP.ID_ESTADO=1;
PV_RESULTADO:='SI';
EXCEPTION
WHEN OTHERS THEN
PV_RESULTADO:=SQLERRM;
END PR_ACTUALIZA_TASA_PRECIO;
UPDATE TASA_PRECIO
SET ID_ESTADO=3
WHERE ID_PRECIO=PN_ID_PRECIO AND ID_ESTADO=1;
PV_RESULTADO:='SI';
EXCEPTION
WHEN OTHERS THEN
PV_RESULTADO:='NO';
END PR_ANULA_TASA_PRECIO;
-- PR_INSERTA_TASA_PRECIO
PROCEDURE PR_INSERTA_TASA_PRECIO(PN_ID_TASA NUMBER,PN_ID_ALUMNO_CATEGORIA
NUMBER,PN_ID_SEMESTRE NUMBER,
184
--LO SIG. ES PARA SABER SI UNA TASA YA HA SIDO ASIGNADA TODAS LAS
--CAT DE ALUMNO
SELECT NVL(COUNT(*),0)INTO LN_EXISTE_TODAS_CATEGORIAS
FROM TASA_PRECIO
WHERE ID_TASA=PN_ID_TASA AND ID_ALUMNO_CATEGORIA=0
AND ID_ESTADO=1 AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO;
--LO SIG. ES PARA SABER SI UNA TASA YA HA SIDO ASIGNADA TODAS LAS
--SEMESTRE
SELECT NVL(COUNT(*),0)INTO LN_EXISTE_TODOS_SEMESTRES
FROM TASA_PRECIO
WHERE ID_TASA=PN_ID_TASA AND
NVL(ID_SEMESTRE,0)=0
AND ID_ESTADO=1 AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO;
END IF;
EXCEPTION
WHEN OTHERS THEN
PV_RESULTADO:=SQLERRM;
END;
--PR_UPDATE_SECCION_PARALELO
PROCEDURE PR_UPDATE_SECCION_PARALELO(PN_ID_SECCION_NEW NUMBER,PN_ID_SECCION_OLD
NUMBER,PN_ID_PERIODO_LECTIVO NUMBER,PV_PARALELO VARCHAR2)
IS
BEGIN
UPDATE PARALELO SET ID_SECCION=PN_ID_SECCION_NEW,FECHA_MODIFICACION=CURRENT_DATE,
OBSERVACION='MODIFICADO LA SECCION DE: ' ||PN_ID_SECCION_OLD || 'A : ' || PN_ID_SECCION_NEW
WHERE ID_ESTADO=1 AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND DESCRIPCION=PV_PARALELO;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(SQLERRM);
END PR_UPDATE_SECCION_PARALELO;
--<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
SELECT COUNT(I.ID_INSCRIPCION) INTO LN_ID_INCRIPCION
FROM INSCRIPCION I,INSCRIPCION_DETALLE ID
WHERE I.ID_INSCRIPCION=ID.ID_INSCRIPCION
AND I.ID_ESTADO=1 AND ID.ID_ESTADO=1 AND I.ID_ALUMNO=PN_ID_ALUMNO AND
ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO;
--SI HA SIDO INSCRITO
IF NVL(LN_ID_INCRIPCION,0)>0 THEN
END IF;
END IF;
RETURN LV_RESPUESTA;
END;
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--PR_LISTADO_GRACIA 15 DE MAYO 0:43 AM
PROCEDURE PR_LISTADO_GRACIA(PV_OPCION VARCHAR2,PN_CEDULA VARCHAR2,PV_COD_ESTUDIANTIL
VARCHAR2,PV_APE_PATERNO VARCHAR2,PV_APE_MATERNO VARCHAR2,PV_PRIMER_NOMBRE
VARCHAR2,PV_SEG_NOMBRE VARCHAR2,PC_ALUMNOS OUT r_cursor,PV_ERROR OUT VARCHAR2)
IS
BEGIN
IF PV_OPCION='TODOS' THEN
OPEN PC_ALUMNOS FOR
SELECT A.ID_ALUMNO,B.CEDULA,A.CODIGO_ESTUDIANTIL,B.APELLIDO_PATERNO || ' ' || B.APELLIDO_MATERNO || ' ' ||
B.PRIMER_NOMBRE || ' ' || B.SEGUNDO_NOMBRE,C.DESCRIPCION,EG.ID_SOLICITUD
FROM ALUMNO A,PERSONA B,ALUMNO_CATEGORIA C,ADM_EXAMEN_GRACIA EG
WHERE A.ID_PERSONA=B.ID_PERSONA AND A.ID_ALUMNO_CATEGORIA=C.ID_ALUMNO_CATEGORIA
AND A.ID_ESTADO=1
--MODIFICADO A PARTIR DE GET_ALUMNOS
AND EG.ID_ALUMNO=A.ID_ALUMNO AND EG.ID_ESTADO=1
--///
ORDER BY B.APELLIDO_PATERNO || ' ' || B.APELLIDO_MATERNO || ' ' || B.PRIMER_NOMBRE || ' ' ||
B.SEGUNDO_NOMBRE,EG.ID_SOLICITUD
;
ELSIF PV_OPCION='CEDULA' THEN--POR C.I.
186
ORDER BY NVL(B.APELLIDO_PATERNO,'') || ' ' || NVL(B.APELLIDO_MATERNO,'') || ' ' || NVL(B.PRIMER_NOMBRE,'') || ' ' ||
NVL(B.SEGUNDO_NOMBRE,''),EG.ID_SOLICITUD
;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
PV_ERROR:='NO EXISTEN DATOS QUE MOSTRAR';
WHEN OTHERS THEN
PV_ERROR:=SQLERRM;
END;
IS
BEGIN
OPEN PC_ALUMNO_MATERIAS FOR
)
AND A.ID_ALUMNO=I.ID_ALUMNO
AND UPPER(SUBSTR(ID.OBSERVACION,1,INSTR(ID.OBSERVACION,'-',1)-1)) <>UPPER('EXAMEN DE GRACIA')
AND TO_DATE(TO_CHAR(I.FECHA_INSCRIPCION,'DD/MM/YYYY'),'DD/MM/YYYY') BETWEEN
TO_DATE(PV_FECHA_DESDE,'DD/MM/YYYY') AND TO_DATE(PV_FECHA_HASTA,'DD/MM/YYYY')
--and TO_DATE(I.FECHA_INSCRIPCION)<=TO_DATE(PV_FECHA_HASTA)
ORDER BY ESTUDIANTE,FECHA_INS;
EXCEPTION
WHEN NO_DATA_FOUND THEN
LV_RESPUESTA:='NO EXISTE ALUMNOS INSCRITOS EN EN RANGO DE FECHAS DESDE: ' || PV_FECHA_DESDE || ' HASTA: '
|| PV_FECHA_HASTA;
WHEN OTHERS THEN
LV_RESPUESTA:=SQLERRM;
END;
--CREADO POR GRUPO 9 --20/05/2009 -- 10:45
FUNCTION FU_DATOS_INS_EMAIL(PN_ID_ALUMNO NUMBER,PN_ID_PERIODO_LECTIVO NUMBER)RETURN VARCHAR2
IS
LV_CADENA_CONTENIDO VARCHAR2(7000):='';
LV_CAD_REMPLAZO VARCHAR2(100):=' ';
LV_CAD_REMPLAZO2 VARCHAR2(100):=' ';
CURSOR CUR_INSCRIPCION IS
select 1 ORDEN,'______________' CODIGO_MATERIA,'______________________________'
MATERIA,'______________'PARALELO ,'______________' VEZ_TOMADA
from DUAL
UNION
select 2 ORDEN,'COD. MATERIA' CODIGO_MATERIA,' MATERIA ' MATERIA,'PARALELO'PARALELO ,'VEZ TOMADA'
VEZ_TOMADA
from DUAL
UNION
select 3 ORDEN,'______________' CODIGO_MATERIA,'______________________________'
MATERIA,'______________'PARALELO ,'______________' VEZ_TOMADA
from DUAL
UNION
select 4
ORDEN,M.CODIGO_MATERIA,GET_NOMBRE_MATERIA(id.id_materia)MATERIA,GET_NOMBRE_PARALELO(id.id_paralelo)PAR
ALELO ,TO_CHAR(id.vez_tomada) VEZ_TOMADA
from inscripcion i,inscripcion_detalle id,MATERIA M
where i.id_inscripcion=id.id_inscripcion
and i.id_estado=1 and id.id_estado=1
and i.id_alumno=PN_ID_ALUMNO AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND M.ID_MATERIA=ID.ID_MATERIA
UNION
select 5 ORDEN,'______________' CODIGO_MATERIA,'______________________________'
MATERIA,'______________'PARALELO ,'______________' VEZ_TOMADA
from DUAL
ORDER BY ORDEN;
BEGIN
FOR REG IN CUR_INSCRIPCION LOOP
LV_CADENA_CONTENIDO:=LV_CADENA_CONTENIDO ||'| '||
REPLACE(REG.CODIGO_MATERIA,REG.CODIGO_MATERIA,REG.CODIGO_MATERIA
188
END;
--ANULA PROFESOR_ASIGNACION 22 DE MAYO 09 11:41 AM
PROCEDURE PR_ANULA_PROFESOR_ASIGNA(PN_ID_PROFESOR_ASIGNACION NUMBER,PV_RESULTADO OUT
VARCHAR2,PV_USUARIO VARCHAR2)
IS
LN_REG_ACT NUMBER(5);
BEGIN
SELECT COUNT(*)INTO LN_REG_ACT
FROM PROFESOR_ASIGNACION
WHERE ID_PROFESOR_ASIGNACION=PN_ID_PROFESOR_ASIGNACION
AND ID_ESTADO=1;
IF LN_REG_ACT>0 THEN
UPDATE PROFESOR_ASIGNACION SET
ID_ESTADO=3,FECHA_MODIFICACION=CURRENT_DATE,USUARIO_MODIFICACION=PV_USUARIO
WHERE ID_PROFESOR_ASIGNACION=PN_ID_PROFESOR_ASIGNACION
AND ID_ESTADO=1;
END IF;
189
IF LN_REG_ACT>0 THEN
PV_RESULTADO:='SE ANULÓ EXITOSAMENTE LAS MATERIAS DEL PROFESOR SELECCIONADO';
ELSE
PV_RESULTADO:='NO SE HA ENCONTRADO NADA QUE ACTUALIZAR';
END IF;
EXCEPTION
WHEN OTHERS THEN
PV_RESULTADO:=SQLERRM;
END;
---PR_GET_MATERIAS_SIN_PARALELO
--CREADA 25/05/2009 ALA LAS 19:59
PROCEDURE PR_GET_MATERIAS_SIN_PARALELO(PN_ID_PERIODO_LECTIVO NUMBER,PN_ID_SEMESTRE
NUMBER,PN_ID_PARALELO NUMBER,LC_MATERIAS OUT R_CURSOR,PV_RESPUESTA OUT VARCHAR2,PV_TIPO_MAT
VARCHAR2)
IS
BEGIN
--1
IF PN_ID_SEMESTRE>0 AND PV_TIPO_MAT='CURR' THEN
OPEN LC_MATERIAS FOR
select PEMA.ID_MATERIA,MAT.CODIGO_MATERIA,MAT.DESCRIPCION MATERIA
from PERIODO_MATERIA PEMA,MATERIA MAT
WHERE PEMA.ID_ESTADO=1 AND PEMA.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND PEMA.ID_MATERIA IN(SELECT B.ID_MATERIA
FROM PENSUM_MALLA A,MALLA_DETALLE B
WHERE A.ID_PENSUM_MALLA=B.ID_PENSUM_MALLA AND B.ID_ESTADO=1
AND B.ID_SEMESTRE=PN_ID_SEMESTRE
)
AND PEMA.ID_MATERIA NOT IN(
select PM.ID_MATERIA
from PARALELO_MATERIA PM,MATERIA M,PARALELO P,PARALELO_DESCRIPCION PD
WHERE PM.ID_MATERIA=M.ID_MATERIA
AND PM.ID_ESTADO=1 AND M.ID_ESTADO=1
AND PM.ID_PARALELO=P.ID_PARALELO
AND P.DESCRIPCION=PD.DESCRIPCION AND P.ID_ESTADO=1
AND PM.ID_MATERIA IN(SELECT ID_MATERIA FROM PERIODO_MATERIA WHERE ID_ESTADO=1 AND
ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO)
AND PD.SEMESTRE=PN_ID_SEMESTRE AND PM.ID_PARALELO=PN_ID_PARALELO
)
AND PEMA.ID_MATERIA=MAT.ID_MATERIA AND MAT.ID_TIPO_MATERIA NOT IN(4,5)
ORDER BY MAT.CODIGO_MATERIA
;
--2--
ELSIF PN_ID_SEMESTRE>0 AND PV_TIPO_MAT='OPT' THEN
OPEN LC_MATERIAS FOR
select PEMA.ID_MATERIA,MAT.CODIGO_MATERIA,MAT.DESCRIPCION MATERIA
from PERIODO_MATERIA PEMA,MATERIA MAT
WHERE PEMA.ID_ESTADO=1 AND PEMA.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND PEMA.ID_MATERIA IN(SELECT B.ID_MATERIA
FROM PENSUM_MALLA A,MALLA_DETALLE B
WHERE A.ID_PENSUM_MALLA=B.ID_PENSUM_MALLA AND B.ID_ESTADO=1
AND B.ID_SEMESTRE=PN_ID_SEMESTRE
)
AND PEMA.ID_MATERIA NOT IN(
select PM.ID_MATERIA
from PARALELO_MATERIA PM,MATERIA M,PARALELO P,PARALELO_DESCRIPCION PD
WHERE PM.ID_MATERIA=M.ID_MATERIA
AND PM.ID_ESTADO=1 AND M.ID_ESTADO=1
AND PM.ID_PARALELO=P.ID_PARALELO
AND P.DESCRIPCION=PD.DESCRIPCION AND P.ID_ESTADO=1
AND PM.ID_MATERIA IN(SELECT ID_MATERIA FROM PERIODO_MATERIA WHERE ID_ESTADO=1 AND
ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO)
AND PD.SEMESTRE=PN_ID_SEMESTRE AND PM.ID_PARALELO=PN_ID_PARALELO
)
AND PEMA.ID_MATERIA=MAT.ID_MATERIA AND MAT.ID_TIPO_MATERIA IN(4,5)
ORDER BY MAT.CODIGO_MATERIA
;
--3
ELSIF PN_ID_SEMESTRE=0 AND PV_TIPO_MAT='CURR' THEN--ESTO ES PARA PARALELOS ESPECIALES
OPEN LC_MATERIAS FOR
select PEMA.ID_MATERIA,MAT.CODIGO_MATERIA,MAT.DESCRIPCION MATERIA
from PERIODO_MATERIA PEMA,MATERIA MAT
WHERE PEMA.ID_ESTADO=1 AND PEMA.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND PEMA.ID_MATERIA IN(SELECT B.ID_MATERIA
FROM PENSUM_MALLA A,MALLA_DETALLE B
WHERE A.ID_PENSUM_MALLA=B.ID_PENSUM_MALLA AND B.ID_ESTADO=1
190
)
AND PEMA.ID_MATERIA NOT IN(
select PM.ID_MATERIA
from PARALELO_MATERIA PM,MATERIA M,PARALELO P,PARALELO_DESCRIPCION PD
WHERE PM.ID_MATERIA=M.ID_MATERIA
AND PM.ID_ESTADO=1 AND M.ID_ESTADO=1
AND PM.ID_PARALELO=P.ID_PARALELO
AND P.DESCRIPCION=PD.DESCRIPCION AND P.ID_ESTADO=1
AND PM.ID_MATERIA IN(SELECT ID_MATERIA FROM PERIODO_MATERIA WHERE ID_ESTADO=1 AND
ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO)
AND PM.ID_PARALELO=PN_ID_PARALELO
)
)
AND PEMA.ID_MATERIA NOT IN(
select PM.ID_MATERIA
from PARALELO_MATERIA PM,MATERIA M,PARALELO P,PARALELO_DESCRIPCION PD
WHERE PM.ID_MATERIA=M.ID_MATERIA
AND PM.ID_ESTADO=1 AND M.ID_ESTADO=1
AND PM.ID_PARALELO=P.ID_PARALELO
AND P.DESCRIPCION=PD.DESCRIPCION AND P.ID_ESTADO=1
AND PM.ID_MATERIA IN(SELECT ID_MATERIA FROM PERIODO_MATERIA WHERE ID_ESTADO=1 AND
ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO)
AND PM.ID_PARALELO=PN_ID_PARALELO
)
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
PV_RESPUESTA:='NO SE HAN ENCONTRADO MATERIAS PARA EL PARALELO: ' ||
GET_NOMBRE_PARALELO(PN_ID_PARALELO);
WHEN OTHERS THEN
PV_RESPUESTA :=SQLERRM;
END;
--PARA EXTRAER LOS PARALELOS CREADOS 25/05/2009 23:52
PROCEDURE PR_PARALELOS_CREADOS(PN_ID_PERIODO_LECTIVO NUMBER,PN_SEMESTRE NUMBER,PC_PARALELO
OUT R_CURSOR)
IS
BEGIN
OPEN PC_PARALELO FOR
SELECT DISTINCT P.ID_PARALELO,P.DESCRIPCION
FROM PARALELO P,PARALELO_DESCRIPCION PD
WHERE P.DESCRIPCION=PD.DESCRIPCION AND P.ID_ESTADO=1
AND PD.ID_ESTADO=1 AND P.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
AND PD.SEMESTRE=PN_SEMESTRE;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
--CREA UN NUEVO PERIODO_LECTIVO
PROCEDURE PR_NEW_PERIODO_LECTIVO(PN_ID_DURACION NUMBER,PN_ANIO NUMBER,PV_CICLO
VARCHAR2,PD_FECHA_INI_PROG DATE,PD_FECHA_FIN_PROG DATE,PV_DESCRIPCION VARCHAR2,PV_OBSERVACION
VARCHAR2,LV_RESULTADO OUT VARCHAR2)
IS
LN_EXISTE_PARALELO NUMBER(4);
BEGIN
191
RETURN NVL(LN_SEMESTRE,0);
END;
FROM MALLA_DETALLE
WHERE ID_ESTADO=1 AND ID_MATERIA=PN_ID_MATERIA AND ROWNUM=1;
RETURN NVL(LN_MALLA,0);
end;
RETURN LN_VECES_FUE_ANULADA;
END;
--GET_VECES_INSCRIPCION CUENTA LAS VECES QUE UN ALUMNO HA SIDO INSCRITO EN
--PERIODO VIGENTE INCLUIDA INSCRIPCIONES ACTIVAS Y ANULADAS
--GRUPO 9 16/06/2009 13:00 PM
FUNCTION GET_VECES_INSCRIPCION(PN_ID_PERIODO_LECTIVO NUMBER,PN_ID_ALUMNO NUMBER)RETURN NUMBER
IS
LN_VECES_FUE_ANULADA NUMBER(2);
BEGIN
SELECT COUNT(DISTINCT I.ID_INSCRIPCION) INTO LN_VECES_FUE_ANULADA
FROM INSCRIPCION I,INSCRIPCION_DETALLE ID
WHERE I.ID_INSCRIPCION=ID.ID_INSCRIPCION
AND I.ID_ALUMNO=PN_ID_ALUMNO AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
;
RETURN LN_VECES_FUE_ANULADA;
END;
---VECES QUE UN PARALELO SE MODIFICO EN UNA INSCRIPCION Y EN UNA MATERIA
--GRUPO 9 16/06/2009 14:15PM
FUNCTION GET_VEZ_MODIFICADO_PARALELO(PN_ID_PERIODO_LECTIVO NUMBER,PN_ID_MATERIA
NUMBER,PN_ID_ALUMNO NUMBER)RETURN NUMBER
IS
LN_VECES_MOD_PARALELO NUMBER(2);
BEGIN
SELECT COUNT(DISTINCT ID.ID_PARALELO) -1 INTO LN_VECES_MOD_PARALELO
FROM INSCRIPCION I,INSCRIPCION_DETALLE ID
WHERE I.ID_INSCRIPCION=ID.ID_INSCRIPCION AND
I.ID_ALUMNO=PN_ID_ALUMNO AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND
ID.ID_MATERIA=PN_ID_MATERIA
;
RETURN LN_VECES_MOD_PARALELO;
END;
---GET_VEZ_INSCRITA_MATERIA
--MUESTRA LAS VECES QUE UNA MATERIA FUE INSCRITA POR CADA INSCRIPCION DEL
--PERIODO LECTIVO VIGENTE
--CREADO POR: GRUPO 9
--16/06/2009 A LAS 18:11 PM.
FUNCTION GET_VEZ_INSCRITA_MATERIA(PN_ID_PERIODO_LECTIVO NUMBER,PN_ID_MATERIA NUMBER,PN_ID_ALUMNO
NUMBER)RETURN NUMBER
IS
LN_VECES_INS_MAT NUMBER(2);
BEGIN
SELECT COUNT(DISTINCT ID.ID_INSCRIPCION_DETALLE) INTO LN_VECES_INS_MAT
FROM INSCRIPCION I,INSCRIPCION_DETALLE ID
WHERE I.ID_INSCRIPCION=ID.ID_INSCRIPCION AND
I.ID_ALUMNO=PN_ID_ALUMNO AND ID.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO AND
ID.ID_MATERIA=PN_ID_MATERIA
--ESTO ES CUANDO CAMBIO PARALELO Y NO DEBE CONTARSE COMO VEZ DE INSCRIPCION
--DE MATERIA
AND ID.HORA_MODIFICACION IS NULL
;
RETURN LN_VECES_INS_MAT;
END GET_VEZ_INSCRITA_MATERIA;
BEGIN
OPEN PC_RUBROS FOR
SELECT DISTINCT OP.ID_ORDEN_PAGO,OP.CUOTA,
(SELECT IFI.DESCRIPCION FROM INSTITUCION_FINANCIERA IFI , CUENTA_BANCARIA CB WHERE
IFI.ID_INSTITUCION_FINANCIERA=CB.ID_INSTITUCION_FINANCIERA AND CB.ID_CUENTA= OP.ID_CUENTA)BANCO,
(SELECT NUMERO FROM CUENTA_BANCARIA WHERE ID_CUENTA=OP.ID_CUENTA)CUENTA_BANCO,
OP.NUM_RECIBO,TO_CHAR(OP.FECHA_EMISION,'DD/MM/YYYY'),TO_CHAR(OP.FECHA_VENCIMIENTO,'DD/MM/YYYY'),OP.C
ONDICION,OP.VALOR_TOTAL SUBTOTAL,OP.VALOR_DESCUENTO DESCUENTO,OP.VALOR_CUOTA VALOR_FINAL
FROM ORDEN_PAGO OP,ORDEN_PAGO_DETALLE OPD
WHERE OP.ID_ORDEN_PAGO=OPD.ID_ORDEN_PAGO AND ID_ALUMNO=PN_ID_ALUMNO
AND OP.ID_ESTADO=1 AND OPD.ID_ESTADO=1 AND OP.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO
ORDER BY OP.ID_ORDEN_PAGO;
END;
IF LN_ALUMNO_TIENE_RUBROS>0 THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END FUN_TIENE_RUBROS_ALUMNO;
--PARA ANULACION DE ORDNES DE PAGO DE UN ALUMNO
--18 DE JUNIO DEL 2009 5:29 AM.
PROCEDURE PR_ANULA_ORDEN_PAGO(PN_ID_ORDEN_PAGO NUMBER,PN_ID_ALUMNO
NUMBER,PN_ID_PERIODO_LECTIVO NUMBER,PV_RESULTADO OUT VARCHAR2)
IS
LN_VECES_ANULADO_RUBROS NUMBER(4,2):=0.00;
LN_VECES_ANULADO_RUBROS_PERMI NUMBER(2):=0;
LN_NUMERO_CUOTAS NUMBER(2):=0;
LV_RESULTADO VARCHAR2(200):='SI';
LV_CONDICION VARCHAR2(10);
LV_CUOTA_PAGADA NUMBER(2):=0;
LE_ERROR EXCEPTION;
BEGIN
--OBTIENE EL NUMERO DE CUOTAS DEL PERIODO_LECTIVO VIGENTE
SELECT NVL(MAX(N_CUOTA),0)INTO LN_NUMERO_CUOTAS
FROM TASA_CUOTA
WHERE ID_ESTADO=1 AND ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO;
IF LN_NUMERO_CUOTAS=0 THEN
LV_RESULTADO:='NO EXISTEN ASIGNADOS LOS PORCENTAJES DE LAS CUOTAS EN PERIODO LECTIVO VIGENTE,NO
SE PUEDE ANULAR';
RAISE LE_ERROR;
194
END IF;
EXCEPTION
WHEN LE_ERROR THEN
PV_RESULTADO:=LV_RESULTADO;
WHEN OTHERS THEN
PV_RESULTADO:=SQLERRM;
END;