PHP – Exemplo completo de Cupom Fiscal com TEF

Cumprindo Promessa anterior, vamos ao exemplo em PHP completo com TEF!
Em primeiro lugar, isto é apenas um exemplo dos métodos, eu não sou um cara certificado em TEF – PHP, e não estou passando um exemplo acabado, antes apenas as declarações de todos os métodos que você vai precisar na sua jornada para a homologação TEF.
Outro ponto importante é que este exemple é um complemento ao meu post anterior, então se você tiver alguma dúvida, veja mais informações no post abaixo [anterior] … ok?
A nossa página menu_esq.htm aumentou, agora ela está assim:
<–!menu_esq.htm–>
<html>
<head>
<title>Daruma Framework – Exemplo TEF em PHP</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″>
</head>
<body bgcolor=lightgreen vlink=”#006400″ alink=”#2F4F4F” topmargin=”0″ marginheight=”0″>
<br>Exemplo de Comandos para TEF<br><br>
<a href=”daruma.php?metodo=leiturax” target=’Principal’> Daruma_FI_LeituraX</a><br><br>
<hr>
<a href=”daruma.php?metodo=abre_cupom” target=’Principal’> Daruma_FI_AbreCupom</a><br><br>
  <a href=”daruma.php?metodo=vende_item” target=’Principal’>  Daruma_FI_VendeItem</a><br><br>
<hr>
<a href=”daruma.php?metodo=fecha_cupom_resumido” target=’Principal’>  Daruma_FI_FechaCupomResumido</a><br><br>
  <a href=”daruma.php?metodo=inicia_fechamento_cupom” target=’Principal’>  Daruma_FI_IniciaFechamentoCupom</a><br><br>
  <a href=”daruma.php?metodo=efetua_forma_pagamento” target=’Principal’>  Daruma_FI_EfetuaFormaPagamento</a><br><br>
  <a href=”daruma.php?metodo=identifica_consumidor” target=’Principal’>  Daruma_FI_IdentificaConsumidor</a><br><br>
  <a href=”daruma.php?metodo=termina_fechamento_cupom” target=’Principal’>  Daruma_FI_TerminaFechamentoCupom</a><br><br>
<hr>
<a href=”daruma.php?metodo=esperar_arquivo” target=’Principal’>  Daruma_TEF_EsperarArquivo</a><br><br>
  <a href=”daruma.php?metodo=imprimir_resposta” target=’Principal’>  Daruma_TEF_ImprimirResposta</a><br><br>
  <a href=”daruma.php?metodo=fecha_relatorio” target=’Principal’>  Daruma_TEF_FechaRelatorio</a><br><br>
</body>
</html>
Em um outro post eu vou explicar melhor o que cada um destes métodos faz. Agora seguindo o que ansiamos, o TEF, vamos para sua aplicação no arquivo daruma.php
<?
   //daruma.php
 $metodo = $_GET[‘metodo’];
