Subscription & billing: contratos, catálogo y licencias
Objetivo y autorización
El módulo tiene cinco pestañas: Subscription, Licenses, Commerce, Catalog y Offers. Leer requiere billing.view. Gestionar requiere billing.manage; las mutaciones del catálogo global exigen además el rol activo Platform Administrator. Un usuario de facturación tenant no puede asignarse un precio negociado ni modificar términos globales.
Diferencie suscripción, factura, licencia y orden comercial. Cambiar un registro no demuestra automáticamente el resultado de los demás. Las pruebas de este manual son de sandbox, sin cobros ni activaciones reales.
Subscription y facturación
El editor de suscripción expone plan y estado. El perfil de facturación incluye nombre legal, email, identificación fiscal, país y dirección. La factura permite número, importe, moneda, vencimiento, estado y descripción; el cambio de estado tiene diálogo propio.
Revise unidades y moneda antes de confirmar. La dirección de facturación no es la identidad de acceso. Verifique la factura seleccionada y vuelva al inventario tras modificarla. No marque una factura pagada para resolver un problema de acceso: su estado debe corresponder al proceso administrativo autorizado.
Licenses
Emitir recoge identificador manual, factura, activaciones máximas y vencimiento. Activar utiliza clave e identificador de activación; revocar requiere confirmación. No copie claves reales a capturas o PDFs. Revise vínculo con factura y vigencia antes de emitir. Revocar una licencia no debe presentarse como devolver dinero: ese efecto no se deduce del formulario.
Commerce, Catalog y Offers
| Entidad | Contrato |
|---|---|
| Product | Identidad global y presentación |
| Plan | Identidad estable |
| PlanVersion | Revisión con estados draft, published y retired |
| Price | Vinculado a versión; términos económicos se congelan al usarse |
| TenantOffer | Oferta tenant referida a versión y precio globales |
| Order / Subscription | Instantánea contractual de términos aplicables |
Edite términos en draft y publique tras revisión. Para cambiar condiciones usadas cree una revisión/precio nuevos, sin reescribir historial. Las ofertas no duplican catálogo por tenant. Incluyen vigencia, moneda y descuento o importe negociado; superposiciones incompatibles pueden rechazarse. Las fechas incluyen zona horaria. El catálogo Commerce admite PEN y USD. El formulario administrativo Invoice ofrece USD, PEN y EUR; esa opción adicional de factura no amplía las monedas del catálogo Commerce.
Procedimiento y POC sintético
En sandbox prepare producto de demostración, plan estable y revisión draft. Revise términos, publique y cree precio correspondiente. Asigne una oferta a un tenant sintético autorizado y compruebe su catálogo efectivo. Registre la versión utilizada. Cree después una revisión nueva: el ejercicio debe demostrar que una orden anterior conserva su instantánea.
El checkout muestra precio, cantidad, método de pago, tipo de cliente, tipo/número de documento, nombre legal, email, país y dirección. No envíe tokens ficticios a un proveedor real. Documente con fixtures o sandbox autorizado; deténgase antes de un cobro real.
Validaciones y recuperación
El modelo almacena importes en unidades monetarias menores enteras; tasas y descuentos utilizan puntos básicos. No copie directamente un decimal visible a una API sin respetar el contrato. La versión técnica del almacenamiento no es una revisión comercial ni la release de aplicación.
Conflictos de versión o transición devuelven 409: recargue, compare y reintente la decisión correcta. Un 403 exige revisar rol activo y alcance. No existe API para eliminar historial comercial. Si una orden antigua carece de términos verificables requiere revisión comercial; no complete automáticamente con valores actuales.
Para investigar discrepancias compare factura, suscripción y orden en su contexto. No repita checkout sólo porque la UI tarda en actualizar: una operación del proveedor puede haber ocurrido. El estado definitivo debe verificarse mediante el flujo comercial autorizado.