Solicitudes de Permiso
Las Solicitudes de Permiso son el núcleo del flujo de trabajo de gestión de permisos. Los empleados envían solicitudes de tiempo libre, que luego pasan por un proceso de aprobación. El sistema rastrea el ciclo de vida completo desde el envío hasta la aprobación o rechazo, con actualizaciones automáticas del saldo en cada paso.
Enviar una Solicitud de Permiso
Como Empleado (Portal)
- Navegue a Leave Requests desde la barra lateral.
- Haga clic en Create.
- Seleccione el Tipo de Permiso.
- Ingrese la Fecha de Inicio y Fecha de Fin.
- Ingrese el número de Días (admite incrementos de medio día, ej., 0.5, 1.5).
- Opcionalmente añada un Motivo.
- Haga clic en Save.
El campo Empleado se establece automáticamente al empleado que ha iniciado sesión — no aparece en el formulario.
Como Administrador
Los administradores ven el mismo formulario, pero con un campo adicional de Empleado para seleccionar para qué empleado es la solicitud. También pueden completar el campo Notas del Administrador (oculto para empleados).
Desde la Vista Detallada del Empleado
Los administradores pueden crear solicitudes de permiso directamente desde la página de detalle de un empleado usando la acción Create Leave Request. El empleado se pre-llena, y un interruptor adicional Es Medio Día está disponible por conveniencia.
Reglas de Validación
El sistema aplica varias reglas de validación al enviar o editar una solicitud de permiso:
Validación de Días
El número de días debe coincidir con el rango de fechas:
- Días completos: Los días deben ser iguales a
end_date - start_date + 1 - Medios días: Los días deben ser iguales a
(end_date - start_date + 1) * 0.5
Cualquier otro valor se rechaza con un mensaje de error.
Detección de Superposición
El sistema verifica solicitudes de permiso superpuestas para el mismo empleado. Una solicitud se bloquea si su rango de fechas se superpone con cualquier solicitud aprobada o pendiente existente.
Dos rangos de fechas se superponen si:
start_date_1 <= end_date_2 AND start_date_2 <= end_date_1
Al editar una solicitud existente, la verificación de superposición excluye el registro actual.
Estados de las Solicitudes
| Estado | Insignia | Descripción |
|---|---|---|
| Pendiente | Amarillo | En espera de aprobación. El saldo se reserva en pending_days. |
| Aprobada | Verde | Aprobada por un gerente. Los días se mueven de pending_days a used_days. |
| Rechazada | Rojo | Rechazada por un gerente. Los días se eliminan de pending_days. |
| Cancelada | Gris | Cancelada por el empleado o administrador. Los días se restauran. |
Flujo de Aprobación
Flujo Estándar
El empleado envía la solicitud
|
Estado: Pendiente
(pending_days aumenta)
|
El gerente revisa la solicitud
|
+--- Aprobar ---> Estado: Aprobada
| (pending_days -> used_days)
| Empleado notificado
|
+--- Rechazar ---> Estado: Rechazada
| (pending_days eliminado)
| Motivo de rechazo registrado
| Empleado notificado
|
+--- (Empleado) Cancelar --> Estado: Cancelada
(pending_days eliminado)
Flujo de Aprobación Automática
Para tipos de permiso configurados para aprobación automática (en Settings > Leave Management):
El empleado envía la solicitud
|
El observador detecta configuración de aprobación automática
|
Estado: Aprobada inmediatamente
(used_days aumenta)
No se envía notificación al gerente
Configuración del Flujo de Aprobación
Navegue a Settings > HRM Configuration > Leave Management para configurar el flujo:
| Ajuste | Opciones | Predeterminado |
|---|---|---|
| Flujo de Aprobación | Nivel Único / Múltiples Niveles / Aprobación Auto | Nivel Único |
| Tipos con Aprobación Automática | Seleccione tipos de permiso específicos | Ninguno |
Aprobar una Solicitud de Permiso
Requiere el permiso approve leave requests.
- Navegue a Leave Requests o abra desde la tarjeta del panel de solicitudes pendientes.
- Seleccione una o más solicitudes pendientes.
- Haga clic en la acción Approve.
- Opcionalmente añada Notas del Administrador.
- Confirme.
Qué sucede:
- El estado cambia a Aprobada
approved_byse establece al usuario actualapproved_atse establece a la marca de tiempo actual- Saldo de permisos:
pending_daysdisminuye,used_daysaumenta - El empleado recibe una notificación
Rechazar una Solicitud de Permiso
Requiere el permiso approve leave requests.
- Seleccione una o más solicitudes pendientes.
- Haga clic en la acción Reject.
- Ingrese un Motivo de Rechazo (obligatorio).
- Opcionalmente añada Notas del Administrador.
- Confirme.
Qué sucede:
- El estado cambia a Rechazada
rejection_reasonse registra y es visible para el empleado- Saldo de permisos:
pending_daysdisminuye - El empleado recibe una notificación
Cancelar una Solicitud de Permiso
Requiere el permiso cancel leave requests. Tanto empleados como administradores pueden cancelar solicitudes.
- Seleccione una solicitud pendiente o aprobada.
- Haga clic en la acción Cancel.
- Confirme.
Qué sucede:
- El estado cambia a Cancelada
- Si la solicitud estaba pendiente:
pending_daysdisminuye - Si la solicitud estaba aprobada:
used_daysdisminuye (los días se devuelven)
Solo las solicitudes pendientes y aprobadas pueden cancelarse. Las solicitudes rechazadas y ya canceladas no pueden cancelarse.
Vistas de Tabla
La lista de solicitudes de permiso incluye cuatro vistas preconfiguradas:
| Vista | Filtro |
|---|---|
| Todas las Solicitudes | Sin filtro |
| Solicitudes Pendientes | Estado = Pendiente |
| Solicitudes Aprobadas | Estado = Aprobada |
| Solicitudes Rechazadas | Estado = Rechazada |
Filtros Disponibles
- Estado — Pendiente, Aprobada, Rechazada, Cancelada
- Fecha de Inicio — rango de fechas
- Fecha de Fin — rango de fechas
- Días — rango numérico
Notificaciones
El sistema envía notificaciones por correo electrónico en puntos clave del ciclo de vida de la solicitud:
Cuando se Envía una Solicitud
Se envía una notificación a todos los usuarios que tienen el permiso approve leave requests. El correo incluye:
- Nombre y email del empleado
- Tipo de permiso, fechas de inicio/fin, total de días
- Motivo (si se proporcionó)
- Enlace para ver la solicitud
Cuando Cambia el Estado de una Solicitud
El empleado recibe una notificación cuando su solicitud es aprobada, rechazada o cancelada. El correo incluye:
- Tipo de permiso, fechas y total de días
- Nuevo estado
- Motivo de rechazo (si fue rechazada)
- Nombre del aprobador
- Enlace para ver la solicitud
Las plantillas de correo se pueden personalizar desde Settings > Email Accounts > Templates.
Tarjetas del Panel
El sistema de gestión de permisos proporciona tres tarjetas de panel:
| Tarjeta | Tipo | Descripción |
|---|---|---|
| Solicitudes por Estado | Gráfico circular | Distribución de solicitudes por estados |
| Solicitudes por Tipo | Gráfico de barras | Conteo de solicitudes agrupadas por tipo de permiso |
| Solicitudes Pendientes | Tabla | Últimas 15 solicitudes pendientes que requieren acción |
Flujo de Aprobación y Rechazo
El flujo de aprobación de permisos controla cómo las solicitudes pasan del envío a la resolución. El módulo HRM admite tres modos de flujo, configurables desde la página de ajustes.
Modos de Flujo
Configure el modo de flujo en Settings > HRM Configuration > Leave Management.
Nivel Único (Predeterminado)
El flujo más simple. Un usuario autorizado revisa y aprueba o rechaza la solicitud.
Empleado -> Envía -> Gerente/RRHH Aprueba o Rechaza -> Listo
Cualquier usuario con el permiso approve leave requests puede aprobar o rechazar solicitudes.
Múltiples Niveles
Las solicitudes pasan por múltiples etapas de aprobación. Esto es adecuado para organizaciones que requieren tanto la aprobación del gerente directo como la del departamento de RRHH.
Empleado -> Envía -> Gerente Aprueba -> RRHH Aprueba -> Listo
Aprobación Automática
Todas las solicitudes de permiso se aprueban automáticamente al enviarlas. No se necesita revisión humana.
Empleado -> Envía -> Aprobada Automáticamente -> Listo
Puede combinar los modos de flujo con la configuración de Auto-Approve Leave Types para aprobar automáticamente tipos específicos (ej., Trabajo desde Casa) mientras requiere aprobación para otros (ej., Permiso Anual).
Aprobación Automática para Tipos Específicos
En lugar de aprobar automáticamente todas las solicitudes, puede seleccionar tipos específicos que omitan la aprobación:
- Vaya a Settings > HRM Configuration > Leave Management.
- En Auto-Approve Leave Types, seleccione los tipos (ej., Trabajo desde Casa, Compensatorio).
- Guarde.
Cuando un empleado envía una solicitud para un tipo de permiso con aprobación automática:
- El estado se establece inmediatamente como Aprobada.
- El saldo de permisos se actualiza (
used_daysaumenta directamente, sin paso porpending_days). - No se envía notificación a los gerentes.
- El empleado no recibe notificación de aprobación (ya que es instantánea).
Las solicitudes para tipos sin aprobación automática siguen el flujo estándar independientemente de esta configuración.
Actualizaciones de Saldo por Acción
| Acción | Días Pendientes | Días Usados | Días Disponibles |
|---|---|---|---|
| Enviar solicitud | +días | — | disminuye |
| Aprobar solicitud | -días | +días | sin cambio |
| Rechazar solicitud | -días | — | aumenta |
| Cancelar (estaba pendiente) | -días | — | aumenta |
| Cancelar (estaba aprobada) | — | -días | aumenta |
Quién Puede Aprobar
Las acciones de aprobación están controladas por el permiso approve leave requests. Este permiso debe otorgarse explícitamente a un rol — no está incluido en el rol Employee predeterminado.
Roles típicos que deberían tener este permiso:
- Gerente de RRHH
- Jefe de Departamento
- Líder de Equipo
- Cualquier rol de administrador
Los super administradores siempre pueden aprobar solicitudes (omitido mediante Gate::before).
Motivos de Rechazo
Al rechazar una solicitud de permiso, se requiere un Motivo de Rechazo. Este motivo:
- Se almacena en el registro de la solicitud
- Es visible para el empleado en su vista detallada de solicitudes
- Se incluye en el correo de notificación de cambio de estado
Los administradores también pueden añadir Notas del Administrador durante la aprobación o rechazo. Las notas del administrador solo son visibles para otros administradores, nunca para el empleado.
Cancelar una Solicitud de Permiso
Los empleados y administradores pueden cancelar solicitudes de permiso que estén en estado Pendiente o Aprobada. La cancelación restaura los días consumidos o reservados al saldo del empleado.
Quién Puede Cancelar
La cancelación requiere el permiso cancel leave requests. Por defecto, los empleados tienen este permiso y pueden cancelar sus propias solicitudes.
| Usuario | Puede Cancelar Propias | Puede Cancelar de Otros |
|---|---|---|
| Empleado | Sí (con permiso) | No (el alcance de datos impide ver a otros) |
| Administrador | Sí | Sí (si tiene el permiso) |
| Super Admin | Sí | Sí (omite todas las verificaciones) |
Cómo Cancelar
- Navegue a Leave Requests.
- Encuentre la solicitud a cancelar (debe estar Pendiente o Aprobada).
- Haga clic en la acción Cancel Leave (mostrada en línea en la columna de acciones).
- Confirme la cancelación.
Qué Sucede al Cancelar
Cancelar una Solicitud Pendiente
Antes: pending_days = 5, used_days = 10, available_days = 3 Cancelar solicitud pendiente de 2 días Después: pending_days = 3, used_days = 10, available_days = 5
pending_daysdisminuye por los días de la solicitudavailable_daysaumenta correspondientemente- El estado de la solicitud cambia a Cancelada
Cancelar una Solicitud Aprobada
Antes: pending_days = 3, used_days = 12, available_days = 3 Cancelar solicitud aprobada de 2 días Después: pending_days = 3, used_days = 10, available_days = 5
used_daysdisminuye por los días de la solicitudavailable_daysaumenta correspondientemente- El estado de la solicitud cambia a Cancelada
Restricciones
- Las solicitudes rechazadas no pueden cancelarse (ya están resueltas).
- Las solicitudes ya canceladas no pueden cancelarse de nuevo.
- El botón de Cancelar solo aparece para solicitudes en estado Pendiente o Aprobada.
Validación de Superposición
El módulo HRM evita que los empleados envíen solicitudes de permiso que se superpongan con sus solicitudes aprobadas o pendientes existentes. Esto garantiza un seguimiento preciso de permisos y previene la doble reserva de tiempo libre.
Cómo Funciona
Cuando se crea o actualiza una solicitud de permiso, el sistema verifica rangos de fechas superpuestos:
- Consulta todas las solicitudes de permiso del mismo empleado.
- Filtra solo las solicitudes aprobadas y pendientes (las rechazadas y canceladas se ignoran).
- Al editar, excluye la solicitud actual de la verificación.
- Prueba la superposición usando la fórmula:
existing_start <= new_end AND new_start <= existing_end.
Si se encuentra una superposición, la solicitud se rechaza con un error de validación.
Ejemplos
Bloqueada (Superposición)
| Solicitud Existente | Nueva Solicitud | Resultado |
|---|---|---|
| Ene 10–12 (Aprobada) | Ene 11–14 | Bloqueada — se superpone en Ene 11–12 |
| Ene 15–15 (Pendiente) | Ene 15–15 | Bloqueada — misma fecha exacta |
| Ene 1–31 (Aprobada) | Ene 10–10 | Bloqueada — contenida dentro del rango existente |
Permitida (Sin Superposición)
| Solicitud Existente | Nueva Solicitud | Resultado |
|---|---|---|
| Ene 10–12 (Aprobada) | Ene 13–15 | Permitida — adyacente pero sin superposición |
| Ene 10–12 (Rechazada) | Ene 10–12 | Permitida — las solicitudes rechazadas se ignoran |
| Ene 10–12 (Cancelada) | Ene 10–12 | Permitida — las solicitudes canceladas se ignoran |
Superposición entre Tipos
La validación de superposición aplica a todos los tipos de permiso. Un empleado no puede tener solicitudes superpuestas de Permiso Anual y Permiso por Enfermedad — las fechas no deben entrar en conflicto independientemente del tipo de permiso.
Arrastre de Permisos
El Arrastre de Permisos permite que los días de permiso no utilizados de un año fiscal se trasladen al siguiente. Esta función es configurable tanto a nivel global (ajustes) como a nivel individual de tipo de permiso.
Cómo Funciona el Arrastre
Al final de cada año fiscal, el sistema procesa el arrastre para todos los empleados:
- Para cada saldo de permisos del empleado del año que termina:
- Verifica si el tipo de permiso tiene Arrastre habilitado.
- Calcula los días no utilizados:
total_days - used_days - pending_days. - Aplica el tope de arrastre (el menor entre los Máx. Días de Arrastre del tipo de permiso y la configuración global de Máximo de Días de Arrastre).
- Crea o actualiza el saldo del año siguiente con los Días Arrastrados.
- Los días arrastrados tienen un vencimiento basado en la configuración de Vencimiento del Arrastre.
Configuración
Ajustes Globales
Navegue a Settings > HRM Configuration > Leave Management:
| Ajuste | Predeterminado | Descripción |
|---|---|---|
| Arrastre Habilitado | Sí | Interruptor principal para la función de arrastre |
| Máximo de Días de Arrastre | 10 | Tope global de días arrastrados en todos los tipos de permiso |
| Vencimiento del Arrastre (meses) | 3 | Los días arrastrados vencen después de estos meses en el nuevo año fiscal |
Configuración por Tipo de Permiso
Cada tipo de permiso tiene su propia configuración de arrastre:
| Campo | Descripción |
|---|---|
| Arrastre | Habilitar/deshabilitar arrastre para este tipo específico |
| Máx. Días de Arrastre | Máximo de días que pueden arrastrarse para este tipo |
El tope efectivo de arrastre es el menor del límite del tipo de permiso y el límite global.
Ejemplo: El tipo de permiso permite 10 días de arrastre, pero el máximo global es 5. Solo 5 días se arrastrarán.
Procesamiento del Arrastre
El arrastre se procesa automáticamente mediante un comando programado que se ejecuta el primer día del mes de inicio del año fiscal:
php artisan hrm:process-leave-carryover
Vencimiento del Arrastre
Los días arrastrados no son permanentes — vencen después de un período configurable. Una vez vencidos, ya no se cuentan en el saldo disponible.