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.