Bloquear Operações em Todas Telas de Cadastro em uma Filial | Ti Responde 0200

No vídeo de hoje, vamos demonstrar em como bloquear operações de manipulação de dados em uma filial através de pontos de entrada.

A dúvida de hoje, nos perguntaram, se seria possível bloquear operações de manipulação e manutenção de dados de uma tabela (como incluir, alterar e excluir) para todas as telas em determinadas filiais.

 

Pensando nisso, montamos um exemplo, onde vamos mostrar em como criar esse bloqueio através de dois pontos de entrada o mBrwBtn e o ChkExec.

 

Segue abaixo o vídeo exemplificando:

 

E abaixo a função desenvolvida:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zVid0200
Função que valida a filial logada, se for a "01" ou a "02" irá barrar as operações
@type  Function
@author Atilio
@since 08/08/2024
@return lBloqueada, Lógico, .T. Se for uma das filiais que não podem manipular os dados ou .F. se podem manipular
/*/

User Function zVid0200()
    Local aArea      := FWGetArea()
    Local lBloqueada := .F.
    Local cFilAtual  := FWFilial()
    Local cFilBloq   := "01;02;" //Se for mais caracteres, ficaria por exemplo 0101;0102; e assim por diante

    //Se for uma das filiais bloqueadas
    If cFilAtual $ cFilBloq
        lBloqueada := .T.
    EndIf

    FWRestArea(aArea)
Return lBloqueada

/*/{Protheus.doc} User Function MBrwBtn
Valida o clique em alguma opção disponível nos Browses das rotinas
@type  Function
@author Atilio
@since 08/08/2023
@see https://tdn.totvs.com/pages/releaseview.action?pageId=6815197
/*/

User Function MBrwBtn()
    Local aArea     := FWGetArea()
    Local lContinua := .T.
    Local nOpcaMenu := ParamIXB[3]

    //Se a filial estiver bloqueada
	If u_zVid0200()

		//Se for a opção de visualizar vai permitir
		If nOpcaMenu == 2
			lContinua := .T.
			
		//Senão, se for qualquer outra, vai bloquear
		Else
			lContinua := .F.
		EndIf
	EndIf

    FWRestArea(aArea)
Return lContinua

/*/{Protheus.doc} User Function ChkExec
Ponto de Entrada acionado ao clicar em alguma opção no menu
@type  Function
@author Atilio
@since 08/08/2024
@see https://tdn.totvs.com/display/public/framework/CHKEXEC+-+Dispara+ponto+de+entrada
/*/

User Function ChkExec()
    Local lContinua := .T.
    Local cFuncao   := Alltrim(Upper(PARAMIXB))
    Local cFuncBloq := ""

    //Se a filial estiver bloqueada
	If u_zVid0200()
        //Monta quais funções são bloqueadas (aqui você pode colocar outras também, como customizadas ou de outros processos)
        cFuncBloq += "MATA215(); " //Refaz Acumulados
        cFuncBloq += "MATA216(); " //Refaz Poder Terceiros
        cFuncBloq += "MATA300(); " //Refaz Saldos
        cFuncBloq += "MATA215(); " //Refaz Empenhos / Acumulados
        cFuncBloq += "MATA190(); " //Refaz Custo Entrada
        cFuncBloq += "FINA410(); " //Refaz Dados Cliente e Fornecedor

        //Se a função tiver na lista das bloqueadas, não permite prosseguir
        If cFuncao $ cFuncBloq
			lContinua := .F.
		EndIf
    EndIf

Return lContinua

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