class ShipCompliant::SearchSalesOrdersResult
An API wrapper for SearchSalesOrders
response.¶ ↑
Converts fields into integers and ensures order_summaries
is an array.
orders = ShipCompliant::SearchSalesOrders.find_by({ purchase_date_min: DateTime.new(2014, 3, 10), purchase_date_max: DateTime.new(2014, 3, 12) }) puts orders.length #=> 2 orders.summaries.each do |summary| puts summary.purchase_date #=> DateTime end
Attributes
raw[R]
response[R]
Public Class Methods
new(data)
click to toggle source
# File lib/ship_compliant/search_sales_orders_result.rb, line 22 def initialize(data) @raw = data parse! end
Public Instance Methods
length()
click to toggle source
The number of orders returned the current response.
# File lib/ship_compliant/search_sales_orders_result.rb, line 28 def length raw.fetch(:count_sales_orders_returned, 0) end
remaining_orders_length()
click to toggle source
The number of orders waiting to be returned. Use this for paging results.
# File lib/ship_compliant/search_sales_orders_result.rb, line 34 def remaining_orders_length raw.fetch(:count_more_sales_orders_available, 0) end
summaries()
click to toggle source
Returns an array of ShipCompliant::SearchSalesOrderSummary
. Use this to get information about each order.
orders.summaries.each do |summary| puts summary.purchase_date #=> DateTime end
# File lib/ship_compliant/search_sales_orders_result.rb, line 44 def summaries raw[:sales_orders][:sales_order_summary].reject(&:blank?).map do |summary| SearchSalesOrderSummary.new(summary) end end
Private Instance Methods
convert_to_integer!(key, object)
click to toggle source
Typecasts an object key into to an integer.
convert_to_integer(:shipment_key, order_summary[:shipments][:shipment_summary])
# File lib/ship_compliant/search_sales_orders_result.rb, line 102 def convert_to_integer!(key, object) object[key] = object[key].to_i end
parse!()
click to toggle source
Standardizes the XML response by converting fields to integers and forcing the order summaries into an array.
# File lib/ship_compliant/search_sales_orders_result.rb, line 64 def parse! unless raw.has_key?(:sales_orders) raw[:sales_orders] = {} end # force orders to be an array orders = raw[:sales_orders].fetch(:sales_order_summary, {}) unless orders.kind_of?(Array) raw[:sales_orders][:sales_order_summary] = [orders] end # typecast :count_more_sales_orders_available to integer if raw.has_key?(:count_more_sales_orders_available) convert_to_integer!(:count_more_sales_orders_available, raw) end # typecast :count_sales_orders_returned to integer if raw.has_key?(:count_sales_orders_returned) convert_to_integer!(:count_sales_orders_returned, raw) end raw[:sales_orders][:sales_order_summary].each do |summary| # typecast :shipment_key to integer if summary.fetch(:shipments, {}).fetch(:shipment_summary, {}).has_key?(:shipment_key) convert_to_integer!(:shipment_key, summary[:shipments][:shipment_summary]) end # typecast :zip1 to integer if summary.fetch(:shipments, {}).fetch(:shipment_summary, {}).fetch(:ship_to, {}).has_key?(:zip1) convert_to_integer!(:zip1, summary[:shipments][:shipment_summary][:ship_to]) end end end