Home

Linha Microsiga Protheus

Páginas filhas
  • PONAPO9 - Geração H.E. para horário móvel livre -- 109893

Ponto-de-Entrada: PONAPO9 - Geração H.E. para horário móvel livre
Versões: Microsiga Protheus 10 , Microsiga Protheus 11
Compatível Países: Brasil
Sistemas Operacionais: Todos
Idiomas: Português (Brasil)
Descrição:
O ponto de entrada permite desmembrar as horas extras, conforme regra de negócios da empresa, pois quando se utiliza o horário móvel livre, não é feito o controle de intervalos, apenas da jornada.
Programa Fonte
PONXAPO.PRX
Sintaxe

PONAPO9 - Geração H.E. para horário móvel livre ( < Paramixb1> , < Paramixb2> , < @Paramixb3> ) --> aHorasNew

Parâmetros:
Nome Tipo Descrição Default Obrigatório Referência
Paramixb1 Array of Record Array contendo as marcações do dia. X
Paramixb2 Array of Record Quantidade de horas da jornada a cumprir. X
Paramixb3 Array of Record Objeto de apontamento. X X
Retorno
    aHorasNew(array_of_record)
Observações

O ponto de entrada deve retornar um array de dois itens, com estrutura idêntica ao Paramixb1.

Exemplos
//No exemplo abaixo, se o funcionário trabalhou mais que a jornada, desmembro a quantidade de horas do intervalo das horas extras a gerar.#INCLUDE "PROTHEUS.CH"User Function PONAPO9()Local aHorasNew		:= {}Local aOnlyMarkings := Paramixb[1]Local nFornX   		:= 0Local nX   	   		:= 0Local nXMinus1 		:= 0Local nHorasExtra	:= 0Local nHorasI1		:= 0Local nHorasI2		:= 0Local nHorasI3		:= 0Local nHorasInt		:= 0Local nHorasJorn	:= Paramixb[2]Local nHorasTrab	:= 0Local oAponta		:= Paramixb[3]nFornX := Len( aOnlyMarkings )For nX := nFornX  To 1 Step -2	nXMinus1 := ( nX - 1 )	nHorasTrab := SomaHoras( SubHoras( aOnlyMarkings[ nX, 2 ], aOnlyMarkings[ nXMinus1, 2 ] ), nHorasTrab )Next nFornXIf nHorasTrab > nHorasJorn	nHorasExtra := SubHoras(nHorasTrab, nHorasJorn)	SPJ->( dbSeek(xFilial("SPJ")+SRA->RA_TNOTRAB) )	nHorasI1	:= SPJ->PJ_HRSINT1	nHorasI2	:= SPJ->PJ_HRSINT2	nHorasI3	:= SPJ->PJ_HRSINT3    	If nHorasI1 == 0.10 .And. nHorasI2 == 0.20 .And. nHorasI3 == 0.10//NR17		For nX := nFornX-1  To 1 Step -2			nXMinus1 := ( nX - 1 )	        If nXMinus1 > 0				nHorasInt := SomaHoras( SubHoras( aOnlyMarkings[ nX, 2 ], aOnlyMarkings[ nXMinus1, 2 ] ), nHorasInt )			EndIf		Next nFornX		EndIf	aAdd( aHorasNew , aClone( aOnlyMarkings[ 01 ] ) )	aAdd( aHorasNew , aClone( aOnlyMarkings[ 01 ] ) )	aHorasNew[ Len( aHorasNew ), 02 ] := SomaHoras( aOnlyMarkings[ 01, 02 ], nHorasExtra-nHorasInt  )	If nHorasInt > 0		fGeraRes(	oAponta:aResult								,;	//01 -> Array com os Resultados do Dia					aHorasNew[01, 01 ]							,;	//02 -> Data da Geracao					nHorasInt									,;	//03 -> Numero de Horas Resultantes					"028"										,;	//04 -> Codigo do Evento					aHorasNew[01, 14 ]							,;	//05 -> Centro de Custo a ser Gravado					"2S"										,;	//06 -> Tipo de Marcacao					.T.											,;	//07 -> True para Acumular as Horas					""             								,;	//08 -> Periodo de Apuracao					0           								,;	//09 -> Tolerancia					"N"											,;	//10 -> Tipo de Arredondamento a Ser Utilizado					Nil											,; //11 -> Substitui a(s) Hora(s) Existente(s) ( Garanto Apenas 1 DSR por Data )					""											,; //12 -> Funcao  	  				""											,; //13 -> Depto para gravacao					""											,; //14 -> Posto para gravacao					""											,; //15 -> Periodo para Gravacao					""											,; //16 -> Processo para Gravacao					""											,; //17 -> Periodo para Gravacao					""			 								,; //18 -> NumPagto para Gravacao					oAponta:cTnoCalend					    	,; //19 -> Turno de Trabalho					oAponta:cSeqTno								;  //20 -> Semana/Sequencia do Turno				)		 EndIfEndIFReturn(aHorasNew)
Variáveis
Nome Tipo Escopo Pode Alterar descrição
Array of Record Global Não