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.



32565
32566
32567
32568
32569
32570
32571
32572
32573
32574
32575
32576
32577
32578
32579
32580
32581
32582
32583
32584
32585
32586
32587
32588
32589
32590
32591
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32565

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.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def attributes
  @attributes
end

#balanceObject (readonly)

Returns the value of attribute balance.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def balance
  @balance
end

#customerObject (readonly)

Returns the value of attribute customer.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def customer
  @customer
end

#delivered_dutyObject (readonly)

Returns the value of attribute delivered_duty.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def delivered_duty
  @delivered_duty
end

#deliveriesObject (readonly)

Returns the value of attribute deliveries.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def deliveries
  @deliveries
end

#destinationObject (readonly)

Returns the value of attribute destination.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def destination
  @destination
end

#experienceObject (readonly)

Returns the value of attribute experience.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def experience
  @experience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def expires_at
  @expires_at
end

#idObject (readonly)

Returns the value of attribute id.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def id
  @id
end

#identifiersObject (readonly)

Returns the value of attribute identifiers.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def identifiers
  @identifiers
end

#itemsObject (readonly)

Returns the value of attribute items.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def items
  @items
end

#linesObject (readonly)

Returns the value of attribute lines.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def lines
  @lines
end

#merchant_of_recordObject (readonly)

Returns the value of attribute merchant_of_record.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def merchant_of_record
  @merchant_of_record
end

#numberObject (readonly)

Returns the value of attribute number.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def number
  @number
end

#paymentsObject (readonly)

Returns the value of attribute payments.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def payments
  @payments
end

#pricesObject (readonly)

Returns the value of attribute prices.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def prices
  @prices
end

#promotionsObject (readonly)

Returns the value of attribute promotions.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def promotions
  @promotions
end

#rulesObject (readonly)

Returns the value of attribute rules.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def rules
  @rules
end

#selectionsObject (readonly)

Returns the value of attribute selections.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def selections
  @selections
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def 
  @submitted_at
end

#tax_registrationObject (readonly)

Returns the value of attribute tax_registration.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def tax_registration
  @tax_registration
end

#totalObject (readonly)

Returns the value of attribute total.



32563
32564
32565
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32563

def total
  @total
end

Instance Method Details

#copy(incoming = {}) ⇒ Object



32597
32598
32599
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32597

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

#subtype_to_hashObject



32601
32602
32603
32604
32605
32606
32607
32608
32609
32610
32611
32612
32613
32614
32615
32616
32617
32618
32619
32620
32621
32622
32623
32624
32625
32626
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32601

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



32593
32594
32595
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 32593

def to_json
  JSON.dump(to_hash)
end