Class: Io::Flow::V0::Models::Order

Inherits:
ExpandableOrder show all
Defined in:
lib/flow_commerce/flow_api_v0_client.rb

Overview

An order represents all of the information about a particular set of line items, including pricing, currency rates, delivery options, etc. All information in an order is guaranteed by Flow - if an order is submitted before its expiration. The intended use case is to create an order as a consumer enters checkout, then to submit that order as part of the user submitting their order. Note that Flow will automatically mark an order submitted if we see payment authorization(s) covering the full balance of an order.

Instance Attribute Summary collapse

Attributes inherited from ExpandableOrder

#discriminator

Instance Method Summary collapse

Methods inherited from ExpandableOrder

from_json, #to_hash

Constructor Details

#initialize(incoming = {}) ⇒ Order

Returns a new instance of Order.



45250
45251
45252
45253
45254
45255
45256
45257
45258
45259
45260
45261
45262
45263
45264
45265
45266
45267
45268
45269
45270
45271
45272
45273
45274
45275
45276
45277
45278
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45250

def initialize(incoming={})
  super(:discriminator => ExpandableOrder::Types::ORDER)
  opts = HttpClient::Helper.symbolize_keys(incoming)
  HttpClient::Preconditions.require_keys(opts, [:id, :number, :customer, :delivered_duty, :destination, :expires_at, :items, :deliveries, :selections, :prices, :total, :attributes], 'Order')
  @id = HttpClient::Preconditions.assert_class('id', opts.delete(:id), String)
  @number = HttpClient::Preconditions.assert_class('number', opts.delete(:number), String)
  @order_type = (x = (x = opts.delete(:order_type); x.nil? ? "standard" : x); x.is_a?(::Io::Flow::V0::Models::OrderType) ? x : ::Io::Flow::V0::Models::OrderType.apply(x))
  @merchant_of_record = (x = opts.delete(:merchant_of_record); x.nil? ? nil : (x = x; x.is_a?(::Io::Flow::V0::Models::OrderMerchantOfRecord) ? x : ::Io::Flow::V0::Models::OrderMerchantOfRecord.apply(x)))
  @experience = (x = opts.delete(:experience); x.nil? ? nil : (x = x; x.is_a?(::Io::Flow::V0::Models::ExpandableExperience) ? x : ::Io::Flow::V0::Models::ExpandableExperience.from_json(x)))
  @customer = (x = opts.delete(:customer); x.is_a?(::Io::Flow::V0::Models::OrderCustomer) ? x : ::Io::Flow::V0::Models::OrderCustomer.new(x))
  @delivered_duty = (x = opts.delete(:delivered_duty); x.is_a?(::Io::Flow::V0::Models::DeliveredDuty) ? x : ::Io::Flow::V0::Models::DeliveredDuty.apply(x))
  @destination = (x = opts.delete(:destination); x.is_a?(::Io::Flow::V0::Models::OrderAddress) ? x : ::Io::Flow::V0::Models::OrderAddress.new(x))
  @expires_at = HttpClient::Preconditions.assert_class('expires_at', HttpClient::Helper.to_date_time_iso8601(opts.delete(:expires_at)), DateTime)
  @items = HttpClient::Preconditions.assert_class('items', opts.delete(:items), Array).map { |v| (x = v; x.is_a?(::Io::Flow::V0::Models::LocalizedLineItem) ? x : ::Io::Flow::V0::Models::LocalizedLineItem.new(x)) }
  @deliveries = HttpClient::Preconditions.assert_class('deliveries', opts.delete(:deliveries), Array).map { |v| (x = v; x.is_a?(::Io::Flow::V0::Models::Delivery) ? x : ::Io::Flow::V0::Models::Delivery.from_json(x)) }
  @selections = HttpClient::Preconditions.assert_class('selections', opts.delete(:selections), Array).map { |v| HttpClient::Preconditions.assert_class('selections', v, String) }
  @prices = HttpClient::Preconditions.assert_class('prices', opts.delete(:prices), Array).map { |v| (x = v; x.is_a?(::Io::Flow::V0::Models::OrderPriceDetail) ? x : ::Io::Flow::V0::Models::OrderPriceDetail.new(x)) }
  @total = (x = opts.delete(:total); x.is_a?(::Io::Flow::V0::Models::LocalizedTotal) ? x : ::Io::Flow::V0::Models::LocalizedTotal.new(x))
  @attributes = HttpClient::Preconditions.assert_class('attributes', opts.delete(:attributes), Hash).inject({}) { |h, d| h[d[0]] = HttpClient::Preconditions.assert_class('attributes', d[1], String); h }
  @submitted_at = (x = opts.delete(:submitted_at); x.nil? ? nil : HttpClient::Preconditions.assert_class('submitted_at', HttpClient::Helper.to_date_time_iso8601(x), DateTime))
  @lines = (x = opts.delete(:lines); x.nil? ? nil : HttpClient::Preconditions.assert_class('lines', x, Array).map { |v| (x = v; x.is_a?(::Io::Flow::V0::Models::Line) ? x : ::Io::Flow::V0::Models::Line.new(x)) })
  @identifiers = (x = opts.delete(:identifiers); x.nil? ? nil : HttpClient::Preconditions.assert_class('identifiers', x, Array).map { |v| HttpClient::Preconditions.assert_class('identifiers', v, String) })
  @promotions = (x = opts.delete(:promotions); x.nil? ? nil : (x = x; x.is_a?(::Io::Flow::V0::Models::Promotions) ? x : ::Io::Flow::V0::Models::Promotions.new(x)))
  @payments = (x = opts.delete(:payments); x.nil? ? nil : HttpClient::Preconditions.assert_class('payments', x, Array).map { |v| (x = v; x.is_a?(::Io::Flow::V0::Models::OrderPayment) ? x : ::Io::Flow::V0::Models::OrderPayment.new(x)) })
  @balance = (x = opts.delete(:balance); x.nil? ? nil : (x = x; x.is_a?(::Io::Flow::V0::Models::LocalizedTotal) ? x : ::Io::Flow::V0::Models::LocalizedTotal.new(x)))
  @rules = (x = opts.delete(:rules); x.nil? ? nil : (x = x; x.is_a?(::Io::Flow::V0::Models::OrderRulesSummary) ? x : ::Io::Flow::V0::Models::OrderRulesSummary.new(x)))
  @tax_registration = (x = opts.delete(:tax_registration); x.nil? ? nil : (x = x; x.is_a?(::Io::Flow::V0::Models::TaxRegistration) ? x : ::Io::Flow::V0::Models::TaxRegistration.new(x)))
  @geo = (x = opts.delete(:geo); x.nil? ? nil : (x = x; x.is_a?(::Io::Flow::V0::Models::OrderGeo) ? x : ::Io::Flow::V0::Models::OrderGeo.new(x)))
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def attributes
  @attributes
