Jump to content

Assista click.png tectoy.png

C6 chamada_c6.png botao.png

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


Go to solution Solved by BigWings,
  • Este tópico foi criado há 1168 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

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

Link to comment
Share on other sites

  • Consultores

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 / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • Membros Pro

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? 

Link to comment
Share on other sites

  • Membros Pro

<?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.

Link to comment
Share on other sites

  • Consultores

Rubens,

Por favor não postar o conteúdo do XML como parte do texto, procure sempre anexar o XML, a postagem fica mais curta.

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • Consultores

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 / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • Membros Pro
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">

Link to comment
Share on other sites

  • Consultores

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.

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • Membros Pro

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;

Link to comment
Share on other sites

  • Membros Pro

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. 

  • Like 1
Link to comment
Share on other sites

  • Membros Pro
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!

 

  • Like 1
Link to comment
Share on other sites

  • Membros Pro

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

Edited by Rubinho
Link to comment
Share on other sites

  • Moderadores
  • Solution
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;

 

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

Projeto ACBr

 

 

Link to comment
Share on other sites

  • Membros Pro
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!

  • Like 1
Link to comment
Share on other sites

  • Administradores

Obrigado por reportar.

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

  • Like 1
Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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 !!

Link to comment
Share on other sites

  • Este tópico foi criado há 1168 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.