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 corrigir a rejeição 1155 no Protheus (sem travar seu faturamento)
Se você trabalha com faturamento no Protheus, sabe como é: está tudo certo, pedido pronto, nota gerada… e quando vai transmitir, toma uma rejeição do nada. E não é qualquer rejeição.É aquela que trava tudo: “1155 – Data de previsão de entrega anterior ao permitido” E aí começa a correria. Neste artigo, vou te mostrar […]
{{brizy_dc_image_alt entityId=
Tendências para ERP no Brasil em 2026: o que sua empresa precisa fazer agora para não ficar para trás
2026 não é o futuro — já começou Se tem uma coisa que muitas empresas ainda não perceberam é que 2026 não está “chegando”. Ele já começou. E isso fica ainda mais claro quando falamos de ERP. O sistema que antes era visto como um simples “registrador de dados” virou, na prática, o coração da […]
{{brizy_dc_image_alt entityId=
Como validar informações do XML no Documento de Entrada do Protheus usando TOTVS Transmite
Quem trabalha com Protheus no dia a dia sabe que a entrada de notas fiscais pode virar um problema quando os valores digitados no documento não batem com as informações que vieram no XML. E isso acontece mais do que deveria. TES errada, imposto diferente, valor de mercadoria divergente… tudo isso pode gerar inconsistência contábil, […]
{{brizy_dc_image_alt entityId=
Protheus lento? Como melhorar a performance do Protheus em ambientes com muitos usuários
Quando o Protheus começa a ficar lento Existe um momento muito comum na vida de empresas que utilizam ERP. No começo, tudo funciona bem. O sistema responde rápido, as rotinas executam sem problemas e os usuários trabalham normalmente. Mas conforme a empresa cresce, algo começa a mudar. Mais usuários entram no sistema, mais processos passam […]