Versões: | Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Microsiga Protheus 10 |
Compatível Países: | Todos |
Sistemas Operacionais: | Todos |
Compatível às Bases de Dados: | Todos |
Idiomas: | Espanhol , Inglês |
Implementado para tratamento de horas de evento para banco de horas com apuração individual (conforme parametrização no cadastro de eventos), considerando que o cálculo seja parcial. Nessa etapa do processamento, para cada evento está sendo considerado o seu período de apuração (horas extras e atrasos podem ter períodos distintos, por exemplo). As horas descritas no Param 8 é parte das horas que serão consideradas para o banco de horas.
Na rotina de Cálculo Mensal, na apuração de Banco de Horas.
PONM070.PRW
PNM070BH01 - Apuração individual ( < dData> , < cPerApur> , < aEveBH[nT,1]> , < aTotais> , < aBHAcum> , < aEveBH> , < lAcumBH> , < nTBHoras> ) --> aRetorno
Nome | Tipo | Descrição | Default | Obrigatório | Referência | ||||||||||||
dData | Data | Data do evento. | X | ||||||||||||||
cPerApur | Caracter | Período de Apuração do evento. Geralmente é ‘D’, diária. Determinados eventos possuem um período de apuração diferente, que é discriminado no cadastro de regras de apontamento. | 'D' | X | |||||||||||||
aEveBH[nT,1] | Array of Record | Código do Evento | X | ||||||||||||||
aTotais | Array of Record | Eventos para Folha de Pagamento. Criado pela função fGeraTot. | X | ||||||||||||||
aBHAcum | Array of Record | Eventos para banco de horas. Herdado do array aTotais. Atualmente, obedece a estrutura abaixo, mas poderá ser modificada no futuro | X | ||||||||||||||
aEveBH | Array of Record | Códigos de Eventos para banco de horas. | X | ||||||||||||||
lAcumBH | Lógico | Flag para realizar as operações de acúmulo no banco de horas após a saída do ponto entrada. | X | ||||||||||||||
nTBHoras | Numérico | Total de horas calculada para o evento descrito no Param 3 | X |
-
aRetorno(array_of_record)
- Deverá ser retornado um array com 4 elementos.
- Parâmetros enviados: Será enviado um array com 8 elementos via variável ParamIXB.
* Param1 – Data do evento. Tipo data.
* Param2 – Período de Apuração do evento. Tipo caracter. Geralmente é ‘D’, diária. Determinados eventos possuem um período de apuração diferente, que é discriminado no cadastro de regras de apontamento.
* Param3 – Código do Evento.
* Param4 – Eventos para Folha de Pagamento. Tipo array. Criado pela função fGeraTot.
fGeraTot( aTotais ,; //01 -> Array com os Totais do Ponto. Deverá ser passado por referência.
dData ,; //02 -> Data para Pesquisa e Gravacao no aTotais
nHoras ,; //03 -> Horas para Soma ou Geracao
nValor ,; //04 -> Valor para Soma ou Geracao
cEvento ,; //05 -> Evento do Ponto para Pesquisa
cCusto ,; //06 -> Centro de Custo para Comparacao
cFil ,; //07 -> Filial para Pesquisa no SP9
cVerba ,; //08 -> Verba da Folha
lSubstitui ; //09 -> Substitui a(s) Hora(s) Existente(s) em aTotais )
aTotais: = dData //01 - Data do Evento
cEvento //02 - Codigo do Evento
nHoras //03 - Quantidade do Evento
cVerba //04 - Codigo para a Folha
cCusto //05 - Centro de Custo do Evento
nValor //06 - Valor do Evento
Dtos( dData ) //07 - String de Data
Conteúdo padrão assumido quando não for informado :
aTotais := {}
dData := Ctod('//')
nHoras := 0
nValor := 0
cEvento := Space( GetSx3Cache( 'PB_PD' , 'X3_TAMANHO' ) )
cCusto := Space( GetSx3Cache( 'PB_CC' , 'X3_TAMANHO' ) )
cFil := fFilFunc( 'SP9' )
cVerba := PosSP9( cEvento , cFil , 'P9_CODFOL' , 1 )
lSubstitui := .F.
* Param5 – 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
* Param6 – Códigos de Eventos para banco de horas. Tipo array. Obedece a estrutura:
Elemento 1 - Código do Evento
Elemento 2 - Período de Apuracao
Elemento 3 - Número de Horas De
Elemento 4 - Número de Horas Ate
Elemento 5 - Percentual de Valorização do Evento
Elemento 6 - Agrupa Evento (S/N)
Elemento 7 - Valores Totais ou Proporcional a Faixa
Elemento 8 - Percentual para Banco de Horas
Elemento 9 - Percentual para Folha de Pagto
* Param 7 – Flag para realizar as operações de acúmulo no banco de horas após a saída do ponto entrada.
* Param 8 – Total de horas calculada para o evento descrito no Param 3.
- Retornos: Deverá ser retornado um array com 4 elementos:
* Retorno 1 – aTotais : Eventos para Folha de Pagamento. Tipo array. Criado pela função fGeraTot.
* Retorno 2 – aBHAcum : Eventos para banco de horas. Tipo array. Herdado do array aTotais. Atualmente, obedece a estrutura abaixo, mas poderá ser modificada no futuro.
* Retorno 3 – lAcumBH :Flag para realizar as operações de acúmulo no banco de horas após a saída do ponto entrada. O valor será alterado a cada evento lido o que significa que qualquer alteração somente influenciará o evento corrente.
* Retorno 4 – nTBHoras : Total de horas calculada para o evento descrito no Param 3.
Procedimentos para Implementação 1. No Rdmake obter o array enviado. 2. Realizar os procedimentos necessários.3. O retorno dos elementos poderá influenciar o resultado final da apuração. Assim, se parte das horas para banco forem recalculadas, as horas restantes poderão ser acumuladas no total de horas para folha de pagamento (nesse caso, utilize a função fGeratot, informando a nova quantidade de horas para o evento).Exemplo de ponto de entrada (ilustra a mudança de horas calculadas):#INCLUDE 'RWMAKE.CH'USER FUNCTION PNM070BH01 Local dData := Paramixb[1] //-- dData da apuracao do Evento (pode ser o dia, o ultimo dia da semana, da quinzena, do mes)Local cPerApur := Paramixb[2] //-- Periodo da apuracao do evento (D- diario, S - Semanal, Q - Quinzenal ou M - mensal)Local cCodEve := Paramixb[3] //-- Codigo do EventoLocal aTotais := Paramixb[4] //-- Array de eventos totalizados para Folha de PagamentoLocal aBHACum := Paramixb[5] //-- Array de eventos para o banco de horas Local aEveBH := Paramixb[6] //-- Array de Eventos para o banco de horas com informacoes do cadastro de eventos (SP9)Local lACum := Paramixb[7] //-- Flag para realizar as operacoes de acumulo no banco de horas apos a saida do ponto entradaLocal nTBHoras := Paramixb[8] //-- Total de horas calculada para o evento descrito no parametro 3nTbHoras:= If(nTbHoras < 1, 1, nTbHoras)Return({ aTotais,aBHAcum,lAcum,nTbhoras})