Ir para conteúdo
  • Cadastre-se

dev botao

Função WebServices.DistribuicaoDFe.Executar devolve um XML resumido?


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

Recommended Posts

Postado

Isto ocorre quando tento buscar na receita uma nota de entrada. 

O sistema até busca uns XML mas não são os XMLs completos com a nota, parece que só tem um cabeçalho no máximo umas 10 linhas e só.

O nome do arquivo baixado é 42201192791243000294550050003642631780409544-nfe.xml e tem só 603 bytes o arquivo correto deveria ter 8KB

Pode consultar, verá que a nota existe, mas não sei por que ao tentar baixar está baixando esse arquivo incorreto???  ¯\_(º.º)_/¯

Agradeço qualquer dica ou ajuda.

Postado
16 minutos atrás, Fernando Massa disse:

Isto ocorre quando tento buscar na receita uma nota de entrada. 

O sistema até busca uns XML mas não são os XMLs completos com a nota, parece que só tem um cabeçalho no máximo umas 10 linhas e só.

O nome do arquivo baixado é 42201192791243000294550050003642631780409544-nfe.xml e tem só 603 bytes o arquivo correto deveria ter 8KB

Pode consultar, verá que a nota existe, mas não sei por que ao tentar baixar está baixando esse arquivo incorreto???  ¯\_(º.º)_/¯

Agradeço qualquer dica ou ajuda.

Debugando mais um pouco, vi que o arquivo é salvo com o seguinte comando:

WriteToTXT(ArqNFe, ConverteXMLtoUTF8(ACBrNFe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].XML), False, False);

Mas para todos os efeitos, o que ali ta salvando é o que já está em memória do que foi "baixado" da sefaz. é isso? 

  • Moderadores
Postado

A SEFAZ retorna os documentos compactados e convertidos em base64.

O componente faz o trabalho de descompactar e converter de volta, fica disponível o XML pronto, e também salvo em disco caso esteja configurado pra isso.

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

Projeto ACBr

 

 

Postado

Obrigado por responder BigWings.

Pelo que vc me falou, o componente deveria já salvar no HD o XML correto. Mas o que está sendo salvo é outra coisa. 

image.thumb.png.3a2c0ca7661188d88cf329436fb1ff57.png

note que esse arquivo está com 1kb

o conteúdo dele é isto aqui:

image.thumb.png.79f96f30c2e59923b5af4e54505dc3a5.png

que certamente não é o XML xompleto.

Eu até tenho o XML completo que recebi por e-mail. Mas quando tento baixar pelo acbr me da isso?

O que estou fazendo errado? certamente é uma falha minha, pois se não imagino que muita gente teria o mesmo problema.

 

  • Consultores
Postado
2 horas atrás, Fernando Massa disse:

Eu até tenho o XML completo que recebi por e-mail. Mas quando tento baixar pelo acbr me da isso?

O que estou fazendo errado? certamente é uma falha minha, pois se não imagino que muita gente teria o mesmo problema.

Se eu entendi bem sua dúvida, você só irá receber o xml completo depois de você fazer a manifestação.

Veja esse tópico: https://www.projetoacbr.com.br/forum/topic/46730-como-obter-o-xml-do-fornecedor/?tab=comments#comment-377650

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

oi, valeu pelo link, li tudo o que estava lá e comparei com o nosso fonte, mas vi que estamos fazendo a manifestação corretamente.

Note que na imagem mostro sublinhado em vermelho onde enviamos o comando com a manifestação. Verifiquei pelo debug e está enviando corretamente o estado, cnpj e chave de NFE. 

Sublinhado em azul, a parte que verificando o retorno, salva na pasta configurada os arquivos lidos. E É nessa parte que ele salva aquele arquivo "Resumido" como eu disse que tem imagem no post acima, que não é o XML completo. 😟

Não sei se antes disso deveria ter algum outro comando?? Não estamos usando a manifestação por NSU como falou lá no link, mas acredito que nesta caso não se aplica, pois temos os dados para a manifestação principal.

Tô bem perdidinho 🥴

image.png

  • Moderadores
Postado

No trecho de código não consta o envio da manifestação.

Para enviar a manifestação você usa o método ACBrNFe.EnviarEvento, informando no tipo de evento qual a manifestação está sendo feita.

Isso deve ficar a critério do operador, uma manifestação incorreta pode trazer problemas pra empresa ou pro emitente da nota.

Após a manifestação é preciso aguardar o Ambiente Nacional processar e gerar novo NSU com o XML completo da nota, isso pode demorar.

Enquanto o AN não gerar o NSU com o XML completo, no retorno do método DistribuicaoDFePorChaveNFe vai ser retornado apenas o resumo da NFe.

