Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Não sei se eu estou fazendo corretamente a leitura do arquivo de retorno dos NSU, mas não estou conseguindo verificar os eventos de confirmação, ciência, etc.

No arquivo anexo, tem 3 NSU. O 001  é do resumo da nota, o 002 "deve" ser a nota toda, pois ficou disponível depois que foi registrada a ciência da operação. E o NSU 003 é o registro do CTe referente a NFe.

Com a rotina abaixo, eu estou conseguindo identificar o evento (NSU 003) de registro do CTe, mas os dois primeiros me trazem a mesma informação, ou seja, que seria da NFe 35150847960950089785550100000227641026322067 com situação autorizada.

A dúvida principal é como tratar o arquivo e identificar o evento da ciência que tem nessa nota. Por favor, analisem a minha rotina e me sugiram como poderia ficar para que retorno também esse evento de ciência da operação que com certeza está no arquivo, mas não estou conseguindo ler.

Anexei também um print do portal da receita, mostrando os eventos vinculados a nota.

Obrigado.

 for I := 0 to AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Count-1 do
  begin
   if AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.chNFe <> '' then
    begin
     case DMNFEletr.AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.cSitNFe of
      snAutorizado : VAux := 'NFe autorizada';
      snDenegado : VAux := 'NFe Denegada';
      snCancelada : VAux := 'NFe Cancelada';
     end;
    end 
   else
     if AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resEvento.chNFe <> '' then
      begin
       case AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resEvento.tpEvento of
        teCancelamento : VAux := 'Evento Cancelamento';
        teCCe : VAux := 'Evento CCe';
        teManifDestConfirmacao : VAux := 'Evento Confirmação';
        teManifDestCiencia : VAux := 'Evento Conhecimento';
        teManifDestDesconhecimento : VAux := 'Evento Desconhecimento';
        teManifDestOperNaoRealizada : VAux := 'Evento Desconfirmação';
        teRegistroCTe : VAux := 'Evento Registro CTe';
       end;
      end; 

   ShowMessage(VAux)   
  end;

20150827210020-dist-dfe.xml

NFe.png

Valdir Dill

Rio de Janeiro - RJ

 

 

  • Consultores
Postado

Boa tarde Valdir,

Se você abrir o XML através de um navegador verá que o NSU = 1 se refere a um resNFe (conteúdo do atributo schema), ou seja, se trata de um resumo de uma NF-e.

Por outro lado o NSU = 2 é uma NF-e completa, portanto a mesma foi manifestada e o NSU = 3 se refere a um resumo de evento, para saber qual evento se trata, temos que descompactar o seu conteúdo.

Caso você seja o destinatário, se ocorreu o retorno de uma nota completa, significa que você realizou a manifestação dessa nota, sendo assim é de se esperar que a sua aplicação tenha essa informação, como exemplo: Chave da NF-e manifestada, Data e Tipo da Manifestação e justificativa quando for o caso.

Por outro lado o emitente dessa nota que você manifestou, irá receber não um resumo do evento e sim o evento completo e este saberá que tipo de manifestação você realizou.

Se for por exemplo: Confirmação de Operação significa que o destinatário (você no caso) recebeu todas as mercadorias constantes na 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

  • Membros Pro
Postado

Por outro lado o NSU = 2 é uma NF-e completa, portanto a mesma foi manifestada e o NSU = 3 se refere a um resumo de evento, para saber qual evento se trata, temos que descompactar o seu conteúdo. 

E você teria algum exemplo simples de como fazer essa descompactação? Ou é algo complexo de se fazer?

Obrigado!

 

Valdir Dill

Rio de Janeiro - RJ

 

 

  • Consultores
Postado

Bom dia Valdir,

Tudo o que é retornado pelo DistribuicaoDFe vem compactado, algumas coisas da para saber através do nome colocado no atributo schema.

Para ter acesso as informações do resumo de uma NF-e ou ao XML da NF-e ou ao resumo de um evento ou até mesmo ao XML do evento por completo é preciso realizar a descompactação.

O componente realiza a descompactação automaticamente após obter o retorno da SEFAZ.

O retorno descompactado por ser lido através da propriedade: ....docZip.Items[x].XML e caso o componente esteja configurado para salvar em disco o XML o mesmo será salvo na pasta definida em PathDownload.

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

  • Membros Pro
Postado

Bom dia,

Acho que que não estava conseguindo me expressar para dizer onde estava minha dificuldade. Mas acho que matei a charada. Pelo menos naquilo que eu estava em dúvida.

Me corrija se eu estiver errado, mas a variável para identificar o que é o que em cada item (NSU) listados no arquivo baixado é o docZip.Items.schema.

Vejamos um exemplo:
Case AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.schema of
 tsresNFe : ShowMessage('Este NSU traz um resumo da nota.');
 tsresEvento : ShowMessage('Este NSU traz um resumo de eventos.');
 tsprocNFe : ShowMessage('Este NSU traz uma nota completa. Isso significa que a nota já foi manifestada.');
end;

 

Valdir Dill

Rio de Janeiro - RJ

 

 

  • Membros Pro
Postado

Exato. Esse case está dentro de um "for I := 0 to AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Count-1 do".

  • Curtir 1

Valdir Dill

Rio de Janeiro - RJ

 

 

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