store next billing dates
This commit is contained in:
@@ -6,6 +6,10 @@ if resource.custom_attributes.present?
|
||||
json.subscribed_quantity resource.custom_attributes['subscribed_quantity']
|
||||
json.subscription_status resource.custom_attributes['subscription_status']
|
||||
json.subscription_ends_on resource.custom_attributes['subscription_ends_on']
|
||||
json.stripe_subscription_id resource.custom_attributes['stripe_subscription_id'] if resource.custom_attributes['stripe_subscription_id'].present?
|
||||
json.pending_stripe_pricing_plan_id resource.custom_attributes['pending_stripe_pricing_plan_id'] if resource.custom_attributes['pending_stripe_pricing_plan_id'].present?
|
||||
json.pending_subscription_quantity resource.custom_attributes['pending_subscription_quantity'] if resource.custom_attributes['pending_subscription_quantity'].present?
|
||||
json.next_billing_date resource.custom_attributes['next_billing_date'] if resource.custom_attributes['next_billing_date'].present?
|
||||
json.industry resource.custom_attributes['industry'] if resource.custom_attributes['industry'].present?
|
||||
json.company_size resource.custom_attributes['company_size'] if resource.custom_attributes['company_size'].present?
|
||||
json.timezone resource.custom_attributes['timezone'] if resource.custom_attributes['timezone'].present?
|
||||
|
||||
@@ -27,6 +27,7 @@ class Enterprise::Billing::V2::ChangePlanService < Enterprise::Billing::V2::Base
|
||||
def create_change_plan_intent(new_pricing_plan_id, quantity)
|
||||
subscription_id = fetch_subscription_id
|
||||
cadence_id = fetch_cadence_from_subscription(subscription_id)
|
||||
store_next_billing_date(cadence_id)
|
||||
plan_version = fetch_new_plan_version(new_pricing_plan_id)
|
||||
lookup_key = fetch_plan_lookup_key(new_pricing_plan_id)
|
||||
component_config = { lookup_key: lookup_key, quantity: quantity }
|
||||
@@ -120,10 +121,25 @@ class Enterprise::Billing::V2::ChangePlanService < Enterprise::Billing::V2::Base
|
||||
)
|
||||
end
|
||||
|
||||
def retrieve_billing_cadence(cadence_id)
|
||||
StripeV2Client.request(
|
||||
:get,
|
||||
"/v2/billing/cadences/#{cadence_id}",
|
||||
{},
|
||||
stripe_api_options
|
||||
)
|
||||
end
|
||||
|
||||
def store_next_billing_date(cadence_id)
|
||||
cadence = retrieve_billing_cadence(cadence_id)
|
||||
@next_billing_date = extract_attribute(cadence, :next_billing_date)
|
||||
end
|
||||
|
||||
def update_account_plan(new_pricing_plan_id, quantity)
|
||||
attributes = {
|
||||
'pending_stripe_pricing_plan_id' => new_pricing_plan_id,
|
||||
'pending_subscription_quantity' => quantity
|
||||
'pending_subscription_quantity' => quantity,
|
||||
'next_billing_date' => @next_billing_date
|
||||
}
|
||||
|
||||
# Add plan name from catalog
|
||||
|
||||
@@ -120,7 +120,9 @@ class Enterprise::Billing::V2::SubscriptionProvisioningService < Enterprise::Bil
|
||||
'subscription_status' => 'active',
|
||||
'pending_subscription_quantity' => nil,
|
||||
'pending_subscription_pricing_plan' => nil,
|
||||
'billing_cadence' => billing_cadence
|
||||
'billing_cadence' => billing_cadence,
|
||||
'next_billing_date' => nil,
|
||||
'pending_stripe_pricing_plan_id' => nil
|
||||
}
|
||||
attributes['stripe_pricing_plan_id'] = pricing_plan_id if pricing_plan_id.present?
|
||||
|
||||
|
||||
@@ -29,11 +29,11 @@ class Enterprise::Billing::V2::UpdateSubscriptionService < Enterprise::Billing::
|
||||
subscription_id = fetch_subscription_id
|
||||
subscription = retrieve_pricing_plan_subscription(subscription_id)
|
||||
cadence_id, plan_id, plan_version = extract_subscription_details(subscription)
|
||||
store_next_billing_date(cadence_id)
|
||||
lookup_key = fetch_plan_lookup_key(plan_id)
|
||||
component_config = { lookup_key: lookup_key, quantity: quantity }
|
||||
|
||||
params = build_modify_params(subscription_id, cadence_id, plan_id, plan_version, component_config)
|
||||
log_modify_intent(params)
|
||||
|
||||
StripeV2Client.request(:post, '/v2/billing/intents', params, stripe_api_options)
|
||||
end
|
||||
@@ -81,11 +81,6 @@ class Enterprise::Billing::V2::UpdateSubscriptionService < Enterprise::Billing::
|
||||
}
|
||||
end
|
||||
|
||||
def log_modify_intent(params)
|
||||
Rails.logger.info "Create modify intent params: #{params.inspect}"
|
||||
Rails.logger.info "Stripe API options: #{stripe_api_options.inspect}"
|
||||
end
|
||||
|
||||
def reserve_billing_intent(billing_intent)
|
||||
StripeV2Client.request(
|
||||
:post,
|
||||
@@ -113,9 +108,24 @@ class Enterprise::Billing::V2::UpdateSubscriptionService < Enterprise::Billing::
|
||||
)
|
||||
end
|
||||
|
||||
def retrieve_billing_cadence(cadence_id)
|
||||
StripeV2Client.request(
|
||||
:get,
|
||||
"/v2/billing/cadences/#{cadence_id}",
|
||||
{},
|
||||
stripe_api_options
|
||||
)
|
||||
end
|
||||
|
||||
def store_next_billing_date(cadence_id)
|
||||
cadence = retrieve_billing_cadence(cadence_id)
|
||||
@next_billing_date = extract_attribute(cadence, :next_billing_date)
|
||||
end
|
||||
|
||||
def update_account_quantity(quantity)
|
||||
update_custom_attributes({
|
||||
'pending_subscription_quantity' => quantity
|
||||
'pending_subscription_quantity' => quantity,
|
||||
'next_billing_date' => @next_billing_date
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user