Como desativar a edição de campos na Solicitação de Compras (MATA110) via ponto de entrada

Em muitos projetos com o Protheus, surge a necessidade de controlar quem pode alterar certos campos em uma tela — principalmente em rotinas sensíveis como a Solicitação de Compras (MATA110).

No artigo de hoje, vamos mostrar como desativar a alteração de campos da grid da Solicitação de Compras utilizando ponto de entrada, sem precisar mexer no Modo de Edição via Configurador e aplicando a regra apenas para usuários específicos.

O desafio

Um dos nossos alunos perguntou recentemente se seria possível bloquear determinados campos da grid de Solicitação de Compras (MATA110) apenas para alguns usuários, sem alterar o comportamento padrão do configurador.

Essa dúvida é bastante comum — principalmente quando há diferentes níveis de acesso dentro do mesmo processo de compras.

A lógica utilizada

Para resolver o problema, aplicamos a seguinte lógica dentro do ponto de entrada MA110TEL:

  1. Validamos, via ParamIxb, se o evento atual é uma alteração;
  2. Conferimos se o usuário logado está dentro de um parâmetro que lista quem pode editar;
  3. Percorremos a variável aHeader, que contém as definições das colunas da grid;
  4. Quando encontramos um dos campos que queremos bloquear, forçamos a posição do array que controla a validação do campo para .F., impedindo a edição.

Assim, os campos ficam visíveis para todos, mas apenas alguns usuários poderão realmente alterá-los.

Código-fonte completo

Abaixo está o código utilizado para implementar essa lógica:

//Bibliotecas
#Include "TOTVS.ch"
 
/*/{Protheus.doc} MT110TEL
Ponto de entrada que manipula a tela de solicitação de compras
@type user function
@author Atilio
@since 17/06/2025
@see https://tdn.totvs.com/pages/releaseview.action?pageId=6085447
/*/
 
User Function MT110TEL()
    Local aArea     := FWGetArea()
    Local nOpc      := PARAMIXB[3]
    Local cUsrLogad := RetCodUsr()
    Local cUsrPodem := SuperGetMV("MV_X_USALT", .F., "000005;000006;000011;")
    Local nAtual    := 0
    Local cCampo    := ""
 
    //Se for alteração
    If nOpc == 4
         
        //Se o usuário logado NÃO estiver na lista dos que podem alterar
        If ! cUsrLogad $ cUsrPodem
 
            //Percorre todos os campos da grid
            For nAtual := 1 To Len(aHeader)
                cCampo := Alltrim(aHeader[nAtual][02])
 
                //Se for o campo de Quantidade, Preço ou Observação
                If cCampo + ";" $ "C1_QUANT;C1_PRECO;C1_OBS;"
 
                    //Altera a posição para ".F." para que force a validação para não permitir digitação
                    aHeader[nAtual][06] := ".F."
                EndIf
            Next
        EndIf
 
    EndIf
 
    FWRestArea(aArea)
Return

Resultado prático

Com essa implementação, usuários não autorizados ficam impossibilitados de alterar campos sensíveis como Quantidade, Preço e Observação — enquanto os demais seguem com acesso normal.

Essa abordagem é simples, segura e reversível, ideal para empresas que precisam reforçar o controle de edição em telas específicas sem alterar o padrão do sistema.

Conclusão

Esse tipo de solução é um ótimo exemplo de como o Protheus permite flexibilidade através de pontos de entrada, sem precisar mexer em estruturas complexas.

Com poucos comandos, você consegue criar regras de negócio personalizadas e deixar o sistema mais alinhado às políticas internas da sua empresa.

Quer aprender mais sobre customizações no Protheus?

Acompanhe o blog da Geeker Company para mais artigos práticos como este — com exemplos reais, explicações passo a passo e códigos prontos para aplicar no seu ambiente.

Index

Categorias

Sobre o Autor

Foto do Autor
Fábio Hayama

Apaixonado por gestão, tecnologia e inovação, Fábio Hayama possui mais de 15 anos de experiência no universo do ERP Protheus, estratégia empresarial e automação de processos.

Leia mais sobre o Fábio

Entre em contato conosco

Veja mais artigos relacionados

{{brizy_dc_image_alt entityId=
Como reduzir em até 80% o retrabalho comercial com um Portal B2B integrado ao Protheus
Seu time comercial fecha um pedido. Alguns minutos depois, alguém do administrativo precisa digitar as informações dentro do ERP. Em seguida, outra pessoa confere estoque, preços, condições comerciais e dados do cliente. Quando tudo parece correto, surge uma divergência que exige uma nova conferência. O pedido volta para ajustes, o cliente espera uma resposta e […]
{{brizy_dc_image_alt entityId=
Podcast Gratuito: Como usar IA para acelerar suporte e desenvolvimento
A Inteligência Artificial deixou de ser uma tendência distante e passou a fazer parte da rotina de empresas, consultorias e equipes de tecnologia. O que antes parecia algo complexo e restrito a grandes organizações, hoje está acessível para profissionais que buscam mais produtividade, agilidade e qualidade em suas entregas. Pensando nisso, preparamos um encontro especial […]
{{brizy_dc_image_alt entityId=
5 sinais de que sua empresa precisa de um BPM como o Fluig
Sua empresa está crescendo, mas os processos continuam os mesmos? Toda empresa sonha em crescer. Mais clientes, mais vendas, mais colaboradores, mais oportunidades e mais resultados. O problema é que, em muitos casos, o crescimento acontece mais rápido do que a capacidade da organização de estruturar seus processos internos. O resultado é um cenário que […]
{{brizy_dc_image_alt entityId=
Como impedir a alteração da numeração da Nota Fiscal sem perder a facilidade do Ctrl+C
Em projetos de sustentação e melhorias no Protheus, muitas vezes encontramos situações que parecem pequenas, mas que podem gerar grandes dores de cabeça no dia a dia da operação. Recentemente nos deparamos com um cenário interessante em um cliente. Durante o processo de faturamento, os usuários precisavam consultar a numeração da Nota Fiscal antes da […]