Untitled
unknown
plain_text
2 years ago
12 kB
8
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