Ir para conteúdo
  • Cadastre-se

dev botao

Capturar o Status de rejeição do envio da NFC-e


Ver Solução Respondido por BigWings,
  • Este tópico foi criado há 2084 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Bom dia, pessoal!

Uso ACBr com sucesso já há alguns anos e por esses dias comecei a ter alguns problemas de bloqueio junto a Sefaz. Percebi que o problema era porque eu não estava tratando direito os Status de rejeição, o que faz minha aplicação enviar varias vezes minhas NFC que estão em contingencia mesmo sem ter sido feito nenhuma correção na NFC. Li algumas dicas em outros tópicos aqui no Forum e não obtive sucesso.

A pergunta é: Como fazer para capturar o código de status da rejeição após o uso do método "ACBrNFe1.Enviar(vNumLote,True,True);" ?

Tentei outros métodos que achei em outros tópicos, tipo: ACBrNFe1.WebServices.Retorno.cStat; mas não funcionaram.

Percebi que no arquivo: "***-pro-lot.xml" vem o status correto. 

Como tenho usado:

try

   ACBrNFe1.Enviar(vNumLote,True,True);
   cStatus := ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat;

Except On E: Exception do

   cStatus := ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat;

End;

 

Agradeço desde já a atenção de todos.

Rubens

  • Consultores
Postado

Bom dia Rubens,

A linha abaixo:

cStatus := ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat;

é para lhe retornar o status da nota, se for 100 indica que foi autorizada caso contrario ocorreu uma rejeição e deve ser tratada antes de ser enviada novamente.

Agora se o valor retornado for zero, pode indicar que ocorreu erro durante o envio ou retorno, neste caso devemos primeiramente realizar uma consulta, se a SEFAZ retornar que a nota não consta na base de dados, ai sim, enviamos novamente.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Membros Pro
Postado

Perfeito. Ele dá erro e retorna zero, consulto a Sefaz e a NFC não foi registrada na Sefaz devido ao erro, exemplo, falta de NCM. Recebendo apenas o zero não consigo diferenciar uma inconsistência no XML, que não adianta reenvio, de um erro de timeout com a Sefaz. 

Não tem como capturar o status da rejeição? 

  • Membros Pro
Postado

<?xml version="1.0" encoding="UTF-8"?>

-<retEnviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="4.00">

<tpAmb>2</tpAmb>

<verAplic>SVRSnfce201807191353</verAplic>

<cStat>104</cStat>

<xMotivo>Lote processado</xMotivo>

<cUF>28</cUF>

<dhRecbto>2019-03-13T15:16:19-03:00</dhRecbto>


-<protNFe versao="4.00">


-<infProt>

<tpAmb>2</tpAmb>

<verAplic>SVRSnfce201807191353</verAplic>

<chNFe>28190307684607000187650060000000071000000075</chNFe>

<dhRecbto>2019-03-13T15:16:19-03:00</dhRecbto>

<digVal>VVPTSlJLABN3m/NWXUJx5GkkDgs=</digVal>

<cStat>464</cStat>

<xMotivo>Rejeicao: Codigo de Hash no QR-Code difere do calculado</xMotivo>

</infProt>

</protNFe>

</retEnviNFe>

Estou fazendo algumas simulações e não é sempre que esse arquivo é gravado quando há rejeições.

  • Consultores
Postado

Rubens,

Analisando as rotinas e se baseando nesse XML, as propriedades:

ACBrNFe1.WebServices.Retorno.cStat é para receber o valor 464

ACBrNFe1.WebServices.Retorno.xMotivo é para receber a string: "Rejeicao: Codigo de Hash no QR-Code difere do calculado"

a não ser as condições abaixo não sejam satisfeitas.

  if ((FPConfiguracoesNFe.Geral.ModeloDF = moNFCe) or (FVersaoDF >= ve310)) and FSincrono then
  begin
(...)

end;

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Membros Pro
Postado
1 hora atrás, Italo Jurisato Junior disse:

Rubens,

Analisando as rotinas e se baseando nesse XML, as propriedades:

ACBrNFe1.WebServices.Retorno.cStat é para receber o valor 464

ACBrNFe1.WebServices.Retorno.xMotivo é para receber a string: "Rejeicao: Codigo de Hash no QR-Code difere do calculado"

