127 lines
3.5 KiB
Markdown
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
|