Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Olá pessoal.

Estou tentando baixar o XML do fornecedor através da manifestação do destinatário. Faço da seguinte forma:

          if ACBrNFe1.DistribuicaoDFePorUltNSU(codUF,CNPJ,numeroNSU) then
           if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 138 then
            if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0].resDFe.chDFe <> '' then
             DocZipItem := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0];

O que não estou entendendo é que o cStat retorna 138 (documento localizado), porém, o XML não é carregado pelo componente.

Primeiro eu verifico se na resposta a chave de acesso está preenchida:

if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0].resDFe.chDFe <> '' then

Se a chave de acesso estiver preenchida, "peço" para o componente baixar o XML:

DocZipItem := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0];

O problema está justamente nesta linha acima. NUNCA vem nada.

Preciso da ajuda dos senhor para entender o que eu posso está fazendo de errado ou deixando de fazer.

Alguém poderia me dar uma luz?

Obrigado,

Rogério.

  • Moderadores
Postado
7 minutos atrás, Rogério Braga disse:

DocZipItem := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0];

O problema está justamente nesta linha acima. NUNCA vem nada.

O que quer dizer com "nunca vem nada"? DocZipItem fica nil? Tem erro de "index out of bounds"?

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Não, não retorna erro nenhum, porém, o XML não é baixado em nenhum lugar. Por isso que mencionei que não vem nada.

Na pasta onde eu apontei para fazer o download do XML do fornecedor, ele também não está.

Não sei onde está o XML do fornecedor. O componente não baixa o XML ou então, deve estar faltando algum comando ou sei lá o que para ele baixar.

É isso que está pegando e não achei onde está o problema.

  • Moderadores
Postado

O componente salva os arquivos assim que é executado o método ACBrNFe.DistribuicaoDFe.

Pra gravar precisa configurar:

- ACBrNFe.Configuracoes.Arquivos.Salvar := True;

- ACBrNFe.Configuracoes.Arquivos.DownloadDFe.PathDownload := <caminho pra gravar as NFe>;

- ACBrNFe.Configuracoes.Arquivos.PathEvento := <caminho pra gravar os eventos>;

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Olá bom dia!

Identifiquei uma parte do problema. A maneira como eu estava consultando estava errada. Eu estava fazendo assim:

"if ACBrNFe1.DistribuicaoDFePorUltNSU(codUF,CNPJ,numeroNSU) then"

o correto é:

"if ACBrNFe1.DistribuicaoDFePorNSU(codUF,CNPJ,numeroNSU) then"

Ao invés de eu consultar pelo NSU específico (DistribuicaoDFePorNSU), eu estava consultando pelo último NSU (DistribuicaoDFePorUltNSU). Ok, esse problema está resolvido.

O componente está retornando o XML, porém, ele está vindo com informações resumidas. Veja:

<?xml version="1.0" encoding="UTF-8"?>

-<resNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<chNFe>9999999999999999999999999999999999999999999</chNFe>

<CNPJ>9999999999999999</CNPJ>

<xNome>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</xNome>

<IE>999999999999</IE>

<dhEmi>2021-01-06T00:00:00-03:00</dhEmi>

<tpNF>1</tpNF>

<vNF>1860.00</vNF>

<digVal>XXXXXXXXXXXXXXXXXXXXXXXXXX</digVal>

<dhRecbto>2021-01-06T15:40:59-03:00</dhRecbto>

<nProt>99999999999999</nProt>

<cSitNFe>1</cSitNFe>

</resNFe>

Eu preciso do XML completo para pegar as informações de faturamento, impostos e produtos.

Como eu faço para retornar o XML completo?

Obrigado,

Rogério.

 

  • Moderadores
Postado
57 minutos atrás, Rogério Braga disse:

Como eu faço para retornar o XML completo?

Primeiro, precisa enviar o evento com a manifestação da nota e aguardar ser gerado o novo NSU com o XML completo que pode demorar.

