Appearance
Services - Logica de Negocio
Estado: Planificado
Servicios que implementan la logica de negocio del Portal de Clientes. Los servicios nuevos se ubican en sus respectivos sub-modulos bajo Modules/Portal/. Los servicios reutilizados pertenecen a modulos existentes del ERP.
Principios
Los services son la capa de logica de negocio:
- Implementan reglas de negocio y validaciones de dominio
- Orquestan operaciones entre modelos y servicios existentes
- Manejan transacciones de base de datos
- NO manejan HTTP (responsabilidad del Controller)
- NO acceden directamente a la base de datos (usan Models/Repositories)
Servicios del Portal
PortalAuthService
Ubicacion: Modules/Portal/Auth/Service/PortalAuthService.php
Responsabilidad: Registro, autenticacion y gestion de credenciales de usuarios del portal.
Funcionalidad:
- Registro de usuario (auto-registro validando contra ordcon existente)
- Login con DNI/CUIT + password, generacion de JWT
- Forgot-password (generar codigo, enviar email)
- Reset-password (validar codigo, actualizar password_hash)
- Refresh-token (renovar JWT)
- Bloqueo por intentos fallidos
PortalCtaCteService
Ubicacion: Modules/Portal/Account/Service/PortalCtaCteService.php
Responsabilidad: Consultar cuenta corriente del cliente autenticado.
Funcionalidad:
- Obtener deudas pendientes con campos calculados (dias_vencido, esta_vencido)
- Generar resumen de cuenta (saldo total, facturas vencidas, ultimo pago)
- Reutiliza modelo CuentaCorriente existente del ERP
PaymentGatewayService
Ubicacion: Modules/Portal/Payment/Service/PaymentGatewayService.php
Responsabilidad: Orquestar pagos online con multiples gateways y acreditacion automatica.
Funcionalidad:
- Iniciar pagos con gateways (MercadoPago, PagoTIC)
- Procesar webhooks de confirmacion
- Acreditacion AUTOMATICA: webhook aprobado -> crear recibo en ctacte via ReciboRelationsService
- Patron Adapter + Factory para multiples gateways
- Idempotencia con external_id
CuponPagoService y CuponValidacionService (reutilizados)
Documentacion: cupon-pago-service.md
Ubicacion: Servicios existentes del modulo CtaCte
Responsabilidad: Generacion y validacion de cupones de pago.
Estos servicios NO son nuevos. El portal los reutiliza tal cual, exponiendolos a traves de endpoints autenticados con JWT. No existe tabla portal_cupones.
Funcionalidad expuesta al portal:
- Generar cupones con codigo ITF de 19 digitos
- Listar cupones por cliente
- Validar cupones por codigo de barras
Diagrama de Dependencias
mermaid
graph TD
A[PortalAuthService] --> B[portal_users table]
A --> C[ordcon table]
D[PortalCtaCteService] --> E[CuentaCorriente model]
D --> F[Cliente model]
G[PaymentGatewayService] --> H[PaymentGatewayFactory]
H --> I[MercadoPagoAdapter]
H --> J[PagoTicAdapter]
G --> K[portal_payments table]
G --> L[ReciboRelationsService]
M[PortalCuponesController] --> N[CuponPagoService]
M --> O[CuponValidacionService]
style A fill:#e1f5fe
style D fill:#e1f5fe
style G fill:#e1f5fe
style M fill:#fff3e0
style N fill:#e8f5e9
style O fill:#e8f5e9
style L fill:#e8f5e9Leyenda:
- Azul: Servicios nuevos del portal
- Naranja: Controller del portal (sin servicio propio)
- Verde: Servicios reutilizados del ERP
Multi-Tenant
La resolucion de tenant se hace via JWT:
- El JWT contiene
tenant_idysucursal_id tenant_idresuelve la base de datos viaini.sistemasucursal_idresuelve el schema (sucXXXX, opublicsi ordcon a nivel empresa)- El middleware configura la conexion ANTES de llegar a los servicios
- Los servicios trabajan contra la conexion ya configurada
Patrones de Diseno
- DDD Sub-modules: Cada sub-modulo encapsula su servicio, controller y modelos
- Dependency Injection: Inyeccion via container de Slim
- Factory + Adapter: Seleccion de gateways de pago
- Reutilizacion: Servicios existentes del ERP se usan directamente, sin wrappers innecesarios