Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Boa tarde pessoal do ACBR,

Estou com o fonte do ACBR de fevereiro de 2018, e quando tento exportar 1 NFSe, exporta com sucesso,
quando tento exportar um lote com umas 5 NFSe, ocorre essa mensagem de erro:

Erro Interno: 0
Erro HTTP: 0

exception class ESOAPHTTPException with message 'O tempo limite da operação foi atingido
URL: https://homologacao.ginfes.com.br/ServiceGinfesImpl - SOAPAction: "".

Quando utilizo fonte do ACBR mais antigo de 2017, o funcionamento está ok.
Não posso atualizar o ACBR agora porque não temos mais tempo aqui para testar novamente as possíveis
mudanças e por isso preciso corrigir o problema pontualmente.

Grata

Postado
55 minutos atrás, Alice disse:

Boa tarde pessoal do ACBR,

Estou com o fonte do ACBR de fevereiro de 2018, e quando tento exportar 1 NFSe, exporta com sucesso,
quando tento exportar um lote com umas 5 NFSe, ocorre essa mensagem de erro:

Erro Interno: 0
Erro HTTP: 0

exception class ESOAPHTTPException with message 'O tempo limite da operação foi atingido
URL: https://homologacao.ginfes.com.br/ServiceGinfesImpl - SOAPAction: "".

Quando utilizo fonte do ACBR mais antigo de 2017, o funcionamento está ok.
Não posso atualizar o ACBR agora porque não temos mais tempo aqui para testar novamente as possíveis
mudanças e por isso preciso corrigir o problema pontualmente.

Grata

O erro ocorre na unit ACBrDFeHttpIndy.pas
na exception da função abaixo:

Function TDFeHttpIndy.Enviar

  • Consultores
Postado

Bom dia Alice,

Qual é o valor de SSLLib?

Você sabe dizer se ao enviar um lote com 5 RPS (conforme o seu exemplo) o retorno com o numero do protocolo é retornado?

Pois o Ginfes se utiliza da versão 1 do layout da ABRASF e neste caso ocorre o seguinte:

1 - Envio do Lote;

2 - Retorno com o numero do Protocolo;

3 - Consulta a Situação do Lote (essa consulta poderá ser realizada varias vezes e a quantidade é configurável através da propriedade "Tentativas");

4 - Retorno com o status da situação;

5 - Se status for 3 ou 4 - Consulta o Lote de RPS;

6 - Retorno contendo a lista de rejeições (status 3) ou a lista de NFS-e (status 4).

Como você pode ver precisamos saber em qual momento ocorre o erro.

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
3 horas atrás, Italo Jurisato Junior disse:

Bom dia Alice,

Qual é o valor de SSLLib?

Você sabe dizer se ao enviar um lote com 5 RPS (conforme o seu exemplo) o retorno com o numero do protocolo é retornado?

Pois o Ginfes se utiliza da versão 1 do layout da ABRASF e neste caso ocorre o seguinte:

1 - Envio do Lote;

2 - Retorno com o numero do Protocolo;

3 - Consulta a Situação do Lote (essa consulta poderá ser realizada varias vezes e a quantidade é configurável através da propriedade "Tentativas");

4 - Retorno com o status da situação;

5 - Se status for 3 ou 4 - Consulta o Lote de RPS;

6 - Retorno contendo a lista de rejeições (status 3) ou a lista de NFS-e (status 4).

Como você pode ver precisamos saber em qual momento ocorre o erro.

Bom dia Italo!

Estou utilizando SSLLib = libCapicomDelphiSoap e Ginfes = ABRASF_v1

Daí com essas dicas, conferi o xml que está com retorno 3.

Só que o problema não era a questão de recusar envio, o problema era que ao invés de mostrar a mensagem de erro certa, estava mostrando a mensagem de timeout.

Então mudei o TimeOut de 5000 para 30000. Agora mostra a mensagem de erro correta.

Então se eu for transmitir um lote com, por exemplo, 30 NFSe, terei que ir aumentando mais ainda esse timeout?

 

  • Consultores
Postado

Boa tarde Alice,

A principio não.

Lembre-se que o Timeout não é um tempo de espera obrigatório e sim um tempo que o componente vai ficar aguardando por um retorno antes de retornar o erro de Timeout.

