Gestão de Pessoas - Manual do Usuário > Customizações > Regras > Regras por Processo > Regra por processo 845 - Alocação de Marcações

Regra por processo 845 - Alocação de Marcações

É utilizada apenas no Cálculo de Apuração, antes da Alocação de Marcações. O uso especifico de funções está limitado a RetornaHorario e RetornaBatidaHorario.

Exemplo:

/* Lista contendo os Horários no Período. */

definir numero vposmar;

definir numero vdatini;

definir numero vdatfim;

definir numero vhorini;

definir numero vhorfim;

definir lista ListaHorario;

 

ListaHorario.DefinirCampos();

ListaHorario.AdicionarCampo("Horario", numero);

ListaHorario.AdicionarCampo("Data", data);

ListaHorario.AdicionarCampo("DataIni", data);

ListaHorario.AdicionarCampo("HoraIni", numero);

ListaHorario.AdicionarCampo("DataFim", data);

ListaHorario.AdicionarCampo("HoraFim", numero);

ListaHorario.EfetivarCampos();

 

xDatAux=0;

Para (xDatAux = DatIni; xDatAux <= DatFim; xDatAux++)

Inicio

/* Retorna o Horário do Colaborador. */

RetornaHorario(R034Fun.NumEmp, R034Fun.TipCol, R034Fun.NumCad, xDatAux,"S",xCodHor);

xHorBase = 0;

/* Seta a sequência da batida. */

xContaSeq = 1;

/* Retorna as Batidas do Horário na Data. */

xtembat = RetornaBatidaHorario(xCodHor,xContaSeq,xUsoMar,xHorMar,xTolAnt,xTolApo,xFaiMov);

/* Armazena os dados do Horário na Data. */

ListaHorario.Adicionar();

/* Horário Inicio da Data. */

ListaHorario.DataIni = xDatAux;

ListaHorario.HoraIni = xTolAnt;

xHorBase = xTolAnt;

Enquanto(xtembat <> 0)

Inicio

Se (xContaSeq > 1)

Inicio

/* Horário Final da Data. */

ListaHorario.HoraFim = xTolApo;

Se (xTolApo < xHorBase)

ListaHorario.DataFim = xDatAux + 1;

Senao ListaHorario.DataFim = xDatAux;

Fim;

xContaSeq++;

xtembat = RetornaBatidaHorario (xCodHor, xContaSeq,xUsoMar, xHorMar,xTolAnt,xTolApo,xFaiMov);

Fim;

ListaHorario.Gravar();

Fim;

/* Verifica as Marcações Não Consideradas do Periodo para o Colaborador, conforme os Horários do Período. */

Tem = ListaHorario.Primeiro();

Enquanto (Tem = 1)

Inicio

/* Loop testando e alocando Marcações Desconsideradas. */

vposmar = 1;

Enquanto (ADatMa[vposmar] <> 0)

Inicio

vdatini = ListaHorario.DataIni;

vdatfim = ListaHorario.DataFim;

vhorini = ListaHorario.HoraIni;

vhorfim = ListaHorario.HoraFim;

Se (((aDatMa[vposmar] > vdatini) ou ((aDatMa[vposmar] = vdatini) e (AHorMa[vposmar] >= vhorini))) e

((aDatMa[vposmar] < vdatfim) ou ((aDatMa[vposmar] = vdatfim) e (AHorMa[vposmar] <= vhorfim))))

Inicio

AConMa[vposmar] = 1;

Fim;

vposmar = vposmar + 1;

Fim;

Tem = ListaHorario.Proximo();

Fim;

Utilização: É utilizada apenas no Cálculo e Recálculo de Apuração. Antes da Rotina de Alocação de Marcações.

Disponível para o Módulo: Controle de Ponto e Refeitório Portaria 1015.

Este artigo ajudou você?