Filtro de Famílias nos Combos de Seleção
Task: NH-221
Branch: feature/familia-exibir-nos-combos-NH-221
Descrição
Esta funcionalidade permite controlar quais famílias aparecem nos combos/selects de seleção do sistema. Foi adicionado um campo ExibirNaSelecao na entidade Familia que determina se a família deve aparecer nas listas de seleção.
Por padrão, todas as famílias do tipo Estoque (TipoFamiliaId = 1) são marcadas automaticamente para exibição, enquanto famílias do tipo Terceiro (TipoFamiliaId = 2) não são exibidas.
Comportamento
Regras de Exibição
- Família com
ExibirNaSelecao = true: Aparece nos combos de seleção - Família com
ExibirNaSelecao = false: Não aparece nos combos de seleção - Nova família do tipo Estoque: Checkbox marcado por padrão
- Nova família do tipo Terceiro: Checkbox desmarcado por padrão
Fluxo de Decisão
Usuário acessa tela com combo de Família
│
▼
Sistema busca famílias via ObterFamiliasParaSelecao()
│
▼
Filtra apenas famílias com ExibirNaSelecao = true
│
▼
Ordena por Código
│
▼
Exibe no combo de seleção
Comportamento no Cadastro de Família
Usuário acessa Cadastro de Família
│
▼
Seleciona Tipo de Família
│
├── Estoque (ID = 1)
│ │
│ └── Marca automaticamente "Exibir na Seleção"
│
└── Terceiro (ID = 2)
│
└── Desmarca automaticamente "Exibir na Seleção"
│
▼
Usuário pode alterar manualmente
│
▼
Ao salvar, mantém a escolha do usuário
Campo de Banco de Dados
Tabela Familia
| Campo | Tipo | Nullable | Default | Descrição |
|---|---|---|---|---|
| ExibirNaSelecao | boolean | NOT NULL | false | Indica se a família aparece nos combos |
Telas Afetadas
Cadastro de Família
- Controller:
FamiliaController.cs - View:
_Familia.cshtml - Campo: Checkbox "Exibir na Seleção"
Telas com Combo de Família
O filtro foi aplicado em todas as telas que possuem combo de seleção de família:
| Área | Tela | Controller |
|---|---|---|
| Comercial | Tomada de Preço | TomadaPrecoController.cs |
| Comercial | Ordem de Compra | OrdemCompraController.cs |
| Comercial | Relatório Levantamento Compra | RelatorioLevantamentoCompraController.cs |
| Cadastros | Mercadoria | MercadoriaController.cs |
| Cadastros | Balança | BalancaController.cs |
| Cadastros | Mercadoria Tipo Serviço | MercadoriaTipoServicoController.cs |
| Cadastros | Política de Corte | PoliticaCorteController.cs |
| Cadastros | Parâmetro Corte Família | ParametroCorteFamiliaController.cs |
| Cadastros | Manutenção Custo Mercadoria | ManutencaoCustoMercadoriaController.cs |
| Cadastros | Mercadoria Fornecedor SGE | MercadoriaFornecedorSgeController.cs |
| Administrativo | Mercadoria Fornecedor | MercadoriaFornecedorController.cs |
| Administrativo | Plano Comissão Venda | PlanoComissaoVendaController.cs |
| Administrativo | Plano Comercial Preço Venda | PlanoComercialPrecoVendaController.cs |
| Administrativo | Família Grupo | FamiliaGrupoController.cs |
| Administrativo | Família Grupo Comissão Venda | FamiliaGrupoComissaoVendaController.cs |
Arquivos Modificados
Models
src/Nelmetais.SGE.Business/Models/Cadastros/Familia.cs- Adicionada propriedade
ExibirNaSelecao
Interfaces
src/Nelmetais.SGE.Business/Interfaces/Cadastros/IFamiliaRepository.cs- Novo método:
ObterFamiliasParaSelecao()
Repositories
src/Nelmetais.SGE.Data/Repositories/Cadastros/FamiliaRepository.cs- Implementação do método com filtro
ExibirNaSelecao = true
Configurations
src/Nelmetais.SGE.Data/Configurations/Cadastros/FamiliaConfiguration.cs- Configuração do campo com
HasDefaultValue(false)
Controllers
src/Nelmetais.SGE.WebApp/Controllers/MainController.cs-
Método
PopularFamilia()alterado para usarObterFamiliasParaSelecao() -
15 controllers atualizados para usar o novo método filtrado
ViewModels
src/Nelmetais.SGE.WebApp/Areas/Cadastros/ViewModels/FamiliaViewModel.cs- Adicionada propriedade
ExibirNaSelecao - Inicialização padrão como
trueno construtor
Views
src/Nelmetais.SGE.WebApp/Areas/Cadastros/Views/Familia/_Familia.cshtml- Adicionado checkbox "Exibir na Seleção"
- Adicionado JavaScript para auto-marcar/desmarcar baseado no tipo
Migrations
src/Nelmetais.SGE.Data/Migrations/20251203190827_AddExibirNaSelecaoToFamilia.cs- Criação da coluna
ExibirNaSelecao - UPDATE automático para marcar famílias tipo Estoque
Migration
A migration realiza as seguintes operações:
-- Adiciona coluna com valor padrão false
ALTER TABLE "Familia" ADD COLUMN "ExibirNaSelecao" boolean NOT NULL DEFAULT false;
-- Marca automaticamente famílias do tipo Estoque
UPDATE "Familia"
SET "ExibirNaSelecao" = true
WHERE "TipoFamiliaId" = 1;
Como Testar
Cenário 1: Verificar famílias existentes
- Acessar banco de dados
- Verificar que famílias com
TipoFamiliaId = 1têmExibirNaSelecao = true - Verificar que famílias com
TipoFamiliaId = 2têmExibirNaSelecao = false
Cenário 2: Combo de família filtrado
- Acessar Cadastros > Mercadorias > Adicionar
- Verificar que apenas famílias com
ExibirNaSelecao = trueaparecem no combo
Cenário 3: Criar nova família tipo Estoque
- Acessar Cadastros > Famílias > Adicionar
- Selecionar tipo "Estoque"
- Verificar que checkbox "Exibir na Seleção" é marcado automaticamente
Cenário 4: Criar nova família tipo Terceiro
- Acessar Cadastros > Famílias > Adicionar
- Selecionar tipo "Terceiro"
- Verificar que checkbox "Exibir na Seleção" é desmarcado automaticamente
Cenário 5: Alterar manualmente
- Acessar Cadastros > Famílias > Editar (família tipo Terceiro)
- Marcar checkbox "Exibir na Seleção"
- Salvar
- Verificar que a família agora aparece nos combos de seleção
Cenário 6: Ocultar família tipo Estoque
- Acessar Cadastros > Famílias > Editar (família tipo Estoque)
- Desmarcar checkbox "Exibir na Seleção"
- Salvar
- Verificar que a família NÃO aparece mais nos combos de seleção
Interface do Usuário
Checkbox no Cadastro de Família
O checkbox está localizado na seção "Disponibilidade nos Cadastros":
┌──────────────────────────────────────────────────────────────────────────────┐
│ Disponibilidade nos Cadastros │
├──────────────────────────────────────────────────────────────────────────────┤
│ ☑ Exibir na Seleção │
│ Quando marcado, esta família estará disponível para seleção em telas │
│ como Mercadoria, Tomada de Preço, Ordem de Compra e outras. Famílias do │
│ tipo Estoque são marcadas automaticamente. │
└──────────────────────────────────────────────────────────────────────────────┘