DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Você também pode acessá-lo através de Créditos DevMedia.  Clique aqui para saber mais!

Video: Cartão de crédito: Desenvolvendo venda TEF - Curso PAF - ECF com Delphi 7 e Dlls dos fabricantes - aplicação completa - Parte 18

Neste vídeo aula, será desenvolvida a parte do TEF que se refere a venda com cartão de crédito ou débito em nosso projeto.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

Título: Cartão de crédito: Desenvolvendo venda TEF - Curso PAF - ECF com Delphi 7 e Dlls dos fabricantes - aplicação completa - Parte 18

 

Tempo: 31:32 min.

 

Míni Resumo: Neste vídeo aula, será desenvolvida a parte do TEF que se refere a venda com cartão de crédito ou débito em nosso projeto. Seguindo o exemplo do TEF administrativo criado no vídeo anterior, nós iremos criar as funções para realizar a comunicação com o gerenciador padrão, analisar o arquivo de retorno do mesmo, e na seqüência nós iremos concluir o fechamento do cupom fiscal para posterior imprimir o comprovante vinculado de venda a cartão. Tudo isso seguindo as regras estabelecidas no roteiro certificação do TEF Discado.

 

Tecnologias utilizadas: Delphi 7, Firebird 2.1.

 

Exemplos construídos: Comunicação com gerenciador padrão para RedTEF.

 

Palavras chaves: PAF-ECF, TEF, ASSINATURA EAD, HOMOLOGAÇÃO.

Listar todos os posts de PAF - ECF com Delphi e DLLs dos fabricantes - Aplicação completa

Luis Carlos Godinho
Programador formado em 1995, pela ETEIT – Escola técnica da UNIVALE. Atualmente trabalhando com a plataforma Delphi. Tem se dedicado nos últimos anos, ao desenvolvimento de aplicações PAF-ECF, SPED fiscal e NFe.
O que você achou deste post?

    22 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Wilson Ferreira Junior
Olá Luis,
 
Ao executar o aplicativo da vídeo aula 18 o seguinte erro ocorreu:
Este aplicativo não pôde ser iniciado porque não foi encontrado InterfaceEpson.dll. A reinstalação do aplicativo pode corrigir o problema.
 
Adicionalmente, no aplicativo das vídeo-aulas anteriores, ao fazer o cadastro de um produto o mesmo não fica disponível para consulta ou utilização no lançamento de pedido; entretanto, quando verifico diretamente no banco de dados, com o IBExpert, constato que o mesmo encontra-se cadastrado.
 
Sds.
Wilson
[há +1 ano] - Responder

 

[autor] Luis Carlos Godinho
Olá Wilson!
 
Com relação a primeira questão. Baixe as DLL's da epson através do link http://189.125.111.120/fiscais/index.php?mdl=support ou remova a unit uDecEpson do projeto que funcionará.
 
Com relação ao cadastro de produtos. Realizei os devidos testes aqui e não ocorreu este tipo de problema. Devo lembrar que a consulta dos dados, tanto no cadastro de pedidos quanto na tela de consulta do produto esta disponibilizada apenas pelo EAN13. O principal objetivo do curso não esta voltado para estes cadastros, mas de qualquer forma para estar disponibilizando os outros tipos de consultas na tela de cadastro de clientes proceda as seguintes alterações nos códigos:
 
Primeiro na unit uFrmCadProduto. Vá no evento onexite do compontente TEdit (EdtLocalizar) faça o bloqueio das linhas que verificam a edição dos dados. Veja exemplo:
 
//  if EdtLocalizar.Text <> '' then
//  begin
    DM.AbreTabelaProdutos(EdtLocalizar.Text,RadioOpcao.ItemIndex);
//  end;
 
Agora vá na função AbreTabelaProdutos da unit uDM e adicione as linhas de codigo para limpar os parametros do componente. Devera ficar como exemplo abaixo:
 
  CdsProdutos.Close;
  QryProdutos.Close;
// linhas a serem adiocionadas
  CdsProdutos.Params.Clear; 
  QryProdutos.Params.Clear;
// final das linhas a serem adicionadas
  QryProdutos.SQL.Clear;
  QryProdutos.SQL.Add('select * from produtos');
  case fTipo of ...
Qualquer dúvida entre em contato;
 
Abs!
[há +1 ano] - Responder
 

Antonio De Assis Barroso
Confesso que não li o manual com muita atenção, mas quando a IF-ECF for a uma autorizada e houver uma intervenção e por algum motivo foi feito algum teste ai o GT vai estar diferente... como o PAF-ECF vai ter que se comportar?
[há +1 ano] - Responder
 

[autor] Luis Carlos Godinho
Olá Antonio!
 

Neste caso você tem 2 opções para resolver segundo o roteiro de homologação.

