Generación de Liquidaciones
El proceso de Generación de Liquidaciones es el evento mensual principal del sistema. Transforma los datos contractuales y de asistencia en documentos legales de pago persistidos.
Arquitectura del Proceso
Section titled “Arquitectura del Proceso”El PayrollService orquesta la generación siguiendo un ciclo Fetch → Calculate → Persist.
- Fetch (Obtención de Contexto): El
PayrollRepositoryejecuta queries paralelas para obtener: - Contrato Vigente y Empleado. - Resumen de Asistencia del Mes. - Indicadores Económicos (UF, UTM) y Tasas (AFP, Impuesto). 2. Calculate (Motor Puro): Se transforman los datos a unPayrollInputnormalizado y se invoca al PayrollEngine (Sin efectos secundarios). 3. Persist (Persistencia): Si no es un Dry Run, el resultado se guarda transaccionalmente: - Se crea cabecera enremuneraciones.liquidaciones. - Se insertan detalles enremuneraciones.liquidaciones_detalle.
Flujo de Código
Section titled “Flujo de Código”sequenceDiagram
participant API
participant Service as PayrollService
participant Repo as PayrollRepository
participant Engine as PayrollEngine
participant DB
API->>Service: generatePayroll(contractId, mes)
Service->>Repo: getPayrollContext()
Repo-->>Service: {Contrato, Asistencia, KPIs}
Service->>Service: mapContextToInput()
Service->>Engine: calculate(Input)
Engine-->>Service: Result (JSON)
alt is Dry Run?
Service-->>API: Retorna Preview (Sin guardar)
else is Real
Service->>Repo: savePayroll(Result)
Repo->>DB: INSERT liquidaciones...
Service-->>API: Retorna ID + Estado
end
Referencia de Código
Section titled “Referencia de Código”| Componente | Archivo | Responsabilidad |
| :-------------- | :--------------------- | :---------------------------------------------------------------------------------- | --------------------- |
| Orquestador | PayrollService.ts | Ver Código | Coordina I/O y Motor. |
| Repositorio | PayrollRepository.ts | Ver Código | Queries SQL masivas. |