Eric, un millón de gracias por tu colaboración. Aquí te muestro lo que logré 
con la primera tarifa. Como podrás ver, es una fórmula de una línea de código y 
estoy seguro que agregando algo de lógica se puede lograr lo mismo para la 
segunda tarifa. Esta fórmula es la más eficiente que he podido crear hasta el 
momento, pero me hace falta generalizarla más para que trabaje en el segundo 
caso. Ojalá te sirva de referencia y me puedas ayudar a solucionar la otra 
variante que es un poco más compleja.

 

* Horario de entrada y salida

tEntrada = CTOT("15:00")

tSalida  = CTOT("14:00")

 

* Para la primera tarifa

tInicioN1 = CTOT("19:00")

tFinalN1  = CTOT("23:00")

 

* Horas de nocturnidad trabajadas de la primera tarifa y expresadas en formato

* de horas con su decimales, no en formato hh:mm, ya que la tarifa se paga por

* horas trabajadas

tHorasN1  = MIN(MAX(tSalida, tInicioN1), tFinalN1) - ;

                  MAX(MIN(tEntrada, tFinalN1), tInicioN1) + ;

                  IIF(tSalida>tEntrada,0,tFinalN1-tInicioN1)

? tHorasN1 / 3600

 

Salu2, Tomás

 

De: [email protected] [mailto:[email protected]] En nombre de 
[email protected]
Enviado el: lunes, 1 de septiembre de 2014 4:08 pm
Para: GUFA List Member
Asunto: [GUFA] Algoritmo interesante

 

Tomas:

             Realmente todo un tema lo tuyo!!

Es para un lindo analisis.

Te mando 2 soluciones espero que te ayuden a resolverlo...

Uno  es manejarlos como varaibles para ir armando el resultado, la otra y más 
postables es manejarlo como registro.

Falta ver algunso casos de excepción y demas.

Si te sirve alguno o te inspira manda unos Euros alguna causa benefica!! ;-)

 

Saludos, Eric!

 

El 2014-09-01 16:05, Tomás Corrales Lemoine escribió:

Hola, colegas.

 

Tengo el siguiente problema. Existen 2 tarifas para el pago de la nocturnidad 
(expresadas en formato de 24 horas):

 

1.       De 19:00 a 23:00

2.       De 23:00 a 07:00

 

Partiendo de la premisa de que el obrero puede entrar y salir a cualquiera de 
las 24 horas del día (horarios irregulares), necesito calcular cuántas horas de 
nocturnidad trabajó en cada uno de los intervalos anteriores y en 
correspondencia aplicar la tarifa de pago prevista. Por ejemplo:

 


Entrada

Salida

19:00 – 23:00

23:00 – 07:00


08:00

16:30

0:00

0:00


17:00

21:00

2:00

0:00


19:00

01:00

4:00

2:00


15:00

14:00

4:00

8:00

 

Fijaos que la hora de salida puede ser menor que la hora de entrada, lo que 
significa que el obrero trabajó más de 24 horas (rarísimo pero puede suceder, 
son prestadores de servicios).

 

Para la primera tarifa (de 19:00 a 23:00) ya encontré una fórmula, la cual 
considero que es la más sencilla posible, pero en aras de no contaminar 
vuestras ideas no la pongo acá, esperando que me aporten nuevas y mejores 
soluciones. De todas formas, si a alguien le interesa, no hay problema.

 

Desde ya, agradezco su ayuda desinteresada y solidaria. Salu2,

 

Tomás

 

 

Responder a