Jump to content

Delphi chamada_delphi.png acbr.png

C6 chamada_c6.png botao.png

Função Que Testa Conexão Internet Para Emitir Nfce


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

Recommended Posts

Olá, amigos

 

Qual a rotina que utilizam para verificar se tem conexão com internet?

Antes de emitir uma nfce, preciso desta informação para setar o modo de transmissão(online,offline).

As rotinas encontradas via google são muito antigas, fiquei na dúvida.

Seria legal se acbrutil tivesse esta function.

 

Como é o fluxo da emissão da nfce adotada pelos colegas? Acho que seria uma boa discussão

Por que agora temos uma nova variável no componente acbrnfe: o cliente esperando o ticket.

Na nfe, poderia emitir depois e entregar, mas agora todo o processo tem que ser na presença do cliente.

 

Agora quando fechamos o cupom, temos que testar a conexão, para setar o modo de transmissão, como falei acima.

E na hora do envio a mesma coisa, e se a demora da resposta do sefaz for muito grande, ou pior enviar e não retornar o protocolo

no fim, como vamos proceder. A opinião dos colegas seria muito importante. 

 

Vocês monitoram como a presença ou não da conexão de internet?

Link to comment
Share on other sites

  • Consultores

Boa noite!

é só tratar o EnviarLote para pegar o retorno 

veja que ele vai retornar senão tem conexão e assim você já sabe que deve de fazer offline!

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • Membros Pro

Também estamos desenvolvendo a NFCE, e seguimos o seguinte fluxo: Tenta enviar, caso não consiga (problema de comunicação) ou retorne algum erro da receita, já gera em contingência e imprime o cupom. O importante é o cliente não ficar esperando no caixa, este processo tem que ser muito rápido, o cliente não pode ficar aguardando no caixa, imagine em um supermercado

Link to comment
Share on other sites

  • 2 weeks later...

Juliomar,

 

Eu tentei assim:

 if acbrnfe1.enviarlote(1,true,true) then

     imprimi normal

else

   altera para modo off-line

   gerar novamente

   imprimir

mas no primeiro if, ela dá erro e interrompe o processo.

Não querendo ser chato, mas pode me dar uma luz neste processo, se possível com um pedaço de código?

Marcio

 

Não 

Link to comment
Share on other sites

  • Consultores

try except

pega  o retorno e trata para trabalhar offline!

assim que tiver um tempo eu pesquiso aqui e posto os links dos tópicos que tem código de exemplos aqui mesmo!

  • Like 1
Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • 1 year later...
Em 14/01/2015 at 08:58, Juliomar Marchetti disse:

try except

pega  o retorno e trata para trabalhar offline!

assim que tiver um tempo eu pesquiso aqui e posto os links dos tópicos que tem código de exemplos aqui mesmo!

Juliomar, eu pego o erro e trato ele, porem, hj ocorreu um caso em um cliente ref um erro que eu ainda não tratava.

Não posso simplesmente emitir ofline caso ocorra um except, devo emitir offline somente em caso de falta de internet. Se for outro problema, acredito que dev resolver internamente, pois depois, ao enviar a NFCe para o sefaz, devo usar o mesmo XML(por isso que guardo o XML no banco de dados).

Eu trato da seguinte forma:

try

          ACBrNFe1.Configuracoes.Geral.FormaEmissao := teNormal;
          ACBrNFe1.Enviar(vNumLote, False, True);
          ACBrNFeDANFCeCupom.ViaConsumidor := True;

          // em caso de erro, emitir em OffLine
          // NFCe ficará em posição para enviar ao SEFAZ mais tarde
        except
          on E: Exception do
          begin

            if (Copy(E.Message, Pos('Erro HTTP:', E.Message), 10)
              = 'Erro HTTP:') or
              (Copy(E.Message,
              Pos('O nome ou o endereço do servidor não pôde ser resolvido',
              E.Message), 55)
              = 'O nome ou o endereço do servidor não pôde ser resolvido') then
            begin
				imprimo offline
			end
			else
            // se o erro não for falta de internet
            begin

              frmAlertasUsuarios.ExibirAlerta('FORM | MONITOR NFE', 'ERRO',
                'Ocorreu o seguinte Erro: ' + #13, E.Message);
              frmAlertasUsuarios.ShowModal;

Existe uma forma de o próprio componente ACBRNFe testar a conexão? ou outro meio eficaz?

Edited by CertaSolucoes
Link to comment
Share on other sites

CertaSolucoes, a muito tempo desenvolvi essa thread,

ve sê serve pro seu proposito.

 

Exemplo de Uso: 

{Procedure para receber o evento da thread}
procedure OnInternetChange(LANStatus:TLANStatus;InternetStatus:TInternetStatus;xMsg:String='');
BEGIN
  if InternetStatus = tiOnline then
  begin
    {Configura Acbr Modo online}
    {etc}
  end
  else
  begin
    {Configura Acbr Modo offline}
    {etc}
  end;
END;

procedure ...
var CheckConnect : TThreadCheckConnection; 
begin
...
  CheckConnect  :=  TThreadCheckConnection.GetInstance;
  
  with CheckConnect do
  begin
    OnStatusChange  :=  OnInternetChange;
    Start;
  end;
  
...
end;

Acredito que ainda funcione.

Thread.CheckConnection.pas

  • Like 1
Link to comment
Share on other sites

  • 1 month later...
Em 02/06/2016 at 11:51, William Mattos disse:

CertaSolucoes, a muito tempo desenvolvi essa thread,

ve sê serve pro seu proposito.

 

Exemplo de Uso: 

{Procedure para receber o evento da thread}
procedure OnInternetChange(LANStatus:TLANStatus;InternetStatus:TInternetStatus;xMsg:String='');
BEGIN
  if InternetStatus = tiOnline then
  begin
    {Configura Acbr Modo online}
    {etc}
  end
  else
  begin
    {Configura Acbr Modo offline}
    {etc}
  end;
END;

procedure ...
var CheckConnect : TThreadCheckConnection; 
begin
...
  CheckConnect  :=  TThreadCheckConnection.GetInstance;
  
  with CheckConnect do
  begin
    OnStatusChange  :=  OnInternetChange;
    Start;
  end;
  
...
end;

Acredito que ainda funcione.

Thread.CheckConnection.pas

William, vou testar e posto aqui os resultados.

Obrigado.

Link to comment
Share on other sites

Certa pah, só tem um problema com esse raciocinio de resolver o problema e não enviar offline por qualquer erro não tratado, tambem penso assim, que deve ser corrigido, contudo isso não é viavel para nfce pois o cliente não espera que ele seja corrigido para depois fazer a compra (são muito impacientes).

O que faço é enviar offline, reportar o erro e tratar para que não volte a suceder.

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.