Planificar un horario especifico

07/08/2006 - 00:26 por tom | Informe spam
hola:

Queria automatisar el horario cotidiano del trabajo. La persona, podria
llegar o salir del trabajo a cualquier hora del dia o de la noche durante
toda la semana del lunes hasta el domingo.
Hay que distinguir las siguientes categorias:

Categ(100%): de 07:00 hasta 19:00
Categ(125%): de 19:00 hasta 07:00 si el numero de horas por dia es menos de
8.
Categ(150%): como categ(125%) pero el nombre de horas por dia es superior a
8.
Categ(200%): durante todo el fin de semana, 24h/24

Pregunta: Hay que permitir a la persona que entre sus horas de llegada (IN)
y de salida (OUT) cada dia, asi, las 4 colonas(categorias) describidas ariba
se amplian automaticamente, en las cuales habra cada dia: el numero de horas
100%, 125%, 150% y 200%.

Muchas gracias a todos
Tom

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
07/08/2006 - 05:45 | Informe spam
hola, tom !

... llegar o salir del trabajo a cualquier hora del dia o de la noche durante toda la semana del lunes hasta el domingo.
... distinguir las siguientes categorias:
Categ(100%): de 07:00 hasta 19:00
Categ(125%): de 19:00 hasta 07:00 si el numero de horas por dia es menos de 8.
Categ(150%): como categ(125%) pero el nombre de horas por dia es superior a 8.
Categ(200%): durante todo el fin de semana, 24h/24
... entre sus horas de llegada (IN) y de salida (OUT)... las 4 colonas (categorias)... se amplian automaticamente
... habra cada dia: el numero de horas 100%, 125%, 150% y 200%.



segun se aprecia de tu consulta...
1) tienes dos 'turnos' de 12 horas para cada dia:
'normal' -> de 07:00 hasta 19:00
'nocturno' -> de 19:00 hasta 7:00 [se asume que 'del dia siguiente'] :))

2) tienes cuatro 'categorias' donde se pagan las horas [segun jornada y turnos] +/- como sigue:
100% hasta 8 horas del turno 'normal'
125% hasta 8 horas del turno 'nocturno'
150% por el 'excedente' de 8 horas de la jornada total
200% si la jornada total es del dia 'completo' [las 24 horas] -???-

3) tengo algunas preguntas/dudas/inquietudes/... con relacion a las horas/pagos/jornadas de mas de 8 horas y distintas del 100%...
a) ejemplo 1: IN: 15:00 - OUT: 24:00 => tendriamos una jornada con un total de 9 horas [entonces]...
la hora 'extra' debe pagarse en la categoria de 125%... o en la de 150%... o al 150% sobre 125% -???-
b) ejemplo 2: IN: 07:00 - OUT: 07:15 -> PERO del dia siguiente => tendriamos una jornada de 24:15 [entonces]...
- como podria 'detectarse' que la jornada ha sido de 24 horas o mas ???
- como deberia procederse con la 'distincion/separacion/...' de las categorias desde 100% hasta 200% ???
c) para no seguir 'suponiendo' eventualidades... :D
- tienes ya experiencia/registros/reportes/idea/... de los casos 'anormales' que pudieran llegar a presentarse ???

comentas [si hubiera] algunos detalles mas... 'representativos' ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Héctor Miguel
07/08/2006 - 06:28 | Informe spam
hola [de nuevo], tom !

[en via de mientras] ve si te sirve algo de lo comentado en las siguientes conversaciones: -> http://tinyurl.com/m45pl

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#3 zipzap
07/08/2006 - 08:58 | Informe spam
Hola Tom,
Hace algún tiempo pasé esta función que podría servirte con algunas
mejoras.
Faltaría algo de código para indicar si es de fin de semana y alguna
otra parametrización.
Mira qué te sirve y me comentas
Saludos

inicio del código--
Function HorasTrabajo(HEntrada As Date, HSalida As Date, QTipoHora As
String) As Integer
'Calcula las horas trabajadas y devuelve la cantidad de horas según
QTipoHora.
'El empleado debe hacer un mínimo de horas -HorasNormales- para que se
contabilicen
'las horas extra
'El tipo de horas (TipoHoras) está definido por las variables
HNormalI, HNormalF
'Sólo funciona con horas enteras
'Tiene en cuenta el cambio de día, si la hora de salida es inferior a
la de entrada.
'::: QTipoHora : Tipo de hora a calcular
'::: HEntrada : Hora a la que comienza a trabajar
'::: HSalida : Hora a la que sale de trabajar
'-

Dim HorasDiaTipo(24) As String
Dim TipoHoras(4, 2)
Dim CIni(2) As Integer
Dim CFin(2) As Integer
Dim Limite(2) As Integer
Dim i, j, NCiclos As Integer
'
'Constantes que pueden ser parámetros
Const HorasNormales As Integer = 8
Const HNormalI As Integer = 7 ' Desde las 7:00 es Diaria
Const HNormalF As Integer = 18 ' Hasta las 28:59 es Diaria
'
'Asignacion de variables
'Nombre clave de horas
TipoHoras(0, 0) = "TOTAL"
TipoHoras(1, 0) = "NOCTURNA" '
TipoHoras(2, 0) = "NOCTURNA50" '
TipoHoras(3, 0) = "NORMAL" '
TipoHoras(4, 0) = "NORMAL50" '
For i = 0 To 4
TipoHoras(i, 1) = 0
Next i
For i = 0 To 24
Select Case i
Case HNormalI To HNormalF
HorasDiaTipo(i) = "NORMAL"
Case Else
HorasDiaTipo(i) = "NOCTURNA"
End Select
Next i
' HEntrada del cálculo
' Día normal
CIni(1) = Hour(HEntrada)
CFin(1) = Hour(HSalida)
Limite(1) = 23
NCiclos = 1
' Si hay cambio de día (la hora de salida es menor que la de entrada)
If CIni(1) > CFin(1) Then
'Prepara dos ciclos de cálculo
' Primer ciclo cálculo
CIni(1) = Hour(HEntrada)
CFin(1) = 24
Limite(1) = 24
' Segundo ciclo cálculo
CIni(2) = 0
CFin(2) = Hour(HSalida)
Limite(2) = 23
NCiclos = 2
End If
'
'Calcula las horas para todos los tipos de horas
For Ciclo = 1 To NCiclos
'Recorre el día
For i = 0 To Limite(NCiclos)
' Si la hora del día está dentro del rango de horas trabajadas
If i >= CIni(Ciclo) And i < CFin(Ciclo) Then
' Incrementa una hora en la Suma Todas las horas
TipoHoras(0, 1) = TipoHoras(0, 1) + 1
' Localiza el tipo de hora, normal o nocturna
For j = 1 To 4
If HorasDiaTipo(i) = TipoHoras(j, 0) Then
'Controla suma de horas Normales y Nocturnas si >= 8
If (TipoHoras(1, 1) + TipoHoras(3, 1)) >= HorasNormales Then
'Caso de ser cierto, incrementa el valor de J para asignarlo
' a las del 50%
j = j + 1
End If
'Suma las horas según el tipo detectado
TipoHoras(j, 1) = TipoHoras(j, 1) + 1
Exit For
End If
Next j
End If
If i >= CFin(Ciclo) Then Exit For
Next i
Next Ciclo
'
'Localiza las horas según el tipo solicitado
For i = 0 To 4
If UCase(QTipoHora) = TipoHoras(i, 0) Then
Exit For
End If
Next i
'Transfiere las horas del tipo indicado a la función
HorasTrabajo = TipoHoras(i, 1)
End Function
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida