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_TELATipo: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
| Campo | Tabela | Tipo | Papel |
|---|---|---|---|
CD_TELA | PARMTABPRECO | DOM_VARCHAR6 | Código da tela de origem |
V_CD_MODULO | (parâmetro de entrada) | String | Tela que está solicitando o preço no momento da consulta |
Opções disponíveis
Preenchido (ex.: MPD002)
| O que faz | Detalhe |
|---|---|
| Editável | Sim. Digite o código de 6 caracteres da tela desejada. |
| Exige | Código válido de tela com exatamente 6 caracteres. |
| Restrição | Se o tamanho for diferente de 6, o sistema exibe erro: "A Tela precisa ter 6 dígitos! Ex: MPD002." |
Simulação passo a passo
- Acesse MFA006 — Parâmetros de Tabela de Preço.
- Cadastre ou localize um registro na tabela
PARMTABPRECO. - No campo Programa / Tela (
edtCD_TELA), digiteMPD002. - Preencha os demais campos desejados (tabela de preço, item, seção, etc.).
- Salve o registro.
- Acesse a tela MPD002 e realize uma venda ou consulta de preço para um produto coberto pela regra cadastrada.
- Observe que o motor
RETORNA_TABPRECOreconhece a regra e retorna a tabela de preço correspondente. - Agora realize a mesma operação a partir de outra tela (ex.:
MFA001). - 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 faz | Detalhe |
|---|---|
| Editável | Sim. Simplesmente deixe o campo vazio. |
| Exige | Nenhum. |
| Restrição | Nenhuma. |
Simulação passo a passo
- Acesse MFA006 — Parâmetros de Tabela de Preço.
- Cadastre ou localize um registro na tabela
PARMTABPRECO. - Deixe o campo Programa / Tela (
edtCD_TELA) em branco. - Preencha os demais campos desejados (tabela de preço, item, seção, etc.).
- Salve o registro.
- Realize uma busca de preço a partir de qualquer tela do sistema (ex.:
MPD002,MFA001,MTR001). - Observe que o motor
RETORNA_TABPRECOconsidera 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_TELApreenchido 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_TELAtem 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ção | Tipo | Mensagem |
|---|---|---|
| Tamanho exatamente de 6 caracteres | Erro | "A Tela precisa ter 6 dígitos! Ex: MPD002." |
| Conversão automática para maiúsculas | UI | CharCase = 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
| Rotina | Arquivo | Linha | Observação |
|---|---|---|---|
tabPARMTABPRECOCD_TELAValidate | UdmMFA006.pas | 379 | Validação de tamanho (6 caracteres) |
edtCD_TELAExit | UMFA006.pas | 775 | Ao sair do campo, dispara consulta de registros |
ConsultaRegistro | UMFA006.pas | 251 | Monta filtro SQL com CD_TELA |
Referências SQL diretas ao campo em Scripts/
| Procedure/View | Arquivo | Linha | Observação |
|---|---|---|---|
RETORNA_TABPRECO | RETORNA_TABPRECO.sql | 101, 117, 155, 170 | Filtro por CD_TELA e scoring de prioridade |
INSERE_ITEMPEDIDO_SERVCANALETA | INSERE_ITEMPEDIDO_SERVCANALETA.sql | 79 | Scoring 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/View | Arquivo |
|---|---|
ATUALIZA_PESSOA | ATUALIZA_PESSOA.sql |
ATUALIZA_PRECOVENDA | ATUALIZA_PRECOVENDA.sql |
CALCULA_MAQUINA | CALCULA_MAQUINA.sql |
CALCULA_MAQUINAFICHA | CALCULA_MAQUINAFICHA.sql |
GERA_COMISSAOTABPRECO | GERA_COMISSAOTABPRECO.sql |
RETORNA_PRECOITEM | RETORNA_PRECOITEM.sql |
TRGAD_PARMTABPRECO | TRGAD_PARMTABPRECO.sql |
VERIFICA_BLOQUEIO | VERIFICA_BLOQUEIO.sql |
VIEW_TFA006 | VIEW_TFA006.sql |
Exemplo prático
| Cenário | CD_TELA | Resultado |
|---|---|---|
| Tabela de preço geral para todas as telas | NULL | Aplica-se em qualquer busca de preço |
| Tabela exclusiva para vendas no PDV | MPD002 | Só é considerada em buscas originadas pelo MPD002 |
| Tabela exclusiva para orçamentos | MFA001 | Só é considerada em buscas originadas pelo MFA001 |
| Tela inválida (menos de 6 chars) | MPD02 | Erro: "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.