Guía técnica · Módulo opcional
Cumple con el RD-ley 8/2019 sin papeleo ni hardware extra. Cada trabajador ficha desde su móvil escaneando un QR, o desde el propio CRM.
Contenido
El RD-ley 8/2019 obliga a TODA empresa española con asalariados a llevar un registro horario diario, conservarlo 4 años y tenerlo disponible para inspección. Sin papeles sueltos, sin Excel a mano, sin "ya me lo apuntaré luego".
Lo que exige la ley (resumen)
Multas por incumplimiento: de 626 € (leve) a 7.500 € (grave). No es una broma — la Inspección hace controles aleatorios y por denuncia.
/suscripcion ya te pone en regla.
Hay tres modos disponibles, combinables. Cada clínica usa el que mejor le encaja.
El usuario logueado en el CRM ve un icono de cronómetro en la barra superior.
Clic → /fichajes → botón gigante "Fichar entrada" o "Fichar salida".
Útil para recepción o admin que siempre está delante del PC.
Ventaja: sin móvil. Pega: cada trabajador necesita su propia sesión.
Recepción muestra un QR en pantalla (icono QR en la barra superior → ventana).
El trabajador lo escanea con la cámara de su móvil. La primera vez
elige su nombre, mete PIN 0000 y el sistema le obliga
a definir uno propio de 4 dígitos. La cookie del móvil lo recuerda
1 año. Las siguientes veces: escanear y pulsar botón.
Ventaja: cada empleado en su móvil, sin colas en recepción.
Si alguien olvida fichar (móvil descargado, urgencia…), el admin lo
registra a mano desde /fichajes con motivo obligatorio.
En el historial queda marcado con una etiqueta azul "manual".
Para corregir olvidos, no para uso diario.
Lo que el administrador de la clínica configura una sola vez al activar el módulo.
/suscripcionEn la matriz, elige una celda «CRM + Fichaje» del plan que prefieras. Stripe cobra el delta del módulo. Al volver: módulo activo, item "Fichajes" en el menú lateral, icono QR en la barra superior.
En /configuracion?tab=fichaje pon el máximo de horas que una
jornada puede estar abierta antes del cierre automático diario:
Si en la misma clínica hay personas con jornadas distintas (recepción 8h
+ médico de guardia 24h), en cada usuario en /usuarios/{id}/editar
hay un campo "Máximo horas por jornada (ajuste individual)".
Activable en la pestaña Fichaje. Si encendido, el móvil del trabajador pide permiso al fichar; sin permiso no se ficha. Si apagado, se guarda solo si el navegador la concede automáticamente. Útil para clínicas multi-sede; con sede única se puede dejar OFF.
Icono QR en la barra superior → ventana. O directamente /fichajes/qr para
verlo a tamaño completo e imprimirlo. La URL es estable: una vez impreso
sirve para siempre (salvo que el admin lo regenere con el botón "🔄 Regenerar").
En cada usuario hay una casilla «Mostrar icono QR en su barra superior». Por defecto ON para admin y recepcionista, OFF para doctor/higienista/coordinador/contable. Cada empleado puede tener configuración distinta.
Lo que cada trabajador hace, sin esfuerzo, día a día.
La cookie del móvil dura 1 año. Si el trabajador cambia de móvil o limpia cookies, simplemente vuelve a escanear el QR y se identifica de nuevo con su PIN.
Cuando el trabajador hace una pausa pulsa "☕ Iniciar pausa". El cronómetro entra en modo amarillo. Al volver, pulsa "▶ Reanudar". Los minutos de pausa se descuentan automáticamente del tiempo total trabajado.
Si un trabajador se va sin fichar salida, el proceso automático diario (20:00) le envía:
Si aun así no la ficha, el sistema cierra la jornada automáticamente al cabo del límite configurado (12h por defecto) y la marca con una etiqueta roja "⚠ auto-cierre" para revisión del admin.
/fichajes/equipo)Tabla con todos los fichajes del equipo. Filtros por rango de fechas, por empleado y por tipo (auto-cierre / manual). Totales agregados por persona en el rango.
Badges visibles:
Botón verde "📥 Exportar CSV". Genera un fichero con BOM UTF-8 (abre directo en Excel) con todos los fichajes del rango filtrado. Es el formato estándar que pide Inspección.
Botón "📋 Informes mensuales" arriba a la derecha. Lleva a un repositorio histórico donde cada mes aparece como una fila descargable. Cada informe incluye:
El proceso automático genera el informe del mes anterior el día 2 de cada mes. El admin puede regenerar manualmente si hay correcciones (crea revisión #2, #3…).
Cada día el sistema analiza los fichajes del día anterior y notifica al admin si detecta:
Una sola notificación por día al admin, con lista resumida. Clic → lleva a la vista del equipo filtrada por ese día.
Los fichajes individuales se guardan indefinidamente en la BD. Los informes mensuales firmados se guardan en disco (fuera del webroot, no accesibles por URL pública). La política de retención del CRM borra automáticamente los datos personales tras los 4 años exigidos legalmente, no antes.
Cada informe mensual lleva una huella SHA-256 calculada sobre los datos canónicos de los fichajes del mes (orden estable de filas → mismo hash siempre).
Si en el futuro alguien edita un fichaje incluido en un informe ya generado, basta recalcular el hash sobre la BD actual y comparar con el guardado: si difiere, fue manipulado. Trazabilidad técnica sin necesidad de firma digital.
Cada acción queda en activity_log:
Visible para el admin en /configuracion?tab=auditoria.
La geolocalización es opt-in a nivel de clínica + requiere consentimiento explícito del trabajador en su navegador (estándar web). Si está desactivada nunca se pide. Los datos personales del trabajador (nombre, email) se manejan según la política de privacidad general del CRM.
Puede fichar desde el CRM si tiene usuario logueado, o pedirle al admin que registre el fichaje manualmente con motivo. No es la operativa ideal pero cubre casos puntuales.
El admin va a /usuarios/{id}/editar y marca "Resetear PIN a 0000".
En su próximo fichaje desde móvil, el sistema obliga al trabajador a definir
un PIN nuevo. Sin emails ni llamadas a soporte.
El QR contiene una URL con un token aleatorio de 32 caracteres. Si se filtra,
el admin va a /fichajes/qr y pulsa "🔄 Regenerar". El antiguo deja
de funcionar inmediatamente y los móviles ya identificados tendrán que volver
a escanear el QR nuevo.
Aun teniendo el QR, sin PIN no se ficha. La seguridad real está en el PIN.
Sí. Para la mayoría de inspecciones basta con el CSV de
/fichajes/equipo filtrado por el periodo pedido. Si el inspector
quiere algo más sólido, descarga el informe mensual firmado con SHA-256 desde
/fichajes/equipo/informes.
El módulo Fichaje queda desactivado automáticamente (los addons no tienen sentido sin el producto principal). Los datos quedan archivados en BD y accesibles si se reactiva la suscripción, hasta los 4 años legales.
Para fichar desde el CRM hace falta internet. Pero para fichar con QR desde el móvil del trabajador, basta con que su móvil tenga 4G/wifi — no depende del wifi de la clínica.
Sí. Cada sede tiene su propio QR y su propio módulo. Si activas la geolocalización, en el informe puedes ver desde qué punto físico fichó cada trabajador (indicador 📍 que abre Google Maps).
Activa el módulo desde Planes y servicios. Stripe cobra el delta del módulo y tu clínica queda en regla.