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). É isto ai! 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: bTravarTeclado = Função do tipo: Int/Boolean Declaração: public static extern int iTEF_ImprimirResposta_ECF_Daruma (String szArquivo, Boolean bTravarTeclado); Emissão do Cupom Fiscal: { 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. 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: { 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. 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); Public Declare Function iTEF_ImprimirResposta_ECF_Daruma Lib "DarumaFramework.dll" (ByVal szArquivo As String, ByVal bTravarTeclado As Boolean) As Integer 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”.. <LinhasTEF>03</LinhasTEF> O comando enviará as linhas do arquivo de 3 em 3 linhas. 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...
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!
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.
szArquivo = Caminho completo + nome do arquivo que você deseja imprimir: "C:\TEF_DIAL\RESP\INTPOS.001
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#:
[DllImport("DarumaFrameWork.dll")]
private void BT_CupomFiscal_Click(object sender, EventArgs e)
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =
private void BT_FecharDocumento_Click(object sender, EventArgs e)
Delphi:
VB6:
iRetorno = iTEF_ImprimirResposta_ECF_Daruma(Str_Path_Arquivo_Resp_TEF,
True, "2", "00000100")
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!
Por exemplo:
Veja em cada TAG <Verifica> que é onde demonstro que a impressora é verificada.
Um forte abraço à todos!