Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Caros eu fiz uma busca no forum, tentando evitar perguntas desnecessárias.

Pelo que entendi da NT2014.002 o ConsultaNFeDest será desativado e o único em funcionamento será o DistribuicaoDFe

Uma das respostas dada pelo Italo informa que os passos são : 1 - Consultar, 2 - Manifestar e 3 - Realizar nova consulta.

Ao efetuar o passo 1 - Consultar 

ACBrNFe1.DistribuicaoDFe('33',CNPJ,0,'')

O resultado é uma arquivo -dist-dfe.xml com informações do tipo <docZip schema="resNFe_v1.01.xsd" NSU="000000000009324">H4sIAAAAAAAEAIW....

Observei que :

Se no demo estiver marcado Salvar Arquivos Pastas Separadas esta sendo criado VARIAS PASTAS com o CNPJ do remetente 

C:\MyLIB\ACBr\Exemplos\ACBrDFe\ACBrNFe\Delphi\Logs\00205253000444\NFe\201703\Down 

contendo o arquivo -resNFe.xml < que retorna 

<cStat>138</cStat>

<xMotivo>Documento(s) localizado(s)</xMotivo>

<dhResp>2017-03-14T11:51:48-03:00</dhResp>

<ultNSU>000000000009360</ultNSU>

<maxNSU>000000000010407</maxNSU>

Pergunta : Para baixar o XML, após manifestar, devo usar <ultNSU>000000000009360</ultNSU> em ACBrNFe1.DistribuicaoDFe('33',CNPJ,'',último NSU) e qual deve ser o controle sobre cStat ?

Se NÃO estiver marcado nada é criado

Pergunta : Os arquivos -resNFe.xml podem ser criados individualmente na mesma pasta onde esta o -dist-dfe.xml

Pelo que entendi os arquivos -resNFe.xml possuem um resumo da Nota

xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <chNFe>33170313644704000149550010000000000000</chNFe>
 <CNPJ>13644704000149</CNPJ>
 <xNome>H3 TRADING COMPANY S/A</xNome>
 <IE>79375470</IE>
 <dhEmi>2017-03-03T17:07:16-03:00</dhEmi>
 <tpNF>1</tpNF>
 <vNF>11.87</vNF>
 <digVal>aE3UQOwBSme59T/yegu3ee2L65k=</digVal>
 <dhRecbto>2017-03-03T17:07:18-03:00</dhRecbto>
 <nProt>333170000071044</nProt>
 <cSitNFe>1</cSitNFe>

Pergunta : O componente já tem essas informções descriptografadas internamente de forma a poderem ser lidas e gravadas em um banco de dados ou cada arquivo deverá ser lido individualmente ?

Percebi que o retorno não informa se já houve alguma manifestação sobre a Nota 

Ao efetuar 2 - Manifestar

Supondo que eu queira apenas BAIXAR O XML

with ACBrNFe.EventoNFe.Evento.Add do
begin
    InfEvento.cOrgao     := 33;
    infEvento.chNFe      := Chave_da_NFe; 
    infEvento.CNPJ       := CNPJ_do_Destinatario_da_NFe;
    infEvento.dhEvento   := now;
    infEvento.nSeqEvento := INC; // incrementa o evento
    infEvento.tpEvento := teManifDestCiencia;
end;

Pergunta : nSeqEvento é um identificador único que não pode se repetir NUNCA ou apenas naquele dia ?

Ao efetuar 3 - Realizar nova consulta

Vi que existe 

 { ACBrNFe1.DistribuicaoDFe()
  ACBrNFe1.DistribuicaoDFePorUltNSU()
  ACBrNFe1.DistribuicaoDFePorNSU()
  ACBrNFe1.DistribuicaoDFePorChaveNFe()  }

Pergunta : Ao realizar essa nova consulta, qualquer dos metodos acima realiza a baixa do xml após a manifestação ?

Pelo que entendi basta fazer for I := 0 to dmDados.NFe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Count-1 do para pegar informações individualizadas.

Pergunta : Como os zips retornam diversos documentos ..docZip.Items. tem alguma propriedade que garanta o retorno ser uma NFe ?

  • Consultores
Postado

Boa noite Antonio,

Primeiramente peço que leia com muita atenção a NT 2014/002 versão 1.02 pois esta é a mais atual.

Segundo leia também a NT 2012/002 versão 1.02 que trata sobre a Manifestação do Destinatário.

O DistribuicaoDFe de uma forma geral retorna a principio o resumo da NF-e, dai o XML *-resNFe.xml

Para o obter o XML completo da nota é preciso realizar a Manifestação do Destinatário, desta forma nas próximas execuções do DistribuicaoDFe o XML da nota manifestada será retornado.

Note que escrevi nas próximas e não na próxima.

Ao executar o DistribuicaoDFe pela primeira vez você vai informar zero como sendo o valor de ultNSU.

Será retornado um lote com até 50 documentos/resumos e os valores de ultNSU e maxNSU.

Devemos SEMPRE utilizar o valor retornado em ultNSU na próxima execução do DistribuicaoDFe.

Te aconselho a usar sempre o método DistribuicaoDFePorUltNSU pois este sempre vai retornar um lote com até 50 documento/resumos cujo NSU é maior que o informado.

Já o DistribuicaoDFePorNSU só retorna um documento/resumo cujo NSU é o que foi informado.

