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.
Ubicación
Section titled “Ubicación”Directoryorchestrator/src/domain/afp/
- AfpService.ts
- AfpRepository.ts
Tabla: remuneraciones.afp.
API pública
Section titled “API pública”| Método | Firma | Resultado |
|---|---|---|
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;}SQL clave
Section titled “SQL clave”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 activaFROM remuneraciones.afpWHERE COALESCE(activa, true) = trueORDER 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.
Reglas críticas
Section titled “Reglas críticas”| Regla | Detalle |
|---|---|
| Cotización obligatoria | 10% del imponible. No vive en el catálogo: es constante legal aplicada por PayrollService. |
| Comisión administradora | Varía por AFP y por periodo. tasa_comision se lee al momento del cálculo. |
| SIS | Aporte del empleador. tasa_seguro_invalidez se aplica como gasto patronal en PayrollEngine. |
| Vigencia | Este 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. |
Consumidores
Section titled “Consumidores”| Service | Cómo consume |
|---|---|
ContractService | getEmployeeData 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. |
PrevisionsService | Agrupa montos calculados por afp_id para la planilla Previred. |