Class: Seko::Order

Inherits:
Object
  • Object
show all
Defined in:
lib/seko/order.rb

Constant Summary collapse

CANCEL_CODES =
{
  '001' => 'Customer Request',
  '002' => 'Order Delayed',
  '003' => 'Duplicate',
  '004' => 'Item not available',
  '005' => 'Cannot ship to address',
  '006' => 'Other'
}

Class Method Summary collapse

Class Method Details

.address(address, email) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/seko/order.rb', line 43

def self.address(address, email)
  {
    "City"         => address[:city],
    "CountryCode"  => address[:country],
    "EmailAddress" => email,
    "FirstName"    => address[:first_name],
    "LastName"     => address[:last_name],
    "Line1"        => address[:address1],
    "Line2"        => address[:address2],
    "PhoneNumber"  => address[:phone],
    "PostcodeZip"  => address[:zipcode]
  }
end

.build_request(attributes, type = nil) ⇒ Object



21
22
23
24
25
# File 'lib/seko/order.rb', line 21

def self.build_request(attributes, type = nil)
  formatted = format(attributes, type)
  formatted["Request"].merge!(company(attributes[:company])) if attributes[:company]
  formatted
end

.company(company) ⇒ Object



67
68
69
70
71
72
73
74
# File 'lib/seko/order.rb', line 67

def self.company(company)
  {
    "ShipToCompany" => {
      "CompanyCode"        => company[:code],
      "CompanyDescription" => company[:description]
    }
  }
end

.format(order, order_prefix = nil) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/seko/order.rb', line 27

def self.format(order, order_prefix = nil)
  {
    "Request" => {
      "DeliveryDetails"      => address(order[:shipping_address], order[:email]),
      "List" => {
        "SalesOrderLineItem" => line_items(order[:line_items])
      },
      "SalesOrderHeader" => { "DCCode" => order[:warehouse] },
      "#{order_prefix}SalesOrder" => {
        "SalesOrderDate"     => order[:date],
        "SalesOrderNumber"   => order[:number]
      }
    }
  }
end

.line_items(items) ⇒ Object



57
58
59
60
61
62
63
64
65
# File 'lib/seko/order.rb', line 57

def self.line_items(items)
  items.collect.with_index do |line_item, index|
    {
      "LineNumber"  => index + 1,
      "ProductCode" => line_item[:sku],
      "Quantity"    => line_item[:quantity]
    }
  end
end

.submit(attributes) ⇒ Object



17
18
19
# File 'lib/seko/order.rb', line 17

def self.submit(attributes)
  build_request(attributes)
end

.websubmit(attributes) ⇒ Object



13
14
15
# File 'lib/seko/order.rb', line 13

def self.websubmit(attributes)
  build_request(attributes, "Web")
end