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=
Problemas na instalação zerada do Protheus: por que esse erro aparece logo no início?
Quem já tentou fazer uma instalação zerada do Protheus sabe: nem sempre o erro aparece depois de dias de uso. Às vezes, ele surge logo no começo, antes mesmo de você conseguir acessar o ambiente. E isso frustra — principalmente quando, aparentemente, “está tudo certo”. No artigo de hoje, vamos falar justamente sobre os problemas […]
{{brizy_dc_image_alt entityId=
Qual a diferença entre Protheus e TOTVS? Entenda de uma vez por todas
Se você já participou de alguma reunião sobre ERP no Brasil, provavelmente já ouviu alguém dizer frases como “a gente usa TOTVS” ou “nosso sistema é TOTVS”. E aí começa a confusão. Porque, na prática, TOTVS não é um sistema. E essa confusão, que parece pequena, é uma das grandes responsáveis por decisões ruins, projetos […]
{{brizy_dc_image_alt entityId=
Movimentos recentes da tecnologia: liderança, infraestrutura e foco em execução
O mercado de tecnologia vive um momento de ajuste fino. Em vez de grandes discursos sobre inovação, o que aparece com mais força são decisões práticas, mudanças de liderança, revisão de estratégia e investimentos muito bem direcionados. As notícias abaixo mostram como empresas globais e brasileiras estão se movimentando para ganhar eficiência, reduzir riscos e […]
{{brizy_dc_image_alt entityId=
O ERP não falha. O problema quase sempre é o treinamento da equipe
É comum ouvir frases como “esse ERP não funciona”, “o sistema é travado” ou “ninguém gosta de usar isso aqui”. Na maioria dos casos, o problema não está no ERP em si. Está na forma como a equipe foi (ou não foi) preparada para usar o sistema no dia a dia. Empresas investem valores altos […]