Pular para o conteúdo principal

CD_PESSOA — Pessoa Específica (Parâmetro de Tabela de Preço)

Tela de configuração: MFA006 — Parâmetros de Tabela de Preço
Componente: edtCD_PESSOA
Tabela/Coluna: PARMTABPRECO.CD_PESSOA (DOM_INTEGER)
Valor padrão: vazio (nenhuma pessoa selecionada)
Chave estrangeira: RPARMTABPRECO_PESSOA → PESSOA (CD_PESSOA)

Visão Geral​

O parâmetro CD_PESSOA permite vincular uma regra de tabela de preço a uma pessoa específica (cliente, fornecedor etc.). Quando preenchido, a regra só se aplica àquela pessoa. Quando vazio, a regra se aplica a qualquer pessoa (desde que os demais critérios da linha — tipo de pessoa, condição de pagamento, estado, item, etc. — também coincidam).

Este campo é um dos vários filtros de granularidade da tabela PARMTABPRECO, que define quais tabelas de preço (TABPRECO) devem ser aplicadas em cada cenário de venda.

Telas Impactadas​

TelaEfeito
MFA006Cadastro/manutenção do parâmetro. Campo editável na grade.
TFA006Consulta de tabelas de preço — usa RETORNA_TABPRECO que filtra por CD_PESSOA.
Telas de venda (orçamento, pedido, nota)Na busca de preço, RETORNA_TABPRECO e RETORNA_PRECOITEM consideram CD_PESSOA como critério de casamento.
Telas de Recap (MRC018, MRC020)RETORNA_TABPRECO recebe I_ST_OBRIGAPESSOA = 'S' para forçar casamento por pessoa.

Campos Relacionados na Tabela PARMTABPRECO​

CampoTipoDescrição
NR_SEQUENCIAINTEGER (PK)Identificador único da linha de parâmetro
CD_EMPRESAINTEGEREmpresa à qual a regra se aplica
CD_TABPRECOINTEGERTabela de preço que será aplicada quando a regra casar
CD_PESSOAINTEGEREste parâmetro — pessoa específica
CD_TIPOPESSOAINTEGERTipo de pessoa (Física/Jurídica)
CD_CONDPAGTOINTEGERCondição de pagamento
CD_VENDEDORINTEGERVendedor
CD_REGIAOCOMERCIALINTEGERRegião comercial
CD_CONDFISCALINTEGERCondição fiscal do produto
CD_ITEMINTEGERProduto específico
CD_GRUPO / CD_SUBGRUPO / CD_SECAOINTEGERGrupo, subgrupo e seção do produto
SG_ESTADOVARCHAR(2)Estado (UF)
CD_TELAVARCHAR(6)Tela/módulo de origem
CD_PERFILINTEGERPerfil do item
QT_MINIMA / QT_MAXIMANUMERIC(15,2)Faixa de quantidade

Opções Disponíveis​

O campo CD_PESSOA aceita dois estados: vazio (sem restrição por pessoa) ou preenchido com um código válido de pessoa. Não se trata de um combo com opções fixas, mas de um campo de pesquisa.

Vazio — Regra Aplica-se a Qualquer Pessoa​

O que fazDetalhe
ComportamentoA linha de parâmetro ignora o filtro por pessoa. A regra casará para qualquer pessoa, desde que os demais critérios (empresa, tipo de pessoa, condição de pagamento, estado, item, etc.) sejam atendidos.
EditávelSim
ExigeNenhum campo obrigatório adicional

Simulação passo a passo​

  1. Acesse a tela MFA006 (Parâmetros de Tabela de Preço).
  2. Cadastre ou edite uma linha de parâmetro.
  3. Deixe o campo Pessoa (edtCD_PESSOA) em branco.
  4. Preencha os demais campos desejados (empresa, tabela de preço, tipo de pessoa, etc.).
  5. Salve o registro.
  6. Em uma tela de venda (orçamento/pedido), informe um produto e um cliente qualquer.
  7. O sistema chamará RETORNA_TABPRECO e, como CD_PESSOA está vazio naquela linha, ela será considerada na busca.

Resultado esperado: A tabela de preço configurada na linha será aplicada a qualquer pessoa que atenda aos demais critérios do parâmetro.

Preenchido — Regra Válida Apenas para Pessoa Específica​

O que fazDetalhe
ComportamentoA linha de parâmetro só será considerada quando a pessoa da venda (orçamento, pedido, nota) coincidir com o CD_PESSOA informado.
EditávelSim
ExigeCódigo válido de pessoa cadastrada na tabela PESSOA (status ativo)
RestriçãoFK RPARMTABPRECO_PESSOA garante integridade referencial

Simulação passo a passo​

  1. Acesse a tela MFA006 (Parâmetros de Tabela de Preço).
  2. Cadastre ou edite uma linha de parâmetro.
  3. No campo Pessoa (edtCD_PESSOA), pressione <F9> para abrir a pesquisa de pessoas.
  4. Selecione a pessoa desejada (ex: "Empresa ABC Ltda — código 1234").
  5. Configure a Tabela de Preço desejada (ex: tabela "TABELA VIP" — código 5).
  6. Preencha os demais filtros se necessário (empresa, condição de pagamento, etc.).
  7. Salve o registro.
  8. Em uma tela de venda, crie um orçamento para a pessoa 1234.
  9. Informe um produto que esteja na tabela de preço vinculada.
  10. O sistema chamará RETORNA_TABPRECO com I_CD_PESSOA = 1234.

