Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Galera, depois de muito bater a cabeça, cheguei a conclusão de que pode haver um erro de fluxo no ACBrTEFD com o CliSitef.dll. Quando eu faço uma venda no meu sistema e o pedido está em aberto, chamo uma operação TEF, passo o cartão e, quando aparece a mensagem para retirar o cartão, eu finalizo a aplicação. Ao iniciar meu sistema novamente, eu tenho um procedimento que recupera a venda que estava em andamento e ai começa o problema: Eu verifico que tem uma operaçãoTEF não confirmada e tento ativar o TEF pra confirmar a operação mas, dentro do ACBr, na classe ACBrTEFClass, na linha 1036 tem a procedure "VerificarTransacoesPendentesClass" que, primeiro verifica se o Cupom está com status 'V', 'P', 'N', 'O', se sim, confirma as transações pendentes, caso contrário, cancela todas as transações pendentes. Na minha visão, deveria haver uma procedure que recuperasse as transações pendentes e me desse uma lista para que, após concluido a venda, eu pudesse enviar as confirmações. O fato é que eu não acho correto o fluxo de confirmar/cancelar as transações pendentes uma vez que eu irei continuar a venda. Espero que tenha me feito entender. Se houver outro meio de tratar isso, agradeço, se não, como eu poderia resolver isso de uma forma a não perder a transação pendente? Abraço a todos.

  • Moderadores
Postado

Mas eu acho que não é o fluxo do ACBrTEFD e sim o fluxo do Sitef não é com eles que deveria de ser conversando?

a forma de tu recuperar é  tu criar um arquivo quando iniciar algo com TEF e então abriu de uma queda e ele verifica isso tu cancela e desfaz tudo.

tenho clientes usando isso a anos sem problemas com o SITEF

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

Eu tambem tenho clientes utilizando isso a anos e sem problemas mas, estou fazendo umas mudanças nas formas de recebimento no meu sistema e cheguei nessa dificuldade ai. Quando vc diz: "tu cancela e desfaz tudo", no caso, no meu sistema eu não quero que cancele, eu quero recuperar a transação já feita e continuar dali pra frente para que, quando o usuario fechar a venda novamente, eu só imprima e mande a confirmação mas, no ACBrTEFD, quando eu chamo o Ativar ele já entra cancelando se o cupom (Venda) estiver aberta. Eu não posso alterar o ACBr porque, quando eu atualizar os componentes, sobrepõe o que eu fiz. O ACBrTEFD deveria deixar o programador escolher se quer cancelar tudo ou apenas recuperar os registros das transações pendentes. Vou testar isso e sugerir como alteração amanhã.

  • Fundadores
Postado

Você pode forçar o Cancelamento ou Confirmação... de acordo com o que retorna, com o Estado do ECF...

Veja esse trecho de ACBrTEFDClass.pas   (use a força, veja os fontes)..  Basta retornar o estado que o Cupom está Fechado,  que a transação será Confirmada

procedure TACBrTEFDClass.VerificarTransacoesPendentesClass(aVerificarCupom: Boolean);
var
  wEstadoECF: AnsiChar;
begin
  if aVerificarCupom then
  begin
    try
      wEstadoECF := TACBrTEFD(Owner).EstadoECF;
    except
      wEstadoECF := 'O';
      { Se o ECF estiver desligado, será retornado 'O', o que fará o código
        abaixo Cancelar Todas as Transações Pendentes, porém, pelo Roteiro do
        TEF dedicado, é necessário confirmar a Transação se o Cupom foi
        finalizado com sucesso.
          Criar um arquivo de Status que seja atualizado no Fim do Cupom e no
        inicio do CCD, de maneira que seja possível identificar o Status do
        Documento no ECF indepentende do mesmo estar ou não ligado

          Como alteranativa, é possível implementar código no Evento "OnInfoECF"
        para buscar o Status do Documento no Banco de dados da sua aplicação, e
        responder diferente de 'O',   (Veja exemplo nos fontes do TEFDDemo) }
    end;

    TACBrTEFD(Owner).GPAtual := Tipo;

    // Cupom Ficou aberto?? ...Se SIM, Cancele tudo... //
    if (wEstadoECF in ['V', 'P', 'N', 'O']) then
      CancelarTransacoesPendentesClass
    else
      // NAO, Cupom Fechado, Pode confirmar e Mandar aviso para re-imprimir //
      ConfirmarESolicitarImpressaoTransacoesPendentes;  // <------------------------ AQUI -------------------
  end
  else
    CancelarTransacoesPendentesClass;
end; 

 

1 hora atrás, Daniel Paixao disse:

O ACBrTEFD deveria deixar o programador escolher se quer cancelar tudo ou apenas recuperar os registros das transações pendentes. Vou testar isso e sugerir como alteração amanhã.

Isso foi implementado no "ACBrTEFD.TEFPayGoWeb.OnAvaliarTransacaoPendente"

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.

  • 2 semanas depois ...
Postado

A minha opinião é que não deveria cancelar a operação em momento nenhum. Depois de autorizada, independente do estado do cupom, manda a confirmação e se o usuário quiser cancelar por qualquer motivo faz isso explicitamente.

A ideia de confirmação ou não dependendo o estado do cupom é do tempo do ECF. Se estiver errado por favor me corrijam.

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