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á 1396 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á 1396 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.