Clube Delphi Edição 87
Esse artigo faz parte da revista Clube Delphi Edição 87. Clique aqui para ler todos os artigos desta edição

Mão na Massa

Impressão em ECF

Como imprimir em impressoras fiscais

 

Neste artigo aprenderemos e entenderemos melhor como funciona um ECF (Emissor de Cupom Fiscal). Vamos ainda desenvolver um pequeno programa capaz de imprimir em impressora fiscal.

Para iniciarmos nosso projeto, precisamos primeiramente entender o que exatamente é um ECF e como funciona. Para isso vamos recorrer ao CONVÊNIO ECF 01/98. Nele estão dispostas a regras básicas para emissão do cupom fiscal. Conforme mencionado no convênio:

“Os estabelecimentos que exerçam a atividade de venda ou revenda de mercadorias ou bens, ou de prestação de serviços em que o adquirente ou tomador seja pessoa física ou jurídica não contribuinte do imposto estadual, estão obrigados ao uso de equipamento emissor de Cupom Fiscal - ECF.

Isso significa que todo e qualquer estabelecimento que efetue qualquer tipo de venda ou revenda ao consumidor com as características citadas, são obrigados a adquirir e se enquadrar com o esquema de emissão de cupom fiscal.

Os cupons fiscais são emitidos através do ECF, uma impressora fiscal de natureza matricial ou térmica. Essas impressoras coletam as vendas diárias emitindo ao final do dia a Redução Z, para fechamento ou troca de operador, e a Leitura X para início do período de vendas. Tanto a Redução Z quanto a Leitura X devem ser mantidas próximas ao ECF para fins de fiscalização quando solicitadas.

O ECF deve ser conectado a um PC ou PDV (Ponto de Vendas) compacto. Como mencionado, a prática é utilizada para o desenvolvimento de sistemas de vendas ao consumidor. Normalmente, utilizamos impressoras fiscais em lojas de conveniência, lanchonetes, bares e uma infinidade de outros estabelecimentos comerciais.

A interação entre o sistema e a impressora fiscal, é feita através das portas seriais, ou COM, por meio de bibliotecas de link dinâmico, DLLs. Existem diversos fabricantes de impressoras fiscais, entre eles a Bematech (www.bematech.com.br).

Alguns tipos de contribuintes ficam isentos da utilização dos ECF’s tais como empresas com faturamento inferior a R$ 120.000,00 anuais, empresas que não utilizem sistemas de processamento de dados ficam isentas de utilizar o ECF, estabelecimentos de ensino (Portaria 91/02) e corretoras.

Para uma listagem completa consulte o link wiki.stoq.com.br/wiki/ECF_FAQs que contém uma série de informações necessárias para o uso ou não do ECF. Uma série de regras são estabelecidas para a utilização correta do equipamento tais como:

·         Somente é aceito o cancelamento de um cupom fiscal se o mesmo foi imediatamente cancelado após sua emissão;

·         O cupom fiscal não deve ser emitido em caso de operações ou prestações com empresas contribuintes de ICMS;

·         O cupom fiscal deve conter número do item, descrição, valor, código do produto vendido, quantidade, bem como valor pago pelo consumidor, troco e forma de pagamento.

Veja na Figura 1 um exemplo de Cupom Fiscal impresso (emitido pelo emulador da impressora fiscal), com os produtos vendidos, total, valor pago e troco.

 

imagem

Figura 1. Cupom Fiscal impresso

 

Emulando a impressora

Neste exemplo, vamos utilizar a impressora térmica fiscal MP-2100 TH FI da Bematech (emulador). A Bematech disponibiliza, gratuitamente, o emulador da impressora que pode ser utilizado para testar o equipamento e o sistema criado para esse propósito. Além do emulador, uma série de exemplos podem ser baixados no site do fabricante.

Entre no site www.bematech.com.br e acesse o menu superior Suporte. Logo em seguida clique no link Downloads e Drivers e após em Impressoras Fiscais. No ComboBox que aparece, selecione a sistema operacional Windows e aguarde o carregamento da página.

Localize Emul2100 - VAREJO (versão 1.01) e baixe o arquivo Emul2100v101.zip. Se preferir poderá baixar também o arquivo FilmeEmul2100.zip que contém um arquivo de vídeo no formato WMV com uma breve explicação sobre a utilização desse emulador.

Descompacte o arquivo e execute o programa de instalação (Install Emul2100 v1.01.msi). Após a instalação um grupo chamado Bematech aparecerá no seu menu Iniciar>Programas e nele o atalho para o emulador.

Abra o programa e clique com o botão direito, assim terá acesso a todos os controles do emulador tais como: ligar/desligar, porta serial, sensores etc. (Figura 2).

 

imagem

Figura 2. Emulador da impressora fiscal

 

Além disso, será necessário efetuar o download da biblioteca BemaFI32.dll para que possamos desenvolver a aplicação exemplo, portanto, no mesmo link acessado, localize e baixe o arquivo BemaFI32.zip. Crie uma pasta onde salvaremos nosso exemplo e descompacte o arquivo nessa pasta.

Notará que, além da biblioteca, outros arquivos serão descompactados no diretório, tais como arquivos de help e configurações. Precisamos apenas dos arquivos BemaFI32.dll e BemaFI32.ini. Para usar o emulador, com nosso exemplo, é necessário alterar a chave EmulMFD de “0” para “1”, por isso, abra o arquivo BemaFI32.ini e localize a chave informada. Altere para “1” e salve.

Criando o banco de dados de exemplo

Vamos criar duas tabelas simples em um banco de dados Firebird. Teremos a tabela PRODUTOS, com os produtos que serão vendidos e VENDAS, nossa tabela de pedidos. A estrutura de ambas pode ser vista no script da Listagem 1.

 

Listagem 1. Criação do banco de dados e tabelas

SET SQL DIALECT 3;

SET NAMES WIN1252;

CREATE DATABASE 'localhost:<Caminho>\ECF.fdb'

USER 'SYSDBA'

PAGE_SIZE 8192

DEFAULT CHARACTER SET WIN1252;

 

CREATE TABLE PRODUTOS (

  ID         INTEGER NOT NULL,

  DESCRICAO  VARCHAR(30) NOT NULL,

  UNITARIO   NUMERIC(15,2) NOT NULL);

 

CREATE TABLE VENDAS (

  PEDIDO      INTEGER NOT NULL,

  ITEM        INTEGER NOT NULL,

  ID_PRODUTO  INTEGER NOT NULL,

  DESCRICAO   VARCHAR(30) NOT NULL,

  QTDE        INTEGER NOT NULL,

  UNITARIO    NUMERIC(15,2) NOT NULL);

 

ALTER TABLE PRODUTOS ADD CONSTRAINT PRODUTOS_PK

PRIMARY KEY (ID);

ALTER TABLE VENDAS ADD CONSTRAINT VENDAS_PK

PRIMARY KEY (PEDIDO, ITEM, ID_PRODUTO);

 

Nota: Substitua <Caminho>\ECF.fdb pelo diretório do banco de dados e seu nome, ex: C:\BancoDeDados\ECF.fdb.

 

Data Module

Com o banco de dados criado, vamos criar a aplicação. Abra o Delphi, crie uma nova aplicação e salve a mesma. Vamos criar um Data Module e fazer as conexões necessárias para nosso exemplo. Clique em File>New>Data Module. Salve-o como “udmPrincipal.pas” e mude seu Name para “dmdPrincipal”.

...

Quer ler esse conteúdo completo? Tenha acesso completo