Files
eminuxandCursor e436f5ece4 Aggiunge pagamento con bonifico e importo concordato per società.
Il piano si attiva solo dopo la conferma admin; Stripe resta a listino se non c'è un prezzo commerciale.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 23:20:43 +02:00

43 lines
927 B
Ruby

class Subscription < ApplicationRecord
STATUSES = %w[active trialing past_due canceled incomplete].freeze
ACTIVE_STATUSES = %w[active trialing].freeze
belongs_to :club
belongs_to :plan
belongs_to :pending_plan, class_name: "Plan", optional: true
belongs_to :admin_comped_by, class_name: "AdminAccount", optional: true
validates :status, inclusion: { in: STATUSES }
validates :club_id, uniqueness: true
scope :active, -> { where(status: ACTIVE_STATUSES) }
def active?
status.in?(ACTIVE_STATUSES)
end
def premium?
active? && plan.premium?
end
def premium_full?
active? && plan.slug == "premium_full"
end
def free?
plan.slug == "free"
end
def plan_change_pending?
pending_plan_id.present?
end
def admin_comped?
admin_comped
end
def bank_transfer?
premium? && stripe_subscription_id.blank? && !admin_comped? && current_period_end.present?
end
end