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



37160
37161
37162
37163
37164
37165
37166
37167
37168
37169
37170
37171
37172
37173
37174
37175
37176
37177
37178
37179
37180
37181
37182
37183
37184
37185
37186
37187
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37160

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.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def attributes
  @attributes
end

#balanceObject (readonly)

Returns the value of attribute balance.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def balance
  @balance
end

#customerObject (readonly)

Returns the value of attribute customer.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def customer
  @customer
end

#delivered_dutyObject (readonly)

Returns the value of attribute delivered_duty.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def delivered_duty
  @delivered_duty
end

#deliveriesObject (readonly)

Returns the value of attribute deliveries.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def deliveries
  @deliveries
end

#destinationObject (readonly)

Returns the value of attribute destination.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def destination
  @destination
end

#experienceObject (readonly)

Returns the value of attribute experience.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def experience
  @experience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def expires_at
  @expires_at
end

#geoObject (readonly)

Returns the value of attribute geo.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def geo
  @geo
end

#idObject (readonly)

Returns the value of attribute id.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def id
  @id
end

#identifiersObject (readonly)

Returns the value of attribute identifiers.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def identifiers
  @identifiers
end

#itemsObject (readonly)

Returns the value of attribute items.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def items
  @items
end

#linesObject (readonly)

Returns the value of attribute lines.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def lines
  @lines
end

#merchant_of_recordObject (readonly)

Returns the value of attribute merchant_of_record.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def merchant_of_record
  @merchant_of_record
end

#numberObject (readonly)

Returns the value of attribute number.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def number
  @number
end

#paymentsObject (readonly)

Returns the value of attribute payments.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def payments
  @payments
end

#pricesObject (readonly)

Returns the value of attribute prices.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def prices
  @prices
end

#promotionsObject (readonly)

Returns the value of attribute promotions.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def promotions
  @promotions
end

#rulesObject (readonly)

Returns the value of attribute rules.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def rules
  @rules
end

#selectionsObject (readonly)

Returns the value of attribute selections.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def selections
  @selections
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def 
  @submitted_at
end

#tax_registrationObject (readonly)

Returns the value of attribute tax_registration.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def tax_registration
  @tax_registration
end

#totalObject (readonly)

Returns the value of attribute total.



37158
37159
37160
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37158

def total
  @total
end

Instance Method Details

#copy(incoming = {}) ⇒ Object



37193
37194
37195
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37193

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

#subtype_to_hashObject



37197
37198
37199
37200
37201
37202
37203
37204
37205
37206
37207
37208
37209
37210
37211
37212
37213
37214
37215
37216
37217
37218
37219
37220
37221
37222
37223
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37197

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



37189
37190
37191
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 37189

def to_json
  JSON.dump(to_hash)
end