Skip to content
GitHub

Diagramas de Remuneraciones

Modelos visuales que documentan la estructura de datos y los flujos de procesamiento del módulo de remuneraciones.


Estructura de datos central del módulo de remuneraciones.

erDiagram
    EMPLEADOS ||--o{ CONTRATOS : "tiene"
    CONTRATOS ||--o{ LIQUIDACIONES : "genera"
    
    LIQUIDACIONES ||--o{ LIQUIDACIONES_DETALLE : "contiene"
    
    CONCEPTOS_REMUNERACION ||--o{ LIQUIDACIONES_DETALLE : "define"
    
    PLAN_CONTABLE ||--o{ CONCEPTOS_REMUNERACION : "imputa_debe"
    PLAN_CONTABLE ||--o{ CONCEPTOS_REMUNERACION : "imputa_haber"

    EMPLEADOS ||--o{ ASISTENCIA : "registra"
    EMPLEADOS ||--o{ VACACIONES : "solicita"
    
    CONTRATOS }o--|| JORNADAS : "asigna"
    ASISTENCIA }o--|| JORNADAS : "cumple"

    LIQUIDACIONES {
        uuid id PK
        uuid empleado_id FK
        smallint ano
        smallint mes
        numeric total_liquido
        text estado
    }

    LIQUIDACIONES_DETALLE {
        uuid liquidacion_id PK
        int concepto_id PK
        numeric monto
    }

    CONCEPTOS_REMUNERACION {
        int id PK
        string codigo
        string cuenta_debe_codigo
        string cuenta_haber_codigo
    }
    
    ASISTENCIA {
        uuid empleado_id PK
        date fecha PK
        uuid jornada_id FK
        text estado_asistencia
        time hora_entrada
        time hora_salida
    }

  1. Trigger: API/Frontend solicita generar liquidación para empleado + período
  2. Fase Cálculo: fx_liquidacion_previa computa montos en memoria
  3. Fase Persistencia: sp_liquidacion_generar guarda header + detalles
  4. Retorno: ID de liquidación + resumen de totales
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#2a2a2a', 'primaryTextColor': '#e0e0e0', 'lineColor': '#10b981'}}}%%
sequenceDiagram
    participant FE as 🖥️ Frontend/API
    participant SP as ⚙️ sp_liquidacion_generar
    participant FX as 📊 fx_liquidacion_previa
    participant DB as 🗄️ PostgreSQL

    FE->>SP: Generar Liquidación (Mes X)
    
    rect rgba(16, 185, 129, 0.1)
    Note right of SP: 📐 Fase 1: Cálculo en Memoria
    SP->>FX: Calcular montos (sin guardar)
    FX->>FX: Cargar Contrato + Asistencia
    FX->>FX: Calcular Haberes
    FX->>FX: Calcular Descuentos Legales
    FX->>FX: Calcular Impuesto Único
    FX-->>SP: Retorna {Header, Detalles[]}
    end

    rect rgba(59, 130, 246, 0.1)
    Note right of SP: 💾 Fase 2: Persistencia
    SP->>DB: INSERT liquidaciones (Header)
    SP->>DB: DELETE liquidaciones_detalle (Limpieza)
    loop Para cada Concepto > 0
        SP->>DB: INSERT liquidaciones_detalle
    end
    end

    SP-->>FE: ✅ ID Liquidación + Resumen

Flujo de consolidación de aportes previsionales (post-liquidación).

graph TD
    subgraph Fuentes["📥 Fuentes de Datos"]
        LIQ[Liquidaciones Detalle]
        HON[Honorarios]
    end
    
    subgraph Orchestrator["🎯 Orchestrator Domain"]
        SVC(Previsions Service)
        MAP{Mapeo por<br/>Institución}
    end
    
    subgraph Destino["🗄️ Tabla Imposiciones"]
        AFP[AFP]
        SAL[ISAPRE/FONASA]
        MUT[MUTUAL]
        SII[SII - Impuesto]
        AFC[AFC]
    end
    
    LIQ -->|Agregación<br/>por Concepto| SVC
    HON -->|Agregación<br/>Retención| SVC
    
    SVC --> MAP
    
    MAP -->|Tipo: AFP| AFP
    MAP -->|Tipo: SALUD| SAL
    MAP -->|Tipo: MUTUAL| MUT
    MAP -->|Tipo: SII| SII
    MAP -->|Tipo: AFC| AFC
    
    classDef source fill:#f59e0b,stroke:#d97706,color:#000;
    classDef service fill:#3b82f6,stroke:#2563eb,color:#fff;
    classDef dest fill:#10b981,stroke:#059669,color:#fff;
    
    class LIQ,HON source;
    class SVC,MAP service;
    class AFP,SAL,MUT,SII,AFC dest;

SímboloSignificado
||--o\{Uno a muchos (obligatorio)
\}o--||Muchos a uno
||--o|Uno a uno opcional
PKPrimary Key
FKForeign Key