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.



39695
39696
39697
39698
39699
39700
39701
39702
39703
39704
39705
39706
39707
39708
39709
39710
39711
39712
39713
39714
39715
39716
39717
39718
39719
39720
39721
39722
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39695

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.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def attributes
  @attributes
end

#balanceObject (readonly)

Returns the value of attribute balance.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def balance
  @balance
end

#customerObject (readonly)

Returns the value of attribute customer.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def customer
  @customer
end

#delivered_dutyObject (readonly)

Returns the value of attribute delivered_duty.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def delivered_duty
  @delivered_duty
end

#deliveriesObject (readonly)

Returns the value of attribute deliveries.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def deliveries
  @deliveries
end

#destinationObject (readonly)

Returns the value of attribute destination.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def destination
  @destination
end

#experienceObject (readonly)

Returns the value of attribute experience.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def experience
  @experience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def expires_at
  @expires_at
end

#geoObject (readonly)

Returns the value of attribute geo.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def geo
  @geo
end

#idObject (readonly)

Returns the value of attribute id.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def id
  @id
end

#identifiersObject (readonly)

Returns the value of attribute identifiers.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def identifiers
  @identifiers
end

#itemsObject (readonly)

Returns the value of attribute items.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def items
  @items
end

#linesObject (readonly)

Returns the value of attribute lines.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def lines
  @lines
end

#merchant_of_recordObject (readonly)

Returns the value of attribute merchant_of_record.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def merchant_of_record
  @merchant_of_record
end

#numberObject (readonly)

Returns the value of attribute number.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def number
  @number
end

#paymentsObject (readonly)

Returns the value of attribute payments.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def payments
  @payments
end

#pricesObject (readonly)

Returns the value of attribute prices.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def prices
  @prices
end

#promotionsObject (readonly)

Returns the value of attribute promotions.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def promotions
  @promotions
end

#rulesObject (readonly)

Returns the value of attribute rules.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def rules
  @rules
end

#selectionsObject (readonly)

Returns the value of attribute selections.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def selections
  @selections
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def 
  @submitted_at
end

#tax_registrationObject (readonly)

Returns the value of attribute tax_registration.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def tax_registration
  @tax_registration
end

#totalObject (readonly)

Returns the value of attribute total.



39693
39694
39695
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39693

def total
  @total
end

Instance Method Details

#copy(incoming = {}) ⇒ Object



39728
39729
39730
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39728

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

#subtype_to_hashObject



39732
39733
39734
39735
39736
39737
39738
39739
39740
39741
39742
39743
39744
39745
39746
39747
39748
39749
39750
39751
39752
39753
39754
39755
39756
39757
39758
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39732

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



39724
39725
39726
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39724

def to_json
  JSON.dump(to_hash)
end