-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Funcion para insertar personas en la base. -- select f_crear_personas( cant_personas_a_crear ); -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_crear_inscripciones(integer); CREATE OR REPLACE FUNCTION f_crear_inscripciones(_cant integer) RETURNS INTEGER AS $BODY$ DECLARE i integer; _persona integer; _propuesta integer; _plan_version integer; _ubicacion integer; _tipo_ingreso integer; _situacion integer; _modalidad char(1); _legajo varchar(20); _propuesta_aspira integer; _periodo integer; _periodo2 integer; _per_insc integer; mod_3 smallint; mod_4 smallint; c1 record; c2 record; BEGIN -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- PERIODOS DE INSCRIPCION -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- 1er turno de insc INSERT INTO sga_periodos_inscripcion (nombre, periodo, periodo_generico_tipo) VALUES ('1er turno de Inscripción a Carreras',NULL, 4); _per_insc = (SELECT currval('sga_periodos_inscripcion_seq'::text)); INSERT INTO sga_periodos_inscripcion_propuesta (periodo_inscripcion, anio_academico, fecha_cierre_requisitos, periodo_insc_tipo) VALUES (_per_insc, 2010, '15/10/2010',1); -- Inscripcion INSERT INTO sga_per_insc_ubicacion (periodo_inscripcion, ubicacion) VALUES (_per_insc, 1); INSERT INTO sga_per_insc_ubicacion (periodo_inscripcion, ubicacion) VALUES (_per_insc, 2); INSERT INTO sga_per_insc_ubicacion (periodo_inscripcion, ubicacion) VALUES (_per_insc, 3); INSERT INTO sga_per_insc_ubicacion (periodo_inscripcion, ubicacion) VALUES (_per_insc, 4); INSERT INTO sga_per_insc_ubicacion (periodo_inscripcion, ubicacion) VALUES (_per_insc, 5); INSERT INTO sga_per_insc_ubicacion (periodo_inscripcion, ubicacion) VALUES (_per_insc, 6); INSERT INTO sga_per_insc_modalidad (periodo_inscripcion, modalidad) VALUES (_per_insc, 'P'); INSERT INTO sga_per_insc_modalidad (periodo_inscripcion, modalidad) VALUES (_per_insc, 'D'); INSERT INTO sga_periodos_inscripcion_fechas (periodo_inscripcion, tipo, entidad_tipo, fecha_inicio, fecha_fin, habilitado) VALUES (_per_insc,'E',4,'01/02/2010','30/06/2010', 'S'); -- tipo 4 = Institución _periodo = (SELECT currval('sga_periodos_inscripcion_fechas_seq'::text)); INSERT INTO sga_periodos_inscripcion_entidad (periodo_insc, entidad) VALUES (_periodo, 1); -- Entidad de la Institucion -- 2do turno de insc. INSERT INTO sga_periodos_inscripcion (nombre, periodo, periodo_generico_tipo) VALUES ('2do turno de Inscripción a Carreras',NULL, 4); _per_insc = (SELECT currval('sga_periodos_inscripcion_seq'::text)); INSERT INTO sga_periodos_inscripcion_propuesta (periodo_inscripcion, anio_academico, fecha_cierre_requisitos, periodo_insc_tipo) VALUES (_per_insc, 2010, '25/11/2010',1); -- Inscripcion INSERT INTO sga_periodos_inscripcion_fechas (periodo_inscripcion, tipo, entidad_tipo, fecha_inicio, fecha_fin) VALUES (_per_insc,'E', 4, '01/06/2010','30/06/2010'); _periodo2 = (SELECT currval('sga_periodos_inscripcion_fechas_seq'::text)); INSERT INTO sga_periodos_inscripcion_entidad (periodo_insc, entidad) VALUES (_periodo2, 1); -- Entidad de la Institucion -- Genero el Aplanado para todo!!! insert into sga_periodos_inscripcion_aplanado (periodo_insc, plan_version) SELECT periodo_insc, plan_version from sga_periodos_inscripcion_fechas, sga_planes_versiones WHERE sga_planes_versiones.estado IN ('V','A'); _modalidad = 'P'; i := 0; FOR c1 IN SELECT persona FROM mdp_personas LOOP i := i + 1; if (i % 2 = 0) then _propuesta := 1000; _plan_version := 1000; _ubicacion := 1; else _ubicacion := 2; _propuesta := 1; _plan_version := 1; end if; _situacion := 1; _tipo_ingreso := 7; mod_4 := (i % 4); if mod_4 = 0 THEN _tipo_ingreso := 1; _situacion := 2; elseif mod_4 = 1 THEN _tipo_ingreso := 3; elseif mod_4 = 2 THEN _tipo_ingreso := 5; elseif mod_4 = 3 THEN _tipo_ingreso := 6; end if; -- Inserto Inscripción INSERT INTO sga_propuestas_aspira ( persona, periodo_insc, anio_academico, propuesta, plan_version, modalidad, ubicacion, fecha_inscripcion, tipo_ingreso, situacion_asp) VALUES (c1.persona, _periodo, 2010, _propuesta, _plan_version, _modalidad, _ubicacion, CURRENT_DATE, _tipo_ingreso, _situacion); _propuesta_aspira := (SELECT currval('sga_propuestas_aspira_seq'::text)); -- Registro en Alumnos -- alumno INTEGER NOT NULL DEFAULT nextval('sga_alumnos_seq'::text) , mod_3 := (i % 3); _legajo := NULL; if mod_3 = 0 THEN _legajo := c1.persona::text || '/2010'; end if; INSERT INTO sga_alumnos (legajo,persona, propuesta, plan_version,cnt_readmisiones, regular, ubicacion, calidad, modalidad) VALUES (_legajo, c1.persona, _propuesta, _plan_version,0,'S', _ubicacion, 'A',_modalidad); FOR c2 IN SELECT requisito FROM sga_requisitos WHERE requisito_tipo = 4 and requisito not in (11, 12) LOOP INSERT INTO sga_requisitos_aspirante (propuesta_aspira, requisito, exceptuado) VALUES (_propuesta_aspira, c2.requisito,'N'); INSERT INTO sga_requisitos_presentados (persona,requisito, fecha_presentacion, fecha_alta) VALUES ( c1.persona, c2.requisito , CURRENT_DATE , CURRENT_DATE ); END LOOP; END LOOP; /* -- Historico de cambios de plan de estudios. -- Motivo 1 = Alta de Plan. INSERT INTO sga_alumnos_hist_planes (alumno, plan_version, motivo_plan, fecha, tipo) SELECT alumno, plan_version, 1, '01/01/2010', 1 FROM sga_alumnos; */ RETURN i; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_crear_inscripciones(integer) ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_crear_inscripciones (integer) FROM public; GRANT EXECUTE ON FUNCTION f_crear_inscripciones (integer) to public; /* -- delete from mdp_personas_documentos; -- delete from mdp_personas; select f_crear_inscripciones(100); -- select * from sga_alumnos select * from mdp_personas; */