Saltar a contenido

RF-007 — Financiación: simulador de cuotas y solicitud de crédito

Estado Implementado, con dependencia de un endpoint ausente en el backend
Tipo Cálculo propio + formulario configurado desde el CMS
Ubicación src/modules/credit-form/ · src/lib/providers/recaptcha-provider.tsx · app/api/credit-form/route.ts
Depende de RF-000 · RF-001

Requisito

Informar al cliente, sobre el precio del producto, cuánto pagaría en cuotas para cada plazo disponible, con el total financiado y el recargo resultante; y permitirle enviar una solicitud de crédito desde la ficha, con un formulario configurable desde el CMS y protegido contra envíos automatizados.

Solución adoptada

Resolver la simulación en el navegador con una tabla de factores por plazo, y tratar la solicitud como un envío de formulario cuya definición y destinatarios provienen del CMS, con verificación antibot previa al envío.

flowchart TD
    P[Precio del producto] --> V{¿≥ 1.000.000 Gs?}
    V -->|no| X[Sin financiación]
    V -->|sí| C["cuota = (precio / factor) / meses<br/>redondeada al millar"]
    C --> T[Total financiado y % de recargo]
    F[Formulario del CMS] --> M[Modal de solicitud]
    M --> R[reCAPTCHA v3 · acción credit_request]
    R --> B[POST /store/credit-request · backend]

Reglas de cálculo

Plazo Factor
3 meses 0,916
6 meses 0,858
10 meses 0,788
12 meses 0,756
15 meses 0,725
18 meses 0,668
24 meses 0,593
  • Calcular la cuota como (precio / factor) / meses y redondearla al millar más cercano.
  • Exigir un precio mínimo de 1.000.000 Gs: por debajo, no se ofrece financiación.
  • Derivar el total financiado como cuota por cantidad de meses, y el recargo como su diferencia porcentual contra el precio.
  • Expresar los importes en guaraníes, sin decimales.

Solicitud de crédito

Función Detalle
Definición del formulario Proviene del CMS (getCreditFormSettings(), getPayloadForm()), incluidos etiquetas, campos y mensaje de confirmación
Proxy de servidor app/api/credit-form/route.ts expone el formulario al navegador sin revelar credenciales del CMS
Verificación antibot reCAPTCHA v3 montado en el layout raíz; se obtiene un token con la acción credit_request antes de enviar
Envío POST /store/credit-request del backend, con los datos del formulario, la configuración de correo y el token

Criterios de aceptación

# Criterio
1 Exhibir la cuota de cada plazo disponible sobre el precio del producto
2 Omitir la financiación cuando el precio es inferior al mínimo
3 Informar total financiado y porcentaje de recargo por plazo
4 Abrir el formulario con los campos definidos en el CMS y enviarlo con verificación antibot
5 Exhibir el mensaje de confirmación configurado tras un envío exitoso
6 No exponer credenciales del CMS al navegador

Limitaciones conocidas

  • El endpoint destino no existe en el backend relevado. La solicitud se envía a POST /store/credit-request, ruta que no está presente en el repositorio del backend —ni en las ramas publicadas ni en la rama de desarrollo—. Corresponde confirmar si vive en otro despliegue o si la funcionalidad quedó incompleta de ese lado.
  • Enviar desde el navegador la configuración de destinatarios del correo —to, cc, bcc, replyTo y asunto— tomada del CMS: el backend debe validarla contra su propia configuración y no confiar en el valor recibido.
  • Fijar los factores y el monto mínimo en el código: un cambio comercial exige desplegar.
  • Registrar por consola el contenido completo del envío, incluidos los datos personales del solicitante.