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.



39548
39549
39550
39551
39552
39553
39554
39555
39556
39557
39558
39559
39560
39561
39562
39563
39564
39565
39566
39567
39568
39569
39570
39571
39572
39573
39574
39575
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39548

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.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def attributes
  @attributes
end

#balanceObject (readonly)

Returns the value of attribute balance.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def balance
  @balance
end

#customerObject (readonly)

Returns the value of attribute customer.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def customer
  @customer
end

#delivered_dutyObject (readonly)

Returns the value of attribute delivered_duty.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def delivered_duty
  @delivered_duty
end

#deliveriesObject (readonly)

Returns the value of attribute deliveries.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def deliveries
  @deliveries
end

#destinationObject (readonly)

Returns the value of attribute destination.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def destination
  @destination
end

#experienceObject (readonly)

Returns the value of attribute experience.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def experience
  @experience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def expires_at
  @expires_at
end

#geoObject (readonly)

Returns the value of attribute geo.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def geo
  @geo
end

#idObject (readonly)

Returns the value of attribute id.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def id
  @id
end

#identifiersObject (readonly)

Returns the value of attribute identifiers.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def identifiers
  @identifiers
end

#itemsObject (readonly)

Returns the value of attribute items.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def items
  @items
end

#linesObject (readonly)

Returns the value of attribute lines.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def lines
  @lines
end

#merchant_of_recordObject (readonly)

Returns the value of attribute merchant_of_record.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def merchant_of_record
  @merchant_of_record
end

#numberObject (readonly)

Returns the value of attribute number.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def number
  @number
end

#paymentsObject (readonly)

Returns the value of attribute payments.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def payments
  @payments
end

#pricesObject (readonly)

Returns the value of attribute prices.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def prices
  @prices
end

#promotionsObject (readonly)

Returns the value of attribute promotions.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def promotions
  @promotions
end

#rulesObject (readonly)

Returns the value of attribute rules.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def rules
  @rules
end

#selectionsObject (readonly)

Returns the value of attribute selections.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def selections
  @selections
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def 
  @submitted_at
end

#tax_registrationObject (readonly)

Returns the value of attribute tax_registration.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def tax_registration
  @tax_registration
end

#totalObject (readonly)

Returns the value of attribute total.



39546
39547
39548
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39546

def total
  @total
end

Instance Method Details

#copy(incoming = {}) ⇒ Object



39581
39582
39583
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39581

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

#subtype_to_hashObject



39585
39586
39587
39588
39589
39590
39591
39592
39593
39594
39595
39596
39597
39598
39599
39600
39601
39602
39603
39604
39605
39606
39607
39608
39609
39610
39611
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39585

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



39577
39578
39579
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39577

def to_json
  JSON.dump(to_hash)
end