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.