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.
Servicios
Section titled “Servicios”| Servicio | Responsabilidad | Doc |
|---|---|---|
WorkingDayService | Catálogo de jornadas: tipo, horas semanales, días laborales, horario y colación. | → |
AttendanceService | Consolidación mensual del periodo: grilla esperada, marcas, ausencias y horas extra. | → |
PermissionService | Solicitudes de permisos y licencias con tipo, aprobación y regla de pago. | → |
VacationService | Saldo de feriado legal, solicitudes, días hábiles y provisión por trabajador. | → |
Mapa de dependencias
Section titled “Mapa de dependencias”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.
Patrones aplicados
Section titled “Patrones aplicados”| Patrón | Dónde |
|---|---|
| Repository | Cada service tiene su *Repository.ts. |
| State Machine | Estados de permiso (PENDIENTE → APROBADO/RECHAZADO/CANCELADO) y de vacación (SOLICITADA → APROBADA/RECHAZADA → CONSUMIDA). |
| Calculator | VacationService calcula días hábiles excluyendo feriados y días no laborales según jornada. |
| Aggregator | AttendanceService consolida múltiples fuentes (marcas, permisos, vacaciones, horas extra) en un único resumen del periodo. |
Reglas críticas
Section titled “Reglas críticas”- Resumen cerrado antes de liquidar:
AttendanceServicemantiene estadoEN_EDICION/APROBADO/CERRADO.PayrollServicerechaza calcular liquidaciones definitivas si la asistencia del periodo no está aprobada. - Días hábiles:
VacationServiceexcluye 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:
VacationServiceprovisiona devengo mensual usando la base de remuneración vigente; no usa valor histórico.
Consumidores downstream
Section titled “Consumidores downstream”| Service | Qué consume |
|---|---|
PayrollService | Lee resumen mensual aprobado de AttendanceService; aplica descuentos por ausencias sin goce, paga horas extra. |
FiniquitoService | Lee saldo de feriado vigente para liquidar feriado legal y proporcional al término. |