class SportsmansSupply::Order
Constants
- HEADERS
Public Class Methods
new(options = {})
click to toggle source
# File lib/sportsmans-supply/order.rb, line 10 def initialize(options = {}) requires!(options, :username, :password) @options = options @items = [] end
Public Instance Methods
add_item(item = {})
click to toggle source
# File lib/sportsmans-supply/order.rb, line 17 def add_item(item = {}) requires!(item, :item_number, :quantity) @items << item end
submit(options = {})
click to toggle source
# File lib/sportsmans-supply/order.rb, line 23 def submit(options = {}) raise SportsmansSupply::InvalidOrder.new("Must add items with #add_item before submitting") if @items.empty? requires!(options, :customer_number, :po_number, :shipping) requires!(options[:shipping], :name, :address_1, :city, :state, :zip) filename = [options[:customer_number], Time.now.strftime("%m%d%y%H%M%S"), options[:po_number]].join('_') + '.csv' order_file = Tempfile.new(filename) CSV.open(order_file.path, 'w+', col_sep: ",") do |csv| csv << HEADERS @items.each do |item| item_data = [ options[:customer_number], options[:po_number], 'NEW', Time.now.strftime("%-m/%d/%Y"), options[:shipping][:method_code] || 'Best Way', options[:shipping][:name], options[:shipping][:address_1], options[:shipping][:address_2], options[:shipping][:city], options[:shipping][:state], options[:shipping][:zip], options[:shipping][:country] || 'USA', options[:shipping][:phone], '', item[:item_number], item[:quantity] ] csv << item_data end end connect(@options) do |ftp| ftp.chdir('orders') ftp.puttextfile(order_file.path, filename) end order_file.close order_file.unlink end