Depois executar novamente o DistribuicaoDFePorUltNSU, DistribuicaoDFePorNSU ou DistribuicaoDFePorChaveNFe.

Usar o DistribuicaoDFePorNSU não fica prático nesse cenário porque você tem que informar o NSU do XML completo e não o NSU do resumo.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Então, quando eu faço a consulta na Sefaz, eu consulto pelo último NSU (DistribuicaoDFePorUltNSU).

Aí, eu faço um FOR no componente para guardar na tabela todas as notas emitidas contra aquele CNPJ, e nesse momento, eu já pego o NSU daquela nota que está sendo lida. Faço assim:

...

Table1.FieldByName('NSU').AsInteger := StrToIntDef(DocZipItem.NSU, 0);

...

Evidente que eu guardo as demais informações que estão no componente.

Bem, você quer dizer que esse NSU que está vindo é um NSU de resumo? Pergunto isso porque eu guardo esse NSU e depois, quando é feita a CONFIRMAÇÃO, eu pego esse NSU e tento baixar o XML. É aí que está vindo o XML resumido.

Então como fazer para obter o NSU do XML completo?

Na sua postagem acima você disse para consultar pelo NSU completo, mas tem que aguardar ele ser gerado. Como fazer para consultar esse NSU "completo"? Existe um comando específico ou existe um campo específico no componente que já carregar esse NSU completo?

Obrigado,

Rogério.

  • Moderadores
Postado
4 minutos atrás, Rogério Braga disse:

Bem, você quer dizer que esse NSU que está vindo é um NSU de resumo? Pergunto isso porque eu guardo esse NSU e depois, quando é feita a CONFIRMAÇÃO, eu pego esse NSU e tento baixar o XML. É aí que está vindo o XML resumido.

Informando o NSU do resumo sempre vai vir o resumo, independentemente se a NFe já foi manifestada ou não.

4 minutos atrás, Rogério Braga disse:

Então como fazer para obter o NSU do XML completo?

Não tem como saber qual vai ser o NSU que vai ser gerado, ele entra na fila após o último documento processado pelo AN.

Por isso o DistribuicaoDFePorNSU é pouco prático, na minha opinião. Aqui uso apenas o DistribuicaoDFePorUltNSU, assim que o XML completo é disponibilizado eu atualizo no banco de dados.

Ou você pode usar o DistribuicaoDFePorChaveDFe informando a chave da nota, se já estiver disponível será retornado o XML completo em vez do resumo.

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Olá bom dia!

Acabei de fazer a consulta pela chave de acesso (DistribuicaoDFePorChaveNFe) e mesmo assim ele retorna o XML resumido.

A forma como estou consultado está correta? Veja:

if ACBrNFe1.DistribuicaoDFePorChaveNFe(35,'99999999999999',chaveNFe) then

   DocZipItem := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0];

Pergunto isso porque eu só posso estar fazendo algo de errado para retornar apenas o resumo. No componente existe alguma configuração para retornar o XML completo ou resumido?

Obrigado,

Rogério.

  • Moderadores
Postado
1 hora atrás, Rogério Braga disse:

Acabei de fazer a consulta pela chave de acesso (DistribuicaoDFePorChaveNFe) e mesmo assim ele retorna o XML resumido.

Isso quer dizer que:

- A nota ainda não foi manifestada como Ciência, Confirmação da Operação ou Operação não realizada; ou

- O Ambiente Nacional ainda não disponibilizou o XML da NFe completa.

1 hora atrás, Rogério Braga disse:

Pergunto isso porque eu só posso estar fazendo algo de errado para retornar apenas o resumo. No componente existe alguma configuração para retornar o XML completo ou resumido?

Não, o que você pode fazer é verificar o tipo de documento retornado:

  ACBrNFe1.DistribuicaoDFePorChaveNFe(35,'99999999999999',chaveNFe);
  DocZipItem := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0];

  XML := DocZipItem.XML;

  case DocZipItem.schema of
    schprocNFe: ; // xml completo
    schresNFe: ; // resumo da nfe
    schprocEventoNFe: ; // evento completo
    schresEvento: ; // resumo de evento
  end;

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Bom dia, estava com um problema praticamente idêntico e realmente o que estava faltando era fazer a manifestação.

