terça-feira, 17 de novembro de 2015

SIntegra: Abordagem Completa - Conceitos Gerais


Creio que muitos de vocês leitores, assim como eu, venham sendo constantemente abordados por seus clientes a respeito da obrigatoriedade de seus respectivos sistemas satisfazerem à legislação do SIntegra.
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, descrito no site oficial www.sintegra.gov.br.
Em ambos os casos, cabe a nós desenvolvedores, a compreensão e adaptação dos aplicativos de nossos clientes às novas legislações.
Tentando facilitar e agilizar este processo de implementação e adaptação, venho por meio desta série de 3 artigos apresentar uma visão geral de todo o processo de implementação do sintegra sobre o ponto de vista da implementação.
No primeiro artigo da série apresentamos os conceitos gerais do Sintegra suas definições e conceitos básicos. No segundo artigo da série apresentamos uma solução de implementação rápida e segura através da SIntegra32Dll.dll, e por fim, no último artigo da série apresentamos as principais ferramentas relacionadas ao assunto e necessárias à validação e entrega dos arquivos gerados pelos sistemas gerencias.
O que é o Sintegra?
O Sistema Integrado de Informações sobre Operações Interestaduais com Mercadorias e Serviços - SIntegra, foi criado visando o controle informatizado das operações de entrada e saída interestaduais realizadas pelos contribuintes do ICMS.
Sendo o SIntegra obrigatório a todos os contribuintes que emitam documento fiscal por processamento de dados (Notas Fiscais ou Cupons Fiscais) e/ou façam a escrituração de Livro Fiscal por processamento de dados, existe a necessidade da adaptação de grande parte dos softwares comerciais, para que atendam à nova legislação.
O SIntegra é descrito no Convênio ICMS 57/95, que define quem é considerado contribuinte usuário de sistema de processamento eletrônico de dados, disciplina as obrigações a serem cumpridas por estes contribuintes e estabelece o padrão de arquivo magnético para entrega ao Fisco.
Uma vez passadas as definições mais formais, podemos dividir o sintegra em 4 partes:
1- Convênio que define o formato e padrão do arquivo de texto a ser gerado pelo desenvolvedor em seu software gerencial.
2- Programa Validador, que o usuário utiliza para abrir o arquivo de texto que o software gerencial gerou e validar as informações contidas no mesmo antes do envio.
3- Programas Visualizador de Arquivo Texto e Programa Vizualizador de Notas Fiscais, que são ferramentas que auxiliam na visualização dos arquivos e suas informações, facilitando a interpretação e localização de erros.
4- Programa para Transferência Eletrônica de Documentos - TED, utilizado pelo usuário para enviar via internet os arquivos de texto gerados pelo software gerencial.
Nesta série vamos abordar as 4 partes descritas, como forma de cobrir todo o escopo básico sobre assunto em questão, bem como vamos discutir e demonstrar a implementação do arquivo do sintegra em si.
Entendendo o Arquivo do SIntegra
Em termos práticos o arquivo do SIntegra pode ser resumido, do ponto de vista do desenvolvedor, como um arquivo de texto formatado segundo um padrão pre-definido, onde cada linha do arquivo corresponde a um Registro, que contém vários campos, também pre-definidos de acordo com o tipo de registro. Registros e campos estes oriundos das informações contidas nos documentos fiscais que devem ser validados pelo Programa Validador antes de serem entregues ao Fisco. Veja a Figura 01 exemplo prático de como ficaria um registro do sintegra para uma nota fiscal.
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. Aqui são mostrados os principais e mais comuns registros, que são gerados pelo demo, no entanto, é impressindível para a implementação do SIntegra, seja utilizando a SIntegra32Dll.dll ou não, que o desenvolvedor leia atentamente a documentação do Convênio ICMS 57/95 que dicerta sobre o SIntegra e toda sua sistemática, pois antes de se 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.
É muito importante lembrar que a obrigatoriedade da apresentação de alguns dos registros depende do estado em que seu cliente se localiza, pois a cobrança ou não de alguns dos registros e facultado a unidades federativas, por exemplo em Salvador - Bahia onde estamos sediados, não somos obrigados a apresentar os registros 60I e 60R.
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. Cada arquivo do sintegra deve conter apenas 1 registro deste tipo.
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. Cada arquivo do sintegra deve conter apenas 1 registro deste tipo.
REGISTRO 50:
Este registro apresenta informações totalizadas das notas fiscais de entrada e saída e deve ser apresentado por contribuintes do ICMS.
REGISTRO 51:
Este registro apresenta informações totalizadas das notas fiscais de entrada e saída e deve ser apresentado por contribuintes do IPI.
REGISTRO 53:
Deve ser informado nos casos de substituição tributária por quem realizou Substituição e pelo substituto Tributário que realizou a antecipação.
REGISTRO 54:
Este registro é relativo aos itens das notas fiscais informadas nos registros tipo 50, devendo haver um registro para cada item presente nas notas fiscais informadas anteriormente. Devendo também ser utilizado para informar valores do frete, seguro e outras despesas acessórias que constem do corpo da nota fiscal.
Na estrutura de tabela Master-Detail do sistema de cadastro de notas ficais dos sistemas gerenciais, as informações da tabela Máster tais como CNPJ do cliente, valor total da nota, valor total dos produtos e etc são utilizadas para os registros 50 e 51, já a tabela Detail fornece os dados para o registro 54 tais como código do produto, quantidade, subtotal etc.
REGISTRO 60:
Contém informações sobre operações realizadas através dos equipamentos ECF, e suas principais subdivisões são os registros 60M, utilizado para identificar o equipamento emissor de cupom fiscal no estabelecimento, e o registro 60A, identificador de cada Situação Tributária no final do dia de cada equipamento emissor de cupom fiscal.
REGISTRO 75:
Representa a listagem dos códigos de produtos ou serviços utilizados, sendo obrigatório para informar as condições do produto/serviço, codificando de acordo com o sistema de controle de estoque/emissão de nota fiscal utilizado pelo contribuinte.
REGISTRO 90:
É um registro obrigatório a todo e qualquer arquivo do SIntegra, e sua finalidade é totalizar todos os tipos de registros existentes no arquivo magnético, devendo haver pelo menos 1 registro deste tipo.
Entendendo um Registro do SIntegra
Como forma de exemplificar a confecção do arquivo magnético como um todo, vamos analisar e tomar como base a implementação do Registro 50 durante todo o decorrer do artigo, devendo ser aplicada a mesma sistemática para a geração de todos os demais registros.
O Convênio ICMS 57/95 indica que registro 50 deve ser gerado para cada um dos seguintes tipos de documentos fiscais:
  • Nota Fiscal, Modelo 1 ou 1-A (código 01) - Quanto ao ICMS
  • Nota Fiscal / Conta de Energia Elétrica - Modelo 6 (código 06),
  • Nota Fiscal de Serviço de Comunicação - Modelo 21
  • Nota Fiscal de Serviços de Telecomunicações - Modelo 22 (código 22)
