Appearance
PortalCtaCteService
Estado: Planificado
Ubicacion: Modules/Portal/Account/Service/PortalCtaCteService.php
Responsabilidad
Consultar cuenta corriente y deudas de clientes autenticados en el portal. Reutiliza el modelo CuentaCorriente existente del ERP, enriqueciendo los datos con campos calculados para el frontend.
Resolucion de Contexto
El servicio recibe la conexion ya configurada por el middleware JWT:
- PortalJwtMiddleware extrae
tenant_idysucursal_iddel JWT tenant_idresuelve la base de datos viaini.sistemasucursal_idresuelve el schema (sucXXXX, opublicsi ordcon a nivel empresa)- ConnectionMiddleware configura la conexion
- El servicio trabaja contra la conexion ya establecida
No se usa resolucion por dominio (X-Client-Domain / tenant_domains).
Metodos
getDeudas()
Parametros:
portalUserId: ID del portal_user (extraido del JWT)
Retorna: Array de deudas pendientes con campos calculados:
json
[
{
"id": "uuid-1234",
"tipo": "Factura A",
"numero": 123,
"fecha": "2026-01-01",
"vencimiento": "2026-01-31",
"monto": 10000.00,
"saldo": 10000.00,
"dias_vencido": 5,
"esta_vencido": true
}
]Flujo:
- Resolver
cliente_iddesdeportal_users.ordcon_id - Obtener movimientos sin pago usando
CuentaCorriente::getMovimientosSinPago(clienteId)(reutilizado) - Enriquecer cada movimiento con:
dias_vencido: dias desde vencimiento hasta hoy (0 si no vencido)esta_vencido:truesivencimiento < hoy
- Retornar array enriquecido
getMiCuenta()
Parametros:
portalUserId: ID del portal_user (extraido del JWT)
Retorna: Resumen de cuenta:
json
{
"nombre": "Juan Perez",
"saldo_total": 15000.00,
"facturas_vencidas": 3,
"facturas_pendientes": 5,
"ultimo_pago": {
"fecha": "2026-01-15",
"monto": 5000.00
}
}Flujo:
- Resolver
cliente_iddesdeportal_users.ordcon_id - Obtener datos del cliente desde modelo
Cliente - Obtener deudas usando
getDeudas(portalUserId) - Calcular:
saldo_total: suma de todos los saldosfacturas_vencidas: conteo de facturas conesta_vencido = truefacturas_pendientes: total de facturas sin pagar
- Obtener ultimo pago usando
CuentaCorriente::getUltimoPago(clienteId) - Retornar resumen consolidado
Reutilizacion
- NO re-implementa logica de cuenta corriente
- USA modelos y metodos existentes (
CuentaCorriente,Cliente) - SOLO agrega transformacion de datos para el frontend (campos calculados como
dias_vencido,esta_vencido) - La resolucion de
cliente_iddesdeportal_user_ides el unico paso adicional respecto al uso interno del ERP
Casos de Prueba
- Deudas enriquecidas: Debe incluir
dias_vencidoyesta_vencidocalculados correctamente - Resumen de cuenta: Debe calcular correctamente totales y contadores
- Cliente sin deudas: Debe retornar array vacio y totales en cero
- Resolucion portal_user -> ordcon: Debe resolver el cliente_id desde el portal_user_id del JWT