Skip to content

Plataforma técnica · Orchestrator

Tiempo Trabajado (services)

Orchestrator Remuneraciones Asistencia

El subdominio Tiempo Trabajado convierte la jornada pactada del contrato y los eventos del periodo (marcas, permisos, licencias, vacaciones, horas extra) en un resumen mensual que PayrollService consume para calcular sueldo proporcional, descuentos por ausencia y haberes variables.

VacationService tiene un rol especial: además de impactar la asistencia del mes consumido, materializa el devengo del feriado legal — un beneficio acumulable bajo NIC 19. La lectura contable está en accounting/remuneraciones/tiempo-trabajado.

ServicioResponsabilidadDoc
WorkingDayServiceCatálogo de jornadas: tipo, horas semanales, días laborales, horario y colación.
AttendanceServiceConsolidación mensual del periodo: grilla esperada, marcas, ausencias y horas extra.
PermissionServiceSolicitudes de permisos y licencias con tipo, aprobación y regla de pago.
VacationServiceSaldo de feriado legal, solicitudes, días hábiles y provisión por trabajador.
flowchart LR
  subgraph SVC["domain/"]
    WD["WorkingDayService<br/>(working_day/)"]
    ATT["AttendanceService<br/>(attendance/)"]
    PRM["PermissionService<br/>(permissions/)"]
    VAC["VacationService<br/>(vacations/)"]
  end

  subgraph TBL["Tablas tenant"]
    WD_T[("jornadas")]
    ATT_T[("asistencia_mensual")]
    PRM_T[("permisos")]
    VAC_T[("vacaciones")]
    SLD_T[("vacaciones_saldo")]
  end

  subgraph CTX["Contexto"]
    CON[("contratos")]
    CAL["calendario laboral"]
  end

  WD --> WD_T
  ATT --> ATT_T
  PRM --> PRM_T
  VAC --> VAC_T
  VAC --> SLD_T

  CON --> WD
  WD --> ATT
  CAL --> ATT
  PRM --> ATT
  VAC --> ATT
  ATT --> PAY["PayrollService"]

AttendanceService es el consolidador: lee jornada del contrato, aplica calendario, descuenta días por permisos y vacaciones aprobadas, suma horas extra autorizadas y deja el resumen listo para liquidar.

PatrónDónde
RepositoryCada service tiene su *Repository.ts.
State MachineEstados de permiso (PENDIENTE → APROBADO/RECHAZADO/CANCELADO) y de vacación (SOLICITADA → APROBADA/RECHAZADA → CONSUMIDA).
CalculatorVacationService calcula días hábiles excluyendo feriados y días no laborales según jornada.
AggregatorAttendanceService consolida múltiples fuentes (marcas, permisos, vacaciones, horas extra) en un único resumen del periodo.
  • Resumen cerrado antes de liquidar: AttendanceService mantiene estado EN_EDICION/APROBADO/CERRADO. PayrollService rechaza calcular liquidaciones definitivas si la asistencia del periodo no está aprobada.
  • Días hábiles: VacationService excluye feriados nacionales y días no laborales según la jornada del contrato; nunca asume 5 días/semana sin leer la jornada.
  • Licencia médica vs. permiso sin goce: tipos distintos en PermissionService. La regla de pago la define el catálogo de tipos, no el servicio.
  • Saldo de feriado: VacationService provisiona devengo mensual usando la base de remuneración vigente; no usa valor histórico.
ServiceQué consume
PayrollServiceLee resumen mensual aprobado de AttendanceService; aplica descuentos por ausencias sin goce, paga horas extra.
FiniquitoServiceLee saldo de feriado vigente para liquidar feriado legal y proporcional al término.