Árvore de páginas

Alteração da rotina de Fechamento da Folha para permitir sua execução por rotinas não visuais, por exemplo webservices, automação de testes e agendamentos do Schedule.

Linha de Produto:

Microsiga Protheus

Segmento:

Serviços

Módulo:

Gestão de Pessoal(SIGAGPE)

Função:

GPEM120

Situação/Requisito:

Cliente reclamava da necessidade do Fechamento da Folha precisar ser executado com exclusividade, impedindo que outros usuários utilizassem o sistema enquanto ocorria o processamento, que demorava algumas horas, nesse ínterim todos ficavam incapazes de acessar ao sistema, o quê ele reclamava ser diferente da realidade que ele tinha no produto Logix.

Solução/Implementação:

Como não havia a possibilidade de modificarmos a rotina para processar o Fechamento sem exclusividade e por filial, tal qual o Logix,modificamos a rotina de fechamento mensal para possibilitar sua execução por rotinas não-visuais. Além disso foi criado um RDMake "FechaFol" que é disponibilizado para o cliente como exemplo de utilização. Dessa forma o cliente pode agendar a execução do Fechamento Mensal para um período após o expediente de seus funcionários.

Exemplo:

 

FechaFol.prw - RDMake
/*/{Protheus.doc} FechaFol
	Fecha a Folha de Pagamento do Mês Corrente Sem Interface;
	Essa rotina pode ser chamada pelo Schedule, via WebServices
	ou qualquer outra interação que não involva interface gráfica;
	
	Esse é um exemplo de implementação fornecido pela Totvs de
	como utilizar a funcionalidade, o cliente é livre pra modificá-lo
	de acordo com suas necessidades;
	
	Exemplo de alterações que poderiam ser feitas:
	- Enviar o log de erros via e-mail para gestores do RH;	
@author PHILIPE.POMPEU
@since 24/05/2016
@version P11
@param aParam, vetor, deve conter o Código da Empresa e da Filial(nessa ordem).
@return Nil, sem retorno
/*/
User Function FechaFol(aParam)
	Local aLog	:= {}
	Local nHandle := 0
	Local cNomeLog:= ''
	/*Essa variável quando verdadeira faz com as chamadas à função HELP sejam direcionadas para o Log de Erros.*/	
	Private lMsHelpAuto 		:= .T.	
	/*Essa variável controle que o Log deve ser armazenado em memória e não em um arquivo.*/ 
	Private lAutoErrNoFile 	:= .T.
	
	/*A idéia dessa rotina é que sempre seja chamada por meios não visuais*/	
	If(IsBlind())
		Default aParam := {'',''}
		RpcSetType(3)		
		PREPARE ENVIRONMENT EMPRESA (aParam[1]) FILIAL (aParam[2]) MODULO "GPE"	  
	Else/* Entretanto para testes pode ser útil que sua chamada seja feita via menu, nesse caso também funcionaria.*/
		Default aParam := {cEmpAnt,cFilAnt}
	EndIf
	/*Chama o Fechamento para o Mês Corrente.*/
	GPEM120()
	
	/*Obtem qualquer erro que possa ter ocorrido no processamento da rotina de fechamento!*/	
	aLog := GetAutoGRLog()
	if(Len(aLog) > 0)
		
		/*Exibe erros no Console.*/
		aEval(aLog,{|x|ConOut(x)})
		
		/*Salva erros em arquivo*/
		cNomeLog := 'rh_gpem120_'
		cNomeLog += DtoS(Date())
		cNomeLog += Left(Time(),5)		
		cNomeLog := StrTran(cNomeLog, ":") + '.log'		
		nHandle :=  FCreate("\" + cNomeLog)	
		
		FWrite(nHandle,Replicate("*",10) + " LOG DE ERROS DO FECHAMENTO DA FOLHA " + Replicate("*",10) + CRLF)
		FWrite(nHandle,Replicate("*",10) + " DATA : "+ DtoC(Date())+" HORA : " + Time() + Space(3) + Replicate("*",10) + CRLF)
		
		aEval(aLog,{|x|FWrite(nHandle,UPPER(x) + CRLF)})
		
		FWrite(nHandle,Replicate("*",57) + CRLF)
		FClose(nHandle)
	endIf
	
	aSize(aLog,0)
	aLog := Nil
	
	If(IsBlind())			
		RpcClearEnv()
	endIf	
Return Nil

 

 

 

Chamados relacionados:

TVGQHZ