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 |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas