Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado (editado)

Bom dia pessoal,

    Estamos efetuando vários tratamentos de erros em caso de perda de comunicação com o ECF. Encontramos o seguinte caso:

 

1 - Efetuei a venda normal de alguns itens

2 - Escolhi fechamento na forma de pagamento DINHEIRO

3 - Pedi para finalizar o cupom fiscal

4 - Passa normalmente pela procedure 'AcbrECF.SubtotalizaCupom'

5 - Entra na procedure 'ACBrTEFDComandaECF' e executa a operação 'opeImprimePagamentos'

6 - No 'finally' da procedure 'ACBrTEFDComandaECF' eu desligo o ECF para simular uma perda de conexão

7 - Irá aparecer na mensagem 'Impressora não responde. Deseja continuar?' - Neste momento eu ligo o ECF, espero alguns segundos e escolho 'Não'

8 - Neste momento, o fluxo entra na unit 'ACBrTEFD.pas' na linha 1458:

if not ImpressaoOk then
begin
    if DoExibeMsg( opmYesNo, CACBrTEFD_Erro_ECFNaoResponde ) <> mrYes then
    begin
        try 
          ComandarECF(opeCancelaCupom); 
        except 
          {Exceção Muda} 
        end ;
        break ;
    end;
end;

    O que de fato está plenamente correto. Irá mostrar a mensagem 'Erro na impressão. Deseja tentar novamente?', mais uma vez, escolho 'Não'

9 - Apartir do fluxo acima é executada a linha 1462 da unit 'ACBrTEFD.pas':

try ComandarECF(opeCancelaCupom); except {Exceção Muda} end ;

10 - O cupom é cancelado normalmente no ECF.

 

    A minha dúvida seria a seguinte, teria algum modo de eu poder capturar na minha aplicação que o tópico (9) foi executado porquê houve uma falha no ECF, conforme sugere a exceção 'CACBrTEFD_Erro_ECFNaoResponde' ?

    O que motivou essa pergunta, é que na nossa aplicação existe um campo no banco de dados que descreve o motivo do cancelamento do cupom. Neste caso em específico, ele teria que entrar como 'Cancelamento forçado' que para nós se refere a algum problema no ECF, mas estamos encontrando alguma dificuldade em capturar uma flag de retorno.

 

    Estou utilizando o componente ACBrTEFD linkado ao componente ACBrECF, em debug, tentei validar se retornava algo nos eventos:

AcbrEcfErrorSubtotalizaCupom
AcbrEcfErrorEfetuaPagamento
AcbrEcfErrorFechaCupom

    Mas em nenhum momento passou por eles.

 

    Estou anexando um pequeno log que ilustra melhor o experimento.

 

    Desde já agradeço as sugestões.

log-teste.TXT

Editado por Intelliware
  • Fundadores
  • Solution
Postado

O ACBrTEFD usa a sua aplicação para efetuar as perguntas e as operações com  o ECF (através de Eventos)...  Então sua aplicação está a par de tudo que o TEFD está tentando fazer...

 

Em: DoExibeMsg( opmYesNo, CACBrTEFD_Erro_ECFNaoResponde )...  você poderia ligar um Flag  indicando o motivo do cancelamento...

 

Em ComandarECF(opeCancelaCupom) você lê o valor do Flag, setado anteriormente,  e grava o motivo do cancelamento...

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

    Perfeito Daniel. No evento:

procedure ACBrTEFDExibeMsg(Operacao: TACBrTEFDOperacaoMensagem; Mensagem: string; var AModalResult: TModalResult);

    Coloquei:

ECFFalhaFechamento := Trim(UpperCase(Mensagem)) = Trim(UpperCase(CACBrTEFD_Erro_ECFNaoResponde));

    Posteriormente efetuei o tratamento para o motivo do cancelamento. Agradeço a ajuda.

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