Resultado esperado: A tabela de preço "TABELA VIP" será aplicada somente para a pessoa 1234. Para outras pessoas, o sistema buscará outra regra de parâmetro ou usará a tabela de preço padrão informada na venda.

Exceção / Importante:
Na procedure RETORNA_TABPRECO, o campo CD_PESSOA tem peso 10 na ordenação de prioridade (segundo apenas a CD_ITEM com peso 20). Isso significa que, quando existem múltiplas linhas de parâmetro candidatas, uma linha com pessoa específica será priorizada sobre linhas genéricas (sem pessoa) — desde que o casamento seja confirmado.

Além disso, o parâmetro I_ST_OBRIGAPESSOA (utilizado pelo processo de Recap — telas MRC018/MRC020) força o casamento por pessoa. Quando 'S', somente linhas com CD_PESSOA preenchido e coincidente são consideradas.

Regra de Prioridade no RETORNA_TABPRECO​

A procedure RETORNA_TABPRECO monta uma consulta dinâmica que ordena as linhas candidatas por especificidade. O critério de ordenação (pesos):

CampoPesoSignificado
CD_ITEM20Produto específico
CD_PESSOA10Pessoa específica
CD_CONDPAGTO1Condição de pagamento
CD_TIPOPESSOA1Tipo de pessoa
CD_CONDFISCAL1Condição fiscal
CD_VENDEDOR1Vendedor
CD_GRUPO1Grupo do produto
CD_SUBGRUPO1Subgrupo
CD_SECAO1Seção
CD_TELA1Tela/módulo
CD_REGIAOCOMERCIAL1Região comercial
QT_MINIMA/QT_MAXIMA1+1Faixa de quantidade
SG_ESTADO1Estado
CD_PERFIL1Perfil do item

O sistema seleciona a primeira linha (maior peso total) que casar com os dados da venda. Linhas com CD_PESSOA preenchido são priorizadas sobre linhas sem pessoa.

Impacto em RETORNA_PRECOITEM​

Na procedure RETORNA_PRECOITEM, o campo CD_PESSOA é usado para verificar se existe uma regra específica que combina pessoa + condição de pagamento. Quando encontrada, essa regra indica que o cálculo de juro deve ser desabilitado para aquela venda (controle de juros por pessoa).

Procedures Impactadas​

Rotinas Delphi com referência direta ao campo​

RotinaArquivoLinhaEvidência
TfrmMFA006.edtCD_PESSOAKeyDown (pesquisa F9)source/MFA006/UMFA006.pas~540–568Pesquisa de pessoas ativas ao pressionar <F9>, preenchendo tabPARMTABPRECOCD_PESSOA

Scripts SQL com referência direta ao campo PARMTABPRECO.CD_PESSOA​

Procedure/ViewArquivoEvidência
RETORNA_TABPRECOScripts/RETORNA_TABPRECO.sqlFiltra por P.CD_PESSOA na consulta dinâmica (linhas 53, 95, 107, 109, 149, 160). Peso 10 na ordenação de prioridade.
RETORNA_PRECOITEMScripts/RETORNA_PRECOITEM.sqlVerifica existência de parâmetro com P.CD_PESSOA = :I_CD_PESSOA e P.CD_CONDPAGTO para controle de juros (linha 106).

Candidatas por uso da tabela PARMTABPRECO (sem referência direta ao campo CD_PESSOA)​

Procedure/ViewArquivoObservação
ATUALIZA_PRECOVENDAScripts/ATUALIZA_PRECOVENDA.sqlUsa PARMTABPRECO mas não filtra por CD_PESSOA diretamente
GERA_COMISSAOTABPRECOScripts/GERA_COMISSAOTABPRECO.sqlLê PARMTABPRECO sem filtro por CD_PESSOA
INSERE_ITEMPEDIDO_SERVCANALETAScripts/INSERE_ITEMPEDIDO_SERVCANALETA.sqlUsa PARMTABPRECO sem filtro direto por CD_PESSOA
VERIFICA_BLOQUEIOScripts/VERIFICA_BLOQUEIO.sqlUsa PARMTABPRECO sem filtro direto por CD_PESSOA
VIEW_TFA006Scripts/VIEW_TFA006.sqlJOIN com PARMTABPRECO sem filtro direto por CD_PESSOA
TRGAD_PARMTABPRECOScripts/TRGAD_PARMTABPRECO.sqlTrigger de auditoria da tabela

Tabela Comparativa Resumida​

AspectoVazioPreenchido
Escopo da regraQualquer pessoaPessoa específica
Prioridade no RETORNA_TABPRECOPeso 0Peso 10
ObrigatoriedadeNão obrigatórioObrigatório se I_ST_OBRIGAPESSOA = 'S'
Exemplo de usoTabela geral por tipo de pessoaTabela VIP para cliente específico
FKN/ARPARMTABPRECO_PESSOA → PESSOA