Terminado

Lectura de excel con php para horario laboral

Publicado el 20 Junio, 2019 en Programación y Tecnología

Sobre este proyecto

Abierto

Página en php que suba un archivo excel sencillo al servidor, lo lea y lo trate de la siguiente manera:

el excel tiene 2 columnas que son id_empleado, fecha/hora, se trata de un log de registro de entrada y salida de empleados, de forma que cada día debe tener 2 registros por empleado, uno para la entrada y otro la salida. Si sólo existiese un registro entonces anotar las dos horas iguales

Estos valores hay que insertarlos en una tabla denominada ps_empleadosFichaje con lo campos fecha, horaEntrada y horaSalida, mas uno de fecha de actualización.

Hasta aquí sencillo, ahora necesitamos que ejecutando una página php, trate estos datos. Al entrar a esta página aparecerá en la parte superior un campo para seleccionar el año y otro para seleccionar el mes. Al pinchar en el botón "Mostrar" sacará una línea de información por cada día y empleado, agrupando por día.

Por ejemplo, mostraría el nombre del primer día de registro y debajo irían todas las líneas de información de entradas y salidas diarias de cada empleado. Cada línea tendría esta información: idEmpleado, fecha, hora de entrada, hora de salida, horas extra y observaciones

Cálculo del campo horas extra: consultar el horario para la fecha del día, del empleado en la tabla ps_empleadosHorario y calcular el tiempo en minutos restando horaFinal y horaInicial, lo normal serán 8 horas, 480 minutos. Posteriormente calcular el tiempo total trabajado por el empleado.

Si ha trabajado al menos 60 minutos más de su horario, añadir los minutos en el campo horas extra . Si el total de minutos trabajados es menor que el total de su horario, entonces añadirlo como minutos pero en negativo

Campo observaciones: si las dos horas son iguales significa que sólo ha picado una vez, así que es un error, indicar revisar picadas de ese día. Si el empleado llega 5 minutos o más tarde de su horario para ese día, indicar en rojo llegada tarde.

Si algún empleado no tiene registros para algún día y tampoco tiene información para este día en la tabla Ps_empleadoausencias(explicada más adelante), entonces indicar en observaciones ausencia injustificada y añadir el total de minutos de este día en negativo en el campo horas extra. En este caso la línea se quedaría en rojo, para avisar. Si no hay registros para este día pero sí en ps_empleadosAusencias, en el caso que sea distinto el motivo a médico, quitar también los minutos trabajados para ese día.



Así iríamos repitiendo con cada empleado. El proceso irá recorriendo cada día del mes que no sea sábado ni domingo ni festivo. Los festivos estarán un una tabla ps_festivos (fecha,festivo), que además tendrá una página en php con un formulario con estos campos para introducir estos datos.

Además al entrar aparecerá el listado de festivos ordenados por fecha decreciente, cada uno con un botón para poderlo eliminar

Al final habría que sacar otro listado resumen del anterior, con el nombre del empleado y horas extra para todo el mes. Finalmente tendríamos un botón que al pulsarlo envía este listado final en formato texto a una dirección de email.

Hay otro php que tira de la tabla ps_empleadoAusencias que tiene estos campos: idEmpleado,fecha,motivo(puede ser vacaciones,medico) y comentarios. Esta página php tendrá en su parte superior un formulario con estos mismos campos para rellenar y con un botón de insertar. Sirve para introducir las vacaciones y ausencias justificadas.



Además, nada más entrar aparecerán los registros de la tabla ordenados por fecha decreciente e idEmpleado. Cada registro tendrá al lado un botón para poderlo borrar.
Evidentemente si se trata de insertar un nuevo registro que ya exista en la base de datos dará error.

La primary key es idEmpleado,fecha

Por último necesitamos otro php que tire de la tabla ps_empleadosFichaje, que muestre un formulario con los campos de la tabla para poder insertar información. También aparecerán los registros de los últimos 60 días ordenadados por fecha decreciente y por empleado, con un botón para poder borrar el registro.

Categoría Programación y Tecnología
Subcategoría Programación Web
¿Cuál es el alcance del proyecto? Bug o cambio pequeño
¿Es un proyecto o una posición? Un proyecto
Actualmente tengo Tengo las especificaciones
Disponibilidad requerida Según se necesite
Roles necesarios Programador

Plazo de Entrega: No definido

Habilidades necesarias

Otros proyectos publicados por M. L. C.