# Manual breve · Administración comercial (NimiApps 0.3.0)

Todo se hace desde el navegador en **`/admin` → Comercial**
(`/admin/comercial`). Hace falta ser administrador de plataforma
(`php artisan microapps:admin-crear`) con el email verificado. No hay que
tocar código ni la base de datos.

## 1. Antes de empezar

- **Resumen** muestra si los pagos están activos y en qué modo
  (**PRUEBAS** o **REAL**). Si dice **«Pagos desactivados»**, faltan las
  claves de Stripe en `.env`: el catálogo, los planes gratuitos y las
  licencias manuales funcionan; los planes de pago se muestran, pero al
  contratarlos se avisa de que los pagos todavía no están activados y no
  se crea ningún pedido.
- Las microapps son **código** que se instala con un paquete de
  actualización. Desde el panel solo se crea su **ficha comercial**; para
  que la ficha abra algo, su «Código único» debe coincidir con el de un
  módulo instalado (hoy, solo `demo-licencias`).

## 2. Publicar una microapp, paso a paso

Nada aparece en el catálogo hasta que **microapp, producto y plan** están
publicados y el plan tiene al menos un precio activo.

1. **Categorías** (opcional): crea las categorías del catálogo.
2. **Microapps → Nueva**: código único (no se puede cambiar una vez vendida),
   URL pública, nombre, descripción corta y completa, icono y color,
   funciones, beneficios, público objetivo, preguntas frecuentes, título y
   descripción para buscadores. Marca «Disponible» cuando se pueda
   contratar («Disponible para contratar»). Se guarda como **Borrador**.
   - **Capacidades**: «Traer capacidades del módulo» crea las que declara el código
     (por ejemplo «Exportar» o «Número máximo de notas»). También se pueden
     añadir a mano.
   - **Imágenes**: JPEG, PNG o WebP, hasta 2 MB y 12 por microapp, con
     texto alternativo.
3. **Productos y planes → Nuevo producto**: tipo *Individual* (una
   microapp) o *Paquete* (dos o más). La composición de un producto ya
   vendido no se puede quitar, solo ampliar.
4. **Nuevo plan** dentro del producto: nombre, quién puede contratarlo
   (cualquiera / solo organizaciones), días de prueba, límite de plazas
   (para organizaciones), lista de ventajas y el valor de cada capacidad
   (activada o no; límite numérico o sin límite).
5. **Precios** del plan: importe en euros con IVA (`9,90`, `0` para gratis)
   y periodicidad: *mensual*, *anual* o *pago único* (con «Días de acceso»
   opcional; vacío = acceso indefinido). Un plan puede tener varios
   precios (por ejemplo, mensual y anual). Los precios **no se editan**: se
   desactivan y se crea otro; quien ya pagó conserva el suyo.
6. **Publicar** en este orden: plan → producto → microapp. Si falta algo, el
   panel dice qué.

Estados: **Borrador** (no visible), **Publicado**, **Archivado** (deja de
venderse; lo ya vendido sigue funcionando).

## 3. Promociones y cupones

**Promociones → Nueva**: porcentaje o importe fijo, duración (una vez, N
meses o siempre), planes a los que se aplica, fechas desde/hasta.

- **Automática**: se aplica sola y se anuncia en la ficha.
- **Con cupón**: crea uno o varios códigos con usos totales, usos por
  espacio y caducidad. Un cupón se puede desactivar.
- Una promoción ya usada no permite cambiar su descuento (para no alterar
  lo cobrado); crea otra.

## 4. Ventas

- **Pedidos**: cada intento de contratación. Un pedido solo da acceso
  cuando Stripe confirma el pago. «Duplicado» = el cliente pagó dos veces
  el mismo producto: reembolsa el segundo cobro.
- **Suscripciones**: estado copiado de Stripe. «Sincronizar» lo vuelve a
  leer de Stripe. «Cancelar de inmediato» corta el acceso al momento (el
  cliente, desde su panel, solo puede cancelar a final de periodo).
- **Pagos**: cobros y reembolsos. **Reembolsar** (total o parcial) exige
  marcar la casilla de confirmación; el estado final llega por webhook. El
  reembolso total de un pago único retira la licencia; el de una
  suscripción no (cancélala si procede).
- **Eventos Stripe**: cada webhook recibido. Si alguno queda «fallido»,
  «Reprocesar» lo vuelve a consultar en Stripe.

## 5. Licencias

- Lista de todas las licencias, con búsqueda y filtro por estado.
- **Conceder licencia**: a un espacio (personal u organización), con un
  plan y fecha de fin opcional. Útil para cortesías y pruebas. No pasa por
  Stripe.
- **Suspender / Reactivar / Revocar**. Revocar es definitivo.

## 6. Lo que ve el cliente

- `/aplicaciones`: catálogo con búsqueda, categorías, tipo de precio y orden.
- Ficha de cada microapp con planes, selector mensual/anual y paquetes.
- Al contratar elige el espacio (personal u organización) y revisa el
  importe; paga en la página de Stripe.
- **Panel → Contrataciones**: pedidos, suscripciones, renovación,
  cancelación a final de periodo, cambio de plan y «Métodos de pago y
  facturas» (portal de Stripe).
- **Panel → Aplicaciones**: las microapps a las que tiene acceso.
- En una organización solo el **propietario** contrata. Los
  administradores ven las contrataciones y deciden qué miembros tienen
  acceso («Dar acceso» / «Quitar acceso») cuando el plan tiene plazas o la
  licencia está en modo «solo miembros asignados».

## 7. Comprobaciones rápidas

- `php artisan microapps:check`: estado de Stripe, catálogo, licencias y
  webhooks (sin mostrar claves).
- **Auditoría**: quién cambió qué y cuándo.
