No artigo de hoje vamos mostrar como desativar a alteração de campos da grid de Solicitação de Compras via ponto de entrada.
Um aluno recentemente nos perguntou se seria possível desativar alguns campos da grid de Solicitação de Compras (MATA110), sem alterar o Modo De Edição via Configurador e somente para alguns usuários.
Pensado nisso, elaboramos a seguinte lógica para esse exemplo:
- Vamos validar no ParamIxb desse ponto de entrada MA110TEL, se é uma Alteração
- E se o usuário logado estiver contido em um parâmetro
- Será feito um laço de repetição na variável aHeader que tem as definições das colunas
- Se for alguma das colunas que queremos bloquear, vamos alterar a posição do array relacionada à validação de campo, forçando .F. para que o usuário não consiga alterar o valor
Abaixo então como ficou o código fonte:
//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
Bom pessoal, por hoje é só.
Abraços e até a próxima.