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 |
Foi criado um novo ponto de entrada, no “Cálculo Mensal”, para a customização da contagem de ocorrências de eventos do ponto eletrônico.
Contextualização
O SIGAPON permite a geração de eventos por Tipo de Marcação e Centro de Custo, isso significa que um evento pode
ocorrer mais de uma vez num mesmo dia. Por exemplo, para um trabalhador que cumpre metade da sua jornada num
centro de custo e a outra parte em outro centro de custo, têm-se dois eventos de “Horas Normais”.
A contagem de ocorrências irá apurar, então, duas ocorrências desse evento. Para algumas empresas, deve-se
reduzir essa contagem a um dia de trabalho. Nesse caso, é necessário o desenvolvimento de uma customização
através do uso do ponto de entrada do qual se trata essa documentação.
PONM070.PRX
PNMEVECONT - Contagem de ocorrências ( < aTotais> , < dPerIni> , < dPerFim> , < aTabCalend> , < aEveCont[nPos,2]> , < nHoras> ) --> aRetorno
Nome | Tipo | Descrição | Default | Obrigatório | Referência | ||||||||||||
aTotais | Array of Record | Array com os eventos totalizados por data e centro de custo. | X | ||||||||||||||
dPerIni | Data | Periodo Inicial do Apontamento | X | ||||||||||||||
dPerFim | Data | Periodo Final do Apontamento | X | ||||||||||||||
aTabCalend | Array of Record | Array com o Calendario de Marcacoes | X | ||||||||||||||
aEveCont[nPos,2] | Array of Record | Evento Contador Ponto para Pesquisa | X | ||||||||||||||
nHoras | Numérico | Horas do Evento do Corrente | X |
-
aRetorno(vetor)
- Array com 02 elementos: aTotais; lRet
- Parâmetros enviados
Será enviado um array com 06 elementos via variável ParamIXB.
Elemento1 – Array com os eventos totalizados por data e centro de custo. Sua estrutura é:
Item 01- Data do Evento. Tipo data.
Item 02 - Codigo do Evento. Tipo caracter
Item 03 - Quantidade do Evento. Tipo numérico
Item 04 - Codigo para a Folha (código da verba). Tipo caracter.
Item 05 - Centro de Custo do Evento. Tipo caracter.
Item 06 - Valor do evento. Tipo numérico.
Item 07 - String de Data. Tipo caracter.
Elemento2 – Data inicial do período de apontamento.
Elemento3 – Data final do período de apontamento.
Elemento4 – Array com o calendário do trabalhador. Refere-se ao PonCalen.ch para obter a identificação das informações contidas nesse array.
Elemento5 – Código do evento contador.
Elemento6 – Quantidade de horas do evento corrente (o evento originalmente apurado).
- Retorno
Deverá ser retornado um array com 02 elementos:
aTotais – Array com os eventos totalizados por data e centro de custo. Sua estrutura é idêntica a especificada no Elemento1 enviado.
lRet – Retorno que especifica que o evento contador deverá ser incrementado em 1 unidade.
.T. - > incrementa contador
.F. -> Não incrementa
Importante
O ponto de entrada antecede a contagem de ocorrências que é realizada no início do “Cálculo Mensal” a medida que se obtém o evento do apontamento (SPC) e antes do início das apurações que não sejam diárias. Critérios como tolerância mensal para faltas ou os destinos dos eventos (banco de horas ou folha de pagamento) não são considerados na contagem das ocorrências do evento.
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 rotina. Assim, poderão ser gravadas informações alteradas por esse ponto de entrada.
Exemplo de rdmake que assume apenas a primeira ocorrência de horas normais de um dia:#Include 'Rwmake.ch'#DEFINE ATOTAIS_DATA 01#DEFINE ATOTAIS_EVENTO_PONTO 02#DEFINE ATOTAIS_HORAS 03#DEFINE ATOTAIS_CENTO_DE_CUSTO 05 #DEFINE HORAS_TRABALHADAS '101' //Consideramos o Evento de Horas Trabalhadas como 101 USER FUNCTION PNMEVECONT()Local aTotais := ParamIxb[1] // Array Eventos Totalizados Local dPerIni := ParamIxb[2] // Periodo Inicial do ApontamentoLocal dPerFim := ParamIxb[3] // Periodo Final do ApontamentoLocal aTabCalend := ParamIxb[4] // Array com o Calendario do TrabalhadorLocal aEveCont := ParamIxb[5] // Evento Contador do Ponto para PesquisaLocal bAsc := {|| NIL }Local cCusto := SPC->PC_CCLocal cEvento := SPC->PC_PDLocal cTpMarc := SPC->PC_TPMARCA Local dData := SPC->PC_DATALocal lRet := .T.bAsc := { |x| (; ( x[ATOTAIS_EVENTO_PONTO] == aEveCont ); .and.; ( x[ATOTAIS_DATA] == dData ); ); } // Somente Considera uma Ocorrencia para horas Trabalhadas // para cada dia independente do tipo de marcacao e do centro de // custo em que ocorreram. If cEvento == HORAS_TRABALHADAS IF ( ( nPos := aScan( aTotais , bAsc ) ) > 0 ) lRet:= .F. Endif Endif Return ( {aTotais, lRet} )