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.



30911
30912
30913
30914
30915
30916
30917
30918
30919
30920
30921
30922
30923
30924
30925
30926
30927
30928
30929
30930
30931
30932
30933
30934
30935
30936
30937
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30911

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.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def attributes
  @attributes
end

#balanceObject (readonly)

Returns the value of attribute balance.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def balance
  @balance
end

#customerObject (readonly)

Returns the value of attribute customer.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def customer
  @customer
end

#delivered_dutyObject (readonly)

Returns the value of attribute delivered_duty.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def delivered_duty
  @delivered_duty
end

#deliveriesObject (readonly)

Returns the value of attribute deliveries.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def deliveries
  @deliveries
end

#destinationObject (readonly)

Returns the value of attribute destination.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def destination
  @destination
end

#experienceObject (readonly)

Returns the value of attribute experience.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def experience
  @experience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def expires_at
  @expires_at
end

#idObject (readonly)

Returns the value of attribute id.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def id
  @id
end

#identifiersObject (readonly)

Returns the value of attribute identifiers.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def identifiers
  @identifiers
end

#itemsObject (readonly)

Returns the value of attribute items.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def items
  @items
end

#linesObject (readonly)

Returns the value of attribute lines.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def lines
  @lines
end

#merchant_of_recordObject (readonly)

Returns the value of attribute merchant_of_record.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def merchant_of_record
  @merchant_of_record
end

#numberObject (readonly)

Returns the value of attribute number.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def number
  @number
end

#paymentsObject (readonly)

Returns the value of attribute payments.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def payments
  @payments
end

#pricesObject (readonly)

Returns the value of attribute prices.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def prices
  @prices
end

#promotionsObject (readonly)

Returns the value of attribute promotions.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def promotions
  @promotions
end

#rulesObject (readonly)

Returns the value of attribute rules.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def rules
  @rules
end

#selectionsObject (readonly)

Returns the value of attribute selections.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def selections
  @selections
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def 
  @submitted_at
end

#tax_registrationObject (readonly)

Returns the value of attribute tax_registration.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def tax_registration
  @tax_registration
end

#totalObject (readonly)

Returns the value of attribute total.



30909
30910
30911
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30909

def total
  @total
end

Instance Method Details

#copy(incoming = {}) ⇒ Object



30943
30944
30945
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30943

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

#subtype_to_hashObject



30947
30948
30949
30950
30951
30952
30953
30954
30955
30956
30957
30958
30959
30960
30961
30962
30963
30964
30965
30966
30967
30968
30969
30970
30971
30972
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30947

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



30939
30940
30941
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 30939

def to_json
  JSON.dump(to_hash)
end