Ir para conteúdo
  • Cadastre-se

dev botao

Downlaod xml DistribuicaoDFe


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

Recommended Posts

Boa tarde pessoal!

Tenho um formulário no meu sistema com consulta das NF's destinadas, manifestação do destinatário e eventual download do xml (caso ainda não exista na base).

Como o webservice será substituído em breve, estou migrando de ConsultaNFeDest p/ DistribuicaoDFe.

 

Porém, não estou achando a maneira correta de baixar o xml. Segui os seguintes passos para uma determinada nota:

  1. Consultei as NFs destinadas pelo método: ACBrNFe1.DistribuicaoDFe(UFtoCUF('SP'), CNPJ, edtUltNSU.Text, '');
  2. Manifestei como "confirmação da operação" (tpEvento := teManifDestConfirmacao);
  3. Consultei novamente, mas desta vez utilizando o NSU retornado na consulta anterior: ACBrNFe1.DistribuicaoDFe(UFtoCUF('SP'), CNPJ, '', '000000000025400');

Mas após a manifestação, continuo recebendo somente o resumo da NF. De acordo com a NT, não deveria ser disponibilizado o xml completo?

Parametrizei o componente p/ baixar os arquivos, mas recebo somente o -resNFe.xml

 

Não sei se estou fazendo algo errado, ou se interpretei o processo erroneamente, ou ainda, se é necessário aguardar algum tempo após a manifestação para realizar a consulta novamente...

Estou há alguns dias pesquisando o assunto aqui no fórum e ainda não encontrei nada conclusivo a respeito.

 

Se alguém puder me dar alguma orientação a respeito, agradeço.

Link para o comentário
Compartilhar em outros sites

13 horas atrás, Rodrigo Coradi disse:

Tentou recuperar pelo seguinte caminho?

 


ACBrNFe1 .WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0].XML

 

