class SportsSouth::Order
Constants
- API_URL
- SHIP_VIA
- STATUS
D=Placed, E=Error placing
Order
, R=Placed-Verifying, W=Open
Attributes
order_number[R]
response_body[R]
Public Class Methods
find(order_number, options = {})
click to toggle source
# File lib/sports_south/order.rb, line 26 def self.find(order_number, options = {}) requires!(options, :username, :password) new(options.merge(order_number: order_number)) end
new(options = {})
click to toggle source
# File lib/sports_south/order.rb, line 31 def initialize(options = {}) requires!(options, :username, :password) @options = options.merge(source: SportsSouth.config.source) @order_number = options[:order_number] end
Public Instance Methods
add_detail(detail = {})
click to toggle source
# File lib/sports_south/order.rb, line 100 def add_detail(detail = {}) raise StandardError.new("No @order_number present.") if @order_number.nil? requires!(detail, :ss_item_number, :price) detail[:quantity] = 1 unless detail.has_key?(:quantity) detail[:item_number] = '' unless detail.has_key?(:item_number) detail[:item_description] = '' unless detail.has_key?(:item_description) http, request = get_http_and_request(API_URL, '/AddDetail') request.set_form_data(form_params(@options).merge({ OrderNumber: @order_number, SSItemNumber: detail[:ss_item_number], Quantity: detail[:quantity], OrderPrice: detail[:price], CustomerItemNumber: detail[:item_number], CustomerItemDescription: detail[:item_description], })) response = http.request(request) xml_doc = Nokogiri::XML(response.body) raise SportsSouth::NotAuthenticated if not_authenticated?(xml_doc) @response_body = response.body xml_doc.content == 'true' end
add_header(header = {})
click to toggle source
# File lib/sports_south/order.rb, line 37 def add_header(header = {}) requires!(header, :purchase_order, :sales_message, :shipping) header[:customer_order_number] = header[:purchase_order] unless header.has_key?(:customer_order_number) header[:adult_signature] = false unless header.has_key?(:adult_signature) header[:signature] = false unless header.has_key?(:signature) header[:insurance] = false unless header.has_key?(:insurance) requires!(header[:shipping], :name, :address_one, :city, :state, :zip, :phone) header[:shipping][:attn] = '' unless header[:shipping].has_key?(:attn) header[:shipping][:address_two] = '' unless header[:shipping].has_key?(:address_two) header[:shipping][:via] = (header[:shipping].has_key?(:ship_via) ? SHIP_VIA[header[:shipping][:ship_via]] : SHIP_VIA[:ground]) http, request = get_http_and_request(API_URL, '/AddHeader') request.set_form_data(form_params(@options).merge({ PO: header[:purchase_order], CustomerOrderNumber: header[:customer_order_number], SalesMessage: header[:sales_message], ShipVia: header[:shipping][:via], ShipToName: header[:shipping][:name], ShipToAttn: header[:shipping][:attn], ShipToAddr1: header[:shipping][:address_one], ShipToAddr2: header[:shipping][:address_two], ShipToCity: header[:shipping][:city], ShipToState: header[:shipping][:state], ShipToZip: header[:shipping][:zip], ShipToPhone: header[:shipping][:phone], AdultSignature: header[:adult_signature], Signature: header[:signature], Insurance: header[:insurance], })) response = http.request(request) xml_doc = Nokogiri::XML(response.body) raise SportsSouth::NotAuthenticated if not_authenticated?(xml_doc) @response_body = response.body @order_number = xml_doc.content end
add_ship_instructions(ship_instructions = {})
click to toggle source
# File lib/sports_south/order.rb, line 80 def add_ship_instructions(ship_instructions = {}) requires!(ship_instructions, :order_number, :ship_inst_1, :ship_inst_2) http, request = get_http_and_request(API_URL, '/AddShipInstructions') request.set_form_data(form_params(@options).merge({ SystemOrderNumber: ship_instructions[:order_number], ShipInst1: ship_instructions[:ship_inst_1], ShipInst2: ship_instructions[:ship_inst_2], })) response = http.request(request) xml_doc = Nokogiri::XML(response.body) raise SportsSouth::NotAuthenticated if not_authenticated?(xml_doc) @response_body = response.body xml_doc.content == 'true' end
details()
click to toggle source
# File lib/sports_south/order.rb, line 179 def details raise StandardError.new("No @order_number present.") if @order_number.nil? http, request = get_http_and_request(API_URL, '/GetDetail') request.set_form_data(form_params(@options).merge({ CustomerOrderNumber: @order_number, OrderNumber: @order_number, })) response = http.request(request) body = sanitize_response(response) xml_doc = Nokogiri::XML(body) raise SportsSouth::NotAuthenticated if not_authenticated?(xml_doc) @response_body = body @details = [] xml_doc.css('Table').each do |table| @details << { system_order_number: content_for(table, 'ORDNO'), order_line_number: content_for(table, 'ORLINE'), customer_number: content_for(table, 'ORCUST'), order_item_number: content_for(table, 'ORITEM'), order_quantity: content_for(table, 'ORQTY'), order_price: content_for(table, 'ORPRC'), ship_quantity: content_for(table, 'ORQTYF'), ship_price: content_for(table, 'ORPRCF'), customer_item_number: content_for(table, 'ORCUSI'), customer_description: content_for(table, 'ORCUSD'), item_description: content_for(table, 'IDESC'), quantity_on_hand: content_for(table, 'QTYOH'), line_detail_comment: content_for(table, 'ORDCMT'), line_detail_po_number: content_for(table, 'ORPO2'), } end @details end
header()
click to toggle source
# File lib/sports_south/order.rb, line 148 def header raise StandardError.new("No @order_number present.") if @order_number.nil? http, request = get_http_and_request(API_URL, '/GetHeader') request.set_form_data(form_params(@options).merge({ CustomerOrderNumber: @order_number, OrderNumber: @order_number })) response = http.request(request) body = sanitize_response(response) xml_doc = Nokogiri::XML(body) raise SportsSouth::NotAuthenticated if not_authenticated?(xml_doc) @response_body = body @header = { system_order_number: content_for(xml_doc, 'ORDNO'), customer_number: content_for(xml_doc, 'ORCUST'), order_po_number: content_for(xml_doc, 'ORPO'), customer_order_number: content_for(xml_doc, 'ORCONO'), order_date: content_for(xml_doc, 'ORDATE'), message: content_for(xml_doc, 'MSG'), air_code: content_for(xml_doc, 'ORAIR'), order_source: content_for(xml_doc, 'ORSRC'), status: STATUS[content_for(xml_doc, 'STATUS')], } end
submit!()
click to toggle source
# File lib/sports_south/order.rb, line 129 def submit! raise StandardError.new("No @order_number present.") if @order_number.nil? http, request = get_http_and_request(API_URL, '/Submit') request.set_form_data(form_params(@options).merge({ OrderNumber: @order_number, })) response = http.request(request) xml_doc = Nokogiri::XML(response.body) raise SportsSouth::NotAuthenticated if not_authenticated?(xml_doc) @response_body = response.body xml_doc.content == 'true' end