Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Olá

Sou de Manaus-AM e estou em São Paulo - SP para homologação de PAF-ECF e Certificação TEF Discado ontem 27.07.2011 estive na Seven PDV para realizar a certificação Visanet e acabou dando errado por conta de um problema com o ACBrTEFD, problema esse que eu não consegui resolver naquele momento então tive que remarcar a certificação, pesquisei no fórum e não encontrei ninguém com o mesmo problema a não ser o Rodrigo Baltazar, que reproduzirei em seguida.

Postou 03 fevereiro 2010 - 01:27

Rodrigo Baltazar, em 02 fevereiro 2010 - 11:22 , disse:

Estou com o seguinte problema, quando vou imprimir um cupom tef, e por ventura desligar a impressora e clicar no "NO" ele aparece que a ultima transação foi cancelada mas nao reativa o Gerenciador Padrao, da as seguintes mensagens.

ERRO AO INICIAR TEF DISCADO (22)

depois

TEF DISCADO - REDE INVALIDA (14)

O que sera que esta dando de errado,

Grato,

Rodrigo

ERRO AO INICIAR TEF DISCADO (22)... provavelmente o G.P. ainda está rodando (mas não está respondendo)... ou ficou alguma janela dele que não pode ser fechada...

TEF DISCADO - REDE INVALIDA (14)... Isso ocorre quando no arquivo enviado não há a rede....

Se os erros ainda persistem na versão atual... Por favor me passe um roteiro (passo a passo) de como reproduzi-los, porém usando o Demo do ACBrTEFD.

Esse erro ocorre quando eu chamo um ACBrTEFD.CRT e logo em seguida desligo o ECF (O desligamento é feito quando o foco está com o GP, no momento em que estamos passando o cartão ou digitando os dados do cartão) em seguida quando o GP retorna o foco para a Aplicação Comercial ou para o Demo se o ECF permanecer desligado a AC retorna um NCN (como deveria), mas em seguida apresenta os erros. (22) e em seguida o (14) como descrito a cima.

Pois bem tive o mesmo erro em minha aplicação e resolvi fazer o mesmo teste com o Demo do ACBrTEFD e inicialmente não dava erro, então perdi quase uma tarde na Seven PDV tentando descobrir qual era o erro até que descobri que com o demo também acontece o erro caso o checkBox Múltiplos Cartões esteja marcado (Consequentemente o componente ACBrTEFD.MultiplosCartoe:=true;) e quando o CheckBox está desmarcado corre tudo normalmente.

Descobri também que esse erro está acontecendo em caso de multiploscartões=true porque logo depois que a AC envia um NCN (que esta correto, porque o ECF está desligado) ela envia um ATV (que está correto também) e um CNF (que não deveria ser enviado, porque não há nenhuma transação a confirmar), por isso acontece o erro conforme pode se visto na imagens que estou enviando em anexo.

Nesse momento estou começando a tentar resolver o problema tentando alterar o código fonte do ACBrTEFD, mas preventivamente estou postando esse comentário para o caso de alguém estar passando pelo mesmo problema e também para o caso de alguém já ter uma solução para o problema e possa me ajudar, caso contrario assim que conseguir resolver o problema postarei a solução aqui mesmo.

Abraços a todos.

post-1678-13548987479692.jpg

post-1678-13548987480163.jpg

post-1678-13548987480472.jpg

Postado

Oi pessoal,

Consegui solucionar parcialmente o problema. Alterei o arquivo ACBrTEFDCLass.pas conforme descrito a baixo:

Function TACBrTEFDClass.ProcessarRespostaPagamento( const IndiceFPG_ECF : String;

const Valor : Double) : Boolean ;

var

UltimaTransacao : Boolean ;

ImpressaoOk : Boolean;

ArqBack : String ;

RespostaPendente : TACBrTEFDRespTXT;

SaldoAnterior, SaldoPosterior:Double; ********* criei assas duas variáveis *************

begin

Result := False ;

LerRespostaRequisicao;

GravaLog( Name +' ProcessarRespostaPagamento: '+Resp.Header+' - '+IntToStr(Resp.ID)+

' Indice: '+IndiceFPG_ECF+' Valor:'+FormatFloat('0.00',Valor) );

Result := Resp.TransacaoAprovada ;

with TACBrTEFD(Owner) do

begin

UltimaTransacao := (Valor >= RespostasPendentes.SaldoRestante );

{Se a transação não foi aprovada, faz tratamento e sai}

if not Self.Resp.TransacaoAprovada then

begin

ProcessarResposta; { Exibe a Mensagem ao Operador }

