Detalle
| Manual de Usuario | Portal web de autogestión para los clientes finales de la financiera. Desde el navegador (PC o celular) el cliente se registra validando su identidad (KYC: e-mail, teléfono, selfie y DNI), inicia sesión, consulta sus préstamos, cuotas y vencimientos, solicita crédito contra su margen disponible y paga sus cuotas online con tarjeta (Pago360 / Mobbex) o con MercadoPago. |
|---|---|
Introducción
MisCreditos es la aplicación web que la financiera pone a disposición de sus clientes finales para gestionar sus préstamos por sí mismos, sin llamar ni acercarse a la sucursal. Es una aplicación ASP.NET MVC (.NET Framework 4.6.2) independiente del Back Office, que consume la misma base de datos y los mismos managers de negocio del ERP Plenario v14 (proyecto VPNET.WEB.MisCreditos).
Con su usuario y contraseña, el cliente puede:
- Ver el listado de sus préstamos/créditos con su estado (Vigente, Mora, Pendiente, Cancelado), cuotas pagas y saldo.
- Desplegar cada crédito para ver el detalle de cuotas y su estado (Pagada, Mora, Pendiente).
- Pagar una o varias cuotas online eligiendo el medio de pago habilitado.
- Ver sus vencimientos mensualizados y sus créditos pendientes de autorización.
- Consultar su margen disponible y solicitar una ampliación de ese margen.
- Solicitar un crédito / pagar con margen en un comercio a través de un QR.
- Ver y editar su perfil y cambiar su contraseña.
El alta del usuario web es de autogestión: el cliente se registra desde la propia web, pero sólo si su documento ya existe como cliente de la financiera. El registro exige un proceso de validación de identidad (KYC) por pasos.
Todo el alcance de datos se filtra automáticamente por el
Id_Clienteasociado al usuario logueado: un cliente nunca ve información de otro.
Acceso al módulo
El acceso es por navegador (Chrome, Edge, Firefox) con la dirección web que publique la financiera. La aplicación usa autenticación por Forms Authentication; cualquier URL protegida redirige a la pantalla de login ~/User/Login.
Para ingresar:
- Abrir la dirección del portal. Se redirige automáticamente a
/User/Login. - Escribir usuario y contraseña.
- Tocar Ingresar.
Debajo del login hay dos enlaces: ¿Olvidaste tu contraseña? (/User/ForgotPassword) y Registra nuevo usuario (/User/Register).
Si el cliente todavía no tiene usuario, debe crearlo con el flujo de Registro (ver Acciones disponibles → Registro con validación de identidad). El registro sólo prospera si el número de documento ya está cargado como cliente en el sistema.
La sesión dura por defecto 30 minutos (parámetro
Web.SessionTTL.Minutos, cookie con expiración deslizante). Al vencer, el portal vuelve a pedir login.
Pantalla principal
La pantalla principal es Inicio (Home/Index), titulada "Cuenta" / "Tus préstamos". Se sirve dentro del layout general (_Layout.cshtml), que aporta la barra superior con el logo y un menú lateral (sidebar) desplegable con el botón ☰.
El menú lateral contiene:
- Inicio (
Home/Index) — listado de créditos. - Mi Perfil (
Home/Perfil) — datos personales. - Salir (
User/LogOff) — cierre de sesión.
El cuerpo de Inicio muestra, de arriba hacia abajo:
| Bloque | Qué muestra | Visibilidad |
|---|---|---|
| Tu margen | Tarjeta con el margen/límite disponible del cliente (verde si es positivo, rojo si es negativo), con botón Comprar (QR) y botón Margen (solicitar ampliación). | Sólo si Web.Comerc.Dashboard.MostarMargen = 1. |
| Tus vencimientos mensualizados | Fila que despliega la deuda pendiente agrupada por Año/Mes, marcando mora. | Siempre. |
| Tus créditos pendientes de autorización | Fila que despliega las solicitudes aún sin crédito generado (en análisis). | Siempre. |
| Tus préstamos | Lista de créditos del cliente, uno por tarjeta. | Siempre. |
| Barra inferior de pago (QR) | Barra fija inferior con botón QR de compra y totalizador "A pagar". | El botón QR sólo si Web.Comerc.Dashboard.MostarBotonQR = 1. |
Cada tarjeta de crédito muestra: estado (con color: Mora=rojo, Vigente=verde, Pendiente=azul, otro=gris), entidad, progreso de cuotas ("Cuota X/N x $valor"), importe y fecha de operación. Al tocar la tarjeta se despliega el detalle de cuotas de ese crédito (carga vía AJAX).
Funcionalidades
El portal concentra estas funciones para el cliente final:
- Registro con validación de identidad (KYC) — onboarding multi-paso: verificación de e-mail, verificación de teléfono por SMS, captura y validación de selfie + DNI (frente y dorso), y alta de credenciales de usuario.
- Login / recuperación / cambio de contraseña — ingreso por Forms Auth, recupero por e-mail con enlace temporal, y cambio de contraseña desde el perfil.
- Consulta de créditos y cuotas — listado de préstamos, detalle de cuotas, vencimientos mensualizados y solicitudes pendientes de autorización.
- Pago de cuotas online — selección de cuotas contiguas, confirmación de importe y redirección al checkout del proveedor (Pago360, Mobbex o MercadoPago) según configuración.
- Solicitud de crédito / pago con margen (QR) — a partir de un QR de comercio se evalúa el algoritmo de crédito del cliente, se ofrecen planes de cuotas y se genera la solicitud/crédito.
- Solicitud de ampliación de margen — envío por e-mail al equipo de la financiera del pedido de más límite.
- Perfil — datos personales (nombre, e-mail, teléfono) y acceso a cambiar contraseña.
Nota: la pantalla de Inicio no tiene filtros de búsqueda tipo grilla; la información se organiza por bloques desplegables. Las consultas de detalle (cuotas, deuda mensual, pendientes) se cargan bajo demanda con llamadas AJAX a acciones [HttpGet] del HomeController.
Resultados
Las consultas de detalle devuelven JSON y se pintan como listas dentro de Inicio:
| Consulta (acción) | Devuelve | Campos principales |
|---|---|---|
Detalle de cuotas (IndexGetCaidaCuotas?NroCredito=) |
Lista de cuotas del crédito (CreditoCuotaModel). |
Nro cuota, vencimiento, fecha de cobro, importe, estado (Pagada / Mora / Pendiente), días de mora. |
Deuda mes x mes (IndexGetDeudaMesXMes) |
Deuda pendiente agrupada por mes (DeudaMesXMes). |
Año/Mes, cuotas del mes, saldo pendiente, marca de mora. |
Pendientes de autorización (IndexPendienteAutorizacion) |
Solicitudes sin crédito generado (SolicitudCreditoModel). |
Entidad, importe, fecha, valor de cuota final, plazo, estado (Análisis). |
Reglas de la lista de cuotas al pagar:
- Sólo se pueden marcar cuotas impagas (Pendiente o Mora); las Pagadas se muestran con tilde.
- La selección debe ser contigua desde la más antigua: no se puede marcar una cuota si la anterior pendiente/mora no está marcada, ni desmarcar una si hay posteriores marcadas.
- No se pueden mezclar cuotas de distintos créditos en un mismo pago; al marcar cuotas de un crédito se desmarcan las de los demás.
- El totalizador inferior ("A pagar: $…") suma las cuotas seleccionadas.
Acciones disponibles
| Acción | Descripción |
|---|---|
| Registrarse (KYC) | Alta de usuario web con validación de e-mail, teléfono, selfie y DNI. |
| Iniciar sesión | Login por usuario y contraseña. |
| Recuperar contraseña | Envío de enlace por e-mail para restablecerla. |
| Cambiar contraseña | Desde el perfil, con las reglas de complejidad. |
| Ver perfil | Consultar nombre, e-mail y teléfono. |
| Ver créditos y cuotas | Listar préstamos y desplegar su detalle de cuotas. |
| Pagar cuotas online | Seleccionar cuotas y pagar con el medio habilitado. |
| Solicitar ampliación de margen | Enviar por e-mail el pedido de más límite. |
| Solicitar crédito / pagar con margen (QR) | Evaluar algoritmo, elegir plan de cuotas y generar la solicitud. |
Registro con validación de identidad (KYC)
El registro (User/Register) es un asistente multi-paso definido por la sección StepConfiguration del web.config y construido por StepHelper.GetStepsJson. El orden y los botones de cada paso salen de esa configuración; el motor de pasos del lado cliente es step.onb.js (StepManager).
Pasos (según la configuración vigente):
- StepRegister — "Ingresá tus datos para el registro". El cliente ingresa número de documento (y sexo). Se llama
StepRegisterGetCliente(NroDoc, Sexo): si el documento no existe como cliente, se corta el registro con el mensaje del parámetroWeb.MisCreditos.Registro.NoCliente. Si existe, se arma unTickets_ClientesUsuarioscon los datos del cliente. Si el cliente ya tiene usuario, deriva a StepUserConfirmExist ("Cliente ya existe"). - StepValidEmail / StepValidEmailVerify / StepValidEmailConfirmacion — validación de e-mail.
StepValidEmailSendCodeMail(Email)genera un código de 4 dígitos, lo guarda en sesión (5 min de vigencia) y lo envía por correo (salvo modo testWeb.MisCreditos.OnBoarding.Mail.Test = 1).StepValidEmailVerifyCode(code)valida el código. Rechaza e-mails ya registrados por otro usuario. - StepValidPhone / StepValidPhoneVerify / StepValidPhoneConfirmacion — validación de teléfono por SMS.
StepValidPhoneSendCodePhone(Phone)genera y envía el código por SMS (Sms_Setup_Manager.SendSms, salvo modo testWeb.MisCreditos.OnBoarding.Sms.Test = 1);StepValidPhoneVerifyCode(code)lo valida. Rechaza teléfonos ya registrados. (En la configuración de ejemplo vigente los pasos de teléfono están comentados; verificar según elweb.configinstalado.) - StepValidImagen — validación de identidad (biometría/OCR). El cliente captura Selfie, DNI frente y DNI dorso con la cámara. Las librerías pesadas (TensorFlow / face-api / tesseract / scanner de DNI) se cargan bajo demanda (
window.cargarLibreriasIdentidad()), no al abrir la web. Parámetros:Web.MisCreditos.Registro.ValidarSelfie(selfie real),Web.MisCreditos.Registro.ValidarIdentidad(selfie vs. rostro del DNI),Web.MisCreditos.Registro.ValidarDniPDF417(lectura del PDF417 del dorso víaValidacionDni_Manager.Validacion_PDF417_Data) yWeb.MisCreditos.Registro.ValidacionIdentidad.Obligatoria(si 0, la validación no es obligatoria y la solicitud queda para control manual). La captura puede hacerse desde otro dispositivo (celular) mediante un QR y SignalR (FotoHub) — la foto tomada en el celular aparece automáticamente en la PC. - StepUser — "Especifica tus credenciales". El cliente define usuario y contraseña (mínimo 8 caracteres, con mayúscula, minúscula y número/símbolo).
StepSetUserrecibe los datos del usuario y las 3 imágenes (Selfie, DNI frente, DNI dorso), da de alta elTickets_ClientesUsuarios(activo yActivoWebClient = true) y guarda las imágenes en galería (File_Manager.GuardarArchivo, entidad CLI). Si el cliente está en gestión judicial / bloqueado / fallecido (ClienteValido), se registra pero se muestra el mensaje deWeb.MisCreditos.Registro.Cliente_GestionJudicial. - StepUserConfirm — "Cliente registrado". Confirmación final del alta.
Iniciar sesión
User/Login (POST, con antiforgery token). Valida credenciales con Seguridad_Usuarios_Manager.LoadByUserTicketCliente(usuario, clave). Si autentica, verifica que el cliente sea válido (ClienteValido: no judicial, no fallecido, no bloqueado); si no, muestra "Acceso denegado". Al aprobar, arma el ticket de Forms Auth (SessionHelper.SetFormsAuthenticationClienteTicket), registra el acceso (WEBClient_Log_Manager.Agregar_Log(..., "Login", ...)) y redirige a Home/Index.
Recuperar / cambiar contraseña
- Olvidé mi contraseña (
User/ForgotPassword): el cliente ingresa su e-mail; se genera un GUID temporal (5 min en sesión) y se envía un correo con enlace aUser/ChangedPassword(Seguridad_Usuarios_Manager.SendMailTicketUsuarioChangePassword).ChangedPasswordvalida el GUID (vigente/usado/vencido) y permite fijar la nueva clave (ChangePasswordGeneral). - Cambiar contraseña (
User/ResetPassword, requiere sesión): desde Mi Perfil → Cambiar Contraseña. Aplica las reglas de complejidad y llamaSeguridad_Usuarios_Manager.ChangePasswordGeneral(1, IdUsuario, password).
Ver créditos y cuotas
Pasos:
- En Inicio, mirar la lista Tus préstamos.
- Tocar una tarjeta de crédito: se cargan sus cuotas (
IndexGetCaidaCuotas) y se listan con estado y vencimiento. - Opcional: abrir Tus vencimientos mensualizados o Tus créditos pendientes de autorización para el resumen mensual o las solicitudes en análisis.
Pagar cuotas online
Pasos:
- Desplegar un crédito y marcar las cuotas a pagar (contiguas, del mismo crédito).
- Tocar Pagar en la barra inferior. Se abre la pantalla Confirmar Pago.
- Revisar el Importe total y, si se desea, ajustar el importe a pagar (no puede superar el total).
- Elegir el medio de pago con los botones:
- Pagar con [proveedor base] — la etiqueta muestra "Pagos360" o "Tarjetas" según
Web.Comerc.Dashboard.MetodoPago. - Pagar con MercadoPago — sólo siWeb.MisCreditos.MercadoPago.Habilitado = 1. - El portal llama a
Home/ProcesarPago(POST) y redirige al checkout del proveedor. Tras pagar, el proveedor devuelve al cliente a la pantalla de retorno correspondiente.
Ruteo del pago en ProcesarPago según model.Medio:
Medio == "MP"→ MercadoPago (complementario; se rutea antes que el proveedor base, sin importarWeb.Comerc.Dashboard.MetodoPago). Crea una preferencia (Rest_MercadoPago.CrearPreferenciaAsync) conexternal_reference = IdSolicitud,Nrocredito,IdsCuotas…,notification_urlarmada desdeBO.MercadoPago.WebHooks, y vigencia del link segúnWeb.MisCreditos.MercadoPago.Link.DiasVigencia(default 7 días; 0 = sin vencimiento). Incluye un guard anti doble pago por cuota (BuscarPagoActivoQueSolape): si ya hay un pago activo que solapa las mismas cuotas, no genera otro. Retorno del cliente:Home/PagoExitosoMercadoPago.MedioconWeb.Comerc.Dashboard.MetodoPago == "0"→ Pago360 (Pago360_Manager.CrearSolictudPagoYEjecutarChekot).Web.Comerc.Dashboard.MetodoPago == "1"→ Mobbex (Rest_Mobbex.Orden_PagoAsync), webhook desdeBO.Mobbex.Suscripcion.WebHooks, modo testWeb.CreditosOnline.Onboarding.Mobbex.Test. Retorno del cliente:Home/PagoExitosoMobbex.
La pantalla de retorno de MercadoPago (PagoExitosoMercadoPago.cshtml) interpreta el estado: aprobado (approved/success), en proceso (pending/in_process/in_mediation) o no completado, y muestra el ID de pago cuando corresponde. Advierte que la acreditación puede demorar unos minutos hasta que llegue el webhook.
Solicitar ampliación de margen
Desde la tarjeta de margen → botón Margen, se abre Home/SolicitarDisponible. El cliente escribe el motivo y envía; el POST manda un e-mail (Generic_Base_Manager.SendNewMail) a la casilla de Web.MisCreditos.SolicitudLimite.Email con asunto Web.MisCreditos.SolicitudLimite.Asunto (usa la plantilla Views\html\AmpliacionLimite.html si existe). No modifica el límite automáticamente: queda para revisión manual de la financiera.
Solicitar crédito / pagar con margen (QR)
Flujo iniciado por el escaneo de un QR de comercio (botón Comprar de la tarjeta de margen). Al leer el QR, Home/NuevaSolicitud (POST) recibe los datos del comercio/importe (QRClientModel) y abre "Pagar con margen". La vista se conecta por SignalR al host del comercio (json.UrlHost) para confirmar la vigencia del QR y notificar cada paso al comercio. Luego:
Home/ValidarAlgoritmoCliente(GET) evalúa el algoritmo de crédito del cliente (Algoritmos_Validaciones_Manager.Evaluar_Algoritmo, con datos de scoring). Según el estado del algoritmo se muestra "Pre-Aprobada", "Sin oferta", "Fallecido" o "Verifique DNI/sexo". Mensajes configurables:Web.MisCreditos.Onboarding.NoCliente,…SinOferta,…Fallecido.- Se ofrecen los planes de cuotas disponibles (
GetCuotas→Prestamos_Lineas_Manager.PrestamosLineas_GetCuotas+GetValorCuotaWEB); el cliente elige un plazo. Home/ProcesarOperacionSolicitud(POST) crea la solicitud (PrestamosSolicitudes_Manager.Save) en el estado inicial del flujo. Si el control digital es aprobado ("A") y hay límite disponible suficiente, genera el crédito automáticamente (Prestamos_Creditos_Manager.Generate_New_Credito) y avanza el flujo al estado final; si no, la solicitud queda pendiente de autorización manual y se disparan alertas/e-mails (Alertas_Manager.AlertaWeb, plantillasAvisoLimite.html/AvisoSolicitudFallo.html).
Ejemplo práctico
Querés pagar la cuota atrasada de tu préstamo con MercadoPago:
- Ingresás al portal con tu usuario y contraseña.
- En Inicio → Tus préstamos, tocás la tarjeta del crédito en Mora.
- Se despliegan las cuotas; marcás la cuota (o cuotas contiguas) que querés abonar. Abajo ves "A pagar: $…".
- Tocás Pagar → se abre Confirmar Pago. Verificás el importe.
- Tocás Pagar con MercadoPago. El portal genera la orden y te redirige al checkout de MercadoPago.
- Pagás en MercadoPago y volvés a MisCreditos, que muestra "Pago en proceso / recibido". En unos minutos, cuando MercadoPago confirma por webhook, la cuota queda marcada como cobrada.
Consejos útiles
- Para registrarte necesitás que tu documento ya esté cargado como cliente de la financiera; si no, el registro no avanza.
- Tené el celular a mano durante el registro: vas a recibir el código de e-mail y, si está activo, el de SMS, y podés capturar la selfie y el DNI desde el teléfono escaneando el QR.
- Para el DNI, girá el teléfono en horizontal, llená el recuadro con el documento y cuidá que el código del dorso se lea sin reflejos.
- Al pagar cuotas, seleccioná siempre desde la más antigua hacia adelante; el sistema no deja saltear cuotas ni mezclar créditos distintos en un mismo pago.
- El importe a pagar no puede superar el importe total de las cuotas seleccionadas.
- Después de pagar, no repitas la operación: la acreditación puede demorar unos minutos hasta que el proveedor confirma por webhook.
- La contraseña debe tener mínimo 8 caracteres con mayúscula, minúscula y número o símbolo.
- La sesión se cierra por inactividad (30 min por defecto); volvé a ingresar si te pide login.
Preguntas frecuentes
¿Cómo obtengo mi usuario para entrar?
Te registrás vos mismo desde el enlace "Registra nuevo usuario" del login. El sistema sólo te deja continuar si tu número de documento ya existe como cliente de la financiera. Durante el registro validás e-mail, teléfono e identidad (selfie + DNI) y definís tu usuario y contraseña.Olvidé mi contraseña, ¿qué hago?
En el login tocá "¿Olvidaste tu contraseña?", ingresá tu e-mail y vas a recibir un enlace para restablecerla. El enlace es temporal (vence a los 5 minutos).¿Qué medios de pago puedo usar para las cuotas?
Depende de la configuración de la financiera. El botón base paga con Pago360 o con tarjetas vía Mobbex (según `Web.Comerc.Dashboard.MetodoPago`), y si está habilitado (`Web.MisCreditos.MercadoPago.Habilitado`) también aparece "Pagar con MercadoPago".Pagué una cuota pero sigue figurando impaga, ¿pago de nuevo?
No. La acreditación no es instantánea: se confirma cuando el proveedor de pago avisa por webhook, lo que puede tardar unos minutos. En MercadoPago hay además un control que evita generar dos pagos para la misma cuota.¿Por qué mi solicitud de crédito quedó "pendiente de autorización"?
Cuando el algoritmo no aprueba automáticamente o no tenés límite/margen disponible suficiente, la solicitud entra en un proceso de análisis manual de la financiera. La vas a ver en "Tus créditos pendientes de autorización".No puedo terminar la validación de identidad, ¿qué reviso?
Usá buena luz, centrá el rostro en la selfie y llená el recuadro con el DNI (girado en horizontal), cuidando que el código del dorso se lea sin reflejos. La carga del módulo de identidad puede demorar la primera vez porque baja librerías pesadas. Si la validación no es obligatoria, la solicitud puede quedar igualmente para control manual.¿Cómo pido más margen disponible?
Desde la tarjeta de margen en Inicio, tocá "Margen", escribí el motivo y enviá. El pedido llega por e-mail al equipo de la financiera, que lo evalúa; el aumento no es automático.Permisos
- El acceso requiere un usuario de cliente web (
Tickets_ClientesUsuarios, conActivoWebClient = true) asociado a unId_Cliente. Ese usuario se crea por autogestión en el propio portal (Registro con KYC). [Authorize]protege todo elHomeController(créditos, pagos, perfil, solicitudes). Las acciones de login, registro y los pasos del onboarding son[AllowAnonymous]o anónimas por diseño (el cliente aún no está logueado).- Login por Forms Authentication (
loginUrl = ~/User/Login, timeout 30 min); el ticket guarda unExternalUsuarioserializado enUserData. La sesión también se respalda con Owin Cookie Authentication (ApplicationCookie, 30 min, expiración deslizante). - Alcance de datos: todas las consultas filtran por el
Id_Clientedel usuario logueado (SessionHelper.GetClienteUSuario()/GetExternalUsuario()); un cliente nunca ve datos de otro. - Bloqueos:
ClienteValidoniega el acceso/uso a clientes en gestión judicial, fallecidos o bloqueados (mensaje deWeb.MisCreditos.Registro.Cliente_GestionJudicial). - La habilitación de medios de pago, margen, QR e importes se controla por parámetros (
Web.Comerc.Dashboard.*,Web.MisCreditos.MercadoPago.Habilitado).
Información técnica
Basada en el análisis del formulario real de la v14. Aplicación ASP.NET MVC 5 (.NET Framework 4.6.2), proyecto
VPNET.WEB.MisCreditos(VPNET_WEB_MisCreditos\VPNET.WEB.MisCreditos). Referencia los managers de negocio del ERP enVPNET_DataModel(namespacesVPNET.Data.Model/VPNET.Data.Model.Manager) y la libreríaRestApiNCG. Ruteo MVC por defecto ({controller}/{action}/{id}→Home/Index).
Controllers y vistas
| Componente | Rol |
|---|---|
Controllers\HomeController.cs [Authorize] |
Núcleo del portal. Acciones: Index (listado de créditos, SQL dinámico), IndexGetCaidaCuotas, IndexGetDeudaMesXMes, IndexPendienteAutorizacion, SolicitarDisponible (GET/POST), ProcesarPago (POST — ruteo MP/Pago360/Mobbex), PagoExitoso, PagoExitosoMobbex, PagoExitosoMercadoPago, Perfil, NuevaSolicitud (POST), ValidarAlgoritmoCliente (GET), ProcesarOperacionSolicitud (POST). |
Controllers\UserController.cs |
Autenticación y onboarding. Acciones: Login (GET/POST [ValidateAntiForgeryToken]), ForgotPassword, ChangedPassword, ResetPassword [Authorize], LogOff, Register, StepRegister, StepRegisterGetCliente, StepValidEmail/StepValidEmailSendCodeMail/StepValidEmailVerify/StepValidEmailVerifyCode/StepValidEmailConfirmacion, StepValidPhone/StepValidPhoneSendCodePhone/StepValidPhoneVerify/StepValidPhoneVerifyCode/StepValidPhoneConfirmacion, StepValidImagen/StepValidImagenCapturar/StepValidImagenValidSelfie/StepValidImagenValidDNI, StepUser/StepSetUser (POST)/StepUserConfirm/StepUserConfirmExist. |
Controllers\ErrorController.cs |
Error (GET/POST) y AccesoDenegado (vista Error). |
Controllers\FotoHub.cs (SignalR Hub, ns VPNET_WEB_CreditoOnline.Controllers) |
Captura de foto cruzada celular→PC en el KYC: EnviarFoto, EnviarConfirmacion, agrupación por sessionId en OnConnected. |
Helper\SessionHelper.cs |
Ticket de Forms Auth, TTL, GetClienteUSuario/GetExternalUsuario/GetUsuario, GetNameLogo, tokens de sesión. |
Helper\StepHelper.cs |
Arma el JSON de pasos del registro desde la sección StepConfiguration del web.config. |
Views\Home\ |
Index.cshtml (listado + botonera de pago), Perfil.cshtml, SolicitarDisponible.cshtml, NuevaSolicitud.cshtml (QR + SignalR), PagoExitosoMercadoPago.cshtml, PagoExitosoMobbex.cshtml. |
Views\User\ |
Login.cshtml, Register.cshtml (wrapper del wizard), ForgotPassword.cshtml, ResetPassword.cshtml, ChangedPassword.cshtml, StepRegister.cshtml, StepUser.cshtml, StepUserConfirm.cshtml, StepUserConfirmExist.cshtml, StepValidEmail(+Verify+Confirmacion).cshtml, StepValidPhone(+Verify+Confirmacion).cshtml, StepValidImagen.cshtml, StepValidImagenCapturar.cshtml. |
Views\Shared\_Layout.cshtml |
Layout general: navbar, sidebar (Inicio / Mi Perfil / Salir), carga diferida de librerías de identidad. |
Modelos: Models\CreditosModel.cs (CreditosModel, CreditoCuotaModel, ConfirmarPagoViewModel, DeudaMesXMes), LoginViewModel.cs, QRClientModel.cs, SolicitudCreditoModel.cs, SolicitudesViewModel.cs, PrestamossCuotasModel.cs, Algoritmo_Result_Model.cs, StepConfig.cs, ErrorViewModel.cs. |
Modelos de vista y de transporte JSON. |
Managers y clases de negocio
| Clase (VPNET_DataModel / RestApiNCG) | Uso en el portal |
|---|---|
PrestamosSolicitudes_Manager |
Consultas SQL (ExcuteSQLQuery<T>), valor de cuota web (GetValorCuotaWEB), guardado de solicitud (Save), helpers estáticos (CreateIntanceForClassInModel, Prestamos_SolicitudesLog_Save_TradeCliente). |
Generic_Base_Manager |
Parámetros (GetParameter/GetParameterValue), envío de mail (SendNewMail/SendMail), fecha de operación, logging de errores, GetFirstTT. |
Seguridad_Usuarios_Manager |
Login de cliente (LoadByUserTicketCliente), cambio de clave (ChangePasswordGeneral), recupero (SendMailTicketUsuarioChangePassword), tokens/sesiones. |
Algoritmos_Validaciones_Variables_Plenario |
Límite/margen disponible del cliente (Limite_Disponible). |
Algoritmos_Validaciones_Manager |
Evaluación del algoritmo de crédito (Evaluar_Algoritmo, Get_Data_Cliente). |
Prestamos_Creditos_Manager |
Generación del crédito (Generate_New_Credito). |
Prestamos_Lineas_Manager |
Cuotas y primer vencimiento de la línea (PrestamosLineas_GetCuotas, Fecha_1_Vencimiento). |
Flujos_Estados_Manager / Flujos_Log_Manager |
Estado inicial/final del flujo y log de movimientos. |
Prestamos_Solicitudes_Notas_Manager |
Nota automática al finalizar la solicitud. |
Alertas_Manager |
Alertas/e-mails (AlertaWeb) por cliente sin límite / fallo de solicitud. |
Tickets_ClientesUsuarios_Manager |
Alta del usuario web (Save). |
Clientes_Manager |
Validaciones de cliente (Cliente_CasoJudicial, fallecido/bloqueado). |
File_Manager |
Guardado de imágenes de identidad en galería (GuardarArchivo). |
ValidacionDni_Manager |
Lectura/validación del PDF417 del DNI (Validacion_PDF417_Data). |
Sms_Setup_Manager |
Envío de SMS del onboarding (SendSms). |
WEBClient_Log_Manager |
Auditoría de acceso (Agregar_Log, p. ej. "Login"). |
Pago360_Manager |
Checkout de Pago360 (CrearSolictudPagoYEjecutarChekot). |
Rest_Mobbex / Orden_PagoRequest |
Orden de pago Mobbex (Orden_PagoAsync). |
Rest_MercadoPago / MercadoPago_Manager |
Preferencia de checkout MercadoPago (CrearPreferenciaAsync), guard anti doble pago (BuscarPagoActivoQueSolape), log (getLog). |
RestApiMaster (RestApiNCG) |
Armado de URLs de webhook/retorno (CombineUri). |
Stored Procedures y servicios
| Elemento | Detalle |
|---|---|
| Consultas SQL dinámicas | Index, IndexGetCaidaCuotas, IndexGetDeudaMesXMes, IndexPendienteAutorizacion ejecutan SQL embebido vía PrestamosSolicitudes_Manager.ExcuteSQLQuery<T> sobre Prestamos_Creditos, Prestamos_Creditos_Detalle, Prestamos_Entidades, Prestamos_Solicitudes, Especies. |
| SignalR (local) | FotoHub (~/signalr/hubs), mapeado en Startup.Configuration (app.MapSignalR). Usado para pasar la foto del celular a la PC durante el KYC. |
| SignalR (remoto, comercio) | La vista NuevaSolicitud.cshtml se conecta a un hub qrHub en json.UrlHost (host del comercio) para el flujo QR "pagar con margen". |
| Webhooks de pago | MercadoPago (BO.MercadoPago.WebHooks) y Mobbex (BO.Mobbex.Suscripcion.WebHooks) apuntan a la API Plenario (PlenarioServices.svc/json), fuera de este proyecto. La acreditación de cuotas la resuelve el webhook, no el portal. |
| Facial/OCR (cliente) | Librerías JS de identidad (TensorFlow, face-api, tesseract, scanner DNI) cargadas bajo demanda; validación server-side del PDF417 vía ValidacionDni_Manager. |
| SPs internos | La evaluación del algoritmo y la generación del crédito (Generate_New_Credito, Evaluar_Algoritmo) invocan lógica/SPs del ERP dentro de los managers; los nombres exactos de SP no se declaran en este proyecto — verificar contra binario instalado. |
Tablas de base de datos
| Tabla | Uso |
|---|---|
Prestamos_Creditos |
Créditos del cliente (encabezado). |
Prestamos_Creditos_Detalle |
Cuotas: importes, vencimiento, cobros, punitorios. |
Prestamos_Entidades |
Entidad emisora del crédito (nombre). |
Prestamos_Solicitudes |
Solicitudes de préstamo (incluye pendientes de autorización). |
Prestamos_Solicitudes_Log |
Log de solicitudes (monto, plazo, CBU, estado, entorno WEB). |
Prestamos_Lineas / Prestamos_Lineas_Detalle |
Líneas de crédito, cuotas y tasas. |
Especies |
Especie/moneda (el portal filtra Id_Especie = 1). |
Clientes |
Datos del cliente (documento, sexo, mail, celular, judicial/fallecido/bloqueado). |
Tickets_ClientesUsuarios |
Usuario web del cliente (credenciales, ActivoWebClient). |
Imagenes |
Galería: selfie y DNI (frente/dorso) del KYC, entidad CLI. |
Localidades |
Localidad/provincia por código postal. |
Algoritmos_Log |
Log de la evaluación del algoritmo de crédito. |
SeguridadUsuarios, SeguridadSesiones |
Usuarios y sesiones/tokens de seguridad. |
Entidades, Sucursales |
Comercio/sucursal del flujo QR (NuevaSolicitud). |
Parámetros y seguridad
Parámetros de configuración (leídos con Generic_Base_Manager.GetParameter / GetParameterValue):
| Parámetro | Función |
|---|---|
Web.SessionTTL.Minutos |
Duración de la sesión web (default 30). |
Web.Comerc.Dashboard.MetodoPago |
Proveedor base de pago: 0 = Pago360, 1 = Mobbex. |
Web.MisCreditos.MercadoPago.Habilitado |
Muestra el botón "Pagar con MercadoPago" (1). |
Web.MisCreditos.MercadoPago.Link.DiasVigencia |
Vigencia del link de MercadoPago desde MisCreditos (default 7; 0 = sin vencimiento). |
BO.MercadoPago.WebHooks / BO.Mobbex.Suscripcion.WebHooks |
URL base de la API Plenario para IPN/webhooks. |
Web.CreditosOnline.Onboarding.Mobbex.Test |
Modo test de Mobbex (1 = test). |
Web.Comerc.Dashboard.MostarMargen / MostrarImportes / MostarBotonQR |
Muestran/ocultan margen, importes y botón QR en Inicio. |
Web.MisCreditos.SolicitudLimite.Email / …Asunto |
Destino y asunto del mail de ampliación de margen. |
Web.MisCreditos.Registro.NoCliente |
Mensaje si el documento no es cliente al registrarse. |
Web.MisCreditos.Registro.ValidarDniPDF417 |
Valida el PDF417 del DNI (1). |
Web.MisCreditos.Registro.ValidarSelfie / …ValidarIdentidad |
Validan selfie real y selfie vs. rostro del DNI. |
Web.MisCreditos.Registro.ValidacionIdentidad.Obligatoria |
Si 0, el KYC no es obligatorio y la solicitud queda para control manual. |
Web.MisCreditos.Registro.Cliente_GestionJudicial |
Mensaje para clientes judiciales/bloqueados/fallecidos. |
Web.MisCreditos.OnBoarding.Mail.Test / …Sms.Test |
Modo test del envío de código por e-mail / SMS (1). |
Web.MisCreditos.Onboarding.NoCliente / …SinOferta / …Fallecido |
Mensajes del flujo QR de solicitud. |
Web.MisCreditos.FavIconono / …TituloText / …LogoLoginPath / …LogoPath / …LogoTextPath |
Branding (favicon, título, logos). |
Seguridad e infraestructura:
- Forms Authentication (
system.web/authentication mode="Forms",~/User/Login, timeout 30) + Owin Cookie Authentication (Startup.cs:ApplicationCookie,ExpireTimeSpan = 30 min,SlidingExpiration). - CORS (Owin) con reflejo dinámico del
OriginySupportsCredentials = true. - SignalR habilitado (
app.MapSignalR) paraFotoHub. - 2FA: el
LoginViewModeldeclaraTipoAutentificacionyCode2fa, pero el POST deLoginde este proyecto no consume el código 2FA (no hay flujo de doble factor cableado aquí). Si la financiera requiere 2FA/GoogleAuthenticator, verificar contra binario instalado / otra capa. Ver Notas para soporte. - Cadenas de conexión en
web.config(DefaultConnection/VisualPlenarioNetContext) — SQL Server; en el fuente vienen apuntando a un entorno de QA (verificar contra elweb.configinstalado en producción).
Relación con otros módulos / manuales
- MercadoPago — configuración de MercadoPago, preferencias de checkout y webhook/IPN que acredita las cuotas pagadas desde MisCreditos.
- Nueva solicitud de crédito — el módulo de Préstamos del Back Office donde se administran las solicitudes/créditos que el cliente ve y origina desde el portal.
- Web de Workflow — otras aplicaciones web del ecosistema Web / Workflow de Plenario v14.
El portal reutiliza los managers de negocio del ERP (préstamos, créditos, algoritmos, clientes, seguridad) y depende del motor de decisión/algoritmos de crédito (scoring) y de los proveedores de pago (Pago360, Mobbex, MercadoPago).
Notas para soporte
- 2FA no cableado en el login de este proyecto: existe el campo
Code2faenLoginViewModelyTipoAutentificacion(inicializado en2), pero la acciónLoginno valida un segundo factor. No hay referencias aGoogleAuthenticatorni a parámetrosDobleFactor.*en el fuente deVPNET.WEB.MisCreditos. Si un cliente reporta 2FA, verificar contra el binario instalado / otra versión. - Pasos de teléfono comentados: en la
StepConfigurationde ejemplo delweb.configlos pasosStepValidPhone*están comentados (el flujo salta de e-mail a validación de imagen). El backend (StepValidPhoneSendCodePhone, etc.) existe igual. Confirmar la configuración instalada. - Cadena de conexión de QA en el fuente: el
web.configversionado apunta aPC-NORBERTO\PlenarioNET_CorvalanProdQa. Antes de deployar, verificar que apunte a la base correcta. FotoHubcon namespace legacyVPNET_WEB_CreditoOnline.Controllers(nombre heredado del proyecto de crédito online); no afecta la funcionalidad, pero puede confundir en búsquedas.- Vistas "- Copia": existen
StepValidImagen - Copia.cshtmlyStepValidImagenCapturar - Copia.cshtmlenViews\User\; son copias de trabajo, no forman parte del flujo activo. - Guard anti doble pago (MercadoPago): la idempotencia es a nivel cuota (
BuscarPagoActivoQueSolape), no sólo porexternal_reference; una selección distinta de cuotas genera otra referencia. - La acreditación efectiva de las cuotas depende del webhook del proveedor (API Plenario), no del portal; si una cuota no se marca como pagada, revisar el procesamiento del webhook antes que el portal.