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.



38861
38862
38863
38864
38865
38866
38867
38868
38869
38870
38871
38872
38873
38874
38875
38876
38877
38878
38879
38880
38881
38882
38883
38884
38885
38886
38887
38888
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38861

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.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def attributes
  @attributes
end

#balanceObject (readonly)

Returns the value of attribute balance.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def balance
  @balance
end

#customerObject (readonly)

Returns the value of attribute customer.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def customer
  @customer
end

#delivered_dutyObject (readonly)

Returns the value of attribute delivered_duty.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def delivered_duty
  @delivered_duty
end

#deliveriesObject (readonly)

Returns the value of attribute deliveries.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def deliveries
  @deliveries
end

#destinationObject (readonly)

Returns the value of attribute destination.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def destination
  @destination
end

#experienceObject (readonly)

Returns the value of attribute experience.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def experience
  @experience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def expires_at
  @expires_at
end

#geoObject (readonly)

Returns the value of attribute geo.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def geo
  @geo
end

#idObject (readonly)

Returns the value of attribute id.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def id
  @id
end

#identifiersObject (readonly)

Returns the value of attribute identifiers.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def identifiers
  @identifiers
end

#itemsObject (readonly)

Returns the value of attribute items.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def items
  @items
end

#linesObject (readonly)

Returns the value of attribute lines.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def lines
  @lines
end

#merchant_of_recordObject (readonly)

Returns the value of attribute merchant_of_record.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def merchant_of_record
  @merchant_of_record
end

#numberObject (readonly)

Returns the value of attribute number.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def number
  @number
end

#paymentsObject (readonly)

Returns the value of attribute payments.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def payments
  @payments
end

#pricesObject (readonly)

Returns the value of attribute prices.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def prices
  @prices
end

#promotionsObject (readonly)

Returns the value of attribute promotions.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def promotions
  @promotions
end

#rulesObject (readonly)

Returns the value of attribute rules.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def rules
  @rules
end

#selectionsObject (readonly)

Returns the value of attribute selections.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def selections
  @selections
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def 
  @submitted_at
end

#tax_registrationObject (readonly)

Returns the value of attribute tax_registration.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def tax_registration
  @tax_registration
end

#totalObject (readonly)

Returns the value of attribute total.



38859
38860
38861
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38859

def total
  @total
end

Instance Method Details

#copy(incoming = {}) ⇒ Object



38894
38895
38896
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38894

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

#subtype_to_hashObject



38898
38899
38900
38901
38902
38903
38904
38905
38906
38907
38908
38909
38910
38911
38912
38913
38914
38915
38916
38917
38918
38919
38920
38921
38922
38923
38924
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38898

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



38890
38891
38892
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 38890

def to_json
  JSON.dump(to_hash)
end