Sendo formatado de acordo com a Tabela 01 abaixo:
Tabela 01: Formatação do Registro tipo 50 
Campo
Conteúdo
Tamanho
Posição
Formato
01
Tipo
"50"
02
1
2
N
02
CNPJ
CNPJ do remetente nas entradas e do destinatário nas saídas
14
3
16
N
03
Inscrição Estadual
Inscrição Estadual do remetente nas entradas e do destinatário nas saídas
14
17
30
X
04
Data de emissão ou recebimento
Data de emissão na saída ou de recebimento na entrada
8
31
38
N
05
Unidade da Federação
Sigla da unidade da Federação do remetente nas entradas e do destinatário nas saídas
2
39
40
X
06
Modelo
Código do modelo da nota fiscal
2
41
42
N
07
Série
Série da nota fiscal
3
43
45
X
08
Número
Número da nota fiscal
6
46
51
N
09
CFOP
Código Fiscal de Operação e Prestação
4
52
55
N
10
Emitente
Emitente da Nota Fiscal (P-próprio/T-terceiros)
1
56
56
X
11
Valor Total
Valor total da nota fiscal (com 2 decimais)
13
57
69
N
12
Base de Cálculo do ICMS
Base de Cálculo do ICMS (com 2 decimais)
13
70
82
N
13
Valor do ICMS
Montante do imposto (com 2 decimais)
13
83
95
N
14
Isenta ou não-tributada
Valor amparado por isenção ou não incidência (com 2 decimais)
13
96
108
N
15
Outras
Valor que não confira débito ou crédito do ICMS (com 2 decimais)
13
109
121
N
16
Alíquota
Alíquota do ICMS (com 2 decimais)
4
122
125
N
17
Situação
Situação da Nota Fiscal
1
126
126
X
Na Tabela 01, é mostrado a ordem de apresentaçã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 "X" alfanumérico devem ser preenchidos com espaços em branco a direita, caso seu conteúdo não tenha o número de dígitos do campo especifico.
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.
Assim, tendo em mãos uma nota fiscal, o registro tipo 50 deve ser gerado como mostra a Figura 01:

