Class: AdvancedBilling::Allocation

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

Overview

Allocation Model.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseModel

#to_hash, #to_json

Constructor Details

#initialize(allocation_id: SKIP, component_id: SKIP, component_handle: SKIP, subscription_id: SKIP, quantity: SKIP, previous_quantity: SKIP, memo: SKIP, timestamp: SKIP, created_at: SKIP, proration_upgrade_scheme: SKIP, proration_downgrade_scheme: SKIP, price_point_id: SKIP, price_point_name: SKIP, price_point_handle: SKIP, interval: SKIP, interval_unit: SKIP, previous_price_point_id: SKIP, accrue_charge: SKIP, initiate_dunning: SKIP, upgrade_charge: SKIP, downgrade_credit: SKIP, payment: SKIP, expires_at: SKIP, used_quantity: SKIP, charge_id: SKIP, additional_properties: {}) ⇒ Allocation

Returns a new instance of Allocation.



220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
# File 'lib/advanced_billing/models/allocation.rb', line 220

def initialize(allocation_id: SKIP, component_id: SKIP,
               component_handle: SKIP, subscription_id: SKIP,
               quantity: SKIP, previous_quantity: SKIP, memo: SKIP,
               timestamp: SKIP, created_at: SKIP,
               proration_upgrade_scheme: SKIP,
               proration_downgrade_scheme: SKIP, price_point_id: SKIP,
               price_point_name: SKIP, price_point_handle: SKIP,
               interval: SKIP, interval_unit: SKIP,
               previous_price_point_id: SKIP, accrue_charge: SKIP,
               initiate_dunning: SKIP, upgrade_charge: SKIP,
               downgrade_credit: SKIP, payment: SKIP, expires_at: SKIP,
               used_quantity: SKIP, charge_id: SKIP,
               additional_properties: {})
  @allocation_id = allocation_id unless allocation_id == SKIP
  @component_id = component_id unless component_id == SKIP
  @component_handle = component_handle unless component_handle == SKIP
  @subscription_id = subscription_id unless subscription_id == SKIP
  @quantity = quantity unless quantity == SKIP
  @previous_quantity = previous_quantity unless previous_quantity == SKIP
  @memo = memo unless memo == SKIP
  @timestamp = timestamp unless timestamp == SKIP
  @created_at = created_at unless created_at == SKIP
  @proration_upgrade_scheme = proration_upgrade_scheme unless proration_upgrade_scheme == SKIP
  unless proration_downgrade_scheme == SKIP
    @proration_downgrade_scheme =
      proration_downgrade_scheme
  end
  @price_point_id = price_point_id unless price_point_id == SKIP
  @price_point_name = price_point_name unless price_point_name == SKIP
  @price_point_handle = price_point_handle unless price_point_handle == SKIP
  @interval = interval unless interval == SKIP
  @interval_unit = interval_unit unless interval_unit == SKIP
  @previous_price_point_id = previous_price_point_id unless previous_price_point_id == SKIP
  @accrue_charge = accrue_charge unless accrue_charge == SKIP
  @initiate_dunning = initiate_dunning unless initiate_dunning == SKIP
  @upgrade_charge = upgrade_charge unless upgrade_charge == SKIP
  @downgrade_credit = downgrade_credit unless downgrade_credit == SKIP
  @payment = payment unless payment == SKIP
  @expires_at = expires_at unless expires_at == SKIP
  @used_quantity = used_quantity unless used_quantity == SKIP
  @charge_id = charge_id unless charge_id == SKIP

  # Add additional model properties to the instance.
  additional_properties.each do |_name, _value|
    instance_variable_set("@#{_name}", _value)
  end
end

Instance Attribute Details

#accrue_chargeTrueClass | FalseClass

If the change in cost is an upgrade, this determines if the charge should accrue to the next renewal or if capture should be attempted immediately.

Returns:

  • (TrueClass | FalseClass)


102
103
104
# File 'lib/advanced_billing/models/allocation.rb', line 102

def accrue_charge
  @accrue_charge
end

#allocation_idInteger

The allocation unique id

Returns:

  • (Integer)


15
16
17
# File 'lib/advanced_billing/models/allocation.rb', line 15

def allocation_id
  @allocation_id
end

#charge_idInteger