FinalizarResposta( True ) ; { True = Apaga Arquivo de Resposta }

{ Ja tem RespostasPendentes ? }

if UltimaTransacao and ( RespostasPendentes.Count > 0 ) then

begin

if DoExibeMsg( opmYesNo, 'Gostaria de continuar a transação com outra(s) ' +

'forma(s) de pagamento ?' ) <> mrYes then

begin

ComandarECF( opeCancelaCupom );

CancelarTransacoesPendentes;

end;

end;

exit ;

end ;

{...Se está aqui, então a Transação foi aprovada...}

Self.Resp.IndiceFPG_ECF := IndiceFPG_ECF;

{ Cria Arquivo de Backup, contendo inclusive informacoess internas como :

899 - 001 : CNFEnviado (S, N)

899 - 002 : IndiceFPG_ECF : String

899 - 003 : OrdemPagamento : Integer

}

ArqBack := CopiarResposta ;

{ Cria cópia do Objeto Resp, e salva no ObjectList "RespostasPendentes" }

RespostaPendente := TACBrTEFDRespTXT.Create ;

RespostaPendente.Assign( Resp );

RespostasPendentes.Add( RespostaPendente );

ImpressaoOk := true;

SaldoAnterior:=RespostasPendentes.SaldoAPagar; ********** aqui uma delas pega o valor do saldo a pagar antes do componente envias o comando de pagamento para a impressora *****************

{Efetuar o pagamento automaticamente?}

if AutoEfetuarPagamento then

begin

try //Faz tratamento para caso ocorra erro na impressora durante impressão

ImpressaoOk := False ;

while not ImpressaoOk do

begin

try

BloquearMouseTeclado( True ); //

ECFPagamento( IndiceFPG_ECF, Valor );

RespostasPendentes.SaldoAPagar := RoundTo( RespostasPendentes.SaldoAPagar - Valor, -2 ) ;

RespostaPendente.OrdemPagamento := RespostasPendentes.Count + 1 ;

ImpressaoOk := True ;

except

on EACBrTEFDECF do ImpressaoOk := False ;

else

raise ;

end;

if not ImpressaoOk then

begin

if DoExibeMsg( opmYesNo, 'Impressora não responde'+sLineBreak+

'Tentar novamente ?') <> mrYes then

begin

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

break ;

end;

end;

end;

finally

if not ImpressaoOk then

CancelarTransacoesPendentes;

end; //end do "if AutoEfetuarPagamento try ..."

end;

SaldoPosterior:=RespostasPendentes.SaldoAPagar; ********** aqui uma delas pega o valor do saldo a pagar depois do componente envias o comando de pagamento para a impressora *****************

{ Se é Multiplos Cartoes, e ainda Resta SALDO deve enviar um CNF }

