Política de Venda vs Natureza de Operação
Visão Geral
Este documento descreve a regra de negócio que determina quando o campo Política de Venda (PlanoComercialPrecoVenda) é obrigatório ou proibido ao adicionar itens a um pedido.
A obrigatoriedade depende do Tipo de Natureza de Operação configurado no pedido.
Implementação
A validação está implementada em:
- Arquivo: src/Nelmetais.SGE.Business/Services/Comercial/PedidoItemService.cs
- Método: ValidarPlanoComercialPrecoVenda() (linhas 596-618)
Regra de Negócio
Quando a Política de Venda É OBRIGATÓRIA
Condição: Natureza de Operação = Venda (TipoNaturezaOperacaoEnum.Venda = 1)
if (pedidoItem.Pedido?.NaturezaOperacao?.TipoNaturezaOperacao == TipoNaturezaOperacaoEnum.Venda)
{
if (pedidoItem.PlanoComercialPrecoVendaId is null)
{
Notify("É obrigatório informar o plano comercial do preço de venda para esse tipo de natureza operação de Venda.");
return false;
}
}
Comportamento esperado: - Campo habilitado na interface - Campo é obrigatório (required) - Sistema valida e rejeita se não informado
Quando a Política de Venda NÃO DEVE ser Informada
Condição: Natureza de Operação ≠ Venda (todos os outros tipos)
else
{
if (pedidoItem.PlanoComercialPrecoVendaId is not null)
{
Notify("Não deve ser informado o plano comercial do preço de venda para esse tipo de natureza operação de Venda.");
return false;
}
}
Comportamento esperado: - Campo desabilitado/oculto na interface - Campo não deve ser preenchido - Sistema rejeita se for informado algum valor
Tabela de Referência
| Natureza de Operação | Código | Política de Venda | Comportamento |
|---|---|---|---|
| Venda | 1 | OBRIGATÓRIA | Campo habilitado e required |
| Devolução Venda | 2 | PROIBIDA | Campo desabilitado/oculto |
| Compra | 3 | PROIBIDA | Campo desabilitado/oculto |
| Devolução Compra | 4 | PROIBIDA | Campo desabilitado/oculto |
| Transferência | 5 | PROIBIDA | Campo desabilitado/oculto |
| Outros | 7 | PROIBIDA | Campo desabilitado/oculto |
| Beneficiamento | 8 | PROIBIDA | Campo desabilitado/oculto |
Mensagens de Validação
Mensagem de Obrigatoriedade
É obrigatório informar o plano comercial do preço de venda para esse tipo de natureza operação de Venda.
Mensagem de Proibição
Não deve ser informado o plano comercial do preço de venda para esse tipo de natureza operação de Venda.
Fluxo de Validação
graph TD
A[Item do Pedido] --> B{Natureza = Venda?}
B -->|Sim| C{Política Venda informada?}
B -->|Não| D{Política Venda informada?}
C -->|Sim| E[✓ Validação OK]
C -->|Não| F[✗ Erro: Campo obrigatório]
D -->|Não| G[✓ Validação OK]
D -->|Sim| H[✗ Erro: Campo não deve ser informado]
URL de Teste
Referências
- Enum:
src/Nelmetais.SGE.Business/Enums/Cadastros/TipoNaturezaOperacaoEnum.cs - Model:
src/Nelmetais.SGE.Business/Models/Comercial/PedidoItem.cs - ViewModel:
src/Nelmetais.SGE.WebApp/Areas/Comercial/ViewModels/PedidoItemViewModel.cs - Controller:
src/Nelmetais.SGE.WebApp/Areas/Comercial/Controllers/PedidoItemController.cs - Service:
src/Nelmetais.SGE.Business/Services/Comercial/PedidoItemService.cs
Notas Importantes
- A validação ocorre no backend (Service layer) durante a operação de
AddouUpdatede PedidoItem - A interface (frontend) deve refletir essa regra habilitando/desabilitando o campo conforme a Natureza de Operação
- Esta regra garante que apenas operações de Venda tenham políticas comerciais associadas
- Para operações de Compra, a lógica de preços segue regras diferentes (Ordem de Compra)
Última atualização: 2025-11-07 Versão: 1.0