The type of credit to be created when upgrading/downgrading. Defaults to the component and then site setting if one is not provided. Available values: ‘full`, `prorated`, `none`.

Returns:

  • (Integer)


144
145
146
# File 'lib/advanced_billing/models/allocation.rb', line 144

def charge_id
  @charge_id
end

#component_handleString

The handle of the component. This references a component that you have created in your Product setup

Returns:

  • (String)


25
26
27
# File 'lib/advanced_billing/models/allocation.rb', line 25

def component_handle
  @component_handle
end

#component_idInteger

The integer component ID for the allocation. This references a component that you have created in your Product setup

Returns:

  • (Integer)


20
21
22
# File 'lib/advanced_billing/models/allocation.rb', line 20

def component_id
  @component_id
end

#created_atDateTime

Timestamp indicating when this allocation was created

Returns:

  • (DateTime)


53
54
55
# File 'lib/advanced_billing/models/allocation.rb', line 53

def created_at
  @created_at
end

#downgrade_creditCreditType

The type of credit to be created when upgrading/downgrading. Defaults to the component and then site setting if one is not provided. Available values: ‘full`, `prorated`, `none`.

Returns:



120
121
122
# File 'lib/advanced_billing/models/allocation.rb', line 120

def downgrade_credit
  @downgrade_credit
end

#expires_atDateTime

The type of credit to be created when upgrading/downgrading. Defaults to the component and then site setting if one is not provided. Available values: ‘full`, `prorated`, `none`.

Returns:

  • (DateTime)


132
133
134
# File 'lib/advanced_billing/models/allocation.rb', line 132

def expires_at
  @expires_at
end

#initiate_dunningTrueClass | FalseClass

If true, if the immediate component payment fails, initiate dunning for the subscription. Otherwise, leave the charges on the subscription to pay for at renewal.

Returns:

  • (TrueClass | FalseClass)


108
109
110
# File 'lib/advanced_billing/models/allocation.rb', line 108

def initiate_dunning
  @initiate_dunning
end

#intervalInteger

The numerical interval. i.e. an interval of ‘30’ coupled with an interval_unit of day would mean this component price point would renew every 30 days. This property is only available for sites with Multifrequency enabled.

Returns:

  • (Integer)


85
86
87
# File 'lib/advanced_billing/models/allocation.rb', line 85

def interval
  @interval
end

#interval_unitIntervalUnit

A string representing the interval unit for this component price point, either month or day. This property is only available for sites with Multifrequency enabled.

Returns:



91
92
93
# File 'lib/advanced_billing/models/allocation.rb', line 91

def interval_unit
  @interval_unit
end

#memoString

The memo passed when the allocation was created

Returns:

  • (String)


44
45
46
# File 'lib/advanced_billing/models/allocation.rb', line 44

def memo
  @memo
end

#paymentPaymentForAllocation

The type of credit to be created when upgrading/downgrading. Defaults to the component and then site setting if one is not provided. Available values: ‘full`, `prorated`, `none`.



126
127
128
# File 'lib/advanced_billing/models/allocation.rb', line 126

def payment
  @payment
end

#previous_price_point_idInteger

A string representing the interval unit for this component price point, either month or day. This property is only available for sites with Multifrequency enabled.

Returns:

  • (Integer)


97
98
99
# File 'lib/advanced_billing/models/allocation.rb', line 97

def previous_price_point_id
  @previous_price_point_id
end

#previous_quantityObject

The allocated quantity that was in effect before this allocation was created. String for components supporting fractional quantities

Returns:

  • (Object)


40
41
42
# File 'lib/advanced_billing/models/allocation.rb', line 40

def previous_quantity
  @previous_quantity
end

#price_point_handleString

The scheme used if the proration was a downgrade. This is only present when the allocation was created mid-period.

Returns:

  • (String)


78
79
80
# File 'lib/advanced_billing/models/allocation.rb', line 78

def price_point_handle
  @price_point_handle
end

#price_point_idInteger

The scheme used if the proration was a downgrade. This is only present when the allocation was created mid-period.

Returns:

  • (Integer)


68
69
70
# File 'lib/advanced_billing/models/allocation.rb', line 68

def price_point_id
  @price_point_id
end

#price_point_nameString

The scheme used if the proration was a downgrade. This is only present when the allocation was created mid-period.

Returns:

  • (String)


73
74
75
# File 'lib/advanced_billing/models/allocation.rb', line 73

def price_point_name
  @price_point_name
end

#proration_downgrade_schemeString

The scheme used if the proration was a downgrade. This is only present when the allocation was created mid-period.

Returns:

  • (String)


63
64
65
# File 'lib/advanced_billing/models/allocation.rb', line 63

def proration_downgrade_scheme
  @proration_downgrade_scheme
end

#proration_upgrade_schemeString

The scheme used if the proration was an upgrade. This is only present when the allocation was created mid-period.

Returns:

  • (String)


58
59
60
# File 'lib/advanced_billing/models/allocation.rb', line 58

def proration_upgrade_scheme
  @proration_upgrade_scheme
end

#quantityObject