a não ser as condições abaixo não sejam satisfeitas.

  if ((FPConfiguracoesNFe.Geral.ModeloDF = moNFCe) or (FVersaoDF >= ve310)) and FSincrono then
  begin
(...)

end;

Então, Italo

Acho que essa condição está sendo atendida, abaixo segue a versão 4.0 e QRCode só tem em NFC.
-<retEnviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="4.00">

  • Membros Pro
Postado

Italo, 

 

É normal quando há uma rejeição da Sefaz o fluxo abaixo gerar uma Exceção? Veja os comentários do código.
 

try

   ACBrNFe1.Enviar(vNumLote,True,True);
   cStatus := ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat;

Except On E: Exception do

  // Aqui é local correto de receber o código de rejeição? Quando a NFC esta sendo rejeitada esta sendo gerado uma exceção. 

   cStatus := ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat;

End;

  • Membros Pro
Postado

Usando assim:
ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.xMotivo // Aqui o motivo da rejeição vem corretamente 

ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat // Aqui vem sempre zero

1 minuto atrás, Italo Jurisato Junior disse:

Rubens,

Quando uma nota é rejeitada o componente não gera uma exceção.

Isso!

4 minutos atrás, Italo Jurisato Junior disse:

Boa tarde Rubens,

Vai ser necessário "debugar" para descobrir porque as propriedades que mencionei não estão recebendo os valores que deveriam receber.

Debuguei, foi aí que percebi q se gerava uma exceção. Lembro que há algum tempo atrás, percebi isso e acabei fazendo o controle da exceção, já que mesmo com a exceção eu, na epoca ainda recebia o Status e o Motivo. Mas agora não mais e não sei exatamente quando isso parou de acontecer. 

  • Curtir 1
  • Membros Pro
Postado
7 minutos atrás, Italo Jurisato Junior disse:

Rubens,

Quando uma nota é rejeitada o componente não gera uma exceção.

Vou fazer uns testes ACBrNFe_demo para tentar entender o que esta acontecendo com minha aplicação.

Italo, muito obrigado!!! Tendo alguma novidade, posto aqui. Valeu!

 

  • Curtir 1
  • Membros Pro
Postado (editado)

Italo, 

Fiz um teste com o ACBrNFe_demo e nele tbm ao rejeitar gera uma exceção que aponta para:

function TWebServices.Envia(const ALote: String; const ASincrono: Boolean;
  AZipado: Boolean): Boolean;
begin
  FEnviar.Clear;
  FRetorno.Clear;

  FEnviar.Lote := ALote;
  FEnviar.Sincrono := ASincrono;
  FEnviar.Zipado := AZipado;

  if not Enviar.Executar then
    Enviar.GerarException( Enviar.Msg );

  if not ASincrono or ((FEnviar.Recibo <> '') and (FEnviar.cStat = 103)) then
  begin
    FRetorno.Recibo := FEnviar.Recibo;
    if not FRetorno.Executar then
      FRetorno.GerarException( FRetorno.Msg );
  end;

  Result := True;
end;

 

log de erro em anexo.

 

erro.log

Editado por Rubinho
  • Membros Pro
Postado
16 horas atrás, Daniel Simoes disse:

Não deixe de ver o vídeo indicado nesse tópico:

 

Massa, vou olhar sim! Obrigado, Daniel!

  • Moderadores
  • Solution
Postado
20 horas atrás, Rubinho disse:

   ACBrNFe1.Enviar(vNumLote,True,True);
   cStatus := ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat;

O terceiro parâmetro no método enviar indica que você está usando o modo síncrono.

No modo síncrono não é executado o método de consulta de recibo.

Para capturar o cStat de retorno tente usar:

cStatus := ACBrNFe1.WebServices.Enviar.cStat;

 

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Membros Pro
Postado
8 minutos atrás, BigWings disse:

O terceiro parâmetro no método enviar indica que você está usando o modo síncrono.

No modo síncrono não é executado o método de consulta de recibo.

Para capturar o cStat de retorno tente usar:


cStatus := ACBrNFe1.WebServices.Enviar.cStat;

 

Foi exatamente esse o meu deslize. Tinha identificado agora de manhã antes de ler esse seu post, muito obrigado!!! 

Prolema resolvido, galera!

Muito obrigado, pessoal!

  • Curtir 1
  • Administradores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 2084 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...