Modelando um ERP [004]
Cadastros Base
Esse artigo faz parte de uma série que mostra como levantar os requisitos e modelar um sistema ERP. Leia os artigos na sequencia. Veja a lista completa de artigos no seguinte link: http://www.alberteije.com/blog
Introdução
Este artigo introduzirá o primeiro módulo do ERP: Cadastros Base. Analisaremos os requisitos deste módulo e mostraremos a modelagem dos dados, as tabelas, seus relacionamentos e campos.
A ideia é que, no final do processo, você, leitor, consiga compreender como funciona um ERP desde sua concepção através dos requisitos apresentados nos artigos e que possa construir o seu próprio ERP utilizando as tecnologias que mais lhe agradam ou que já está acostumado a utilizar: bancos de dados, linguagens, etc.
Exemplos de Modularização
Temos vários ERPs disponíveis no mercado. Cada um costuma seguir uma linha de raciocínio ao separar e classificar seus módulos, mais ou menos de forma parecida. Vejamos alguns exemplos:
Veja no exemplo acima como os módulos são divididos em blocos que são definidos do centro para fora. É possível ver que no bloco Suprimentos temos os módulos Compras, Recebimentos e Estoque, por exemplo.
No exemplo acima vemos novamente uma divisão entre blocos e módulos. Observe, por exemplo, o bloco Financeiro com os módulos Contas a Pagar, Contas a Receber e Tesouraria.
Na imagem acima temos mais um exemplo de separação de blocos e módulos para um ERP.
T2Ti ERP
A empresa T2Ti vem há 10 anos ensinando como desenvolver ERPs desde sua concepção até sua implementação em diversas linguagens.
T2Ti ERP 1.0
A primeira versão do T2Ti ERP foi dividida em seis blocos com um total de 24 módulos. Veja abaixo as explicações sobre cada bloco do T2Ti ERP 1.0.
Durante o desenvolvimento do treinamento T2Ti ERP 1.0 o aluno aprende como desenvolver os módulos acima em três linguagens distintas: Delphi, Java e C#. A aplicação é construída em três camadas com a arquitetura RIA, ou seja, o cliente é uma aplicação Desktop.
Este treinamento se encontra disponível para ser estudado gratuitamente no site da T2Ti no seguinte link:
T2Ti ERP 2.0
O T2Ti ERP 2.0 foi lançado a seguir com mais módulos e mais uma linguagem. São 42 módulos e a linguagem introduzida foi o Lazarus. Veja abaixo as explicações sobre cada bloco do T2Ti ERP 2.0.
O treinamento T2Ti ERP 2.0 está disponível para aquisição no site da T2Ti por um valor módico. Segue o link:
T2Ti ERP 3.0
Durante o ano de 2020 a T2Ti está desenvolvendo o T2Ti ERP 3.0. A primeira fase deste treinamento é chamada T2Ti ERP Fenix, onde são construídos os primeiros 24 de 48 módulos.
O cliente da aplicação é feito com o Flutter e são construídos 5 servidores nas linguagens: C#, Delphi, Java, Node e PHP.
Mais detalhes sobre o T2Ti ERP 3.0 podem ser encontrados no link a seguir:
Cadastros Base
A construção de qualquer sistema passa pela fase de levantamento de requisitos e modelagem do banco de dados. Se essa fase for bem feita, o sistema será construído sobre uma base forte. Ainda mais importante essa fase se mostra na construção de um ERP.
Classificação
O módulo Cadastros Base deve conter aqueles cadastros que servirão de base para o restante do ERP.
Podemos classificar tais cadastros da seguinte forma:
- Dados informados pelo usuário: o usuário deve informar os dados que alimentarão as tabelas. Exemplo: cadastros dos clientes.
- Dados preexistentes sem alteração: os dados dessas tabelas já existem e não podem ser excluídos ou alterados. Além disso, novos registros não podem ser incluídos pelo usuário. Exemplo: CFOP. Apenas a software house pode alimentar os dados dessa tabela.
- Dados preexistentes com alteração: trata-se de uma tabela que já traz alguns dados, mas o usuário poderá inserir novos. Exemplo: tabela que armazena os tipos de pedido.
Levantamento de Requisitos
Você pode pensar em levantar logo todos os requisitos de um ERP colocando todos os possíveis cadastros base de uma vez só no papel, mas essa é uma tarefa muito complicada. É melhor você levantar os requisitos de cada módulo e identificar quais são os cadastros que podem ser utilizados por outros módulos, chegando assim aos cadastros base.
Por exemplo, você começa a pensar na parte financeira. Daí você enxerga o CLIENTE e o FORNECEDOR. Enxerga também o PRODUTO/SERVICO, pois a empresa deverá vender alguma coisa. Já temos três entidades. Mas, note que essas entidades serão utilizadas também em outros módulos do sistema. Precisaremos controlar os produtos em estoque. Ao comprar um item, precisaremos saber quem é o fornecedor. Ao vender um item precisaremos saber quem é o cliente.
Essas entidades fazem parte do Cadastros Base, pois são utilizadas no bloco financeiro, nos módulos controle de estoque, compras e vendas, etc.
Grupos
A princípio, podemos separar os cadastros base em grupos, tais como:
- Pessoal: Cadastro dos clientes, fornecedores, colaboradores, transportadoras, Contadores, Sindicatos, Convênios e outros.
- Produto: Cadastro do produto e dos itens que envolvem o produto: Grupo, Subgrupo, Unidade, NCM, etc.
- Financeiro: Cadastro dos dados financeiros básicos, tais como Banco, Agência, Conta/Caixa, Talonário, Cheque e outros.
- Tabelas: Cadastros das tabelas usadas no ERP. Muitos desses cadastros possuem dados preexistentes e suas janelas existem apenas para consultas. Podemos citar as tabelas do Sped, Sefip, PIS, CST, CBO, CFOP, GPS, Salário Mínimo, CSOSN, Feriados etc.
- Diversos: Setor, Almoxarifado, Operadora Plano Saúde, Operadora Cartão, País, Estado, Município, CEP etc.
MySQL Workbench
Para estudar as tabelas do ERP, o leitor deverá instalar o software MySQL Workbench. Para saber mais detalhes sobre como modelar um banco de dados e como usar essa ferramenta, leia os artigos sobre Modelagem de Banco de Dados. Segue o link para o primeiro dos seis artigos:
Se você ainda não tem conhecimentos sobre modelagem, é imprescindível que leia a sequencia dos artigos acima. Instale o MySQL Workbench, explore a ferramenta.
Os arquivos criados pelo MySQL Workbench tem a extensão ‘mwb’. Você vai encontrar o DER do T2Ti ERP Fenix no Github com o nome ‘fenix.mwb’ e poderá estudar a modelagem de acordo com o que está sendo explicado nos artigos.
Segue o link para o github:
Abra o DER do Fenix e conheça as tabelas das regiões: “Grupo Dados Pré-Existentes”, “Grupo Pessoa”, “Grupo Colaborador”, “Grupo Financeiro”, “Grupo Empresa” e “Grupo Produto”.
Algumas tabelas possuem uma descrição informando o seu objetivo. Para isso, clique duas vezes na tabela desejada e acesse a opção “Comments”. Cada campo também possui um comentário no formato JSON. Esse comentário é utilizado para gerar automaticamente o servidor e o cliente da aplicação utilizando o Gerador de Código desenvolvido pela T2Ti.
Tabelas do Módulo Cadastros Base no DER
Ao analisar o DER, o leitor observará as tabelas das seguintes entidades:
- Cadastros do grupo Pessoa: Pessoa, Pessoa Física, Pessoa Jurídica, Cliente, Fornecedor, Transportadora e Contador. Vinculadas a Pessoa Física temos Estado Civil e Nível de Formação. Ainda vinculadas a Pessoa temos Endereços, Telefones e Contados.
- Cadastros do grupo Colaborador: Colaborador, Cargo, Setor, Vendedor. Temos ainda as tabelas de controle de acesso: Usuário, Papel, Função e Papel/Função.
- Cadastros do grupo Financeiro: Banco, Agência e Conta/Caixa.
- Cadastros do grupo Empresa: Empresa, Contatos, Telefones e Endereços.
- Cadastros do grupo Produto: Marca, Unidade, Grupo, Subgrupo e Produto.
- Cadastros do Grupo Dados Pré-Existentes: UF, Município e CEP. NCM e CFOP. Tabelas CST: Cofins, ICMS, IPI e PIS. Tabela CSOSN. Ainda nesse grupo temos a tabela CNAE.
É possível que o módulo Cadastros Base receba ainda outras tabelas com o decorrer da implementação do ERP, principalmente no Grupo de Dados Pré-Existentes.
Vejamos agora uma breve descrição sobre cada tabela do módulo Cadastros Base.
Grupo Dados Pré-Existentes
CEP
Tabela que contém os CEPs do Brasil. Normalmente essa tabela é utilizada para consultas por telas da aplicação que precisam armazenar um endereço.
MUNICÍPIO
Relação dos Municípios (cidades) do Brasil.
UF
Relação de Estados (Unidades da Federação) do Brasil.
NCM
A Nomenclatura Comum do Mercosul (NCM) é uma convenção de categorização de mercadorias adotada desde 1995 pelo Uruguai, Paraguai, Brasil e Argentina e que toma por base o Sistema Harmonizado (SH). Este sistema de nomenclatura foi criado a fim de melhorar e facilitar o crescimento do comércio internacional, facilitando também a criação e comparação de estatísticas. Cada produto cadastrado na aplicação deve conter um código NCM.
CST ICMS
O Código da Situação Tributária (CST) é o valor que identifica a origem da mercadoria e a forma de tributação que deverá incidir sobre a mesma. Os contribuintes do Imposto sobre operações relativas à circulação de mercadorias e sobre prestações de serviços de transporte interestadual, intermunicipal e de comunicação (ICMS) são obrigados a informar nos campos próprios dos documentos fiscais que emitirem, o Código de Situação Tributária (CST) do ICMS.
CST IPI
Os contribuintes do Imposto sobre Produtos Industrializados (IPI) obrigados à Escrituração Fiscal Digital (EFD), comumente chada de Sped-Fiscal, e à emissão de Nota Fiscal Eletrônica (NF-e), deverão informar nos campos próprios dos respectivos arquivos XML, o Código de Situação Tributária (CST) do IPI nas operações que realizarem
CST PIS / COFINS
Os contribuintes das contribuições para o PIS/Pasep e para a Cofins obrigados à Escrituração Fiscal Digital (EFD), comumente chamada de Sped-Fiscal, e à emissão de Nota Fiscal Eletrônica (NF-e), deverão informar nos campos próprios dos respectivos arquivos XML, o Código de Situação Tributária (CST) dessas contribuições nas operações que realizarem.
A Secretaria da Receita Federal do Brasil (RFB), a seu critério, poderá utilizar-se do CST/PIS e da CST/Cofins em outras obrigações acessórias, para padronização, na prestação ou na manutenção, pelos contribuintes, de informações relativas às operações de que participem.
CSOSN
O CSOSN (Código de Situação da Operação do Simples Nacional) é uma numeração criada pelo governo e utilizada por empresas optantes pelo Simples Nacional. É um código tributário utilizado nas notas emitidas por empresas do Simples Nacional e identifica qual o tipo de operação registrada no documento fiscal.
CFOP
O CFOP (Código Fiscal de Operações e de Prestações das Entradas de Mercadorias e Bens e da Aquisição de Serviços) é um código do sistema tributarista brasileiro, determinado pelo governo. É indicado nas emissões de notas fiscais, declarações, guias e escrituração de livros. É utilizado em uma operação fiscal e define se a nota emitida recolhe ou não impostos, movimento de estoque e financeiro.
O CFOP é, em sua maioria, composto por quatro dígitos, onde o primeiro (prefixo) determina a natureza da operação, ou seja, se é entrada ou saída de mercadorias. Por sua vez o sufixo determina o código de Situação Tributária.
Prefixos
1 — Entrada de Mercadoria ou Aquisição de Serviços de dentro do Estado.
2 — Entrada de Mercadoria ou Aquisição de Serviços de fora do Estado.
3 — Entrada de Mercadoria ou Aquisição de Serviços do Exterior.
4 — Prefixo não utilizado
5 — Saída de Mercadoria ou Prestação de Serviços para dentro do Estado.
6 — Saída de Mercadoria ou Prestação de Serviços para fora do Estado.
7 — Saída ou prestações de serviços para o exterior
CNAE
A CNAE (Classificação Nacional de Atividades Econômicas) é a classificação oficial adotada pelo Sistema Estatístico Nacional do Brasil e pelos órgãos federais, estaduais e municipais gestores de registros administrativos e demais instituições do Brasil.
A CNAE é o instrumento de padronização nacional dos códigos de atividade econômica e dos critérios de enquadramento utilizados pelos diversos órgãos da Administração Tributária do Brasil. Essa classificação aplica-se a empresas privadas ou públicas, estabelecimentos agrícolas, organismos públicos e privados, instituições sem fins lucrativos e agentes autônomos (pessoa física).
DIA PARCELA
Tabela que armazena os dias que podem ser utilizados para a geração de parcelas do Contas a Receber.
Grupo Pessoa
Logo abaixo você verá as tabelas que compõem o Grupo Pessoa. Existe um estudo de caso que explica como essas tabelas são criadas. Leia no link a seguir:
PESSOA
Essa tabela vai armazenar os dados da entidade PESSOA.
PESSOA FÍSICA
Tabela que armazena os dados específicos para Pessoas Físicas. Relacionamento Um-Pra-Um com PESSOA.
PESSOA JURÍDICA
Tabela que armazena os dados específicos para Pessoas Jurídicas. Relacionamento Um-Pra-Um com PESSOA.
PESSOA ENDEREÇO
Tabela que armazena os endereços das pessoas. Relacionamento Um-Pra-Muitos com PESSOA.
PESSOA CONTATO
Tabela que armazena os contatos das pessoas. Tabela que armazena os endereços das pessoas. Relacionamento Um-Pra-Muitos com PESSOA.
PESSOA TELEFONE
Tabela que armazena os telefones das pessoas. Tabela que armazena os endereços das pessoas. Relacionamento Um-Pra-Muitos com PESSOA.
CLIENTE
Tabela que armazena os clientes. Relacionamento Um-Pra-Um com PESSOA.
FORNECEDOR
Tabela que armazena os fornecedores. Relacionamento Um-Pra-Um com PESSOA.
CONTADOR
Tabela que armazena os contadores. Relacionamento Um-Pra-Um com PESSOA.
TRANSPORTADORA
Tabela que armazena as transportadoras. Relacionamento Um-Pra-Um com PESSOA.
ESTADO CIVIL
Armazena os tipos de Estado Civil. Vinculada a tabela PESSOA_FISICA através de um relacionamento Um-Para-Muitos.
NÍVEL DE FORMAÇÃO
Armazena os tipos de Nível de Formação. Vinculada a tabela PESSOA_FISICA através de um relacionamento Um-Para-Muitos.
Grupo Colaborador
CARGO
Armazena a relação dos Cargos disponíveis na empresa.
SETOR
Armazena os setores disponíveis na Empresa.
COLABORADOR
Armazena os colaboradores da Empresa. Relacionamento Um-Pra-Um com PESSOA.
VENDEDOR
Armazena aqueles colaboradores que são vendedores. Relacionamento Um-Para-Um com a tabela COLABORADOR.
USUÁRIO
Armazena aqueles colaboradores que são usuários da aplicação. Relacionamento Um-Para-Um com a tabela COLABORADOR.
PAPEL
Armazena os papéis (roles) da aplicação. Por exemplo: administrativo, financeiro, cobrança, estoque, etc.
FUNÇÃO
Armazena as funções da aplicação. Pode ser uma tela. Exemplos: Cadastro do Cliente. Pode ser um botão específico. Exemplo: Calcular Fluxo de Caixa.
PAPEL FUNÇÃO
É a tabela que armazena o controle de acessos. Essa tabela é o resultado do relacionamento Muitos-Para-Muitos entre as tabelas PAPEL e FUNCAO.
Grupo Empresa
EMPRESA
Armazena os dados da Empresa.
EMPRESA ENDEREÇO
Armazena os endereços da Empresa.
EMPRESA TELEFONE
Armazena os telefones da Empresa.
EMPRESA CONTATO
Armazena os contatos da Empresa.
Grupo Produto
PRODUTO GRUPO
Armazena os grupos de produtos. Exemplo: CANETAS E LAPISEIRAS.
PRODUTO SUBGRUPO
Armazena os subgrupos de produtos. Exemplo: CANETAS ESFEROGRÁFICAS.
PRODUTO
Armazena os produtos. Exemplo: CANETA BIC.
PRODUTO UNIDADE
Armazena as unidades de produto. Exemplo: CAIXA, LOTE, etc.
PRODUTO MARCA
Armazena as marcas de produto. Exemplo: ADIDAS, TILIBRA, etc.
Grupo Financeiro
BANCO
Armazena a relação de bancos (instituições financeiras) do Brasil.
BANCO AGÊNCIA
Armazena as agências bancárias onde a Empresa possui conta.
CONTA/CAIXA
Armazena a relação das contas que a Empresa contém nos bancos. Armazena ainda a relação dos caixas internos da Empresa.
Considerações Finais
Concluímos aqui a análise do módulo Cadastros Base. Estude o DER disponível no github e prepare-se para os demais artigos que virão explicando os demais módulos do ERP.
T2Ti ERP — Aprenda a Desenvolver um ERP
O T2Ti ERP 2.0 é feito em C#, Delphi, Java (RIA e Web) e Lazarus. São cinco projetos diferentes. Que tal aprender a desenvolver esse ERP totalmente grátis? Parece bom?
Acompanhe o canal da T2Ti no Youtube. A T2Ti está postando todos os vídeos do T2Ti ERP 2.0 no Youtube. São quase 300 módulos!
Os vídeos estão organizados em Playlists. Então se inscreva no canal e ative o sininho para receber atualizações sobre as postagens.