Sha256: 82d8e625732fd02e713e79535d7b181b4b09eb690af3b169fe2d98e007c32111

Contents?: true

Size: 1.7 KB

Versions: 5

Compression:

Stored size: 1.7 KB

Contents

require 'lipseys/api'

module Lipseys
  class Order < Base

    include Lipseys::API

    SUBMIT_TO_STORE_ATTRS = {
      permitted: %i( po_number disable_email items item_no quantity note ).freeze,
      required:  %i( items item_no quantity ).freeze
    }

    SUBMIT_TO_DROP_SHIP_ATTRS = {
      permitted: %i(
        warehouse po_number billing_name billing_address_line_1 billing_address_line_2 billing_address_city
        billing_address_state billing_address_zip shipping_name shipping_address_line_1 shipping_address_line_2
        shipping_address_city shipping_address_state shipping_address_zip message_for_sales_exec disable_email
        items item_no quantity note overnight
      ).freeze,
      required: %i(
        po_number billing_name billing_address_line_1  billing_address_city billing_address_state billing_address_zip
        shipping_name shipping_address_line_1 shipping_address_city shipping_address_state shipping_address_zip
        items item_no quantity
      ).freeze
    }

    ENDPOINTS = {
      submit_to_store:     "order/apiorder".freeze,
      submit_to_drop_ship: "order/dropship".freeze,
    }

    def initialize(client)
      @client = client
    end

    def submit_to_store(order_data)
      requires!(order_data, *SUBMIT_TO_STORE_ATTRS[:required])

      endpoint = ENDPOINTS[:submit_to_store]
      headers = [
        *auth_header(@client.access_token),
        *content_type_header('application/json'),
      ].to_h

      order_data = standardize_body_data(order_data, SUBMIT_TO_STORE_ATTRS[:permitted])

      post_request(endpoint, order_data, headers)
    end

    def submit_to_drop_ship(order_data)
      # NOTE: Will build this out as time permits.
      false
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
lipseys-6.1.1 lib/lipseys/order.rb
lipseys-6.1.0 lib/lipseys/order.rb
lipseys-6.0.2 lib/lipseys/order.rb
lipseys-6.0.1 lib/lipseys/order.rb
lipseys-6.0.0 lib/lipseys/order.rb