Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE
- PROCEDURE "PR_SISTEMA_PONTO" (
- HR_ENTRADA_MANHA OUT DATE,
- HR_SAIDA_MANHA OUT DATE,
- HR_ENTRADA_TARDE OUT DATE,
- HR_SAIDA_TARDE OUT DATE,
- dt_ponto_entrada_manha OUT DATE,
- dt_ponto_saida_manha OUT DATE,
- dt_ponto_entrada_tarde OUT DATE,
- dt_ponto_saida_tarde OUT DATE,
- FL_LIBERADO OUT VARCHAR2,
- FL_JUSTIFICADO OUT VARCHAR2,
- xNU_IDENTIFICACAO IN NUMBER,
- xcd_filial IN NUMBER)
- AS
- X_DIA VARCHAR2(3);
- xHR_ENTRADA_MANHA NUMBER;
- xHR_SAIDA_MANHA NUMBER;
- xHR_ENTRADA_TARDE NUMBER;
- xHR_SAIDA_TARDE NUMBER;
- x_qtde NUMBER;
- x_seq NUMBER;
- x_dt_ponto_entrada_manha DATE;
- x_dt_ponto_saida_manha DATE;
- x_dt_ponto_entrada_tarde DATE;
- x_dt_ponto_saida_tarde DATE;
- qt_minutos NUMBER;
- var_1 NUMBER;
- var_2 NUMBER;
- fl_filial_travada varchar2(1);
- cursor entradas IS
- SELECT dt_ponto_entrada, dt_ponto_saida
- FROM salvadm.tb_folha_ponto
- WHERE cd_empresa = 'LM' AND cd_filial = xcd_filial
- AND nu_identificacao = xnu_identificacao AND trunc(dt_ponto_entrada) =
- trunc(sysdate);
- BEGIN
- fl_liberado :='S';
- IF (xcd_filial = 4) THEN
- fl_liberado :='S';
- END IF;
- BEGIN
- SELECT DISTINCT 'S' INTO fl_liberado
- FROM SALVADM.tb_filial_supervisao fs
- WHERE fs.cd_empresa = 'LM'
- AND fs.ds_super = 'AREA 6'
- AND fs.cd_filial = xcd_filial;
- exception WHEN others THEN
- fl_filial_travada:= 'N';
- END;
- --Consulta filial e seta flag de libera¿¿¿¿¿¿¿¿o 'S'
- IF (fl_liberado = 'N') THEN
- BEGIN
- SELECT 'S'
- INTO fl_liberado
- FROM salvadm.tb_libera_filial lf
- WHERE lf.cd_filial = xcd_filial AND lf.dt_liberacao =
- trunc(sysdate);
- EXCEPTION WHEN NO_DATA_FOUND THEN NULL;
- END;
- END IF;
- /*--Consulta funcionario e seta flag de libera¿¿¿¿¿¿¿¿o 'S'*/
- IF (fl_liberado = 'N') THEN
- BEGIN
- SELECT 'S'
- INTO fl_liberado
- FROM salvadm.tb_libera_funcionario f
- WHERE f.nu_identificacao = xNU_IDENTIFICACAO AND f.dt_liberacao =
- trunc(sysdate);
- EXCEPTION WHEN NO_DATA_FOUND THEN NULL;
- END;
- END IF;
- IF (fl_liberado = 'N') THEN
- BEGIN
- SELECT to_char(sysdate,'d') INTO X_DIA FROM dual;
- BEGIN
- SELECT decode(x_dia, 1, DOM_ENTRADA_MANHA, 2, SEG_ENTRADA_MANHA, 3,
- TER_ENTRADA_MANHA, 4, QUA_ENTRADA_MANHA, 5, QUI_ENTRADA_MANHA, 6,
- SEX_ENTRADA_MANHA, SAB_ENTRADA_MANHA),
- decode(x_dia, 1, DOM_SAIDA_MANHA, 2, SEG_SAIDA_MANHA, 3,
- TER_SAIDA_MANHA, 4, QUA_SAIDA_MANHA, 5, QUI_SAIDA_MANHA, 6,
- SEX_SAIDA_MANHA, SAB_SAIDA_MANHA),
- decode(x_dia, 1, DOM_ENTRADA_TARDE, 2, SEG_ENTRADA_TARDE, 3,
- TER_ENTRADA_TARDE, 4, QUA_ENTRADA_TARDE, 5, QUI_ENTRADA_TARDE, 6,
- SEX_ENTRADA_TARDE, SAB_ENTRADA_TARDE),
- decode(x_dia, 1, DOM_SAIDA_TARDE, 2, SEG_SAIDA_TARDE, 3,
- TER_SAIDA_TARDE, 4, QUA_SAIDA_TARDE, 5, QUI_SAIDA_TARDE, 6,
- SEX_SAIDA_TARDE, SAB_SAIDA_TARDE)
- INTO xHR_ENTRADA_MANHA, xHR_SAIDA_MANHA, xHR_ENTRADA_TARDE,
- xHR_SAIDA_TARDE
- FROM SALVADM.VW_ponto_liberacao
- WHERE nu_identificacao = xNU_IDENTIFICACAO;
- END;
- IF (xhr_entrada_manha IS NULL) THEN
- fl_liberado :='S';
- END IF;
- IF (fl_liberado = 'N') THEN
- hr_entrada_manha :=
- to_date(to_char(nvl(xHR_ENTRADA_MANHA,0),'FM00.00')||' '||
- to_char(sysdate,'DD'),'hh24.mi dd');
- HR_SAIDA_MANHA :=
- to_date(to_char(nvl(xHR_SAIDA_MANHA,0),'FM00.00')||' '||
- to_char(sysdate,'DD'),'hh24.mi dd');
- HR_ENTRADA_TARDE :=
- to_date(to_char(nvl(xHR_ENTRADA_TARDE,0),'FM00.00')||' '||
- to_char(sysdate,'DD'),'hh24.mi dd');
- HR_SAIDA_TARDE :=
- to_date(to_char(nvl(xHR_SAIDA_TARDE,0),'FM00.00')||' '||
- to_char(sysdate,'DD'),'hh24.mi dd');
- dt_ponto_entrada_manha := NULL;
- dt_ponto_saida_manha := NULL;
- dt_ponto_entrada_tarde := NULL;
- dt_ponto_saida_tarde := NULL;
- BEGIN
- SELECT qt_minutos INTO qt_Minutos FROM salvadm.tb_ponto_liberacao
- WHERE cd_filial = xcd_filial AND nu_identificacao = xnu_identificacao
- AND trunc(dt_liberacao) = trunc(sysdate);
- EXCEPTION WHEN NO_DATA_FOUND THEN
- qt_minutos := 0;
- END;
- HR_SAIDA_TARDE := HR_SAIDA_TARDE + qt_minutos/1440;
- FOR c1 IN entradas loop
- BEGIN
- IF (dt_ponto_entrada_manha IS NULL) THEN
- dt_ponto_entrada_manha := c1.dt_ponto_entrada;
- ELSE
- dt_ponto_entrada_tarde := c1.dt_ponto_entrada;
- END IF;
- IF (dt_ponto_saida_manha IS NULL) THEN
- dt_ponto_saida_manha := c1.dt_ponto_saida;
- HR_SAIDA_MANHA:= HR_SAIDA_MANHA + qt_minutos/1440;
- ELSE
- dt_ponto_saida_tarde := c1.dt_ponto_saida;
- END IF;
- END;
- END loop;
- BEGIN
- SELECT DISTINCT 'S' INTO FL_JUSTIFICADO FROM
- salvadm.tb_folha_ponto_justificativa WHERE cd_empresa = 'LM' AND
- cd_filial = xcd_filial
- AND nu_identificacao = xnu_identificacao AND trunc(dt_ponto) =
- trunc(sysdate);
- EXCEPTION WHEN NO_DATA_FOUND THEN
- FL_JUSTIFICADO := 'N';
- END;
- BEGIN
- SELECT DISTINCT 'S' INTO FL_LIBERADO FROM
- salvadm.tb_aux_liberacao_ponto WHERE nu_identificacao =
- xnu_identificacao;
- EXCEPTION WHEN NO_DATA_FOUND THEN
- NULL;
- END;
- END IF;
- END;
- END IF;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement