Banco de Dados

Seeders do AgrSis

Este diretório contém todos os seeders necessários para popular o banco de dados do AgrSis com dados iniciais.

Seeders do AgrSis

Este diretório contém todos os seeders necessários para popular o banco de dados do AgrSis com dados iniciais.

Seeders Disponíveis

1. GeographySeeder

Descrição: Popula as tabelas states e state_cities com todos os estados e principais cidades do Brasil.

Total de Registros:

  • 27 Estados brasileiros
  • ~220 Cidades principais (amostra representativa)

Tabelas Afetadas:

  • states
  • state_cities

Uso Individual:

php artisan db:seed --class=GeographySeeder

2. AccessTypeSeeder

Descrição: Cria os tipos de acesso ao sistema.

Total de Registros: 3 tipos de acesso

Registros:

  • ID 1: Acesso de Cliente
  • ID 2: Acesso de Fornecedor
  • ID 9: Acesso de Administrador

Tabelas Afetadas:

  • access_types

Uso Individual:

php artisan db:seed --class=AccessTypeSeeder

3. ProductTypeSeeder

Descrição: Popula os tipos de produtos agrícolas disponíveis na plataforma.

Total de Registros: 21 tipos de produtos

Exemplos:

  • Fertilizantes
  • Defensivos Agrícolas
  • Herbicidas, Inseticidas, Fungicidas
  • Sementes e Mudas
  • Equipamentos de Irrigação
  • EPIs
  • Produtos Veterinários
  • Etc.

Tabelas Afetadas:

  • product_types

Uso Individual:

php artisan db:seed --class=ProductTypeSeeder

4. MeasurementUnitSeeder

Descrição: Cria as unidades de medida utilizadas nos produtos.

Total de Registros: 31 unidades de medida

Categorias:

  • Peso: kg, g, ton, mg
  • Volume: L, mL, gal
  • Quantidade: un, dz, cx, sc, pac, fd, bomb, bd, tamb, barr
  • Área: ha, m², alq
  • Comprimento: m, cm, km, mm
  • Específicas: @, sc 60kg, sc 50kg, sc 40kg, sc 30kg, sc 25kg, sc 20kg

Tabelas Afetadas:

  • measurement_units

Uso Individual:

php artisan db:seed --class=MeasurementUnitSeeder

5. PaymentMethodSeeder

Descrição: Cria os métodos de pagamento aceitos na plataforma.

Total de Registros: 8 métodos de pagamento

Registros:

  • Boleto Bancário (ativo)
  • PIX (ativo)
  • Cartão de Crédito (ativo)
  • Cartão de Débito (ativo)
  • Transferência Bancária (ativo)
  • Dinheiro (ativo)
  • Depósito em Conta (ativo)
  • Cheque (inativo)

Tabelas Afetadas:

  • payment_methods

Uso Individual:

php artisan db:seed --class=PaymentMethodSeeder

6. OrderStatusSeeder

Descrição: Cria os status possíveis para pedidos.

Total de Registros: 14 status de pedidos

Registros:

  • Rascunho
  • Aguardando Aprovação
  • Aprovado
  • Em Licitação
  • Licitação Finalizada
  • Aguardando Pagamento
  • Pagamento Confirmado
  • Em Fornecimento
  • Fornecimento Parcial
  • Fornecimento Completo
  • Finalizado
  • Cancelado
  • Rejeitado
  • Devolvido

Tabelas Afetadas:

  • order_statuses

Uso Individual:

php artisan db:seed --class=OrderStatusSeeder

7. QuotationStatusSeeder

Descrição: Cria os status possíveis para cotações/licitações.

Total de Registros: 16 status de cotações

Registros (com IDs fixos):

  • ID 1: Enviada para Fornecedor
  • ID 2: Vencedora - Selecionada pelo Cliente
  • ID 3: Confirmada pelo Fornecedor
  • ID 4: Desistência do Fornecedor
  • ID 5: Pagamento Programado
  • ID 6: Pagamento Efetuado
  • ID 7: Tentativa de Pagamento sem Sucesso
  • ID 8: Contrato Gerado
  • ID 9: Contrato Assinado Parcialmente
  • ID 10: Contrato Assinado Completamente
  • ID 11: Liberada para Fornecimento
  • ID 12: Enviada pelo Fornecedor
  • ID 13: Recebida pelo Cliente
  • ID 14: Recebida Parcialmente pelo Cliente
  • ID 15: Devolvida pelo Cliente
  • ID 16: Cancelada pelo Cliente

Tabelas Afetadas:

  • quotation_statuses

Uso Individual:

php artisan db:seed --class=QuotationStatusSeeder

8. SettingsSeeder

Descrição: Popula as configurações padrão do sistema.

Total de Registros: 41 configurações

Grupos de Configuração:

  • Sistema: Nome, versão, contatos de suporte
  • Licitação: Prazos, permissões, diferenças de lances
  • Financeiro: Taxas, multas, juros
  • Entrega: Raio máximo, cálculo de frete
  • Notificação: Preferências de notificações
  • Contrato: Geração, assinatura, prazos
  • Assinatura: Trial, cancelamentos
  • Segurança: Sessão, tentativas de login
  • API: Configurações de integrações externas
  • Manutenção: Modo de manutenção

