Amigos del foro:
Estoy armando una planilla, lo mas parametrizable posible, de control de
ausentismo y cálculo de horas. Pero me empantane en un algoritmo que
necesito desarrollar. Estos son los datos:
Variables:
et: Tiempo de entrada segun turno
st: Tiempo de salida segun turno
er: Tiempo de entrada real
sr: Tiempo de salida real
li: Limite inferior del intervalo de tiempo a analizar
ls: Limite superior del intervalo de tiempo a analizar
Restricciones:
et < st; er < sr; li < ls
[et, st, er, sr, li, ls] = [00:00 .. 23:59]
Incognitas:
Necesito averguar, dentro del intervalo a analizar [li, ls] los
siguientes datos:
preh: Cantidad de horas trabajadas antes del turno
enh: Cantidad de horas trabajadas dentro del turno
posth: Cantidad de horas trabajadas despues del turno
Si Minutos(x) >= 40 entonces x = x + 1
Si 40 > Minutos(x) >= 20 entonces x = x + 0.5
donde x = [preh, enh, posth]
Ejemplo:
et = 07:00 st = 15:00
er = 05:30 sr = 18:25
li = 06:00 ls = 11:00
preh = 1 (desde 06:00 hasta 07:00)
enh = 4 (desde 07:00 hasta 11:00)
posth = 0
para
li = 11:00 ls = 13:00
preh = 0
enh = 2 (desde 11:00 hasta 13:00)
posth = 0
y para
li = 13:00 ls = 21:00
preh = 0
enh = 2 (desde 13:00 hasta 15:00)
posth = 3.5 (desde 15:00 hasta 18:25)
Los li y ls que puse como ejemplo no son arbitrarios; de ellos (y el dia
de la semana, entre otras cosas) depende la posterior discriminacion en
horas normales, extras, nocturnas, etc.
Caso especial del turno noche: lo "soluciono" uniendo dos intervalos:
li = 21:00 ls = 23:59
li = 00:00 ls = 06:00
Espero haberlo especificado suficientemente. desde ya, muchas gracias.
Julio.
Leer las respuestas