Pular para o conteúdo principal

Mudança de Plano (Upgrade/Downgrade)

O sistema permite que clientes alterem o plano da assinatura com cálculo automático de proration (rateio proporcional).

Tipos de Mudança

TipoDescrição
upgradeNovo plano mais caro que o atual
downgradeNovo plano mais barato que o atual
lateralMesmo valor (mudança de features)

Timing da Mudança

TimingDescrição
immediateAplica imediatamente, cobra/credita a diferença proporcional
end_of_periodAgenda a mudança para o início do próximo período

Proration (Rateio Proporcional)

Métodos de Proration

MétodoDescrição
full_prorationCredita o plano antigo e cobra o novo pelo tempo restante
partial_prorationCobra apenas a diferença (somente para upgrade)
no_prorationSem ajuste de valor no meio do ciclo

Fórmula de Cálculo

dias_restantes = max(0, teto((fim_período - agora) / 86400000))
total_dias_período = teto((fim_período - início_período) / 86400000))

Full proration:
crédito = (preço_antigo × dias_restantes) / total_dias_período
cobrança = (preço_novo × dias_restantes) / total_dias_período

Partial proration (apenas upgrade):
diferença = preço_novo - preço_antigo
cobrança = (diferença × dias_restantes) / total_dias_período

Cobrança líquida = cobrança - crédito

Configuração Padrão

A configuração de mudança de plano define o comportamento padrão:

ConfiguraçãoPadrão
Permitir upgradeSim
Permitir downgradeSim
Proration no upgradefull_proration
Proration no downgradeno_proration
Timing do upgradeimmediate
Timing do downgradeend_of_period
Reembolso no downgradeNão
Crédito no downgradeSim
Aplicar desconto na mudançaSim

Regras de Mudança de Plano

É possível criar regras específicas para controlar transições entre planos:

CampoDescrição
Plano de origemPlano atual (null = qualquer)
Plano de destinoNovo plano (null = qualquer)
Tipo de mudançaupgrade, downgrade ou lateral
PermitidoSe a transição é permitida
TimingSobrescreve o timing padrão
Método de prorationSobrescreve o método padrão
Desconto (%)Desconto percentual na cobrança
Dias bônusExtensão do trial
MensagemRazão se não permitido
PrioridadeMaior prioridade prevalece

Ordem de Prioridade das Regras

  1. Regra com plano de origem E plano de destino (mais específica)
  2. Regra com apenas plano de origem
  3. Regra com apenas plano de destino
  4. Regra global (ambos null)

Preview da Mudança

Antes de executar, é possível visualizar:

  • Se a mudança é permitida
  • Tipo (upgrade/downgrade/lateral)
  • Valores de crédito e cobrança proratados
  • Cobrança líquida final
  • Data efetiva
  • Dias restantes no período

Executando a Mudança

Mudança Imediata

  1. Validação e preview são calculados
  2. Registro de PlanChange é criado (status: pending)
  3. Crédito gerado se prorationCreditSubcents > 0
  4. Fatura gerada se netChargeSubcents > 0
  5. Assinatura atualizada com o novo plano
  6. PlanChange marcado como completed

Mudança Agendada

  1. Registro de PlanChange criado (status: scheduled)
  2. Na data efetiva, o worker processa a mudança
  3. Assinatura atualizada com o novo plano
  4. PlanChange marcado como completed

Limitação: O sistema mantém apenas uma mudança agendada por vez. Uma nova mudança agendada cancela a anterior.

Cancelar Mudança Agendada

Mudanças agendadas podem ser canceladas antes da data efetiva. O status muda para canceled e o motivo é registrado.

Captura de tela

A tela /dashboard/plan-changes traz o histórico de mudanças de plano da organização, com filtros por status, tipo (upgrade/downgrade/lateral), plano de origem e destino. A aba de configuração centraliza o comportamento padrão de proration e regras por par de planos.

Histórico e configuração de mudanças de plano