Parâmetro de Filtro de Produtos na Pesquisa (F9)
Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Ambos → Opção 1 (label "Filtro Produtos") Tabela:
PARMFATUR.ST_FILTROITEMValor padrão:T(Mostrar Todos)
Telas impactadas
Afeta a pesquisa de produtos (F9) nos módulos de venda/compra/produção. Principais consumidores (76 arquivos leem o parâmetro):
| Módulo | Código | Descrição |
|---|---|---|
| Pedido de Venda | MPD002 | Pedido de venda |
| Pedido Simplificado | MPD005 | Pedido simplificado |
| Orçamento | MPD018 | Orçamento |
| Pedido Mobile | MPD020 | Pedido mobile |
| Nota Fiscal Entrada | MNF001 | NF de entrada |
| Nota Fiscal Saída | MNF002 | NF de saída |
| NF Devolução | MNF007 | NF devolução |
| Ordem de Serviço | MOF001 | OS principal |
| OS Outra | MOF002 | OS outra |
| Recap NF | MRC020 | Notas fiscais recap |
| Confirmação Item (Faturamento) | CFA003 | Confirmação de item |
| Configuração NF Entrada | CNF001 | Config NF entrada |
| Configuração NF Saída | CNF006 | Config NF saída |
| Configuração NF Outros | CNF008 | Config NF outros |
| Equipamentos / Etiquetas | MEQ002 | Lançamento avulso |
| Separação Pedido | MEQ039 | Separação |
| Separação (variação) | MEQ044 | Separação |
| Pesquisa de Produtos (framework) | jPesquisa (jLista.pas) | Framework central de pesquisa F9 |
Lista não exaustiva — outras telas como MCO006, MPD004, MPD013, MPD028, MPD029, MPD043, MPD053, MPD057, MPD058, MPD069, MPD073, MPD092, MNF008, MNF013, MNF014, MNF017, MNF019, MNF026, MOF004, MOF005, MOF006, MEQ037, MEQ038, MEQ043, MEQ049, MEQ053, MTR008, MTR009, REQ023, REQ028, RPD027, RTR007, RTR011, RTR012, RTR013, RTR014, TFA046, TPO010, TPO018, TPO021 também leem
ST_FILTROITEM.
Campos envolvidos
| Campo | Descrição |
|---|---|
PARMFATUR.ST_FILTROITEM | Parâmetro configurado no MFA001 (T ou S) |
ITEM.ST_REVENDA | Indica se o produto é de revenda (S) ou não (N). Filtro aplicado quando ST_FILTROITEM = 'S' |
Opções disponíveis
T - Mostrar Todos
| O que faz | Detalhe |
|---|---|
| Filtro na pesquisa F9 de produtos | Nenhum — lista todos os produtos independentemente de ST_REVENDA |
Parâmetro passado ao framework (PesquisarProduto) | Parametros[3] := '' → vira NULL na query (Params.addParam('NULL')) |
| Produtos exibidos | Revenda + não-revenda (matéria-prima, uso interno, etc.) |
Simulação passo a passo
- Vá em MFA001 → Parâmetros → Ambos → Opção 1 → Filtro Produtos = "Mostrar Todos"
- Salve os parâmetros (F6)
- Cadastre dois produtos:
- Produto A com
ST_REVENDA = 'S'(revenda) - Produto B com
ST_REVENDA = 'N'(não revenda / uso interno / matéria-prima)
- Produto A com
- Abra um Pedido de Venda (MPD002)
- No grid de itens, pressione F9 no campo de código do produto
- A janela de pesquisa abre
- Ambos os produtos (A e B) aparecem na lista — o filtro por revenda não é aplicado
Resultado esperado: A pesquisa de produtos (F9) mostra todos os produtos cadastrados, sem restrição de revenda.
S - Somente Revenda
| O que faz | Detalhe |
|---|---|
| Filtro na pesquisa F9 de produtos | Apenas produtos com ITEM.ST_REVENDA = 'S' |
Parâmetro passado ao framework (PesquisarProduto) | Parametros[3] := 'S' → envia o valor 'S' para o filtro ST_REVENDA da procedure de busca (Params.addParam(Nulo(iParametros[3], 'S'))) |
| Produtos exibidos | Somente itens marcados como revenda |
Simulação passo a passo
- Vá em MFA001 → Parâmetros → Ambos → Opção 1 → Filtro Produtos = "Somente Revenda"
- Salve os parâmetros (F6)
- Considere os mesmos produtos do caso anterior:
- Produto A com
ST_REVENDA = 'S' - Produto B com
ST_REVENDA = 'N'
- Produto A com
- Abra um Pedido de Venda (MPD002)
- No grid de itens, pressione F9 no campo de código do produto
- A janela de pesquisa abre
- Somente o Produto A aparece na lista. O Produto B (não revenda) é omitido.
Resultado esperado: A pesquisa de produtos (F9) oculta produtos que não são de revenda — útil para empresas que querem restringir as equipes de venda a cadastrarem apenas itens comercializáveis.
Como o parâmetro é aplicado
O valor de ST_FILTROITEM é lido da PARMFATUR nas telas e passado para o framework de pesquisa (PesquisarProduto, em source/jPesquisa/jLista.pas) como o 4º elemento (Parametros[3]) do array de parâmetros.
Documentação interna do framework (jLista.pas linhas 127-136)
Parametros
0 - Codigo Empresa
1 - Codigo Tabela Preço
2 - St_Ativo Situação produto
3 - St_Revenda Produto de Revenda
4 - Tp_Item Tipo do Produto
5 - Exceção Tp_Item
6 - Código do Grupo
7 - Descrição do item ao abrir TPO001...
Conversão do valor (padrão em todos os consumidores)
Exemplo em source/CNF001/UCNF001.pas (linhas 2141-2144):
if (vFiltroItem = 'S') then
Parametros[3] := 'S'
else
Parametros[3] := '';
Exemplo em source/CNF006/UCNF006.pas (linhas 317-320, 331-334, 346-349, 389-392):
if (iST_FILTROITEM = 'S') then
Params.addParam(Nulo('S','S'))
else
Params.addParam('NULL');
E no framework source/jPesquisa/jLista.pas (linhas 158-161, 190-193, 225-228):
if (iParametros[3] = 'S') then
Params.addParam(Nulo(iParametros[3], 'S'))
else
Params.addParam('NULL');
Ou seja: qualquer valor diferente de 'S' é tratado como NULL pelo filtro, resultando no mesmo comportamento de "Mostrar Todos".
Observação
- O filtro age somente na pesquisa F9 (janela de seleção). Não impede digitar o código de um produto não-revenda diretamente.
- O parâmetro é lido junto de outros campos da
PARMFATUR(TP_LISTAITEM, CD_TABPRECO) numa única consulta em cada tela, então a leitura é sempre atualizada. - Existe um parâmetro irmão
ST_FILTROPESSOA(label "Filtro Pessoas") no mesmo painel, com lógica análoga aplicada a pessoas.
Tabela Comparativa Resumida
| Opção | Descrição | Filtra por ST_REVENDA = 'S'? | Parametros[3] |
|---|---|---|---|
| T | Mostrar Todos | Não | '' → NULL |
| S | Somente Revenda | Sim | 'S' |
Referências no Código Fonte
Tela de configuração
source/MFA001/UMFA001.dfmlinhas 2745-2771 — combocmbST_FILTROITEM,DataField = 'ST_FILTROITEM', opções'Mostrar Todos' T/'Somente Revenda' Ssource/MFA001/UMFA001.dfmlinha 2231 — labelCaption = 'Filtro Produtos'source/MFA001/UdmMFA001.paslinha 74 — declaraçãotabPARMFATURST_FILTROITEM: TStringFieldsource/MFA001/UdmMFA001.paslinha 447 — valor padrão noAfterInsert:tabPARMFATURST_FILTROITEM.AsString := 'T'
Framework de pesquisa
source/jPesquisa/jLista.paslinhas 116-296 — funçãoPesquisarProduto(documentação do índice 3 =St_Revenda)source/jPesquisa/jLista.paslinhas 158-161, 190-193, 225-228 — aplicação do filtro'S'/NULL
Exemplos de leitura e uso
source/CFA003/UCFA003.paslinhas 344-368 — leitura daPARMFATURe chamada aPesquisarProdutosource/CNF001/UCNF001.paslinhas 2126-2149 — leitura e aplicação noParametros[3]source/CNF006/UCNF006.paslinhas 295-392 — 4 blocos usandoiST_FILTROITEMsource/CNF008/UCNF008.paslinhas 368-371 — leitura do parâmetrosource/MEQ002/UdmMEQ002.paslinhas 81, 112, 123 — declaração e leiturasource/MEQ039/UdmMEQ039.paslinhas 81, 165, 173 — declaração e leiturasource/MEQ044/UdmMEQ044.paslinhas 165, 281, 290 — declaração e leiturasource/MCO006/UdmMCO006.paslinha 2102 — parte do SELECT de parâmetrossource/CPD009/UdmCPD009.dfmlinhas 306, 370, 457, 545 — SELECT/INSERT/UPDATE do parâmetro