Pular para o conteúdo

Fóruns SQL e PL/SQL problema com trigger problema com trigger

#87138
evandro_araujo
Participante

    create or replace procedure IA_P_GERA_H_ENTRADA(
    marc_cod_cracha in varchar2 ,
    coda_cod_coletor in varchar2,
    marc_dat_marcacao in date

    ) is
    vexist varchar2(1);
    vhorrefreal integer;
    vdfjorentradanucleo_func integer;
    vsetincodigo integer;
    vDFFUNCRACHA varchar2(17);
    vemail varchar2(50);
    vnome varchar2(50);
    vsysdate date;
    crlf varchar2( 2 ):= CHR( 13 ) || CHR( 10 );
    v_mensagem varchar2(800);
    begin

      vsysdate:= sysdate;
      begin
      select nvl('S','N')
          into vexist
      from
          ia_t_gera_h_entrada t
      where
          t.crac_cod_cracha = marc_cod_cracha
      and
         to_date(t.marc_dt_marcacao,'dd/mm/yyyy') =   to_date(vsysdate,'dd/mm/yyyy');
    

    — to_date(t.marc_dt_marcacao,’dd/mm/yyyy’) = to_date(:new.marc_dat_marcacao,’dd/mm/yyyy’);
    exception when no_data_found then
    vexist := ‘N’;
    end;

      if vexist = 'N' then
         begin
                select
                     jor.dfjorentradanucleo,
                     fun.dffunnome
                into
                     vdfjorentradanucleo_func,
                     vnome
    
                from forponto.pfunfpto fun,
                     forponto.pfuhfpto fhor,
                     forponto.phorfpto hor,
                     forponto.phojfpto hjor,
                     forponto.pjorfpto jor
    
                where fun.dffuncracha = fhor.dffuncracha
                  and fhor.dfhorcodigo = hor.dfhorcodigo
                  and hor.dfhorcodigo = hjor.dfhorcodigo
                  and hjor.dfjorcodigo = jor.dfjorcodigo
                  and fun.dffunativo = 'S'
                  and hjor.dfhojorigem = 'H'
                  and hjor.dftpdcodigo in ('02','04')
                  and fhor.dffuhinicio = trunc(sysdate)
                  and hjor.dfhojfator = trim(to_char(to_char(trunc(sysdate), 'D'),'000'))
                  and not exists (select *
                                  from forponto.pfuafpto aff
                                  where fun.dffuncracha = aff.dffuncracha
                                    and aff.dfmtvcodigo = '100'
                                  )
                  and to_number(fun.dffuncracha) = to_number(marc_cod_cracha);
              exception when others then
                null;
              end;
    
    
    
    
    
              vhorrefreal := ((to_number(trim(to_char(marc_dat_marcacao,'hh24'))) * 60) + to_number(trim(to_char(marc_dat_marcacao,'mi'))));
    
              begin
                     insert into mgia.IA_T_GERA_H_ENTRADA(crac_cod_cracha,
                                                      coda_cod_coletor,
                                                      marc_dt_marcacao,
                                                      marc_hor_marcacao_atual,
                                                      dfjorentradanucleo_func)
                                                      values
                                                      (marc_cod_cracha,
                                                      coda_cod_coletor,
                                                      marc_dat_marcacao,
                                                      vhorrefreal,
                                                      vdfjorentradanucleo_func);
             exception when others then
                 null;
             end;
    

    —————————- hora de tolerancia por exemplo 30 minutos
    — vhoratolerancia:=5;
    — if vhorrefreal > (vdfjorentradanucleo_func+vhoratolerancia) then
    if vhorrefreal > (vdfjorentradanucleo_func) then
    begin

                       select
                          E.SET_IN_CODIGO
                       into
                          vsetincodigo
                       from
                          mglan.lan_encarregados E
    
                       where
                          to_number(E.dffuncracha) = to_number(marc_cod_cracha);
    
                       exception when others then
                          null;
                       end;
    
    
                      begin
                         insert into mgia.IA_T_GERA_PENDENCIA_COLAB(crac_cod_cracha,
                                                                    marc_dt_marcacao,
                                                                    set_in_codigo,
                                                                    status)
                                                                    values(
                                                                    marc_cod_cracha,
                                                                    marc_dat_marcacao,
                                                                    vsetincodigo,
                                                                    0);
                       exception when others then
                          null;
                       end;
    
    
                      begin
                             SELECT
                                 P.DFFUNCRACHA
                             INTO
                                 vDFFUNCRACHA
                             FROM
                                 FORPONTO.PFUNFPTO P,
                                 MGLAN.LAN_SETORENC E
                             WHERE
                                 P.DFFUNCRACHA=E.ENC_ST_CRACHA
                             AND
                                 E.SET_IN_CODIGO=vsetincodigo
                             AND
                                 P.DFFUNATIVO = 'S'
                             AND
                                 P.DFFUNCRACHA NOT IN(SELECT
                                                          A.DFFUNCRACHA
                                                      FROM
                                                          FORPONTO.PFUAFPTO A
                                                      WHERE
                                                          A.DFMTVCODIGO IN('100','101'));
                       exception when others then
                          null;
                       end;
    

    —- dbms_output.put_line(‘ valormensal –> ‘ || vDFFUNCRACHA);

                       begin
                            SELECT
                               l.usu_st_email
                            into
                               vemail
                            FROM
                               MGLAN.LAN_ENCARREGADOS L
                            WHERE
                               L.ENC_ST_TIPO = 'E'
                            AND
                              to_number(L.DFFUNCRACHA) = to_number(vDFFUNCRACHA);
    
                       exception when others then
                          null;
                       end;
    
                       v_mensagem := crlf;
    
                       v_mensagem := v_mensagem || 'Atencao! Atraso de Funcionário! no dia '|| to_char(marc_dat_marcacao) || '';
    
                       v_mensagem := v_mensagem || crlf;
    
                       v_mensagem := v_mensagem || crlf;
    
                       v_mensagem := v_mensagem || 'Existe atraso do funcionário  '|| to_char(vnome) || ' .';
    
    
                       v_mensagem := v_mensagem || crlf;
    
                       v_mensagem := v_mensagem || 'Favor entrar no sistema Encarregados e avaliar este atraso.';
                       v_mensagem := v_mensagem || crlf;
                       v_mensagem := v_mensagem || crlf;
    
                       v_mensagem := v_mensagem || '<<<>>>';
    
                       v_mensagem := v_mensagem || crlf;
    
                       v_mensagem := v_mensagem || crlf;
    
                      mgia.envio_email(<a href="mailto:'mega@lanmard.local" />'mega@lanmard.local</a>','evandroa@lanmard.local','Atraso de Funcionario!',v_mensagem);
                      ---mgia.envio_email(<a href="mailto:'mega@lanmard.local" />'mega@lanmard.local</a>',vemail,'Atraso de Funcionario!',v_mensagem);
    
    
    
               end if;
    

    —————————–hora de tolerancia por exemplo 30 minutos
    end if;
    end IA_P_GERA_H_ENTRADA;