Pular para conteúdo

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

  1. Família com ExibirNaSelecao = true: Aparece nos combos de seleção
  2. Família com ExibirNaSelecao = false: Não aparece nos combos de seleção
  3. Nova família do tipo Estoque: Checkbox marcado por padrão
  4. 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 usar ObterFamiliasParaSelecao()

  • 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 true no 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

  1. Acessar banco de dados
  2. Verificar que famílias com TipoFamiliaId = 1 têm ExibirNaSelecao = true
  3. Verificar que famílias com TipoFamiliaId = 2 têm ExibirNaSelecao = false

Cenário 2: Combo de família filtrado

  1. Acessar Cadastros > Mercadorias > Adicionar
  2. Verificar que apenas famílias com ExibirNaSelecao = true aparecem no combo

Cenário 3: Criar nova família tipo Estoque

  1. Acessar Cadastros > Famílias > Adicionar
  2. Selecionar tipo "Estoque"
  3. Verificar que checkbox "Exibir na Seleção" é marcado automaticamente

Cenário 4: Criar nova família tipo Terceiro

  1. Acessar Cadastros > Famílias > Adicionar
  2. Selecionar tipo "Terceiro"
  3. Verificar que checkbox "Exibir na Seleção" é desmarcado automaticamente

Cenário 5: Alterar manualmente

  1. Acessar Cadastros > Famílias > Editar (família tipo Terceiro)
  2. Marcar checkbox "Exibir na Seleção"
  3. Salvar
  4. Verificar que a família agora aparece nos combos de seleção

Cenário 6: Ocultar família tipo Estoque

  1. Acessar Cadastros > Famílias > Editar (família tipo Estoque)
  2. Desmarcar checkbox "Exibir na Seleção"
  3. Salvar
  4. 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.                                 │
└──────────────────────────────────────────────────────────────────────────────┘