Se você usar os métodos DistribuicaoDFePorNSU e DistribuicaoDFePorUltNSU podem ser retornados o resumo da nota, a nota completa, o resumo do evento e o evento completo.

Você pode testar o tipo de documento que está sendo retornado pela propriedade ACBrNFe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[ x ].schema.

Sugiro que leia com atenção a Nota Técnica que trata do assunto:

https://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=ytucIh9FMb0=

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

Projeto ACBr

 

 

  • Consultores
Postado

Bom dia Fernando,

Você esta confundindo as coisas.

O método DistribuicaoDFe como o próprio nome diz é um distribuidor de documento fiscal eletrônico.

Para o destinatário da mercadoria ele apenas retorna um resumo da nota para que você possa se manifestar de forma correta.

Temos 4 situações e para cada uma um evento chamado de evento de manifestação do destinatário, que deve ser enviado.

1. Ciência da operação - enviar esse evento significa que você reconhece o documento, ou seja, você comprou mas ainda não recebeu a mercadoria;

2. Desconhecimento da operação - enviar esse evento significa que você não reconhece o documento, ou seja, você não comprou dessa empresa.

3. Operação realizada - enviar esse evento significa que você reconhece o documento e cuja mercadoria já foi entregue.

4. Operação não realizada - enviar esse evento significa que você reconhece o documento mas por algum motivo a mercadoria não foi entregue.

Só depois de enviar o evento de manifestação que o Ambiente Nacional vai liberar ou não o XML completo da nota, visto que se você não comprou da empresa não faz nenhum sentido receber o XML completo da nota.

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

Postado
Em 31/01/2021 at 09:24, Italo Giurizzato Junior disse:

Bom dia Fernando,

Você esta confundindo as coisas.

O método DistribuicaoDFe como o próprio nome diz é um distribuidor de documento fiscal eletrônico.

Para o destinatário da mercadoria ele apenas retorna um resumo da nota para que você possa se manifestar de forma correta.

Temos 4 situações e para cada uma um evento chamado de evento de manifestação do destinatário, que deve ser enviado.

1. Ciência da operação - enviar esse evento significa que você reconhece o documento, ou seja, você comprou mas ainda não recebeu a mercadoria;

2. Desconhecimento da operação - enviar esse evento significa que você não reconhece o documento, ou seja, você não comprou dessa empresa.

3. Operação realizada - enviar esse evento significa que você reconhece o documento e cuja mercadoria já foi entregue.

4. Operação não realizada - enviar esse evento significa que você reconhece o documento mas por algum motivo a mercadoria não foi entregue.

Só depois de enviar o evento de manifestação que o Ambiente Nacional vai liberar ou não o XML completo da nota, visto que se você não comprou da empresa não faz nenhum sentido receber o XML completo da nota.

Italo, valeu pela tua resposta e estou garimpando neste código (que não é meu, por isso a dificuldade) para ver se as coisas estão ocorrendo na ordem certa. 

1 - Coloquei um Breackpoint em todos os lugares onde é usada a função ACbrNFe.EnviarEvento() e vi que no processo que estou executando, ela não é usada.
    * Só para esclarecer a situação: Eu estou como empresa Cartosul, recebendo da empresa Irani uma mercadoria. Já estou com a danfe na mão e por algum motivo não recebi o email com o xml, mas ele está la na sefaz no ambiente nacional (já verifiquei isso) daí no sistema, insiro a chave da NFe e clico no botão Buscar NFe que tem a função de fazer a requisição dessa nota e baixar o xml para daí ler ele e preencher toda a NF de entrada (tomaticamente 🍅 😄).

Se entendi corretamente o que vc falou, antes daquela sequencia de comandos que coloquei acima na imagem eu tenho que enviar o ACbrNFe.EnviarEvento() com o código 210200 (pelo que li no post que o colega acima mencionou) e daí sim faço a ACBrNFe.DistribuicaoDFePorChaveNFe() e o resto?

Fiz uma bisca aqui no fórum e vi que tem mais uma pessoa com o mesmo problema, quase idêntico ao meu, se não for o mesmo. (Rogério Braga

Tem um post (pergunto pois não achei) que mostre como enviar corretamente a manifestação e depois baixar a nota corretamente? 

Vou ir tentando aqui se conseguir posto o meu resultado. 

  • Solution
Postado

Oi Pessoal, muito obrigado por toda a ajuda, descobri que exatamente como os colegas estavam falando, não estava sendo realizada a manifestação pela função :

ACBrNFe.EnviarEvento(ACBrNFe.WebServices.Consulta.procEventoNFe.Count + 1)

Onde ACBrNFe.WebServices.Consulta.procEventoNFe.Count + 1 seria o numero do lote onde se encontra a nfe.

Consegui corrigir. 

 

  • Este tópico foi criado há 1479 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...
The popup will be closed in 10 segundos...