Skip to content
GitHub

Generación de Imposiciones

El proceso de Generación de Imposiciones es una etapa posterior al cálculo de remuneraciones. Su objetivo es consolidar los montos individuales calculados en las liquidaciones y agruparlos por institución.

Migración 2025-12: Lógica migrada a Servicio de Dominio en Orchestrator (PrevisionsService).

La consolidación se realiza en 6 bloques principales. Solo se consideran liquidaciones en estado CALCULADA, APROBADA o PAGADA.

  1. AFP Obligatorio: Agrupa por AFP el total descontado (10% + Comisión). Concepto DESC-001.

  2. Salud:

    • Agrupa por ISAPRE (Concepto DESC-002).
    • Si no tiene Isapre, consolida todo bajo FONASA.
  3. Seguro de Cesantía: Agrupa el 0.6% de cargo trabajador bajo la entidad AFP (visual) o AFC.

El proceso es Idempotente y transaccional.

sequenceDiagram
    participant API as Controller
    participant Service as PrevisionsService
    participant Repo as PrevisionsRepository
    participant DB as PostgreSQL

    API->>Service: generate(year, month)

    rect rgba(0, 0, 0, 0.1)
    note right of Service: 1. Agregación (Read-Only)
    Service->>Repo: getAFPWorkerAggregates()
    Repo->>DB: SELECT SUM(...) FROM liquidaciones_detalle
    DB-->>Repo: Totales AFP
    Service->>Repo: getHealthWorkerAggregates()
    Repo-->>Service: Totales ISAPRE/FONASA
    end

    rect rgba(0, 0, 0, 0.1)
    note right of Service: 2. Persistencia (Transactional)
    Service->>Repo: transactionalReplace(Entity[])
    Repo->>DB: BEGIN
    Repo->>DB: DELETE FROM imposiciones WHERE mes=X
    Repo->>DB: INSERT INTO imposiciones (Batch)
    Repo->>DB: COMMIT
    end

    Service-->>API: Resultado (Rows created)