CD_PERFIL — Parâmetro de Perfil (Tabela de Preço)
Tela de configuração: MFA006 — Parâmetros de Tabela de Preço Localização: Sem aba específica (campo no corpo principal do formulário) Tabela:
PARMTABPRECO.CD_PERFILTipo:DOM_INTEGER(opcional / nullable) Valor padrão: Nenhum (campo em branco)
O que este parâmetro faz
O campo CD_PERFIL permite vincular uma regra de tabela de preço a um perfil de item específico. Quando preenchido, a regra de preço só se aplica a produtos que pertençam ao perfil informado. Quando em branco, a regra ignora esse filtro e se aplica indistintamente quanto ao perfil do item.
Na resolução de tabelas de preço (RETORNA_TABPRECO), o sistema itera sobre os perfis associados ao item via ITEMPERFIL e busca uma regra em PARMTABPRECO cujo CD_PERFIL coincida. Isso permite criar regras de preço segmentadas por grupo de produtos (perfis).
Telas impactadas
| Tela | Relação |
|---|---|
| MFA006 | Tela de cadastro/manutenção do parâmetro |
Campos envolvidos
| Campo | Tabela | Tipo | Descrição |
|---|---|---|---|
CD_PERFIL | PARMTABPRECO | DOM_INTEGER | Código do perfil de item vinculado à regra |
DS_PERFIL | PERFIL | DOM_VARCHAR60 | Descrição do perfil (exibida no campo edtDS_PERFIL ao lado) |
Constraint de integridade:
RPARMTABPRECO_PERFIL: FK dePARMTABPRECO.CD_PERFIL→PERFIL(CD_PERFIL)
Opções disponíveis
O campo é um código numérico livre — não possui lista fixa de valores. O usuário pode:
- Deixar em branco — a regra ignora o filtro de perfil (aplica-se a todos os perfis).
- Informar um código válido — a regra passa a exigir que o item pertença ao perfil informado para que a tabela de preço seja considerada.
Deixar em branco (sem filtro de perfil)
| O que faz | Detalhe |
|---|---|
| A regra de preço ignora o perfil do item | Qualquer item, independentemente de seu perfil, pode usar esta regra de tabela de preço |
Simulação passo a passo
- Acesse MFA006 — Parâmetros de Tabela de Preço.
- Preencha os filtros desejados (empresa, tabela de preço, etc.).
- No campo Perfil (
edtCD_PERFIL), não informe nenhum valor — deixe-o em branco. - Preencha os demais campos da regra (condição de pagamento, tabela de preço, etc.).
- Clique em Salvar (Ctrl+S ou botão Salvar).
- A regra será gravada em
PARMTABPRECOcomCD_PERFIL = NULL.
Resultado esperado: Na resolução de preço (RETORNA_TABPRECO), esta regra concorrerá independentemente do perfil do item consultado. Ela terá menor prioridade que regras com perfil preenchido (conforme o ORDER BY da procedure).
Importante: Regras sem perfil têm menor peso no critério de desempate do
RETORNA_TABPRECO. O sistema ordena as regras e prioriza aquelas com mais campos preenchidos (perfil conta como 1 ponto no ranking).
Informar um código de perfil válido
| O que faz | Detalhe |
|---|---|
| Restringe a regra a itens do perfil informado | Apenas itens associados ao perfil via ITEMPERFIL utilizarão esta regra |
Simulação passo a passo
- Acesse MFA006 — Parâmetros de Tabela de Preço.
- Preencha os filtros desejados (empresa, tabela de preço, etc.).
- No campo Perfil (
edtCD_PERFIL), pressione F9 para abrir a busca de perfis. - Selecione o perfil desejado (ex: perfil
1— "Produto Acabado"). - O código será preenchido automaticamente e a descrição aparecerá no campo
edtDS_PERFILao lado. - Preencha os demais campos da regra (condição de pagamento, tabela de preço, etc.).
- Clique em Salvar (Ctrl+S ou botão Salvar).
- A regra será gravada em
PARMTABPRECOcomCD_PERFIL = 1.
Resultado esperado: Na resolução de preço, esta regra só será considerada para itens que possuam o perfil 1 cadastrado na tabela ITEMPERFIL. Para itens com outros perfis ou sem perfil, esta regra será ignorada.
Importante: O campo também aceita digitação direta do código numérico, sem necessidade de usar F9. Ao sair do campo (evento
Exit), o sistema executaConsultaRegistropara atualizar a grade de consulta.
Regra Geral de Resolução de Tabela de Preço
A procedure RETORNA_TABPRECO segue este fluxo para encontrar a tabela de preço aplicável:
- Para o item informado, busca-se todos os perfis em
ITEMPERFIL. - Para cada perfil, executa-se uma query dinâmica em
PARMTABPRECOfiltrandoP.CD_PERFIL = <perfil do item>. - Os filtros opcionais da regra (empresa, condição de pagamento, tipo pessoa, vendedor, região comercial, estado, pessoa, grupo, subgrupo, seção, perfil, quantidade mínima/máxima, tela) são aplicados com a lógica
COALESCE: se o campo da regra estiver nulo, o filtro é ignorado. - A primeira regra encontrada (com maior pontuação de prioridade) define a tabela de preço retornada.
- Se nenhuma regra com perfil for encontrada, uma segunda busca é feita sem filtro de perfil, permitindo que regras genéricas sirvam como fallback.
Tabela Comparativa Resumida
| Cenário | CD_PERFIL | Efeito na resolução de preço |
|---|---|---|
| Regra genérica (todos os itens) | NULL | Válida para qualquer item, menor prioridade no desempate |
| Regra por perfil específico | Código válido (ex: 1, 5, 10) | Válida apenas para itens associados ao perfil via ITEMPERFIL |
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Evidência |
|---|---|---|
TfrmMFA006.edtCD_PERFILKeyDown | source/MFA006/UMFA006.pas:668 | Lookup F9 para tabela PERFIL |
TfrmMFA006.edtCD_PERFILExit | source/MFA006/UMFA006.pas:757 | Dispara ConsultaRegistro ao sair do campo |
Referências SQL diretas ao campo CD_PERFIL em scripts
| Procedure/View | Arquivo | Evidência |
|---|---|---|
RETORNA_TABPRECO | Scripts/RETORNA_TABPRECO.sql:105 | and P.CD_PERFIL = :V_CD_PERFIL — filtro principal na resolução de preço |
RETORNA_TABPRECO | Scripts/RETORNA_TABPRECO.sql:121 | case coalesce(P.CD_PERFIL,-1) when -1 then 0 else 1 end desc — peso no critério de prioridade |
Candidatas por uso da tabela PARMTABPRECO (sem referência direta ao campo CD_PERFIL)
Estas procedures/views utilizam a tabela PARMTABPRECO, mas não citam o campo CD_PERFIL literalmente. O impacto é indireto (via SELECT * ou outros campos).
| Procedure/View | Arquivo | Evidência |
|---|---|---|
ATUALIZA_PESSOA | Scripts/ATUALIZA_PESSOA.sql:302 | update PARMTABPRECO P |
ATUALIZA_PRECOVENDA | Scripts/ATUALIZA_PRECOVENDA.sql:79 | FROM PARMTABPRECO PP |
CALCULA_MAQUINA | Scripts/CALCULA_MAQUINA.sql:81 | FROM PARMTABPRECO P |
CALCULA_MAQUINAFICHA | Scripts/CALCULA_MAQUINAFICHA.sql:79 | FROM PARMTABPRECO P |
GERA_COMISSAOTABPRECO | Scripts/GERA_COMISSAOTABPRECO.sql:84 | from PARMTABPRECO |
INSERE_ITEMPEDIDO_SERVCANALETA | Scripts/INSERE_ITEMPEDIDO_SERVCANALETA.sql:58 | FROM PARMTABPRECO P |
RETORNA_PRECOITEM | Scripts/RETORNA_PRECOITEM.sql:104 | FROM PARMTABPRECO P |
TRGAD_PARMTABPRECO | Scripts/TRGAD_PARMTABPRECO.sql:5 | Trigger de exclusão da tabela |
VERIFICA_BLOQUEIO | Scripts/VERIFICA_BLOQUEIO.sql:1115 | FROM PARMTABPRECO P |