Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Durante a atualização de um fonte antigo onde eu utilizava uma Unit para o TEF e agora estou substituindo pelo ACBrTEFD, aconteceu algo estranho devido a Data e Hora da ECF que depois da Homologação do PAF ficou adiantada, nesse momento é 06/02/15 07:11 a data e hora da ECF é 19/02/15 13:50... então as por volta das 17:30 da tarde a ECF já avisava pra tirar redução Z eu nao emiti a redução e ainda assim eu continuei a emitir cupons (não faço ideia como funciona isso, achava que a emissão do cupom era obrigatorio e nao deixaria mais emitir cupons quando passar da meia noite na ECF) eu nao mandei a redução por que não havia percebido a situação, cheguei a achar que era um problema na rotina de verificação do estado da ECF, so agora pensei em olhar a data e hora da ECF... certo ai vem o problema o cupom é emitido normal mas o comprovante do TEF não, no momento de Imprimir o Cupom vinculado o ACBr avisa que a ECF estar fora de linha, ate ai tudo bem o problema  que achei foi que não cancelou a operação TEF, olhando o codigo da rotina ImprimirTransacoesPendentes eu percebi que tem uma verificação do estado da ECF fora do try finally end o que faz com que se houver algum erro nessa verificação o componente so retorna o erro e não executa o CancelarTransacoesPendentes do bloco finally

  if RespostasPendentes.Count <= 0 then
     exit ;

  fTefClass.GravaLog( 'ImprimirTransacoesPendentes' ) ;
  
   Est := EstadoECF;

   if Est <> 'L' then
   begin
      case Est of
        'V', 'P', 'N' : FinalizarCupom( False );  { False não desbloqueia o MouseTeclado }
        'R', 'G'      : ComandarECF( opeFechaGerencial );
        'C'           : ComandarECF( opeFechaVinculado );
      end;

      if EstadoECF <> 'L' then
         raise EACBrTEFDECF.Create( ACBrStr(CACBrTEFD_Erro_ECFNaoLivre) ) ;
   end;

   ImpressaoOk            := False ;
   Gerencial              := False ;
   RemoverMsg             := False ;
   GerencialAberto        := False ;
   MsgAutenticacaoAExibir := '' ;

   GrupoVinc := nil ;
   AgruparRespostasPendentes( GrupoVinc );

   try
     BloquearMouseTeclado( True );

não deveria essa parte do codigo ficar dentro do Try Finally... eu ate pensei em mudar mas achei que deve ter algum motivo pra que o codigo esteja assim.

 

detalhe como esse meu fonte é antigo e eu ja o usava sem o ACBrECF eu fiz uma unit pra mais de uma ECF e ja fazia tratamento de retentar quando nao conseguir fazer qualquer operação do cupom eu apenas adicionei o ACBrECF como mais uma opção de emissão de cupom então eu nao estou utilizando a ACBrTEFD.FinalizarCupom e nem pretendo por que vai dar mais trabalho refazer a rotina de fechamento da venda e eu consegui com facilidade adiconar o ACBrECF como opção pra emitir cupom e estou apenas atendendo a um estado que nao exige PAF mas voltou a exigir TEF.

 

preciso fazer alguma configuraçao no ACBrECF pra que verifique na abertura do cupom se a ECF esta pendente de redução? ou foi erro meu mesmo que nao fiz essa verificação antes de abrir o cupom?

por que se eu nao conseguir iniciar o cupom eu certamente nao terei esse problema da impressão do cupom vinculado, mas eu fiquei pensando como que consegue tratar a queda de energia se ela ocorrer exatamente depois de finalizar o cupom fiscal e antes de iniciar o cupom vinculado ja que o estado da ECF vai ser fora de linha...

 

obrigado e bom dia.. 

  • Consultores
Postado

Tente reproduzir o problema utilizando o programa de exemplo do ACBrTEFD.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado (editado)

Agora a ECF ja virou de dia fiz os testes no ACBrTEFD e a aplicação cancelou a transação o que nao ocorre no meu aplicativo ja que eu nao uso o FinalizarCupom e o TEFDemo travou q eu tive que finalizar por que ficou desabilitado.

 

segue o log em anexo... 

 

eu percebi q ele nao gravou no log a ultima mensagem da tela do TEFDemo: "ECF deve estar em Venda ou Pagamento". por isso em anexo um print da tela.

ACBrTEFD.rar

Editado por dorivansousa
  • Fundadores
Postado

Me desculpe, mas não consegui compreender o problema...

 

Poderia por favor descrever um passo a passo de como reproduzi-lo ?

 

Onde exatamente o problema ocorre ?

O que está acontecendo e o que deveria acontecer ?

 

Se o ACBrECF dispara o exception com a msg "ECF deve estar em Venda ou Pagamento", isso pode significar que você não chamou ACBrECF1.SubtotalizaCupom

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

acredito que esse caso so está ocorrendo por que eu nao estou utilizando o finalizar cupom e é uma venda com cartao que inicia as 23:55 de um dia e vai ser concluida em 00:05 do outro dia por exemplo  e nao emite a redução Z... so ocorreu por que a minha ECF ta com a data adiantada, entao por volta das 17:50 a minha ECF ja marca 23:50 por que depois da homologacao do PAF o homologador ficava adiantando as horas pra simular o fechamento do dia... entao a nao ser que alguem use o ECF 24hs seguidas dificilmente vai passar pelo mesmo problema. 

 

eu estou utilizando todos passos do ACBrECF, eu to estou disparando abrir cupom, vende item, faço a operação com o TEf, subtotalizar, efetuar forma de pagamento, concluir fechamento, imprimir transacoes pendentes... se houver qualquer problema ao subtotalizar, efetuar forma de pagamento, concluir fechamento eu disparo o evento cancelar transacoes pendentes.. nao estou utilizando os eventos do ACBrTEFD para subtotalizar, imprimir forma de pagamento ou  qualquer outra operacao que eu ja estou tratando nas minhas rotinas, deixei somente as que nao faço o tratamento.

 

já conclui todo o roteiro do Pay&Go e nao tive dificuldade pra atender os requisitos, com exeção que tive que capturar as informacoes de Desconto antes de subtotalizar e o saque antes de efetuar a forma de pagamento onde o componente fornece os dados de forma bem simples de acessar, o ACBrECF e ACBrTEFD fazem tudo.

 

eu so inicie o topico pq achava que a ECF nao aceitaria imprimir depois da meia noite sem ter q emitido redução  Z, mas pelo menos  a minha ECF aceita... e eu tive que tratar a imprimirtransacoespendentes com try except ja que a verificacao do status da ecf esta fora do try finally da rotina do componente q especificamente no meu caso pela forma que eu to trabalhando com o componente so apresenta a mensagem ECF fora de Linha e nao cancela as transacoes pendentes.

 

e a mensagem ECF deve estar em venda ou pagamento é disparada pela excecao do imprimir transacoes pendentes.

 

  1. if EstadoECF <> 'L' then
  2. raise EACBrTEFDECF.Create( ACBrStr(CACBrTEFD_Erro_ECFNaoLivre) ) ;
  3.  

e realmente o status da ECF nao é livre e sim de redução Z pendente, ja que ja passou da meia noite...  o ACBrECF ou a minha ECF ta permitindo executar as operações do cupom sem restricao mesmo a ECF estando com redução Z pendente.

o que pode ser erro de tratamento da minha parte que talvez preciso verificar o status da ECF antes de executar as operações.

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