2019-07-30 21:29:24 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2020-06-12 20:03:43 +00:00
|
|
|
# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
|
|
|
|
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
|
2019-02-01 19:40:24 +00:00
|
|
|
class BillingSubscription < ApplicationRecord
|
2019-08-06 12:23:39 +00:00
|
|
|
# :nonprofit_id, :nonprofit,
|
|
|
|
# :billing_plan_id, :billing_plan,
|
|
|
|
# :stripe_subscription_id,
|
2019-11-05 19:38:36 +00:00
|
|
|
# :status # active, past_due, canceled, or unpaid
|
2018-03-25 17:30:42 +00:00
|
|
|
|
2019-07-30 21:29:24 +00:00
|
|
|
attr_accessor :stripe_plan_id, :manual
|
|
|
|
belongs_to :nonprofit
|
|
|
|
belongs_to :billing_plan
|
2018-03-25 17:30:42 +00:00
|
|
|
|
2019-07-30 21:29:24 +00:00
|
|
|
validates :nonprofit, presence: true
|
|
|
|
validates :billing_plan, presence: true
|
2018-03-25 17:30:42 +00:00
|
|
|
|
2019-07-30 21:29:24 +00:00
|
|
|
def as_json(options = {})
|
|
|
|
h = super(options)
|
|
|
|
h[:plan_name] = billing_plan.name
|
|
|
|
h[:plan_amount] = billing_plan.amount / 100
|
|
|
|
h
|
|
|
|
end
|
2018-03-25 17:30:42 +00:00
|
|
|
|
2019-07-30 21:29:24 +00:00
|
|
|
def self.create_with_stripe(np, params)
|
|
|
|
bp = BillingPlan.find_by_stripe_plan_id params[:stripe_plan_id]
|
|
|
|
h = ConstructBillingSubscription.with_stripe np, bp
|
|
|
|
np.create_billing_subscription h
|
|
|
|
end
|
2018-03-25 17:30:42 +00:00
|
|
|
end
|