class Stellae::Order

Public Instance Methods

build_order_request(order) click to toggle source
# File lib/stellae/order.rb, line 7
def build_order_request(order)

  construct_xml "new_order_entry" do |xml|

    xml.ohn :"xmlns:a" => SCHEMA[:datacontract], :"xmlns:i" => SCHEMA[:instance] do

      soap_field       xml, :CARRIER,          order[:shipping_carrier].upcase
      soap_field       xml, :CURRENCY,         order[:currency].upcase
      build_address    xml, "CUSTOMER",        order[:billing_address]
      soap_field       xml, :CUSTOMER_CODE
      build_name       xml, "CUSTOMER",        order[:billing_address]
      soap_field       xml, :CUSTOMER_PO
      build_telephone  xml, "CUSTOMER",        order[:billing_address]
      build_address    xml, "DELIVERY",        order[:shipping_address]
      soap_field       xml, :DELIVERY_DC_EDI
      soap_field       xml, :DELIVERY_DOOR_EDI
      soap_field       xml, :DELIVERY_FROM
      soap_field       xml, :DELIVERY_ID
      soap_field       xml, :DELIVERY_MESSAGE, order[:gift_message]
      build_name       xml, "DELIVERY",        order[:shipping_address]
      build_telephone  xml, "DELIVERY",        order[:shipping_address]
      soap_field       xml, :DELIVERY_TO
      soap_field       xml, :DISCOUNT,         order[:item_discount] || 0
      soap_field       xml, :EMAIL,            order[:email]
      soap_field       xml, :FREIGHT_ACCOUNT
      soap_field       xml, :MISC1,            0
      soap_field       xml, :MISC1_REASON
      soap_field       xml, :MISC2,            0
      soap_field       xml, :MISC2_REASON
      soap_field       xml, :ORDER_ID,         order[:number]
      soap_field       xml, :ORDER_TYPE,       order[:type] || 'OO'
      build_line_items xml,                    order
      soap_field       xml, :SERVICE,          shipping_service(order[:shipping_method])
      soap_field       xml, :SHIPPING_FEES,    shipping_fees(order)
      soap_field       xml, :TAXES,            order[:tax] || 0
      soap_field       xml, :TOTAL_AMOUNT,     order[:total_amount] || 0
      soap_field       xml, :USER1,            order[:invoice_url]
      soap_field       xml, :USER2
      soap_field       xml, :USER3
      soap_field       xml, :USER4
      soap_field       xml, :USER5
      soap_field       xml, :WAREHOUSE

    end

  end

end

Private Instance Methods

build_address(xml, type, address) click to toggle source
# File lib/stellae/order.rb, line 67
def build_address(xml, type, address)
  soap_field xml, :"#{type}_ADDRESS_1",       address[:address1]
  soap_field xml, :"#{type}_ADDRESS_2",       address[:address2]
  soap_field xml, :"#{type}_ADDRESS_3",       address[:address3]
  soap_field xml, :"#{type}_ADDRESS_CITY",    address[:city]
  soap_field xml, :"#{type}_ADDRESS_COUNTRY", address[:country]
  soap_field xml, :"#{type}_ADDRESS_STATE",   state_abbr(address[:state])
  soap_field xml, :"#{type}_ADDRESS_ZIP",     address[:zipcode]
end
build_line_items(xml, order) click to toggle source
# File lib/stellae/order.rb, line 77
def build_line_items(xml, order)
  soap_field xml, :Order_Details do |xml|
    order[:line_items].each do |line_item|
      soap_field xml, :Order_Detail_New do |xml|
        soap_field xml, :COST
        soap_field xml, :FLAGS
        soap_field xml, :LINE_ID
        soap_field xml, :LOT_NUMBER
        soap_field xml, :PRICE,        line_item[:price]
        soap_field xml, :QUANTITY,     line_item[:quantity]
        soap_field xml, :RETAIL_PRICE
        soap_field xml, :SEASON
        soap_field xml, :SIZE,         line_item[:size]
        soap_field xml, :SKU,          line_item[:sku]
      end
    end
  end
end
build_name(xml, type, address) click to toggle source
# File lib/stellae/order.rb, line 58
def build_name(xml, type, address)
  full_name = "#{address[:first_name]} #{address[:last_name]}"
  soap_field xml, :"#{type}_NAME", full_name
end
build_telephone(xml, type, address) click to toggle source
# File lib/stellae/order.rb, line 63
def build_telephone(xml, type, address)
  soap_field xml, :"#{type}_TELEPHONE", address[:phone]
end
shipping_cost(order) click to toggle source
# File lib/stellae/order.rb, line 96
def shipping_cost(order)
  order[:shipping_cost] || 0
end
shipping_discount(order) click to toggle source
# File lib/stellae/order.rb, line 100
def shipping_discount(order)
  order[:shipping_discount] || 0
end
shipping_fees(order) click to toggle source
# File lib/stellae/order.rb, line 104
def shipping_fees(order)
  shipping_cost(order).abs - shipping_discount(order).abs
end