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.



35180
35181
35182
35183
35184
35185
35186
35187
35188
35189
35190
35191
35192
35193
35194
35195
35196
35197
35198
35199
35200
35201
35202
35203
35204
35205
35206
35207
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35180

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::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.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def attributes
  @attributes
end

#balanceObject (readonly)

Returns the value of attribute balance.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def balance
  @balance
end

#customerObject (readonly)

Returns the value of attribute customer.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def customer
  @customer
end

#delivered_dutyObject (readonly)

Returns the value of attribute delivered_duty.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def delivered_duty
  @delivered_duty
end

#deliveriesObject (readonly)

Returns the value of attribute deliveries.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def deliveries
  @deliveries
end

#destinationObject (readonly)

Returns the value of attribute destination.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def destination
  @destination
end

#experienceObject (readonly)

Returns the value of attribute experience.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def experience
  @experience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def expires_at
  @expires_at
end

#geoObject (readonly)

Returns the value of attribute geo.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def geo
  @geo
end

#idObject (readonly)

Returns the value of attribute id.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def id
  @id
end

#identifiersObject (readonly)

Returns the value of attribute identifiers.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def identifiers
  @identifiers
end

#itemsObject (readonly)

Returns the value of attribute items.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def items
  @items
end

#linesObject (readonly)

Returns the value of attribute lines.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def lines
  @lines
end

#merchant_of_recordObject (readonly)

Returns the value of attribute merchant_of_record.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def merchant_of_record
  @merchant_of_record
end

#numberObject (readonly)

Returns the value of attribute number.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def number
  @number
end

#paymentsObject (readonly)

Returns the value of attribute payments.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def payments
  @payments
end

#pricesObject (readonly)

Returns the value of attribute prices.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def prices
  @prices
end

#promotionsObject (readonly)

Returns the value of attribute promotions.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def promotions
  @promotions
end

#rulesObject (readonly)

Returns the value of attribute rules.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def rules
  @rules
end

#selectionsObject (readonly)

Returns the value of attribute selections.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def selections
  @selections
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def 
  @submitted_at
end

#tax_registrationObject (readonly)

Returns the value of attribute tax_registration.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def tax_registration
  @tax_registration
end

#totalObject (readonly)

Returns the value of attribute total.



35178
35179
35180
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35178

def total
  @total
end

Instance Method Details

#copy(incoming = {}) ⇒ Object



35213
35214
35215
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35213

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

#subtype_to_hashObject



35217
35218
35219
35220
35221
35222
35223
35224
35225
35226
35227
35228
35229
35230
35231
35232
35233
35234
35235
35236
35237
35238
35239
35240
35241
35242
35243
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35217

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,
    :geo => geo.nil? ? nil : geo.to_hash
  }
end

#to_jsonObject



35209
35210
35211
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35209

def to_json
  JSON.dump(to_hash)
end