Odoo - Integración Hikvision y Asignación de turnos
Este manual está dirigido a usuarios con permisos máximos de Recursos Humanos y Asistencias. Describe cómo configurar turnos, asignarlos a empleados o departamentos, revisar líneas de horario, cargar correcciones manuales y controlar el recálculo automático de asistencias.
Alcance del módulo
El módulo permite calcular asistencias usando turnos de trabajo definidos por plantilla. La información del reloj biométrico Hikvision sigue existiendo como fuente de fichadas, pero la planificación de horarios se maneja con objetos de Odoo:
- plantillas de turnos;
- líneas de horario de trabajo;
- transacciones manuales;
- solicitudes técnicas de recálculo.
El cálculo combina fichadas importadas desde Hikvision y transacciones manuales aprobadas. Las transacciones manuales en borrador o canceladas no impactan en el cálculo.
Menús principales
Dentro de Asistencias se usan estos menús:
- Operaciones / Plantillas de turnos: configuración reusable de turnos.
- Operaciones / Asignar turnos: asistente para aplicar una plantilla a empleados o departamentos.
- Operaciones / Grilla de horarios: vista tipo Gantt/lista para revisar asignaciones por empleado, día y plantilla.
- Operaciones / Líneas de horario: vista detallada de las líneas reales de horario de trabajo.
- Operaciones / Transacciones manuales: ajustes manuales de fichadas.
- Configuración / Ajustes de asistencia: ajustes generales de Odoo Asistencias.
- Configuración / Hikvision: configuración y control de la integración biométrica.
Permisos esperados
El usuario de este manual debería tener permisos de administración de Asistencias y Recursos Humanos. Con estos permisos puede:
- crear y modificar plantillas de turnos;
- asignar horarios a empleados o departamentos;
- aprobar, cancelar o volver a borrador transacciones manuales;
- revisar importaciones Hikvision;
- revisar resultados de asistencia y vínculos con transacciones.
La edición o eliminación directa de lotes y transacciones Hikvision debe reservarse para usuarios con permisos de administración de ajustes, porque son datos de auditoría provenientes de una fuente externa.
Conceptos clave
Plantilla de turno
Una plantilla define el patrón semanal y las reglas de cálculo. Por ejemplo: 8-16, 16-00, 22-06.
Campos principales:
- Nombre: identificador visible de la plantilla.
- Color: color usado en la grilla/Gantt para distinguir visualmente los turnos.
- Modo de cálculo:
- Ventanas de turno: usa ventanas de entrada y salida configuradas.
- Primera entrada / última salida: comportamiento simple de primera fichada y última fichada.
- Permitir tiempo extra: permite tomar una salida posterior a la ventana normal como salida válida para horas extra.
Línea de plantilla
Cada línea define un día de la semana y sus horarios:
- Día de la semana.
- Hora de entrada y hora de salida.
- Entrada permitida desde / hasta.
- Umbral de retraso.
- Salida permitida desde / hasta.
- Umbral de salida anticipada.
- Cruza medianoche.
Ventana de entrada y umbrales
Estos tres campos trabajan juntos para controlar qué fichadas de entrada son válidas y si se marca tardanza:
| Campo | ¿Qué hace? |
|---|---|
| Entrada permitida desde | Hora más temprana que el sistema acepta como entrada. Fichadas anteriores se ignoran. |
| Umbral de retraso | A partir de esta hora la entrada se marca como tardanza. El empleado entra, pero queda registrado con llegada tarde. |
| Entrada permitida hasta | Hora límite absoluta. Si el empleado llega después de este horario, la fichada no se acepta y no se genera asistencia (equivale a ausencia). |
Ejemplo — turno 08:00:
Entrada permitida desde : 07:30 Umbral de retraso : 08:10 ← antes de aquí: entrada puntual Entrada permitida hasta : 08:30 ← después de aquí: no ingresa, ausencia
- Llega 07:45 → entrada aceptada, puntual.
- Llega 08:15 → entrada aceptada, marcada como tardanza.
- Llega 08:35 → fichada rechazada, sin asistencia (ausencia).
Confusión frecuente: el Umbral de retraso no es el tope de entrada; solo define desde cuándo se considera tarde. El tope real de entrada es Entrada permitida hasta.
Ventana de salida y umbral de salida anticipada
De forma análoga, estos tres campos controlan las salidas:
| Campo | ¿Qué hace? |
|---|---|
| Salida permitida desde | Hora más temprana que el sistema acepta como salida válida. |
| Umbral de salida anticipada | Antes de esta hora la salida se marca como salida anticipada. |
| Salida permitida hasta | Hora límite para aceptar una fichada de salida dentro del turno normal. |
Si la hora de salida es menor que la hora de entrada, el sistema interpreta que el turno cruza medianoche. Por ejemplo, 22:00 - 06:00.
Odoo no guarda una línea con hasta < desde. Para turnos trasnoche el sistema parte el horario en dos líneas:
- día de inicio: desde la hora de entrada hasta 24:00;
- día siguiente: desde 00:00 hasta la hora de salida.
Solo la primera línea es el ancla lógica del turno.
Línea de horario
Es el resultado real aplicado al calendario del empleado. La línea de horario guarda una copia de las ventanas y umbrales de la plantilla para mantener el histórico. Si luego se modifica la plantilla, las líneas ya asignadas no cambian automáticamente, salvo que se vuelva a asignar la plantilla con el asistente.
Transacción manual
Es una fichada cargada manualmente para corregir o completar un caso. Puede ser:
- Entrada;
- Salida;
- Entrada al descanso;
- Salida del descanso;
- Entrada en hora extra;
- Salida en hora extra.
Solo las transacciones manuales aprobadas participan del cálculo.
Crear una plantilla de turno
- Ir a Asistencias / Operaciones / Plantillas de turnos.
- Crear una nueva plantilla.
- Completar nombre, color, modo de cálculo y si permite tiempo extra.
- En la pestaña Líneas, agregar una línea por cada día trabajado.
- Cargar los horarios y ventanas.
- Guardar.
Recomendaciones:
- Usar nombres cortos y claros: 8-16, 7-15, 22-06.
- Definir ventanas realistas. Una ventana demasiado corta deja fichadas fuera del cálculo; una ventana demasiado amplia puede tomar fichadas incorrectas.
- Usar el color para distinguir turnos que se superponen visualmente en la grilla.
Copiar una línea a otros días
En la lista de líneas de la plantilla, usar el botón de copiar al final de la línea. El asistente permite elegir los días destino. Esto es útil cuando lunes, martes, miércoles, jueves y viernes tienen el mismo horario.
Asignar turnos
- Ir a Asistencias / Operaciones / Asignar turnos.
- Elegir la plantilla.
- Seleccionar el rango de fechas.
- Elegir empleados o departamentos.
- Si se eligen departamentos, marcar Incluir subdepartamentos cuando corresponda. Esto incluye todos los niveles inferiores: hijos, nietos y demás subdepartamentos.
- Presionar Continuar.
- Revisar el resumen y posibles horarios que se van a pisar.
- Presionar Confirmar y actualizar.
Al confirmar:
- se crean o actualizan las líneas de horario de cada empleado;
- si el empleado no tiene un horario de trabajo administrado por asignaciones, el sistema crea uno propio;
- se genera automáticamente una solicitud de recálculo;
- el asistente se cierra y la página se actualiza.
Empleados vs departamentos
El asistente trabaja en un solo modo por vez:
- si se seleccionan empleados, se limpian los departamentos;
- si se seleccionan departamentos, se limpian los empleados.
Esto evita asignaciones ambiguas.
Asignación sin fecha hasta
Si se deja vacía la fecha hasta, la asignación queda vigente sin fecha de fin. No se generan líneas infinitas por día: se crean líneas recurrentes de Odoo con fecha de inicio y sin fecha de finalización.
Al asignar encima de horarios existentes:
- el asistente avisa en el segundo paso;
- las líneas solapadas futuras se reemplazan por la nueva plantilla;
- si una línea anterior empezó antes del nuevo rango, se corta hasta el día anterior para conservar el histórico.
Revisar la grilla de horarios
Ir a Asistencias / Operaciones / Grilla de horarios.
La vista principal permite ver el calendario de asignaciones por empleado y día. Es la mejor vista para controlar:
- quién trabaja cada día;
- qué horario tiene cada empleado;
- huecos sin asignación;
- cobertura por departamento;
- diferencias de color entre plantillas.
Filtros útiles:
- Empleado.
- Departamento.
- Plantilla.
- Actuales y futuros.
La vista lista permite revisar los mismos datos en formato tabular, con fecha, empleado, departamento, turno, hora desde, hora hasta y plantilla.
Revisar líneas de horario
Ir a Asistencias / Operaciones / Líneas de horario.
Esta vista muestra las líneas reales de resource.calendar.attendance que usa Odoo para calcular horarios. Es más técnica que la grilla y sirve para:
- auditar una asignación concreta;
- revisar fechas de inicio y fin;
- revisar líneas de turnos trasnoche;
- filtrar por empleado, departamento o plantilla;
- detectar líneas solapadas.
No se recomienda editar líneas manualmente salvo casos excepcionales. Para cambios normales, usar siempre Asignar turnos.
Transacciones manuales
Ir a Asistencias / Operaciones / Transacciones manuales.
Usar una transacción manual cuando:
- falta una entrada o salida;
- el empleado fichó en un dispositivo no sincronizado;
- RRHH necesita corregir una asistencia con respaldo;
- se debe registrar una entrada o salida en hora extra.
Flujo recomendado:
- Crear una transacción manual.
- Seleccionar empleado.
- Cargar fecha y hora de la transacción.
- Elegir el tipo de transacción.
- Escribir un motivo claro.
- Guardar.
- Presionar Aprobar.
Al aprobar, el sistema genera una solicitud de recálculo para ese empleado y ese día. Si una transacción aprobada se cancela o vuelve a borrador, también se genera recálculo para quitar su impacto.
Buenas prácticas:
- No usar transacciones manuales para reemplazar la planificación de turnos.
- Escribir motivos auditables, por ejemplo: "Empleado olvidó fichar salida, autorizado por supervisión".
- Evitar editar una transacción ya aprobada; volver a borrador o cancelar deja trazabilidad del cambio.
Importaciones Hikvision
Las fichadas provenientes del biométrico se consultan en Configuración / Hikvision / Asistencia Hik y vistas relacionadas.
Fuentes esperadas:
- API: generada automáticamente por el middleware.
- CSV móvil: carga manual permitida.
- CSV Borra: carga manual permitida.
Los lotes recibidos por API no deberían crearse manualmente. El botón manual de crear asistencias en lotes queda oculto en este flujo porque el cálculo se dispara automáticamente mediante solicitudes de recálculo.
Recálculo automático
No hay asistente manual de recálculo. El sistema recalcula automáticamente cuando ocurre alguno de estos eventos:
- se importan o procesan fichadas Hikvision;
- se aprueba, cancela o vuelve a borrador una transacción manual;
- se asigna una plantilla de turno a empleados o departamentos.
El recálculo se procesa por cola/cron para no bloquear la interfaz. El rango se amplía internamente con un día anterior y un día posterior para cubrir turnos trasnoche.
Mientras el cron no haya procesado la solicitud, puede haber una pequeña demora entre la operación y el resultado final en la asistencia.
Revisar asistencias calculadas
En Asistencias, abrir una asistencia para revisar:
- entrada y salida;
- horas trabajadas;
- horas extra;
- llegada tarde;
- salida anticipada;
- fuente de cálculo;
- fuente de entrada;
- fuente de salida;
- transacciones manuales vinculadas.
La fuente puede indicar:
- Hikvision;
- Ajuste manual;
- Hikvision + ajuste manual;
- Odoo / manual.
Esto permite distinguir una asistencia generada solo por el biométrico de una asistencia completada con correcciones manuales.
Casos frecuentes
Un empleado no aparece al asignar por departamento
Revisar que el empleado esté activo y tenga asignado el departamento correcto. Si se espera incluir subdepartamentos, verificar que la opción Incluir subdepartamentos esté marcada.
Una salida no cierra la asistencia
Revisar:
- si el tipo de transacción es una salida válida;
- si la salida está dentro de la ventana permitida;
- si la plantilla permite tiempo extra cuando la salida queda fuera de la ventana normal;
- si el cron de recálculo ya procesó la solicitud.
Un turno trasnoche se ve en dos líneas
Es esperado. Odoo representa el turno trasnoche como dos líneas de horario: una hasta 24:00 y otra desde 00:00 del día siguiente. El cálculo lógico sigue tratándolo como un único turno.
Cambié una plantilla y no cambiaron las asignaciones existentes
Es esperado. Las líneas ya asignadas conservan una copia histórica de las reglas. Para aplicar cambios, volver a ejecutar Asignar turnos sobre el rango y empleados/departamentos correspondientes.
Veo horarios que se van a pisar al asignar
El asistente detectó líneas solapadas. Si se confirma, las líneas futuras solapadas se reemplazan por la nueva plantilla. Revisar bien el resumen antes de confirmar.
Recomendaciones de administración
- Mantener pocas plantillas, claras y reutilizables.
- No usar nombres de plantilla que dependan de una persona; usar nombres por horario o regla.
- Revisar la grilla de horarios antes de importar o validar períodos largos.
- Usar transacciones manuales solo con motivo auditado.
- Evitar edición directa de líneas salvo casos de soporte.
- Controlar que cada empleado tenga un único horario de trabajo administrado por asignación.
- Revisar periódicamente solicitudes de recálculo fallidas si se habilita una vista técnica para administradores.
Glosario
- Plantilla: patrón semanal reusable con reglas de asistencia.
- Línea de plantilla: configuración de un día dentro de una plantilla.
- Línea de horario: línea real aplicada al calendario del empleado.
- Ancla de asistencia: línea que representa el inicio lógico del turno.
- Turno trasnoche: turno que empieza un día y termina al día siguiente.
- Transacción Hikvision: fichada importada desde el biométrico.
- Transacción manual: fichada cargada por RRHH para corregir o completar.
- Recálculo: proceso automático que reconstruye asistencias para un rango.
- Umbral de retraso: hora a partir de la cual una entrada se considera tardanza. La asistencia sí se genera, pero queda marcada como llegada tarde. No es el tope de entrada; ese es Entrada permitida hasta.
- Entrada permitida hasta: hora límite absoluta para ingresar. Si el empleado llega después de este horario, la fichada no se acepta y no se genera asistencia (ausencia).
- Umbral de salida anticipada: hora antes de la cual una salida se considera salida anticipada. La asistencia sí se genera, pero queda marcada.
- Tardanza: llegada registrada después del umbral de retraso pero antes del tope de entrada permitida. El empleado ingresó pero fuera del horario acordado.