Pular para o conteúdo principal

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_FILTROITEM Valor 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óduloCódigoDescrição
Pedido de VendaMPD002Pedido de venda
Pedido SimplificadoMPD005Pedido simplificado
OrçamentoMPD018Orçamento
Pedido MobileMPD020Pedido mobile
Nota Fiscal EntradaMNF001NF de entrada
Nota Fiscal SaídaMNF002NF de saída
NF DevoluçãoMNF007NF devolução
Ordem de ServiçoMOF001OS principal
OS OutraMOF002OS outra
Recap NFMRC020Notas fiscais recap
Confirmação Item (Faturamento)CFA003Confirmação de item
Configuração NF EntradaCNF001Config NF entrada
Configuração NF SaídaCNF006Config NF saída
Configuração NF OutrosCNF008Config NF outros
Equipamentos / EtiquetasMEQ002Lançamento avulso
Separação PedidoMEQ039Separação
Separação (variação)MEQ044Separaçã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​

CampoDescrição
PARMFATUR.ST_FILTROITEMParâmetro configurado no MFA001 (T ou S)
ITEM.ST_REVENDAIndica 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 fazDetalhe
Filtro na pesquisa F9 de produtosNenhum — lista todos os produtos independentemente de ST_REVENDA
Parâmetro passado ao framework (PesquisarProduto)Parametros[3] := '' → vira NULL na query (Params.addParam('NULL'))
Produtos exibidosRevenda + não-revenda (matéria-prima, uso interno, etc.)

Simulação passo a passo​

  1. Vá em MFA001 → Parâmetros → Ambos → Opção 1 → Filtro Produtos = "Mostrar Todos"
  2. Salve os parâmetros (F6)
  3. Cadastre dois produtos:
    • Produto A com ST_REVENDA = 'S' (revenda)
    • Produto B com ST_REVENDA = 'N' (não revenda / uso interno / matéria-prima)
  4. Abra um Pedido de Venda (MPD002)
  5. No grid de itens, pressione F9 no campo de código do produto
  6. A janela de pesquisa abre
  7. 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 fazDetalhe
Filtro na pesquisa F9 de produtosApenas 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 exibidosSomente itens marcados como revenda

Simulação passo a passo​

  1. Vá em MFA001 → Parâmetros → Ambos → Opção 1 → Filtro Produtos = "Somente Revenda"
  2. Salve os parâmetros (F6)
  3. Considere os mesmos produtos do caso anterior:
    • Produto A com ST_REVENDA = 'S'
    • Produto B com ST_REVENDA = 'N'
  4. Abra um Pedido de Venda (MPD002)
  5. No grid de itens, pressione F9 no campo de código do produto
  6. A janela de pesquisa abre
  7. 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çãoDescriçãoFiltra por ST_REVENDA = 'S'?Parametros[3]
TMostrar TodosNão'' → NULL
SSomente RevendaSim'S'

Referências no Código Fonte​

Tela de configuração​

  • source/MFA001/UMFA001.dfm linhas 2745-2771 — combo cmbST_FILTROITEM, DataField = 'ST_FILTROITEM', opções 'Mostrar Todos' T / 'Somente Revenda' S
  • source/MFA001/UMFA001.dfm linha 2231 — label Caption = 'Filtro Produtos'
  • source/MFA001/UdmMFA001.pas linha 74 — declaração tabPARMFATURST_FILTROITEM: TStringField
  • source/MFA001/UdmMFA001.pas linha 447 — valor padrão no AfterInsert: tabPARMFATURST_FILTROITEM.AsString := 'T'

Framework de pesquisa​

  • source/jPesquisa/jLista.pas linhas 116-296 — função PesquisarProduto (documentação do índice 3 = St_Revenda)
  • source/jPesquisa/jLista.pas linhas 158-161, 190-193, 225-228 — aplicação do filtro 'S'/NULL

Exemplos de leitura e uso​

  • source/CFA003/UCFA003.pas linhas 344-368 — leitura da PARMFATUR e chamada a PesquisarProduto
  • source/CNF001/UCNF001.pas linhas 2126-2149 — leitura e aplicação no Parametros[3]
  • source/CNF006/UCNF006.pas linhas 295-392 — 4 blocos usando iST_FILTROITEM
  • source/CNF008/UCNF008.pas linhas 368-371 — leitura do parâmetro
  • source/MEQ002/UdmMEQ002.pas linhas 81, 112, 123 — declaração e leitura
  • source/MEQ039/UdmMEQ039.pas linhas 81, 165, 173 — declaração e leitura
  • source/MEQ044/UdmMEQ044.pas linhas 165, 281, 290 — declaração e leitura
  • source/MCO006/UdmMCO006.pas linha 2102 — parte do SELECT de parâmetros
  • source/CPD009/UdmCPD009.dfm linhas 306, 370, 457, 545 — SELECT/INSERT/UPDATE do parâmetro