Advertisement
Guest User

pg

a guest
Oct 21st, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.56 KB | None | 0 0
  1. -- Function: lst_aut_ope_pen(bigint, bigint, bigint, bigint, bigint, bigint)
  2.  
  3. -- DROP FUNCTION lst_aut_ope_pen(bigint, bigint, bigint, bigint, bigint, bigint);
  4.  
  5. CREATE OR REPLACE FUNCTION lst_aut_ope_pen(
  6. idclt bigint,
  7. idemp bigint,
  8. idpro bigint,
  9. idusremp bigint,
  10. numpag bigint,
  11. catperpag bigint)
  12. RETURNS SETOF type_aut_leg_pen AS
  13. $BODY$
  14.  
  15. DECLARE totalRegistros BIGINT := 0;
  16. flagHolding BOOLEAN := false;
  17. idEmpresa BIGINT := 0;
  18.  
  19. BEGIN
  20. /*
  21. ** Autor: avalenzuela
  22. ** Fecha: 02-07-2015
  23. ** Descripción: Listado de autorizaciones operativas pendientes por usuario.
  24. **
  25. ** Modificación
  26. ** Autor: avalenzuela
  27. ** Fecha: 22-08-2106
  28. ** Descripción: Se corrige la query para que liste los usuarios genericos.
  29. **
  30. ** Modificación
  31. ** Autor: avalenzuela
  32. ** Fecha: 21-10-2106
  33. ** Descripción: Se incorpora el tipo de producto para buscar autorizadores.
  34. */
  35.  
  36. idEmpresa := idemp;
  37. IF idEmpresa < 0 THEN
  38. idEmpresa:=(idEmpresa*-1);
  39. flagHolding:=true;
  40. END IF;
  41.  
  42. SELECT
  43. count(1) INTO totalRegistros
  44. FROM
  45. autorizaciones aut
  46. JOIN rel_autpro_aut relaut
  47. ON relaut.id_aut = aut.id_aut
  48. JOIN autorizaciones_productos autpro
  49. ON relaut.id_autpro = autpro.id_autpro
  50. LEFT JOIN perfiles prf
  51. ON prf.id_prf = relaut.id_atz_resp
  52. JOIN rel_emp_pro relemppro
  53. ON autpro.id_relemppro = relemppro.id_relemppro
  54. JOIN empresas emp
  55. ON relemppro.id_emp = emp.id_emp
  56. JOIN productos pro
  57. ON relemppro.id_pro = pro.id_pro
  58. WHERE
  59. emp.id_clt = idClt
  60. AND (emp.id_emp = idEmpresa OR (emp.emp_id_emp = idEmpresa AND flagHolding))
  61. AND (idPro = 0 OR pro.id_pro = idPro) --Cero todos los productos
  62. AND pro.id_tippro = (SELECT id_tippro FROM tipos_productos WHERE cod_tippro = 'operacionales')
  63. AND upper(relaut.est_rel_aut) = 'P'--Listo solo las pendientes
  64. AND upper(aut.est_aut) = 'P'
  65. AND autpro.est_autpro in ('H','M')
  66. AND (idUsrEmp = -1 OR (relaut.id_atz_resp = 2 OR relaut.id_atz_resp IN (SELECT id_atz FROM autorizadores WHERE id_val_atz = idUsrEmp AND id_tippro = (SELECT id_tippro FROM tipos_productos WHERE cod_tippro = 'operacionales')))) -- [id_atz_resp = 2] id de genérico operacionales
  67. AND relaut.ord_rel_aut = (
  68. SELECT min(relauttmp.ord_rel_aut)
  69. FROM rel_autpro_aut relauttmp
  70. WHERE relauttmp.id_autpro = autpro.id_autpro
  71. AND relauttmp.id_aut = aut.id_aut
  72. AND relauttmp.est_rel_aut = 'P'
  73. )
  74. AND 0 = (
  75. SELECT count(1)
  76. FROM rel_autpro_aut relauttmp
  77. WHERE relauttmp.id_autpro = autpro.id_autpro
  78. AND relauttmp.id_aut = aut.id_aut
  79. AND relauttmp.est_rel_aut <> 'P'
  80. AND id_atz_mod = idUsrEmp
  81. );
  82.  
  83. RETURN QUERY (
  84. SELECT
  85. id_aut,
  86. id_rel_aut,
  87. id_trx_aut,
  88. fec_ing_trx_aut,
  89. fec_exp_trx_aut,
  90. est_aut,
  91. id_autpro,
  92. id_atz_resp,
  93. tot_atz,
  94. can_atz,
  95. id_pro,
  96. dsc_pro,
  97. id_emp,
  98. raz_soc_emp,
  99. totalRegistros
  100. FROM (
  101. SELECT
  102. aut.id_aut,
  103. relaut.id_rel_aut,
  104. aut.id_trx_aut,
  105. aut.fec_ing_trx_aut,
  106. aut.fec_exp_trx_aut,
  107. aut.est_aut,
  108. autpro.id_autpro,
  109. relaut.id_atz_resp,
  110. (select count(1) from rel_autpro_aut where id_aut = aut.id_aut and id_autpro = autpro.id_autpro) as tot_atz,
  111. (select count(1) from rel_autpro_aut where id_aut = aut.id_aut and id_autpro = autpro.id_autpro and est_rel_aut = 'A') as can_atz,
  112. pro.id_pro,
  113. pro.dsc_pro,
  114. emp.id_emp,
  115. emp.raz_soc_emp,
  116. row_number() over() as pagina
  117. FROM
  118. autorizaciones aut
  119. JOIN rel_autpro_aut relaut
  120. ON relaut.id_aut = aut.id_aut
  121. JOIN autorizaciones_productos autpro
  122. ON relaut.id_autpro = autpro.id_autpro
  123. LEFT JOIN perfiles prf
  124. ON prf.id_prf = relaut.id_atz_resp
  125. JOIN rel_emp_pro relemppro
  126. ON autpro.id_relemppro = relemppro.id_relemppro
  127. JOIN empresas emp
  128. ON relemppro.id_emp = emp.id_emp
  129. JOIN productos pro
  130. ON relemppro.id_pro = pro.id_pro
  131. WHERE
  132. emp.id_clt = idClt
  133. AND (emp.id_emp = idEmpresa OR (emp.emp_id_emp = idEmpresa AND flagHolding))
  134. AND (idPro = 0 OR pro.id_pro = idPro) --Cero todos los productos
  135. AND pro.id_tippro = (SELECT id_tippro FROM tipos_productos WHERE cod_tippro = 'operacionales')
  136. AND upper(relaut.est_rel_aut) = 'P'--Listo solo las pendientes
  137. AND upper(aut.est_aut) = 'P'
  138. AND autpro.est_autpro in ('H','M')
  139. AND (idUsrEmp = -1 OR (relaut.id_atz_resp = 2 OR relaut.id_atz_resp IN (SELECT id_atz FROM autorizadores WHERE id_val_atz = idUsrEmp AND id_tippro = (SELECT id_tippro FROM tipos_productos WHERE cod_tippro = 'operacionales')))) -- [id_atz_resp = 2] id de genérico operacionales
  140. AND (idUsrEmp = -1 OR (autpro.atz_ord_cre = 'N' OR (relaut.ord_rel_aut = (
  141. SELECT min(relauttmp.ord_rel_aut)
  142. FROM rel_autpro_aut relauttmp
  143. WHERE relauttmp.id_autpro = autpro.id_autpro
  144. AND relauttmp.id_aut = aut.id_aut
  145. AND relauttmp.est_rel_aut = 'P'
  146. )
  147. AND 0 = (
  148. SELECT count(1)
  149. FROM rel_autpro_aut relauttmp
  150. WHERE relauttmp.id_autpro = autpro.id_autpro
  151. AND relauttmp.id_aut = aut.id_aut
  152. AND relauttmp.est_rel_aut <> 'P'
  153. AND id_atz_mod IN (SELECT id_atz FROM autorizadores WHERE id_val_atz = idUsrEmp)
  154. ))))
  155. ) as tabla
  156. WHERE
  157. numPag = 0 OR pagina BETWEEN (((numPag - 1) * catPerPag)+1) AND (numPag * catPerPag)
  158. ORDER BY id_aut ASC
  159. );
  160. END;
  161. $BODY$
  162. LANGUAGE plpgsql VOLATILE
  163. COST 100
  164. ROWS 1000;
  165. ALTER FUNCTION lst_aut_ope_pen(bigint, bigint, bigint, bigint, bigint, bigint)
  166. OWNER TO postgres;
  167. COMMENT ON FUNCTION lst_aut_ope_pen(bigint, bigint, bigint, bigint, bigint, bigint) IS 'Listado de autorizaciones operativas pendientes por perfil.';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement