Está en la página 1de 4

Método para listar hermanos:

Este método sirve para reconocer a los alumnos hermanos matriculados durante el ciclo actual de la matrícula.

select * from stp_listar_hermanos_matri_alum('15975340','201801')

CREATE OR REPLACE FUNCTION stp_listar_hermanos_matri_alum(character, character)

RETURNS SETOF typ_listar_hermanos_matri_alum AS

$BODY$

DECLARE

dnipapa character(8);

dnimama character(8);

dniapod character(8);

BEGIN

dnipapa = (select "DniFami" from "TsFamiliar" where "CodiAlum"=$1 and "TipoFami" like'PAP%');

raise notice 'dnipapa: %', dnipapa;

dnimama = (select "DniFami" from "TsFamiliar" where "CodiAlum"=$1 and "TipoFami" like'MAM%');

raise notice 'dnimama: %', dnimama;

dniapod = (select "DniFami" from "TsFamiliar" where "CodiAlum"=$1 and "TipoFami" like'APO%');

raise notice 'dniapod: %', dniapod;

return query select distinct "Alu_ApPaAlum" ||' '|| "Alu_ApMaAlum"||', '||"Alu_NombAlum" from "TsFamiliar" f

inner join "TsAlumno" a on f."CodiAlum"=a."Alu_CodiAlum"

inner join "TsMatricula" m on a."Alu_CodiAlum"=m."Alu_CodiAlum"

where

(f."DniFami"=dnipapa or f."DniFami"=dnimama or f."DniFami"=dniapod) and (not f."CodiAlum"=$1 or not


f."DniFami" is null or not f."DniFami"='')

AND "CodiCicl"=$2;

END;

$BODY$

LANGUAGE plpgsql VOLATILE

COST 100

ROWS 1000;

Método para buscar al padre quien matriculara

Este método se aplica para la matricula lo cual no existía.


select * from stp_get_qmpadre_matr('74664418','74664417')

CREATE OR REPLACE FUNCTION public.stp_get_qmpadre_matr(character,character)

RETURNS SETOF "TsFamiliar" AS

$BODY$

select * from "TsFamiliar"

where "CodiAlum"=$1 and "DniFami"=$2;

$BODY$
LANGUAGE sql VOLATILE

COST 100

ROWS 1000;

Metodo para listar el mes de matricula


Este método tiene como finalidad definir el alumno en que mes inicio a estudiar para que de la misma forma genere las cuotas
correspondientes

select * from stp_listar_mes()

CREATE OR REPLACE FUNCTION stp_listar_mes()

RETURNS SETOF typ_listar_mes AS

$BODY$

DECLARE

mes integer;

BEGIN

mes = (select extract(month from now())::integer);

raise notice 'mes: %', mes;

if mes=12 then

return query select "CodiMes","DescMes" from "TsMes" where "ValdMes"=true limit 12;

else

return query select "CodiMes","DescMes" from "TsMes" where "ValdMes"=true limit mes +1;

end if;

END;

$BODY$

LANGUAGE plpgsql VOLATILE

COST 100

ROWS 1000;

Método para definir el siguiente nivel grado en el alumno


Este método permite definir el nivel grado siguiente que el alumno pasa al siguiente año.

select * from stp_insteducsiggradalum_listar('15761181','150801')


CREATE OR REPLACE FUNCTION public.stp_insteducsiggradalum_listar(codialu character, codiubig character)

RETURNS SETOF "TsInstitucionEducativa" AS

$BODY$

DECLARE

codSigGrad text;

registro "TsInstitucionEducativa"%ROWTYPE;

BEGIN

-- calcula el codigo del grado al que pasa el alumno

codSigGrad=(SELECT signum(Max("CodiGrEd"),2) from "TsMatricula" inner join "TsCicloEstudio" on


"TsMatricula"."CodiIned"="TsCicloEstudio"."CodiIned" and

"TsMatricula"."CodiCicl"="TsCicloEstudio"."CodiCicl"

WHERE "Alu_CodiAlum"=codialu AND ("CodiGrEd"!='20' AND "CodiGrEd"!='30')

and "TsCicloEstudio"."SnmaCicl"=false and "TsMatricula"."TipoMatri"='1');

