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.



31377
31378
31379
31380
31381
31382
31383
31384
31385
31386
31387
31388
31389
31390
31391
31392
31393
31394
31395
31396
31397
31398
31399
31400
31401
31402
31403
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31377

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.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def attributes
  @attributes
end

#balanceObject (readonly)

Returns the value of attribute balance.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def balance
  @balance
end

#customerObject (readonly)

Returns the value of attribute customer.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def customer
  @customer
end

#delivered_dutyObject (readonly)

Returns the value of attribute delivered_duty.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def delivered_duty
  @delivered_duty
end

#deliveriesObject (readonly)

Returns the value of attribute deliveries.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def deliveries
  @deliveries
end

#destinationObject (readonly)

Returns the value of attribute destination.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def destination
  @destination
end

#experienceObject (readonly)

Returns the value of attribute experience.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def experience
  @experience
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def expires_at
  @expires_at
end

#idObject (readonly)

Returns the value of attribute id.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def id
  @id
end

#identifiersObject (readonly)

Returns the value of attribute identifiers.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def identifiers
  @identifiers
end

#itemsObject (readonly)

Returns the value of attribute items.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def items
  @items
end

#linesObject (readonly)

Returns the value of attribute lines.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def lines
  @lines
end

#merchant_of_recordObject (readonly)

Returns the value of attribute merchant_of_record.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def merchant_of_record
  @merchant_of_record
end

#numberObject (readonly)

Returns the value of attribute number.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def number
  @number
end

#paymentsObject (readonly)

Returns the value of attribute payments.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def payments
  @payments
end

#pricesObject (readonly)

Returns the value of attribute prices.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def prices
  @prices
end

#promotionsObject (readonly)

Returns the value of attribute promotions.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def promotions
  @promotions
end

#rulesObject (readonly)

Returns the value of attribute rules.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def rules
  @rules
end

#selectionsObject (readonly)

Returns the value of attribute selections.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def selections
  @selections
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def 
  @submitted_at
end

#tax_registrationObject (readonly)

Returns the value of attribute tax_registration.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def tax_registration
  @tax_registration
end

#totalObject (readonly)

Returns the value of attribute total.



31375
31376
31377
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31375

def total
  @total
end

Instance Method Details

#copy(incoming = {}) ⇒ Object



31409
31410
31411
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31409

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

#subtype_to_hashObject



31413
31414
31415
31416
31417
31418
31419
31420
31421
31422
31423
31424
31425
31426
31427
31428
31429
31430
31431
31432
31433
31434
31435
31436
31437
31438
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31413

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



31405
31406
31407
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 31405

def to_json
  JSON.dump(to_hash)
end