Saltar a contenido

Cambiarle el plan a un cliente (o extenderle la prueba, o suspenderlo)

Las tres acciones administrativas funcionan igual y desde el mismo sitio. Esta guía asume que ya tienes el panel abierto y sesión iniciada.

Hacerlo

  1. Elige la vertical en la barra izquierda (Gastro o Travel).
  2. Busca el cliente por nombre, slug o email del dueño y entra a su ficha.
  3. En Acciones, elige lo que necesitas:
  4. Cambiar plan — solo aparecen los planes distintos al actual.
  5. Extender prueba — +7, +15 o +30 días, que se suman a la fecha actual de fin de prueba.
  6. Suspender / Reactivar — el botón cambia según el estado en que esté.
  7. Escribe el motivo. Es obligatorio.
  8. Lee la frase de resumen del diálogo y confirma.

La tabla, el dashboard y la bitácora se actualizan solos.

Por qué el motivo es obligatorio

Porque dentro de seis meses, mirando la bitácora, "el plan cambió de carta a opera el 17 de julio" no le sirve a nadie. "…porque fue una cortesía acordada con el dueño" sí. El motivo es la mitad del valor de auditar: sin él sabes qué pasó pero nunca por qué.

El backend lo exige también (mínimo 3 caracteres), así que no hay forma de saltárselo llamando la API directamente.

Qué pasa por debajo

El panel no escribe en la base de la vertical. Le pide a la vertical dueña que ejecute el cambio, y es esa vertical la que lo aplica y lo audita, en una sola transacción, con tu email como actor. Si el cambio se guarda, la fila de bitácora también; nunca uno sin el otro.

En Travel, además, la mutación pasa por las primitivas de su dominio de billing (las mismas que usan cancel/pause/resume), no por un UPDATE directo. Es lo que evita que un cambio hecho desde el panel se pelee con el dunning y termine mandándole un correo de cobro a quien no debe.

Si algo sale mal

Lo que ves Qué significa
«Escribe el motivo (mínimo 3 caracteres)» El formulario aún no envió nada.
Un error con un mensaje de negocio concreto (ej. plan inexistente) La vertical rechazó el cambio. El panel te muestra su razón tal cual; no es una caída.
«La vertical 'gastro' no está disponible» La vertical se cayó o no responde. Tu cambio no se aplicó. Reintenta cuando vuelva.
«Demasiadas acciones seguidas. Espera un minuto.» Rate limit (5/min). Es a propósito: esto no se hace en ráfaga.

Verificarlo por fuera del panel

# Sustituye <token> por un JWT de operador (sale del login) y <id> por el del cliente
curl -s -H "Authorization: Bearer <token>" \
  http://localhost:8012/api/v1/gastro/customers/<id>/audit-log | jq '.items[0]'

Relacionado