Pular para o conteúdo principal

CD_TELA - Tela de Origem do Parâmetro de Tabela de Preço

Tela de configuração: MFA006 - Parâmetros de Tabela de Preço Tabela: PARMTABPRECO.CD_TELA Tipo: DOM_VARCHAR6 (6 caracteres, uppercase) Valor padrão: NULL (não preenchido — aplica-se a qualquer tela)


Comportamento Geral​

O campo CD_TELA restringe a aplicação de um parâmetro de tabela de preço a uma tela/programa específica do sistema. Quando preenchido, a regra de preço só é considerada pelo motor de resolução (RETORNA_TABPRECO) quando a chamada origina-se da tela indicada.

Quando deixado em branco (NULL), a regra torna-se genérica — aplica-se independentemente de qual tela do sistema esteja efetuando a busca de preço.

  • Obrigatório? Não. O campo é opcional.
  • Formato: Exatamente 6 caracteres (ex.: MPD002, MTR001, MFA001).
  • CharCase: Convertido para maiúsculas automaticamente (ecUpperCase).

Campos envolvidos​

CampoTabelaTipoPapel
CD_TELAPARMTABPRECODOM_VARCHAR6Código da tela de origem
V_CD_MODULO(parâmetro de entrada)StringTela que está solicitando o preço no momento da consulta

Opções disponíveis​

Preenchido (ex.: MPD002)​

O que fazDetalhe
EditávelSim. Digite o código de 6 caracteres da tela desejada.
ExigeCódigo válido de tela com exatamente 6 caracteres.
RestriçãoSe o tamanho for diferente de 6, o sistema exibe erro: "A Tela precisa ter 6 dígitos! Ex: MPD002."

Simulação passo a passo​

  1. Acesse MFA006 — Parâmetros de Tabela de Preço.
  2. Cadastre ou localize um registro na tabela PARMTABPRECO.
  3. No campo Programa / Tela (edtCD_TELA), digite MPD002.
  4. Preencha os demais campos desejados (tabela de preço, item, seção, etc.).
  5. Salve o registro.
  6. Acesse a tela MPD002 e realize uma venda ou consulta de preço para um produto coberto pela regra cadastrada.
  7. Observe que o motor RETORNA_TABPRECO reconhece a regra e retorna a tabela de preço correspondente.
  8. Agora realize a mesma operação a partir de outra tela (ex.: MFA001).
  9. Observe que a regra com CD_TELA = 'MPD002' não é considerada — o sistema ignora essa regra e busca outra aplicável.

Resultado esperado: A tabela de preço cadastrada só é aplicada quando a busca de preço é originada pela tela MPD002. Em qualquer outra tela, essa regra é ignorada pelo motor de resolução.


Em branco (NULL — Genérico)​

O que fazDetalhe
EditávelSim. Simplesmente deixe o campo vazio.
ExigeNenhum.
RestriçãoNenhuma.

Simulação passo a passo​

  1. Acesse MFA006 — Parâmetros de Tabela de Preço.
  2. Cadastre ou localize um registro na tabela PARMTABPRECO.
  3. Deixe o campo Programa / Tela (edtCD_TELA) em branco.
  4. Preencha os demais campos desejados (tabela de preço, item, seção, etc.).
  5. Salve o registro.
  6. Realize uma busca de preço a partir de qualquer tela do sistema (ex.: MPD002, MFA001, MTR001).
  7. Observe que o motor RETORNA_TABPRECO considera a regra normalmente, independentemente da tela de origem.

Resultado esperado: A tabela de preço cadastrada é aplicada em qualquer tela do sistema que realize busca de preço, sem restrição de origem.


Regra de Prioridade no Motor de Preço​

No script RETORNA_TABPRECO, o campo CD_TELA participa da fórmula de prioridade (scoring) para desempate quando múltiplas regras são candidatas:

case CASE WHEN P.CD_TELA IS NOT NULL THEN 2 ELSE -1 END when -1 then 0 else 1 end
  • Regras com CD_TELA preenchido ganham +1 ponto no score de prioridade.
  • Regras sem CD_TELA (NULL) ganham 0 pontos.

