c# - software - sistema de fichaje
Implementando vacaciones en un sistema de gestiĆ³n de empleados (3)
¿Cuál es la mejor manera de lidiar con la ausencia de un empleado? Teniendo en cuenta el hecho de que en ese día en particular un empleado no se registrará.
Puede hacer un archivo inicial de configuración / código para esto. Habrá una tabla específica para contener la información sobre todos los días festivos en el año calendario. Se ingresará manualmente al comienzo de cada año.
Ahora, cuando se procesen los datos de asistencia, se verificarán las fechas. Si alguna fecha estaría presente en ese archivo de código, se marcará como feriado.
¿Cómo agregar vacaciones específicas en los informes?
Teniendo en cuenta, necesitarás una tabla que contendrá todas las fechas del año y luego un atributo de bandera con cada fecha. Una bandera se establece como verdadera / falsa en función del día laboral / feriado.
Si la bandera es falsa, entonces hay unas vacaciones y mostrará las vacaciones en los informes. Incluso puede establecer una columna en esta tabla para mencionar el nombre de la fiesta. Mantendrá los datos de las fechas de cada año. Entonces, si quiere ver los informes de asistencia del año anterior. Los datos estarían allí y no habría ningún problema.
Estoy trabajando en un sistema de gestión de empleados donde los empleados pueden
- Hora de entrada / salida de reloj (Marque la asistencia diaria)
- Solicitar hojas, es decir, enfermo
- Genere informes, es decir, su hora de entrada / salida diaria, Horas trabajadas totales, etc.
Ahora tengo que presentar una forma de lidiar con los días festivos y las ausencias de los empleados en estos informes. Leí algunos artículos en línea como
pero no pude entender nada. Mis preguntas son básicamente
¿Cuál es la mejor manera de lidiar con la ausencia de un empleado? Teniendo en cuenta el hecho de que en ese día en particular un empleado no se registrará.
¿Cómo agregar / especificar fin de semana / días festivos en los informes? Como las vacaciones públicas / regulares cambiantes en el futuro bien pueden afectar nuestros informes de los meses anteriores.
Realmente agradecería algo de ayuda aquí! Gracias
Estaba escribiendo un comentario, pero eso fue muy lejos y consideré escribir una respuesta.
¿Cómo agregar / especificar fin de semana / días festivos en los informes?
Puede usar una tabla (como en esta pregunta ) para almacenar todos los días del año dado con la bandera está trabajando un día o no. Usamos algo como esto en nuestro entorno. Se llena manualmente una vez al año.
¿Cuál es la mejor manera de lidiar con la ausencia de un empleado?
Apuesto a que habrá una mesa con filas como:
EmployeeID InOut Date
1 In 2016-07-24 07:00:01.000
1 Out 2016-07-24 18:00:09.908
etc
Entonces, si el Empleado está ausente, no habrá filas en una fecha en particular.
Muy pocas (si es que hay alguna) bases de datos tratan con rangos de fechas como un tipo de datos, y si bien hay formas de calcular las intersecciones de intervalos de fechas, son caras y provocarán que cualquier conjunto de datos grande se rastree. por lo tanto, necesita cambiar la velocidad de cálculo para el almacenamiento de datos
Debido a esto, la mejor manera de verificar es tener una tabla que almacene las fechas, luego use las fechas en esa tabla para inflar los intervalos de fechas a todas las fechas dentro del rango, la estructura es simple, solo una columna con la fecha en ella.
No sugeriría usar la tabla de fechas para realizar un seguimiento de las vacaciones, solo incluya estas como ausencias del tipo "Festividades públicas", puede marcar los fines de semana (o el día de la semana) en la tabla de fechas, pero no los use. para decir si una persona trabajó o no ese día en su lugar tiene una tabla de trabajo que dice que el empleado del tipo factory worker
trabaja 4 horas un lunes, 6 horas un martes. Esto le dará las horas de trabajo esperadas de los empleados y los días en que se espera que trabajen en una semana sin forzar a cada empleado a seguir el mismo patrón de trabajo.
p.ej
select d.Date, a.*
from absence as a
join dates as d on d.Date between a.StartDate and a.EndDate
esto le dará cada fecha en que la persona está ausente, lo que le permite comparar fácilmente diferentes períodos de ausencia juntos
la mayoría de los sistemas de empleo rara vez permiten que los empleados trabajen con más de un año de anticipación, por lo que sugiero tener un trabajo mensual que ejecute y rellene la tabla de fechas con todas las fechas entre (Today + 12 months)
y (Today + 13 months)
también puede borre las fechas antiguas, pero antes de hacerlo, asegúrese de que no haya circunstancias en las que deba consultar los datos. es decir, todo antes de la fecha mínima en que se va se ha archivado.
Lo siguiente a tener en cuenta es el elemento humano, las personas se olvidarán de ingresar o salir, por lo que debe tener esto en cuenta y tener un trabajo diario que busque entradas de reloj sin un reloj coincidente o viceversa, entonces usted puede marcar estos para la corrección humana o tratar con ellos automáticamente
Una vez que tenga estos dos elementos ordenados, puede calcular cada persona las horas diarias trabajadas, unirlas a la vista de ausencia diaria, lo que le permitirá verificar la inconsistencia, como las fechas en la tabla de fechas que no tienen fechas o ausencia (ausencia no autorizada) que se puede corregir con las entradas apropiadas en la tabla de ausencias o enfrentamientos, como cuando alguien entra al trabajo cuando debería haber estado de vacaciones, de nuevo puede marcar para la corrección humana o manejarlo automáticamente, decir si el reloj está presente ignorar la ausencia
Cómo construyes realmente tu sistema depende de lo que necesites en tus sistemas, pero estos son los factores comunes que matarán a tu sistema si no los tomas en cuenta