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.



51223
51224
51225
51226
51227
51228
51229
51230
51231
51232
51233
51234
51235
51236
51237
51238
51239
51240
51241
51242
51243
51244
51245
51246
51247
51248
51249
51250
51251
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51223

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.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def attributes
  @attributes
end

#balanceObject (readonly)

Returns the value of attribute balance.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def balance
  @balance
end

#customerObject (readonly)

Returns the value of attribute customer.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def customer
  @customer
end

#delivered_dutyObject (readonly)

Returns the value of attribute delivered_duty.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def delivered_duty
  @delivered_duty
end

#deliveriesObject (readonly)

Returns the value of attribute deliveries.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def deliveries
  @deliveries
end

#destinationObject (readonly)

Returns the value of attribute destination.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def destination
  @destination
end

#experienceObject (readonly)

Returns the value of attribute experience.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def experience
  @experience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def expires_at
  @expires_at
end

#geoObject (readonly)

Returns the value of attribute geo.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def geo
  @geo
end

#idObject (readonly)

Returns the value of attribute id.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def id
  @id
end

#identifiersObject (readonly)

Returns the value of attribute identifiers.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def identifiers
  @identifiers
end

#itemsObject (readonly)

Returns the value of attribute items.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def items
  @items
end

#linesObject (readonly)

Returns the value of attribute lines.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def lines
  @lines
end

#merchant_of_recordObject (readonly)

Returns the value of attribute merchant_of_record.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def merchant_of_record
  @merchant_of_record
end

#numberObject (readonly)

Returns the value of attribute number.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def number
  @number
end

#order_typeObject (readonly)

Returns the value of attribute order_type.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def order_type
  @order_type
end

#paymentsObject (readonly)

Returns the value of attribute payments.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def payments
  @payments
end

#pricesObject (readonly)

Returns the value of attribute prices.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def prices
  @prices
end

#promotionsObject (readonly)

Returns the value of attribute promotions.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def promotions
  @promotions
end

#rulesObject (readonly)

Returns the value of attribute rules.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def rules
  @rules
end

#selectionsObject (readonly)

Returns the value of attribute selections.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def selections
  @selections
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def 
  @submitted_at
end

#tax_registrationObject (readonly)

Returns the value of attribute tax_registration.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def tax_registration
  @tax_registration
end

#totalObject (readonly)

Returns the value of attribute total.



51221
51222
51223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51221

def total
  @total
end

Instance Method Details

#copy(incoming = {}) ⇒ Object



51257
51258
51259
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51257

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

#subtype_to_hashObject



51261
51262
51263
51264
51265
51266
51267
51268
51269
51270
51271
51272
51273
51274
51275
51276
51277
51278
51279
51280
51281
51282
51283
51284
51285
51286
51287
51288
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51261

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



51253
51254
51255
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 51253

def to_json
  JSON.dump(to_hash)
end