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á 3368 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Consultores

Boa tarde a todos,

 

No caso do nfeProc talvez seria interessante salvar em disco e armazenar todo o conteúdo em uma propriedade para aqueles que preferem ter o XML armazenado em banco de dados.

 

Baixei o ZLibExGZ, mas tive que fazer uma alteração na procedure DecodeStr por conta do TIdDecoderMINE no Delphi 7 não existe o DecodeBegin, Decode e DecodeEnd.

 

Amanhã vou realizar alguns testes.

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, Acredito que alguns erros que estão ocorrendo ao fazer o decode da string seja devido a versão do indy, a versão que utilizo é a versão 10, Utilizo o delphi 7 e a um tempo atrás tive que atualizar devido alguns problemas com a versão nativa do delphi 7 estar desatualizada para se trabalhar com IMAP, talvez tenha algum bug também nessa versão no componente TIdDecoderMINE, pois para mim está ok o processo de fazer o decode da string e descompactar.

 

Para quem utiliza as versões mais recentes do delphi, o indy já deve estar atualizado.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Prezados,

 

O ACBr não deve ter dependência da Indy...   para realizar o Decode de Base64 por favor utilizem as Units da Synapse...

 

Unit: synacode.pas

{:Decode string from base64 format.}
function DecodeBase64(const Value: AnsiString): AnsiString;

{:Encodes a string to base64 format.}
function EncodeBase64(const Value: AnsiString): AnsiString;

{:Decode string from modified base64 format. (used in IMAP, for example.)}
function DecodeBase64mod(const Value: AnsiString): AnsiString;

{:Encodes a string to  modified base64 format. (used in IMAP, for example.)}
function EncodeBase64mod(const Value: AnsiString): AnsiString;

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Boa tarde Guilherme,

 

o que ocorre é que o que esta sendo descompactado não é o conteudo do objeto Leitor mas sim o valor que está sendo armazenado na propriedade InfZip, sendo assim, quando o leitor tenta extrair o grupo resNFe do xml retornado ele irá encontrar o conteudo ainda compactado e não identificará a devida TAG, no post acima do seu está uma unit alterada pra atender este requisito, você pode usa-la ou basear-se nela pra fazer a leitura do retorno.

 

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia a todos,

 

Usando a unit pcnRetDistDFeInt alterada por Roberto Godinho, e fazendo mais algumas alterações como por exemplo removendo as units do Indy e usando do Synapse conforme orientação do Daniel, consegui ler um XML de retorno contendo 1 resumo e 49 notas.

 

As alterações feitas por mim afetaram inclusive os fontes: ACBrNFe e ACBrNFeWebServices.

 

Com essas alterações é possível ter tanto o XML do resumo quanto o da nota armazenados em uma propriedade chamada XML e no caso da nota existe a possibilidade ainda de salvar a mesma em disco.

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

  • Consultores

Boa tarde a todos,

 

Tiago, no que diz respeito a disponibilizar os fontes alterados, dependemos de como vamos tratar a questão do ZLibExGZ que esta sendo utilizado no componente.

 

No readme.txt que acompanha os fontes deixa claro que temos permissão de usa-lo sem nenhum problema.

 

Por ser apenas um Moderador e não um Administrador, fico no aguardo de uma decisão dos colegas Administradores.

 

Roberto, se você tiver um retorno contendo um procEventoNFe e puder anexar aqui nesse tópico para que possamos analisar a sua implementação, fico agradecido.

 

Quero aproveitar para agradecer a todos que contribuíram com as correções e melhorias nessa unit.

 

Muito obrigado a todos.

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

Italo, poderia passar as alterações que você efetuou?

 

Quanto ao procEvento eu não tratei esta situação em especifico, apenas adicionei o seguinte:

        if (oLeitorInfZip.rExtrai(1, 'resEvento') <> '')
          or (oLeitorInfZip.rExtrai(1, 'procEventoNFe') <> '') then  <<<--------------
        begin
          ...
        end;

Esta solução apenas identifica e lê  o conteudo do procEvento, já que possui as mesmas tags do resEvento, mas seria bom já tratar assim como você esta fazendo com o procNFe de modo que possa salvar o XML corretamente.

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Roberto,

 

Segue em anexo os arquivos alterados:

 

Este deve ser descompactado dentro da pasta ACBrNFe2:

ACBrNFe2.rar

 

E este dentro da pasta PCN2:

