Skip to content

Plataforma técnica · Orchestrator

Finiquitos (services)

Orchestrator Finiquitos Indemnizacion

El subdominio Finiquitos cierra el ciclo laboral del trabajador. FiniquitoService orquesta cálculo (vacaciones pendientes + indemnizaciones según causal + descuentos), genera el documento HTML/PDF y persiste el resultado para alimentar pagos y trazabilidad anual.

Es estructuralmente paralelo a payroll: tiene Calculator separado del Service, InputBuilder que arma contexto desde otros services, HtmlGenerator y Repository. La lectura contable equivalente vive en accounting/remuneraciones/finiquitos.

ServicioResponsabilidadDoc
FiniquitoServiceOrquesta cálculo de causal, indemnizaciones, feriado pendiente, descuentos y emisión del documento final.
flowchart LR
  subgraph FIN["domain/finiquitos/"]
    FS["FiniquitoService<br/>(orquestación)"]
    FC["FiniquitoCalculator<br/>(cálculo puro)"]
    FIB["FiniquitoInputBuilder<br/>(contexto)"]
    FHG["FiniquitoHtmlGenerator<br/>(documento)"]
    FF["FiniquitoFormatters<br/>(presentación)"]
    FR["FiniquitoRepository<br/>(persistencia)"]
  end

  subgraph IN["Entrada"]
    CON["ContractService"]
    EMP["EmployeeService"]
    PAY["PayrollService<br/>(últimas liquidaciones)"]
    VAC["VacationService<br/>(saldo de feriado)"]
    PARAM["parámetros legales<br/>(tope UF indemnización)"]
  end

  CON & EMP & PAY & VAC & PARAM --> FIB
  FIB --> FC
  FS --> FC
  FC --> FR
  FR --> FHG
  FHG --> FF
PatrónDónde
StrategyFiniquitoCalculator aplica reglas distintas según causal_termino (arts. 159, 160, 161 del Código del Trabajo).
BuilderFiniquitoInputBuilder arma el contexto desde múltiples services antes de invocar al calculator.
RepositoryFiniquitoRepository separa SQL del cálculo.
Template Method (HTML)FiniquitoHtmlGenerator + FiniquitoFormatters arman el documento final.
  • Causal define indemnización: art. 159 (mutuo acuerdo/renuncia/vencimiento plazo) y art. 160 (caducidad) → sin indemnización por años de servicio. Art. 161 (necesidades de la empresa, desahucio) → indemnización con tope 11 años.
  • Años de servicio: mes superior a 15 días cuenta como año completo (art. 163).
  • Tope UF indemnización: indemnización por años de servicio dentro del tope legal no tributa con impuesto único; el exceso sí.
  • Aviso previo: si la causal art. 161 se aplica sin 30 días de aviso, paga sustitutiva (un mes de remuneración).
  • Feriado legal y proporcional: siempre se paga (incluso causales sin indemnización). Feriado proporcional se calcula desde el último aniversario.
  • Simulación vs. definitivo: FiniquitoService.simular no persiste obligación; sólo el método definitivo emite el documento y registra el pasivo.
EventoTriggerPayload
finiquito:emitidoFiniquitoService.emitir (post-COMMIT){ finiquitoId, empleadoId, contratoId, fechaTermino, total, causal }
finiquito:anuladoFiniquitoService.anular{ finiquitoId, motivo }
ServiceQué consume
EmployeeServiceMarca al trabajador como FINIQUITADO con la fecha de término.
ContractServiceCierra el contrato con motivo_termino y estado TERMINADO.
VacationServiceLiquida el saldo de feriado residual y cierra la provisión del trabajador.
DJ1887ServiceIncluye indemnizaciones pagadas en la declaración anual.