erp-core/docs/02-definicion-modulos/gaps/GAP-ANALYSIS-MGN-015.md

127 lines
3.5 KiB
Markdown

# GAP ANALYSIS: MGN-015 - Billing y Suscripciones SaaS
**Módulo:** MGN-015
**Nombre:** Billing y Suscripciones SaaS
**Fecha:** 2025-12-06
**Estado:** ✅ IMPLEMENTADO
---
## Resumen Ejecutivo
El módulo MGN-015 proporciona la funcionalidad completa de billing y suscripciones para operar el ERP como una plataforma SaaS multi-tenant. Este módulo fue diseñado e implementado como parte del sistema base y **no presenta gaps**.
---
## Alcance del Módulo
### Funcionalidades Implementadas
| Funcionalidad | Estado | Tabla(s) BD |
|---------------|--------|-------------|
| Planes de suscripción | ✅ | billing.subscription_plans |
| Gestión de suscripciones | ✅ | billing.subscriptions |
| Historial de cambios | ✅ | billing.subscription_history |
| Propietarios de tenant | ✅ | billing.tenant_owners |
| Métodos de pago | ✅ | billing.payment_methods |
| Facturación SaaS | ✅ | billing.invoices, billing.invoice_lines |
| Pagos y cobros | ✅ | billing.payments |
| Cupones y descuentos | ✅ | billing.coupons, billing.coupon_redemptions |
| Registros de uso | ✅ | billing.usage_records |
### Planes Predefinidos
| Plan | Precio/Mes | Usuarios | Features |
|------|------------|----------|----------|
| Free/Trial | $0 | 3 | Inventario, Ventas básico |
| Básico | $499 | 5 | + Financiero, Compras |
| Profesional | $999 | 15 | + CRM, Proyectos, Reportes avanzados, API |
| Enterprise | $2,499 | Ilimitado | + White label, Soporte prioritario |
| Single Tenant | $0 | Ilimitado | On-premise, todo habilitado |
---
## Análisis de Gaps
### Gaps Identificados: **NINGUNO**
El módulo está completamente implementado a nivel de base de datos. Todas las tablas, índices, triggers y funciones necesarias están presentes.
---
## Funciones de Negocio Implementadas
### 1. get_tenant_plan(p_tenant_id UUID)
Obtiene información del plan actual de un tenant.
**Retorna:**
- plan_code
- plan_name
- max_users
- max_companies
- features (JSONB)
- subscription_status
- days_until_renewal
### 2. can_add_user(p_tenant_id UUID)
Verifica si el tenant puede agregar más usuarios según su plan.
**Retorna:** BOOLEAN
### 3. has_feature(p_tenant_id UUID, p_feature VARCHAR)
Verifica si una feature específica está habilitada para el tenant.
**Retorna:** BOOLEAN
---
## Integraciones Previstas
| Integración | Estado | Notas |
|-------------|--------|-------|
| Stripe Payments | 🔲 Pendiente | Campos stripe_* preparados |
| CFDI México | 🔲 Pendiente | Campos cfdi_* preparados |
| Webhooks | 🔲 Pendiente | Backend pendiente |
---
## Dependencias
### Depende de:
- MGN-001 (auth.tenants, auth.users)
- MGN-003 (core.currencies)
### Es requerido por:
- Ningún módulo (independiente)
---
## Características de Seguridad
- **RLS:** Tablas con tenant_id tienen políticas de aislamiento
- **Soft Delete:** payment_methods soporta deleted_at
- **Validaciones:** Constraints en precios, descuentos, fechas
---
## Próximos Pasos (Backend/Frontend)
1. Implementar servicio `BillingService` en backend
2. Crear controladores REST para gestión de suscripciones
3. Integrar SDK de Stripe para pagos
4. Crear portal de facturación en frontend
5. Implementar webhooks para eventos de pago
---
## Conclusión
**Estado del Gap Analysis:** ✅ SIN GAPS
El módulo MGN-015 está completamente implementado a nivel de base de datos y listo para desarrollo de backend y frontend.
---
**Generado por:** Requirements-Analyst
**Fecha:** 2025-12-06