Isso significa que, em caso de empate entre duas regras idênticas (mesmo item, mesma seção, etc.), a regra com tela específica terá prioridade sobre a genérica.

O filtro de correspondência funciona assim:

AND COALESCE(P.CD_TELA, 'ZZZ999') = CASE COALESCE(P.CD_TELA, 'ZZZ999')
WHEN 'ZZZ999' THEN 'ZZZ999'
ELSE :V_CD_MODULO
END
  • Se CD_TELA é NULL → o filtro compara 'ZZZ999' = 'ZZZ999' → sempre verdadeiro (regra genérica).
  • Se CD_TELA tem valor → o filtro compara o código da tela com :V_CD_MODULO (tela de origem da chamada) → só aceita se houver correspondência.

Validações​

ValidaçãoTipoMensagem
Tamanho exatamente de 6 caracteresErro"A Tela precisa ter 6 dígitos! Ex: MPD002."
Conversão automática para maiúsculasUICharCase = ecUpperCase no componente edtCD_TELA

Impacto na Consulta de Registros (MFA006)​

Ao sair do campo edtCD_TELA, o evento edtCD_TELAExit dispara ConsultaRegistro, que filtra os registros da grid por:

AND CD_TELA = 'MPD002' -- quando preenchido
AND CD_TELA IS NULL -- quando em branco

Isso permite que o operador filtre rapidamente os parâmetros cadastrados para uma tela específica.


Procedures impactadas​

Rotinas Delphi com referência direta ao campo​

RotinaArquivoLinhaObservação
tabPARMTABPRECOCD_TELAValidateUdmMFA006.pas379Validação de tamanho (6 caracteres)
edtCD_TELAExitUMFA006.pas775Ao sair do campo, dispara consulta de registros
ConsultaRegistroUMFA006.pas251Monta filtro SQL com CD_TELA

Referências SQL diretas ao campo em Scripts/​

Procedure/ViewArquivoLinhaObservação
RETORNA_TABPRECORETORNA_TABPRECO.sql101, 117, 155, 170Filtro por CD_TELA e scoring de prioridade
INSERE_ITEMPEDIDO_SERVCANALETAINSERE_ITEMPEDIDO_SERVCANALETA.sql79Scoring de prioridade com CD_TELA

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

Estas procedures utilizam a tabela PARMTABPRECO mas não citam o campo CD_TELA literalmente. Não há impacto funcional direto identificado no código.

Procedure/ViewArquivo
ATUALIZA_PESSOAATUALIZA_PESSOA.sql
ATUALIZA_PRECOVENDAATUALIZA_PRECOVENDA.sql
CALCULA_MAQUINACALCULA_MAQUINA.sql
CALCULA_MAQUINAFICHACALCULA_MAQUINAFICHA.sql
GERA_COMISSAOTABPRECOGERA_COMISSAOTABPRECO.sql
RETORNA_PRECOITEMRETORNA_PRECOITEM.sql
TRGAD_PARMTABPRECOTRGAD_PARMTABPRECO.sql
VERIFICA_BLOQUEIOVERIFICA_BLOQUEIO.sql
VIEW_TFA006VIEW_TFA006.sql

Exemplo prático​

CenárioCD_TELAResultado
Tabela de preço geral para todas as telasNULLAplica-se em qualquer busca de preço
Tabela exclusiva para vendas no PDVMPD002Só é considerada em buscas originadas pelo MPD002
Tabela exclusiva para orçamentosMFA001Só é considerada em buscas originadas pelo MFA001
Tela inválida (menos de 6 chars)MPD02Erro: "A Tela precisa ter 6 dígitos!"

Exceção / Importante: O campo aceita qualquer código de 6 caracteres — não há validação de existência da tela no cadastro de módulos. O operador deve conhecer o código correto da tela de destino. Um código inexistente simplesmente fará com que a regra nunca seja aplicada, pois nenhuma tela enviará esse código como V_CD_MODULO.