Árvore de páginas

Ponto de Entrada para alterar a situação do funcionário no totalizador do relatório da Folha de Pagamento

Características do Requisito

Linha de Produto:Microsiga Protheus
Segmento:Recursos Humanos
Módulo:SIGAGPE
RotinaGPER106 - Relatório da Folha de Pagamento
Pacotes12.1.27:https://r.totvs.io/p/955648 ; 12.1.25:https://r.totvs.io/p/955647 ; 12.1.23:https://r.totvs.io/p/955646 ; 12.1.17:https://r.totvs.io/p/955645 ;

Ponto de Entrada

Ponto de Entrada:SITFOL106
Descrição:Permite alterar a Situação do funcionário utilizada no totalizador do relatório da folha de pagamento.
Localização:SIGAGPE - Relatórios - Periódicos - Folha de Pagamento
Eventos:Impressão do relatório personalizável da Folha de Pagamento, GPER106, com totalizador por filial, unidade de negócio ou empresa.
Programa Fonte:GPER106
Retorno:

Array com quatro posições tendo a seguinte estrutura:

aReturn[1], Caracter, Situação ( " " = Normal; "A" = Afastado; "F" = Férias; "T" = Transferido; "D" = Demitido)
aReturn[2], Caracter, Codigo Afastamento FGTS (RA_AFASFGT)
aReturn[3], Caracter, Código Rescisão RAIS (RA_RESCRAI)
aReturn[4], Data, Data de Demissão (Se a data de demissão for menor que a data final do período o funcionário será impresso com situação normal)


Um array com a mesma estrutura é passado por parâmetro, PARAMIXB[1], esse parâmetro contém as informações que o sistema usa no padrão.


No exemplo abaixo alteramos a situação do funcionário que foi transferido, ao imprimir o relatório no período em que ocorreu a transferência.

#INCLUDE "TOTVS.CH"

/*/{Protheus.doc} SitFol106
Altera a Situação do funcionário para o totalizador do relatório da Folha, GPER106
@type  User Function
@author User
@since 27/03/2020
@return aSituacao, Array, Array com as informações sobre a situação do funcinoário
		aReturn[1] := SRA->RA_SITFOLH
		aReturn[2] := SRA->RA_AFASFGT
		aReturn[3] := SRA->RA_RESCRAI
		aReturn[4] := SRA->RA_DEMISSA
@see https://tdn.totvs.com/x/AfB3I
/*/
User Function SitFol106()
	
	Local aArea		:= GetArea()
	Local aSituacao := PARAMIXB[1]	// Informações sobre a situação do funcionário utilizadas por padrão
	Local dDtPerIni := PARAMIXB[2]	// Data Inicial do período que está sendo impresso
	Local dDtPerFim := PARAMIXB[3]	// Data final do período que está sendo impresso
	Local nTamFil	:= GetSx3Cache("RE_FILIALP", "X3_TAMANHO")
	
	// Tabela de Funcionários já está posicionada
	If SRA->(RA_TIPOADM $ "1C/2C/3C/9C") // Funcinário transferido
		
		dbSelectArea("SRE")
		SRE->(dbSetOrder(2)) // Empr.Destino + Fil. Destino + Mat. Destino + Dt.Transfer
		If SRE->(dbSeek(cEmpAnt + PadR(SRA->RA_FILIAL, nTamFil) + SRA->RA_MAT))
			If SRE->(RE_DATA >= dDtPerIni .And. RE_DATA <= dDtPerFim) // Transferência dentro do período
				aSituacao[1] := "T" // Altera situação para Transferido
			EndIf
		EndIf
		
	EndIf
	
	RestArea(aArea)
	
Return aSituacao

Impressão do relatório da folha de pagamento utilizando o ponto de entrada como no exemplo desse documento

Inicialmente tínhamos 3 Funcionários na Filial D MG 01 ,
No mês 06/2019 o primeiro, matricula 346700, foi transferido para a filial D RJ 01 gerando um novo registro nessa filial;
O funcionário 02, matricula 346702, foi demitido.


Foi realizado o cálculo da folha para ambas as filiais e impresso o relatório com os seguintes parâmetros:


Nos totalizadores do relatório temos:

Total para a filial D MG 01

Veja que o registro "deixado" pelo funcionário transferido não foi impresso, isso ocorre porque para que o funcionário seja impresso é necessário que tenha verbas nas tabelas de movimento mensal, SRC para o período atual, ou SRD para períodos fechados. 


Totalizador da Filial D RJ 01

Aqui temos a intervenção do ponto de entrada, o funcionário é totalizado como transferido


O ponto de entrada altera apenas o totalizador no corpo do relatório o funcionário é apresentado com situação normal, essa é a situação do funcionário na filial D RJ 01 

O totalizador da empresa D apresenta os três funcionários


Como comparação segue o totalizador da empresa sem utilizar o ponto de entrada

O funcionário é contabilizado como Normal, já que essa é a sua situação na filial onde tem cálculo.