Figura 01: Ilustra criação do registro tipo 50 a partir de uma nota fiscal
O que é a SIntegra32Dll.dll?
Como o SIntegra se baseia em uma série de informações fornecidas pelo usuário do sistema gerencial em questão, e como estas informações devem ser cuidadosamente tratadas antes de serem enviadas para o banco de dados do sistema e por fim utilizadas na geração do arquivo de texto, sob pena de recusa do arquivo gerado por parte do Programa Validador, foi desenvolvida a SIntegra32Dll.dll, como uma solução que visa facilitar e agilizar o processo de tratamento destas informações.
A Sintegra32dll.dll implementa os tratamentos necessários para a geração do arquivo magnético e pode ser usada em conjunto com qualquer linguagem de programação e permitindo ao desenvolvedor abstrair toda a camada de geração dos registros, validação das informações e criação do arquivo texto final.
Dentre as muitas vantagens da SIntegra32Dll.dll destacam-se:
  • Velocidade na implementação e adaptação do seu software à legislação do Sintegra.
  • Validação e formatação automática dos campos de acordo com os padrões do Sintegra.
  • Validação de informações genéricas como: Datas, CNJP, CPF, UF e CEP.
  • Validação de informações específicas do SIntegra como: CFOP, CIF/FOB, Código de Identificação do Convênio, Código de Finalidades da Apresentação do Arquivo Magnético, Código de Identificação da Natureza das Operações Informadas, Código de Modelo de Documentos Fiscais, Código de Posse das Mercadorias Inventariadas, Emitente de Nota Fiscal, Código da Situação Tributária.
  • Completo tratamento de erros, que retorna String indicando qual dos valores passados está incorreto.
Tudo isso torna a Sintegra32dll.dll uma solução muito eficiente e eficaz, capaz de reduzir drásticamente o tempo de programação necessário à implementação do Sintegra.
A SIntegra32Dll.dll é composta por uma função Inicia_Sintegra, uma função Finaliza_Sintegra e mais uma função para cada um dos tipos de registros disponíveis nos padrões do 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.
A função Finaliza_Sintegra indica à dll que o uso da mesma será finalizado.
As funções de Registro, são as funções principais da dll. Elas recebem os parâmetros necessários para a criação do registro, retornando uma String contendo o registro completamente formatado ou retornando uma String de erro, caso algum parâmetro esteja incorreto.
A SIntegra32dll.dll vem acompanhada da documentação completa sobre como utilizar suas funções e quais os tipos de erros retornados por cada função. Há ainda um demo completo em Delphi que mostra como conectar a dll ao seu programa e testar a saída da mesma com e sem banco de dados.
Para obter uma cópia e maiores informações sobre a SIntegra32Dll.dll visite o site:
http://www.sintegrafacil.com.br/
Conclusão
Com este artigo, cobrimos os conceitos gerais a cerca da legislação do sintegra, a estrutura básica do arquivo e seus principais registros. Tendo demonstrado a partir do exemplo do registro 50 a forma geral de estruturação de um registro do sintegra.
No próximo artigo da série será descrito todo o processo de implementação do Sintegra utilizando a Sintegra32dll.dll, incluindo um demo completo de implementação do Sintegra com banco de dados Interbase.

Victory Fernandes

Read more: http://www.linhadecodigo.com.br/artigo/620/sintegra-abordagem-completa-conceitos-gerais.aspx#ixzz3rkeM5U1r