store next billing dates

This commit is contained in:
Tanmay Deep Sharma
2025-10-29 20:29:09 +05:30
parent 4aa567ee3d
commit 52f673e56c
4 changed files with 41 additions and 9 deletions
@@ -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