Olha nos exemplos do acbr na pasta Delphi tem o ACBrNFe_Exemplo.dproj

Lá tem na aba consulta o botão consulta pela chave. Vc precisa do retorno dessa função para saber o numero do lote no qual se encontra a NFe que vc quer baixar e assim usar a função que faz a manifestação.

No meu caso no fonte ficou assim.

ACBrNFe.EnviarEvento(ACBrNFe.WebServices.Consulta.procEventoNFe.Count + 1)

Para muitas coisas é necessária a realização da manifestação, como para "Carta de correção" por exemplo. 

No exemplo que mencionei, tem a aba Distribuição DFe que apresenta exemplos que ajudam.

Desculpa não poder colocar aqui como está no nosso fonte, pois não tenho autorização da empresa pra isso, e já levei xixi por postar um print de tela de parte do nosso fonte mesmo que não tivesse na da que comprometesse algo. 😜

Tomara que ajude.

Postado
15 minutos atrás, Fernando Massa disse:

numero do lote

Bom dia Fernando.

Você fala para obter o retorno do número do lote. Que número é esse?

Quando eu faço a consulta na Sefaz, já pego várias informações, porém, não encontrei nenhuma informação que sugere ser o número do lote. Veja:

         Table1.FieldByName('NumeroNFe').AsString         := Copy(DocZipItem.resDFe.chDFe, 26, 9);;
         Table1.FieldByName('xSerie').AsString            := Copy(DocZipItem.resDFe.chDFe, 21, 2);
         Table1.FieldByName('chNFe').AsString             := DocZipItem.resDFe.chDFe;
         Table1.FieldByName('CNPJCPF').AsString           := LimpaCampos(DocZipItem.resDFe.CNPJCPF);
         Table1.FieldByName('xNome').AsString             := UpperCase(DocZipItem.resDFe.xNome);
         Table1.FieldByName('IE').AsString                := LimpaCampos(DocZipItem.resDFe.IE);
         Table1.FieldByName('dhEmi').AsString             := FormatDateTime('DD/MM/YYYY', DocZipItem.resDFe.dhEmi);
         Table1.FieldByName('tpNF').AsInteger             := Integer(DocZipItem.resDFe.tpNF);
         Table1.FieldByName('vNF').AsFloat                := DocZipItem.resDFe.vNF;
         Table1.FieldByName('digVal').AsString            := DocZipItem.resDFe.digVal;
         Table1.FieldByName('dhRecbto').AsDateTime        := DocZipItem.resDFe.dhRecbto;
         Table1.FieldByName('nProt').AsString             := DocZipItem.resDFe.nProt;
         Table1.FieldByName('cSitNFe').AsInteger          := Integer(DocZipItem.resDFe.cSitDFe);
         Table1.FieldByName('NSU').AsInteger              := StrToIntDef(DocZipItem.NSU, 0);

Com relação a CONFIRMAÇÃO da operação, é exatamente neste momento em que estou tentando pegar o XML completo porque sei que para obtê-lo, deve fazer a consulta, a ciência da operação e depois a confirmação da operação. Normalmente, a confirmação da operação é feita em 1 ou 2 dias após fazer a ciência da operação. Esse tempo é o da entrega da mercadoria ou qualquer outra operação interna na empresa. Em alguns casos, a mercadoria demorar vários dias para chegar porque vem de outra UF. Para os dois casos, a confirmação da operação quase nunca é feita no mesmo dia da ciência da operação. Em ambos os casos o XML vem resumido. É aí que empacou e resolvi pedir ajuda aqui. Mesmo com todas as informações que o colega BigWings já me passou, ainda tem algo que faz com que o XML venha apenas resumido. Eu tenho casos de XML confirmados a mais de 30 dias e mesmo assim o XML não vem completo. Fiz a consulta pelo NSU e pela chave de acesso. O resultado foi o mesmo, ou seja, XML resumido.

