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.



29265
29266
29267
29268
29269
29270
29271
29272
29273
29274
29275
29276
29277
29278
29279
29280
29281
29282
29283
29284
29285
29286
29287
29288
29289
29290
29291
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29265

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)
  @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::Customer) ? x : ::Io::Flow::V0::Models::Customer.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)))
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def attributes
  @attributes
end

#balanceObject (readonly)

Returns the value of attribute balance.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def balance
  @balance
end

#customerObject (readonly)

Returns the value of attribute customer.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def customer
  @customer
end

#delivered_dutyObject (readonly)

Returns the value of attribute delivered_duty.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def delivered_duty
  @delivered_duty
end

#deliveriesObject (readonly)

Returns the value of attribute deliveries.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def deliveries
  @deliveries
end

#destinationObject (readonly)

Returns the value of attribute destination.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def destination
  @destination
end

#experienceObject (readonly)

Returns the value of attribute experience.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def experience
  @experience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def expires_at
  @expires_at
end

#idObject (readonly)

Returns the value of attribute id.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def id
  @id
end

#identifiersObject (readonly)

Returns the value of attribute identifiers.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def identifiers
  @identifiers
end

#itemsObject (readonly)

Returns the value of attribute items.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def items
  @items
end

#linesObject (readonly)

Returns the value of attribute lines.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def lines
  @lines
end

#merchant_of_recordObject (readonly)

Returns the value of attribute merchant_of_record.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def merchant_of_record
  @merchant_of_record
end

#numberObject (readonly)

Returns the value of attribute number.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def number
  @number
end

#paymentsObject (readonly)

Returns the value of attribute payments.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def payments
  @payments
end

#pricesObject (readonly)

Returns the value of attribute prices.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def prices
  @prices
end

#promotionsObject (readonly)

Returns the value of attribute promotions.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def promotions
  @promotions
end

#rulesObject (readonly)

Returns the value of attribute rules.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def rules
  @rules
end

#selectionsObject (readonly)

Returns the value of attribute selections.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def selections
  @selections
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def 
  @submitted_at
end

#tax_registrationObject (readonly)

Returns the value of attribute tax_registration.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def tax_registration
  @tax_registration
end

#totalObject (readonly)

Returns the value of attribute total.



29263
29264
29265
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29263

def total
  @total
end

Instance Method Details

#copy(incoming = {}) ⇒ Object



29297
29298
29299
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29297

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

#subtype_to_hashObject



29301
29302
29303
29304
29305
29306
29307
29308
29309
29310
29311
29312
29313
29314
29315
29316
29317
29318
29319
29320
29321
29322
29323
29324
29325
29326
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29301

def subtype_to_hash
  {
    :id => id,
    :number => number,
    :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
  }
end

#to_jsonObject



29293
29294
29295
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29293

def to_json
  JSON.dump(to_hash)
end