if MultiplosCartoes and (RespostasPendentes.SaldoRestante > 0) and (SaldoPosterior

begin

self.CNF;

{ Atualizando Arquivo de Backup com a Informacao de que o CNF já foi enviado }

RespostaPendente.CNFEnviado := True ;

if ArqBack <> '' then

RespostaPendente.Conteudo.GravarArquivo( ArqBack, True ) ; { True = DoFlushToDisk }

FinalizarResposta( true ); { True = Apaga Arquivo de Resposta }

BloquearMouseTeclado( False );

end

else

begin

FinalizarResposta( False ); { False = NAO Apaga Arquivo de Resposta }

if AutoFinalizarCupom then

begin

if ImpressaoOk then

FinalizarCupom; // Não tentar finalizar o cupom caso tenha dado erro na impressão do TEF. Evita mostrar a pergunta de tentar novamente ao operador duas vezes

ImprimirTransacoesPendentes;

end;

end ;

end;

end;

Bem, com essas alterações o componente parou de enviar cnf e se eu usar apenas um cartão na finalização da venda (mesmo com a opção múltiplos cartões habilitada) da certo caso eu desligue o ECF ele envia um NCN e fica tudo normal, porem se eu usa dois ou mais cartões para pagamento e no ultimo eu desligar o ECF e quando o componente informar que o ECF não está respondendo eu disser que não quero continuar ele envia um NCN para a ultima operação aprovada e CNC para as transações anteriores (Até aí tudo certo), porem ele não está apagando o arquivo de backup da primeira transação aprovada, mesmo após ter enviado um CNC o arquivo continua lá isso faz com que o GP seja chamado recursivamente ele só para de ser chamado quando eu apago o arquivo manualmente.

Já tentei fazer outras alterações, mas nada deu certo, caso alguém possa ajudar eu agradeço, estou dependendo somente disso pra fazer a certificação.

Postado

O erro acontece da seguinte forma.

Com o Demo do Tef Aberto e o ECF ligado. Na guia Configuração:

1- Ative o Ecf e o gpTefDial.

2- Desabilite as funções: Múltiplos cartões e Auto finalizar cupom.

Na guia operação:

3-Abra um cupom e venda um item de R$ 1,00.

4-Marque a opção múltiplos cartões.

5-Clique em CRT (O GP será aberto).

6-DESLIGUE O ECF. (Os passos a seguir devem ser realizados com o ECF desligado).

7-Escolha a operadora , passe o cartão ou digite os dados do mesmo e informe o valor de R$ 1,00 e confirme a operação . (O GP será encerrado passando o foco para a AC).

8-Após a operação ser confirmada e o foco retornar para a AC surgirá a mensagem de que a impressora não está respondendo, deseja tentar novamente? sim ou não. Escolha "não". Logo em seguida o erro acontece.

As mensagens de erro são as seguintes:

ERRO AO INICIAR TEF DISCADO (22)

depois

TEF DISCADO - REDE INVALIDA (14).

  • Fundadores
Postado

Há algo estranho...

Se o vc desabilitou o AutoFinalizarCupom, o Demo ACBrTEFD não irá fazer nada quando a transação do TEF for concluída... pois nesse caso cabe a você chamar o FinalizarCupom

Segui os seus passos e o Demo para quando o GP termina e volta o foco para a aplicação... (pelo motivo que descrevi acima)

Mesmo assim continuei e clique em "FinalizarCupom" (com o ECF ainda desligado)

O programa tratou corretamente... enviando a pergunta e na sequencia o NCN

ACBrECF.AbreCupom

ACBrECF.VendeItem

Enviando: ATV ID: 40518

Enviando: CRT ID: 40519

Impressora Epson não está em linha

BloqueiaMouseTeclado = SIM

BloqueiaMouseTeclado = NAO

ComandaECF: opeCancelaCupom

Enviando: ATV ID: 40520

Enviando: NCN ID: 40521

Verifique se você possui a ultima versão dos fontes.. disponível no SVN

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

Olá Daniel,

Estava utilizando a versão mais atual do ACBr, e depois da ultima mensagem que vc enviou fiquei confuso e pensando o mesmo que vc que havia algo estranho....

Refiz os testes e com certeza há um problema sim, mas no passo a passo que te enviei esqueci de mencionar que também é preciso habilitar a função Auto efetua pagamento, se ela estiver ativada o erro acontece, porem resolvi o problema na minha aplicação desabilitando essa opção. Muito obrigado pela atenção. Segue a baixo o passo a passo atualizado, caso vc queira verificar.

O erro acontece da seguinte forma.

Com o Demo do Tef Aberto e o ECF ligado. Na guia Configuração:

1- Ative o Ecf e o gpTefDial.

2- Desabilite as funções: Múltiplos cartões, Auto finalizar cupom e HABILITE a função Auto efetuar pagamento.

Na guia operação:

3-Abra um cupom e venda um item de R$ 1,00.

4-Marque a opção múltiplos cartões.

5-Clique em CRT (O GP será aberto).

6-DESLIGUE O ECF. (Os passos a seguir devem ser realizados com o ECF desligado).

7-Escolha a operadora , passe o cartão ou digite os dados do mesmo e informe o valor de R$ 1,00 e confirme a operação . (O GP será encerrado passando o foco para a AC).

8-Após a operação ser confirmada e o foco retornar para a AC surgirá a mensagem de que a impressora não está respondendo, deseja tentar novamente? sim ou não. Escolha "não". Logo em seguida o erro acontece.

As mensagens de erro são as seguintes:

ERRO AO INICIAR TEF DISCADO (22)

depois

TEF DISCADO - REDE INVALIDA (14).

Abraços.

Postado

Olá layme,

Se o meu problema não for o mesmo que o seu, é muito parecido! Meu problema consiste em:

Ao executar o seguinte teste no TEFDemo.exe (sem alterações no código-fonte da minha parte) que acompanha o ACBr:

- ECF Daruma FS600, GPDireção e Multi cartões;

- Inicia-se um cupom e realiza-se o pagamento do mesmo com dois cartões de crédito;

- Quando a impressão do primeiro CCD-Comprovante de Crédito ou Débito estiver sendo realizada, desligue a impressora;

- O sistema de automação (TEFDemo) vai detectar a falta da impressora e vai perguntar se deseja continuar, responda NÃO;

- Ocorrerá o "Desfazimento" da última operação de pagamento (último cartão);

- E então acontece o PROBLEMA, aparece uma tela com o título "Transação de Cancelamento de Pagamento" solicitando alguns dados creio eu, para Cancelamento da primeira operação de pagamento (primeiro cartão). Esse cancelamento poderá ser realizado ligando-se a impressora e ai fica tudo certo, mas acho que o passo a seguir diz melhor como deveria acontecer;

- Realizando esse mesmo teste juntamento com o suporte a desenvolvedores da Daruma no simulador deles, o problema não acontece. O que acontece na verdade, são dois "Desfazimentos" referentes aos dois pagamentos efetuados com os cartões. Julgo eu ser o correto;

Se alguém poder esclarecer melhor a situação e nos ajudar seria muito legal.

Obrigado!

Postado

Olá _asseinfo,

Você está usando que operadora? Se for o visa (cielo) eu já passei por um problema parecido, pra resolver basta vc acessar a área de configuração do plug and pay e habilitar a opção aceitar desfazimento. caso essa opção esteja desativada toda vez que ele tenta fazer um CNC ele pede a senha e os dados da operação para poder concluir.

Espero ter ajudado.

Abraços.

Postado

Olá Daniel,

Muito obrigado pela atenção e pela resolução do problema. Penso que isso ajuda tanto a mim, quanto a outras pessoas que poderiam vir a passar pelos mesmos problemas.

Irei fazer a atualização.

Abraços.

Postado

Olá Daniel,

Considerando um testes de venda e pagamento com dois cartões, quando falta energia durante a impressão do primeiro vinculado. Por que não são realizados dois "Desfazimentos" referentes aos dois cartões, quando o software volta a funcionar?

Hoje está acontecendo um desfazimento e depois um cancelamento (requer que o usuário informe alguns dados).

Obrigado!

Postado

Em caso de TEF Discado utilizando pagamento com dois cartões, quando a segunda transação é realizada a primeira transação é confirmada e por isso em caso de cancelamento da venda, por queda de energia por exemplo, como sitou o _asseinfo o procedimento correto é que seja feito um NCN da ultima transação aprovada e em seguida um CNC (cancelamento) da (s) transação (ões) anterior (es). portanto pelo que entendi o procedimento descrito pelo _asseinfo está correto.

Olá Daniel,

Considerando um testes de venda e pagamento com dois cartões, quando falta energia durante a impressão do primeiro vinculado. Por que não são realizados dois "Desfazimentos" referentes aos dois cartões, quando o software volta a funcionar?

Hoje está acontecendo um desfazimento e depois um cancelamento (requer que o usuário informe alguns dados).

Obrigado!

Postado

Entendido pessoal, obrigado!

Eu esbarrei nesta situação pois estou realizando testes com o GP da Direção, a qual tem uma nova parceira com a Daruma para disponibilizar um TEF Dedicado. Esse GP usa a mesma forma de comunicação que o discado.

Enfim, para multiplos cartões o funcionamento está apresentando essa diferença (transação com cartão confirmada de uma em uma).

Daniel que é o criador, o que você acha de uma modificação (paralela) para fazer com que essa operação seja possível? Ou seja, no momento de trabalhar com multiplos cartões, o sistema ir acumulando as transações com cartões e confirmar somente no último cartão tudo de uma vez só?

Obrigado!

  • Fundadores
Postado

Estamos com planos de suportar o TEF Direção em breve (talvez 1 mês)...

Mas através do uso da DLL, e não da troca de arquivos... e nesse caso, o fluxo é completamente diferente...

Já existe um tópico aqui no fórum onde um colaborador (MarcioDC) forneceu uma classe já funcional

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

Olá, Usando ACBr TEF juntamente com o GP da Direção...

Estou tentando realizar os testes com a implementação (Modificação) realizada pelo MarcioDC, mas estou com alguns probleminhas...

Ai iniciar o DEMO, eu Ativo o ECF (Daruma FS600) e depois inicializo o "gpCliDTEF" e depois na aba de "Operações" obtenho os erros:

Log de saída no DEMO:

----------------------

Ativar ECF

Inicializando: gpCliDTEF

ACBrTEFD.Inicializar Executado

Inicio de ATV

Cannot create file "". O sistema não pode encontrar o caminho especificado

Inicio de ADM

Access violation at address 00000000. Read of address 00000000

---

Como se pode ver no LOG, ao clicar no botão "ATV" ocorre um "Cannot create...";

Ao clicar no ADM ocorre um "Access violation..."

Alguém poderia me dar uma luz? A DLL DPOSDRV foi copiada da pasta "C:\DPOS8\Bin" e colocada junto com o executável mas não resolveu. Então foi movida para Windows\System32, não resolveu, então tentei registrar a mesma com o regsvr32 e não registra retornando um erro.

Obrigado!

Postado

Olá, Usando ACBr TEF juntamente com o GP da Direção...

Estou tentando realizar os testes com a implementação (Modificação) realizada pelo MarcioDC, mas estou com alguns probleminhas...

Ai iniciar o DEMO, eu Ativo o ECF (Daruma FS600) e depois inicializo o "gpCliDTEF" e depois na aba de "Operações" obtenho os erros:

Log de saída no DEMO:

----------------------

Ativar ECF

Inicializando: gpCliDTEF

ACBrTEFD.Inicializar Executado

Inicio de ATV

Cannot create file "". O sistema não pode encontrar o caminho especificado

Inicio de ADM

Access violation at address 00000000. Read of address 00000000

---

Como se pode ver no LOG, ao clicar no botão "ATV" ocorre um "Cannot create...";

Ao clicar no ADM ocorre um "Access violation..."

Alguém poderia me dar uma luz? A DLL DPOSDRV foi copiada da pasta "C:\DPOS8\Bin" e colocada junto com o executável mas não resolveu. Então foi movida para Windows\System32, não resolveu, então tentei registrar a mesma com o regsvr32 e não registra retornando um erro.

Obrigado!

Pessoal, na verdade já encontrei o problema e não tinha a ver com a DLL. Mas sim, por que haviam códigos que não estavam compilando e no caso, removi a implementação de alguns métodos e isso acabou causando o problema. Desculpem, a pressa em postar um erro que merecia um pouco mais de atenção!

---

O erro que estou encontrando agora é o seguinte: Ao efetuar um pagamento com Cartão, o GP está respondendo com a mensagem de erro "VALOR INVALIDO". Ao compilar o componente para realizar a instalação tive que alterar o tipo de uma variável de PAnsiChar para PWideChar e por conta de uma chamada a DLL.

filemanager.act.php?act=down&id=be251d771b0d9af0043d93227e20d09f

Por favor, alguém que está usando ou tem a intenção de usar o TEFD, se poder me ajudar?

Obrigado!

---

Já descobri o problema... esse erro acontece quando estou no Delphi XE, no delphi 7 não acontece o problema!! Pode ser problema com os tipos de dados.

  • 6 meses depois ...
Postado

Pessoal, estou enfrentando o mesmo problema que o Layme,

baixei por SVN um novo ACBrTEFD porém, só troquei a classe e dcu ACBrTEFDClass, e dai falou que faltava pacotes: "ACBRinformacao" etc...

então resolvio trocar a pasta ACBRSVN inteira, e dai da um monte de problemas! minha Automação nao compila devido erros!

eu gostaria de saber se para atualizar o ACBR eu devo rodar os dpk tudo dinovo ou se é só substituir os .pas e .dcu mesmo

estou com medo de mexer nos componentes atualiza-los e depois da um trabalhao pra voltar ao normal

  • Consultores
Postado

Depende de quando você fez a última atualização.

Se foram adicionados novas propriedades, componentes ou métodos desde a última vez que fez uma atualização, então seria melhor que fizesse isso tudo outra vez.

[]'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

Então peguei e substitui a pasta ACBRTEFD pela nova, e dai deu problema,

dai tive que reinstala o ACBRComum, ACBRSerial, ACBREcf, ACBRPaf, ACBRTcp

dai funcionou legal! Obrigadão gente.

Abraços!

  • 1 ano depois...
  • Moderadores
Postado (editado)

Se a transação já foi confirmada somente a opção de Cancelamento é possível para desfaze-la... ou seja, não há como enviar um desfazimento para ela...

 

Nós que temos que fazer o cancelamento ou o proprio ACBrTEFD o faz? pergunto isso porque fiz venda utilizando 2 cartões. Aí o primeiro confirmou a transação e o segundo está como pendente. Utilizei o ACBrTEFD.CancelaTransacoesPendentes, aí não confirmou a segunda transação, e depois apareceu a tela do plug&pay pedindo documento original (possivelmente para cancelar a primeira transação). Aí informo o número do cupom. Está certo isso? o componente ainda possui o valor da primeira transação gravada?

Editado por Cleber

Cleber C. Ferreira
Analista de Sistemas e Consultor
Email e
Skype: [email protected]
Formiga-MG

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