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 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 […]
{{brizy_dc_image_alt entityId=
3 coisas que já automatizamos com IA + Protheus na prática
Empresas passam anos investindo em ERP, implantando processos, organizando áreas e treinando equipes. Mesmo assim, em muitos casos, a operação continua dependendo de planilhas paralelas, validações manuais, retrabalho e pessoas apagando incêndio o dia inteiro. E é justamente aí que entra um ponto que muita empresa ainda não percebeu: a inteligência artificial não veio para […]
{{brizy_dc_image_alt entityId=
Guia de Sobrevivência Para Quem Está Começando no Protheus
Entrar no universo do ERP da TOTVS pode parecer simples olhando de fora. Afinal, o mercado fala o tempo todo sobre oportunidades, falta de profissionais e crescimento da área. Mas quem já tentou começar no ecossistema Protheus sabe que a realidade é um pouco diferente. No começo, surgem várias dúvidas ao mesmo tempo. “Por onde […]
{{brizy_dc_image_alt entityId=
n8n, IA e Protheus: dá para automatizar muita coisa sem projetos gigantes
O problema nunca foi o Protheus. Foi a forma como muita empresa tentou automatizar Durante muitos anos, falar sobre automação dentro do ERP significava praticamente a mesma coisa: projeto longo, documentação infinível, customizações enormes, integração complicada, custo alto e meses esperando alguma entrega começar a gerar valor. Muita empresa ficou traumatizada com esse modelo. E […]