Class: AdvancedBilling::SubscriptionProductMigration

Inherits:
BaseModel
  • Object
show all
Defined in:
lib/advanced_billing/models/subscription_product_migration.rb

Overview

SubscriptionProductMigration Model.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseModel

#to_hash, #to_json

Constructor Details

#initialize(product_id = SKIP, product_price_point_id = SKIP, include_trial = false, include_initial_charge = false, include_coupons = true, preserve_period = false, product_handle = SKIP, product_price_point_handle = SKIP, proration = SKIP) ⇒ SubscriptionProductMigration



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/advanced_billing/models/subscription_product_migration.rb', line 99

def initialize(product_id = SKIP, product_price_point_id = SKIP,
               include_trial = false, include_initial_charge = false,
               include_coupons = true, preserve_period = false,
               product_handle = SKIP, product_price_point_handle = SKIP,
               proration = SKIP)
  @product_id = product_id unless product_id == SKIP
  @product_price_point_id = product_price_point_id unless product_price_point_id == SKIP
  @include_trial = include_trial unless include_trial == SKIP
  @include_initial_charge = include_initial_charge unless include_initial_charge == SKIP
  @include_coupons = include_coupons unless include_coupons == SKIP
  @preserve_period = preserve_period unless preserve_period == SKIP
  @product_handle = product_handle unless product_handle == SKIP
  unless product_price_point_handle == SKIP
    @product_price_point_handle =
      product_price_point_handle
  end
  @proration = proration unless proration == SKIP
end

Instance Attribute Details

#include_couponsTrueClass | FalseClass

If ‘true` is sent, any coupons associated with the subscription will be applied to the migration. If `false` is sent, coupons will not be applied. Note: When migrating to a new product family, the coupon cannot migrate.



38
39
40
# File 'lib/advanced_billing/models/subscription_product_migration.rb', line 38

def include_coupons
  @include_coupons
end

#include_initial_chargeTrueClass | FalseClass

If ‘true` is sent initial charges will be assessed.



32
33
34
# File 'lib/advanced_billing/models/subscription_product_migration.rb', line 32

def include_initial_charge
  @include_initial_charge
end

#include_trialTrueClass | FalseClass

Whether to include the trial period configured for the product price point when starting a new billing period. Note that if preserve_period is set, then include_trial will be ignored.



28
29
30
# File 'lib/advanced_billing/models/subscription_product_migration.rb', line 28

def include_trial
  @include_trial
end

#preserve_periodTrueClass | FalseClass

If ‘false` is sent, the subscription’s billing period will be reset to today and the full price of the new product will be charged. If ‘true` is sent, the billing period will not change and a prorated charge will be issued for the new product.



45
46
47
# File 'lib/advanced_billing/models/subscription_product_migration.rb', line 45

def preserve_period
  @preserve_period
end

#product_handleString

The handle of the target Product. Either a product_id or product_handle must be present. A Subscription can be migrated to another product for both the current Product Family and another Product Family. Note: Going to another Product Family, components will not be migrated as well.



52
53
54
# File 'lib/advanced_billing/models/subscription_product_migration.rb', line 52

def product_handle
  @product_handle
end

#product_idInteger

The ID of the target Product. Either a product_id or product_handle must be present. A Subscription can be migrated to another product for both the current Product Family and another Product Family. Note: Going to another Product Family, components will not be migrated as well.



17
18
19
# File 'lib/advanced_billing/models/subscription_product_migration.rb', line 17

def product_id
  @product_id
end

#product_price_point_handleString

The ID or handle of the specified product’s price point. This can be passed to migrate to a non-default price point.



57
58
59
# File 'lib/advanced_billing/models/subscription_product_migration.rb', line 57

def product_price_point_handle
  @product_price_point_handle
end

#product_price_point_idInteger

The ID of the specified product’s price point. This can be passed to migrate to a non-default price point.



22
23
24
# File 'lib/advanced_billing/models/subscription_product_migration.rb', line 22

def product_price_point_id
  @product_price_point_id
end

#prorationProration

The ID or handle of the specified product’s price point. This can be passed to migrate to a non-default price point.



62
63
64
# File 'lib/advanced_billing/models/subscription_product_migration.rb', line 62

def proration
  @proration
end

Class Method Details

.from_hash(hash) ⇒ Object

Creates an instance of the object from a hash.



119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/advanced_billing/models/subscription_product_migration.rb', line 119

def self.from_hash(hash)
  return nil unless hash

  # Extract variables from the hash.

  product_id = hash.key?('product_id') ? hash['product_id'] : SKIP
  product_price_point_id =
    hash.key?('product_price_point_id') ? hash['product_price_point_id'] : SKIP
  include_trial = hash['include_trial'] ||= false
  include_initial_charge = hash['include_initial_charge'] ||= false
  include_coupons = hash['include_coupons'] ||= true
  preserve_period = hash['preserve_period'] ||= false
  product_handle =
    hash.key?('product_handle') ? hash['product_handle'] : SKIP
  product_price_point_handle =
    hash.key?('product_price_point_handle') ? hash['product_price_point_handle'] : SKIP
  proration = Proration.from_hash(hash['proration']) if hash['proration']

  # Create object from extracted values.

  SubscriptionProductMigration.new(product_id,
                                   product_price_point_id,
                                   include_trial,
                                   include_initial_charge,
                                   include_coupons,
                                   preserve_period,
                                   product_handle,
                                   product_price_point_handle,
                                   proration)
end

.namesObject

A mapping from model property names to API property names.



65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/advanced_billing/models/subscription_product_migration.rb', line 65

def self.names
  @_hash = {} if @_hash.nil?
  @_hash['product_id'] = 'product_id'
  @_hash['product_price_point_id'] = 'product_price_point_id'
  @_hash['include_trial'] = 'include_trial'
  @_hash['include_initial_charge'] = 'include_initial_charge'
  @_hash['include_coupons'] = 'include_coupons'
  @_hash['preserve_period'] = 'preserve_period'
  @_hash['product_handle'] = 'product_handle'
  @_hash['product_price_point_handle'] = 'product_price_point_handle'
  @_hash['proration'] = 'proration'
  @_hash
end

.nullablesObject

An array for nullable fields



95
96
97
# File 'lib/advanced_billing/models/subscription_product_migration.rb', line 95

def self.nullables
  []
end

.optionalsObject

An array for optional fields



80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/advanced_billing/models/subscription_product_migration.rb', line 80

def self.optionals
  %w[
    product_id
    product_price_point_id
    include_trial
    include_initial_charge
    include_coupons
    preserve_period
    product_handle
    product_price_point_handle
    proration
  ]
end