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.



29517
29518
29519
29520
29521
29522
29523
29524
29525
29526
29527
29528
29529
29530
29531
29532
29533
29534
29535
29536
29537
29538
29539
29540
29541
29542
29543
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29517

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.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def attributes
  @attributes
end

#balanceObject (readonly)

Returns the value of attribute balance.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def balance
  @balance
end

#customerObject (readonly)

Returns the value of attribute customer.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def customer
  @customer
end

#delivered_dutyObject (readonly)

Returns the value of attribute delivered_duty.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def delivered_duty
  @delivered_duty
end

#deliveriesObject (readonly)

Returns the value of attribute deliveries.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def deliveries
  @deliveries
end

#destinationObject (readonly)

Returns the value of attribute destination.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def destination
  @destination
end

#experienceObject (readonly)

Returns the value of attribute experience.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def experience
  @experience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def expires_at
  @expires_at
end

#idObject (readonly)

Returns the value of attribute id.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def id
  @id
end

#identifiersObject (readonly)

Returns the value of attribute identifiers.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def identifiers
  @identifiers
end

#itemsObject (readonly)

Returns the value of attribute items.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def items
  @items
end

#linesObject (readonly)

Returns the value of attribute lines.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def lines
  @lines
end

#merchant_of_recordObject (readonly)

Returns the value of attribute merchant_of_record.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def merchant_of_record
  @merchant_of_record
end

#numberObject (readonly)

Returns the value of attribute number.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def number
  @number
end

#paymentsObject (readonly)

Returns the value of attribute payments.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def payments
  @payments
end

#pricesObject (readonly)

Returns the value of attribute prices.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def prices
  @prices
end

#promotionsObject (readonly)

Returns the value of attribute promotions.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def promotions
  @promotions
end

#rulesObject (readonly)

Returns the value of attribute rules.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def rules
  @rules
end

#selectionsObject (readonly)

Returns the value of attribute selections.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def selections
  @selections
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def 
  @submitted_at
end

#tax_registrationObject (readonly)

Returns the value of attribute tax_registration.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def tax_registration
  @tax_registration
end

#totalObject (readonly)

Returns the value of attribute total.



29515
29516
29517
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29515

def total
  @total
end

Instance Method Details

#copy(incoming = {}) ⇒ Object



29549
29550
29551
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29549

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

#subtype_to_hashObject



29553
29554
29555
29556
29557
29558
29559
29560
29561
29562
29563
29564
29565
29566
29567
29568
29569
29570
29571
29572
29573
29574
29575
29576
29577
29578
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29553

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



29545
29546
29547
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29545

def to_json
  JSON.dump(to_hash)
end