Então, esse número de loto que você menciona tem exatamente qual nome no retorno da Sefaz?

Obrigado,

Rogério.

  • Moderadores
Postado
1 hora atrás, Rogério Braga disse:

Você fala para obter o retorno do número do lote. Que número é esse?

O número do lote você simplesmente informa no envio do evento, da mesma forma que no envio da NFe. Ele não é controlado nem validado pela SEFAZ, é apenas para controle da sua aplicação.

Então não é preciso saber qual lote foi enviada a NFe, basta informar a chave.

1 hora atrás, Rogério Braga disse:

Com relação a CONFIRMAÇÃO da operação, é exatamente neste momento em que estou tentando pegar o XML completo porque sei que para obtê-lo, deve fazer a consulta, a ciência da operação e depois a confirmação da operação.

Para obter o XML completo, pode enviar uma manifestação do tipo Ciência, Confirmação ou Operação não realizada.

Faça a consulta no portal nacional da NFe pela chave que está tentando baixar, usando o certificado do emitente ou do destinatário para ter a consulta completa. Veja se nos eventos é mostrada a manifestação.

Veja também se a nota tem data de saída. Tem relatos no fórum que notas sem data de saída podem não aparecer.

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado
1 hora atrás, BigWings disse:

Faça a consulta no portal nacional da NFe pela chave que está tentando baixar, usando o certificado do emitente ou do destinatário para ter a consulta completa. Veja se nos eventos é mostrada a manifestação.

Veja também se a nota tem data de saída. Tem relatos no fórum que notas sem data de saída podem não aparecer.

Veja só a imagem abaixo. Fiz a consulta completa no portal da Sefaz e lá mostra que a NFe tem data de saída e as manifestações foram feitas no mesmo dia da emissão da NFe.NFe.thumb.png.660e08bcbadb1e03201d1ccd594c71fd.png

Esse aí é um caso real que o componente baixa apenas o resumo da NFe. Mesmo após 1 mês da manifestação, ainda vem apenas o resumo.

O que será que eu estou fazendo de diferente/errado, ou deixando de fazer para sempre retornar apenas o resumo?

Postado
20 minutos atrás, Juliomar Marchetti disse:

acho que não houve a integração do arquivo entre sefaz estado e sefaz nacional.

Nossa, mas será que essa falta de integração é em todos esses casos aqui comigo? Digo isso porque essa NFe não é um caso isolado. São várias notas de fornecedor que ocorre esse problema.

Quando é feito a confirmação da operação e o XML não baixou, ao consultar pelo NSU ou chave de acesso, em 100% dos casos está retorno o resumo do XML.

  • Moderadores
Postado
1 hora atrás, Rogério Braga disse:

O que será que eu estou fazendo de diferente/errado, ou deixando de fazer para sempre retornar apenas o resumo?

Pra ter uma ideia você precisa anexar aqui o XML de envio e o de retorno da SEFAZ ao executar o método DistribuicaoDFePorChaveNFe informando a chave dessa nota.

*-con-dist-dfe.xml

*-dist-dfe.xml

Se a nota já foi manifestada e já houve tempo para ser processada você deveria receber o XML completo.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Moderadores
Postado

Veja que no arquivo *-dist-dfe.xml retornou o schema procNFe_v4.00.

<docZip NSU="000000000001894" schema="procNFe_v4.00.xsd">

Isso significa que é o XML completo.

Extraindo o conteúdo da tag docZip confirmei que é, então não entendo porque você diz estar recebendo só o resumo...

 

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

Projeto ACBr

 

 

Postado
18 minutos atrás, BigWings disse:

Veja que no arquivo *-dist-dfe.xml retornou o schema procNFe_v4.00.


