Ir para conteúdo
  • Cadastre-se

dev botao

DistribuicaoDFe não retorna as notas.


juliano.cerose
  • Este tópico foi criado há 2354 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde, estou tendo um problema desde sexta-feira com o DistribuicaoDFe.

Estou utilizando este comando para realizar as consultas das notas destinadas ACBrNFe1.DistribuicaoDFe(ACBrNFe1.Configuracoes.WebServices.UFCodigo, CNPJ, ultNSU, ''), mas está retornando vazio para as váriaves sChave := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.chNFe e a unica que está vindo é sEmissao :=
 DateToStr(ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.dhEmi) mas com 31/12/1899.

Alguém está tendo este problema?

Segue processo em anexo.

TFConfiguracao.ConsultaDestinadas_1_0.txt

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Juliano,

Favor anexar os arquivos de envio e de retorno do DistribuicaoDFe.

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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Juliano,

Deve esta ocorrendo algum problema com o Ambiente Nacional, uma vez que é este que se encontra o Web Services do DistribuicaoDFe.

Ao realizar a consulta você informou 82502 como sendo o último NSU, mas no retorno temos Resumos de Eventos, Eventos e Resumos de Notas que totalizam 48.

O NSU do primeiro é 82455 e do último é 82502 e os valores de ultNSU é 82502 e de maxNSU é 82512.

Se o maxNSU é 82512 no retorno deveria consta 50 documentos e não 48, uma vez que o lote é de 50.

Tente usar o método DistribuicaoDFePorNSU(cUF, CNPJ, NSU), neste caso informe o valor 82503 para NSU.

O método acima só vai retornar o documento cujo NSU é 82503, diferente do método DistribuicaoDFePorUltNSU(cUF, CNPJ, ultNSU) que retorna até 50 documentos a partir do ultNSU informado.

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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa noite Juliano,

Você chegou abrir os XML através de um navegar?

No retorno temos o documento de NSU 82503 que no caso é um evento.

Quanto a última postagem desculpe não entendi o seu questionamento.

Um coisa é certa, o retorno vem compactado, mas o componente se encarrega de descompactar.

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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Bom dia Italo, 

Abri sim e aparentemente está normal.

Por que realizei a pergunta, debungando o programa, entendi que ele está fazendo a consulta na sefaz e a mesma está retornando que há documento encontrado, e quando chega nesta linha if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.chNFe <> '' then, não consegue encontrar nenhuma informação dentro do xml ,e se olharmos o xml que enviei teoricamente está com essas informações só que criptografadas.

Realmente não estou conseguindo entender, fiz um teste do zero e não estou conseguindo entender o problema.

Docs.zip

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Juliano,

Lembre-se que o DistribuicaoDFe pode retornar 4 tipos de documentos: Resumo de Nota, Nota Completa, Resumo de Evento e Evento Completo.

Sendo assim primeiro precisamos saber qual é o tipo de documento que estamos lendo no momento.

Para isso basta lermos o valor de:  ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[ x ].Schema

Valores retornados: schresNFe (Resumo de Nota), schprocNFe (Nota Completa), schresEvento (Resumo de Evento) e schprocEventoNFe (Evento Completo).

Se o valor de  ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[ x ].resNFe.chNFe for diferente de vazio temos um Resumo ou Nota Completa.

Se o valor de  ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[ x ].resEvento.chNFe for diferente de vazio temos um Resumo de evento.

Se o valor de  ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[ x ].procEvento.chNFe for diferente de vazio temos um Evento Completo

Para todos os casos o valor de ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[ x ].XML contem o XML retornado para quem deseja salvar o mesmo no banco de dados.

Lembre-se que para saber de que tipo documento se trata devemos sempre ler o valor do campo Schema.

No caso de uma Nota Completa como a quantidade de informações são grandes, optamos por ler somente alguns dados.

Para saber quais são os dados lidos nos 4 casos peço que estude a função: function TRetDistDFeInt.LerXml: boolean; que esta na unit pcnRetDistDFeInt.

Espero ter ajudado.

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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Bom dia @Italo Jurisato Junior,

1 - Estou com o mesmo problema do post, após ler o xml a propriedade resNFe.chNFE não esta carregando valor. Com isso não tenho o devido retorno das notas. Ja fiz pesquisas sobre o problema no forum e verifiquei que minha questão se iguala com esta.

