Função para alterar um parâmetro lógico (SX6)

Função para alterar um parâmetro lógico (SX6)

Olá pessoal…

Hoje vou mostrar uma função que desenvolvi para alterar parâmetros do tipo lógico (que pode ser utilizada pelo usuário comum).

Imagine uma situação em que constatemente os usuários solicitama a alteração de um parâmetro para .T. ou para .F., para otimizar esse tempo, desenvolvi uma rotina que pode ser inserida no Ações Relacionadas ou que pode ser chamada em qualquer outro lugar, para a alteração do parâmetro.

Ela é simples, é uma tela com 3 botões, o de Habilitar, o de Desabilitar e o de Cancelar. Abaixo um print.

Função para alterar parâmetro
Função para alterar parâmetro

Sendo que após ela ser confirmada, ela encerra a thread atual, para a rotina ser re-aberta (recarregar o parâmetro na memória).

Abaixo o código fonte desenvolvido.

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zAltPar
Função que altera parâmetros do tipo Lógico (deve ser um parâmetro com conteúdo lógico na SX6, por exemplo, "MV_CHVNFE")
@author Atilio
@since 25/04/2017
@version 1.0
@type function
	@param cParametro, Character, Código do parâmetro que será atualizado
/*/

User Function zAltPar(cParametro)
	Local aArea    := GetArea()
	Local lConsAtu := Nil
	Local lConsNov := Nil
	Local nOpcao   := 0
	Local aBotoes  := {}
	Local cMensag  := ""
	Default cParametro := ""
	
	//Se tiver parâmetro
	If !Empty(cParametro)
		lConsAtu := GetNewPar(cParametro, .F.)
		
		//Adiciona os botões
		aAdd(aBotoes, Iif(lConsAtu,  "Manter Habilitado",   "Habilitar"))   //Opção 1
		aAdd(aBotoes, Iif(!lConsAtu, "Manter Desabilitado", "Desabilitar")) //Opção 2
		aAdd(aBotoes, "Cancelar")                                           //Opção 3
		
		//Mostra o aviso e pega o botão
		cMensag := "Atualmente o parâmetro esta " + Iif(lConsAtu, "HABILITADO", "DESABILITADO") + "." + CRLF
		cMensag += "Deseja alterar?"
		nOpcao := Aviso("Atenção", cMensag, aBotoes, 2)
		
		//Definindo a opção nova
		If nOpcao == 1
			lConsNov := .T.
		ElseIf nOpcao == 2
			lConsNov := .F.
		EndIf
		
		//Se não for nulo
		If lConsNov != Nil
			//Se o conteúdo novo for diferente do atual
			If lConsNov != lConsAtu
				PutMV(cParametro, lConsNov)
				
				Final("Atenção", "A tela será fechada e deve ser aberta novamente!")
			EndIf
		EndIf
	EndIf
	
	RestArea(aArea)
Return

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

Deixe uma resposta

%d blogueiros gostam disto: