Script SQL PRÉ-MONTADO (NFC-e inutilizada)

Vinicius Toledo

Autor Vinicius Toledo
Data de criação Jan 29, 2024
Última edição Modificado há um ano
Visualizações 10 visualizações

Caso ocorrido na SEMA e segundo cliente é recorrente, segue o caso abaixo:

  • Cliente entrou em contato informando de uma NFC-e que foi inutilizada más após isso o faturamento não foi removido, dentro da tela da NFC-e havia um campo “Excluir faturamento” mas quando cliente apertava no mesmo apresentava a seguinte mensagem “Não foi possível remover faturamento”, nesse caso foi feito uma análise para descobrir o motivo pela qual não havia removido o faturamento.

  • Após teste na base de homologação foi montado um script para ser tratado esse problema, já que o mesmo é um caso que possa vim acontecer com outros clientes e será mas fácil e ágil o suporte para o mesmo.

    Obs: É muito importante que o script seja realizado primeiramente os testes em uma base de homologação antes que rode-o na base de produção do cliente.

Segue o script em anexo:

set @CodigoUsuario = -1;
set @VersaoEXE = (select versaoexe from versoes limit 1);
set @CodigoTransacao = (Campo separado para código de transação referente a NFC-e);
delete from contasareceber where (CodigoTransacao = @CodigoTransacao);
delete from faturamento where (CodigoTransacao = @CodigoTransacao);
update nfce set faturada = 'Não' where (CodigoTransacao =@CodigoTransacao);
delete historicoproduto.* from historicoproduto inner join subnfce on (subnfce.codigo = historicoproduto.codigoorigem and historicoproduto.tipoorigem = 26) inner join nfce on nfce.codigo = subnfce.codigonfce where (nfce.codigotransacao = @CodigoTransacao);

Esse script irá remover o faturamento, e irar realizar o movimento do histórico de produto, retornando os produtos para o estoque, junto com esse script segue os outros dois para verificar se tem alguma outra nota com o mesmo problema.

select
nfce.codigo
from nfce
inner join subnfce on subnfce.codigonfce = nfce.codigo
inner join historicoproduto on historicoproduto.codigoorigem = subnfce.codigo and historicoproduto.tipoorigem = 26
where
(
nfce.`STATUS` = 8 and nfce.dataemissao>='2023-01-01'
and faturada  = 'Não'
);

select
*
from nfce
inner join contasareceber on contasareceber.CodigoTransacao = nfce.codigo
WHERE contasareceber.`status` =  0
and nfce.`STATUS` = 8
and nfce.dataemissao >='2023-01-01';