Tempo aproximado para leitura: 00:05:00 min
Dúvida
Como reprocessar documentos fiscais com inconsistência de valor de base ou imposto do CBS/IBS negativos (seqinconsist = 301) e integrá-los novamente ao ERP através do PL/SQL Developer?
Ambiente
Monitor de PDVs - Aplicável para todas as versões.
Solução
💡 IMPORTANTE:
A versão de PDV/Monitor com correção para estancar a situação foi liberada em 26.9.0.2, sendo necessária a atualização para solucionar definitivamente e não gerar novos casos.Este procedimento envolve manipulação direta de dados nas tabelas operacionais do sistema. Deve ser executado exclusivamente pelo DBA ou pela equipe de TI/Suporte Técnico da empresa, preferencialmente fora do horário de pico. Recomenda-se realizar backup das tabelas envolvidas antes da execução.
Passo a passo para execução via PL/SQL
Abra o PL/SQL Developer.
Conecte-se na base de dados com um usuário que possua permissões de leitura/escrita nos schemas
CONSINCOMONITOReCONSINCO(ou utilize o usuário padrão da aplicação/DBA).
Abra uma nova janela de comando SQL (SQL Window).
Copie e cole o script abaixo:
SQL:
begin
for t in (select a.*, c.nronotafiscal, c.seriedocto
from consincomonitor.tb_docto a,
consincomonitor.tb_doctonfe b,
consincomonitor.tb_doctocupom c
where b.nroempresa = a.nroempresa
and b.nrocheckout = a.nrocheckout
and b.seqdocto = a.seqdocto
and b.nroempresa = c.nroempresa
and b.nrocheckout = c.nrocheckout
and b.seqdocto = c.seqdocto
and c.status = 'V'
and exists (select 1
from consinco.rf_auxnotamestr d,
consinco.rf_inconsistenc e
where d.seqnota = e.seqnota
and d.nroempresa = c.nroempresa
and d.nrocheckout = c.nrocheckout
and d.nronota = c.nronotafiscal
and d.serie = c.seriedocto
and e.seqinconsist in (301))
) loop
-- 1. Zera bases ou valores de impostos negativos no monitor
update consincomonitor.tb_doctotributacaoitem b1
set b1.vlrbase = case when b1.vlrbase < 0 then 0 else b1.vlrbase end,
b1.vlrimpostointegral = case when b1.vlrimpostointegral < 0 then 0 else b1.vlrimpostointegral end
where b1.nroempresa = t.nroempresa
and b1.nrocheckout = t.nrocheckout
and b1.seqdocto = t.seqdocto
and (b1.vlrbase < 0 or b1.vlrimpostointegral < 0);
-- 2. Altera o status de replicação do documento para 'P' (Pendente)
update consincomonitor.tb_docto d1
set d1.replicacao = 'P'
where d1.nroempresa = t.nroempresa
and d1.nrocheckout = t.nrocheckout
and d1.seqdocto = t.seqdocto;
-- 3. Remove itens fiscais gravados no ERP para o documento
delete from consinco.mfl_dfitem e2
where e2.nroempresa = t.nroempresa
and e2.dtamovtoitem = t.dtamovimento
and e2.numerodf = t.nronotafiscal
and e2.seriedf = t.seriedocto;
-- 4. Ajusta o status de integração fiscal para reprocessamento ('I')
update consinco.mrl_intdoctofiscal b1
set b1.indexportacao = 'I'
where (b1.nroempresa, b1.seriedf, b1.numerodf, b1.seqintdoctofiscal) in (
select b.nroempresa,
b.seriedf,
b.numerodf,
max(b.seqintdoctofiscal)
from consinco.mfl_doctofiscal a,
consinco.mrl_intdoctofiscal b
where a.nroempresa = b.nroempresa
and a.seriedf = b.seriedf
and a.numerodf = b.numerodf
and a.dtamovimento = t.dtamovimento
and a.nroempresa = t.nroempresa
and a.seriedf = t.seriedocto
and a.numerodf = t.nronotafiscal
group by b.nroempresa, b.seriedf, b.numerodf
);
-- 5. Exclui o registro de cupom fiscal em duplicidade/inconsistente
delete from consinco.mfl_cupomfiscal f1
where f1.nroempresa = t.nroempresa
and f1.nrocheckout = t.nrocheckout
and f1.dtamovimento = t.dtamovimento
and f1.numeronf = t.nronotafiscal
and f1.serienf = t.seriedocto;
-- 6. Exclui itens e mestre da área temporária de consistência fiscal
delete from consinco.rf_auxnotaitem w2
where exists (select 1
from consinco.rf_auxnotamestr x1
where w2.seqnota = x1.seqnota
and x1.nroempresa = t.nroempresa
and x1.nrocheckout = t.nrocheckout
and x1.nronota = t.nronotafiscal
and x1.serie = t.seriedocto);
delete from consinco.rf_auxnotamestr w1
where w1.nroempresa = t.nroempresa
and w1.nrocheckout = t.nrocheckout
and w1.nronota = t.nronotafiscal
and w1.serie = t.seriedocto;
-- 7. Executa a procedure para reexportar a movimentação corrigida
consincomonitor.pkg_movimentomonitor.sp_exportarmovimento(t.dtamovimento, t.nroempresa, t.nrocheckout, t.seqdocto);
commit;
end loop;
end;
/
Execute o script pressionando F8 (ou clicando no botão Execute).
Após o término da execução, valide se a mensagem “PL/SQL procedure successfully completed” foi exibida.
Acompanhe a integração no painel do Monitor / Na aplicação do Fiscal o documento pendenderá do JOB de integração da aplicação do Fiscal, essa rotina é executada automaticamente em banco de dados de 30 em 30 minutos, assim, poderá ter conferido os documentos integrados no Fiscal como esperado.
0 Comentários