Saltar al contenido principal

Cambio de Plan (Upgrade/Downgrade)

El sistema permite que los clientes cambien el plan de la suscripción con cálculo automático de proration (prorrateo proporcional).

Tipos de Cambio​

TipoDescripción
upgradeNuevo plan más caro que el actual
downgradeNuevo plan más barato que el actual
lateralMismo valor (cambio de features)

Timing del Cambio​

TimingDescripción
immediateSe aplica inmediatamente, cobra/acredita la diferencia proporcional
end_of_periodPrograma el cambio para el inicio del próximo período

Proration (Prorrateo Proporcional)​

Métodos de Proration​

MétodoDescripción
full_prorationAcredita el plan anterior y cobra el nuevo por el tiempo restante
partial_prorationCobra solo la diferencia (solo para upgrade)
no_prorationSin ajuste de valor a mitad del ciclo

Fórmula de Cálculo​

dias_restantes = max(0, techo((fin_período - ahora) / 86400000))
total_dias_período = techo((fin_período - inicio_período) / 86400000))

Full proration:
crédito = (precio_anterior × dias_restantes) / total_dias_período
cobro = (precio_nuevo × dias_restantes) / total_dias_período

Partial proration (solo upgrade):
diferencia = precio_nuevo - precio_anterior
cobro = (diferencia × dias_restantes) / total_dias_período

Cobro neto = cobro - crédito

Configuración Predeterminada​

La configuración de cambio de plan define el comportamiento predeterminado:

ConfiguraciónPredeterminado
Permitir upgradeSí
Permitir downgradeSí
Proration en upgradefull_proration
Proration en downgradeno_proration
Timing del upgradeimmediate
Timing del downgradeend_of_period
Reembolso en downgradeNo
Crédito en downgradeSí
Aplicar descuento en el cambioSí

Reglas de Cambio de Plan​

Es posible crear reglas específicas para controlar las transiciones entre planes:

CampoDescripción
Plan de origenPlan actual (null = cualquiera)
Plan de destinoNuevo plan (null = cualquiera)
Tipo de cambioupgrade, downgrade o lateral
PermitidoSi la transición está permitida
TimingSobrescribe el timing predeterminado
Método de prorationSobrescribe el método predeterminado
Descuento (%)Descuento porcentual en el cobro
Días de bonificaciónExtensión del período de prueba
MensajeRazón si no está permitido
PrioridadMayor prioridad prevalece

Orden de Prioridad de las Reglas​

  1. Regla con plan de origen Y plan de destino (más específica)
  2. Regla con solo plan de origen
  3. Regla con solo plan de destino
  4. Regla global (ambos null)

Vista Previa del Cambio​

Antes de ejecutar, es posible visualizar:

  • Si el cambio está permitido
  • Tipo (upgrade/downgrade/lateral)
  • Valores de crédito y cobro prorrateados
  • Cobro neto final
  • Fecha efectiva
  • Días restantes en el período

Ejecución del Cambio​

Cambio Inmediato​

  1. Se calculan la validación y la vista previa
  2. Se crea el registro de PlanChange (estado: pending)
  3. Se genera crédito si prorationCreditSubcents > 0
  4. Se genera factura si netChargeSubcents > 0
  5. La suscripción se actualiza con el nuevo plan
  6. PlanChange se marca como completed

Cambio Programado​

  1. Se crea el registro de PlanChange (estado: scheduled)
  2. En la fecha efectiva, el worker procesa el cambio
  3. La suscripción se actualiza con el nuevo plan
  4. PlanChange se marca como completed

Limitación: El sistema mantiene solo un cambio programado a la vez. Un nuevo cambio programado cancela el anterior.

Cancelar Cambio Programado​

Los cambios programados pueden cancelarse antes de la fecha efectiva. El estado cambia a canceled y el motivo se registra.

Captura de pantalla​

La pantalla /dashboard/plan-changes presenta el historial de cambios de plan de la organización, con filtros por status, tipo (upgrade/downgrade/lateral), plan de origen y de destino. La pestaña de configuración centraliza el comportamiento predeterminado de proration y las reglas por par de planes.

Historial y configuración de cambios de plan