class MgeWholesale::Order

To submit an order:

See each method for a list of required options.

Constants

HEADERS

Public Class Methods

new(options = {}) click to toggle source

@option options [String] :username required

# File lib/mge_wholesale/order.rb, line 31
def initialize(options = {})
  requires!(options, :username, :po_number)

  @dealer_number = options[:username]
  @po_number     = options[:po_number]
  @items         = []
end

Public Instance Methods

add_item(item = {}) click to toggle source

@param item [Hash]

* :identifier [String] *required*
* :description [String]
* :upc [String] *required*
* :qty [Integer] *required*
* :price [String]
# File lib/mge_wholesale/order.rb, line 63
def add_item(item = {})
  requires!(item, :identifier, :upc, :qty)
  @items << item
end
add_recipient(hash = {}) click to toggle source

@param header [Hash]

* :dealer_name [String] *required*
* :ffl [String]
* :shipping [Hash] *required*
  * :name [String] *required*
  * :address [String] *required*
  * :city [String] *required*
  * :state [String] *required*
  * :zip [String] *required*
  * :email [String] *required*
  * :phone [String] *required*
* :special_instructions [String] optional
# File lib/mge_wholesale/order.rb, line 51
def add_recipient(hash = {})
  requires!(hash, :dealer_name, :shipping)
  requires!(hash[:shipping], :name, :address, :city, :state, :zip, :email, :phone)
  @headers = hash
end
filename() click to toggle source
# File lib/mge_wholesale/order.rb, line 68
def filename
  return @filename if defined?(@filename)
  timestamp = Time.now.strftime('%Y%m%d%T').gsub(':', '')
  @filename = "MGE-#{@po_number}-#{timestamp}.csv"
end
to_csv() click to toggle source
# File lib/mge_wholesale/order.rb, line 74
def to_csv
  CSV.generate(headers: true) do |csv|
    csv << HEADERS

    @items.each do |item|
      csv << [
        @dealer_number,
        @headers[:dealer_name],
        @headers[:shipping][:name],
        @headers[:shipping][:address],
        @headers[:shipping][:city],
        @headers[:shipping][:state],
        @headers[:shipping][:zip],
        @headers[:shipping][:email],
        @headers[:shipping][:phone],
        @headers[:ffl],
        item[:identifier],
        item[:description],
        item[:upc],
        item[:qty],
        item[:price],
        @headers[:special_instructions]
      ]
    end
  end # CSV.generate
end