Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incidencia - Acciones de validación - Se detectan falsos positivos en las relacionadas con RH y CL #375

Open
ManuSinergiaCRM opened this issue Aug 22, 2024 · 0 comments

Comments

@ManuSinergiaCRM
Copy link
Collaborator

Descripción del problema

Las acciones de validación diarias (RH - Revisión registros día anterior y CL - Revisión registros día anterior) y semanal (RH - Revisión de las horas trabajadas durante la semana anterior) relacionadas con el Calendario laboral y con el Registro horario detectan falsos positivos debido a que se lanzan cuando aún puede haber registros horarios no cerrados ya que el empleado no ha finalizado su jornada. Por ejemplo, si las acciones diarias se lanzan a la 1:00 am y un empleado que trabaja 8h empezó a trabajar a las 22h del día anterior.

COMPORTAMIENTO ACTUAL

Acciones diarias

  • Seleccionan aquellos registros cuya fecha de inicio (en zona horaria del usuario admin) sea la del día anterior a la fecha de ejecución de la acción de validación.

  • Condición:
    WHERE DATE(CONVERT_TZ(start_date, '+00:00', '" . $tzone ."')) = DATE(DATE_SUB(CONVERT_TZ(UTC_TIMESTAMP(), '+00:00', '" . $tzone ."'), INTERVAL 1 DAY))

Acción semanal:

  • Selecciona aquellos registros de CL y RH cuya fecha de inicio (en zona horaria del usuario admin) esté incluida entre 7 días y 1 día antes a la fecha de ejecución de la acción de validación.

  • Condición:
    WHERE DATE(CONVERT_TZ(start_date, '+00:00', '" . $tzone ."')) BETWEEN DATE(DATE_SUB(CONVERT_TZ(UTC_TIMESTAMP(), '+00:00', '" . $tzone ."'), INTERVAL 7 DAY)) AND DATE(DATE_SUB(CONVERT_TZ(UTC_TIMESTAMP(), '+00:00', '" . $tzone ."'), INTERVAL 1 DAY))

SOLUCIÓN AL COMPORTAMIENTO ACTUAL

Se propone que las acciones evalúen los registros pertenecientes a periodos de tiempo donde, sí o sí, un registro horario tenga que estar cerrado.

Acciones diarias

  • Seleccionan aquellos registros cuya fecha de inicio (en zona horaria del usuario admin) sea la de dos días anteriores a la fecha de ejecución de la acción de validación.

  • Condición:
    WHERE DATE(DATE_SUB(CONVERT_TZ(start_date(), '+00:00', '" . $tzone ."'), INTERVAL 1 DAY)) = DATE(DATE_SUB(CONVERT_TZ(UTC_TIMESTAMP(), '+00:00', '" . $tzone ."'), INTERVAL 2 DAY))

Acciones semanales:

  • Selecciona aquellos registros de CL y RH cuya fecha de inicio (en zona horaria del usuario admin) esté incluida entre 8 días y 2 días antes a la fecha de ejecución de la acción de validación.

  • Condición:
    WHERE DATE(CONVERT_TZ(start_date, '+00:00', '" . $tzone ."')) BETWEEN DATE(DATE_SUB(CONVERT_TZ(UTC_TIMESTAMP(), '+00:00', '" . $tzone ."'), INTERVAL 8 DAY)) AND DATE(DATE_SUB(CONVERT_TZ(UTC_TIMESTAMP(), '+00:00', '" . $tzone ."'), INTERVAL 2 DAY))

Consideraciones tenidas en cuenta

  1. Usar CONVERT_TZ(UTC_TIMESTAMP(), '+00:00', '" . $tzone ."') en vez de NOW() ya que:
  • CONVERT_TZ(UTC_TIMESTAMP(), '+00:00', '" . $tzone ."') devuelve la fecha y hora en la zona horaria del usuario admin
  • NOW() devuelve la fecha y hora actuales según la zona horaria configurada en el servidor MySQL
  1. Siempre que se pueda, realzar las comparaciones con fechas utilizando la función DATE en vez de usar funciones que resten 24 ó 48 horas ya que con DATE se seleccionan todos los registros pertenecientes a la fecha de hace dos días, mientras que restando 48 horas se depende de la hora de ejecución de la Acción de validación para seleccionar más o menos registros. Por ejemplo: Si la acción se ejecuta a las 00:30 del día 22 de Agosto no seleccionará los registros que fueron creados entre las 00 y las 00:30, siendo estos registros seleccionados por la ejecución anterior de la acción.

Propuestas de mejora

  1. La acción RH - Revisión registros día anterior realiza dos tareas:

    a) Detectar registros abiertos hace más de 24 horas

    • Configurar esta validación como tipo COMPLETA ya que cualquier registro viejo abierto debería ser notificado (caso de uso: registro creado después de la última ejecución de la tarea pero con start_date anterior).

    b) Validar que los registros de RH tengan correspondencia con el CL

    • Configurar esta validación como tipo INCREMENTAL
    • Cambiar nombre a RH - Revisión de los datos principales
  2. La acción CL - Revisión registros día anterior valida que los registros de CL tengan correspondencia con los de RH

    • Configurar esta validación como tipo INCREMENTAL
    • Cambiar nombre a CL - Revisión de los datos principales (un poco forzado pero por no complicar el tema).
  3. RH - Revisión de las horas trabajadas durante la semana anterior

    • Configurar esta validación como INCREMENTAL y que analice todas las semanas completas desde la última ejecución.
    • Cambio de nombre a RH - Revisión de las horas trabajadas semanalmente

SOLUCIÓN A LAS MEJORAS PROPUESTAS

  1. Separar la acción de RH - Revisión registros día anterior en dos acciones ya que las dos validaciones que realiza son de tipos diferentes.

  2. Durante la implementación de los cambios propuestos se valorará el unificar en una sola acción de tipo INCREMENTAL:

  • La opción B de la acción de RH - Revisión registros día anterior
  • La acción de CL - Revisión registros día anterior
  1. Propuesta de nombres:
    3.1. RH - Revisión registros día anterior - opción A: RH - Revisión de los datos principales
    3.2. RH - Revisión registros día anterior - opción B: RH - Coherencia horaria con calendario laboral
    3.3. CL - Revisión registros día anterior: CL - Coherencia horaria con registro horario
    3.4. RH - Revisión de las horas trabajadas durante la semana anterior: RH - Revisión de las horas trabajadas semanalmente
  • Nombre en caso de unificar la 3.2 y la 3.3 en una sola acción: CL y RH - Coherencia horaria
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant