Ir para conteúdo
  • Cadastre-se

dev botao

Web Service De Distribuição De Documentos Fiscais Eletrônicos


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

Recommended Posts

Prezado Ítalo, 

 

      Em um dos posts anteriores teve um colaborador que deixou um exemplo do zlibex e de uma unit codes64. O exemplo dele faz a conversão String-Base64 para Binário-GZIP e depois com o zlibex descompacta as informações. Pelo que vi o zlibex é open source. Qual seria a dificuldade de implementar este pequeno componente no acbrnfe?

 

                                                                      Att.

 

                                                                  Herbert.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Herbet,

 

Os administradores precisão avaliar as Units e entrar em contato com o autor.

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Bom dia,

 

Eu sempre estava recebendo a mensagem de nenhum documento localizado, como muitos aqui.

Como alguns conseguiram retorno, pensei que poderia estar fazendo algo errado e resolvi fazer alguns testes.

Sempre que faço a pesquisa com ACBrNFe1.DistribuicaoDFe(UF,CNPJ,'1','0') o retorno é nenhum documento localizado. Mas olhando os arquivos gerados observei o seguinte:

No arquivo de Consulta o NSU vai sempre zerado.

 

<?xml version="1.0"?>
-<distDFeInt versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe">
    <tpAmb>2</tpAmb>
    <cUFAutor>35</cUFAutor>
    <CNPJ>XXXXXXXXXXXX</CNPJ>
    -<consNSU>
    <NSU>000000000000000</NSU>
    </consNSU>
</distDFeInt>
 
Mas no arquivo de Retorno vem o número do último NSU
<?xml version="1.0"?>
    <tpAmb>2</tpAmb>
    <verAplic>1.0.0</verAplic>
    <cStat>137</cStat>
    <xMotivo>Nenhum documento localizado</xMotivo>
    <dhResp>2015-01-13T09:35:39</dhResp>
    <ultNSU>000000000000000</ultNSU>
    <maxNSU>000000000001365</maxNSU>
</retDistDFeInt>

 

Então resolvi passar os parâmetros assim  ACBrNFe1.DistribuicaoDFe(UF,CNPJ,'1365','1365') e obtive o retorno.

Observei e confirmei com outros testes que o valor que está sendo gravado na tag UltNSU é o quarto parâmetro e não o terceiro.

Segue um exemplo do arquivo com o retorno:

 

<?xml version="1.0"?>
    <tpAmb>2</tpAmb>
    <verAplic>1.0.0</verAplic>
    <cStat>138</cStat>
    <xMotivo>Documento localizado</xMotivo>
    <dhResp>2015-01-13T09:40:30</dhResp>
    <ultNSU>000000000001365</ultNSU>
    <maxNSU>000000000001365</maxNSU>
    -<loteDistDFeInt>
<docZip schema="resNFe_v1.00.xsd" NSU="000000000001365">H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Ih7XefPiWZ6+W5TL5tG7pvjso3nbrh7dvXt1dTW+ujeu6ou7ezs7u3d/7y+ev57O80W2XSybNltO84/sW7Ob3/oovczrJqs+++jeeHdHXw1eW1V1m5XnRTPNynGxPB9P6rvL8/yjo8fTOaF4dO/+7v2d3Z2H93f2Ht5/uEPQdw7u39+RZ+/+vYN7uwcHezv79+/t3Xt8V955fPLi5XeOwnce3+UPH797US3yo9/ri5P0zavjF69ffvnqzenr9NWXT7/8ybPjV2dfvk6fv3l6PH58Vxo+Pjs9undwsHOwd/BwZ3f308d36YPHs/npojja29m9v72zu72792b3/qPd/Ue797Z39h7t7Dy+Kw0et6sXz452H9/ln48v6Z8DGs0YLfDH41lx8ZNZebSbf5JdPv3J+t3+8tvv7v3ki0+n89Pfu919dfDlxWcESxpRp6/y6aStIv0+cP1qm8fLl3XVHu0y+UCpnf2HD4hA8vHj6euiBaUIN/Pr47vCFEf/D+q2a24dAgAA</docZip>
    </loteDistDFeInt>
</retDistDFeInt>
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia,

 

Você não pode passar desta forma: ACBrNFe1.DistribuicaoDFe(UF,CNPJ,'1365','1365') ou você passa:

 

ACBrNFe1.DistribuicaoDFe(UF, CNPJ, '1365', '') neste caso a consulta retornara os resumos com base no último NSU retornado pela última consulta.

 

