Advertisement
jzgeorge

funcion tutoriuas

Jul 19th, 2019
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION esq_ceac_planclase.f_historia_tutoria_periodo_docente(IN p_idperiodo integer, IN p_idpersonal bigint)
  2.   RETURNS TABLE(r_docente character varying,r_departamento character varying,r_categoria character varying,r_dedicacion character varying,r_tutorados integer,r_tutorados_activos bigint,r_tutorados_pasivo bigint,r_tutorados_egresado bigint,r_tutorados_otros bigint,r_agendas_programadas integer,r_agendas_programadas_e bigint,r_agendas_programadas_d bigint,r_entrevistas_efectiva bigint,r_entrevistas_n_efectiva bigint,r_entrevistas_n_efectiva_d bigint,r_entrevistas_n_efectiva_e bigint,r_calificacion numeric,r_tutorias_evaluadas bigint,r_idfichero_hoja_vida_foto bigint,r_ta_agendas_programadas bigint,r_ta_agendas_programadas_e bigint,r_ta_agendas_programadas_d bigint,r_ta_entrevistas_efectiva bigint,r_ta_entrevistas_n_efectiva bigint,r_ta_entrevistas_n_efectiva_e bigint,r_ta_entrevistas_n_efectiva_d bigint,r_ta_calificacion numeric,r_ta_tutorias_evaluadas bigint) AS
  3. $BODY$
  4. DECLARE
  5. v_docente VARCHAR := '';
  6. v_departamento VARCHAR := '';
  7. v_categoria VARCHAR := '';
  8. v_dedicacion VARCHAR := '';
  9. v_tutorados integer:=0;
  10. v_tutorados_activos bigint;
  11. v_tutorados_pasivo bigint;
  12. v_tutorados_egresado bigint;
  13. v_tutorados_otros bigint;
  14. v_agendas_programadas integer:=0;
  15. v_agendas_programadas_e bigint;
  16. v_agendas_programadas_d bigint;
  17. v_entrevistas_efectiva bigint;
  18. v_entrevistas_n_efectiva bigint;
  19. v_entrevistas_n_efectiva_d bigint;
  20. v_entrevistas_n_efectiva_e bigint;
  21. v_calificacion numeric;
  22. v_tutorias_evaluadas bigint;
  23. v_idfichero_hoja_vida_foto bigint;
  24. v_ta_agendas_programadas bigint;
  25. v_ta_agendas_programadas_e bigint;
  26. v_ta_agendas_programadas_d bigint;
  27. v_ta_entrevistas_efectiva bigint;
  28. v_ta_entrevistas_n_efectiva bigint;
  29. v_ta_entrevistas_n_efectiva_e bigint;
  30. v_ta_entrevistas_n_efectiva_d bigint;
  31. v_ta_calificacion numeric;
  32. v_ta_tutorias_evaluadas bigint;
  33. v_fecha_inicio date;
  34. v_fecha_final date;
  35. r RECORD;
  36. BEGIN
  37. select per.fecha_inicio, per.fecha_final into v_fecha_inicio, v_fecha_final from esq_periodos_academicos.periodo_academico per where per.idperiodo = p_idperiodo;
  38. select r_ndepartamento from esq_distributivos.f_historia_laboral_obtener(p_idperiodo, 0, p_idpersonal) into v_departamento;
  39. select (select nombre from esq_distributivos.categoria_tipo ct where ct.idcategoria = t.r_idcategoria) into v_categoria from esq_distributivos.f_historia_laboral_obtener(p_idperiodo, 0, p_idpersonal) t;
  40. select (select nombre from esq_distributivos.dedicacion_tipo ct where ct.iddedicacion = t.r_iddedicacion) into v_dedicacion from esq_distributivos.f_historia_laboral_obtener(p_idperiodo, 0, p_idpersonal) t;
  41. /*tutorados*/
  42. select 0 as t_tutorados into v_tutorados;  
  43. select count(*) into v_tutorados_activos from esq_tutorias.tutorado t where t.fecha BETWEEN v_fecha_inicio and v_fecha_final and t.idpersonal_docente = p_idpersonal and t.habilitado = 'S' and t.es_pasivo = 'N' and t.es_egresado = 'N';
  44. SELECT count(*) into v_tutorados_pasivo FROM esq_tutorias.ft_listar_tutorados_pasivos(p_idpersonal) t where t.r_fecha BETWEEN v_fecha_inicio and v_fecha_final;
  45. select count(*) into v_tutorados_egresado from esq_tutorias.tutorado t where t.fecha BETWEEN v_fecha_inicio and v_fecha_final and t.idpersonal_docente = p_idpersonal and t.es_egresado = 'S';
  46. select count(*) into v_tutorados_otros from esq_tutorias.tutorado t where t.fecha BETWEEN v_fecha_inicio and v_fecha_final and t.idpersonal_docente = p_idpersonal and t.habilitado = 'N' and t.es_pasivo = 'N' and t.es_egresado = 'N';
  47.  
  48. /*agenda*/
  49. select 0 as agendas_programadas into v_agendas_programadas;
  50. select count(*) into v_agendas_programadas_e from esq_tutorias.agenda a where a.fecha_sol_docente is null and coalesce(a.fecha_sol_estudiante, CURRENT_TIMESTAMP) BETWEEN v_fecha_inicio and v_fecha_final and a.idpersonal_docente = p_idpersonal;
  51. select count(*) into v_agendas_programadas_d from esq_tutorias.agenda a where a.fecha_sol_docente BETWEEN v_fecha_inicio and v_fecha_final and a.idpersonal_docente = p_idpersonal;
  52.  
  53. /*entrevistas*/
  54. select count(e.idpersonal_estudiante) into v_entrevistas_efectiva from esq_tutorias.entrevista e  where e.idpersonal_docente = p_idpersonal and e.fecha_registro BETWEEN v_fecha_inicio and v_fecha_final;
  55. select count(*) into v_entrevistas_n_efectiva from esq_tutorias.agenda a where a.id_tipo_estado in (2597, 2636) and a.fecha BETWEEN v_fecha_inicio and v_fecha_final and a.idpersonal_docente = p_idpersonal;
  56. select count(*) into v_entrevistas_n_efectiva_d from esq_tutorias.agenda a where a.id_tipo_estado in (2597) and a.fecha BETWEEN v_fecha_inicio and v_fecha_final and a.idpersonal_docente = p_idpersonal;
  57. select count(*) into v_entrevistas_n_efectiva_e from esq_tutorias.agenda a where a.id_tipo_estado in (2636) and a.fecha BETWEEN v_fecha_inicio and v_fecha_final and a.idpersonal_docente = p_idpersonal;
  58.  
  59. /*evaluacion tutoria acompañamiento*/
  60. select coalesce(round(avg(t.calificacion), 1), 0) as calificacion into v_calificacion
  61.       from (
  62.           select round(avg(ee.calificacion), 1) as calificacion, ee.id_entrevista
  63.           from esq_tutorias.entrevista e inner join esq_tutorias.entrevista_evaluacion ee on ee.id_entrevista = e.id_entrevista
  64.           where ee.calificacion > 0 and e.fecha_registro BETWEEN v_fecha_inicio and v_fecha_final and e.idpersonal_docente = p_idpersonal
  65.           group by ee.id_entrevista
  66.       ) t;
  67.  
  68. select count(t.calificacion) into v_tutorias_evaluadas
  69.       from (
  70.           select round(avg(ee.calificacion), 1) as calificacion, ee.id_entrevista
  71.           from esq_tutorias.entrevista e inner join esq_tutorias.entrevista_evaluacion ee on ee.id_entrevista = e.id_entrevista
  72.           where e.fecha_registro BETWEEN v_fecha_inicio and v_fecha_final and e.idpersonal_docente = p_idpersonal
  73.           group by ee.id_entrevista
  74.       ) t;
  75.  
  76. /*t. academica agenda*/
  77. select count(*) into v_ta_agendas_programadas from esq_tutorias.ta_agenda a where a.fecha BETWEEN v_fecha_inicio and v_fecha_final and a.idpersonal_docente =p_idpersonal;
  78. select count(*) into v_ta_agendas_programadas_e from esq_tutorias.ta_agenda a where a.fecha_sol_docente is null and coalesce(a.fecha_sol_estudiante, CURRENT_TIMESTAMP) BETWEEN v_fecha_inicio and v_fecha_final and a.idpersonal_docente = p_idpersonal;
  79. select count(*) into v_ta_agendas_programadas_d from esq_tutorias.ta_agenda a where a.fecha_sol_docente BETWEEN v_fecha_inicio and v_fecha_final and a.idpersonal_docente = p_idpersonal;
  80.  
  81. /*t. academica entrevistas*/
  82. select count(e.idpersonal_estudiante) into v_ta_entrevistas_efectiva from esq_tutorias.ta_agenda e where e.id_tipo_estado = 2554 and e.idpersonal_docente = p_idpersonal and e.fecha_registro BETWEEN v_fecha_inicio and v_fecha_final;
  83. select count(*) into v_ta_entrevistas_n_efectiva from esq_tutorias.ta_agenda a where a.id_tipo_estado in (2597, 2636) and a.fecha BETWEEN v_fecha_inicio and v_fecha_final and a.idpersonal_docente = p_idpersonal;
  84. select count(*) into v_ta_entrevistas_n_efectiva_d from esq_tutorias.ta_agenda a where a.id_tipo_estado in (2597) and a.fecha BETWEEN v_fecha_inicio and v_fecha_final and a.idpersonal_docente = p_idpersonal;
  85. select count(*) into v_ta_entrevistas_n_efectiva_e from esq_tutorias.ta_agenda a where a.id_tipo_estado in (2636) and a.fecha BETWEEN v_fecha_inicio and v_fecha_final and a.idpersonal_docente = p_idpersonal;
  86.  
  87. /*evaluacion tutoria academica*/
  88. select coalesce(round(avg(t.calificacion), 1), 0) into v_ta_calificacion
  89.       from (
  90.           select round(avg(ee.calificacion), 1) as calificacion, ee.id_entrevista
  91.           from esq_tutorias.ta_agenda e inner join esq_tutorias.ta_entrevista_evaluacion ee on ee.id_entrevista = e.id_agenda
  92.           where ee.calificacion > 0 and e.fecha_registro BETWEEN v_fecha_inicio and v_fecha_final and e.id_tipo_estado = 2554 and e.idpersonal_docente = p_idpersonal
  93.           group by ee.id_entrevista
  94.       ) t;
  95.  
  96. select count(t.calificacion) into v_ta_tutorias_evaluadas
  97.       from (
  98.           select round(avg(ee.calificacion), 1) as calificacion, ee.id_entrevista
  99.           from esq_tutorias.ta_agenda e inner join esq_tutorias.ta_entrevista_evaluacion ee on ee.id_entrevista = e.id_agenda
  100.           where e.fecha_registro BETWEEN v_fecha_inicio and v_fecha_final and e.id_tipo_estado = 2554 and e.idpersonal_docente = p_idpersonal
  101.           group by ee.id_entrevista
  102.       ) t;
  103.    
  104.  
  105.  
  106. select concat_ws(' ', coalesce(p.apellido1, ''), coalesce(p.apellido2, ''), p.nombres) || ' (' || p.cedula || ')' as docente ,
  107.     p.idfichero_hoja_vida_foto into v_docente,v_idfichero_hoja_vida_foto
  108. from esq_datos_personales.personal p
  109. where p.idpersonal = p_idpersonal; --40885;
  110. r_docente := v_docente;
  111. r_departamento := v_departamento;
  112. r_categoria := v_categoria;
  113. r_dedicacion := v_dedicacion;
  114. r_tutorados := v_tutorados;
  115. r_tutorados_activos := v_tutorados_activos;
  116. r_tutorados_pasivo := v_tutorados_pasivo;
  117. r_tutorados_egresado := v_tutorados_egresado;
  118. r_tutorados_otros := v_tutorados_otros;
  119. r_agendas_programadas := v_agendas_programadas;
  120. r_agendas_programadas_e := v_agendas_programadas_e;
  121. r_agendas_programadas_d := v_agendas_programadas_d;
  122. r_entrevistas_efectiva := v_entrevistas_efectiva;
  123. r_entrevistas_n_efectiva := v_entrevistas_n_efectiva;
  124. r_entrevistas_n_efectiva_d := v_entrevistas_n_efectiva_d;
  125. r_entrevistas_n_efectiva_e := v_entrevistas_n_efectiva_e;
  126. r_calificacion := v_calificacion;
  127. r_tutorias_evaluadas := v_tutorias_evaluadas;
  128. r_idfichero_hoja_vida_foto := v_idfichero_hoja_vida_foto;
  129. r_ta_agendas_programadas := v_ta_agendas_programadas;
  130. r_ta_agendas_programadas_e := v_ta_agendas_programadas_e;
  131. r_ta_agendas_programadas_d := v_ta_agendas_programadas_d;
  132. r_ta_entrevistas_efectiva := v_ta_entrevistas_efectiva;
  133. r_ta_entrevistas_n_efectiva := v_ta_entrevistas_n_efectiva;
  134. r_ta_entrevistas_n_efectiva_e := v_ta_entrevistas_n_efectiva_e;
  135. r_ta_entrevistas_n_efectiva_d := v_ta_entrevistas_n_efectiva_d;
  136. r_ta_calificacion := v_ta_calificacion;
  137. r_ta_tutorias_evaluadas := v_ta_tutorias_evaluadas;
  138. return next;
  139. END;
  140. $BODY$
  141.   LANGUAGE plpgsql VOLATILE
  142.   COST 100
  143.   ROWS 1000;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement