Criando um campo editável apenas por usuários de um determinado Grupo | Ti Responde 0176

No vídeo de hoje, vamos demonstrar em como habilitar a edição de um campo se um usuário estiver em um grupo específico.

A dúvida de hoje, nos perguntaram, se seria possível liberar a edição de um campo (através do X3_WHEN) somente se os usuários pertencerem a determinados grupos.

 

Pensando nisso, montamos um exemplo, onde vamos mostrar como fazer essa lógica usando a função FWSFUsrGrps.

 

Segue abaixo o vídeo exemplificando:

 

E abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zVid0176
Função para que só permita editar campos caso o usuário esteja num determinado grupo
@type  Function
@author Atilio
@since 03/07/2024
@example u_zVid0176()
@obs Deve ser colocado no X3_WHEN (modo de edição) da seguinte forma:
    Iif(ExistBlock("zVid0176"), u_zVid0176(), .F.)
/*/

User Function zVid0176()
    Local aArea       := FWGetArea()
    Local cGrpsPodem  := SuperGetMV("MV_X_GRTST", .F., "000001;000004;")
    Local cCodUsr     := RetCodUsr()
    Local aGrpsUsr    := FWSFUsrGrps(cCodUsr) //a FWSFUsrGrps é uma forma mais nova de usar a antiga UsrRetGrp
    Local lPodeEdit   := .F.
    Local nGrpAtu     := 0

    //Percorre os grupos
    For nGrpAtu := 1 To Len(aGrpsUsr)
    
        //Se for o grupo atual, estiver nos grupos que podem editar, altera a flag e encerra o laço
        If aGrpsUsr[nGrpAtu] $ cGrpsPodem
            lPodeEdit := .T.
            Exit
        EndIf

    Next

    FWRestArea(aArea)
Return lPodeEdit

Bom pessoal, por hoje é só.

 

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação