Home

Linha Microsiga Protheus

Páginas filhas
  • PNMEVECONT - Contagem de ocorrências -- 10437

Ponto-de-Entrada: PNMEVECONT - Contagem de ocorrências
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:

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.

Programa Fonte
PONM070.PRX
Sintaxe

PNMEVECONT - Contagem de ocorrências ( < aTotais> , < dPerIni> , < dPerFim> , < aTabCalend> , < aEveCont[nPos,2]> , < nHoras> ) --> aRetorno

Parâmetros:
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
Retorno
    aRetorno(vetor)
  • Array com 02 elementos: aTotais; lRet
Observações
  • 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. 

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