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.



40660
40661
40662
40663
40664
40665
40666
40667
40668
40669
40670
40671
40672
40673
40674
40675
40676
40677
40678
40679
40680
40681
40682
40683
40684
40685
40686
40687
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40660

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.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def attributes
  @attributes
end

#balanceObject (readonly)

Returns the value of attribute balance.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def balance
  @balance
end

#customerObject (readonly)

Returns the value of attribute customer.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def customer
  @customer
end

#delivered_dutyObject (readonly)

Returns the value of attribute delivered_duty.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def delivered_duty
  @delivered_duty
end

#deliveriesObject (readonly)

Returns the value of attribute deliveries.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def deliveries
  @deliveries
end

#destinationObject (readonly)

Returns the value of attribute destination.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def destination
  @destination
end

#experienceObject (readonly)

Returns the value of attribute experience.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def experience
  @experience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def expires_at
  @expires_at
end

#geoObject (readonly)

Returns the value of attribute geo.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def geo
  @geo
end

#idObject (readonly)

Returns the value of attribute id.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def id
  @id
end

#identifiersObject (readonly)

Returns the value of attribute identifiers.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def identifiers
  @identifiers
end

#itemsObject (readonly)

Returns the value of attribute items.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def items
  @items
end

#linesObject (readonly)

Returns the value of attribute lines.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def lines
  @lines
end

#merchant_of_recordObject (readonly)

Returns the value of attribute merchant_of_record.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def merchant_of_record
  @merchant_of_record
end

#numberObject (readonly)

Returns the value of attribute number.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def number
  @number
end

#paymentsObject (readonly)

Returns the value of attribute payments.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def payments
  @payments
end

#pricesObject (readonly)

Returns the value of attribute prices.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def prices
  @prices
end

#promotionsObject (readonly)

Returns the value of attribute promotions.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def promotions
  @promotions
end

#rulesObject (readonly)

Returns the value of attribute rules.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def rules
  @rules
end

#selectionsObject (readonly)

Returns the value of attribute selections.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def selections
  @selections
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def 
  @submitted_at
end

#tax_registrationObject (readonly)

Returns the value of attribute tax_registration.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def tax_registration
  @tax_registration
end

#totalObject (readonly)

Returns the value of attribute total.



40658
40659
40660
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40658

def total
  @total
end

Instance Method Details

#copy(incoming = {}) ⇒ Object



40693
40694
40695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40693

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

#subtype_to_hashObject



40697
40698
40699
40700
40701
40702
40703
40704
40705
40706
40707
40708
40709
40710
40711
40712
40713
40714
40715
40716
40717
40718
40719
40720
40721
40722
40723
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40697

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



40689
40690
40691
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 40689

def to_json
  JSON.dump(to_hash)
end