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';