Advertisement
Guest User

Untitled

a guest
Mar 17th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 6.98 KB | None | 0 0
  1. CREATE OR REPLACE
  2. PROCEDURE           "PR_SISTEMA_PONTO" (
  3. HR_ENTRADA_MANHA OUT DATE,
  4. HR_SAIDA_MANHA OUT DATE,
  5. HR_ENTRADA_TARDE OUT DATE,
  6. HR_SAIDA_TARDE OUT DATE,
  7. dt_ponto_entrada_manha OUT DATE,
  8. dt_ponto_saida_manha OUT DATE,
  9. dt_ponto_entrada_tarde OUT DATE,
  10. dt_ponto_saida_tarde OUT DATE,
  11. FL_LIBERADO OUT VARCHAR2,
  12. FL_JUSTIFICADO OUT VARCHAR2,
  13. xNU_IDENTIFICACAO IN NUMBER,
  14. xcd_filial IN NUMBER)
  15.         AS
  16. X_DIA VARCHAR2(3);
  17. xHR_ENTRADA_MANHA NUMBER;
  18. xHR_SAIDA_MANHA NUMBER;
  19. xHR_ENTRADA_TARDE NUMBER;
  20. xHR_SAIDA_TARDE NUMBER;
  21. x_qtde NUMBER;
  22. x_seq NUMBER;
  23. x_dt_ponto_entrada_manha DATE;
  24. x_dt_ponto_saida_manha DATE;
  25. x_dt_ponto_entrada_tarde DATE;
  26. x_dt_ponto_saida_tarde DATE;
  27. qt_minutos NUMBER;
  28. var_1 NUMBER;
  29. var_2 NUMBER;
  30.  
  31. fl_filial_travada varchar2(1);
  32.  
  33. cursor entradas IS
  34. SELECT dt_ponto_entrada, dt_ponto_saida
  35. FROM salvadm.tb_folha_ponto
  36. WHERE cd_empresa = 'LM' AND cd_filial = xcd_filial
  37. AND nu_identificacao = xnu_identificacao AND trunc(dt_ponto_entrada) =
  38. trunc(sysdate);
  39.  
  40. BEGIN
  41.  
  42.  
  43. fl_liberado :='S';
  44. IF (xcd_filial = 4) THEN
  45.         fl_liberado :='S';
  46. END IF;
  47.  
  48.     BEGIN
  49.                         SELECT DISTINCT 'S' INTO fl_liberado
  50.                                 FROM SALVADM.tb_filial_supervisao fs
  51.                                 WHERE fs.cd_empresa = 'LM'
  52.                                 AND  fs.ds_super = 'AREA 6'
  53.                                 AND  fs.cd_filial = xcd_filial;
  54.                                 exception WHEN others THEN
  55.                                 fl_filial_travada:= 'N';
  56.                         END;
  57.  
  58.         --Consulta filial e seta flag de libera¿¿¿¿¿¿¿¿o 'S'
  59.         IF (fl_liberado = 'N') THEN
  60.             BEGIN
  61.                            SELECT 'S'
  62.                            INTO fl_liberado
  63.                            FROM salvadm.tb_libera_filial lf
  64.                            WHERE lf.cd_filial = xcd_filial AND lf.dt_liberacao =
  65. trunc(sysdate);
  66.                            EXCEPTION WHEN NO_DATA_FOUND THEN NULL;
  67.                         END;
  68.  
  69.         END IF;
  70.  
  71.  
  72. /*--Consulta funcionario e seta flag de libera¿¿¿¿¿¿¿¿o 'S'*/
  73.         IF (fl_liberado = 'N') THEN
  74.                   BEGIN
  75.                       SELECT 'S'
  76.                             INTO fl_liberado
  77.                             FROM salvadm.tb_libera_funcionario f
  78.                             WHERE f.nu_identificacao = xNU_IDENTIFICACAO AND f.dt_liberacao =
  79. trunc(sysdate);
  80.                             EXCEPTION WHEN NO_DATA_FOUND THEN NULL;
  81.                          END;
  82.         END IF;
  83.  
  84.  
  85. IF (fl_liberado = 'N') THEN
  86.  
  87.                 BEGIN
  88.                         SELECT to_char(sysdate,'d') INTO X_DIA FROM dual;
  89.                         BEGIN
  90.                                 SELECT decode(x_dia, 1, DOM_ENTRADA_MANHA, 2,  SEG_ENTRADA_MANHA, 3,
  91. TER_ENTRADA_MANHA, 4,  QUA_ENTRADA_MANHA, 5,  QUI_ENTRADA_MANHA, 6,
  92. SEX_ENTRADA_MANHA, SAB_ENTRADA_MANHA),
  93.                                 decode(x_dia, 1, DOM_SAIDA_MANHA, 2,  SEG_SAIDA_MANHA, 3,
  94. TER_SAIDA_MANHA, 4,  QUA_SAIDA_MANHA, 5,  QUI_SAIDA_MANHA, 6,
  95. SEX_SAIDA_MANHA, SAB_SAIDA_MANHA),
  96.                                 decode(x_dia, 1, DOM_ENTRADA_TARDE, 2,  SEG_ENTRADA_TARDE, 3,
  97. TER_ENTRADA_TARDE, 4,  QUA_ENTRADA_TARDE, 5,  QUI_ENTRADA_TARDE, 6,
  98. SEX_ENTRADA_TARDE, SAB_ENTRADA_TARDE),
  99.                                 decode(x_dia, 1, DOM_SAIDA_TARDE, 2,  SEG_SAIDA_TARDE, 3,
  100. TER_SAIDA_TARDE, 4,  QUA_SAIDA_TARDE, 5,  QUI_SAIDA_TARDE, 6,
  101. SEX_SAIDA_TARDE, SAB_SAIDA_TARDE)
  102.                                 INTO xHR_ENTRADA_MANHA, xHR_SAIDA_MANHA, xHR_ENTRADA_TARDE,
  103. xHR_SAIDA_TARDE
  104.                                 FROM SALVADM.VW_ponto_liberacao
  105.                                 WHERE nu_identificacao = xNU_IDENTIFICACAO;
  106.                         END;
  107.  
  108.                         IF (xhr_entrada_manha IS NULL) THEN
  109.                                 fl_liberado :='S';
  110.                         END IF;
  111. IF (fl_liberado = 'N') THEN
  112.                         hr_entrada_manha :=
  113. to_date(to_char(nvl(xHR_ENTRADA_MANHA,0),'FM00.00')||' '||
  114. to_char(sysdate,'DD'),'hh24.mi dd');
  115.                         HR_SAIDA_MANHA :=
  116. to_date(to_char(nvl(xHR_SAIDA_MANHA,0),'FM00.00')||' '||
  117. to_char(sysdate,'DD'),'hh24.mi dd');
  118.                         HR_ENTRADA_TARDE :=
  119. to_date(to_char(nvl(xHR_ENTRADA_TARDE,0),'FM00.00')||' '||
  120. to_char(sysdate,'DD'),'hh24.mi dd');
  121.                         HR_SAIDA_TARDE :=
  122. to_date(to_char(nvl(xHR_SAIDA_TARDE,0),'FM00.00')||' '||
  123. to_char(sysdate,'DD'),'hh24.mi dd');
  124.  
  125.                         dt_ponto_entrada_manha := NULL;
  126.                         dt_ponto_saida_manha := NULL;
  127.                         dt_ponto_entrada_tarde := NULL;
  128.                         dt_ponto_saida_tarde := NULL;
  129.  
  130.                         BEGIN
  131.                                 SELECT qt_minutos INTO qt_Minutos FROM salvadm.tb_ponto_liberacao
  132. WHERE cd_filial = xcd_filial AND nu_identificacao = xnu_identificacao
  133.                                 AND trunc(dt_liberacao) = trunc(sysdate);
  134.                                 EXCEPTION WHEN NO_DATA_FOUND THEN
  135.                                 qt_minutos := 0;
  136.                         END;
  137.  
  138.                         HR_SAIDA_TARDE := HR_SAIDA_TARDE + qt_minutos/1440;
  139.  
  140.                         FOR c1 IN entradas loop
  141.                                 BEGIN
  142.                                         IF (dt_ponto_entrada_manha IS NULL) THEN
  143.                                                 dt_ponto_entrada_manha := c1.dt_ponto_entrada;
  144.                                         ELSE
  145.                                                 dt_ponto_entrada_tarde := c1.dt_ponto_entrada;
  146.                                         END IF;
  147.                                         IF (dt_ponto_saida_manha IS NULL) THEN
  148.                                                 dt_ponto_saida_manha := c1.dt_ponto_saida;
  149.                                                 HR_SAIDA_MANHA:= HR_SAIDA_MANHA + qt_minutos/1440;
  150.                                         ELSE
  151.                                                 dt_ponto_saida_tarde := c1.dt_ponto_saida;
  152.                                         END IF;
  153.                                 END;
  154.                         END loop;
  155.  
  156.                         BEGIN
  157.                                 SELECT DISTINCT 'S' INTO FL_JUSTIFICADO FROM
  158. salvadm.tb_folha_ponto_justificativa WHERE cd_empresa = 'LM' AND
  159. cd_filial = xcd_filial
  160.                                 AND nu_identificacao = xnu_identificacao AND trunc(dt_ponto) =
  161. trunc(sysdate);
  162.                                 EXCEPTION WHEN NO_DATA_FOUND THEN
  163.                                 FL_JUSTIFICADO := 'N';
  164.                         END;
  165.                         BEGIN
  166.                                 SELECT DISTINCT 'S' INTO FL_LIBERADO FROM
  167. salvadm.tb_aux_liberacao_ponto WHERE nu_identificacao =
  168. xnu_identificacao;
  169.                                 EXCEPTION WHEN NO_DATA_FOUND THEN
  170.                                 NULL;
  171.                         END;
  172.  
  173.  
  174.     END IF;
  175.         END;
  176.         END IF;
  177.         END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement