Advertisement
jzgeorge

act funcion tutorias

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