The allocated quantity set in to effect by the allocation. String for components supporting fractional quantities

Returns:

  • (Object)


35
36
37
# File 'lib/advanced_billing/models/allocation.rb', line 35

def quantity
  @quantity
end

#subscription_idInteger

The integer subscription ID for the allocation. This references a unique subscription in your Site

Returns:

  • (Integer)


30
31
32
# File 'lib/advanced_billing/models/allocation.rb', line 30

def subscription_id
  @subscription_id
end

#timestampDateTime

The time that the allocation was recorded, in format and UTC timezone, i.e. 2012-11-20T22:00:37Z

Returns:

  • (DateTime)


49
50
51
# File 'lib/advanced_billing/models/allocation.rb', line 49

def timestamp
  @timestamp
end

#upgrade_chargeCreditType

The type of credit to be created when upgrading/downgrading. Defaults to the component and then site setting if one is not provided. Available values: ‘full`, `prorated`, `none`.

Returns:



114
115
116
# File 'lib/advanced_billing/models/allocation.rb', line 114

def upgrade_charge
  @upgrade_charge
end

#used_quantityInteger

The type of credit to be created when upgrading/downgrading. Defaults to the component and then site setting if one is not provided. Available values: ‘full`, `prorated`, `none`.

Returns:

  • (Integer)


138
139
140
# File 'lib/advanced_billing/models/allocation.rb', line 138

def used_quantity
  @used_quantity
end

Class Method Details

.from_hash(hash) ⇒ Object

Creates an instance of the object from a hash.



269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
# File 'lib/advanced_billing/models/allocation.rb', line 269

def self.from_hash(hash)
  return nil unless hash

  # Extract variables from the hash.
  allocation_id = hash.key?('allocation_id') ? hash['allocation_id'] : SKIP
  component_id = hash.key?('component_id') ? hash['component_id'] : SKIP
  component_handle =
    hash.key?('component_handle') ? hash['component_handle'] : SKIP
  subscription_id =
    hash.key?('subscription_id') ? hash['subscription_id'] : SKIP
  quantity = hash.key?('quantity') ? APIHelper.deserialize_union_type(
    UnionTypeLookUp.get(:AllocationQuantity), hash['quantity']
  ) : SKIP
  previous_quantity = hash.key?('previous_quantity') ? APIHelper.deserialize_union_type(
    UnionTypeLookUp.get(:AllocationPreviousQuantity), hash['previous_quantity']
  ) : SKIP
  memo = hash.key?('memo') ? hash['memo'] : SKIP
  timestamp = if hash.key?('timestamp')
                (DateTimeHelper.from_rfc3339(hash['timestamp']) if hash['timestamp'])
              else
                SKIP
              end
  created_at = if hash.key?('created_at')
                 (DateTimeHelper.from_rfc3339(hash['created_at']) if hash['created_at'])
               else
                 SKIP
               end
  proration_upgrade_scheme =
    hash.key?('proration_upgrade_scheme') ? hash['proration_upgrade_scheme'] : SKIP
  proration_downgrade_scheme =
    hash.key?('proration_downgrade_scheme') ? hash['proration_downgrade_scheme'] : SKIP
  price_point_id =
    hash.key?('price_point_id') ? hash['price_point_id'] : SKIP
  price_point_name =
    hash.key?('price_point_name') ? hash['price_point_name'] : SKIP
  price_point_handle =
    hash.key?('price_point_handle') ? hash['price_point_handle'] : SKIP
  interval = hash.key?('interval') ? hash['interval'] : SKIP
  interval_unit = hash.key?('interval_unit') ? hash['interval_unit'] : SKIP
  previous_price_point_id =
    hash.key?('previous_price_point_id') ? hash['previous_price_point_id'] : SKIP
  accrue_charge = hash.key?('accrue_charge') ? hash['accrue_charge'] : SKIP
  initiate_dunning =
    hash.key?('initiate_dunning') ? hash['initiate_dunning'] : SKIP
  upgrade_charge =
    hash.key?('upgrade_charge') ? hash['upgrade_charge'] : SKIP
  downgrade_credit =
    hash.key?('downgrade_credit') ? hash['downgrade_credit'] : SKIP
  payment = PaymentForAllocation.from_hash(hash['payment']) if hash['payment']
  expires_at = if hash.key?('expires_at')
                 (DateTimeHelper.from_rfc3339(hash['expires_at']) if hash['expires_at'])
               else
                 SKIP
               end
  used_quantity = hash.key?('used_quantity') ? hash['used_quantity'] : SKIP
  charge_id = hash.key?('charge_id') ? hash['charge_id'] : SKIP

  # Clean out expected properties from Hash.
  names.each_value { |k| hash.delete(k) }

  # Create object from extracted values.
  Allocation.new(allocation_id: allocation_id,
                 component_id: component_id,
                 component_handle: component_handle,
                 subscription_id: subscription_id,
                 quantity: quantity,
                 previous_quantity: previous_quantity,
                 memo: memo,
                 timestamp: timestamp,
                 created_at: created_at,
                 proration_upgrade_scheme: proration_upgrade_scheme,
                 proration_downgrade_scheme: proration_downgrade_scheme,
                 price_point_id: price_point_id,
                 price_point_name: price_point_name,
                 price_point_handle: price_point_handle,
                 interval: interval,
                 interval_unit: interval_unit,
                 previous_price_point_id: previous_price_point_id,
                 accrue_charge: accrue_charge,
                 initiate_dunning: initiate_dunning,
                 upgrade_charge: upgrade_charge,
                 downgrade_credit: downgrade_credit,
                 payment: payment,
                 expires_at: expires_at,
                 used_quantity: used_quantity,
                 charge_id: charge_id,
                 additional_properties: hash)
