Class: RsrGroup::Order
Overview
To submit an order:
-
Instantiate a new Order, passing in ‘:merchant_number`, `:username`, `:password`, `:sequence_number`, and `:identifier`
-
Call #add_recipient
-
Call #add_item for each item on the order
-
Call #submit! to send the order
Instance Method Summary collapse
- #add_item(item = {}) ⇒ Object
- #add_recipient(shipping_info, ffl_options = {}) ⇒ Object
- #filename ⇒ Object
-
#initialize(options = {}) ⇒ Order
constructor
A new instance of Order.
- #submit! ⇒ Object
- #to_txt ⇒ Object
Methods inherited from Base
Constructor Details
#initialize(options = {}) ⇒ Order
Returns a new instance of Order.
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/rsr_group/order.rb', line 16 def initialize( = {}) requires!(, :merchant_number, :sequence_number, :username, :password, :identifier) @credentials = .select { |k, v| [:username, :password].include?(k) } @identifier = [:identifier] @merchant_number = [:merchant_number] @sequence_number = "%04d" % [:sequence_number] # Leading zeros are required @timestamp = Time.now.strftime("%Y%m%d") @items = [] end |
Instance Method Details
#add_item(item = {}) ⇒ Object
57 58 59 60 61 |
# File 'lib/rsr_group/order.rb', line 57 def add_item(item = {}) requires!(item, :rsr_stock_number, :quantity, :shipping_carrier, :shipping_method) @items << OrderDetail.new(item.merge(order_identifier: @identifier)) end |
#add_recipient(shipping_info, ffl_options = {}) ⇒ Object
42 43 44 45 46 47 48 49 50 |
# File 'lib/rsr_group/order.rb', line 42 def add_recipient(shipping_info, = {}) requires!(shipping_info, :shipping_name, :address_one, :city, :state, :zip) @recipient = OrderRecipient.new(shipping_info.merge(order_identifier: @identifier)) if && .any? @ffl = OrderFFL.new(.merge(order_identifier: @identifier)) end end |
#filename ⇒ Object
63 64 65 66 |
# File 'lib/rsr_group/order.rb', line 63 def filename name = ["EORD", @merchant_number, @timestamp, @sequence_number].join("-") [name, ".txt"].join end |
#submit! ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/rsr_group/order.rb', line 84 def submit! connect(@credentials) do |ftp| ftp.chdir(RsrGroup.config.submission_dir) io = StringIO.new(to_txt) begin ftp.storlines("STOR " + filename, io) ensure io.close end end true end |
#to_txt ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/rsr_group/order.rb', line 68 def to_txt raise "Recipient is required!" unless @recipient raise "Items are required!" unless @items.length > 0 txt = header + "\n" txt += @recipient.to_single_line + "\n" if @ffl txt += (@ffl.to_single_line + "\n") end @items.each do |item| txt += (item.to_single_line + "\n") end txt += order_trailer + "\n" txt += end |