Rimuove link al portale Stripe in area cliente, aggiunge flusso admin per PDF fattura e email, blocca checkout senza dati di fatturazione, allinea prezzi a €4,90/€39,90 e €9,90/€69,90, locale italiano e documentazione deploy. Co-authored-by: Cursor <cursoragent@cursor.com>
30 lines
756 B
Ruby
30 lines
756 B
Ruby
module Billing
|
|
module Stripe
|
|
class CancelSubscription
|
|
def self.call(club:)
|
|
new(club: club).call
|
|
end
|
|
|
|
def initialize(club:)
|
|
@club = club
|
|
end
|
|
|
|
def call
|
|
raise "Stripe non configurato" unless MatchLiveTv.stripe_enabled?
|
|
|
|
sub = @club.subscription
|
|
raise "Nessun abbonamento premium attivo" unless sub&.premium? && sub.stripe_subscription_id.present?
|
|
raise "Disdetta già programmata" if sub.cancel_at_period_end?
|
|
|
|
stripe_sub = ::Stripe::Subscription.update(
|
|
sub.stripe_subscription_id,
|
|
cancel_at_period_end: true
|
|
)
|
|
|
|
CheckoutSync.from_subscription(stripe_sub, club: @club)
|
|
@club.subscription.reload
|
|
end
|
|
end
|
|
end
|
|
end
|