end

#balanceObject (readonly)

Returns the value of attribute balance.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def balance
  @balance
end

#customerObject (readonly)

Returns the value of attribute customer.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def customer
  @customer
end

#delivered_dutyObject (readonly)

Returns the value of attribute delivered_duty.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def delivered_duty
  @delivered_duty
end

#deliveriesObject (readonly)

Returns the value of attribute deliveries.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def deliveries
  @deliveries
end

#destinationObject (readonly)

Returns the value of attribute destination.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def destination
  @destination
end

#experienceObject (readonly)

Returns the value of attribute experience.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def experience
  @experience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def expires_at
  @expires_at
end

#geoObject (readonly)

Returns the value of attribute geo.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def geo
  @geo
end

#idObject (readonly)

Returns the value of attribute id.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def id
  @id
end

#identifiersObject (readonly)

Returns the value of attribute identifiers.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def identifiers
  @identifiers
end

#itemsObject (readonly)

Returns the value of attribute items.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def items
  @items
end

#linesObject (readonly)

Returns the value of attribute lines.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def lines
  @lines
end

#merchant_of_recordObject (readonly)

Returns the value of attribute merchant_of_record.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def merchant_of_record
  @merchant_of_record
end

#numberObject (readonly)

Returns the value of attribute number.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def number
  @number
end

#order_typeObject (readonly)

Returns the value of attribute order_type.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def order_type
  @order_type
end

#paymentsObject (readonly)

Returns the value of attribute payments.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def payments
  @payments
end

#pricesObject (readonly)

Returns the value of attribute prices.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def prices
  @prices
end

#promotionsObject (readonly)

Returns the value of attribute promotions.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def promotions
  @promotions
end

#rulesObject (readonly)

Returns the value of attribute rules.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def rules
  @rules
end

#selectionsObject (readonly)

Returns the value of attribute selections.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def selections
  @selections
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def 
  @submitted_at
end

#tax_registrationObject (readonly)

Returns the value of attribute tax_registration.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def tax_registration
  @tax_registration
end

#totalObject (readonly)

Returns the value of attribute total.



45248
45249
45250
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45248

def total
  @total
end

Instance Method Details

#copy(incoming = {}) ⇒ Object



45284
45285
45286
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45284

def copy(incoming={})
  Order.new(subtype_to_hash.merge(HttpClient::Helper.symbolize_keys(incoming)))
end

#subtype_to_hashObject



45288
45289
45290
45291
45292
45293
45294
45295
45296
45297
45298
45299
45300
45301
45302
45303
45304
45305
45306
45307
45308
45309
45310
45311
45312
45313
45314
45315
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45288

def subtype_to_hash
  {
    :id => id,
    :number => number,
    :order_type => order_type.value,
    :merchant_of_record => merchant_of_record.nil? ? nil : merchant_of_record.value,
    :experience => experience.nil? ? nil : experience.to_hash,
    :customer => customer.to_hash,
    :delivered_duty => delivered_duty.value,
    :destination => destination.to_hash,
    :expires_at => expires_at,
    :items => items.map { |o| o.to_hash },
    :deliveries => deliveries.map { |o| o.to_hash },
    :selections => selections,
    :prices => prices.map { |o| o.to_hash },
    :total => total.to_hash,
    :attributes => attributes,
    :submitted_at => ,
    :lines => lines.nil? ? nil : lines.map { |o| o.to_hash },
    :identifiers => identifiers.nil? ? nil : identifiers,
    :promotions => promotions.nil? ? nil : promotions.to_hash,
    :payments => payments.nil? ? nil : payments.map { |o| o.to_hash },
    :balance => balance.nil? ? nil : balance.to_hash,
    :rules => rules.nil? ? nil : rules.to_hash,
    :tax_registration => tax_registration.nil? ? nil : tax_registration.to_hash,
    :geo => geo.nil? ? nil : geo.to_hash
  }
end

#to_jsonObject



45280
45281
45282
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45280

def to_json
  JSON.dump(to_hash)
end