ou

 

ACBrNFe1.DistribuicaoDFe(UF, CNPJ, '', '1365') neste caso a consulta retornara o documento ou resumo referente ao NSU informado.

 

Note que o mais usuário é a primeira opção, ou seja, passar uma string vazia no quarto parâmetro da função.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Oi Italo,

 

Postando os arquivos gerados passando o valor 1365 no terceiro e no quarto parâmetro.

Quando passo no terceiro parâmetro, mesmo que eu passe um valor, no xml a tag UltNSU fica com zero.

Já no quarto parâmetro a tag fica com valor.

 

Mas de qualquer forma agora já dá para dar continuidade no desenvolvimento.

 

Obrigado pelo retorno.

 

20150113111819-dist-dfe com 1365 no terceiro parametro.xml

20150113111952-dist-dfe com 1365 no quarto parametro.xml

Link para o comentário
Compartilhar em outros sites

Boa tarde a todos,

 

Estou anexando o método que eu usei para converter e descompactar o retorno do WS.

Foram utilizados a ZLibEx (Open-Source: https://github.com/mike-lischke/GraphicEx/tree/master/3rd%20party/DelphiZlib)e uma unit para converter de Base64 (http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_27089514.html).

 

A solução toda é open-source. Espero que possa ajudar os amigos numa implementação no ACBr.

Dentro do Decode.rar tem um exemplo de como utilizei as funções.

 

Olá amigo, não estou conseguindo fazer esse código funcionar no Delphi Xe3, você saberia o motivo dele não funcionar nessa versão, testei na versão 7 e funcionou perfeitamente. Obrigado.

Link para o comentário
Compartilhar em outros sites

Engraçado, testei na Demonstração do ACBr o DistribuiçãoDFe, e deu exatamente o mesmo erro que relatei anteriormente, lembrando que o certificado é válido e foi configurado corretamente, o ConsNFeDest funciona perfeitamente, mas o Distribuição não.

 

Alguém sabe como resolver isso?

 

Erro: 'Webservice de Distribuição de DF-e

-Inativo ou inoperante tente novamente.

-Erro: Requisição não enviada.

The resource cannot be found.'.

 

Grato,

Link para o comentário
Compartilhar em outros sites

Obrigado pela dica Otair, já vinha trabalhando com o firewall do windows e o antivírus desligados, o problema persistiu, mas... me toquei de que aqui no escritório temos um servidor com firewall, e pedi pro adm da rede verificar se pode ser esse firewall da rede que está barrando. Creio que só amanhã terei resposta quanto a isso mas assim que tiver posto a novidade aqui.

 

Abraço!

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Travache,

 

A consulta realizada através do Web Services de Distribuição de DF-e é feita no Ambiente Nacional e não na SEFAZ-Autorizadora.

 

A UF=41 que você esta informando ao realizar a consulta é a mesma onde o CNPJ do destinatário é contribuinte?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Consegui um retorno semelhante ao da Darlana no caso está de acordo pois não emitimos notas no Ambiente de Homologação.

 

O que ocorreu é que o componente tinha uma instrução para virar o ambiente para produção, como várias pessoas estavam conseguindo um retorno, achei estranho e melhor verificar se o ambiente estava correto, e no caso não estava, uma coisa boba hehehehe...

 

Existe previsão para o ambiente de produção funcionar? era pra ser em 6/10/2014 né, até agora nada?

 

Grato pela ajuda!

Link para o comentário
Compartilhar em outros sites

Olá amigo, não estou conseguindo fazer esse código funcionar no Delphi Xe3, você saberia o motivo dele não funcionar nessa versão, testei na versão 7 e funcionou perfeitamente. Obrigado.

 

Olá abnervv,

 

Para compilar no Delphi 2010, com a ajuda dos amigos aqui do trabalho, alteramos a linha abaixo na chamada do botão Decode.

 

//SetString(XML, PChar(OutputStream.Memory), OutputStream.Size div SizeOf(Char));

SetString(XML, PAnsiChar(OutputStream.Memory), OutputStream.Size div SizeOf(AnsiChar));

 

Como a partir do Delphi 2010, são usados caracteres Unicode, acho que vai funcionar também no XE.

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

Quanto ao novo método, alguns estão conseguindo obter o retorno sem nenhum problema, mas os resumos das notas esta sendo retornado de forma zipado, ainda não temos uma solução Free a ser incorporado ao projeto ACBr de tal forma que o componente realize a descompactação automaticamente.

 

Italo, o Abbrevia não serviria?

http://sourceforge.net/projects/tpabbrevia/

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

  • Consultores

Boa tarde Cantu,

 

Vamos analisar, muito obrigado pela colaboração.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Olá, bom dia.

 

Estou fazendo alguns testes em cliente e estou obtendo um retorno que está me gerando algumas dúvidas, o meu cenário é o seguinte.

 

Meu cliente ele é o Transportador da nota declarado no grupo X03.

 

Quando faço o envio do evento tenho o seguinte retorno cStat = 575 - Rejeicao: O autor do evento diverge do destinatario da NF-e

 

Em anexo estão os xmls das operações.

 

Obrigado desde já pela ajuda.

1-eve.xml

1-ped-eve.xml

20150115110539-con-dist-dfe.xml

20150115110541-dist-dfe.xml

20150115110721-ped-down-nfe.xml

20150115110722-down-nfe.xml

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Leonardo,

 

Se o seu cliente é uma transportadora, não faz sentido ela enviar um evento de Ciência da Operação.

 

Pois esse evento é de uso do destinatário da mercadoria, é ele que tem que se manifestar.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Correto, 

 

Eu também cheguei imaginar isso, mas segundo a Nota Técnica o transportador também poderá efetuar o download do XML da NFe certo ?

 

Como deve ser o evento para o Transportador fazer o download ?

 

Não consegui entender essa situação na Nota Técnica.

 

Muito Obrigado

Link para o comentário
Compartilhar em outros sites

  • Consultores

Leonardo,

 

Para o destinatário da mercadoria ao realizar a consulta, ele tem como resposta um resumo da nota.

Se desejar ter a nota por completa há necessidade de realizar a manifestação e depois realizar uma nova consulta.

 

Por outro lado a transportadora quando estiver identificada no grupo X03, ao realizar a consulta terá como resposta a nota completa, logo não há necessidade de realizar a manifestação e muito menos o Download.

 

Só tem um problema, tanto o resumo quanto a nota completa retornados pela consulta realizada no WebServices NFeDistribuicaoDFe esta compactado.

 

Ainda estamos em busca de uma classe ou DLL free que possamos incluir no projeto ACBr para que o componente ACBrNFe faça a descompactação automática.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Boa tarde!

 

 

Meus amigos pelo que eu li no fórum, há uma certa dificuldade em encontrar uma solução open source para descompactar o retorno do DF-e, pelo manual foi adotado o padrão Gzip para compactação da string, esse padrão é nativo do Java e da plataforma .NET, poderia ser desenvolvida uma dll em c# que descompactaria a string compactada, o processo é bem simples, tenho ela pronta, pois minha solução usa fontes próprios para realizar a consulta do DF-e, se interessarem posso disponibilizar, o único problema é que o cliente teria que ter o framework instado na maquina.

 

Pessoal seguinte, eu estou com dificuldade em encontrar os schemas de retorno do DF-e, pelo manual ele dá os exemplos:

resNFe_v1.00.xsd

procNFe_v3.10.xsd

resEvento_v1.00.xsd

procEventoNFe_v1.00.xsd

Porém nos meus testes foi retornado também o procNFe_v1.00.xsd, gostaria de saber se existe mais algum e onde posso encontrar a estrutura dos schemas: proc_NFe e procEventoNFe, também não encontrei em lugar algum.

 

 

 

Obrigado.

 

 

João Carlos

Link para o comentário
Compartilhar em outros sites

Bom dia, estou anexando no comentário o fonte pcnRetDistDFeInt com o código para fazer o decode e descompactar a string retornada pelo
webservice de consulta dos documentos. Na implementação, para realizar o decode da string utilizei o componente IdDecoderMIME da paleta indy (nativo no delphi)
e para descompactar utilizei a biblioteca ZLib free e open source (http://www.zlib.net/), já indicada por outros aqui no tópico. Nos testes recebi diversos
retornos contendo objetos do tipo nfeProc que ainda não existem no layout mas analisando o xml retornado parece exatamente o xml de distribuição da NFe, 
talvez poderiamos somente declarar como "resNFeProc" um objeto nota fiscal e utilizar o loadfromstream para alimentá-lo quando fosse esse o retorno.
 
 
Enfim, fica o código para avaliarem, desconsiderem os comentários e variaveis desnecessários dele.
 
Abraço.

pcnRetDistDFeInt.pas

Link para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...