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

Recommended Posts

  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

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.

  • Fundadores
Postado

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.

Postado

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!

  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Italo, não sei se você identificou isto também mas, no retorno, tem a possibilidade de vir o procEventoNFe ao invés do resEvento, não sei qual o criterio pra vir assim, se depende de WS ou não, mas seria bom já tratar esta situação tb.

  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

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.

 

 

 

  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Í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>.

  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Í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?

 

 

 

 

  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

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.

Postado

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

Postado

Bom dia,

 

Italo por favor tire uma dúvida.

 

Agora a Zlib fará parte do pacote ACBR?

 

Ela será inclusa nos programas controlados pelo TortoiseSVN ou teremos que controlar isso separadamente?

Se sim, pode adiantar em que local ela se encaixará na estrutura?

 

Grato.

Postado (editado)

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