Untitled

 avatar
unknown
plain_text
2 years ago
12 kB
5
Indexable
create or replace procedure spBPM_IniciaRecebCentral(pnCodFlowCentral in number,
                                                     psSimulation     in varchar2,
                                                     psCodUsuario     in varchar2,
                                                     pnNroempresa     in max_empresa.nroempresa%type) as

  vsToken       varchar2(500);
  xmlValues     varchar2(2000);
  vsNroProcesso varchar2(15);
begin

  vsToken := pkg_bpm_orquestra.fGeraToken(psCodUsuario);

  if (vsToken is not null) then
    --Identificar as novas notas fiscais a serem recebidas
    for y in (select *
                from (select distinct nf.SEQNOTAFISCAL,
                                      nf.nroempresa,
                                      nf.NUMERONF,
                                      nf.SERIENF,
                                      lpad(nf.nrocgccpf, 12, '0') ||
                                      lpad(nf.digcgccpf, 2, '0') nrocgccpf,
                                      emp.nroempresa||'-'||initcap(emp.nomereduzido) nomeempresa,
                                      regexp_replace(initcap(nvl(substr(nf.natoperacao,
                                                                        1,
                                                                        instr(nf.natoperacao,
                                                                              ' ') - 1),
                                                                 nf.natoperacao)),
                                                     '[]~!@#$%^&*()_+=\{}[:¿;¿<,>./?]+',
                                                     '') natoperacao,
                                      regexp_replace(initcap(p.nomerazao),
                                                     '[]~!@#$%^&*()_+=\{}[:¿;¿<,>./?]+',
                                                     '') || '-' ||
                                      p.seqpessoa fornecedor,
                                      rank() over(partition by lpad(p.nrocgccpf, 12, '0') || lpad(p.digcgccpf, 2, '0') order by p.seqpessoa) r_id,
                                      to_char(nf.DTAEMISSAOC5, 'dd/mm/yy') dtaemissao
                        from mrlv_nfeimportacao nf,
                             ge_empresa         emp,
                             ge_pessoa          p
                       where nf.nroempresa = emp.nroempresa
                         and nf.seqpessoa = p.seqpessoa
                         and p.fisicajuridica = 'J'
                         and nf.DTAEMISSAOC5 between trunc(sysdate) - 10 and
                             trunc(sysdate)
                         and nf.nroempresa = pnNroempresa
                         and nf.nroprocessobpm = 0
                         and not exists
                       (select 1
                                from maf_fornecedor yy
                               where yy.seqfornecedor = p.seqpessoa
                                 and yy.indgerativautobpmrectocentr = 'N')
                         and not exists
                       (select x.seqnotafiscal
                                from mlf_auxnotafiscal x, ge_pessoa xx
                               where x.seqpessoa = xx.seqpessoa
                                 and x.numeronf = nf.numeronf
                                 and lpad(xx.nrocgccpf, 12, '0') ||
                                     lpad(xx.digcgccpf, 2, '0') =
                                     lpad(nf.nrocgccpf, 12, '0') ||
                                     lpad(nf.digcgccpf, 2, '0')
                                 and lpad(trim(x.serienf), 3, '0') =
                                     lpad(nf.serienf, 3, '0')
                                 and x.nroempresa = nf.nroempresa
                                 and x.tipnotafiscal = 'E'
                                 and x.indprocessamento in ('G', 'L')
                                 and nvl(to_char(x.dtaemissao, 'dd/mm/yyyy'),
                                         nf.dtaemissao) = nf.dtaemissao
                                 and nvl(x.nfechaveacesso,
                                         nvl(x.nfechaveacessocopia,
                                             nf.chaveacesso)) = nf.chaveacesso)
                         and not exists
                       (select 1
                                from tmp_m014_item it
                               where it.m000_id_nf = nf.SEQNOTAFISCAL
                                 and it.m014_cd_cfop in
                                     (select column_value
                                        from table(cast(c5_complexin.c5intable((select a.valor
                                                                                 from max_parametro a
                                                                                where a.parametro =
                                                                                      'CFOP_EXCECAO_RECEB'
                                                                                  and a.grupo =
                                                                                      'BPM')) as
                                                        c5instrtable))))
                         and not
                              exists((select y.seqnotafiscal
                                       from mlf_notafiscal y, ge_pessoa yyy
                                      where y.numeronf = nf.numeronf
                                        and y.seqpessoa = yyy.seqpessoa
                                        and lpad(yyy.nrocgccpf, 12, '0') ||
                                            lpad(yyy.digcgccpf, 2, '0') =
                                            lpad(nf.nrocgccpf, 12, '0') ||
                                            lpad(nf.digcgccpf, 2, '0')
                                        and lpad(trim(y.serienf), 3, '0') =
                                            lpad(to_char(nf.serienf), 3, '0')
                                        and y.nroempresa = nf.nroempresa
                                        and y.tipnotafiscal = 'E'
                                        and to_char(y.dtaemissao, 'dd/mm/yyyy') =
                                            nf.dtaemissao
                                        and nvl(y.nfechaveacesso, 0) =
                                            nf.chaveacesso
                                     
                                     union
                                     
                                     select yy.seqnotafiscal
                                       from mlf_notafiscal   yy,
                                            max_codgeraloper pp,
                                            ge_pessoa        z
                                      where yy.nfreferencianro = nf.numeronf
                                        and yy.nfreferenciaserie = nf.serienf
                                        and yy.seqpessoa = z.seqpessoa
                                        and lpad(z.nrocgccpf, 12, '0') ||
                                            lpad(z.digcgccpf, 2, '0') =
                                            lpad(nf.nrocgccpf, 12, '0') ||
                                            lpad(nf.digcgccpf, 2, '0')
                                        and yy.nroempresa = nf.nroempresa
                                        and yy.tipnotafiscal = 'E'
                                        and to_char(yy.nfreferenciadtaemissao,
                                                    'dd/mm/yyyy') =
                                            nf.dtaemissao
                                        and nvl(yy.nfereferenciachave, 0) =
                                            nf.chaveacesso
                                        and pp.codgeraloper = yy.codgeraloper
                                        and pp.tipuso = 'E'
                                        and pp.indnfrefprodrural = 'S')))
                                        where r_id = 1) loop
    
      --Chamada do Webservice para criar um novo processo de recebimento por nota fiscal
      xmlValues := '<![CDATA[<form>';
      xmlValues := xmlValues || '<nroempresa>' || y.nroempresa ||
                   '</nroempresa>';
      xmlValues := xmlValues || '<cnpj>' || y.nrocgccpf || '</cnpj>';
      xmlValues := xmlValues || '<numeronf>' || y.NUMERONF || '</numeronf>';
      xmlValues := xmlValues || '<serie>' || y.SERIENF || '</serie>';
      xmlValues := xmlValues || '<observacao></observacao>';
      xmlValues := xmlValues || '<quantidadeDeNotas>0</quantidadeDeNotas>';
      xmlValues := xmlValues ||
                   '<codigodoprocessopai>0</codigodoprocessopai>';
      xmlValues := xmlValues || '<situacaonf></situacaonf>';
      xmlValues := xmlValues || '<seqnotafiscal></seqnotafiscal>';
      xmlValues := xmlValues || '<seqauxnotafiscal></seqauxnotafiscal>';
      xmlValues := xmlValues || '<incnfe></incnfe>';
      xmlValues := xmlValues || '<incnf></incnf>';
      xmlValues := xmlValues || '<origemnfe>N</origemnfe>';
      xmlValues := xmlValues || '<origemnf>N</origemnf>';
      xmlValues := xmlValues || '<notaliberada></notaliberada>';
      xmlValues := xmlValues || '<codinconsistcad></codinconsistcad>';
      xmlValues := xmlValues || '<codinconsistcom></codinconsistcom>';
      xmlValues := xmlValues || '<codinconsistfisc></codinconsistfisc>';
      xmlValues := xmlValues || '<codinconsistcadpes></codinconsistcadpes>';
      xmlValues := xmlValues ||
                   '<codinconsistccentral></codinconsistccentral>';
      xmlValues := xmlValues || '<retinconsistcad></retinconsistcad>';
      xmlValues := xmlValues || '<retinconsistcom></retinconsistcom>';
      xmlValues := xmlValues || '<retinconsistfisc></retinconsistfisc>';
      xmlValues := xmlValues || '<retinconsistcadpes></retinconsistcadpes>';
      xmlValues := xmlValues ||
                   '<retinconsistcentral></retinconsistcentral>';
      xmlValues := xmlValues ||
                   '<codusuarioatividade></codusuarioatividade>';
      xmlValues := xmlValues || '<nomeempresa>' || y.nomeempresa ||
                   '</nomeempresa>';
      xmlValues := xmlValues ||
                   '<nomeusuarioatividade></nomeusuarioatividade>';
      xmlValues := xmlValues ||
                   '<emailusuarioatividade></emailusuarioatividade>';
      xmlValues := xmlValues || '<fornecedor>' || y.fornecedor ||
                   '</fornecedor>';
      xmlValues := xmlValues || '<natoperacao>' || y.natoperacao ||
                   '</natoperacao>';
      xmlValues := xmlValues || '<decisao>S</decisao>';
      xmlValues := xmlValues || '<cancelado></cancelado>';
      xmlValues := xmlValues || '<historico></historico>';
      xmlValues := xmlValues || '<produtorrural>N</produtorrural>';
      xmlValues := xmlValues || '</form>]]>';
    
      pkg_bpm_orquestra.spIniciaProcesso(vsToken,
                                         pnCodFlowCentral,
                                         psSimulation,
                                         xmlValues,
                                         psCodUsuario,
                                         'Empresa: ' || y.nroempresa ||
                                         ' - NroNF: ' || y.NUMERONF ||
                                         ' - Serie: ' || y.SERIENF ||
                                         ' - CNPJ: ' || y.nrocgccpf,
                                         vsNroProcesso);
    
      if (vsNroProcesso is not null) then
        update TMP_M000_NF a
           set a.nroprocessobpm = to_number(vsNroProcesso)
         where a.m000_id_nf = y.seqnotafiscal;
      end if;
    
    end loop;
  
  end if;

Exception
  When Others Then
    pkg_bpm_orquestra.spGravalog(Sqlerrm, psCodUsuario, 'N');
end spBPM_IniciaRecebCentral;
Editor is loading...
Leave a Comment