1º - No Requisito XXII no item 5-a diz que quem deve configurar este arquivo é a empresa desenvolvedora. Então em caso de intervenção técnica do equipamento. Você deverá ir ao estabelecimento do cliente e recuperar os dados.
 
2º - Ainda no Requisito XXII item 8, preve regras para recuperar os dados automáticamente pela aplicação.
 
Abs!
[há +1 ano] - Responder
 

Wesley Vicente De Oliveira
Estou tendo problemas com esse Erro de I/O error 32 no TEF geralmente na função AnalizaArquivoRetorno onde e usada a variavel cArquivo ai pesquisando pela net achei essa instrução que ignora o erro.

  {$I-}
  CloseFile( cArquivo );
  {$I+}

e correto fazer isso ou tem outra maneira para que nao aconteção esses erros de I/O error 32?
[há +1 ano] - Responder

 

[autor] Luis Carlos Godinho
Olá Wesley!
 
Este erro normalmente acontece por conta de duas aplicações estarem usando o mesmo arquivo. No caso o PAF e o TEF_Dial. Para resolver isso, identifique o ponto exato que acontece o problema e se preciso coloque um temporizado para que tenha o tempo habil de uma aplicação fechar o arquivo antes que a outra abra. Em caso de delphi use o comando Sleep(1000);
Não aconselho e usar o código que você informou, pois ao invês de resolver, estará apenas burlando o problema.
 
Abs!
 
[há +1 ano] - Responder
 

Wesley Vicente De Oliveira
blz valeu pela resposta vou fazer aqui e qualquer coisa posto o resultado.
suas aulas estão de parabens. :D
[há +1 ano] - Responder
 

Wesley Vicente De Oliveira
Bom dia!!!

Estou tendo um problema na função que imprime a transacao TEF e ja tem dias eheehee


Nessa parte aqui da função.

     while not System.EOF(cArquivo) do
      begin
        ReadLn(cArquivo,cLinhaArquivo);
        if StrToInt(copy(cLinhaArquivo,1,3)) = 029 then
        begin
          aTextoLinha := copy(cLinhaArquivo,11,Length(cLinhaArquivo)-10);
          if pTipoRel = 0 then
             iRetorno := Bematech_FI_UsaComprovanteNaoFiscalVinculadoTEF(pchar(aTextoLinha))
          else if pTipoRel = 1 then
             iRetorno := Bematech_FI_RelatorioGerencialTEF(pchar(aTextoLinha));
         if iRetorno <> 1 then
          begin
            Result := false;
            Abort;
          end;

 depois de varios testes notei que ele da o retorno de  -27 entao ele para com a função e o cupom nao termina de ser impresso ai peguei um exemplo da bematech exemploDelphiTEF e nele a impressao sai toda correta mesmo no emulador que estou usando o emul2100 ultima versao disponivel no site vc tem alguma ideia do q pode ser?

[há +1 ano] - Responder

 

[autor] Luis Carlos Godinho
Olá Wesley!
 
Este retorno -27 indica um erro na execução do comando da DLL.
Analizando o código aqui, notei que no exemplo do comando no arquivo de ajuda da bematech, pede para passar com comando com o pChar(), porem no meu aqui esta sem e funciona. Retire o pChar() e faça o teste.
Qualquer coisa volte a postar o comentário.
 
Exermplo:
          if pTipoRel = 0 then
             iRetorno := Bematech_FI_UsaComprovanteNaoFiscalVinculadoTEF(aTextoLinha)
          else if pTipoRel = 1 then
             iRetorno := Bematech_FI_RelatorioGerencialTEF(aTextoLinha);
Abs!
[há +1 ano] - Responder
 

Wesley Vicente De Oliveira
 entao o erro ja dava antes do pchar ai olhando no manual eu vi o pchar e adicionei ele para teste mas mesmo sem o erro continua =/
[há +1 ano] - Responder
 

[autor] Luis Carlos Godinho
Olha, no meu aqui não deu este erro.
Quando é passado o comando para abrir o comprovante vinculado, a impressora esta acatanto o comando e mostrando na tela do emulador?
Outro detalhe, na função para registrar o item no ECF esta passando tudo como fracionado. Mas isso acarreta num erro no total do cupom. Neste caso altere os códigos onde verificam o tipo de produto Francionado ou Inteiro. Veja o Exemplo abaixo:
 
    // Define Tipo de Produto
    if DataProduto.DataSet.FieldByname('FRACIONADO').AsString = 'S' then
    begin
      aTipoQuant := 'F';
      aQuant := StrToFloat(sQuant);
      aQuantidade := FormatFloat('0.000',aQuant);
    end
    else
    begin
      aTipoQuant := 'I';
      aQuantidade := ZeroEsquerda(sQuant,4);
    end;
    // define descricao
    aDescricao := Trim(Copy(DataProduto.DataSet.FieldByName('descricao').AsString,1,29));
    // define valor
    aValor := FormatFloat('0.00',DataItensCupom.DataSet.FieldByName('preco').AsFloat);
    ZeroEsquerda(aValor,8);
