Ausencias y vacaciones
Gestión de solicitudes de ausencia (vacaciones, permisos, etc.) con aprobación por parte del encargado.
Flujo
- Configuración (encargado): En Configuración → Ausencias se definen los tipos de ausencia del lugar (vacaciones, matrimonio, enfermedad, asuntos propios, etc.). Cada tipo puede indicar si cuenta como días naturales o laborables, si requiere aprobación y si permite solicitudes por horas o medios días.
- Solicitud (empleado o encargado): Se crea una solicitud indicando tipo, fechas, cantidad (días o horas) y opcionalmente un motivo. La solicitud queda en estado pendiente.
- Revisión (encargado): En Informes → Pendientes de aprobar aparece la sección "Solicitudes de ausencia pendientes". El encargado puede Aceptar o Rechazar cada una (en el rechazo puede indicar un motivo).
- Efectos: Las solicitudes aprobadas se reflejan en la columna Ausencias del informe de Rendimiento. Además, al auto-asignar turnos el sistema no asigna a empleados que tengan ausencia aprobada ese día.
Cuotas por año
- Cada empleado tiene una cuota por tipo de ausencia y año (Empleados → editar empleado → cuotas).
- Al empezar un año nuevo, Denpora crea las cuotas automáticamente: copia el total que ese empleado tenía el año anterior (así se respetan los ajustes hechos a mano) y, si no tenía cuota, usa los días por defecto del tipo. A quien entra a mitad de año se le prorratean las vacaciones según su fecha de alta.
- La generación ocurre sola la primera vez que alguien abre Ausencias en el año nuevo, y también se puede lanzar a mano desde Informes → Cierre de vacaciones → "Generar cuotas AAAA". Es idempotente: no pisa las cuotas que ya existan.
- Un tipo sin cuota configurada no se puede solicitar y la app lo dice ("sin cuota asignada para este año"); no se inventa ningún total por defecto.
Saldo y días pendientes
- El saldo lo calcula el backend (
GET /staff/:id/leave-balance?year=): días totales, disfrutados, aprobados con fecha futura y disponibles. - Una ausencia a caballo del 31 de diciembre se reparte entre los dos años en proporción a los días de cada uno; no se descuenta entera en ambos.
- Si el empleado tiene días arrastrados del año anterior, se muestran aparte con su fecha límite, se consumen antes que los del año en curso y, pasada esa fecha, aparecen como caducados.
Cierre de año (días pendientes del año anterior)
Informes → Cierre de vacaciones (solo encargados/propietario) lista, por empleado y tipo, los días que quedaron sin disfrutar a 31 de diciembre — incluidos los empleados dados de baja, cuyos días hay que liquidar en el finiquito. Por cada fila se registra una decisión:
| Decisión | Qué hace |
|---|---|
| Arrastrar | Crea una cuota de arrastre en el año siguiente con los días y la fecha límite que se indiquen (por defecto, el 31 de marzo). Al pasar esa fecha los días no disfrutados caducan. |
| Compensar | Deja constancia de que se compensarán económicamente. Ojo: sustituir vacaciones por dinero solo procede al terminar el contrato (art. 38.1 del Estatuto de los Trabajadores). |
| Caducan | No se arrastran: es la regla general si el convenio o un acuerdo no dicen otra cosa. |
Cada decisión guarda quién la tomó y cuándo, y queda también en el registro de actividad del local. El informe se exporta a CSV para pasárselo a la gestoría.
Por qué se registra: las vacaciones se disfrutan dentro del año natural y lo que sobra caduca el 31 de diciembre, salvo pacto o convenio. Pero el TJUE (asuntos C-684/16 y C-120/21) exige que la empresa pueda acreditar que informó al trabajador de que iba a perderlos; si no, no caducan. Por eso Denpora no arrastra días por su cuenta ni los borra en silencio: enseña los pendientes y deja rastro de la decisión.
Festivos y días laborables
- En la API existen endpoints para festivos por lugar y para calcular días laborables entre dos fechas (excluyendo sábados, domingos y festivos configurados). Esto permite que los tipos de ausencia "días laborables" se calculen correctamente cuando se implemente la validación de cuotas.
Permisos
- Solo usuarios con permiso de gestión (encargados o propietario) pueden:
- Definir tipos de ausencia y festivos en Configuración.
- Aprobar o rechazar solicitudes de ausencia.
- Cualquier empleado con acceso al lugar puede crear solicitudes (para sí mismo o, si tiene permisos, para otros) mediante la API; la interfaz para "Solicitar ausencia" desde la app se puede añadir en una futura versión.