Ir al contenido principal

Cambio de Sistema Pensionario(Enviar solicitud cambio AFP (1)) - [store]

🧾 Descripción

Este servicio registra una solicitud de cambio de sistema pensionario para un empleado, validando previamente:

  • Que el empleado exista.

  • Que el sistema pensionario seleccionado sea válido (ONP o AFP).

  • Que el tipo de AFP sea correcto cuando corresponda.

  • Que no se intente cambiar al mismo sistema actual.

  • Regla especial: si el empleado está en ONP, solo puede migrar a AFP Integra.

  • Que no exista un documento previo en estado “Borrador”.

  • Validación de estructura del CUSPP cuando aplica.

El servicio crea un nuevo documento en el ERP: Solicitud de Cambio de Sistema Pensionario


🚀 Endpoint

POST /cambio-sistema-pensionario/store


🔐 Seguridad

  • Requiere autenticación interna vía ServiceErp().

  • Solo accesible desde el backend con credenciales del ERP.


🧠 Flujo del Servicio (resumen real)

1. Validación de parámetros

El servicio valida:

  • empleado obligatorio.

  • sistema_pensionario debe ser AFP u ONP.

  • Si es AFP → validar AFP válida.

  • tipo_cambio debe estar dentro de:

    • "ENTRE AFP"

    • "DE ONP A AFP"

    • "DE AFP A ONP"

2. Trae los datos del empleado


GET Employee/{empleado}

Si el empleado no existe → error.

3. Determina si el cambio es permitido

Reglas del negocio:

  • No puede cambiar al mismo sistema.

  • Si está en ONP, solo puede pasar a AFP Integra.

  • Cuando el cambio involucra AFP, se valida el CUSPP:

    • Longitud 12

    • Primeros 6 caracteres numéricos

    • Último caracter numérico

4. Verifica si ya existe una solicitud "Borrador"

Consulta a la base ERP:

SELECT name FROM `tabSolicitud de Cambio de Sistema Pensionario` WHERE id_empleado = <empleado> AND docstatus = 0

Si existe una, retorna error.

5. Crea la solicitud de cambio

POST resource/Solicitud de Cambio de Sistema Pensionario { "id_empleado": <empleado>, "sistema_pensionario": "AFP"|"ONP", "tipo_de_afp": "...", "tipo_cambio": "...", "cuspp": "..." // cuando aplica }


📥 Request Body (ejemplo)

{ "empleado": "EMP-0001", "sistema_pensionario": "AFP", "tipo_afp": "AFP Integra", "cuspp": "123456789012", "tipo_cambio": "DE ONP A AFP" }


📤 Response 200 – Ejemplo

✔ Cambio enviado correctamente

{ "valor": true, "msn": "Solicitud de cambio de sistema pensionario enviada" }

❌ Tipo de cambio inválido

{ "valor": false, "msn": "La opción del tipo de cambio no es una opción valida (\"ENTRE AFP\",\"DE ONP A AFP\",\"DE AFP A ONP\")" }

❌ Ya existe solicitud en borrador

{ "valor": false, "msn": "Ya cuenta con una solicitud en Borrador pendiente de validar" }

❌ No puede cambiar al mismo sistema

{ "valor": false, "msn": "No puede hacer el cambio al mismo sistema pensionario" }

❌ Error al crear solicitud

{ "valor": false, "msn": "Ocurrió un error al crear la solicitud de cambio de sistema pensionario", "error": { ... } }


📚 Validaciones importantes del servicio

✔ Validación de CUSPP

  • Debe medir 12 caracteres.

  • Primeros 6 numéricos.

  • Último carácter numérico.

✔ Validación de sistema pensionario

  • Solo AFP o ONP.

  • Tipos válidos AFP:
    "AFP Habitat","AFP Profuturo","AFP Prima","AFP Integra".

✔ Regla especial ONP → AFP

Si el empleado está en ONP, solo puede migrar a AFP Integra:

if($employee["response"]["fondo_de_pensiones"] == "ONP" && $sistema_pensionario == "AFP" && $tipo_afp != "AFP Integra")


🗃 Lógica en pseudo-código

validar parámetros employee = GET Employee/{empleado} si no existe -> error si cambio no permitido -> error buscar solicitudes en Borrador para el empleado si existe -> error validar CUSPP si aplica crear documento: POST Solicitud de Cambio de Sistema Pensionario retornar éxito