Tabelas Afetadas:

  • settings

Uso Individual:

php artisan db:seed --class=SettingsSeeder

Uso Geral

Executar Todos os Seeders

Para popular o banco de dados completo com todos os dados iniciais:

php artisan db:seed

ou

php artisan migrate:fresh --seed

⚠️ ATENÇÃO: O comando acima apaga TODOS os dados do banco antes de executar!


Executar Seeder Específico

Para executar apenas um seeder específico:

php artisan db:seed --class=NomeDoSeeder

Exemplos:

php artisan db:seed --class=GeographySeeder
php artisan db:seed --class=AccessTypeSeeder
php artisan db:seed --class=SettingsSeeder

Ordem de Execução

Os seeders são executados na seguinte ordem pelo DatabaseSeeder:

  1. GeographySeeder - Estados e Cidades (base para endereços)
  2. AccessTypeSeeder - Tipos de acesso (necessário para usuários)
  3. ProductTypeSeeder - Tipos de produtos (base para catálogo)
  4. MeasurementUnitSeeder - Unidades de medida (usado em produtos)
  5. PaymentMethodSeeder - Métodos de pagamento (usado em transações)
  6. OrderStatusSeeder - Status de pedidos (fluxo de pedidos)
  7. QuotationStatusSeeder - Status de cotações (fluxo de licitação)
  8. SettingsSeeder - Configurações do sistema (parâmetros gerais)

⚠️ IMPORTANTE: Esta ordem deve ser respeitada pois alguns seeders dependem de dados de outros.


Idempotência

Os seeders foram desenvolvidos para serem idempotentes, ou seja, podem ser executados múltiplas vezes sem causar duplicação de dados:

  • GeographySeeder: Insere novos registros (usar migrate:fresh antes se precisar limpar)
  • AccessTypeSeeder: Usa updateOrCreate com IDs fixos
  • ProductTypeSeeder: Insere novos registros
  • MeasurementUnitSeeder: Insere novos registros
  • PaymentMethodSeeder: Insere novos registros
  • OrderStatusSeeder: Insere novos registros
  • QuotationStatusSeeder: Usa updateOrCreate com IDs fixos
  • SettingsSeeder: Usa updateOrCreate pela chave

Verificação

Após executar os seeders, você pode verificar os registros criados:

# Via Tinker
php artisan tinker

# Verificar estados
>>> \App\Models\State::count()

# Verificar cidades
>>> \App\Models\StateCity::count()

# Verificar tipos de acesso
>>> \App\Models\AccessType::all()

# Verificar configurações
>>> \App\Models\Setting::count()

Ou via SQL direto:

# MySQL/MariaDB
mysql -u usuario -p nome_banco

mysql> SELECT COUNT(*) FROM states;
mysql> SELECT COUNT(*) FROM state_cities;
mysql> SELECT COUNT(*) FROM product_types;
mysql> SELECT COUNT(*) FROM settings;

Troubleshooting

Erro de chave estrangeira

Se encontrar erro de foreign key constraint:

# Desabilite temporariamente as verificações
php artisan tinker
>>> DB::statement('SET FOREIGN_KEY_CHECKS=0;');
>>> Artisan::call('db:seed');
>>> DB::statement('SET FOREIGN_KEY_CHECKS=1;');

Duplicação de dados

Se houver duplicação, limpe o banco antes:

php artisan migrate:fresh --seed

Erro de permissão

Verifique se o usuário do banco tem permissão de INSERT:

GRANT INSERT, SELECT ON database.* TO 'user'@'localhost';
FLUSH PRIVILEGES;

Próximos Passos

Após executar os seeders, você deve:

  1. Criar usuário administrador inicial:
php artisan tinker
>>> \App\Models\User::factory()->create([
    'name' => 'Administrador',
    'email' => 'admin@agrsis.com.br',
    'password' => bcrypt('senha_segura'),
]);
  1. Configurar planos de assinatura (se necessário)
  2. Cadastrar modelos de contrato (se necessário)
  3. Personalizar as configurações do sistema através da tabela settings

Estatísticas Totais

SeederTabela(s)Registros
GeographySeederstates, state_cities27 + ~220
AccessTypeSeederaccess_types3
ProductTypeSeederproduct_types21
MeasurementUnitSeedermeasurement_units31
PaymentMethodSeederpayment_methods8
OrderStatusSeederorder_statuses14
QuotationStatusSeederquotation_statuses16
SettingsSeedersettings41
TOTAL8 tabelas~381 registros

Contribuindo

Ao adicionar novos seeders:

  1. Mantenha a nomenclatura padrão: NomeSeeder.php
  2. Adicione documentação no código
  3. Use updateOrCreate quando possível para idempotência
  4. Adicione o seeder no DatabaseSeeder.php na ordem correta
  5. Atualize este README.md

Última atualização: 2025-12-04 Versão: 1.0.0

Copyright © 2026