Olá,
Tendo em vista a quantidade de pessoas com dificuldade no entendimento do processo para utilizar o DistribuicaoDFePorUltNSU, com o intuito de download de xmls, segue uma visão enxuta.
1. Na primeira execução, o DistribuicaoDFePorUltNSU disponibilizará o resumo da NFe.
2. Deverá ser feita a manifestação de cada documento.
3. Após a manifestação, o DistribuicaoDFePorUltNSU disponibilizará o XML completo da NFe, a partir do momento que a Sefaz liberar o documento, não necessariamente imediatamente após a manifestação.
3.1. Caso não traga o XML, aguarde o período indicado pela sefaz que atualmente é de 1h no mínimo, e efetue novamente o DistribuicaoDFePorUltNSU, repetindo este item até que o XML seja baixado.
É só isso, receber o resumo, manifestar e receber o XML completo.
A seguir apenas informações complementares.
Atenção:
Após receber o XML completo, o DistribuicaoDFePorUltNSU não disponibilizará novamente este documento, através do fluxo padrão, preenchendo o ultNSU recebido.
O fluxo é único, conforme explicado acima.
O DistribuicaoDFePorUltNSU disponibilizará uma vez o resumo e uma vez o XML completo.
Se não for processado quando recebido, não terá como fazê-lo novamente seguindo este fluxo, sendo necessário fazer uma nova consulta com ultNSU=0 para trazer novamente todos os registros do último período disponível.
Se for mantido um fluxo diário por exemplo, esse processo será transparente, dependendo apenas da manifestação dos documentos de interesse do ator.
A cada execução do DistribuicaoDFePorUltNSU serão recebidos tanto os novos resumos, de novas NFes emitidas, quanto os xmls completos de NFes que já foram manifestadas e ainda não haviam sido recebidos.
Informações "técnicas":
1. O que é o resumo?
Um XML com informações básicas suficientes para efetuar a manifestação.
2. Para identificar o tipo de XML recebido, utilize a propriedade a seguir:
ACBrNFe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip[i].schema
- schresNFe: xml resumo
- schprocNFe: xml completo
3. Assim como xmls de NFe esse serviço retorna xmls dos eventos.
4. Caso você já tenha efetuado a consulta do serviço e possua o xml de retorno, contendo os documentos e queira reprocessá-lo, poderá alimentar o componente com o método abaixo, tendo assim populado as propriedades com o mesmo resultado do momento que executou o NFe.DistribuicaoDFe().
ACBrNFe.WebServices.DistribuicaoDFe.retDistDFeInt.LerXMLFromFile( 'c:\temp\20220307130102-dist-dfe.xml' )
Se ainda restam dúvidas sobre o processo:
1. Leia a NT "NFe_NT2014_002 WS DistribuicaoDFe.pdf" com calma que o processo acima será simples de entender.
Você pode pegar a última versão dessa NT no nosso repositório de documentos no seguinte link:
http://svn.code.sf.net/p/acbr/code/tools/DFe/NFeNFCe/NT/2014/
2. Veja esse tópico bem explicativo do @Italo Giurizzato Junior
3. Veja esse vídeo do @Bruto do Delphi
4. Dia 09/03/2022 foi abordado esse assunto no Papo Pro, onde a comunidade pode interagir e tirar suas dúvidas que restavam. Conecte-se no Discord, entre no canal de voz, #Papo Pro ACBr, não perca as próximas edições de terças a quintas-feiras das 10:00 as 11:00.
Já está disponível essa edição no link a seguir.