Exemplos | #Include 'Protheus.ch'
User Function GPMEDPER()
Local aAfast := {} Local aMesesAf := {} Local cLimRef := "" Local cPerIni := "" Local cPerIniAux := "" Local cRefAux := "" Local dDtIni := cToD("//") Local dDtFim := cToD("//") Local nCont := 0
/*Variáveis que controlam a configuração das verbas que serão consideradas para média: a13Sala - 13º salário aAviso - Aviso prévio aFerPro - Férias proporcionais aFerVen - Férias vencidas
Todas elas possuam a estrutura abaixo, sendo os principais campos: [1] - Código da verba [2] - Quantidade de meses para média [3] - AnoMês de início da busca para média (AAAAMM) [4] - AnoMês de fim da busca para média (AAAAMM) */
//Alert("Passou pelo PE GPMEDPER")
//Verifica se há verbas configuradas para média de 13º* salário If Len(a13Sala) > 1 //Mês inicial para pesquisa dos afastamentos dDtIni := Max( SRA->RA_ADMISSA, cToD("01/" + SubStr(a13Sala[1][3], 5, 2) + "/" + SubStr(a13Sala[1][3], 1, 4) ) )
//Data final para pesquisa dos afastamentos dDtFim := cToD("01/" + SubStr(a13Sala[1][4], 5, 2) + "/" + SubStr(a13Sala[1][4], 1, 4)) If !Empty(dDtFim) dDtFim := cToD( StrZero( f_UltDia( dDtFim ), 2) + "/" + SubStr( a13Sala[1][4], 5, 2 ) + "/" + SubStr( a13Sala[1][4], 1, 4 ) ) //Verifica os afastamentos no período de busca das médias fRetAfas(dDtIni, dDtFim, Nil, Nil, Nil, Nil, @aAfast) //For para percorrer os afastamentos e verificar os meses afastados (férias não será considerado como afastamento) For nCont := 1 To Len(aAfast) If aAfast[nCont, 13] != "001"//Só considera na regra de afastado se não for for afastamento de férias cRefAux := AnoMes(aAfast[1, 3]) cLimRef := AnoMes(aAfast[1, 4]) While cRefAux <= cLimRef //Verifica se já considerou o mês de afastamento no array auxiliar aMesesAf If aScan( aMesesAf, {|x| x[1] == cRefAux } ) == 0 aAdd( aMesesAf, {cRefAux} ) EndIf //Soma um mês na variável que controla a competencia cRefAux := SomaMesAno( cRefAux ) End While EndIf Next nCont EndIf
//Guardo o novo período inicial, subtraindo os meses que o funcionário ficou afastado cPerIni := AnoMes( MonthSub( dDtIni, Len(aMesesAf) ) )
//Atualizo o array a13Sala com o período inicial de busca //Obs.: se o número de meses para divisão diminuir ou for alterado, a posição 2 deverá ser alterada For nCont := 1 To Len(a13Sala) //a13Sala[nCont,2] := nDivisor a13Sala[nCont,3] := cPerIni Next//a13Sala EndIf
//Variáveis que controlam período inicial e final de busca na tabela SRD (Acumulados) (** Devem ser informados) cMenor := cPerIni //cMaior := "201612"
//Variáveis que controlam o períodos que serão considerados para o cálculo e geração da média (** Devem ser informados) cPer1 := cPerIni//1º Período inicial de busca das médias cPer2 := cPerIni//2º Período inicial de busca das médias cPer3 := cPerIni//3º Período inicial de busca das médias cPer4 := cPerIni//4º Período inicial de busca das médias cPerAte := AnoMes(dDtFim)//Período final de busca das médias
/*Variável que controla a quantidade de meses para média do sindicato Obs.: se o número de meses para divisão diminuir ou for alterado, a posição 2 deverá ser alterada aSind[1] - Se será considerada para média aSind[2] - Quantidade de meses para média */
Return |
---|
Variáveis | Variáveis que controlam a configuração das verbas que serão consideradas para média: a13Sala - 13º salário aAviso - Aviso prévio aFerPro - Férias proporcionais aFerVen - Férias vencidas //Variáveis que controlam período inicial e final de busca na tabela SRD (Acumulados) cMenor - Período inicial para busca na tabela SRD cMaior - Período inicial para busca na tabela SRD //Variáveis que controlam o períodos que serão considerados para o cálculo e geração da média (** Devem ser informados) cPer1 - 1º Período inicial de busca das médias cPer2 - 2º Período inicial de busca das médias cPer3 - 3º Período inicial de busca das médias cPer4 - 4º Período inicial de busca das médias cPerAte - Período final de busca das médias |
---|