Data de publicação: 26/03/2026
🎯 Objetivo
Demonstrar o funcionamento do ponto de entrada M410FSQL na rotina Pedidos de Venda (MATA410), com foco na versão P12, apresentando sua finalidade, comportamento técnico e um exemplo prático de implementação em ADVPL.
📘 Visão Geral
O ponto de entrada M410FSQL é utilizado para aplicar filtros na listagem de Pedidos de Venda da rotina MATA410.
Esse recurso é especialmente útil quando a empresa precisa restringir a visualização dos pedidos com base em critérios específicos de negócio, como:
cliente;
número do pedido;
tipo do pedido;
regras internas de operação;
condições específicas de consulta.
Na prática, esse ponto de entrada permite personalizar o comportamento da rotina sem necessidade de alteração direta do código padrão.
🧩 Comportamento do M410FSQL por versão
O comportamento do M410FSQL é diferente entre as versões P11 e P12.
🔹 Na versão P11
Na P11, o ponto de entrada filtra os pedidos exibidos na mBrowse e o retorno deve ser composto por uma expressão SQL.
🔹 Na versão P12
Na P12, o ponto de entrada filtra os pedidos exibidos na FWMBrowse e o retorno deve ser composto por uma expressão ADVPL.
Essa diferença ocorre porque as duas versões utilizam estruturas de browse diferentes, exigindo sintaxes distintas no retorno da função.
⚙️ Retorno esperado
O ponto de entrada deve retornar uma variável caractere contendo a expressão de filtro que será aplicada à listagem dos pedidos.
Estrutura de retorno
Nome do retorno:
cFilSQLTipo: caractere
Conteúdo esperado na P12: expressão ADVPL
💻 Exemplo prático em ADVPL
#INCLUDE "PROTHEUS.CH"
#INCLUDE "rwmake.ch"
User Function M410FSQL()
Local _vpFiltro := ""
Alert("M410FSQL")
//_vpFiltro := "C5_CLIENTE = 'CL0003'"
//_vpFiltro := "C5_NUM > '000015' .and. C5_TIPO == 'N'"
_vpFiltro := "C5_CLIENT $ 'CL0007|CL0003|'"
Return(_vpFiltro)
🔍 Entendendo o exemplo
No exemplo acima, o ponto de entrada monta um filtro para limitar a exibição dos pedidos de venda.
Exemplo 1
_vpFiltro := "C5_CLIENTE = 'CL0003'"
Esse filtro restringe a visualização apenas aos pedidos do cliente CL0003.
Exemplo 2
_vpFiltro := "C5_NUM > '000015' .and. C5_TIPO == 'N'"
Esse filtro apresenta somente pedidos com número superior a 000015 e cujo tipo seja N.
Exemplo 3
_vpFiltro := "C5_CLIENT $ 'CL0007|CL0003|'"
Esse filtro permite exibir apenas pedidos pertencentes aos clientes CL0007 e CL0003.
🛠️ Aplicações práticas
O uso do M410FSQL pode ser adotado em cenários como:
restringir pedidos por carteira de clientes;
limitar a visualização por operação;
separar pedidos por tipo;
exibir somente registros aderentes a determinada política interna;
personalizar a consulta para perfis específicos de usuário.
⚠️ Cuidados na implementação
Ao utilizar o M410FSQL, é importante observar alguns pontos técnicos:
1. Validar a versão do ambiente
A sintaxe do retorno muda entre P11 e P12. Esse é o principal cuidado na implementação.
2. Garantir consistência da expressão
A expressão retornada deve estar correta e compatível com os campos utilizados na rotina.
3. Evitar filtros excessivamente restritivos
Uma regra mal definida pode ocultar pedidos importantes da operação.
4. Testar o comportamento do browse
É recomendável validar o filtro em cenários de consulta, navegação e manutenção dos pedidos.
✅ Conclusão
O ponto de entrada M410FSQL é um recurso importante para personalizar a exibição dos Pedidos de Venda na rotina MATA410.
Na P12, seu uso exige o retorno de uma expressão ADVPL, diferentemente da P11, onde o retorno esperado é uma expressão SQL. Entender essa diferença é essencial para implementar filtros corretamente e garantir que a navegação da rotina permaneça aderente à regra de negócio da empresa.
❓ FAQ
1. O que é o ponto de entrada M410FSQL?
É um ponto de entrada da rotina MATA410 utilizado para filtrar os pedidos de venda exibidos no browse.
2. O M410FSQL funciona da mesma forma em todas as versões?
Não. O comportamento muda entre P11 e P12.
3. Qual a principal diferença entre P11 e P12?
Na P11, o retorno é uma expressão SQL. Na P12, o retorno é uma expressão ADVPL.
4. Em qual browse o filtro atua na P12?
Na FWMBrowse.
5. O que a função precisa retornar?
Uma variável caractere contendo a expressão de filtro aplicada à listagem dos pedidos.
6. Posso filtrar pedidos por cliente?
Sim. Esse é um dos cenários mais comuns de uso do M410FSQL.
7. Qual o principal risco de uma implementação incorreta?
Ocultar registros indevidamente ou comprometer a navegação da rotina por causa de uma expressão incompatível com a versão do ambiente.
👤 Autor
Fabrizio Augusto Ventavolo
Consultor Especialista TOTVS — Mastersiga Consultoria