Skip to content
GitHub

Vacation Service

El VacationService administra solicitudes de vacaciones, cálculo de días hábiles y control de saldos por empleado.

Archivo: src/domain/vacations/VacationService.ts

MétodoDescripción
findById(tenantDb, id)Obtiene solicitud por ID
findAll(tenantDb, filter)Lista solicitudes con filtros
findRecent(tenantDb)Últimas solicitudes
getBalances(tenantDb, filter)Saldos de vacaciones por empleado
create(tenantDb, userId, data)Crea nueva solicitud
update(tenantDb, userId, id, data)Actualiza solicitud
delete(tenantDb, id)Elimina solicitud

El servicio calcula automáticamente los días hábiles entre dos fechas:

  • Excluye sábados y domingos.
  • Excluye feriados de la tabla parametros.feriados.
  • empleado_id, fecha_inicio, fecha_fin son obligatorios.
  • fecha_fin >= fecha_inicio.
  • Estados válidos: PENDIENTE, APROBADA, RECHAZADA, ANULADA.
  • Constraint de exclusión: No permite solapamiento con otra solicitud APROBADA.
import { VacationService } from '@/domain/vacations/VacationService';
// Crear solicitud (días hábiles calculados automáticamente)
await VacationService.create('tenant_db', 'user-123', {
empleado_id: 'emp-uuid',
fecha_inicio: '2025-02-01',
fecha_fin: '2025-02-15',
estado_solicitud: 'PENDIENTE',
comentario: 'Vacaciones de verano'
});
// Obtener saldos
const { rows } = await VacationService.getBalances('tenant_db', {});
  • VacationRepository: Acceso a datos de vacaciones y feriados.