<docZip NSU="000000000001894" schema="procNFe_v4.00.xsd">

Isso significa que é o XML completo.

Extraindo o conteúdo da tag docZip confirmei que é, então não entendo porque você diz estar recebendo só o resumo...

 

Pois é meu amigo, se você que é expert no ACBrNFe não sabe o motivo de retornar apenas o XML resumo, imagine eu!

Veja como estou fazendo a pesquisa:

          if ACBrNFe1.DistribuicaoDFePorChaveNFe(35,99999999999999,chNFeFornec) then
           if MD_Comum.ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 138 then
             DocZipItem := MD_Comum.ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0];

No código acima, existe alguma coisa de errado?

Além deste código, existe alguma configuração ou alguma propriedade que devo ajustar para retornar o XML completo, ou é apenas fazer o código acima?

  • Haha 1
  • Moderadores
Postado
Agora, Rogério Braga disse:

          if ACBrNFe1.DistribuicaoDFePorChaveNFe(35,99999999999999,chNFeFornec) then

Esta linha vai salvar o XML em disco se o componente estiver configurado pra isso.

1 minuto atrás, Rogério Braga disse:

             DocZipItem := MD_Comum.ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0];

Essa linha não faz nada a não ser atribuir um objeto a uma variável.

Você vai ter o XML na propriedade DocZipItem.XML e o tipo na propriedade DocZipItem.schema, conforme já postei trecho de código mais acima.

Você pode usar essas propriedade pra salvar o arquivo em disco, gravar no banco, ou da forma que desejar melhor.

A configuração pra salvar automaticamente também já postei mais acima.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Membros Pro
Postado

Boa noite pessoal, comecei a testar minha rotina de manifestar e baixar o donwload xml, nessa semana é ja me deparei com esse problema de não consegui baixar o xml.
Com meu cnpj e de um cliente esta funcinando normalmente, Eu que nunca tinha manifestado nfe consegui baixar xml de notas feitas mes passado. Teve ate uma compra que fiz nessa semana, que dava erro no download, mas depois de 24 hs, consegui.

Mas hoje foi implementar em mais um cliente e deparei com esse problema, não consigo baixar nem manifestar nenhuma nota, o resumo até vem, mas mesmo notas de um mes atraz não dá certo.

Estou usando o DistribuicaoDFePorChaveNFe que restorna somente o resumo, e quanto tento pelo DistribuicaoDFePorNSU, vem mensagem que o documento não foi encontrado.

Se algum tiver alguma dica é so falar.

Obrigado

 

  • Moderadores
Postado
3 horas atrás, jaques.rocha disse:

Boa noite pessoal, comecei a testar minha rotina de manifestar e baixar o donwload xml, nessa semana é ja me deparei com esse problema de não consegui baixar o xml.
Com meu cnpj e de um cliente esta funcinando normalmente, Eu que nunca tinha manifestado nfe consegui baixar xml de notas feitas mes passado. Teve ate uma compra que fiz nessa semana, que dava erro no download, mas depois de 24 hs, consegui.

Mas hoje foi implementar em mais um cliente e deparei com esse problema, não consigo baixar nem manifestar nenhuma nota, o resumo até vem, mas mesmo notas de um mes atraz não dá certo.

Estou usando o DistribuicaoDFePorChaveNFe que restorna somente o resumo, e quanto tento pelo DistribuicaoDFePorNSU, vem mensagem que o documento não foi encontrado.

Se algum tiver alguma dica é so falar.

Obrigado

 

Lembrei de algo lendo seu relato e pode ser o caso de muitos acima

tem gente/clientes que além do software de vocês acaba indo pra net e pegando software pra baixar o tal xml e deixa rodando seja no mesmo micro ou em outro e dai os xml já não deixam mais ser baixados pois já foram

ou até mesmo usam os tais armezanamento em nuvem que faz exatamente isso. manifesta meio que na força sem saber se a nota é pro cliente mesmo e baixa o xml

então tente verificar isso nesse seu caso

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

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