Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3166 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 a todos. Já vi que no fórum tem outros tópicos com esse assunto, porém nenhum me foi útil, então resolvi incluir outro. 

O meu problema é o seguinte: Eu preciso tratar o retorno da SEFAZ quando a nota é denegada e gravar algumas informações no Banco, eu estou fazendo dessa forma:

 if ((acbrnfe.webservices.retorno.cstat = 110)or(acbrnfe.webservices.retorno.cstat = 301)or
    (acbrnfe.webservices.retorno.cstat = 303)or(acbrnfe.webservices.retorno.cstat = 302)) then begin
         UsoDenegadoNFe(qrnf.fieldbyname('nr_nf').asstring,AcbrNfe.NotasFiscais.Items[0].NFe.procNFe.chNFe,
                        AcbrNfe.NotasFiscais.Items[0].NFe.procNFe.nProt,qrnf.fieldbyname('nr_loja').asstring);

end;

Só que não está entrando nesse IF mesmo quando o retorno é 110 por exemplo. Como posso identificar o retorno da SEFAZ?

  • Consultores
Postado

Boa tarde Werner,

Quando é feita a consulta a SEFAZ retorna 2 cStat um se refere ao status da consulta e o outro se refere ao status da nota enviada.

Pelo que estou vendo você esta pegando o status da consulta para pegar o status da nota utilize:

ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.cStat

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

  • Consultores
Postado

Boa tarde Marcelo,

Vamos então as duas opções:

ACBrNFe.NotasFiscais.Items[ x ].NFe.procNFe.cStat ===> desta forma eu tenho a absoluta certeza que o cStat que estou lendo se refere a nota que se encontra na posição X da lita de notas carregadas no componente.

ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Items[ x ].cStat ===> desta forma eu estou lendo o cStat da nota retornada e que se encontra na posição X da lista de retorno.

Para quem sempre envia lotes contendo apenas 1 nota pode utilizar qualquer uma das duas formas que não vai ter problemas.

Por outro lado para que costuma enviar lote contendo uma ou mais notas (limite máximo de 50) vai ter problemas, principalmente se alguma dessas notas for rejeitada pela SEFAZ.

Vamos a um exemplo:

Lote de envio com 3 notas:

0 - Nota de numero 1000

1 - Nota de numero 1001

2 - Nota de numero 1002

Vamos supor que a nota de numero 1001 (índice 1 na lista) foi rejeitada pela SEFAZ, no retorno teremos:

0 - Nota de numero 1001 => Rejeitada

1 - Nota de numero 1000 => Autorizada

2 - Nota de numero 1002 => Autorizada

Note que a nota que foi rejeitada na lista de retorno ela aparece em primeiro lugar, depois vem as autorizadas.

Concluímos que:

ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Items[ x ].cStat ===> para x = 1 estamos pegando o status da nota de numero 1000 e não a de 1001.

E ao atualizar o banco de dados você vai acabar marcando a nota de numero 1000 como sendo rejeitada e a de numero 1001 como autorizada, sendo que na verdade é o contrario.

Você concorda que a melhor forma de ler o status de uma nota é a primeira opção? 

 

  • Curtir 2
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

×
×
  • 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...