Ponto Eletrônico - Diversas
SomaHoras(ExpN1, ExpN2)
Objetivo: Somar horas(sexagenais)
Parâmetros:
ExpN1: Quantidade de horas a ser somado
ExpN2: Quantidade de horas a ser somado
Retorno:Somatória de ExpN1 e ExpN2
------------------------------------------------------------------------
SubHoras(ExpN1, ExpN2)
Objetivo:Subtrair as horas(sexagenais)
Parâmetros:
ExpN1: Quantidade de horas (subtraido)
ExpN2: Quantidade de horas (subtraido)
Retorno:Resultado da subtração ExpN1 por ExpN2
------------------------------------------------------------------------
Hrs2Min(ExpN1)
Objetivo:Converter horas para minutos
Parâmetros:
ExpN1: Quantidade de horas
Retorno:Número de minutos
------------------------------------------------------------------------
Min2Hrs(ExpN1)
Objetivo:Converter minutos para horas
Parâmetros:
ExpnN1: Número de minutos a serem convertidos em horas
Retorno:Número de horas
------------------------------------------------------------------------
PerAponta(ExpD1, ExpD2, ExpD3)
Objetivo:Obter o período de apontamento
Parâmetros:
ExpD1 - variável data passada por referência
ExpD2 - variável data passada por referência
ExpD3 - data base (opcional). Se omitida será carregado dDataBase.
Retorno:True - Perído de apontamento localizado.
False - Período de apontamento não localizado.
------------------------------------------------------------------------
fDhToNs(ExpD1, ExpN1)
Objetivo:Converter data e hora em número sequencial. Utilizado em comparações de horas. Ex: 22:00 dia x1 > 02:00 dia x2. Se essa comparação for efetuada diretamente concluir-se-a que 22:00 é maior, porém está no dia anterior. Para que está comparação possa ser efetuada corretamente deve-se converter as horas dos dois dias e compara-los.
Parâmetros:
ExpD1 - Data referente ao horário
ExpN1 - horário
Retorno:Número sequencial
-------------------------------------------------------------------------
fNsToDh(ExpN1,ExpC1)
Objetivo:Converter um número sequencial em data ou hora
Parâmetros:
ExpN1 - número sequencial
ExpC1 - 'H' - retorna hora ou 'D' retorna a data
Retorno:Data ou hora referente ao número sequencial ExpN1.
-------------------------------------------------------------------------
fFeriado(ExpC1,ExpD1,ExpC2)
Objetivo:Identificar se é feriado e retornar a descrição do mesmo.
Parâmetros:
ExpC1 - Filial
ExpD1 - Data para pesquisa do feriado
ExpC2 - variável passada por referência para retorno da descrição do feriado.
Retorno:True - É Feriado
False - Não é Feriado
-------------------------------------------------------------------------
DataHora2Val( dExp1 , nExp1 , dExp2 , nExp2 , cExp1 )
Objetivo: Retornar a Diferença em valor entre datas/horas.
Observação: Não considera Adicional Noturno
Parâmetros: dExp1 -> 1a. Data
nExp1 -> 1a. Hora
dExp2 -> 2a. Data
nExp2 -> 2a. Data
cExp1 -> "A" Para Retorno em Anos
"D" Para Retorno em Dias
"H" Para Retorno em Horas
"M" Para Retorno em Meses
NIL Para Retorno em Minutos
Retorno: Diferença em Anos/Dias/Horas/Meses ou Minutos entre Duas Datas
Exemplo:
nDiferenca := 0.00
nDiferenca := DataHora2Val(dDataBase,14.00,dDataBase+1,13.59,"H")
Retorno: nDiferenca = 23.59
-------------------------------------------------------------------------
DataHora2Str( dExp , nExp )
Objetivo: Converter Data/Hora em "String". Util para comparar se uma Da Ta/Hora é maior ou menor que outra Data/Hora.
Parâmetros: dExp -> Data
nExp -> Hora
Retorno: "String" de Data + "String" de Hora.
-------------------------------------------------------------------------
RetIniTab( dDfim , nHfim , nHtab , nHint , lHnot )
Objetivo: Retornar a Data/Hora Ideais para Marcação de Entrada a Partir da Data/Hora de Saída considerando ou não as Horas de Intervalo e a Hora Noturna Reduzida.
Parâmetros: dDfim -> Data em que será encerrado o expediente
nHfim -> Hora em que será encerrado o expediente
nHtab -> Número de horas que devem ser trabalhadas
nHint -> Número de horas que devem ser consideradas para o descanso do intervalo.
lHnot -> .T. Para considerar a hora noturna reduzida na apuração.
.F. Para não considerar a hora noturna reduzida na apuração.
Retorno: Array de duas posições contendo datas e horas Ideais para o início do Expediente.
Exemplos:
aMarcId := {}
dDatafn := Ctod("01/01/2000")
aMarcId := RetIniTab( dDatafn , 0.00 , 8 , 1 , .F. )
Retorno : aMarcId[1] = 31/12/1999
aMarcId[2] = 15.00
2o. Considerando o Horário Noturno
aMarcId := RetIniTab( dDatafn , 0.00 , 8 , 1 , .T. )
Retorno : aMarcId[1] = 31/12/1999
aMarcId[2] = 15.17
-------------------------------------------------------------------------
RetFimTab( dDini , nHini , nHtab , nHint , lHnot )
Objetivo: Retornar a Data/Hora Ideais para marcação de Saída a Partir da Data/Hora de Entrada considerando ou não asHoras de Intervalo e a Hora Noturna Reduzida.
Parâmetros:
dDini -> Data em que será iniciado o expediente
nHini -> Hora em que será iniciado o expediente
nHtab -> Número de horas que devem ser trabalhadas
nHint -> Número de horas que devem ser consideradas para o descanso do intervalo.
lHnot -> .T. Para considerar a hora noturna reduzida na apuração.
.F. Para não considerar a hora noturna reduzida na apuracão.
Retorno: Array de duas posições contendo Data e Horas Ideais para o fim do expediente.
Exemplos:
aMarcId := {}
dDataIn := Ctod("01/01/2000")
1º Sem Considerar o Horário Noturno
aMarcId := RetFimTab( dDataIn , 0.00 , 8 , 1 , .F. )
Retorno : aMarcId[1] = 01/01/2000
aMarcId[2] = 09.00
2º Considerando o Horário Noturno
aMarcId := RetFimTab( dDataIn , 0.00 , 8 , 1 , .T. )
Retorno : aMarcId[1] = 01/01/2000
aMarcId[2] = 08.17
-------------------------------------------------------------------------
fCalHoras(dDt1,nHr1,dDt2,nHr2,nHoras,nHorasNot,lNoturno,dDtIni,nHrAcNot,nIniHnot,nFimHnot,nMinHnot,lAcreNot,aPerNot)
Objetivo: Calcular a Diferença em Horas entre duas Datas/Horas.
Observação: Considera o Adicional Noturno.
Parâmetros:
dDt1 ,; //01 -> Data 1
nHr1 ,; //02 -> Hora 1
dDt2 ,; //03 -> Data 2
nHr2 ,; //04 -> Hora 2
nHoras -> Número de horas trabalhadas ( por referência)
nHorasNot -> Número de horas noturnas trabalhadas ( por referência )
lNoturno -> .T. para considerar adicional noturno
.F. para não considerar o adicional noturno,; //05 -> <@>Horas Normais Apontadas
nHorasNot ,; //06 -> <@>Horas Noturnas Apontadas
lNoturno ,; //07 -> Apontar Horas Noturnas
dDtIni ,; //08 -> Data Inicial Para a Hora Noturna
nHrAcNot ,; //09 -> <@>Horas de Acrescimo Noturno
nIniHnot ,; //10 -> Inicio do Horario Noturno
nFimHnot ,; //11 -> Final do Horario Noturno
nMinHnot ,; //12 -> Minutos do Horario Noturno
lAcreNot ,; //13 -> Apenas Acrescimo Noturno
aPerNot ; //14 -> Periodo da Hora Noturna
Retorno: Número total de horas ( Normais + Noturnas )
Exemplos:
dDt1 := Ctod("01/01/2000")
nHr1 := 0.00
dDt2 := Ctod("01/01/2000")
nHr2 := 23.59
nHoras := 0.00
nHorasNot := 0.00
nHorasTot := 0.00
lNoturno := .T.
dDtIni := Ctod("01/012000")
nHrAcNot := 0
nIniHnot := 22.00
nFimHnot := 05.00
nMinHnot := 52.5
lAcreNot := .F.
aPerNot := {}
1º Considerando o Horário Noturno
nHorasTot := fCalHoras(dDt1,nHr1,dDt2,nHr2,@nHoras,@nHorasNot,lNoturno,dDtIni,@nHrAcNot,nIniHnot,nFimHnot,nMinHnot,lAcreNot,aPerNo)
Retorno: nHoras = 18.59
nHorasNot = 05.43
nHorasTot = 24.42
2º Sem Considerar o Horário Noturno
lNoturno := .F.
nHorasTot := fCalHoras(dDt1,nHr1,dDt2,nHr2,@nHoras,@nHorasNot,lNoturno)
Retorno: nHoras = 23.59
nHorasNot = 00.00
nHorasTot = 23.59
Nível 1 (Acesso Clientes)