Turnos y horarios¶
¿Qué es?¶
El módulo de Turnos y horarios gestiona las programaciones de trabajo del personal. Una programación es un documento mensual que asigna a un grupo de empleados sus días laborables, descansos y horarios para un proyecto y mes específicos. Desde aquí se crean programaciones, se gestionan los catálogos de Patrones y Horarios, y se visualiza el detalle diario de cada empleado.
Vista principal — Lista de programaciones¶
La tabla muestra todas las programaciones con las siguientes columnas:
- Estado — Badge de color según el estado actual de la programación (ver tabla de estados).
- Nombre — Nombre de la programación (generalmente auto-generado como
Proyecto AAAA-MM). Ancho variable. - Proyecto — Proyecto al que pertenece la programación. Ancho variable.
- Personal asignado — Número de empleados incluidos en la programación (alineado a la derecha).
- Mes — Abreviatura del mes (ej. "Ene", "Feb"). Ancho fijo.
- Año — Año de la programación. Ancho fijo.
- Encargado — Empleado responsable de la programación. Ancho variable.
- Tipo — Tipo o modalidad de la programación (
prog_type). Ancho variable.
Filtros¶
- Buscar — Campo de texto libre (nombre, proyecto, encargado).
- Estado — Selector con todos los estados disponibles.
- Mes — Selector de mes (Enero–Diciembre).
- Año — Selector de año (año actual y hasta 5 años atrás).
Ordenación por defecto¶
Ordenada por fecha descendente (más reciente primero).
Estados de una programación¶
| Estado | Badge | Descripción |
|---|---|---|
| Borrador | Gris | En construcción, no publicada |
| Pre-programado | Azul claro | Programación preliminar cargada |
| Confirmado | Verde | Aprobada y en ejecución |
| No confirmado | Amarillo/Amber | Pendiente de aprobación |
| Cancelado | Rojo | Anulada definitivamente |
Acciones disponibles en la lista¶
Botón "Nueva programación"¶
Visible solo con permiso schedule: create. Abre el modal de creación con los siguientes campos:
- Nombre — Se genera automáticamente al seleccionar Proyecto + Mes + Año (ej. "Proyecto Alpha 2025-03"). Editable manualmente.
- Mes — Selector de mes (1–12).
- Año — Selector de año.
- Tipo — Selector de tipo de programación (
prog_type, obligatorio). - Proyecto — Autocompletado de proyectos (obligatorio).
- Encargado — Autocompletado de empleados (opcional).
Acciones masivas¶
Al seleccionar una o más programaciones aparece la barra flotante:
- Cambiar estado — Selector de estado + botón Aplicar. Afecta a todas las programaciones seleccionadas.
- Eliminar — Elimina permanentemente. Requiere confirmación en dos pasos.
Catálogos¶
Botón Catálogos (visible con permiso schedule: view) abre el panel deslizante lateral con dos pestañas:
Pestaña Patrones¶
Un patrón define el ciclo de rotación del personal (ej. "5X2", "6X1", "3X3X2"). Cada patrón incluye:
- Nombre del patrón — Texto libre (ej. "5X2").
- Jornada principal — Hora de entrada + hora de salida obligatorias.
- Jornada secundaria — Solo aplica para patrones rotativos de tres partes. Hora de entrada + salida adicional.
- Número de personal — Cantidad de empleados que rota con este patrón.
- Desfase — Días que cada empleado arranca corrido dentro del ciclo respecto al anterior, para que no coincidan todos en el mismo turno el mismo día (ver El desfase).
- Estado —
BorradoroConfirmado. - Festivo — Toggle para incluir o no los días festivos como laborables.
Vista previa del patrón — Muestra símbolos que representan el ciclo:
- ■ — Jornada principal.
- ▲ — Jornada secundaria.
- · — Día de descanso.
También muestra la rotación calculada por empleado según el desfase.
Pestaña Horarios (avanzado)¶
Un horario define una franja horaria específica dentro de un patrón. Incluye:
- Nombre — Se genera automáticamente como "HH-HH" (ej. "06-14"). Editable manualmente.
- Es descanso — Toggle. Si está activo, el horario representa un día de descanso (campo marcado como "DESCANSO").
- Hora de entrada (
time_in) — Obligatorio si no es descanso. - Hora de salida (
time_out) — Obligatorio si no es descanso. - Activo — Toggle (solo en modo edición).
El sistema calcula automáticamente al definir las horas:
- Duración total.
- Horas diurnas (06:00–21:00, legislación colombiana).
- Horas nocturnas (21:00–06:00).
- Tipo de jornada (Diurno/Nocturno/Mixto, campo dn_type).
El desfase¶
El desfase son los días que cada empleado arranca "corrido" dentro del ciclo respecto al empleado anterior, para que no coincidan todos en el mismo turno el mismo día. Es lo que permite cubrir un puesto las 24 horas sin huecos ni turnos duplicados.
El sistema lo aplica así al auto generar la programación:
día de inicio del empleado N = (N × desfase) módulo (días del ciclo) + 1
Donde:
- El nombre del patrón define el ciclo. Ejemplo:
3X3X2= 3 días de jornada principal + 3 días de jornada secundaria + 2 días de descanso = ciclo de 8 días. - El número de personal es cuántos empleados rotan sobre ese mismo ciclo.
- El desfase es cuánto se corre cada empleado dentro de ese ciclo.
Casos particulares:
- Desfase 0 — todos los empleados arrancan el mismo día del ciclo, es decir trabajan y descansan exactamente los mismos días. Es lo correcto cuando el patrón lo cubre una sola persona.
- Desfase vacío o 0 con más de una persona — el sistema calcula un desfase automático: el primer bloque del patrón (los 3 días de un
3X3X2), o el total del ciclo dividido entre el número de personal cuando la modalidad tiene una secuencia de horarios guardada. - Al escribir el valor, el modal muestra abajo la rotación calculada ("Empleado 1: inicia día 1 · Empleado 2: inicia día 4 · …"). Ahí se confirma que quedó como se espera.
Ejemplo de desfase — patrón 3X3X2¶
Modalidad 3X3X2 (ciclo de 8 días: 3 diurnos, 3 nocturnos, 2 de descanso), con 3 personas y desfase 3:
- Empleado 1 arranca en el día 1 del ciclo → empieza con los diurnos.
- Empleado 2 arranca en el día 4 → empieza con los nocturnos.
- Empleado 3 arranca en el día 7 → empieza descansando.
| Día del ciclo | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| Empleado 1 | D | D | D | N | N | N | _ | _ |
| Empleado 2 | N | N | N | _ | _ | D | D | D |
| Empleado 3 | _ | _ | D | D | D | N | N | N |
(D = diurno, N = nocturno, _ = descanso)
Cualquier día del mes hay un empleado en diurno, uno en nocturno y uno descansando: el puesto queda cubierto 24 horas. Si el desfase fuera 0, los tres harían diurno los mismos tres días y el puesto quedaría descubierto en las noches y en los días de descanso.
Detalle de programación¶
Al hacer clic en una programación de la lista, se navega a la página de detalle (schedule-detail).
Encabezado del detalle¶
- Flecha Volver para regresar a la lista.
- Nombre de la programación en grande.
- Subtítulo con Proyecto y Encargado.
- Datos contextuales: Mes + Año, Tipo, cantidad de personal asignado.
- Badge del estado actual (clickeable con permiso de edición para cambiar estado).
- Botón Editar programación — Abre el modal para modificar nombre, proyecto, mes/año, encargado.
Tabla de líneas de programación (modo vista)¶
Una tabla horizontal con las siguientes columnas fijas a la izquierda:
- Empleado — Nombre del empleado (columna fija izquierda).
- Modalidad — Nombre del patrón/modalidad asignada.
- Puesto — Puesto de trabajo asignado.
Seguidas de columnas dinámicas para cada día del mes (1 al 31 según el mes). Los fines de semana tienen fondo diferente. Cada celda muestra el código del horario asignado con color según el tipo de jornada: - Amarillo — Jornada diurna (HD). - Índigo/Azul — Jornada nocturna (HN). - Morado — Jornada mixta.
Al final de cada fila hay dos columnas resumen (fijas a la derecha): - HD — Total de horas diurnas del empleado en el mes. - HN — Total de horas nocturnas del empleado en el mes.
Modo edición de la tabla¶
Al hacer clic en Editar (en la barra de la tabla), la vista de solo lectura se reemplaza por una hoja de cálculo editable (Jspreadsheet):
- Cada celda de día acepta un código de horario.
- Autocompletado de horarios: al escribir en una celda se muestra un desplegable con los horarios disponibles.
- Botón "Auto generar" — Llena automáticamente los días según la modalidad de cada empleado y el patrón configurado. Solo funciona si cada línea tiene modalidad asignada.
- Botón "Guardar" — Guarda los cambios. Deshabilitado si hay celdas con error. Muestra "Guardando..." durante el proceso.
- Botón "Cancelar" — Descarta los cambios no guardados.
- Borrador automático — El sistema guarda un borrador local automáticamente. Si hay un borrador guardado al entrar en modo edición, aparece un banner amber: "Borrador guardado encontrado" con opciones Restaurar / Descartar.
- Indicador de validación — Badge verde "Listo" cuando no hay errores; badge amarillo "N celda(s) con error" + botón Ver para saltar a la primera celda inválida.
Agregar empleados a la programación¶
El botón Agregar empleados abre un modal con:
- Buscar empleados — Autocompletado para seleccionar uno o más empleados (múltiple selección con chips).
- Modalidad — Selector del patrón/modalidad a asignar.
- Puesto — Autocompletado de puestos de trabajo.
- Contador de seleccionados.
- Botón Agregar (deshabilitado hasta que haya al menos un empleado, modalidad y puesto seleccionados).
Modal de cambio de estado¶
Al hacer clic en el badge de estado (modo vista, con permiso), se abre un modal que muestra:
- Estado actual → Estado nuevo (con flechas visuales).
- Selector de nuevo estado:
BorradoroConfirmado(la opción actual queda deshabilitada). - Campo de Notas opcional (motivo del cambio).
- Botón Confirmar cambio.
La vista mensual — dónde se trabaja la programación¶
La vista mensual es la pantalla donde hoy se ve y se edita la programación: una rejilla con una fila por empleado (y su proyecto, puesto y modalidad) y una columna por cada día del mes.
Se puede agrupar por empleado, proyecto o puesto, y filtrar.
Modo edición¶
Al entrar en edición la rejilla se comporta como una hoja de cálculo: se escribe en las celdas, se pega desde Excel, se arrastra y se copia. Cada celda lleva el código del horario de ese día.
- Importar — carga un archivo (Excel o CSV) y lo interpreta para llenar la rejilla.
- Auto generar — llena el mes completo aplicando el patrón de cada empleado, con su ciclo y su desfase.
- Guardar y reconstruir — guarda y vuelve a construir los turnos afectados. Sobre una programación ya confirmada, avisa antes.
El borrador que no se pierde¶
Mientras se edita, el navegador guarda un borrador local. Si la pestaña se cierra o el equipo se apaga, al volver aparece el aviso "Se encontró un borrador sin guardar" con las opciones Restaurar y Descartar.
Validación al entrar y al escribir¶
Al abrir el modo edición, la pantalla valida contra el servidor todos los empleados, proyectos y puestos que ya tiene la programación. Eso saca a la luz empleados inactivos o eliminados y puestos que ya no existen — cosas que antes quedaban escondidas en programaciones viejas.
Los puestos son propios de cada proyecto: el mismo nombre de puesto puede existir en varios proyectos y se valida siempre con su proyecto.
Los cruces de horario bloquean el guardado¶
Si un empleado queda con dos turnos que se solapan el mismo día, esas celdas se marcan como error y no se puede guardar. El botón Ver salta a la primera celda con problema.
Días que no se pueden tocar¶
Los días ya pasados y los que tienen trabajo registrado quedan bloqueados: la programación se edita hacia adelante, no hacia atrás.
Crear los meses siguientes¶
El botón Crear meses siguientes proyecta la programación hacia adelante continuando la rotación: no copia el mes tal cual, sino que infiere en qué punto del ciclo va cada persona y sigue desde ahí.
Permite elegir cuántos meses crear y qué hacer con los que ya existen (Reemplazar los meses que ya existen o dejarlos). También existe Eliminar meses creados desde este mes para deshacer.
Si un proyecto no tiene programación en el mes destino, se crea sola en borrador.
Consolidar reemplazos indefinidos¶
Cuando alguien lleva tiempo cubriendo el puesto de otro sin fecha de regreso, la programación arrastra un reemplazo mes tras mes. Consolidar reemplazos indefinidos promueve al relevo a titular del puesto.
El asistente muestra cuántos se consolidan y cuántos quedan igual, y en este último caso dice por qué. El histórico ya vivido no se toca: la consolidación mira hacia adelante.
Rondas en la programación¶
La regla de fondo: el patrón dice QUÉ se hace; la programación dice CUÁNDO.
- El patrón de ronda (módulo Tags y Patrones) guarda los puntos, las vueltas y las reglas.
- Qué turnos llevan ronda se marca en la rejilla, turno por turno. Las celdas con ronda muestran la convención Ronda.
Marcar rondas en bloque¶
- Seleccionar varias celdas (la selección puede ser discontinua: cada celda es una isla).
- Menú contextual → Adicionar ronda (N) o Quitar ronda (N).
Al aplicar, el sistema resuelve el patrón: un puesto con un solo patrón se aplica solo; sólo se pregunta por los puestos que tienen varios; los que no tienen ninguno se omiten con aviso.
Aviso de cobertura: si el patrón elegido no tiene asignado a ese empleado, la ronda quedaría pintada en la programación y la aplicación no se la mostraría. El sistema avisa, pero no bloquea.
Quitar una ronda borra la marca; no deja una marca negativa.
Proponer rondas para el mes siguiente¶
Al clonar el mes —y también con el botón Proponer rondas, que sólo aparece si el mes anterior tenía rondas— el sistema propone en qué turnos del mes nuevo deberían ir las rondas, deduciendo la regla que se venía usando ("todos los lunes y jueves con turno", "tres días seguidos cada seis").
Tres cosas importantes:
- Lo que se propone son celdas concretas, no una regla que quede guardada. Nada del funcionamiento diario depende de esta ayuda: si no está disponible, el mes se clona sin rondas y se marcan a mano.
- Nada se escribe hasta que una persona aprueba. La propuesta se pinta sobre la rejilla para poder compararla con el mes anterior; hay Aplicar, Recalcular y Descartar.
- Se puede escribir una indicación en texto libre para pedir otra regla ("este mes las rondas van los fines de semana").
Cuando el sistema puede calcular cuál era la regla, la calcula y compara sin margen, en vez de estimar por parecido. Un aviso falso sobre una respuesta correcta destruye más confianza que un error que se escapa.
Si el empleado del puesto cambió por una consolidación de reemplazo, la propuesta lo dice: "Brandy Heath (antes Willson Hernadez)".
Borrar un patrón que está en uso¶
No se puede borrar sin más: el sistema responde diciendo cuántas rondas lo están usando y cuántas de ellas son futuras. Se puede forzar, y entonces se van el patrón y sus rondas juntos.
Antes, borrar un patrón dejaba rondas huérfanas: la marca desaparecía sola de meses ya revisados y el cumplimiento cambiaba sin que nadie hubiera tocado nada.
Novedades del día¶
Un clic sobre un día abre su panel: el horario, la duración, las horas diurnas y nocturnas, y las novedades del día (ausencias, reemplazos, adicionales) con un enlace Ver novedades.
Permisos¶
| Acción | Permiso requerido |
|---|---|
| Ver programaciones | schedule: view |
| Crear programación | schedule: create |
| Editar programación / líneas | schedule: edit |
| Eliminar | schedule: delete |
Páginas relacionadas¶
- Empleados — El personal que se asigna a las programaciones.
- Puestos — Los puestos de trabajo usados en las líneas.
- Proyectos — Cada programación pertenece a un proyecto.
- Asistencia — Los registros de asistencia se verifican contra los turnos programados.
- Novedades — Reemplazos y cambios de turno no programados.
Preguntas frecuentes¶
¿Cuál es la diferencia entre un Patrón y un Horario? Un Horario define una franja de horas (ej. 06:00 a 14:00 con sus horas diurnas/nocturnas calculadas). Un Patrón agrupa horarios en un ciclo de rotación (ej. 5 días laborando el horario "06-14" seguidos de 2 días de descanso = patrón "5X2").
¿Qué significa el desfase?
Son los días que cada empleado arranca corrido dentro del ciclo respecto al anterior, para que no coincidan todos en el mismo turno el mismo día. En un patrón 3X3X2 (ciclo de 8 días) con 3 personas y desfase 3: el empleado 1 inicia en el día 1 del ciclo (diurnos), el 2 en el día 4 (nocturnos) y el 3 en el día 7 (descanso). Así el puesto queda cubierto 24 horas. Con desfase 0 todos trabajan y descansan los mismos días. Ver El desfase.
¿Qué hace el botón "Auto generar"? Toma la modalidad (patrón) asignada a cada empleado en la programación y llena automáticamente cada día del mes con el horario que corresponde según el ciclo, el desfase y si el día es festivo o fin de semana.
¿Puedo cambiar el horario de un solo día para un empleado? Sí. En modo edición, cada celda de día es editable individualmente. Puedes cambiar el código de horario de cualquier celda sin afectar el resto.
¿Qué significa "N celda(s) con error" en modo edición? Hay celdas con un valor de horario que no existe en el catálogo o que es inválido. No se puede guardar hasta corregirlas. Haz clic en Ver para saltar a la primera celda con problema.
¿La programación en "Cancelado" puede reactivarse?
Sí, el cambio de estado permite mover a Borrador o Confirmado desde cualquier estado, incluyendo Cancelado. Usa el modal de cambio de estado y agrega una nota con el motivo.
¿Dónde marco que un turno lleva ronda? En la rejilla de la vista mensual, celda por celda. El patrón de ronda define qué se hace (los puntos y las vueltas); la programación define cuándo. Para marcar varias a la vez: selecciona las celdas y usa el menú contextual → Adicionar ronda.
Marqué la ronda y al vigilante no le aparece en el teléfono. Probablemente el patrón elegido no tiene asignado a esa persona. Al aplicar la ronda el sistema avisa de eso: la marca queda en la programación pero la aplicación no se la muestra. Se corrige asignando el empleado al patrón en Tags y Patrones.
¿Las rondas del mes siguiente se copian solas? No se copian: se proponen. El sistema deduce la regla que se venía usando y pinta las celdas sugeridas sobre la rejilla para compararlas; nada se guarda hasta que alguien toca Aplicar.
Borré un patrón de ronda y no me dejó. Porque hay rondas en la programación apuntando a ese patrón. El sistema dice cuántas son y cuántas están en el futuro. Se puede forzar el borrado, y entonces se eliminan el patrón y sus rondas a la vez.
Cerré la pestaña sin guardar la programación, ¿perdí el trabajo? No. Al volver a entrar aparece el aviso de borrador sin guardar con las opciones Restaurar o Descartar.
No me deja guardar por un "cruce de horario". Un empleado quedó con dos turnos que se solapan el mismo día. Las celdas están marcadas; el botón Ver salta a la primera.
¿Qué hace "Crear meses siguientes"? Proyecta la programación hacia adelante continuando la rotación: infiere en qué punto del ciclo va cada persona y sigue desde ahí. No es una copia del mes.
¿Qué es consolidar un reemplazo indefinido? Cuando alguien lleva meses cubriendo el puesto de otro sin fecha de regreso, consolidar lo convierte en titular de ese puesto de ahí en adelante. El histórico ya vivido no cambia.