Aqui eu detalho a lista de tabelas e suas funções no sistema, que serão utilizadas no nosso projeto. O SQL desse projeto encontra-se no arquivo ‘banco_de_dados.sql’ que está na raiz do projeto, porém não será necessário utilizá-lo, pois vamos aprender a usar o recurso de migração do Laravel através de comandos Artisan.
Tabelas de cadastros:
- account_plans (registros de planos de contas)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- classification (Ex: 1.22.19.2)
- title (Ex: Receitas, Despesas, Matéria-Prima, Uso e Consumo)
- plangroup (id do registro pai)
- username (usuário que modificou o registro)
- status (ativo, inativo)
- recipeexpense (‘R’ ou ‘E’)
- banks (registros de bancos)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- title (nome do banco)
- bank (nome do banco: Bradesco, Caixa, Banco do Brasil, Itaú)
- agency (número da agência)
- account (número da conta)
- account_type (tipo da conta: corrente, poupança, aplicação, salário)
- bank_number (código do banco: 237, 104, 001, 341)
- check_emitter (emite cheques?)
- username (usuário que modificou o registro)
- status (ativo, inativo)
- boxes (registro de caixas/carteiras)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- title (nome do caixa/carteira)
- username (usuário que modificou o registro)
- status (ativo, inativo)
- cards (registro de cartões de crédito)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- bill_day (dia de vencimento da fatura)
- title (nome do cartão)
- brand (Ex: Mastercard, Visa, Hiper, Dinners Club, etc)
- best_after (melhor dia de compra)
- limit
- username (usuário que modificou o registro)
- status (ativo, inativo)
- costs (registro de centros de custos/categorias)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- title (nome do centro de custos/categoria. Ex: Reforma da casa, transportes, alimentação, etc)
- username (usuário que modificou o registro)
- status (ativo, inativo)
- customers (registros de clientes)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- type (F: pessoa física, J: pessoa jurídica)
- title (nome do cliente)
- razao_social
- cpfcnpj
- ie (número da inscrição estadual)
- im (número da inscrição municipal)
- bank (dados bancários: banco)
- agency (dados bancários: agência)
- account (dados bancários: conta)
- address
- neighborhood
- cep
- city
- state
- phone1
- phone2
- phone3
- phone4
- obs
- username (usuário que modificou o registro)
- status (ativo, inativo)
- document_types (registros de tipos de documentos)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- title (nome do tipo de documentos. Ex: : dinheiro, cheque, cartão, promissória, recibo, etc)
- vinculapgto (permite vincular pagamentos? Ex: faturas, duplicatas, boletos)
- duplicadoc (permite duplicar o document_number do movimento)
- username (usuário que modificou o registro)
- status (ativo, inativo)
- event_types (registro de tipos de eventos)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- title (nome do tipo de eventos. Ex: débito em conta, crédito em conta, depósito, transferência, estorno, etc)
- username (usuário que modificou o registro)
- status (ativo, inativo)
- providers (registros de fornecedores)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- type (F: pessoa física, J: pessoa jurídica)
- title (nome do fornecedor)
- razao_social
- cpfcnpj
- ie (número da inscrição estadual)
- im (número da inscrição municipal)
- bank (dados bancários: banco)
- agency (dados bancários: agência)
- account (dados bancários: conta)
- address
- neighborhood
- cep
- city
- state
- phone1
- phone2
- phone3
- phone4
- obs
- username (usuário que modificou o registro)
- status (ativo, inativo)
Tabelas de movimentos:
- movements (registro de movimentos financeiros de contas a pagar/pagas e/ou contas a receber/recebidas)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- banks_id (vínculo com a tabela de bancos)
- boxes_id (vínculo com a tabela de caixas/carteiras)
- cards_id (vínculo com a tabela de cartões)
- plannings_id (vínculo com a tabela de planejamentos e metas)
- costs_id (vínculo com a tabela de centros de custos/categorias)
- event_types_id (vínculo com a tabela de tipos de eventos)
- providers_id (vínculo com a tabela de fornecedores)
- customers_id (vínculo com a tabela de clientes)
- document_types_id (vínculo com a tabela de tipos de documentos)
- account_plans_id (vínculo com a tabela de planos de contas)
- order_number (número de ordem interna)
- document_number (número de documento interno)
- recipeexpense (‘R’ ou ‘E’)
- date (data do registro)
- bill_date (data de vencimento do registro)
- value (valor do registro)
- date_consolidation (data da baixa do registro)
- value_consolidation (valor da baixa do registro)
- title (nome do registro)
- contabil (‘S’ ou ‘N’. Controla se o pagamento irá movimentar o saldo do banco/caixa/carteira na baixa)
- user_consolidation (usuário que fez a baixa do registro)
- obs (observações do registro)
- username (usuário que modificou o registro)
- status (A: aberto, B: baixado, C: cancelado, G: agrupado, V: vinculado, O: baixa parcial, P: parcial)
- movement_banks (registro de movimentos financeiros de banco)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- banks_id (vínculo com a tabela de bancos)
- costs_id (vínculo com a tabela de centros de custos/categorias)
- document_types_id (vínculo com a tabela de tipos de documentos)
- event_types_id (vínculo com a tabela de tipos de eventos)
- moviment_checks_id (vínculo com a tabela de movimentos de cheques)
- transfers_id (vínculo com a tabela de transferências)
- movements_id (vínculo com a tabela de movimentos)
- providers_id (vínculo com a tabela de fornecedores)
- customers_id (vínculo com a tabela de clientes)
- account_plans_id (vínculo com a tabela de planos de contas)
- order_number (número de ordem interna)
- document_number (número de documento interno)
- recipeexpense (‘R’ ou ‘E’)
- date (data do registro)
- bill_date (data de vencimento do registro)
- value (valor do registro)
- date_consolidation (data da baixa do registro)
- value_consolidation (valor da baixa do registro)
- title (nome do registro)
- contabil (‘S’ ou ‘N’. Controla se o pagamento irá movimentar o saldo do banco)
- obs (observações do registro)
- username (usuário que modificou o registro)
- status (A: aberto, B: baixado, C: cancelado)
- movement_boxes (registro de movimentos financeiros de caixa/carteira)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- boxes_id (vínculo com a tabela de caixas/carteiras)
- costs_id (vínculo com a tabela de centros de custos/categorias)
- document_types_id (vínculo com a tabela de tipos de documentos)
- event_types_id (vínculo com a tabela de tipos de eventos)
- movement_checks_id (vínculo com a tabela de movimentos de cheques)
- transfers_id (vínculo com a tabela de transferências)
- movements_id (vínculo com a tabela de movimentos)
- account_plans_id (vínculo com a tabela de planos de contas)
- customers_id (vínculo com a tabela de clientes)
- providers_id (vínculo com a tabela de fornecedores)
- order_number (número de ordem interna)
- document_number (número de documento interno)
- recipeexpense (‘R’ ou ‘E’)
- date (data do registro)
- bill_date (data de vencimento do registro)
- value (valor do registro)
- date_consolidation (data da baixa do registro)
- value_consolidation (valor da baixa do registro)
- title (nome do registro)
- contabil (‘S’ ou ‘N’. Controla se o pagamento irá movimentar o saldo do banco)
- obs (observações do registro)
- username (usuário que modificou o registro)
- status (A: aberto, B: baixado, C: cancelado, O: baixa parcial, P: parcial)
- movement_cards (registro de movimento financeiro de cartão)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- cards_id (vínculo com a tabela de cartões)
- movements_id (vínculo com a tabela de movimentos)
- banks_id (vínculo com a tabela de bancos)
- boxes_id (vínculo com a tabela de caixas/carteiras)
- document_types_id (vínculo com a tabela de tipos de documentos)
- event_types_id (vínculo com a tabela de tipos de eventos)
- account_plans_id (vínculo com a tabela de planos de contas)
- costs_id (vínculo com a tabela de centros de custos/categorias)
- customers_id (vínculo com a tabela de clientes)
- providers_id (vínculo com a tabela de fornecedores)
- order_number (número de ordem interna)
- document_number (número de documento interno)
- bill_date (data de vencimento do registro)
- title (nome do registro)
- recipeexpense (‘R’ ou ‘E’)
- date (data do registro)
- value (valor do registro)
- date_consolidation (data da baixa do registro)
- value_consolidation (valor da baixa do registro)
- contabil (‘S’ ou ‘N’. Controla se o pagamento irá movimentar o saldo do banco)
- obs (observações do registro)
- username (usuário que modificou o registro)
- status (A: aberto, B: baixado, C: cancelado)
- movement_checks (registro de movimento financeiro de cheque)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- banks_id (vínculo com a tabela de bancos)
- boxes_id (vínculo com a tabela de caixas/carteiras)
- costs_id (vínculo com a tabela de centros de custos/categorias)
- event_types_id (vínculo com a tabela de tipos de eventos)
- providers_id (vínculo com a tabela de fornecedores)
- account_plans_id (vínculo com a tabela de planos de contas)
- movements_id (vínculo com a tabela de movimentos)
- transfers_id (vínculo com a tabela de transferências)
- order_number (número de ordem interna)
- document_number (número de documento interno)
- box_provider (C: caixa, F: fornecedor)
- check_number (número do cheque)
- check_name (nome no qual o cheque foi emitido)
- check_date (data de emissão do cheque)
- date (data do registro)
- value (valor do registro)
- title (nome do registro)
- contabil (‘S’ ou ‘N’. Controla se o pagamento irá movimentar o saldo do banco)
- obs (observações do registro)
- username (usuário que modificou o registro)
- status (A: aberto, B: baixado, C: cancelado, O: baixa parcial, P: parcial)
- plannings (registros de planejamentos e metas)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- account_plans_id (vínculo com a tabela de planos de contas)
- costs_id (vínculo com a tabela de centros de custos/categorias)
- order_number (número de ordem interna)
- document_number (número de documento interno)
- recipeexpense (‘R’ ou ‘E’)
- customers_id (vínculo com a tabela de clientes)
- providers_id (vínculo com a tabela de fornecedores)
- date (data do registro)
- bill_date (data de vencimento do registro)
- title (nome do registro)
- value (valor do registro)
- parcels (número de parcelas que serão geradas nos movimentos de contas a pagar/receber)
- obs (observações do registro)
- username (usuário que modificou o registro)
- status (A: aberto, B: finalizado, C: cancelado)
- transfers (registros de transferências entre bancos e/ou caixas)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- banks_id (vínculo com a tabela de bancos)
- boxes_id (vínculo com a tabela de caixas/carteiras)
- costs_id (vínculo com a tabela de centros de custos/categorias)
- account_plans_id (vínculo com a tabela de planos de contas)
- document_types_id (vínculo com a tabela de tipos de documentos)
- event_types_id (vínculo com a tabela de tipos de eventos)
- banks_dest (vínculo com a tabela de bancos de destino)
- boxes_dest (vínculo com a tabela de caixas/carteiras de destino)
- costs_dest (vínculo com a tabela de centros de custos/categorias de destino)
- account_plans_dest (vínculo com a tabela de planos de contas de destino)
- order_number (número de ordem interna)
- document_number (número de documento interno)
- radio_source (banco, caixa/carteira)
- radio_destination (banco, caixa/carteira)
- date_consolidation (data da baixa do registro)
- value_consolidation (valor da baixa do registro)
- title (nome do registro)
- check_numberr (número do cheque)
- check_name (nome no qual o cheque foi emitido)
- check_date (data de emissão do cheque)
- contabil (‘S’ ou ‘N’. Controla se o pagamento irá movimentar o saldo do banco)
- obs (observações do registro)
- username (usuário que modificou o registro)
- status (A: aberto, B: baixado, C: cancelado)
Tabelas de relacionamentos:
- movements_movement_cards (vínculo dos movimentos de contas a pagar/receber com a tabela de movimentos de cartões)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- cards_id (vínculo com a tabela de cartões)
- movements_id (vínculo com a tabela de movimentos)
- bill_date (data de vencimento do lançamento)
- movement_mergeds (vínculo de movimentos entre si)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- movements_id (vínculo com a tabela de movimentos: registro pai)
- movements_mergeds (vínculo com a tabela de movimentos: registros filhos)
- movement_recurrents (registro de movimentos que serão criados automaticamente no CRON do sistema)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- movements_id (vínculo com a tabela de movimentos)
- movement_cards_id (vínculo com a tabela de movimentos de cartões)
- users_parameters (vínculo da tabela de usuários e a tabela de perfis)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- mailler (receber os alertas diários e semanais de vencimentos de contas)
- users_id (vínculo com a tabela de usuários)
- roles_id (vínculo com a tabela de regras de acesso)
Tabelas de sistema:
- balances (registro de saldos de bancos, caixas, cartões e planejamentos)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- banks_id (vínculo com a tabela de bancos)
- boxes_id (vínculo com a tabela de caixas/carteiras)
- cards_id (vínculo com a tabela de cartões)
- plannings_id (vínculo com a tabela de planejamentos e metas)
- date (data do registro)
- value (valor do saldo)
- regs (registro de atividades de exclusão e edição)
- id (primary key, auto_increment)
- parameters_id (vínculo com a tabela de perfis)
- users_id (vínculo com a tabela de usuários)
- log_type (login, noLogin)
- function (Ex: banks, boxes, cards, movements, etc)
- content (conteúdo do log)
- username (usuário que modificou o registro)
- roles (registro de regras de acesso do sistema)
- id (primary key, auto_increment)
- title (dev, admin, user, accounter)
- knowledge (base de conhecimento com dicas de uso para exibição aleatóreas)
- id (primary key, auto_increment)
- title (descrição da dica)
- parameters (registro de perfis)
- id (primary key, auto_increment)
- title (nome do perfil)
- razao_social
- ie (número da inscrição estadual)
- im (número da inscrição municipal)
- cpfcnpj
- type (F: pessoa física, J: pessoa jurídica)
- address
- neighborhood
- city
- state
- cep
- phone1
- phone2
- logo (logomarca da empresa)
- bill_date (data de vencimento do acesso)
- plans_id (vínculo com a tabela de planos de acesso)
- plans (planos de uso do sistema)
- id (primary key, auto_increment)
- title (nome do registro)
- value (valores dos planos)
- users (registro de usuários)
- id (primary key, auto_increment)
- name (nome do usuário)
- username (login de acesso: email)
- password
- language (língua que utiliza o sistema)
- last_parameter (último perfil acessado)
Migrations
Vamos criar todas as tabelas com os comandos abaixo:
php artisan make:migration knowledge --create=knowledge
php artisan make:migration plans --create=plans
php artisan make:migration roles --create=roles
php artisan make:migration parameters --create=parameters
php artisan make:migration users_parameters --create=users_parameters
php artisan make:migration account_plans --create=account_plans
php artisan make:migration costs --create=costs
php artisan make:migration document_types --create=document_types
php artisan make:migration event_types --create=event_types
php artisan make:migration banks --create=banks
php artisan make:migration boxes --create=boxes
php artisan make:migration cards --create=cards
php artisan make:migration customers --create=customers
php artisan make:migration providers --create=providers
php artisan make:migration plannings --create=plannings
php artisan make:migration transfers --create=transfers
php artisan make:migration movements --create=movements
php artisan make:migration movement_banks --create=movement_banks
php artisan make:migration movement_boxes --create=movement_boxes
php artisan make:migration movement_cards --create=movement_cards
php artisan make:migration movement_checks --create=movement_checks
php artisan make:migration balances --create=balances
php artisan make:migration movements_movement_cards --create=movements_movement_cards
php artisan make:migration movement_mergeds --create=movement_mergeds
php artisan make:migration movement_recurrents --create=movement_recurrents
php artisan make:migration regs --create=regs
Como parâmetro do comando de criação do migration, pode-se utilizar o ‘–create’ para criar novas tabelas no banco e o ‘–table’ para editar tabelas já existentes.
Agora nós precisamos editar cada arquivo dentro da pasta ‘database/migrations’ com os campos de cada tabela. Siga o exemplo em https://github.com/Maksoud/reiniciando/blob/master/database/migrations/2020_07_18_045358_parameters.php
A tabela Plans e Roles deverão existir mesmo se não houver outra tabela relacionada, por isso, não adicione o ‘->onDelete(‘cascade’);’, conforme os arquivos em https://github.com/Maksoud/reiniciando/tree/master/database/migrations.
A lista de tipos aceitos no Laravel encontram-se em https://laravel.com/docs/7.x/migrations#creating-columns.
Após a criação dos campos nos arquivos gerados em ‘database/migrations/’, Execute todas as operações de criação dos campos e tabelas no banco de dados:
php artisan migrate
Em caso de falhas, você pode executar o seguinte comando para desfazer as alterações e corrigir as falhas:
php artisan migrate:rollback
Ou você pode redefinir todo o projeto e remover os dados das tabelas, digitando o comando a seguir:
php artisan migrate:fresh
Esse projeto possui todo o código disponível em https://github.com/Maksoud/reiniciando e o projeto está hospedado em https://reiniciando.maksoud.dev/. Deixe seu comentário abaixo e colabore com esse projeto.
Você precisa fazer o login para publicar um comentário.