Note que a formatação da quantida se dará de acordo com o tipo de produto.
 
Abs!
[há +1 ano] - Responder
 

Wesley Vicente De Oliveira
amigo notei que o problema aparantemente ta na hora que q o gerenciador do tef carrega o valor da venda

meu arquivo intPos.001 esta da da seguinte forma:

000-000 = CRT
001-000 = 085149
002-000 = 000012
003-000 = 37,90
999-999 = 0

so que porem quando o gerenciador abre na tela o valor da venda aparece no seguinte formato

37,,90 (com duas virgulas) entao la no cupom fiscal quando ele passa o pagamento ele ta passando so os 37,00 e ignora os 90 centavos vc tem ideia do q posso fazer pois conferi e o valor q e atribuido a variavel pValor ta passando normal so
com uma virgula e esse conteudo do arquivo intpos.001 peguei direto la em C:\TEF_DIAL\resp no momento em q ele abre o gerenciador padrao.

[há +1 ano] - Responder
 

[autor] Luis Carlos Godinho
Olá Wesley!
 
Dá uma olhada no manual e confirme se o valor tem que ser passado para o gerenciador padrão sem a virgula. Exermplo:
 
000-000 = CRT
001-000 = 085149
002-000 = 000012
003-000 = 3790
999-999 = 0


Abs!
[há +1 ano] - Responder
 

Wesley Vicente De Oliveira
valeu amigo era exatamente isso ai usei uma função q removia a virgula do valor e deu certo o gerenciador reconheceu o valor certinho ehehehhe ja tava ficando loko ja 1 semana com esse problema. agora vo para as proximas etapas eheheh qualquer duvida te encomodo mais um pouquinho :D
[há +1 ano] - Responder
 

George Pinheiro Souza
Os video sao muito bom,
estou indo de vento e poupa.
mais gostaria de saber, se este video vai ter TEF dedicado.
[há +1 ano] - Responder

 

[autor] Luis Carlos Godinho
Olá!

Infelizmente não. Apenas o discado mesmo.

Abs!
[há +1 ano] - Responder
 

Marcos Roberto Bonfa
Olá Luiz, Bom dia

Parabens pelas aulas.
Vi algum comentário sobre usar acbr, achei interessante, pois esse curso nos dá um boa base para irmos em frente.
Estou com um problema aqui, já tentei varias vezes, fiz muitas pesquisas, e não consigo instalar ACBrECF no Delphi7, se puder dar uma dica agradeço.
Por outro lado tenho Instalado o ACBrMonitor, minha pergunta:
Tem alguma diferença em desenvolver com o componente ACBrECF ou ACBrMonitor?
Não pergunto isso com relação ao sistema em si, claro isso tem diferença, mas sim com relação a Homologação do sistema.
Vê algum inconveniente?
[há +1 ano] - Responder

 

[autor] Luis Carlos Godinho
Olá!

Eu nunca usei o AcBrMonitor, então não saberei te dizer se há deferença.
Com relação à instalação, basta seguir o orientação que tem no arquivo leiame.txt que vem junto com os códigos, quando são baixados via SVN.
Antes de instalar, te indica a remover qualquer outra instalação do AcBr que tiver anteriormente instalada.

Abs.!
[há +1 ano] - Responder
 

Marcos Roberto Bonfa
Olá Luiz

O sistema traz um erro a partir do projeto da aula 17
"Não foi possivel localizar o ponto de entrada do procedimento Bematech_FI_ArquivoMFD na biblioteca de vinculo dinâmico BEMAFI32.DLL"

pode dar uma ajuda?

Obrigado
[há +1 ano] - Responder

 

[autor] Luis Carlos Godinho
Olá!

A DLL que esta usando não tem esta função. Cerifique-se de não ter outras DLL's espalhadas em outros pontos e se a que tem esta atualizada.

Abs.!
[há +1 ano] - Responder
 

Patrick Reis
Olá Luiz,
Estou fazendo o seu curso e quero te parabenizar pelo mesmo. Estou implementando o TEF conforme você explicou, porém não consegui fazer o simulador gerar a venda pelo cartão, tem alguma configuração a fazer nos simuladores de cartão de crédito, ou é simplesmente instalá-los e usar?
Att,
Patrick
[há +1 ano] - Responder

 

[autor] Luis Carlos Godinho
Olá!

Tem as configurações porem ao instalar já ficam por default da forma necessária. Informe o que esta acontecendo exatamente para que eu possa tentar ajudar.

Abs.!
[há +1 ano] - Responder
 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03