Skip to content

Plataforma técnica · Sevastopol

Contratos APV en Sevastopol

Islands Remuneraciones Apv

APVContractsViewIsland registra el ahorro previsional voluntario que un trabajador adscribe a una AFP sobre un contrato concreto. APV es opcional, condicional al contrato y con vigencia propia — un trabajador puede tener APV en un contrato y no en otro, y cambiar el régimen a lo largo de la relación.

La adscripción aquí registrada condiciona el descuento que PayrollService aplica al cálculo mensual.

DecisiónMotivo
Selección guiada empleado → contrato → AFPEl alta exige los tres antes de habilitar campos económicos. Filtrar contratos por empleado evita asignar APV a un contrato ajeno.
Catálogo AFP con fallback de 3 endpointsloadAfpCatalogSafe() prueba /api/apv_contracts?scope=afps, /api/afp y /api/remuneraciones/afp en orden. Mantiene compatibilidad con entornos donde el endpoint canónico cambia.
Régimen A vs B como decisión explícitaA: descuento sobre imponible bruto. B: descuento líquido (tras descontar cotización obligatoria). Cambian el cálculo — la UI obliga a elegir uno.
Periodicidad mensual / anual / únicoEl motor de cálculo aplica el descuento sólo cuando corresponde según periodicidad.
monto_tipo UF/CLP/% + moneda derivadaSi el tipo es UF, la moneda se fuerza a UF y se marca read-only. Evita inconsistencias UF/CLP.
Descuento por planilla opcionalSi está marcado, el descuento se aplica vía liquidación; si no, queda como pago directo a la institución (no afecta nómina).
Stats por régimenConteo de regimenA y regimenB en el header para detectar concentración.
GrupoCampos esperados
AsociaciónEmpleado, contrato, AFP.
RégimenA o B.
PeriodicidadMENSUAL / ANUAL / UNICO.
MontoTipo (UF/CLP/%), moneda, valor.
VigenciaDesde, hasta (opcional).
ModalidadDescuento por planilla sí/no.
Método + rutaUso
GET /api/apv_contracts?tenant_id=&limit=&activos=1Listado reciente.
GET /api/apv_contracts?tenant_id=&empleado_id=Filtra por empleado.
GET /api/apv_contracts?tenant_id=&contrato_id=Filtra por contrato.
POST /api/apv_contracts?tenant_id=Alta.
PUT /api/apv_contracts/:id?tenant_id=Edición.
DELETE /api/apv_contracts/:id?tenant_id=Eliminación.
GET /api/apv_contracts?scope=afps (fallback /api/afp, /api/remuneraciones/afp)Catálogo AFP.
GET /api/employees?tenant_id= · GET /api/contracts?empleado_id=&tenant_id=Catálogos del formulario.

AfpService expone el catálogo. El CRUD de contratos APV vive en el endpoint propio del Orchestrator dentro del dominio régimen previsional.