class ShipCompliant::GetSalesOrderExtendedResult

ShipCompliant::GetSalesOrderExtendedResult

Wraps the response of GetSalesOrderExtended and provides methods to quickly access compliace rules of a shipment, the billing address, shipments, and channel details.

Public Instance Methods

bill_to() click to toggle source

Returns a ShipCompliant::Address with the customer's billing information.

puts sales_order.bill_to.state #=> 'AK'
# File lib/ship_compliant/get_sales_order_extended_result.rb, line 34
def bill_to
  Address.new(response[:sales_order][:bill_to])
end
channel_details() click to toggle source

Returns the OrderChannelDetails node as an instance of ShipCompliant::ChannelDetails.

puts sales_order.channel_details.order_channel #=> 'MyOrders'
# File lib/ship_compliant/get_sales_order_extended_result.rb, line 61
def channel_details
  ChannelDetails.new(response[:order_channel_details])
end
compliance_rules_for_shipment(shipment_key) click to toggle source

Finds all the compliance rules for a shipment. Returns an instance of ShipmentCompliance.

shipment_compliance = sales_order.compliance_rules_for_shipment('SHIPMENT-KEY')
puts shipment_compliance.compliant? #=> false
# File lib/ship_compliant/get_sales_order_extended_result.rb, line 26
def compliance_rules_for_shipment(shipment_key)
  shipment = shipment_compliance_rules.select { |s| s[:key] == shipment_key }.first
  ShipmentCompliance.new(shipment)
end
find_shipment(shipment_key) click to toggle source

Finds a shipment by ShipmentKey. Returns an instance of ShipCompliant::Shipment.

shipment = sales_order.find_shipment('1')
puts shipment.ship_date #=> DateTime
# File lib/ship_compliant/get_sales_order_extended_result.rb, line 53
def find_shipment(shipment_key)
  shipment = shipments.select { |s| s[:shipment_key] == shipment_key }.first
  Shipment.new(shipment)
end
shipment_compliance_rules() click to toggle source

Returns an array of the ShipmentComplianceResponse node as a Hash.

sales_order.shipment_compliance_rules.each do |shipment|
  puts "SHIPMENT '#{shipment[:key]}' IS NOT COMPLIANT" unless shipment[:is_compliant]
end
# File lib/ship_compliant/get_sales_order_extended_result.rb, line 15
def shipment_compliance_rules
  Array.wrap(response[:compliance_results][:sales_order][:shipments][:shipment_compliance_response]).map do |shipment|
    shipment
  end
end
shipments() click to toggle source

Returns an array of Shipment nodes as a Hash.

sales_order.shipments.each do |shipment|
  puts shipment[:ship_date] #=> DateTime
end
# File lib/ship_compliant/get_sales_order_extended_result.rb, line 43
def shipments
  Array.wrap(response[:sales_order][:shipments]).map do |shipment|
    shipment[:shipment]
  end
end