Existem outras propriedades de configuração que você pode alterar e que podem ajudar bastante, são elas:

AguardarConsultaRet - Defini um tempo em milissegundos entre o envio e a consulta a situação do lote.

IntervaloTentativas - Defini um tempo em milissegundos entre uma tentativa e outra.

Entenda como tentativa a consulta a situação do lote para obter o retorno 3 = Lote Processado com Falha ou 4 = Lote Processado com sucesso.

Tentativas - Defini a quantidade de tentativas a serem realizadas.

Caso o retorno ao consultar a situação do lote for 2 = Lote em Processamento o componente aguarda o tempo definido em IntervaloTentativas e tenta novamente até atingir a quantidade de tentativas definidas em Tentativas.

O processo pode parar antes caso o retorno seja 3 ou 4 como dito antes.

Fica difícil de passar valores ideias para essas propriedades, pois pode varia de uma cidade para outra, bem como a qualidade da internet utilizada pelo emitente da nota.

Espero ter ajudado.

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 (editado)
Em 11/05/2018 at 15:49, Italo Jurisato Junior disse:

 

Boa tarde  Italo,

Tanto o fonte do ACBR atual quanto o fonte do ACBR de 2017, não mexi em nenhuma das propriedades 
de ACBrDFeConfiguracoes.pas,  como segue:

IntervaloTentativas = 1000
Tentativas = 5
AguardarConsultaRet = 0
TimeOut = 5000

e no fonte do ACBR de 2017, consigo enviar as mesmas 5 rps do lote normalmente, mesmo com a demora de 20 segundos.
Mas agora, no fonte atual, só envia se mudo o TimeOut para 30000.

Pode dar problemas se aumentar o TimeOut ou isso é mesmo errado? Desculpe se estou sendo insistente.

Editado por Alice
  • Consultores
Postado

Bom dia Alice,

Não existe nenhum problema em você aumentar o valor de Timeout.

Se você configura o Timeout com o valor 5000 (5 segundos) isso faz com que o componente aguarde por no máximo 5 segundos por um retorno do Webservices.

Por outro lado se você aumentar esse tempo para 30 segundos, eu entendo que isso vai ajudar em vez de atrapalhar, pois se o provedor esta passando por uma lentidão e não consegue responder em 5 segundos e sim em 8 segundos, se você deixar um timeout de 5 segundos terás problemas, por outro lado se aumentar vai obter o retorno.

Lembre-se o timeout não faz com que a aplicação fique parada todo esse tempo, na verdade estamos atribuindo um limite máximo de espera.

Se a resposta for obtida em 2 segundos a aplicação vai dar continuidade ao processo.

É diferente de você atribuir o valor 10000 a propriedade AguardarConsultaRet, pois neste caso após o envio e obter o numero do protocolo, o componente vai aguardar o tempo definido em AguardarConsultaRet, que neste exemplo ficaria parado durante 10 segundos antes de prosseguir.

Tentativas se você colocar 10, também não tem problema algum, pois se a resposta vier logo na segunda o componente sai do loop de tentativas pois já obteve a resposta esperada.

IntervaloTentavias que a principio vale 1000 se alterarmos para 5000, o componente vai fazer uma pausa de 5 segundos entre uma tentativa e outra.

Então podemos concluir que os valores de AguardarConsultaRet e IntervaloTentativas quanto maiores forem mais tempo vai levar entre o envio do RPS e a impressão do DANFSE.

Por outro lado os valores de Tentativas e Timeout não prejudica o desempenho da aplicação no que diz a tempo.

É obvio que um provedor que esteja passando por uma lentidão ou é lento mesmo, o tempo entre o envio e a impressão do DANFSE vai ser maior que de outro.

Valores maiores para as propriedades Tentativas e Timeout tem como objetivo evitar que a aplicação seja interrompida pelo fato de não ter conseguido um retorno do provedor.

Não sei se ficou claro.

  • Obrigado 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

Bom dia Italo,

eu tinha entendido sim sobre isso, obrigada pela paciência.
O que acho estranho é por que será que ao transmitir as mesmas rps
em fontes do ACBr de datas diferentes,  um exige aumentar o timeout e o outro fonte, não.
Mesmo assim vou alterar o timeout então.

Obrigada pelas informações!!

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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