Skip to content

Plataforma técnica · Orchestrator

AFP Service

Remuneraciones Afp Regimen Previsional

AfpService es un lector puro del catálogo de administradoras de fondos de pensiones. Mantiene las AFP del tenant con su tasa_comision (comisión administradora variable por institución) y su tasa_seguro_invalidez (SIS, aporte de cargo del empleador). El service no calcula descuentos: PayrollService lee estas tasas vigentes al armar el contexto de la liquidación.

  • Directoryorchestrator/src/domain/afp/
    • AfpService.ts
    • AfpRepository.ts

Tabla: remuneraciones.afp.

MétodoFirmaResultado
findAll(ctx) => Promise<Afp[]>Lista solo activas. Ordenado por nombre.
findById(ctx, id) => Promise<Afp | null>Incluye razon_social, tasa_comision, tasa_seguro_invalidez.
getCatalog(ctx) => Promise<Afp[]>Lista completa (activas e inactivas). Ordenado por codigo.
interface Afp {
id: string;
codigo: string; // uppercase
nombre: string;
razon_social?: string;
tasa_comision?: number; // % adicional al 10% obligatorio
tasa_seguro_invalidez?: number; // SIS — aporte del empleador
activa?: boolean;
}

findAll solo devuelve AFP activas, normaliza codigo a uppercase y completa activa = true si está NULL:

SELECT id::text, UPPER(codigo) AS codigo, nombre, COALESCE(activa, true) AS activa
FROM remuneraciones.afp
WHERE COALESCE(activa, true) = true
ORDER BY nombre;

getCatalog devuelve todas (sin filtrar por activa), útil para selectores administrativos que muestran inactivas como deshabilitadas.

findById es la única consulta que trae las tasas — porque el caller debe haber identificado la AFP del trabajador antes de necesitarlas.

ReglaDetalle
Cotización obligatoria10% del imponible. No vive en el catálogo: es constante legal aplicada por PayrollService.
Comisión administradoraVaría por AFP y por periodo. tasa_comision se lee al momento del cálculo.
SISAporte del empleador. tasa_seguro_invalidez se aplica como gasto patronal en PayrollEngine.
VigenciaEste catálogo no implementa vigente_desde/hasta propio: la AFP en sí es estable, lo que varía son las tasas — y se mantienen actualizadas vía un proceso administrativo externo. Si el sistema requiere histórico de tasas, debería incorporarse una tabla afp_tasas_vigentes.
ServiceCómo consume
ContractServicegetEmployeeData hace LEFT JOIN remuneraciones.afp para incluir afp_nombre en el contexto del PDF.
PayrollService (vía PayrollInputBuilder)Lee tasa_comision para descontar comisión adicional al trabajador y tasa_seguro_invalidez como gasto patronal.
PrevisionsServiceAgrupa montos calculados por afp_id para la planilla Previred.