Descrição | Este ponto de entrada possibilita, por exemplo, a redefinição dos eventos para banco de horas através de critérios que diferem dos estabelecidos no cadastro de eventos. |
---|---|
Observações | Será enviado um array com 2 elementos via variável ParamIXB. Param1 = aTotais: Eventos para Folha de Pagamento. Tipo array. Criado pela função fGeraTot: aTotais[ nPos , ATOTAIS_DATA ] := dData //01 - Data do Evento
fGeraTot( @aTotais ,; //01 -> Array com os Totais do Ponto. Deverá ser passado por referência.
Conteúdo padrão assumido quando não for informado :
Param2 = aBHAcum - Eventos para banco de horas. Tipo array. Herdado do array aTotais. Atualmente, obedece a estrutura abaixo, mas poderá ser modificada no futuro: Elemento 1 – Data do evento Elemento 2 – Código do Evento Elemento 3 – Totais de Horas Elemento 4 – Percentual de Valorizacao para banco, quando houver senão é 0. Elemento 5 – Centro de Custo Elemento 6 – Tipo de Hora Extra (Valor padrão é "") Elemento 7 – Percentual de Hora Extra (Valor padrão é 0)
Retorno 1 – aTotais : Eventos para Folha de Pagamento. Tipo array. Estrutura conforme o Param1 enviado. Retorno 2 – aBHAcum: Eventos para banco de horas. Tipo array. Estrutura conforme o Param2 enviado. |
Exemplos |
#INCLUDE 'RWMAKE.CH' #DEFINE EVE_HREXTR '200' //-- Evento escolhido pelo usuario para tratamento do ponto de entrada. User Function PNM07001 Local aTotais := Paramixb[1] //-- Array de eventos totalizados para Folha de Pagamento Local aBHACum := Paramixb[2] //-- Array de eventos para o banco de horas Local nTotHe := 90 //-- SRA->RA_HEXTRA1 //-- Campo de Usuario para conter a quantidade de Horas Extras Fixas // por mes.Local nLimHe := 60 //-- Limite fixo para tratamento de hr.extras Local nLimBh := 90 //-- Limite fixo de BH Local nTotBH := 0 Local nT1 := 0 If lFuncAcBh //Se funcionario acumuala banco de horas nTotais := Len(aTotais) nPercFol := 100 nPercBco := 0 For nT1 := 1 To nTotais If ( aTotais[nT1,2] == EVE_HREXTR ) // Verifica evento de hora extra /* Verifica se o Total de Horas Extras esta dentro do Limite */ If nTotHe > nLimHe .and. nTotBH <= nLimBH nPercFol := 0 nPercBco := 100 ElseIf __TimeSum(aTotais[nT1,3],nTotHe) > nLimHe .and. nTotBH <= nLimBH nHoras := Round(fConvHr(aTotais[nT1,3],'D'),2) nResto := Round(fConvHr(__TimeSub(nLimHe,nTotHe),'D'),2) nPercFol := nResto / nHoras * 100 nPercBco := 100 - nPercFol EndIf /* Verifica se o Total de Horas Extras esta dentro do Limite do Banco de Horas */ If nTotBH > nLimBH nPercFol := 100 nPercBco := 0 ElseIf __TimeSum(aTotais[nT1,3],nTotBH) > nLimBh nHoras := Round(fConvHr(aTotais[nT1,3],'D'),2) nResto := Round(fConvHr(__TimeSub(nLimBH,nTotBH),'D'),2) nPercBco := nResto / nHoras * 100 nPercFol := 100 - nPercBco EndIf nTotHe := __TimeSum(aTotais[nT1,3],nTotHe) nValCalcB := 0 nValCalcF := 0 // Percentual para Banco de Horas nValCalcB := Round(fConvHr(aTotais[nT1,3],'D')*(nPercBco/100),2) nValCalcB := fConvhr(nValCalcB,'H') // Percentual para Folha nValCalcF := Round(fConvHr(aTotais[nT1,3],'D')*(nPercFol/100),2) nValCalcF := fConvhr(nValCalcF,'H') If ( nValCalcB > 0 ) If ( cArrCalc == 'F' ) nValCalcF := __TimeSub( aTotais[nT1,3],nValCalcB) Else nValCalcB := __TimeSub( aTotais[nT1,3],nValCalcF) Endif Endif If ( nValCalcB > 0 ) If ( nPos := aScan(aBHAcum, {|x| x[1] == aTotais[nT1,1] .and.x[2] == aTotais[nT1,2] .and. x[5] == aTotais[nT1,5] } ) ) > 0 aBHAcum[nPos,3] := __TimeSum(aBHAcum[nPos,3],nValCalcB) Else aAdd(aBHAcum,{ aTotais[nT1,1], aTotais[nT1,2], nValCalcB, 100,aTotais[nT1,5], "", 0}) EndIf nTotBH := __TimeSum(nValCalcB,nTotBH) Endif If ( nValCalcF > 0 ) aTotais[nT1,3] := nValCalcF Else aTotais[nT1,2] := 0 aTotais[nT1,2] := Space(3) Endif Endif Next EndIf Return({aTotais,aBHAcum})
|
Idioma | Português(Brasil) |
Versões | Microsiga Protheus 11 e superiores |
Compatível com as Bases de Dados | Todas |
Retorno | aTotais, aBHAcum
|
Programa Fonte | PONM070.PRX |