Ir para conteúdo
  • Cadastre-se

ÚLTIMOS DIAS!

Delphi com até 25% de desconto
Ganhe Acesso ao SAC ACBr Brindes exclusivos do ACBr
Saiba mais

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Comprar

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Comprar

Rubinho

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

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 Jurisato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: italo.jurisato@gmail.com / Fone: (16) 9-9701-5030 / Araraquara-SP

Compartilhar este post


Link para o post
Compartilhar em outros sites

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? 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rubens,

Com:

ACBrNFe1.WebServices.Retorno.cStat

Qual é o valor obtido?


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

Projeto ACBr

Analista de Sistemas / e-mail: italo.jurisato@gmail.com / Fone: (16) 9-9701-5030 / Araraquara-SP

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rubens,

Por favor anexa o XML de retorno de uma nota que foi rejeitada.


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

Projeto ACBr

Analista de Sistemas / e-mail: italo.jurisato@gmail.com / Fone: (16) 9-9701-5030 / Araraquara-SP

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 Jurisato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: italo.jurisato@gmail.com / Fone: (16) 9-9701-5030 / Araraquara-SP

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 Jurisato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: italo.jurisato@gmail.com / Fone: (16) 9-9701-5030 / Araraquara-SP

Compartilhar este post


Link para o post
Compartilhar em outros sites
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">

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 Jurisato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: italo.jurisato@gmail.com / Fone: (16) 9-9701-5030 / Araraquara-SP

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rubens,

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


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

Projeto ACBr

Analista de Sistemas / e-mail: italo.jurisato@gmail.com / Fone: (16) 9-9701-5030 / Araraquara-SP

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
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!

Compartilhar este post


Link para o post
Compartilhar em outros sites
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

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por reportar.

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

  • Curtir 1

Consultora SAC ACBr

Juliana Tamizou

Conheça o Portal do Projeto ACBr

Ajude o Projeto ACBr crescer - Assine o SAC ACBr
Assine um dos planos de longa duração do SAC ACBr, obtenha Descontos Especiais, Parcele no Cartão e ainda ganhe Brindes Exclusivos. Saiba mais aqui

Conheça o ACBrLib, o ACBr de forma nativa para qualquer linguagem de programação. Saiba mais aqui

Projeto ACBr

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está agora fechado para novas respostas

×
×
  • Criar Novo...