Árvore de páginas

Descrição

GPMEDPER - Manipula período das médias

Observações

Ponto de entrada executado antes das busca dos lançamentos no histórico de acumulado (tabela SRD). Permite alterar o período que será considerado para busca das médias.

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

Idioma

Português(Brasil)

Versões

Microsiga Protheus 12.1.7

Sistemas Operacionais Suportados

Todos

Compatível com as Bases de Dados

Todas

Retorno

Nenhum

Eventos de chamada do Ponto de Entrada

Geração e cálculo de médias

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

 

Programa Fonte

GPEXMED.PRX