Esse mesmo, mas mostra sempre o resumo :-(

5 minutos atrás, JSantos disse:

Depois que a nota fiscal for manifestada, será gerado um novo NSU para a mesma nota fiscal. Neste novo NSU deverá estar disponível o XML completo.

Novo NSU? Caramba.... 

E como vou fazer para saber qual NSU é esse para poder consultar essa nota específica após a manifestação??

Link para o comentário
Compartilhar em outros sites

37 minutos atrás, Reinaldo Silveira disse:

Esse mesmo, mas mostra sempre o resumo :-(

Novo NSU? Caramba.... 

E como vou fazer para saber qual NSU é esse para poder consultar essa nota específica após a manifestação??

Reinaldo, acho que quanto a sempre ser o resumo, pode ser que seja devido a não ter manifestado.
Foi feito a manifestação (pelo menos ciência da operação) nessas notas?

Pois pelo que fiz testes e li no fórum, após a ciência já conseguirá baixar a nota completa.

Link para o comentário
Compartilhar em outros sites

11 minutos atrás, Rodrigo Coradi disse:

Reinaldo, acho que quanto a sempre ser o resumo, pode ser que seja devido a não ter manifestado.
Foi feito a manifestação (pelo menos ciência da operação) nessas notas?

Pois pelo que fiz testes e li no fórum, após a ciência já conseguirá baixar a nota completa.

Bom, vou exemplificar a situação:

A nota em questão foi emitida no dia 15/02/2017 (ambiente de produção). Realizei a consulta das NFs destinadas ontem (22/02) e recebi o NSU 000000000025400 para esta nota. Em seguida foi realizada a confirmação da operação. Até então eu acreditava que o NSU continuaria o mesmo (já que é um Número Sequencial ÚNICO) - por isso estava realizando a consulta novamente utilizando o mesmo número.

Hoje manhã consultei novamente as NFs destinadas a partir do último NSU e lá estava ela, só que com o número 000000000025822. Aí sim consegui pegar o xml completo.

 

Não sei quem foi o gênio que bolou este processo. A receita tenta evitar o consumo indevido, mas ela mesma obriga o consumidor a consultar todas as notas novamente para recuperar somente uma em específico!!!

Vai entender o que passa na cabeça deles...

 

A minha dúvida agora é a seguinte:

Alguém sabe se existe alguma forma de recuperar o NSU gerado no momento da confirmação da operação?

Porque se eu fizer a consulta pelo último NSU, não há garantia de que este seja o da manifestação. Pode ser que alguma nota ou evento tenha sido emitido nesse meio tempo.

 

Alguma ideia?

Obrigado.

Link para o comentário
Compartilhar em outros sites

10 minutos atrás, Reinaldo Silveira disse:

Bom, vou exemplificar a situação:

A nota em questão foi emitida no dia 15/02/2017 (ambiente de produção). Realizei a consulta das NFs destinadas ontem (22/02) e recebi o NSU 000000000025400 para esta nota. Em seguida foi realizada a confirmação da operação. Até então eu acreditava que o NSU continuaria o mesmo (já que é um Número Sequencial ÚNICO) - por isso estava realizando a consulta novamente utilizando o mesmo número.

Hoje manhã consultei novamente as NFs destinadas a partir do último NSU e lá estava ela, só que com o número 000000000025822. Aí sim consegui pegar o xml completo.

 

Não sei quem foi o gênio que bolou este processo. A receita tenta evitar o consumo indevido, mas ela mesma obriga o consumidor a consultar todas as notas novamente para recuperar somente uma em específico!!!

Vai entender o que passa na cabeça deles...

 

A minha dúvida agora é a seguinte:

Alguém sabe se existe alguma forma de recuperar o NSU gerado no momento da confirmação da operação?

Porque se eu fizer a consulta pelo último NSU, não há garantia de que este seja o da manifestação. Pode ser que alguma nota ou evento tenha sido emitido nesse meio tempo.

 

Alguma ideia?

Obrigado.

Reinaldo, não se você chegou a ver as demos do acbr, mas lá tem um arquivo .txt com nome de DistribuicaoDFe, lá tem um exemplo da seguinte forma (porém não testei para saber se é o que você deseja).

 

DMDFe.NFe.DistribuicaoDFe( DM_CTA.EmpresaCodigoEstado.AsInteger,CNPJ,edtUltNSU.Text, '' );

sStat   := IntToStr(DMDFe.NFe.WebServices.DistribuicaoDFe.retDistDFeInt.cStat);
sMotivo := DMDFe.NFe.WebServices.DistribuicaoDFe.retDistDFeInt.xMotivo;

if DMDFe.NFe.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 137
then sTemMais := 'N'
else sTemMais := 'S';

sUltimoNSU := DMDFe.NFe.WebServices.DistribuicaoDFe.retDistDFeInt.ultNSU;

Não sei se ajuda.

Link para o comentário
Compartilhar em outros sites

1 minuto atrás, BigWings disse:

Tente a consulta por Chave da NF-e.

BigWings, foi exatamente essa a solução que eu acabei de encontrar (não conhecia esse método pela chave).

  1. Consulto as NF destinadas pelo último NSU: ACBrNFe1.DistribuicaoDFePorUltNSU(uf, cnpj, nsu);
  2. Realizo a manifestação do destinatário;
  3. Consulto novamente, mas agora pela chave e não mais pelo NSU específico: ACBrNFe.DistribuicaoDFePorChaveNFe(uf, cnpj, chave);

Não sei quanto ao delay, mas para a nota em questão está retornando o xml completo na consulta pela chave. Vou fazer mais alguns testes.

 

Obrigado a todos!

Link para o comentário
Compartilhar em outros sites

De acordo com a nota técnica 2014.002, o webservice de download da nfe também vai ser desabilitado junto com os da nota destinadas, então para consultar e baixar será tudo pelo webservice de distribuição.

Vejam:

http://tsdn.tecnospeed.com.br/blog-da-tecnospeed/post/menos-de-3-meses-para-o-fim-dos-servidores-de-consulta-e-download-das-notas-destinadas-nf-e-2?utm_campaign=news_24022017&utm_medium=email&utm_source=RD+Station

Pelo menos foi o que entendi, pois não faz muito sentido o webservice de distribuição permitir fazer o download quando consultar pela chave e ainda manterem ativo o webservice de download da nfe.

Link para o comentário
Compartilhar em outros sites

Em 23/02/2017 at 09:29, Reinaldo Silveira disse:

BigWings, foi exatamente essa a solução que eu acabei de encontrar (não conhecia esse método pela chave).

  1. Consulto as NF destinadas pelo último NSU: ACBrNFe1.DistribuicaoDFePorUltNSU(uf, cnpj, nsu);
  2. Realizo a manifestação do destinatário;
  3. Consulto novamente, mas agora pela chave e não mais pelo NSU específico: ACBrNFe.DistribuicaoDFePorChaveNFe(uf, cnpj, chave);

Não sei quanto ao delay, mas para a nota em questão está retornando o xml completo na consulta pela chave. Vou fazer mais alguns testes.

 

Obrigado a todos!

@Reinaldo Silveira o arquivo XML que esta retornando, você consegue saber se é o Resumo ou se é o correto? Ou só pelo fluxo que esta fazendo já é o correto ?

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...
Em 2017-2-23 at 09:29, Reinaldo Silveira disse:

BigWings, foi exatamente essa a solução que eu acabei de encontrar (não conhecia esse método pela chave).

  1. Consulto as NF destinadas pelo último NSU: ACBrNFe1.DistribuicaoDFePorUltNSU(uf, cnpj, nsu);
  2. Realizo a manifestação do destinatário;
  3. Consulto novamente, mas agora pela chave e não mais pelo NSU específico: ACBrNFe.DistribuicaoDFePorChaveNFe(uf, cnpj, chave);

Não sei quanto ao delay, mas para a nota em questão está retornando o xml completo na consulta pela chave. Vou fazer mais alguns testes.

 

Obrigado a todos!

Olá Reinaldo, podes colocar um exemplo de como foi feito o passo 3, eu não estou conseguindo consultar pela chave e baixar um xml especifico.

Obrigado

Link para o comentário
Compartilhar em outros sites

Segue um exemplo de como baixar o XML pela chave de acesso. Espero que ajude.

      FDMACBr.ACBrNFe.DistribuicaoDFePorChaveNFe(FDMACBr.ACBrNFe.Configuracoes.WebServices.UFCodigo, 'CNPJ da Filial', 'chave de Aesso');

          with FDMACBr.ACBrNFe.WebServices.DistribuicaoDFe.retDistDFeInt do
          begin
            if cStat = 138 then
            begin
              for i := 0 to docZip.Count - 1 do
              begin

                if docZip.Items.schema = schprocNFe then //verifica se o arquivo é o XML da NFe (-nfe.xml)
                begin               
                    XML := docZip.Items.XML;
                    ArqXML := TStringStream.Create(XML);
                    XMLDocument1.LoadFromStream(ArqXML);
                    XMLDocument1.Active;

                     XMLDocument1.SaveToFile('C:\chave de acesso-nfe.xml);

                end;

              end;
            end
          end;

Link para o comentário
Compartilhar em outros sites

Em 2017-6-6 at 08:45, Adailson Rocha disse:

Segue um exemplo de como baixar o XML pela chave de acesso. Espero que ajude.

      FDMACBr.ACBrNFe.DistribuicaoDFePorChaveNFe(FDMACBr.ACBrNFe.Configuracoes.WebServices.UFCodigo, 'CNPJ da Filial', 'chave de Aesso');

          with FDMACBr.ACBrNFe.WebServices.DistribuicaoDFe.retDistDFeInt do
          begin
            if cStat = 138 then
            begin
              for i := 0 to docZip.Count - 1 do
              begin

                if docZip.Items.schema = schprocNFe then //verifica se o arquivo é o XML da NFe (-nfe.xml)
                begin               
                    XML := docZip.Items.XML;
                    ArqXML := TStringStream.Create(XML);
                    XMLDocument1.LoadFromStream(ArqXML);
                    XMLDocument1.Active;

                     XMLDocument1.SaveToFile('C:\chave de acesso-nfe.xml);

                end;

              end;
            end
          end;

Usando a função da forma que foi informada, porém estou recebendo um retorno de falha no esquema.

O XML gerado é o seguinte:

<?xml version="1.0" encoding="UTF-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <nfeDistDFeInteresse xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NFeDistribuicaoDFe">
      <nfeDadosMsg>
        <distDFeInt xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00">
          <tpAmb>1</tpAmb>
          <cUFAutor>42</cUFAutor>
          <CNPJ>22379984000104</CNPJ>
          <consChNFe>
            <chNFe>32170316590234002543550000005971871538746903</chNFe>
          </consChNFe>
        </distDFeInt>
      </nfeDadosMsg>
    </nfeDistDFeInteresse>
  </soap12:Body>
</soap12:Envelope>

 

Link para o comentário
Compartilhar em outros sites

De verdade, se tiver um exemplo de XML gerado, válido, para o download do XML da nfe, consultando pela chave, eu acredito que já conseguiria identificar qual o problema. :-D

 

É desta maneira que estou utilizando a função:

 

FNFeACBr.DistribuicaoDFePorChaveNFe(FNFeACBr.Configuracoes.WebServices.UFCodigo, '22379984000104', '32170316590234002543550000005971871538746903');

 

Editado por _asseinfo
Link para o comentário
Compartilhar em outros sites

  • Moderadores
8 minutos atrás, _asseinfo disse:

De verdade, se tiver um exemplo de XML gerado, válido, para o download do XML da nfe, consultando pela chave, eu acredito que já conseguiria identificar qual o problema. :-D

Me parece que está gerando na versão errada:

<distDFeInt xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00">

O correto:

<distDFeInt xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01">

Estar com os Schemas desatualizados pode causar isso.

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2112 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.

The popup will be closed in 10 segundos...