pcnRetDistDFeInt.rar

 

Acredito que o procEventoNFe deva conter mais informações, se possível post como anexo o XML de retorno.

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

Ítalo, estamos no aguardo, obrigado pela atenção.

 

Quanto ao procEventoNfe não recebi nenhum até o momento, seria interessante se nos fornecessem em alguma nota técnica todas as possíveis respostas, pq só me lembro de ter encontrado na nota técnica 2014.002_v1.01, as respostas <resNfe> e <resEvento>.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Roberto,

 

Você notou que o procEventoNFe, traz a solicitação que no caso é uma manifestação do destinatário dando ciência da operação, e no final temos o protocolo da SEFAZ atestando o registro e vinculação do evento a NF-e em questão?

 

Segundo a Nota Técnica esse é o retorno que o Emitente de uma NF-e vai ter ao realizar a consulta, ou seja, o Emitente emite a NF-e o Destinatário realiza a consulta e obtêm um resumo da mesma, realiza a manifestação dando ciência da operação.

 

Se o Emitente da NF-e realizar uma consulta vai obter o procEventoNFe, que no exemplo acima consta o evento de ciência da operação.

 

Bingo!!!! temos ao o canhoto eletrônico, o Emitente vai poder desta forma automatizar a baixa de mercadorias entregues.

 

Não vejo a necessidade de criar uma classe para armazenas todas as informações retornadas pela consulta, mas seria interessante salvar o arquivo cujo nome seria: <ID>-procEventoNFe.xml 

  • 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

Ítalo,

 

Fiz o exemplo abaixo para testar as units alteradas que você anexou

NSU := 0
repeat
  NSU := NSU + 1;
  ACBrNFe1.DistribuicaoDFe(UF, CNPJ, '', NSU);
  MaxNSU := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.maxNSU; 
until (ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.ultNSU = MaxNSU);

O resultado foi 329 consultas, destas 93 vieram com o schema="procNFe_v2.00.xsd" e consequentemente foi salvo o XML completo da NF-e, e 236 vieram com schema="resNFe_v1.00.xsd" e gravando somente o resumo.

 

Nenhuma destas NF-es foi feito manifestação do destinatário dando ciência da operação. Fiz várias vezes o mesmo procedimento e sempre as mesmas NFes veem com procNFe e resNFe, deve existir algum critério para isso não?

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Leonardo,

 

Segundo a NT o XML completo da NF-e só será disponibilizado para o destinatário caso este realize a manifestação por exemplo: Confirmação da Operação.

 

Será que não tem ninguém realizando a manifestação (por exemplo: o escritório de contabilidade) ?

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 Leonardo,

 

Segundo a NT o XML completo da NF-e só será disponibilizado para o destinatário caso este realize a manifestação por exemplo: Confirmação da Operação.

 

Será que não tem ninguém realizando a manifestação (por exemplo: o escritório de contabilidade) ?

 

É verdade, consultei as notas no webservice de NFeConsultaDest e estão manifestadas.

Link para o comentário
Compartilhar em outros sites

Senhores, bom dia.

 

Estou intrigado com o ambiente de homologação.

De repente ele parou de me responder como o esperado, retornando "nenhum documento encontrado" e o valor 0 para último e máximo NSU.

Atualizei os fontes, na quarta-feira, e nada.

Eu já fiz consulta com o último NSU que eu tenho, com um NSU específico que eu já tinha recebido e com 0. Nada.

 

Enquanto isso, em ambiente de produção tudo funciona normalmente.

 

Alguém sabe por que isso acontece?

 

Em anexo estão as consultas e os retornos.

AmbHom.rar

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Guilherme,

 

No meu entendimento esta correto, pois quem esta emitindo nota contra o seu CNPJ em ambiente de homologaçã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

Bom dia Guilherme,

 

No meu entendimento esta correto, pois quem esta emitindo nota contra o seu CNPJ em ambiente de homologação?

 

Então Ítalo, até o NSU 16, que eu consultei em dezembro, havia notas de fornecedores e ainda de outras empresas do mesmo grupo emitidas a nosso pedido.

De qualquer maneira, deveria constar o 16 como NSU máximo no caso de não haver mais notas, correto?

 

Estou acreditando que seja um problema com o WebService, que tem realmente se mostrado instável desde sua implementação, e contando com a possibilidade de que em breve volte a me responder normalmente.

Você concorda?

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

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