Bom, no nosso sistema salvamos essas informações de retorno em uma tabela no banco de dados chamada distribuicao_fiscal, para salvar fizemos a seguinte verificação:
if FDmNFe.ACBrNFe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[vI].resNFe.chNFe <> '' then
Se houver dados nessa propriedade "chNFe" salvamos, porem apenas se retornar do schema resNFe.

Todo esse processo estava funcionando normalmente em um cliente nosso até o dia 09/10/2017, após essa data não conseguimos mais salvar as notas de distribuição, porque na função de lerXml ao inves de carregar os valores do schema resNFe esta carregando sempre os valores do schema procEventoNFe.

Como dito no post acima, pode haver 4 tipos de retorno. Minha duvida é saber o que diferencia para que o retorno agora esteja sendo o schema procEventoNFe e não o schema resNFe como era antes?


2 - Se acaso o retorno tiver que ser do schema procEventoNFe quero saber tambem se é aconselhado fazer modificações dentro da unit pcnRetDistDFeInt para carregarmos mais dados de informação do schema procEventoNFe, como por exemplo a propriedade xNome.

Neste caso iriamos modificar o processo do retorno para inserirmos as informações na base de dados, desta forma:
if FDmNFe.ACBrNFe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[vI].resNFe.chNFe <> '' then
  Gravar; // nesse caso popular informaçoes do schema resNFe
else FDmNFe.ACBrNFe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[vI].resNFe.chNFe <> '' then
  Gravar; // nesse caso popular informaçoes do schema procEventoNFe


obrigado,

Link para o comentário
Compartilhar em outros sites

  • Moderadores
30 minutos atrás, Luiz Fernando Faleiro disse:

Minha duvida é saber o que diferencia para que o retorno agora esteja sendo o schema procEventoNFe e não o schema resNFe como era antes?

A propriedade Schema é o que define qual tipo de documento está sendo retornado.

Basta ler essa propriedade primeiro para saber se o XML retornado é um resumo de NFe, uma NFe completa, um resumo de evento, ou o evento completo.

Dependendo de cada tipo de documento, propriedades diferentes são preenchidas.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

Bom dia,

Consegui identificar onde estava meu problema.

O ultimo registro que havia sido importado no dia 09/10/17 tinha a NSU 11444 e essa NSU era do tipo schema resNFe. Então sendo do tipo de schema resNFe e estando com a propriedade resNFe.chNFE <> '' efetuamos a inserção na tabela distribuicao_fiscal.

Após isso quando tentávamos importar novamente e passávamos na função TACBrNFe.DistribuicaoDFe como um dos parâmetros o ultimo nsu, logo estávamos passando 11444. Já de retorno estávamos recebendo os 50 registros, porém todos de tipo schema procEvento sendo que o primeiro da lista era de NSU 11456 e o ultimo 11505, ou seja, do NSU 11444 pulou para 11456. Então não recebemos registros com esses NSU 11445, 11446, 11447, 11448, 11449, 11450, 11451, 11452, 11453, 11454, 11455.

Ontem dia 17/10/17 por volta das 17h ainda verificando os processos ao importar, aqueles registros que estavam pendentes: 11445, 11446, 11447, 11448, 11449, 11450, 11451, 11452, 11453, 11454, 11455 foram importados, acredito que até então ainda não estavam liberados no webservice.

Entre eles as seguintes NSU 11448, 11449, 11450, 11451, 11452, 11453, 11454, 11455 eram de tipo schema resNFe. Agora neste caso nosso ultimo NSU passaria a ser 11455.

1- Sabem dizer por que esses registros demoraram mais tempo para serem liberadores? existe um prazo para isso?


Outra coisa que fiquei pensando então, digamos que naquela primeira importação que tentei fazer que tinha apenas registros de tipo schema procEvento de intervalo NSU 11456 até 11505, se houvesse um dos registros de tipo schema resNFe, por exemplo o NSU 11457, logo faríamos a importação dele e ele seria o ultimo como parâmetro de busca.

Por mais que depois os outros registros NSU (11445, 11446, 11447, 11448, 11449, 11450, 11451, 11452, 11453, 11454, 11455) fossem liberados, nunca seriam importados porque minha referencia de busca seria a partir do ultimo NSU 11457.

2- Podem me aconselhar como resolver essa questão? gostaria de entender melhor comportamento da distribuição.

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2354 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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