Por fim o DistribuicaoDFePorChaveNFe só retorna um documento/resumo que possui a chave informada.

A SEFAZ guarda os documentos dos últimos 3 meses, suponha que existam 500 documentos cujo NSU vai de 1 até 500, correto?

Ao executar o DistribuicaoDFePorUltNSU pela primeira vez será retornado os primeiros 50, os valores de ultNSU será 50 e de maxNSU será 500.

Se você manifestar as 50 notas, a SEFAZ vai disponibilizar o XML delas cujos NSU vão variar de 501 até 550, lembre-se que o NSU é um numero sequencial.

Sendo assim para você conseguir obter o XML das 50 primeiras notas manifestadas serão necessários executar o DistribuicaoDFePorUltNSU mais quantas vezes?

Resposta: 10 vezes.

Com relação a Manifestação do Destinatário, lembe-se que se trata de um evento, sendo assim dependendo do tipo de evento o nSeqEvento sempre será 1 ou poderá ser um número sequencial.

Por exemplo: ao solicitar o cancelamento de uma nota, lembre-se o cancelamento é um evento e como uma nota só pode ser cancelada uma unica vez o seu nSeqEvento será sempre 1.

Por outro lado podemos emitir uma Carta de Correção, que também é um evento, como uma nota pode ter mais de uma carta de correção, a primeira o nSeqEvento será 1 já a segunda será 2 e assim sucessivamente.

Resumindo o nSeqEvento (número sequencial do evento) tem haver com o evento e não com o dia, mês ou ano.

Se tratando de Manifestação do Destinatário veja o campo HP15 (nSeqEvento) página 4 da NT 2012/002 versão 1.02, coluna Descrição/Observação - Deixa claro que devemos informar o valor 1.

 

Não sei se respondi todas as suas duvidas, mas espero ter ajudado.

  • Curtir 1
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

Muito Obrigado por seu esclarecimento, ajudou MUITO.

Se não for abusar, apenas um item a mais.

Fiz um teste, já na segunda consulta. 

No componente se estiver marcado Salvar Arquivos Pastas Separadas esta sendo criado VARIAS PASTAS com o CNPJ de quem ENVIOU a nota com o xml da nota dentro.

Ex : C:\MyLIB\ACBr\Exemplos\ACBrDFe\ACBrNFe\Delphi\Notas\13644704000149\NFe\201703\Down < O CNPJ NÃO É DO CERTIFICADO

Desmarquei a  opção acima e se ocorre o download do zip ele não é descompactado.

Pergunta : Qual a forma correta de deixar o componente configurado para que ele salve dessa forma :

Ex : C:\MyLIB\ACBr\Exemplos\ACBrDFe\ACBrNFe\Delphi\Notas\CNPJ DO CERTIFICADO\NFe\201703\Down  

Pergunta :  Se isso não for possível, o componente retorna o path com o xml salvo de forma a depois se varrer os locais e ler o XML ou ate mesmo move-los ?

Obrigado.

 

 

 

 

 

Postado (editado)

Desculpe Italo, como os testes são feitos em cima do Demo, acabei me atrapalhando ao descrever a situação.

acbr1.png.0de657e19afa23c064f80068d76fffe0.png

o CheckBox cbxSalvarArqs estando marcado 

with ACBrNFe1.Configuracoes.Arquivos do
       begin
         Salvar             := cbxSalvarArqs.Checked;

esta sendo criado VARIAS PASTAS com o CNPJ de quem ENVIOU a nota com o xml da nota dentro.

Ex : C:\MyLIB\ACBr\Exemplos\ACBrDFe\ACBrNFe\Delphi\Notas\13644704000149\NFe\201703\Down < O CNPJ NÃO É DO CERTIFICADO

A forma do componente salvar é essa mesmo, pelo CNPJ do REMETENTE e não do DESTINATÁRIO ?

Tendo em vista que o XML *-resNFe.xml pode retornar ate 50 documentos a cada consulta, supondo que todos os 50 são xml de notas,  como pego o path com o nome  do xml ?

Obrigado.

 

 

 

 

 

Editado por Antonio Carlos L
  • Consultores
Postado

Boa noite Antonio,

Dica:

O componente possui 3 propriedades Salvar, vamos ao significado de cada uma delas.

Configuracoes.Arquivos.Salvar := True ou False; 

Se True o componente salva em disco os arquivos que tem validade jurídica, tais como: *-nfe.xml, *-procEventoNFe.xml e *-procInutNFe.xml

Se False não salva, útil para que deseja guardar o conteúdo desses XML no banco de dados.

Configuracoes.Geral.Salvar := True ou False;

Se True o componente salva em disco os arquivos de envio e de retorno da SEFAZ, esses XML não tem validade jurídica.

Se False não salva, muitos optam por essa configuração para economizar espaço em disco.

Configuracoes.WebServices.Salvar := True ou False;

Se True o componente salva em disco os arquivos de envio e de retorno da SEFAZ sem nenhum tratamento realizado pelo componente, esses XML não tem validade jurídica e seus nomes é acrescentado o sufixo -soap.

Costumamos salvar esses arquivos para tentar descobrir alguma falha na leitura correta do XML de retorno.

Isso explica, que quando você desabilita o XML não é salvo.

  • Curtir 1
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

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