Ir para conteúdo
  • Cadastre-se

Leonardo Fossati Silveira

Membros Pro
  • Total de ítens

    19
  • Registro em

  • Última visita

Tudo que Leonardo Fossati Silveira postou

  1. Olá pessoal, sabem me informar qual o comando hexadecimal para a abertura de gaveta utilizando a impressora TecToy Q4?
  2. Boa tarde pessoal, estamos iniciando a implementação do TEF através do ACBR. Somos do Rio Grande do Sul e tem uma grande chance de se tornar obrigatório no inicio de abril. Como temos muitos mini-mercados pequenos, a escolha da melhor intermediária em termos de custo mensal para o cliente final é muito importante. Vocês tem uma idéia de valores para me passar, ou se sabem de alguma solução que seja gratuíta? Ou todas são compatíveis em termos de valores? Tenho medo de integrar com uma determinada solução e perder para um concorrente que tenha um tef mais barato. Obrigado.
  3. Boa tarde, estamos atrasados com o tef e nossa solução aqui no rio grande do sul. Gostaria que me orientassem com um pequeno checklist sobre o que precisamos fazer para utilizar a solução do acbr integrada com o tef pay go. Obs. Eu tentei contato com o tef pay de todas as formas mas não consegui. Obrigado
  4. Ola, obrigado pelo retorno. Adicionei o parâmetro, mas mesmo assim o problema ocorre. Até mesmo se eu não chamar os métodos de imprimir texto, como no exemplo abaixo: ETQ.Ativar() ETQ.IniciarEtiqueta() ETQ.Imprimir(1) ETQ.FinalizarEtiqueta(1,0) ETQ.Desativar()
  5. Boa tarde, pessoal, estamos iniciando o uso da acbr. Nossos primeiros testes foram como MonitorPlus e comandos de etiquetas. O erro ue aparece é "ERRO: "" is an invalid integer" no comando ETQ.Imprimir(). Isto ocorre até mesmo com os exempos da documentação. Segue abaixo em anexo como configuramos o monitor.
  6. Certo, obrigado pela atenção. Vou entrar em contato com eles e qualquer coisa, reporto aqui.
  7. Sim, foi isto que pensei. Mas não é o que o roteiro solicita e por isso fiquei em dúvida. Pelo que entendi, eles querem que a transação seja RECUPERADA, já que ficou pendente mas foi aprovada e neste caso,bastaria finalizar e reimprimir. Faz sentido isso?
  8. Pessoal, estou implementando o roteiro de homologação TEF junto a Cappta, e estou com a seguinte dúvida: Na sequência 19, solicitam o desligamento do computador, ligar o pc e manter a impressora desligada e tentar enviar o comando "Finalizar" e posteriormente tentar reimprimir o cupom. Pelo que entendi, o objetivo do teste é tentar "recuperar" a transação abortada pelo desligamento. Entretanto, utilizando os componentes acbr, o mecanismo naturalmente chama o "cancelamento" da operação pendente (ao iniciar a aplicação e ativar o componente). A implementação que desenvolvi, seguiu os padrões sugeridos nos exemplos tef constantes no svn da acbr. Gostaria de uma orientação inicial: existe algum mecanismo pronto para este teste (seq. 19) ? Porque o cancelamento é invocado? Se existe algum procedimento que devo implementar, peço orientações. Segue abaixo a descrição do roteiro seq. 19. -Realize uma transação com cartão de crédito. -Opção À Vista -Após receber o Retorno de aprovação, no momento em que começar a imprimir o cupom, reset o computador, logo após desligue a impressora. -Ligue o computador, deixando desligada a impressora. -Abra a Automação envie a função de “Finalizar” para que a transação seja confirmada. -Após tratar a transação ligue a impressora. -Acesse as funções administrativas do Gerenciador Cappta através da Automação e solicite a reimpressão do último comprovante. Leonardo
  9. Talvez possa ser alguma versão nova da Cappta, alguma configuração específica que eles fizeram no meu ambiente ou por ser um ambiente de testes. A alteração que fiz foi no arquivo ACBrTEFDClass.pas, linha 1341 (em anexo). Gostaria de saber se esta modificação está correta ou se pode quebrar alguma outra parte do código visto que ainda não domino todos os fontes. ACBrTEFDClass.pas
  10. Consegui descobrir, e acho que isso vai colaborar com todos: Imagino que o problema estava no padrão utilizado para a geração do arquivo intpos, pelo gerenciador padrão. Usamos a solução Cappta, que intermedia e encapsula os demais gerenciadores padrões. Talvez a forma como eles criaram este arquivo, não esteja sendo tratada pelas classes acbrtef. Vamos aos fatos: 1. Problema: o método "ImprimirRelatorio" não era chamado de forma alguma. Como o envio CNF está dentro do método "ImprimirRelatorio" então a transação também não estava sendo confirmada.; Veja o método ProcessarResposta (ACBrTEFDClass.pas, linha 2042) : procedure TACBrTEFDClass.ProcessarResposta ; var RespostaPendente: TACBrTEFDRespTXT; begin VerificarIniciouRequisicao; GravaLog( Name +' ProcessarResposta: '+Req.Header ); TACBrTEFD(Owner).EstadoResp := respProcessando; if Resp.QtdLinhasComprovante > 0 then begin { Cria cópia do Objeto Resp, e salva no ObjectList "RespostasPendentes" } RespostaPendente := TACBrTEFDRespTXT.Create ; try RespostaPendente.Assign( Resp ); TACBrTEFD(Owner).RespostasPendentes.Add( RespostaPendente ); ImprimirRelatorio ; with TACBrTEFD(Owner) do begin if Assigned( OnDepoisConfirmarTransacoes ) then OnDepoisConfirmarTransacoes( RespostasPendentes ); end ; finally TACBrTEFD(Owner).RespostasPendentes.Clear; end; end else if Resp.TextoEspecialOperador <> '' then TACBrTEFD(Owner).DoExibeMsg( opmOK, Resp.TextoEspecialOperador ) end; Percebi que Resp.QtdLinhasComprovante estava zerado. Logo imaginei que o comprovante não estava sendo gerado. Então fui mais a fundo, em busca dos locais onde o comprovante é montado e enviado para a impressão. Encontrei o método "ConteudoToProperty" (ACBrTEFDClass.pas, linha 1252) e percebi que é este método que lê o arquivo de resposta do gerenciador padrão (intpos) e monta os resultados nas estruturas em mémória do objeto da classe ACBrTEFDClass. As identificações do arquivo intpos que interferem no atributo QtdLinhasComprovante são: 28, 710,712. Compreendi, então que 710 é o cupom reduzido. E o 712 é um comprovante que só é impresso caso NÃO exista cupom reduzido. Para identificar se tem ou não cupom reduzido, o algorítmo utiliza a variável TemReduzido. Esta variável é preenchida no seguinte momento: (ACBrTEFDClass.Pas, linha 1339) 710 : begin TemReduzido := True; fpImagemComprovante1aVia.Clear; fpQtdLinhasComprovante := Linha.Informacao.AsInteger; end; Se o algorítmo entrar neste bloco de código (710), então a varíavel será marcada como true e o bloco 712 será ignorado. Veja o bloco 712: 712 : begin if not TemReduzido then begin fpImagemComprovante1aVia.Clear; fpQtdLinhasComprovante := Linha.Informacao.AsInteger; end; end; Agora posso explicar o que estava acontecendo comigo: 1. o meu arquivo intpos, contém o bloco 710, MESMO NÃO TENDO CUPOM REDUZIDO. Ele apenas gera as linhas, mas deixa em branco. A linha que indica o número de linhas do comprovante (710) informa o valor ZERO. Como a váriavel "TemReduzido" é setada para true sempre que entra no bloco 710, no meu caso ela era interpretada como se o cupom existisse, pois o bloco 710 existe no meu intpos, apesar de estar vazio. No bloco 710 a variável lfpQtdLinhasComprovante é setada para zero. Isso faz com que o bloco 712 seja ignorado e na rotina ProcessarResposta, o método "ImprimriRelatorio" seja ignorado também. Resumo: a classe ACBRTEFdclass considera que TEM cupom reduzido sempre que existir o 710 no intpos, independente do seu conteúdo. No meu caso, o arquivo contém o 710, mesmo não tendo cupom reduzido, apenas indicando zero linhas de comprovante. Veja o intpos.001 gerado pelo meu gerenciador padrão (observe o 710): 000-000 = ADM 001-000 = 59707 004-000 = 0 009-000 = 0 010-000 = REDECARD-L0500 011-000 = 99 012-000 = 017546 013-000 = 017546 015-000 = 2012163546 016-000 = 2012163548 022-000 = 20122013 023-000 = 163546 027-000 = 12015647028 028-000 = 17 029-001 = "" 029-002 = "" 029-003 = "---------------------------------------" 029-004 = " EMPRESA 1 FILIAL 1" 029-005 = " 00.000.000/0000-00" 029-006 = "" 029-007 = " CUPOM DO CLIENTE" 029-008 = "---------------------------------------" 029-009 = " REDECARD" 029-010 = " CANCELAMENTO" 029-011 = "COMPROV: 123456789 VALOR: 9.999,99" 029-012 = "" 029-013 = " CUPOM DA LOJA" 029-014 = "---------------------------------------" 029-015 = " REDECARD" 029-016 = " CANCELAMENTO" 029-017 = "COMPROV: 123456789 VALOR: 9.999,99" 030-000 = APROVADA: 017546 IMPRIMINDO... 040-000 = MAESTRO 710-000 = 0 711-001 = "" 712-000 = 6 713-001 = "" 713-002 = " CUPOM DO CLIENTE" 713-003 = "---------------------------------------" 713-004 = " REDECARD" 713-005 = " CANCELAMENTO" 713-006 = "COMPROV: 123456789 VALOR: 9.999,99" 714-000 = 5 715-001 = " CUPOM DA LOJA" 715-002 = "---------------------------------------" 715-003 = " REDECARD" 715-004 = " CANCELAMENTO" 715-005 = "COMPROV: 123456789 VALOR: 9.999,99" 999-999 = 0 SOLUÇÃO A variável TemReduzido somente será setada para TRUE se existir o bloco 710 e TAMBÉM o número nele indicado for MAIOR QUE ZERO: 710 : begin TemReduzido := True; TemReduzido := Linha.Informacao.AsInteger >0; fpImagemComprovante1aVia.Clear; fpQtdLinhasComprovante := Linha.Informacao.AsInteger; end; Fiz esta correção na classe e passou a funcionar perfeitamente. Se minha conclusão estiver errada, por favor, me informem. Leonardo
  11. Sim, estou realizando os seguintes passos: 1. abro o programa TEFdemo.exe; 2. inicializo a impressora e o gerenciador padrão tefdial; 3. clico no botão "ADM"; 4. o gerenciador padrão é invocado na tela administrativa; 5. escolho a opção "Cancelamentos"; 6. informo senha, valor, n. controle e insiro e retiro o cartão; 7. neste momento, o gerenciador padrão abre uma tela informando que a transação foi aprovada e o metodo "OnExibeMensagem" é chamado. A mensagem é "APROVADA: 017503 IMPRIMINDO..."; 8. mensagem "adm executada com cesso"; 9. Neste momento, a tela do gerenciador padrão segue aberta e nada foi impresso. Se eu clicar no botão "Imprimir Transações Pendentes", nada acontece pois avariável RespostasPendentes.Count está igual a zero. 10. Se eu clicar no botão CNF, o comando de confirmação é invocado, o gerenciador padrão se fecha (o que está correto), mas nada foi impresso.
  12. Sim. Porém em nenhum momento a operação CNF foi executada e, consequentemente a tela do gerenciador padrão não foi fechada, aguardando a confirmação. Não sei se o demo faz isso, mas sei que a função ImprimirRelatorio gera o comando para impressão e executa o CNF. No caso do cancelamento via ADM, nem a impressao nem o CNF são chamados. Na linha de código abaixo, a mensagem " APROVADA: 017503 IMPRIMINDO..." é invocada no código que está em vermelho (abaixo). Mesmo que a mensagem informe que está imprindo, nenhum comando de impressão é chamado e o processo finaliza ali. O demo imprime o cancelamento via ADM? procedure TACBrTEFDClass.ProcessarResposta ; var RespostaPendente: TACBrTEFDRespTXT; begin VerificarIniciouRequisicao; GravaLog( Name +' ProcessarResposta: '+Req.Header ); TACBrTEFD(Owner).EstadoResp := respProcessando; if Resp.QtdLinhasComprovante > 0 then begin { Cria cópia do Objeto Resp, e salva no ObjectList "RespostasPendentes" } RespostaPendente := TACBrTEFDRespTXT.Create ; try RespostaPendente.Assign( Resp ); TACBrTEFD(Owner).RespostasPendentes.Add( RespostaPendente ); ImprimirRelatorio ; with TACBrTEFD(Owner) do begin if Assigned( OnDepoisConfirmarTransacoes ) then OnDepoisConfirmarTransacoes( RespostasPendentes ); end ; finally TACBrTEFD(Owner).RespostasPendentes.Clear; end; end else if Resp.TextoEspecialOperador <> '' then TACBrTEFD(Owner).DoExibeMsg( opmOK, Resp.TextoEspecialOperador ) end;
  13. -- 18/12 16:23:04:146 - TEF_DIAL Inicializado -- 18/12 16:23:04:148 - TEF_DIAL CancelarTransacoesPendentesClass -- 18/12 16:23:04:150 - TEF_DIAL IniciarRequisicao: ATV -- 18/12 16:23:04:154 - TEF_DIAL FinalizarRequisicao: ATV, Fechando arquivo: C:\TEF_DIAL\req\intpos.tmp -- 18/12 16:23:04:187 - TEF_DIAL FinalizarRequisicao: ATV, Renomeando: C:\TEF_DIAL\req\intpos.tmp para: C:\TEF_DIAL\req\intpos.001 -- 18/12 16:23:04:189 - TEF_DIAL FinalizarRequisicao: ATV, Aguardando: C:\TEF_DIAL\resp\intpos.sts -- 18/12 16:23:04:447 - TEF_DIAL FinalizarRequisicao: ATV, Fim da Espera de: C:\TEF_DIAL\resp\intpos.sts Recebido -- 18/12 16:23:04:462 - TEF_DIAL FinalizarRequisicao: ATV, Verificando conteudo de: C:\TEF_DIAL\resp\intpos.sts -- 18/12 16:23:10:587 - TEF_DIAL IniciarRequisicao: ADM -- 18/12 16:23:10:589 - TEF_DIAL IniciarRequisicao: ATV -- 18/12 16:23:10:593 - TEF_DIAL FinalizarRequisicao: ATV, Fechando arquivo: C:\TEF_DIAL\req\intpos.tmp -- 18/12 16:23:10:630 - TEF_DIAL FinalizarRequisicao: ATV, Renomeando: C:\TEF_DIAL\req\intpos.tmp para: C:\TEF_DIAL\req\intpos.001 -- 18/12 16:23:10:632 - TEF_DIAL FinalizarRequisicao: ATV, Aguardando: C:\TEF_DIAL\resp\intpos.sts -- 18/12 16:23:11:671 - TEF_DIAL FinalizarRequisicao: ATV, Fim da Espera de: C:\TEF_DIAL\resp\intpos.sts Recebido -- 18/12 16:23:11:676 - TEF_DIAL FinalizarRequisicao: ATV, Verificando conteudo de: C:\TEF_DIAL\resp\intpos.sts -- 18/12 16:23:11:686 - TEF_DIAL FinalizarRequisicao: ADM, Fechando arquivo: C:\TEF_DIAL\req\intpos.tmp -- 18/12 16:23:11:730 - TEF_DIAL FinalizarRequisicao: ADM, Renomeando: C:\TEF_DIAL\req\intpos.tmp para: C:\TEF_DIAL\req\intpos.001 -- 18/12 16:23:11:735 - TEF_DIAL FinalizarRequisicao: ADM, Aguardando: C:\TEF_DIAL\resp\intpos.sts -- 18/12 16:23:12:493 - TEF_DIAL FinalizarRequisicao: ADM, Fim da Espera de: C:\TEF_DIAL\resp\intpos.sts Recebido -- 18/12 16:23:12:498 - TEF_DIAL FinalizarRequisicao: ADM, Verificando conteudo de: C:\TEF_DIAL\resp\intpos.sts -- 18/12 16:23:12:504 - TEF_DIAL LerRespostaRequisicao: ADM, Aguardando: C:\TEF_DIAL\resp\intpos.001 -- 18/12 16:23:46:713 - TEF_DIAL LerRespostaRequisicao: ADM, Fim da Espera de: C:\TEF_DIAL\resp\intpos.001 Recebido -- 18/12 16:23:46:719 - TEF_DIAL LerRespostaRequisicao: ADM, Verificando conteudo de: C:\TEF_DIAL\resp\intpos.001 -- 18/12 16:23:46:726 - TEF_DIAL ProcessarResposta: ADM -- 18/12 16:23:46:731 - TEF_DIAL DoExibeMsg: Oper: opmOK Mensagem: APROVADA: 017503 IMPRIMINDO... -- 18/12 16:23:51:553 - TEF_DIAL FinalizarResposta: ADM
  14. Sim, os testes estão sendo feitos utilizando o demo do ACBrTEFD. O problema ocorre sim no demo. Informamos o tipo gpTEfDial.
  15. Pessoal, estamos iniciando os roteiros de homologação utilizando as classes acbr. Estamos nos baseando no exemplo TEFDemo para implementarmos a nossa solução. Ao realizarmos o item que fala do cancelamento através da ADM, tivemos o seguinte problema: 1. realizamos uma transação normal de débito e tudo ocorre perfeitamente; 2. acionamos a ADM do gerenciador padrão; 3. selecionamos a opção "Cancelamento"; 4. informamos o valor da transação a ser cancelada; 5. informamos o número de controle da transação a ser cancelada; 6. neste momento, a tela do gerenciador padrão não é finalizada e fica aguardando a confirmação. Ao investigar os fontes, percebi que aparentemente o código está pulando o comando CNF pois não chama a rotina ImprimirRelatorio. Se clicar manualmente no botão CNF, o gerenciador padrão se fecha e o controle volta para o app TEFDemo, indicando "ADM realizada com sucesso", mas nenhum comprovante aparece na impressora. No aguardo de uma orientação, Leonardo Silveira
×
×
  • 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.

The popup will be closed in 10 segundos...