# In this example, we use Savon gem as SOAP client.
# http://savonrb.com/
# To install: gem install savon
#
# Code sample tested with Ruby 2.1.5
require 'savon'
class DCLDemoClass
# initializated during login
attr_accessor :session_id
def initialize
@client = Savon.client(wsdl: "https://www.efactory.dclcorp.com/webservices/DCLWebService.asmx?WSDL",
#wsdl: "https://www.efactory.dclcorp.com/webservices/TestDCLWebService.asmx?WSDL",
#log_level: :debug,
#log: true,
#pretty_print_xml: true,
convert_request_keys_to: :none
)
response = @client.call(:login, :message => { :strUser => "your_username", :strPwd => "your_account" })
@session_id = response.body[:login_response][:login_result]
end
def submit_batch_order
if @session_id.nil?
puts "Wrong credentials!"
return
end
response = @client.call(:submit_batch_order, :message =>
{ :SessionID => @session_id,
:Batch => {
:Location => "FR",
:OrderArray => [
:OrderType01Object => {
:AccountNumber => "10501", # Set with your account (10501 for demo account)
:OrderNumber => "TEST1001",
:ShipTo => {
:Company => "",
:Attention => "Walter",
:Address1 => "48641 Milmont dr",
:City => "Fremont",
:StateProvince => "CA",
:PostalCode => "94538",
:Country => "USA"
},
:FreightAccount => "00500",
:ShippingCarrier => "UPS",
:ShippingService => "GROUND",
:DetailArray => [
:DetailType01Object => {
:ItemNumber => "1001-001-DEMO",
:Description => "DEMO1 Item",
:Quantity => 1
},
:DetailType01Object => {
:ItemNumber => "1002-002-DEMO2",
:Description => "DEMO2 Item",
:Quantity => 5
}
]
}
]
}
}
)
result = response.body[:submit_batch_order_response][:submit_batch_order_result]
if result[:result_status][:error].to_i > 0
puts "Error: " + result[:result_status][:error_str]
end
end
end
#DCLDemoClass.submit_batch_order
demo = DCLDemoClass.new
demo.submit_batch_order