Home

Linha Microsiga Protheus

Páginas filhas
  • PNM070BH01 - Apuração individual -- 10433

Ponto-de-Entrada: PNM070BH01 - Apuração individual
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
Descrição:

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.

Eventos

Na rotina de Cálculo Mensal, na apuração de Banco de Horas.
 

Programa Fonte
PONM070.PRW
Sintaxe

PNM070BH01 - Apuração individual ( < dData> , < cPerApur> , < aEveBH[nT,1]> , < aTotais> , < aBHAcum> , < aEveBH> , < lAcumBH> , < nTBHoras> ) --> aRetorno

Parâmetros:
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
Retorno
    aRetorno(array_of_record)
  • Deverá ser retornado um array com 4 elementos.
Observações
  • 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.

 

Exemplos
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})