Mostra il piano attivo dopo il bonifico e allinea il flusso società.
Dopo la conferma admin la card restava su «Paga con bonifico»; la società parte da Free, l'owner è staff trasmissione e le mail non bloccano se manca SMTP. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -11,6 +11,13 @@ module Public
|
||||
quote = club&.active_billing_quote
|
||||
if quote
|
||||
if quote.plan_slug == target_plan.slug
|
||||
if current_paid_plan?(subscription, target_plan)
|
||||
return {
|
||||
kind: :current,
|
||||
label: "#{I18n.t('billing.actions.current_plan')} — #{quote.price_label}"
|
||||
}
|
||||
end
|
||||
|
||||
return { kind: :quoted, plan: target_plan, quote: quote, intervals: [quote.billing_interval] }
|
||||
end
|
||||
|
||||
@@ -19,6 +26,9 @@ module Public
|
||||
|
||||
intervals = bank_transfer_intervals_for(target_plan)
|
||||
unless MatchLiveTv.stripe_enabled?
|
||||
if current_paid_plan?(subscription, target_plan)
|
||||
return { kind: :current, label: current_plan_label(target_plan, subscription) }
|
||||
end
|
||||
if MatchLiveTv.bank_transfer_configured?
|
||||
return { kind: :bank_only, plan: target_plan, intervals: intervals }
|
||||
end
|
||||
@@ -28,6 +38,9 @@ module Public
|
||||
|
||||
stripe_intervals = Billing::Stripe::PriceCatalog.available_intervals(plan_slug: target_plan.slug)
|
||||
if stripe_intervals.empty?
|
||||
if current_paid_plan?(subscription, target_plan)
|
||||
return { kind: :current, label: current_plan_label(target_plan, subscription) }
|
||||
end
|
||||
if MatchLiveTv.bank_transfer_configured?
|
||||
return { kind: :bank_only, plan: target_plan, intervals: intervals }
|
||||
end
|
||||
@@ -54,6 +67,10 @@ module Public
|
||||
}
|
||||
end
|
||||
|
||||
if current_paid_plan?(subscription, target_plan)
|
||||
return { kind: :current, label: current_plan_label(target_plan, subscription) }
|
||||
end
|
||||
|
||||
if current_slug == "free" || !stripe_subscription_active
|
||||
{ kind: :checkout_options, plan: target_plan, intervals: stripe_intervals.presence || intervals, subscription: subscription }
|
||||
else
|
||||
@@ -136,8 +153,21 @@ module Public
|
||||
return false unless MatchLiveTv.bank_transfer_configured?
|
||||
return false if quote && !quote.matches?(plan.slug, interval)
|
||||
return false if pending_transfer&.awaiting_payment?
|
||||
return false if current_paid_plan?(club.subscription, plan)
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
def current_paid_plan?(subscription, target_plan)
|
||||
return false unless subscription&.active? && subscription.premium?
|
||||
return false if subscription.plan_change_pending?
|
||||
|
||||
subscription.plan.slug == target_plan.slug
|
||||
end
|
||||
|
||||
def current_plan_label(target_plan, subscription)
|
||||
interval = subscription&.billing_interval.presence || Billing::Stripe::PriceCatalog::DEFAULT_INTERVAL
|
||||
"#{I18n.t('billing.actions.current_plan')} — #{Billing::Stripe::PriceCatalog.label(plan_slug: target_plan.slug, interval: interval)}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user