Pular para o conteúdo principal

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_PERFIL Tipo: 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​

TelaRelação
MFA006Tela de cadastro/manutenção do parâmetro

Campos envolvidos​

CampoTabelaTipoDescrição
CD_PERFILPARMTABPRECODOM_INTEGERCódigo do perfil de item vinculado à regra
DS_PERFILPERFILDOM_VARCHAR60Descrição do perfil (exibida no campo edtDS_PERFIL ao lado)

Constraint de integridade:

  • RPARMTABPRECO_PERFIL: FK de PARMTABPRECO.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:

  1. Deixar em branco — a regra ignora o filtro de perfil (aplica-se a todos os perfis).
  2. 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 fazDetalhe
A regra de preço ignora o perfil do itemQualquer item, independentemente de seu perfil, pode usar esta regra de tabela de preço

Simulação passo a passo​

  1. Acesse MFA006 — Parâmetros de Tabela de Preço.
  2. Preencha os filtros desejados (empresa, tabela de preço, etc.).
  3. No campo Perfil (edtCD_PERFIL), não informe nenhum valor — deixe-o em branco.
  4. Preencha os demais campos da regra (condição de pagamento, tabela de preço, etc.).
  5. Clique em Salvar (Ctrl+S ou botão Salvar).
  6. A regra será gravada em PARMTABPRECO com CD_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 fazDetalhe
Restringe a regra a itens do perfil informadoApenas itens associados ao perfil via ITEMPERFIL utilizarão esta regra

Simulação passo a passo​

  1. Acesse MFA006 — Parâmetros de Tabela de Preço.
  2. Preencha os filtros desejados (empresa, tabela de preço, etc.).
  3. No campo Perfil (edtCD_PERFIL), pressione F9 para abrir a busca de perfis.
  4. Selecione o perfil desejado (ex: perfil 1 — "Produto Acabado").
  5. O código será preenchido automaticamente e a descrição aparecerá no campo edtDS_PERFIL ao lado.
  6. Preencha os demais campos da regra (condição de pagamento, tabela de preço, etc.).
  7. Clique em Salvar (Ctrl+S ou botão Salvar).
  8. A regra será gravada em PARMTABPRECO com CD_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 executa ConsultaRegistro para 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:

  1. Para o item informado, busca-se todos os perfis em ITEMPERFIL.
  2. Para cada perfil, executa-se uma query dinâmica em PARMTABPRECO filtrando P.CD_PERFIL = <perfil do item>.
  3. 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.
  4. A primeira regra encontrada (com maior pontuação de prioridade) define a tabela de preço retornada.
  5. 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árioCD_PERFILEfeito na resolução de preço
Regra genérica (todos os itens)NULLVálida para qualquer item, menor prioridade no desempate
Regra por perfil específicoCó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​

RotinaArquivoEvidência
TfrmMFA006.edtCD_PERFILKeyDownsource/MFA006/UMFA006.pas:668Lookup F9 para tabela PERFIL
TfrmMFA006.edtCD_PERFILExitsource/MFA006/UMFA006.pas:757Dispara ConsultaRegistro ao sair do campo

Referências SQL diretas ao campo CD_PERFIL em scripts​

Procedure/ViewArquivoEvidência
RETORNA_TABPRECOScripts/RETORNA_TABPRECO.sql:105and P.CD_PERFIL = :V_CD_PERFIL — filtro principal na resolução de preço
RETORNA_TABPRECOScripts/RETORNA_TABPRECO.sql:121case 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/ViewArquivoEvidência
ATUALIZA_PESSOAScripts/ATUALIZA_PESSOA.sql:302update PARMTABPRECO P
ATUALIZA_PRECOVENDAScripts/ATUALIZA_PRECOVENDA.sql:79FROM PARMTABPRECO PP
CALCULA_MAQUINAScripts/CALCULA_MAQUINA.sql:81FROM PARMTABPRECO P
CALCULA_MAQUINAFICHAScripts/CALCULA_MAQUINAFICHA.sql:79FROM PARMTABPRECO P
GERA_COMISSAOTABPRECOScripts/GERA_COMISSAOTABPRECO.sql:84from PARMTABPRECO
INSERE_ITEMPEDIDO_SERVCANALETAScripts/INSERE_ITEMPEDIDO_SERVCANALETA.sql:58FROM PARMTABPRECO P
RETORNA_PRECOITEMScripts/RETORNA_PRECOITEM.sql:104FROM PARMTABPRECO P
TRGAD_PARMTABPRECOScripts/TRGAD_PARMTABPRECO.sql:5Trigger de exclusão da tabela
VERIFICA_BLOQUEIOScripts/VERIFICA_BLOQUEIO.sql:1115FROM PARMTABPRECO P