pub struct Subscription {Show 31 fields
pub id: SubscriptionId,
pub subscription_number: String,
pub customer_id: CustomerId,
pub plan_id: Uuid,
pub plan_name: String,
pub status: SubscriptionStatus,
pub billing_interval: BillingInterval,
pub custom_interval_days: Option<i32>,
pub price: Decimal,
pub currency: CurrencyCode,
pub payment_method_id: Option<String>,
pub started_at: DateTime<Utc>,
pub current_period_start: DateTime<Utc>,
pub current_period_end: DateTime<Utc>,
pub next_billing_date: Option<DateTime<Utc>>,
pub trial_ends_at: Option<DateTime<Utc>>,
pub cancelled_at: Option<DateTime<Utc>>,
pub ends_at: Option<DateTime<Utc>>,
pub paused_at: Option<DateTime<Utc>>,
pub resume_at: Option<DateTime<Utc>>,
pub billing_cycle_count: i32,
pub failed_payment_attempts: i32,
pub items: Vec<SubscriptionItem>,
pub shipping_address: Option<Address>,
pub billing_address: Option<Address>,
pub discount_percent: Option<Decimal>,
pub discount_amount: Option<Decimal>,
pub coupon_code: Option<String>,
pub metadata: Option<Value>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}Expand description
A customer’s subscription
Fields§
§id: SubscriptionId§subscription_number: StringHuman-readable subscription number
customer_id: CustomerId§plan_id: Uuid§plan_name: StringSnapshot of plan name at time of subscription
status: SubscriptionStatus§billing_interval: BillingInterval§custom_interval_days: Option<i32>§price: DecimalCurrent price per cycle
currency: CurrencyCode§payment_method_id: Option<String>Payment method ID (from payment provider)
started_at: DateTime<Utc>When the subscription started
current_period_start: DateTime<Utc>When current billing period started
current_period_end: DateTime<Utc>When current billing period ends
next_billing_date: Option<DateTime<Utc>>Next billing date
trial_ends_at: Option<DateTime<Utc>>Trial end date (if applicable)
cancelled_at: Option<DateTime<Utc>>When subscription was cancelled (if applicable)
ends_at: Option<DateTime<Utc>>When subscription ends (for cancelled subscriptions)
paused_at: Option<DateTime<Utc>>When subscription was paused
resume_at: Option<DateTime<Utc>>When to auto-resume (if paused with a date)
billing_cycle_count: i32Number of completed billing cycles
failed_payment_attempts: i32Number of failed payment attempts in current cycle
items: Vec<SubscriptionItem>§shipping_address: Option<Address>§billing_address: Option<Address>§discount_percent: Option<Decimal>§discount_amount: Option<Decimal>§coupon_code: Option<String>Coupon code applied (if any)
metadata: Option<Value>§created_at: DateTime<Utc>§updated_at: DateTime<Utc>Implementations§
Source§impl Subscription
impl Subscription
Sourcepub fn can_resume(&self) -> bool
pub fn can_resume(&self) -> bool
Check if subscription can be resumed
Sourcepub const fn can_cancel(&self) -> bool
pub const fn can_cancel(&self) -> bool
Check if subscription can be cancelled
Sourcepub fn is_in_trial(&self) -> bool
pub fn is_in_trial(&self) -> bool
Check if subscription is in trial period
Sourcepub fn trial_days_remaining(&self) -> Option<i64>
pub fn trial_days_remaining(&self) -> Option<i64>
Calculate remaining trial days
Sourcepub fn calculate_total(&self) -> Decimal
pub fn calculate_total(&self) -> Decimal
Calculate total subscription value
Sourcepub fn next_billing_amount(&self) -> Decimal
pub fn next_billing_amount(&self) -> Decimal
Get next billing amount (after discounts)
Trait Implementations§
Source§impl Clone for Subscription
impl Clone for Subscription
Source§fn clone(&self) -> Subscription
fn clone(&self) -> Subscription
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more