Seeders do AgrSis
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:
statesstate_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:
- GeographySeeder - Estados e Cidades (base para endereços)
- AccessTypeSeeder - Tipos de acesso (necessário para usuários)
- ProductTypeSeeder - Tipos de produtos (base para catálogo)
- MeasurementUnitSeeder - Unidades de medida (usado em produtos)
- PaymentMethodSeeder - Métodos de pagamento (usado em transações)
- OrderStatusSeeder - Status de pedidos (fluxo de pedidos)
- QuotationStatusSeeder - Status de cotações (fluxo de licitação)
- 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:freshantes se precisar limpar) - AccessTypeSeeder: Usa
updateOrCreatecom IDs fixos - ProductTypeSeeder: Insere novos registros
- MeasurementUnitSeeder: Insere novos registros
- PaymentMethodSeeder: Insere novos registros
- OrderStatusSeeder: Insere novos registros
- QuotationStatusSeeder: Usa
updateOrCreatecom IDs fixos - SettingsSeeder: Usa
updateOrCreatepela 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:
- Criar usuário administrador inicial:
php artisan tinker
>>> \App\Models\User::factory()->create([
'name' => 'Administrador',
'email' => 'admin@agrsis.com.br',
'password' => bcrypt('senha_segura'),
]);
- Configurar planos de assinatura (se necessário)
- Cadastrar modelos de contrato (se necessário)
- Personalizar as configurações do sistema através da tabela
settings
Estatísticas Totais
| Seeder | Tabela(s) | Registros |
|---|---|---|
| GeographySeeder | states, state_cities | 27 + ~220 |
| AccessTypeSeeder | access_types | 3 |
| ProductTypeSeeder | product_types | 21 |
| MeasurementUnitSeeder | measurement_units | 31 |
| PaymentMethodSeeder | payment_methods | 8 |
| OrderStatusSeeder | order_statuses | 14 |
| QuotationStatusSeeder | quotation_statuses | 16 |
| SettingsSeeder | settings | 41 |
| TOTAL | 8 tabelas | ~381 registros |
Contribuindo
Ao adicionar novos seeders:
- Mantenha a nomenclatura padrão:
NomeSeeder.php - Adicione documentação no código
- Use
updateOrCreatequando possível para idempotência - Adicione o seeder no
DatabaseSeeder.phpna ordem correta - Atualize este README.md
Última atualização: 2025-12-04 Versão: 1.0.0