end

.namesObject

A mapping from model property names to API property names.



147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/advanced_billing/models/allocation.rb', line 147

def self.names
  @_hash = {} if @_hash.nil?
  @_hash['allocation_id'] = 'allocation_id'
  @_hash['component_id'] = 'component_id'
  @_hash['component_handle'] = 'component_handle'
  @_hash['subscription_id'] = 'subscription_id'
  @_hash['quantity'] = 'quantity'
  @_hash['previous_quantity'] = 'previous_quantity'
  @_hash['memo'] = 'memo'
  @_hash['timestamp'] = 'timestamp'
  @_hash['created_at'] = 'created_at'
  @_hash['proration_upgrade_scheme'] = 'proration_upgrade_scheme'
  @_hash['proration_downgrade_scheme'] = 'proration_downgrade_scheme'
  @_hash['price_point_id'] = 'price_point_id'
  @_hash['price_point_name'] = 'price_point_name'
  @_hash['price_point_handle'] = 'price_point_handle'
  @_hash['interval'] = 'interval'
  @_hash['interval_unit'] = 'interval_unit'
  @_hash['previous_price_point_id'] = 'previous_price_point_id'
  @_hash['accrue_charge'] = 'accrue_charge'
  @_hash['initiate_dunning'] = 'initiate_dunning'
  @_hash['upgrade_charge'] = 'upgrade_charge'
  @_hash['downgrade_credit'] = 'downgrade_credit'
  @_hash['payment'] = 'payment'
  @_hash['expires_at'] = 'expires_at'
  @_hash['used_quantity'] = 'used_quantity'
  @_hash['charge_id'] = 'charge_id'
  @_hash
end

.nullablesObject

An array for nullable fields



209
210
211
212
213
214
215
216
217
218
# File 'lib/advanced_billing/models/allocation.rb', line 209

def self.nullables
  %w[
    component_handle
    memo
    interval_unit
    upgrade_charge
    downgrade_credit
    payment
  ]
end

.optionalsObject

An array for optional fields



178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
# File 'lib/advanced_billing/models/allocation.rb', line 178

def self.optionals
  %w[
    allocation_id
    component_id
    component_handle
    subscription_id
    quantity
    previous_quantity
    memo
    timestamp
    created_at
    proration_upgrade_scheme
    proration_downgrade_scheme
    price_point_id
    price_point_name
    price_point_handle
    interval
    interval_unit
    previous_price_point_id
    accrue_charge
    initiate_dunning
    upgrade_charge
    downgrade_credit
    payment
    expires_at
    used_quantity
    charge_id
  ]
end

.validate(value) ⇒ Object

Validates an instance of the object from a given value.

Parameters:

  • The (Allocation | Hash)

    value against the validation is performed.



372
373
374
375
376
377
378
# File 'lib/advanced_billing/models/allocation.rb', line 372

def self.validate(value)
  return true if value.instance_of? self

  return false unless value.instance_of? Hash

  true
end

Instance Method Details

#to_custom_created_atObject



362
363
364
# File 'lib/advanced_billing/models/allocation.rb', line 362

def to_custom_created_at
  DateTimeHelper.to_rfc3339(created_at)
end

#to_custom_expires_atObject



366
367
368
# File 'lib/advanced_billing/models/allocation.rb', line 366

def to_custom_expires_at
  DateTimeHelper.to_rfc3339(expires_at)
end

#to_custom_timestampObject



358
359
360
# File 'lib/advanced_billing/models/allocation.rb', line 358

def to_custom_timestamp
  DateTimeHelper.to_rfc3339(timestamp)
end