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.



38965
38966
38967
38968
38969
38970
38971
38972
38973
38974
38975
38976
38977
38978
38979
38980
38981
38982
38983
38984
38985
38986
38987
38988
38989
38990
38991
38992
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38965

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.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def attributes
  @attributes
end

#balanceObject (readonly)

Returns the value of attribute balance.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def balance
  @balance
end

#customerObject (readonly)

Returns the value of attribute customer.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def customer
  @customer
end

#delivered_dutyObject (readonly)

Returns the value of attribute delivered_duty.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def delivered_duty
  @delivered_duty
end

#deliveriesObject (readonly)

Returns the value of attribute deliveries.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def deliveries
  @deliveries
end

#destinationObject (readonly)

Returns the value of attribute destination.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def destination
  @destination
end

#experienceObject (readonly)

Returns the value of attribute experience.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def experience
  @experience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def expires_at
  @expires_at
end

#geoObject (readonly)

Returns the value of attribute geo.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def geo
  @geo
end

#idObject (readonly)

Returns the value of attribute id.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def id
  @id
end

#identifiersObject (readonly)

Returns the value of attribute identifiers.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def identifiers
  @identifiers
end

#itemsObject (readonly)

Returns the value of attribute items.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def items
  @items
end

#linesObject (readonly)

Returns the value of attribute lines.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def lines
  @lines
end

#merchant_of_recordObject (readonly)

Returns the value of attribute merchant_of_record.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def merchant_of_record
  @merchant_of_record
end

#numberObject (readonly)

Returns the value of attribute number.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def number
  @number
end

#paymentsObject (readonly)

Returns the value of attribute payments.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def payments
  @payments
end

#pricesObject (readonly)

Returns the value of attribute prices.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def prices
  @prices
end

#promotionsObject (readonly)

Returns the value of attribute promotions.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def promotions
  @promotions
end

#rulesObject (readonly)

Returns the value of attribute rules.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def rules
  @rules
end

#selectionsObject (readonly)

Returns the value of attribute selections.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def selections
  @selections
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def 
  @submitted_at
end

#tax_registrationObject (readonly)

Returns the value of attribute tax_registration.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def tax_registration
  @tax_registration
end

#totalObject (readonly)

Returns the value of attribute total.



38963
38964
38965
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38963

def total
  @total
end

Instance Method Details

#copy(incoming = {}) ⇒ Object



38998
38999
39000
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38998

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

#subtype_to_hashObject



39002
39003
39004
39005
39006
39007
39008
39009
39010
39011
39012
39013
39014
39015
39016
39017
39018
39019
39020
39021
39022
39023
39024
39025
39026
39027
39028
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39002

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



38994
38995
38996
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38994

def to_json
  JSON.dump(to_hash)
end