Parâmetro de Exibição de Produtos com Preço Zerado
Tela de configuração primária: TFA006 - Tabela de Preço de Venda (aba Itens da Tabela) Tela MFA001: O campo existe na tabela
PARMFATURe é persistido pelos INSERT/SELECT do MFA001, mas não possui controle visual no MFA001. A configuração é feita diretamente no TFA006 via checkbox. Tabela:PARMFATUR.ST_EXIBEZERADOS(DOM_CHAR1 DEFAULT 'N') Valor padrão:N(Não exibir oculto - ou seja, exibe produtos com preço zerado)
:::warning Comportamento inverso da nomenclatura
O nome do campo é ST_EXIBEZERADOS mas o checkbox no TFA006 tem o caption "Não exibir produtos com preço zerado". A lógica é:
- Checkbox marcado (
Checked = True) →ST_EXIBEZERADOS = 'S'→ filtra comVL_PRECO >= 0.01→ oculta produtos zerados - Checkbox desmarcado (
Checked = False) →ST_EXIBEZERADOS = 'N'→ filtra comVL_PRECO >= 0→ exibe todos os produtos :::
Telas impactadas
| Módulo | Código | Descrição |
|---|---|---|
| Tabela de Preço de Venda | TFA006 | Única tela que lê e grava ST_EXIBEZERADOS. Controla a exibição do grid da aba Itens da Tabela |
| Parâmetros de Faturamento | MFA001 | Persiste o campo no INSERT/SELECT de PARMFATUR, porém não expõe controle visual |
Campos envolvidos
| Campo | Descrição |
|---|---|
PARMFATUR.ST_EXIBEZERADOS | Flag de exibição ('S' = oculta zerados / 'N' = exibe zerados) |
ITEMTABPRECO.VL_PRECO | Preço do produto na tabela de venda (comparado com PARAM_PRECOZERADO) |
PARAM_PRECOZERADO | Parâmetro de query em tabITEMTABPRECO do TFA006 (assume ' 0.01' ou ' 0') |
Referência ao SQL do TFA006 (dataset tabITEMTABPRECO)
Localização: source/TFA006/UdmTFA006.dfm:231
WHERE ITEMTABPRECO.CD_TABPRECO = :CD_TABPRECO
AND ITEM.ST_ATIVO = 'S'
AND ITEMTABPRECO.VL_PRECO >= :PARAM_PRECOZERADO
O valor de :PARAM_PRECOZERADO é atribuído em tempo de execução a partir do estado do checkbox.
Opções disponíveis
S - Sim (Ocultar produtos com preço zerado)
| O que faz | Detalhe |
|---|---|
| Checkbox no TFA006 | Marcado |
Valor atribuído a PARAM_PRECOZERADO | ' 0.01' |
| Efeito no grid de itens | Lista apenas produtos com VL_PRECO >= 0,01 |
| Produtos sem preço cadastrado | Ocultos do grid |
| Aplica-se ao relatório de tabela? | Sim, quando TP_RELATORIO = 'C' e chkQuebraSubGrupo marcado (filtra por VL_PRECO1/2/3/4 >= 0.01) |
Código fonte (referências)
-
Leitura ao abrir a aba "Itens da Tabela" (
PaginasChangeemsource/TFA006/UTFA006.pas:1047-1063):Consulta :='SELECT PF.ST_EXIBEZERADOS '+#10+'FROM PARMFATUR PF ' +'WHERE PF.CD_EMPRESA = ' + IntToStr(sessao.empresa.cd_empresa);Resultado := ExecutaConsulta(dmTFA006.transaction, Consulta);if (Resultado[0] = 'S') thenchkEXIBIR_ZERADOS.Checked := trueelsechkEXIBIR_ZERADOS.Checked := false; -
Gravação ao clicar o checkbox (
chkEXIBIR_ZERADOSClickemsource/TFA006/UTFA006.pas:4094-4118):if (frmTFA006.chkEXIBIR_ZERADOS.Checked = true) thenbegindmTFA006.tabITEMTABPRECO.ParamByName('PARAM_PRECOZERADO').Value := ' 0.01';Status := 'S';endelsebegindmTFA006.tabITEMTABPRECO.ParamByName('PARAM_PRECOZERADO').Value := ' 0';Status := 'N';end;dmTFA006.tabITEMTABPRECO.Open;Consulta := 'UPDATE PARMFATUR SET ST_EXIBEZERADOS = ' + #39 + Status + #39 +' WHERE CD_EMPRESA = ' + IntToStr(sessao.empresa.cd_empresa);ExecUpdate(dmTFA006.transaction, Consulta);dmTFA006.transaction.CommitRetaining; -
Filtro equivalente no relatório (
source/TFA006/UTFA006.pas:3011-3014):if (chkEXIBIR_ZERADOS.Checked = true) thenfiltroZerados := ' WHERE ((VL_PRECO1 >= 0.01) OR (VL_PRECO2 >= 0.01) OR (VL_PRECO3 >= 0.01) or (VL_PRECO4 >= 0.01)) 'elsefiltroZerados := '';
Simulação passo a passo
- Abra TFA006 - Tabela de Preço de Venda
- Selecione uma Tabela de Preço qualquer na aba Tabelas
- Clique na aba Itens da Tabela
- Marque o checkbox "Não exibir produtos com preço zerado"
- Ao clicar no checkbox o sistema:
- Fecha o grid de itens
- Atribui
PARAM_PRECOZERADO := ' 0.01' - Reabre o grid (mostra somente itens com
VL_PRECO >= 0,01) - Executa
UPDATE PARMFATUR SET ST_EXIBEZERADOS = 'S'comCommitRetaining
- Produtos cadastrados na tabela com preço
0,00desaparecem do grid - Feche e reabra o TFA006 → o checkbox permanece marcado (valor persistido em
PARMFATUR)
Resultado esperado: O grid da aba "Itens da Tabela" omite produtos sem preço. O parâmetro ST_EXIBEZERADOS = 'S' é mantido por empresa e recuperado em futuras aberturas do TFA006.
N - Não (Exibir todos os produtos, inclusive os zerados)
| O que faz | Detalhe |
|---|---|
| Checkbox no TFA006 | Desmarcado |
Valor atribuído a PARAM_PRECOZERADO | ' 0' |
| Efeito no grid de itens | Lista TODOS os produtos com VL_PRECO >= 0, incluindo preço zero |
| Produtos sem preço cadastrado | Visíveis no grid (com valor 0,00) |
| Filtro do relatório de tabela | filtroZerados := '' (sem filtro de preço) |
Simulação passo a passo
- Abra TFA006
- Selecione uma Tabela de Preço
- Clique na aba Itens da Tabela
- Desmarque o checkbox "Não exibir produtos com preço zerado" (se estiver marcado)
- Ao desmarcar o sistema:
- Fecha o grid
- Atribui
PARAM_PRECOZERADO := ' 0' - Reabre o grid (todos os itens são exibidos)
- Executa
UPDATE PARMFATUR SET ST_EXIBEZERADOS = 'N'comCommitRetaining
- Produtos sem preço (
VL_PRECO = 0,00) aparecem no grid
Resultado esperado: O grid mostra todos os itens vinculados à tabela de preço, mesmo os que ainda não tiveram preço cadastrado. Útil para cadastro inicial de tabela de preço.
Este é o valor padrão (
DEFAULT 'N') na DDL dePARMFATUR.
Interação com o MFA001
O campo ST_EXIBEZERADOS aparece nas cláusulas SQL do dataset tabPARMFATUR do MFA001, mas não há nenhum controle visual (ComboBox, CheckBox ou DBEdit) amarrado ao campo em UMFA001.dfm, nem atribuição de default em tabPARMFATURAfterInsert (source/MFA001/UdmMFA001.pas:432).
Referências no MFA001
- Lista de colunas do INSERT (
source/MFA001/UdmMFA001.dfm:2361):... ST_VALIDANSERIEITEMPEDIDO, ST_EXIBEZERADOS, ST_BLOQUEIADESCPROM, ... - Lista de parâmetros do INSERT (
source/MFA001/UdmMFA001.dfm:2515):... :TP_CODFORNEC, :ST_VALIDANSERIEITEMPEDIDO, :ST_EXIBEZERADOS, :ST_BLOQUEIADESCPROM, ...
Implicação prática: Ao criar um registro de PARMFATUR pela primeira vez via MFA001, o valor de :ST_EXIBEZERADOS será deixado como NULL pelo dataset (nenhuma atribuição em AfterInsert). O DEFAULT 'N' da DDL assume então o valor padrão 'N' no banco. A partir daí, apenas o TFA006 altera esse campo.
Tabela Comparativa Resumida
| Opção | Descrição | Checkbox no TFA006 | PARAM_PRECOZERADO | Itens com preço 0 no grid? | Filtro no relatório |
|---|---|---|---|---|---|
| S | Oculta zerados | Marcado | ' 0.01' | Não | VL_PRECO1/2/3/4 >= 0.01 |
| N | Exibe todos | Desmarcado | ' 0' | Sim | sem filtro |
Referências no Código Fonte
Delphi
| Arquivo | Linha(s) | Descrição |
|---|---|---|
source/MFA001/UdmMFA001.dfm | 2361 | ST_EXIBEZERADOS na lista de colunas do INSERT de tabPARMFATUR |
source/MFA001/UdmMFA001.dfm | 2515 | :ST_EXIBEZERADOS na lista de parâmetros do INSERT |
source/TFA006/UTFA006.dfm | 1264-1273 | Declaração visual do chkEXIBIR_ZERADOS: TCheckBox com caption "Não exibir produtos com preço zerado" |
source/TFA006/UTFA006.pas | 131 | Declaração do componente chkEXIBIR_ZERADOS: TCheckBox |
source/TFA006/UTFA006.pas | 300 | Declaração do evento chkEXIBIR_ZERADOSClick |
source/TFA006/UTFA006.pas | 1054-1063 | PaginasChange: lê ST_EXIBEZERADOS de PARMFATUR e atualiza o checkbox |
source/TFA006/UTFA006.pas | 3011-3014 | Relatório: filtroZerados conforme estado do checkbox |
source/TFA006/UTFA006.pas | 4094-4118 | chkEXIBIR_ZERADOSClick: define PARAM_PRECOZERADO, reabre grid e faz UPDATE PARMFATUR SET ST_EXIBEZERADOS |
source/TFA006/UdmTFA006.dfm | 231-244 | SQL de tabITEMTABPRECO com AND ITEMTABPRECO.VL_PRECO >= :PARAM_PRECOZERADO |
source/TFA006/UdmTFA006.pas | 381-388 | Reatribuição de PARAM_PRECOZERADO conforme chkEXIBIR_ZERADOS.Checked ao recarregar itens |
SQL / Scripts
Nenhuma procedure, trigger ou view do diretório Scripts/ referencia ST_EXIBEZERADOS. O campo é usado exclusivamente no nível de cliente (Delphi) e na DDL de PARMFATUR.
DDL
docs/schema/tables/PARMFATUR.sql:ST_EXIBEZERADOS DOM_CHAR1 DEFAULT 'N'