Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Prezades,

Estou em busca da melhor configuração para o componente de emissão de NFCe de modo a evitar a quantidade notas em contingência emitidas nos clientes. Fiz uma parametrização padrão como mostrada abaixo:

  ACBrNFe1.Configuracoes.Certificados.URLPFX      := '';
  ACBrNFe1.Configuracoes.Certificados.ArquivoPFX  := ACBR_RES + ACBR_CERT_NAME;
  ACBrNFe1.Configuracoes.Certificados.Senha       := '******';
  ACBrNFe1.Configuracoes.Certificados.NumeroSerie := '';
  ACBrNFe1.SSL.DescarregarCertificado;
  //
  with ACBrNFe1.Configuracoes.Geral do
  begin
    //
    SSLLib        := TSSLLib.libOpenSSL;
    SSLCryptLib   := TSSLCryptLib.cryOpenSSL;
    SSLHttpLib    := TSSLHttpLib.httpOpenSSL;
    SSLXmlSignLib := TSSLXmlSignLib.xsLibXml2;
    //
    AtualizarXMLCancelado := True;
    Salvar                := True;
    ExibirErroSchema      := True;
    RetirarAcentos        := True;
    FormatoAlerta         := 'TAG:%TAGNIVEL% ID:%ID%/%TAG%(%DESCRICAO%) - %MSG%.';
    FormaEmissao          := TpcnTipoEmissao.teNormal;
    ModeloDF              := TpcnModeloDF.moNFCe;
    VersaoDF              := TpcnVersaoDF.ve400;
    //
    IdCSC                 := '*****';
    CSC                   := '*****';
    VersaoQRCode          := '*****';
  end;

  with ACBrNFe1.Configuracoes.WebServices do
  begin
    UF := 'XX';
    Ambiente := TpcnTipoAmbiente.taProducao;
    Visualizar := False;
    Salvar     := True;
    AjustaAguardaConsultaRet := True;
    AguardarConsultaRet      := 0;
    Tentativas               := 5;
    IntervaloTentativas      := 500;
    TimeOut                  := 15000;
  end;

  ACBrNFe1.SSL.SSLType := TSSLType.LT_all;

A aplicação recebe diferentes erros nas emissões ao longo do dia e em seguida volta a operar normalmente. Abaixo seguem alguns dos erros mais frequentes:

  Result := (ACBrNFe1.WebServices.Enviar.cStat = SEM_RETORNO_SEFAZ) and
   // erros de conexão enviar em modo off-line
   ((pos('12007', motivoErro) > 0) or                       // erro de conexão
    (pos('12002', motivoErro) > 0) or                       // timeout
    (pos('12029', motivoErro) > 0) or                       // limite de tempo de conexão
    (pos('12157', motivoErro) > 0) or                       // erro no suporte a canais seguros
    (pos('10091', motivoErro) > 0) or                       // 500 - network subsystem is unusable
    (pos('11001', motivoErro) > 0) or                       // 500 - host not found
    (pos('10054', motivoErro) > 0) or                       // Connection reset by peer
    (pos('TIMED OUT', motivoErro.ToUpper) > 0) or           // timeout
    (pos('ERRO NAO CATALOGADO', motivoErro.ToUpper) > 0) or // erros de tratamento do webservice
    (pos('SERVICO PARALISADO', motivoErro.ToUpper) > 0))    // Servico Paralisado Momentaneamente

Hoje me deparei com mais esse que acabou por não emitir a nota, pois ainda não tratei para entrar em contingência (lista acima):

Erro Interno: 11004
Erro HTTP: 500
URL: https://nfce.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx
Valid name, no data record of requested type

Gostaria de saber se estou utilizando a configuração ideal, se tem alguma melhor. Por que esses problemas estão acontecendo em todos os clientes que estão colocando essa nova aplicação com ACBr. Ou seja, não é algo isolado. Mesmo no ambiente de testes e desenvolvimento também recebo diversos erros de emissão que fazem a aplicação entrar em contingência.

Saudações,

Rafael Glauber

  • Fundadores
  • Solution
Postado

A questão de entrar ou não em contingência.. depende de vários outros fatores... SEFAZ, internet do cliente, etc..

O principal fator, do lado da aplicação.. será a definição do TimeOut.. que é o tempo que a aplicação desiste de esperar pela resposta da SEFAZ...

    TimeOut                  := 15000;

No seu caso, parece OK...

Mas é fundamental, ter alguma forma de configurar isso em tempo de execução... (não deixe essas configurações chumbadas em hardcode)

47 minutos atrás, ProtonSistemas disse:

A aplicação recebe diferentes erros nas emissões ao longo do dia e em seguida volta a operar normalmente. Abaixo seguem alguns dos erros mais frequentes:

Use o evento: OnTransmitError, para pegar erros de Transmissão

49 minutos atrás, ProtonSistemas disse:
  ACBrNFe1.SSL.SSLType := TSSLType.LT_all;

Isso está ERRADO... Use apenas LT_TLSv12

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.

  • Membros Pro
Postado

Muito bom, mas surgiu uma duvida, o evento OnTransmiteError deve prever isso?

  Result := (ACBrNFe1.WebServices.Enviar.cStat = SEM_RETORNO_SEFAZ) and
   // erros de conexão enviar em modo off-line
   ((pos('12007', motivoErro) > 0) or                       // erro de conexão
    (pos('12002', motivoErro) > 0) or                       // timeout
    (pos('12029', motivoErro) > 0) or                       // limite de tempo de conexão
    (pos('12157', motivoErro) > 0) or                       // erro no suporte a canais seguros
    (pos('10091', motivoErro) > 0) or                       // 500 - network subsystem is unusable
    (pos('11001', motivoErro) > 0) or                       // 500 - host not found
    (pos('10054', motivoErro) > 0) or                       // Connection reset by peer
    (pos('TIMED OUT', motivoErro.ToUpper) > 0) or           // timeout
    (pos('ERRO NAO CATALOGADO', motivoErro.ToUpper) > 0) or // erros de tratamento do webservice
    (pos('SERVICO PARALISADO', motivoErro.ToUpper) > 0))    // Servico Paralisado Momentaneamente

 

  • Moderadores
Postado

No evento onTransmitError, você pode capturar  os possíveis erros para realizar o tratamento da forma que deseja:

if (HttpError in [12007, ..., ...]) then

...

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

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