//Você pode receber os parametros nesta página também.
//$parametro1 = $_GET[‘parametro1′];
if ($metodo == “leiturax”)
{
$comando = “1101;”;
}
if ($metodo == “abre_cupom”)
{
$comando = “1000;”;
}
if ($metodo == “vende_item”)
{
$comando = “1001;7896003704549;Bolacha;II;I;0001;2;00,10;$;00,00;”;
}
if ($metodo == “fecha_cupom_resumido”)
{
$comando = “1012;Cartao;Cupom fechado na Daruma com programa em PHP!!!;”;
}
if ($metodo == “inicia_fechamento_cupom”)
{
$comando = “1007;A;%;01,00;”;
}
if ($metodo == “efetua_forma_pagamento”)
{
$comando = “1008;Cartao;50,00;”;
}
if ($metodo == “identifica_consumidor”)
{
$comando = “1013;Daruma Automação Comercial;Av. Paulista, 1776; 45.170.289/0001-25;”;
}
if ($metodo == “termina_fechamento_cupom”)
{
$comando = “1010;Cupom fechado na Daruma com programa em PHP!!!;”;
}
if ($metodo == “esperar_arquivo”)
{
$comando = “1900;C:\TEF_DIAL\RESP\INTPOS.001;1;1;”;
}
if ($metodo == “imprimir_resposta”)
{
$comando = “1901;C:\TEF_DIAL\RESP\INTPOS.001;Cartao;0;”;
echo “<br><a href=’daruma.php?metodo=imprimir_resposta’>Imprimir Segunda Via</a><br><br>”;
}
if ($metodo == “fecha_relatorio”)
{
$comando = “1904;”;
}
//Verifico se todas as informações referentes a minha consulta estão ok:
echo $comando;
//Criar Arquivo – Neste momento eu crio o arquivo que será impresso.
// a opção ‘w+’ significa que eu dou permissão total para gravação e escrita no arquivo.
//Se estiver no linux ou windows vista  preste atenção para a permissão do arquivo. No linux dê permissão 777.
$arquivo = ‘C:\Daruma.CMD’;
$arq = fopen($arquivo, ‘w+’);
//Abro o arquivo “$arq” e escrevo nele o valor que está na variável “$info”.
//O comando “%s” significa que o valor a ser iserido é do tipo String. para int use %i, para double %d, para float %f, e assim por diante.
fprintf($arq, ‘%s’, $comando);
//Fecho o arquivo “$arq”
fclose($arq);
//atualizo a página para mostrar o retorno da impressora!
echo “<meta http-equiv=Refresh content=6;URL=’retorno.php’>”;
echo “<br> Aguarde o Retorno da Impressora!”;
?>
Os demais arquivos permanecem os mesmos. Aqui eu mesmo passei os valores para cada variável que é alimentada, mas você deverá receber elas também como parâmetros vindos de um form feitos em uma página html mesmo. Neste caso pode deixar a sua imaginação voar para fazer muitas coisas legais neste exemplo.
Agora você deve ter percebido que deixei dois modos para se fechar o cupom, então segue as sequências válidas para se fazer um Cupom Fiscal de início ao fim dele:
Daruma_FI_AbreCupom [Índice: 1000] -> Método opcional. Aqui pode ser inserido o CPF/CNPJ do consumidor se necessário.
Daruma_FI_VendeItem [Índice: 1001] -> Você pode repetir este método quantas vezes forem necessárias.
Daruma_FI_IniciaFechamentoCupom [Índice: 1007] -> Deste método em diante, já não é mais possível vender itens!
Daruma_FI_EfetuaFormaPagamento [Índice 1008] -> Aqui você consegue usar mais de uma forma de pagamento diferentes.
Daruma_FI_IdentificaConsumidor [Índice 1013] -> Opcional, usado para identificar o consumidor caso queira no final do Cupom.
Daruma_FI_TerminaFechamentoCupom [Índice 1010] -> Fecha o cupom, e imprime uma mensagem promocional, se desejar.
Outra sequência válida seria :
Daruma_FI_AbreCupom [Índice: 1000] -> Método opcional.
Daruma_FI_VendeItem [Índice: 1001] -> Você pode repetir este método quantas vezes forem necessárias.
Daruma_FI_FechaCupom [Índice 1011] -> Com este método você só poderá informar uma única forma de pagamento.
E uma terceira sequência poderia ser:
Daruma_FI_AbreCupom [Índice: 1000] -> Método opcional.
Daruma_FI_VendeItem [Índice: 1001] -> Você pode repetir este método quantas vezes forem necessárias.
Daruma_FI_FechaCupomResumido [Índice 1012] -> Fecha o cupom sem acréscimo ou desconto e com apenas uma forma de pagamento, ou seja, fecha cupom resumido mesmo.
Este post ficou extenso devido aos exemplos, mas creio que vai te ajudar muito!!!
*** Dúvidas, por favor entre em contato direto com a Daruma:
Não trabalho mais com automação comercial. Abraços!
Anúncios
Esse post foi publicado em Programação em PHP. Bookmark o link permanente.

8 respostas para PHP – Exemplo completo de Cupom Fiscal com TEF

  1. Carlos Fraga disse:

    Isso não é TEF, isso é ECF

  2. Boa tarde Guilherme,
    Gostaria de tirar mais algumas informações acerca da integração TEF em sistema PHP.
    Estou desenvolvendo um sistema em PHP para uma livraria evangélica e estou lutando com estas questões.
    Um abraço.
    Em Cristo,
    Dc. Rodrigo

  3. Gostaria de saber se preciso baixar algum programa ou DLL para a máquina onde a ECF está ligada. Baixei o OCX e só vi um arquivo daruma…CAB então, como meu PDV é em PHP e vai rodar em um navegador, é preciso o usuário do sistema fazer o download desse arquivo para a máquina dele?

  4. Opa gostaria de saber se é possivel apenas o cupom fiscal, ou ate mesmo o cupom não fiscal usando a bliblioteca mpdf para geralo para qualquer impressora

  5. Daniel Madureira disse:

    Boa tarde Guilherme, primeiramente gostaria de lhe parabenizar pelo ótimo artigo e em segundo gostaria que você me tirasse uma dúvida, e enquanto ao arquivo retorno.php, como ele é?

    Desde já, grato.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s