IF codSigGrad ='16' THEN

codSigGrad ='01';

end if;

-- evalua si es un alumno nuevo te carga todas las instituciones educativas de lo contraria muestra a las que se puede pasar

IF codSigGrad IS NULL OR codSigGrad='01' THEN

FOR registro IN

SELECT
"CodiIned","NombIned","OrgnIned","UbccIned","CodiUgeo","CodiNivl","CodiEmpr","ActvIned","CodiNego","CodiArng","CodiModu"

FROM "TsInstitucionEducativa" WHERE "CodiNego"='03' and "CodiUgeo"= codiubig

LOOP

RETURN NEXT registro;

END LOOP;

ELSE

FOR registro IN

SELECT DISTINCT
inst."CodiIned",inst."NombIned",inst."OrgnIned",inst."UbccIned",inst."CodiUgeo",inst."CodiNivl",inst."CodiEmpr",inst."ActvIned",inst."CodiNe
go",inst."CodiArng",inst."CodiModu"

FROM "TsCicloEstudio" Cicl

INNER JOIN "TsGradoEducativo" gradEdu ON Cicl."CodiCicl"=gradEdu."CodiCicl" AND Cicl."CodiIned"=gradEdu."CodiIned"

INNER JOIN "TsGrado" Gr ON Gr."CodiGrEd"=gradEdu."CodiGrEd"

INNER JOIN "TsInstitucionEducativa" inst ON inst."CodiIned"=Cicl."CodiIned"

WHERE Cicl."ActvCcl"=true--sólo ciclos activos

AND gradEdu."CodiGrEd"=codsigGrad and inst."CodiUgeo"= codiubig

LOOP

RETURN NEXT registro;

END LOOP;

END IF;

RETURN;
END;$BODY$

LANGUAGE plpgsql VOLATILE

COST 100

ROWS 1000;

ALTER FUNCTION public.stp_insteducsiggradalum_listar(character, character)

OWNER TO postgres;

Método para agregar usuarios


Este método permite agregar un usuario al personal responsable para que realice las funciones de los diversos sistemas de
información. Lo que también se añade en el uso de las claves encriptadas.

select * from stp_agregar_usuario('ASISTENTE','1234','25468192','01','ABC','71')

CREATE OR REPLACE FUNCTION stp_agregar_usuario(character,character,character,character,character,character)

RETURNS boolean AS

$BODY$

DECLARE

Usu character varying(10);

Usuap character varying(35);

Usuno character varying(35);

BEGIN

Usu = (select concat(upper(left("NombPers",1)),upper(left("ApPaPers",1)),upper(left("ApMaPers",1)),'001')::character(10) from


"TsPersonal" where "CodiPers"=$3);

raise notice 'ABREVIADO: %', Usu;

Usuap = (select ("ApPaPers"||' '||"ApMaPers")::character varying(35) from "TsPersonal" where "CodiPers"=$3);

raise notice 'ABREVIADO: %', Usuap;

Usuno = (select "NombPers" from "TsPersonal" where "CodiPers"=$3);

raise notice 'ABREVIADO: %', Usuno;

if $1 IS NULL OR $1 = '' AND $3 IS NULL AND $4 IS NULL OR $4 = '' AND $5 IS NULL OR $5 = '' and $6 IS NULL OR $6 = ''

then

return false;

else

INSERT INTO "TsUsuarios"("CodiUsua", "CargUsua", "PasdUsua",


"PredUsua","NombUsua","ApelUsua","Dni_Usua","CodiAcce","NickUsua","FechRegt","DireUsua","TelfUsua","UsuaLder","inicia","caduca","Co
diSede","ActvUsua","ModuReca","ModuAcad") VALUES (usu,$1,MD5($2),null,usuno,usuap,$3,$4,$5,now(),null,null,true,null,null,
$6,true,true,true);

RETURN TRUE;

end if;

END; $BODY$

LANGUAGE plpgsql VOLATILE

COST 100;

También podría gustarte