Professional Documents
Culture Documents
claudenir@daruma.com.br
Formado pela Academia de Sistemas Informáticos de Madrid, trabalha com automação comercial há nove anos,
foi responsável pela Homologação e aprovação de ECFs brasileiros em países como Equador e Venezuela,
gerencia a equipe de desenvolvimento da Daruma Automação. Autor do primeiro livro de automação comercial
no Brasil - "Automação Comercial com VB.Net e C#", é também MVP da Microsoft e está criando e definindo o
Modelo XML para Automação Comercial, escreve artigos também para o site MSDN e pode ser contatado pelo e-
mail - claudenir@daruma.com.br
Desde então, a lei, como tudo em nosso País, passou por uma constante evolução,
por modificações, adendos e convênio o que representa para nosso mercado
(Software de Automação), uma oportunidade de evolução tecnológica e, ao mesmo
tempo, uma necessidade de reestruturação do sistema como um todo e da própria
"software house". Hoje, estamos tão "evoluídos" (se é que podemos chamar a isto
de evolução) que até mesmo o TEF - Transferência Eletrônica de Fundos, foi
legislado como de Responsabilidade da Empresa de Software e do Software de
Automação, para que controle toda a transação.
Bem, vamos por partes... Entendamos um pouco como funciona "no bit" o trabalho
do software com uma impressora fiscal.
Impressora Fiscal
A título de exemplo, a Mecafe trabalha com um protocolo que inicia pelo byte (02)
STX e finaliza com um CRC único; já a Bematech começa com um (02) e termina
com dois CRCs um que representa o byte mais sig e mais outro que representa o
resto da divisão por 256 (valor comportado por um byte). Hoje, no mercado atuam
pelo menos seis fabricantes expressivos, ou seja, são seis IF´s que o
desenvolvedor terá de incluir, imagine agora você com o seguinte código:
If Mecafe then
....
If Sweda then
....
If Bematech then
....
Infelizmente, no mercado hoje existem mais de seis DLLs diferentes para cada
fabricante de impressoras fiscais. DLLs que não conversam entre si e voltam a
trazer o trauma dos "IFs" nos códigos (If DLL Mecafe.... then If DLL Bematech
then .... If DLL Sweda then ... ) o que de nada facilita nossa vida...
Assim, esta mesma interface deverá "falar" com todas as impressoras fiscais no
mercado, ou seja, tire Bematech e coloque Mecafe ou tire Mecafe e coloque
Bematech que o software terá que funcionar sem problemas de compatibilidade,
ajustes no código e sem a necessidade de estar colocando os IFs dos quais falei.
No micro em que o software frente de caixa está rodando, deverá ser instalado um
GP (Gerenciador Padrão) este gerenciador é o que conversará com seu aplicativo
através de arquivo texto, ou seja, o GP fica "alocado" no canto do vídeo, sempre
ativo e buscando arquivos em um determinado diretório.
Quando sua aplicação cria um arquivo para ser enviado para a administradora, o GP
é aberto na tela, o cliente escolhe a forma de pagamento e o GP efetua a
comunicação via modem com as administradoras. Apos a aprovação da transação,
o GP cria um arquivo Texto de resposta, que deverá ser capturado por seu
aplicativo, retrabalhado e impresso no ECF através de um documento fiscal
chamado "Relatório Não Fiscal Vinculado"....UFA!! Que maratona... mas é
exatamente assim que você deverá fazer para deixar seu software compatível com
TEF e dentro da Legislação.
Assim como há algum tempo atrás houve uma onda acerca da obrigatoriedade dos
emissores de cupom fiscal - ECF, existe uma tendência cada vez maior por parte da
Federação em cobrar das empresas que as mesmas estejam adaptadas ao sistema
do SIntegra.
O que é o Sintegra?
Existe uma série de registros disponíveis para serem adicionados no arquivo, sendo
que cada um deles tem suas características, aplicações e requisitos. A exemplo:
REGISTRO 10:
"Mestre do Estabelecimento - Indentifição do Estabelecimento informante" é um
registro obrigatório a todo e qualquer arquivo do SIntegra, e contém dados sobre a
quem pertence aquele arquivo, como CGC, IE, e Endereço do estabelecimento
informante.
REGISTRO 11:
"Dados complementares do informante" é um registro obrigatório a todo e qualquer
arquivo do SIntegra, e contém dados complementares sobre a quem pertence
aquele arquivo, como Telefone, Bairro, e CEP do estabelecimento informante
REGISTRO 50:
Este registro deverá ser composto por contribuinte do ICMS, obedecendo a
sistemática semelhante à da escrituração dos livros Registro de Entradas e Registro
de Saída
REGISTRO 51:
Este registro deverá ser composto somente por contribuintes do IPI, obedecendo a
sistemática semelhante à da escrituração dos livros Registro de Entradas e Registro
de Saídas
Antes de questionar como deve ser o arquivo final do SIntegra emitido por seu
cliente, é necessário que você conheça bem todos os Registros possíveis de serem
adicionados a um arquivo do SIntegra. Só assim você será capaz de traçar as
necessidades do seu cliente e definir quais dos registros o arquivo dele deve conter.
O Convênio ICMS 57/95 indica que registro 50 deve ser gerado para cada um dos
seguintes tipos de documentos fiscais:
01 Tipo "50" 02 1 2 N
Nesta tabela, percebemos a ordenação dos campos do registro 50, bem como a
quantidade de dígitos de cada campo e seu tipo de formatação, "X" alfanumérico e
"N" numérico.
Os campos de formatação tipo "N" numérico devem ser preenchidos com zeros a
esquerda, caso seu conteúdo não tenha o número de dígitos do campo especifico.
Uma dll que implementa boa parte dos tratamentos necessários para a geração do
arquivo magnético e pode ser usada em conjunto com qualquer linguagem de
programação.
Tudo isso torna a dll uma solução muito eficiente, pois é importante lembrar que o
arquivo do sintegra será gerado referente a um período anterior, com base em
informações que já foram adicionadas a um banco de dados e que devem ser
coerentes com o sintegra.
A função Inicia_Sintegra indica à Dll que o uso da mesma será iniciado, o que faz
com que todos os seus contadores sejam zerados e a dll esteja pronta para ser
usada. Esta função deve ser chamada antes de serem chamadas as funções que
irão gerar os registros do SIntegra.
var
Form1: TForm1;
implementation
Function Registro50(CNPJ, Insc_Est, Data_Emissao_Recebimento, UF, Modelo, Serie,
Nro, CFOP, Emitente, Valor_Total, Base_ICMS, Valor_ICMS, Isenta, Outras,
Aliquota, Situacao: ShortString): ShortString; stdcall; external
'SIntegra32Dll.DLL';
http://www.delphibr.com.br/vendas.php
http://www.victory.hpg.ig.com.br/
Conclusão
Com este artigo, espero ter esclarecido alguns questionamentos básicos sobre a
sistemática do SIntegra, bem como ter trazido ao seu conhecimento a
SIntegra32Dll.dll, uma solução única no mercado para este tipo de implementação.
- Gerenciador Padrão
- Módulo TEF