Olá pessoal,

Quando o assunto é Homologação de TEF, passam varias preocupações na cabeça do desenvolvedor, uma delas é a impressão  da resposta da operadora do cartão (bandeira).
Abrir o arquivo, buscar o campo a ser impresso, controlar a impressão por linhas em um relatório gerencial, tratar os erros nos testes de desligamento etc... São varias coisas que você desenvolvedor não necessita mais se preocupar!

É isto ai!


Hoje conheceremos melhor o recurso, ou a função iTEF_ImprimirResposta_ECF_Daruma.
Com esta função você passa apenas o PATH onde este arquivo de resposta “IntPos.001” se encontra, e a função iTEF_ImprimirResposta_ECF_Daruma imprime pra você o arquivo! Esta função também lhe permite travar o teclado e devolve se a impressão foi realizada com sucesso ou não.

Caso não tenha tido sucesso no envio você deverá proceder os passos do TEF, continuar impressão sim, ou não... E pode verificar os erros com nosso tratamento de retornos.

 

Parâmetros: 

szArquivo = 
Caminho completo + nome do arquivo que você deseja imprimir: "C:\TEF_DIAL\RESP\INTPOS.001

bTravarTeclado           Função do tipo: Int/Boolean 
1 - True - Trava Teclado 
0 - False - Não Trava Teclado

Forma de Pagamento=  Forma de Pagamento referente ao ultimo Cupom Fiscal (No caso de transação com múltiplos cartões chamar a função na ordem)

Valor do Pagamento=  
Valor do pagamento TEF.

Vejamos na prática:

C#
:

Declaração:

[DllImport("DarumaFrameWork.dll")]

        public static extern int iTEF_ImprimirResposta_ECF_Daruma

                (String szArquivo, Boolean bTravarTeclado);

Emissão do Cupom Fiscal:

private void BT_CupomFiscal_Click(object sender, EventArgs e)

        {

          

            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =

 DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iCFAbrirPadrao_ECF_Daruma();

            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =

 DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.

        iCFVenderResumido_ECF_Daruma("II""0,10""Produto Teste","789567893456");

            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =

 DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.

                iCFTotalizarCupomPadrao_ECF_Daruma();

            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =

 DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.

                iCFEfetuarPagamentoFormatado_ECF_Daruma("MasterCard","00000100");
            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =

 DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.

                iCFEncerrarPadrao_ECF_Daruma();

           DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.

                DarumaFramework_Mostrar_Retorno(

                        DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno);

                 

        }

 

// No código acima foi emitido um cupom fiscal, onde utilizei a forma de pagamento MasterCard para o pagamento de 1,00R$.

 

        private void BT_Tef_Click(object sender, EventArgs e)

        {

            String diretorio= "C:/Tef_Dial/Resp/Intpos.001";

 

 

                DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =

 DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.

        iTEF_ImprimirRespostaCartao_ECF_Daruma(diretorio, true,"MasterCard""00000100");

               

        }

 

//Nos trechos de código do botão acima chamei a função iTEF_ImprimirResposta_ECF_Daruma e passei como parâmetros o PATH, para habilitar o teclado, a forma de pagamento Mastercard conforme no Cupom, e o valor de 1,00R$.


Encerramento:
  
 private
 void BT_FecharDocumento_Click(object sender, EventArgs e)

        {

            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =

 DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.

                        iTEF_Fechar_ECF_Daruma();

        

        }

//Mais acima fechei a impressão da resposta do Tef.

Delphi:

function iTEF_ImprimirResposta_ECF_Daruma(szArquivo:String; 

        bTravarTeclado:Boolean):Integer; 

StdCall; External 'DarumaFramework.dll';

 

Int_Retorno:= iTEF_ImprimirResposta_ECF_Daruma(Str_Path_Arquivo_Resp_TEF,false);


VB6:

Public Declare Function iTEF_ImprimirResposta_ECF_Daruma Lib 

"DarumaFramework.dll" (ByVal szArquivo As String, ByVal bTravarTeclado As Boolean) 

        As Integer


iRetorno = iTEF_ImprimirResposta_ECF_Daruma(Str_Path_Arquivo_Resp_TEF,
                        True, "2", "00000100")

 

 

Controle de Impressão pelo XML:
Quando se vai homologar TEF e é necessário a impressão da resposta da operadora só que em um determinado intervalo de linhas para que possa ser verificado o Status da Impressora. 

 


Você deve estar se perguntando se há possibilidade de verificar isto na função iTEF_ImprimirResposta_ECF_Daruma?  Tem sim... e isto é controlado pelo XML!

 

No XML tem uma chave chamada <LinhasTEF> X </LinhasTEF> onde X é o numero de linhas na impressão do TEF, ou seja em intervalos “de X em X”..

Por exemplo:

<LinhasTEF>03</LinhasTEF>

O comando enviará as linhas do arquivo de 3 em 3 linhas.

Veja em cada TAG <Verifica> que é onde demonstro que a impressora é verificada.

000-000 = CRT

001-000 = 0000000299

002-000 = 000299

<Verifica>

003-000 = 50,00

009-000 = 0

010-000 = AMEX

<Verifica>

011-000 = 10

012-000 = 030969

015-000 = 1803111923

<Verifica>

022-000 = 18032004

023-000 = 111923

027-000 = 030969

<Verifica>

028-000 = 16

029-001 = "            AMERICAN EXPRESS"

029-002 = "        COMPROVANTE DE OPERACAO"

<Verifica>

029-003 = "         !!!!! SIMULACAO !!!!!"

029-004 = "AMEX CARD  376472540701007         12/04"

029-005 = "ESTAB.     AMERICAN EXPRESS - BRZ "

<Verifica>

029-006 = "           Av Maria Coelho Aguiar "

029-007 = "           9912801792     "

029-008 = "TERM=70000071   DOC=030969   LOTE=000001"

<Verifica>

029-009 = "18/03/04 11:19   AUTORIZ.=123456   ONL-X"

029-010 = "VENDA CREDITO A VISTA"

029-011 = "VALOR VENDA:               50,00"

<Verifica>

029-012 = "RECONHECO E PAGAREI A IMPORTANCIA ACIMA."

029-013 = "***TESTE DARUMA***/*/***TESTE DARUMA***"

029-014 = ""

<Verifica>

029-015 = "     ______________________________"

029-016 = "      GUILHERME SILVEIRA DE MORAES"

030-000 = AUTORIZADO123456

<Verifica>

040-000 = AMEX CARD

999-999 = 0

 

Ai vai a dica de mais este recurso...

Um forte abraço à todos!