blastramp 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -9,13 +9,12 @@ Usage example
9
9
  -------------
10
10
 
11
11
  blastramp = Blastramp::Session.new('vendor_code', 'vendor_access_key')
12
- blastramp.connect
13
12
 
14
13
  # Get array of inventory counts for a product SKU at all warehouses:
15
- inventory_counts = blastramp.find_inventory_counts_for_sku('AAA-01-XX')
16
-
14
+ inventory_counts = blastramp.inventory_counts.find_inventory_counts_for_sku('1000-BLK-M')
15
+
17
16
  If a warehouse parameter is given, will return a single warehouse inventory_count
18
- inventory_count = blastramp.find_inventory_counts_for_sku('AAA-01-XX','0001')
17
+ inventory_count = blastramp.inventory_counts.find_inventory_counts_for_sku('AAA-01-XX','0001')
19
18
 
20
19
  # Create order:
21
20
  order = Blastramp::OrderUpload.new
@@ -1,4 +1,36 @@
1
1
  module Blastramp
2
2
  class InventoryCountQuery
3
+ # Associations
4
+ attr_reader :session
5
+
6
+ def initialize(session)
7
+ @session = session
8
+ end
9
+
10
+ def find_inventory_counts_for_sku(sku)
11
+ # Get a list of InventoryCounts from Blastramp
12
+ response = session.request 'InventoryCountQuery' do
13
+ http.headers["SOAPAction"] = "http://chrome52/webservices/InventoryCountQuery"
14
+
15
+ soap.body = {
16
+ 'VendorCode' => session.vendor_code,
17
+ 'VendorAccessKey' => session.vendor_access_key,
18
+ 'Sku' => sku
19
+ }
20
+ end
21
+
22
+ # # Make sure we always have an array of handles even if the result only contains one
23
+ # handles = [response[:query_results][:counts][:inventory_count]].flatten.reject(&:blank?)
24
+ #
25
+ # # Create partial InventoryCount entities
26
+ # handles.collect do |handle|
27
+ # inventory_count = build
28
+ # inventory_count.persisted = true
29
+ # inventory_count.whid = handle[:whid]
30
+ # inventory_count
31
+ # end
32
+
33
+ end
34
+
3
35
  end
4
36
  end
@@ -10,25 +10,30 @@ module Blastramp
10
10
  # Returns the Savon::Client used to connect to Blastramp
11
11
  def client
12
12
  @client ||= Savon::Client.new do
13
- wsdl.endpoint = "http://www.ioperate.net/ws/inventory/inventoryws.asmx"
14
- wsdl.namespace = "http://chrome52/webservices"
13
+ wsdl.document = "http://www.ioperate.net/ws/inventory/inventoryws.asmx?wsdl"
14
+ #
15
+ # wsdl.endpoint = "http://www.ioperate.net/ws/inventory/inventoryws.asmx"
16
+ # wsdl.namespace = "http://chrome52/webservices"
15
17
  end
16
18
  end
17
19
 
18
- # Authenticates with Blastramp
19
- def connect
20
- response = client.request :connect do
21
- soap.body = {
22
- 'VendorCode' => self.vendor_code,
23
- 'VendorAccessKey' => self.vendor_access_key
24
- }
25
- end
26
- end
27
-
28
- # Provides access to the debtors
20
+ # Provides access to the inventory counts
29
21
  def inventory_counts
30
22
  @inventory_counts ||= InventoryCountQuery.new(self)
31
23
  end
24
+
25
+ def request(action, &block)
26
+ response = client.request :soap, action, &block
27
+ response_hash = response.to_hash
28
+
29
+ response_key = "#{action}_response".intern
30
+ result_key = "#{action}_result".intern
31
+ if response_hash[response_key] && response_hash[response_key][result_key]
32
+ response_hash[response_key][result_key]
33
+ else
34
+ {}
35
+ end
36
+ end
32
37
 
33
38
  end
34
39
  end
@@ -1,3 +1,3 @@
1
1
  module Blastramp
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,23 @@
1
+ require './spec/spec_helper'
2
+
3
+ describe Blastramp::InventoryCountQuery do
4
+ let(:session) { stub_session }
5
+ subject { Blastramp::InventoryCountQuery.new(session) }
6
+
7
+ describe "new" do
8
+ it "stores session" do
9
+ subject.session.should === session
10
+ end
11
+ end
12
+
13
+ describe "inventory_count_proxy" do
14
+ it "uses InventoryCountQuery on API" do
15
+ savon.expects('InventoryCountQuery').with(
16
+ 'VendorCode' => 'ABC',
17
+ 'VendorAccessKey' => 'TWX45IX2R9G35394',
18
+ 'Sku' => 'AAA-01-XX').returns(:many)
19
+ subject.find_inventory_counts_for_sku('AAA-01-XX')
20
+ end
21
+ end
22
+
23
+ end
@@ -17,13 +17,6 @@ describe Blastramp::Session do
17
17
  subject.client.should be_instance_of(::Savon::Client)
18
18
  end
19
19
  end
20
-
21
- describe "connect" do
22
- it "connects to Blastramp" do
23
- savon.expects('connect').with(has_entries('VendorCode' => 'ABC','VendorAccessKey' => 'TWX45IX2R9G35394')).returns(:success)
24
- subject.connect
25
- end
26
- end
27
20
 
28
21
  describe "inventory_counts" do
29
22
  it "returns an InventoryCountQuery" do
@@ -0,0 +1,64 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
3
+ xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
4
+ <soap:Body>
5
+ <InventoryCountProxyResponse xmlns="http://chrome52/webservices/">
6
+ <InventoryCountProxyResult>
7
+ <Result>SUCCESS</Result>
8
+ <ErrorDesc></ErrorDesc>
9
+ <ErrorNumber>0</ErrorNumber>
10
+ <QueryResults>
11
+ <Sku>AAA-01-XX</Sku>
12
+ <Counts>
13
+ <InventoryCount>
14
+ <WHID>0001</WHID>
15
+ <AvailableToAllocate>0</AvailableToAllocate>
16
+ <AllocatedAndReleased>0</AllocatedAndReleased>
17
+ <Backordered>0</Backordered>
18
+ <Cancelled>0</Cancelled>
19
+ <Unreleased>0</Unreleased>
20
+ <BeingManufactured>0</BeingManufactured>
21
+ <TotalExpected>0</TotalExpected>
22
+ <TotalReceived>0</TotalReceived>
23
+ <TotalShipped>0</TotalShipped>
24
+ <StockTransferIn>0</StockTransferIn>
25
+ <StockTransferOut>0</StockTransferOut>
26
+ <OriginalPO>0</OriginalPO>
27
+ <AmendedPO>0</AmendedPO>
28
+ <UnshippedPO>0</UnshippedPO>
29
+ <ActiveShipment>0</ActiveShipment>
30
+ <AvailableToSell>0</AvailableToSell>
31
+ <CurrentInStock>0</CurrentInStock>
32
+ <TotalSalesOrder>0</TotalSalesOrder>
33
+ <ReceivingVariance>0</ReceivingVariance>
34
+ <WarehouseVariance>0</WarehouseVariance>
35
+ </InventoryCount>
36
+ <InventoryCount>
37
+ <WHID>0002</WHID>
38
+ <AvailableToAllocate>0</AvailableToAllocate>
39
+ <AllocatedAndReleased>0</AllocatedAndReleased>
40
+ <Backordered>0</Backordered>
41
+ <Cancelled>0</Cancelled>
42
+ <Unreleased>0</Unreleased>
43
+ <BeingManufactured>0</BeingManufactured>
44
+ <TotalExpected>0</TotalExpected>
45
+ <TotalReceived>0</TotalReceived>
46
+ <TotalShipped>0</TotalShipped>
47
+ <StockTransferIn>0</StockTransferIn>
48
+ <StockTransferOut>0</StockTransferOut>
49
+ <OriginalPO>0</OriginalPO>
50
+ <AmendedPO>0</AmendedPO>
51
+ <UnshippedPO>0</UnshippedPO>
52
+ <ActiveShipment>0</ActiveShipment>
53
+ <AvailableToSell>0</AvailableToSell>
54
+ <CurrentInStock>0</CurrentInStock>
55
+ <TotalSalesOrder>0</TotalSalesOrder>
56
+ <ReceivingVariance>0</ReceivingVariance>
57
+ <WarehouseVariance>0</WarehouseVariance>
58
+ </InventoryCount>
59
+ </Counts>
60
+ </QueryResults>
61
+ </InventoryCountProxyResult>
62
+ </InventoryCountProxyResponse>
63
+ </soap:Body>
64
+ </soap:Envelope>
@@ -0,0 +1,114 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://chrome52/webservices/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://chrome52/webservices/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
3
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">A service for Chrome52 clients to query their inventory counts.</wsdl:documentation>
4
+ <wsdl:types>
5
+ <s:schema elementFormDefault="qualified" targetNamespace="http://chrome52/webservices/">
6
+ <s:element name="InventoryCountProxy">
7
+ <s:complexType>
8
+ <s:sequence>
9
+ <s:element minOccurs="0" maxOccurs="1" name="VendorCode" type="s:string" />
10
+ <s:element minOccurs="0" maxOccurs="1" name="VendorAccessKey" type="s:string" />
11
+ <s:element minOccurs="0" maxOccurs="1" name="Sku" type="s:string" />
12
+ </s:sequence>
13
+ </s:complexType>
14
+ </s:element>
15
+ <s:element name="InventoryCountProxyResponse">
16
+ <s:complexType>
17
+ <s:sequence>
18
+ <s:element minOccurs="0" maxOccurs="1" name="InventoryCountProxyResult" type="tns:InventoryCountProxyResult" />
19
+ </s:sequence>
20
+ </s:complexType>
21
+ </s:element>
22
+ <s:complexType name="InventoryCountProxyResult">
23
+ <s:sequence>
24
+ <s:element minOccurs="0" maxOccurs="1" name="Result" type="s:string" />
25
+ <s:element minOccurs="0" maxOccurs="1" name="ErrorDesc" type="s:string" />
26
+ <s:element minOccurs="1" maxOccurs="1" name="ErrorNumber" type="s:int" />
27
+ <s:element minOccurs="0" maxOccurs="1" name="QueryResults" type="tns:InventoryCounts" />
28
+ </s:sequence>
29
+ </s:complexType>
30
+ <s:complexType name="InventoryCounts">
31
+ <s:sequence>
32
+ <s:element minOccurs="0" maxOccurs="1" name="Sku" type="s:string" />
33
+ <s:element minOccurs="0" maxOccurs="1" name="Counts" type="tns:ArrayOfInventoryCount" />
34
+ </s:sequence>
35
+ </s:complexType>
36
+ <s:complexType name="ArrayOfInventoryCount">
37
+ <s:sequence>
38
+ <s:element minOccurs="0" maxOccurs="unbounded" name="InventoryCount" nillable="true" type="tns:InventoryCount" />
39
+ </s:sequence>
40
+ </s:complexType>
41
+ <s:complexType name="InventoryCount">
42
+ <s:sequence>
43
+ <s:element minOccurs="0" maxOccurs="1" name="WHID" type="s:string" />
44
+ <s:element minOccurs="1" maxOccurs="1" name="AvailableToAllocate" type="s:int" />
45
+ <s:element minOccurs="1" maxOccurs="1" name="AllocatedAndReleased" type="s:int" />
46
+ <s:element minOccurs="1" maxOccurs="1" name="Backordered" type="s:int" />
47
+ <s:element minOccurs="1" maxOccurs="1" name="Cancelled" type="s:int" />
48
+ <s:element minOccurs="1" maxOccurs="1" name="Unreleased" type="s:int" />
49
+ <s:element minOccurs="1" maxOccurs="1" name="BeingManufactured" type="s:int" />
50
+ <s:element minOccurs="1" maxOccurs="1" name="TotalExpected" type="s:int" />
51
+ <s:element minOccurs="1" maxOccurs="1" name="TotalReceived" type="s:int" />
52
+ <s:element minOccurs="1" maxOccurs="1" name="TotalShipped" type="s:int" />
53
+ <s:element minOccurs="1" maxOccurs="1" name="StockTransferIn" type="s:int" />
54
+ <s:element minOccurs="1" maxOccurs="1" name="StockTransferOut" type="s:int" />
55
+ <s:element minOccurs="1" maxOccurs="1" name="OriginalPO" type="s:int" />
56
+ <s:element minOccurs="1" maxOccurs="1" name="AmendedPO" type="s:int" />
57
+ <s:element minOccurs="1" maxOccurs="1" name="UnshippedPO" type="s:int" />
58
+ <s:element minOccurs="1" maxOccurs="1" name="ActiveShipment" type="s:int" />
59
+ <s:element minOccurs="1" maxOccurs="1" name="AvailableToSell" type="s:int" />
60
+ <s:element minOccurs="1" maxOccurs="1" name="CurrentInStock" type="s:int" />
61
+ <s:element minOccurs="1" maxOccurs="1" name="TotalSalesOrder" type="s:int" />
62
+ <s:element minOccurs="1" maxOccurs="1" name="ReceivingVariance" type="s:int" />
63
+ <s:element minOccurs="1" maxOccurs="1" name="WarehouseVariance" type="s:int" />
64
+ </s:sequence>
65
+ </s:complexType>
66
+ </s:schema>
67
+ </wsdl:types>
68
+ <wsdl:message name="InventoryCountProxySoapIn">
69
+ <wsdl:part name="parameters" element="tns:InventoryCountProxy" />
70
+ </wsdl:message>
71
+ <wsdl:message name="InventoryCountProxySoapOut">
72
+ <wsdl:part name="parameters" element="tns:InventoryCountProxyResponse" />
73
+ </wsdl:message>
74
+ <wsdl:portType name="InventoryWsSoap">
75
+ <wsdl:operation name="InventoryCountProxy">
76
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Inventory counts.</wsdl:documentation>
77
+ <wsdl:input message="tns:InventoryCountProxySoapIn" />
78
+ <wsdl:output message="tns:InventoryCountProxySoapOut" />
79
+ </wsdl:operation>
80
+ </wsdl:portType>
81
+ <wsdl:binding name="InventoryWsSoap" type="tns:InventoryWsSoap">
82
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
83
+ <wsdl:operation name="InventoryCountProxy">
84
+ <soap:operation soapAction="http://chrome52/webservices/InventoryCountProxy" style="document" />
85
+ <wsdl:input>
86
+ <soap:body use="literal" />
87
+ </wsdl:input>
88
+ <wsdl:output>
89
+ <soap:body use="literal" />
90
+ </wsdl:output>
91
+ </wsdl:operation>
92
+ </wsdl:binding>
93
+ <wsdl:binding name="InventoryWsSoap12" type="tns:InventoryWsSoap">
94
+ <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
95
+ <wsdl:operation name="InventoryCountProxy">
96
+ <soap12:operation soapAction="http://chrome52/webservices/InventoryCountProxy" style="document" />
97
+ <wsdl:input>
98
+ <soap12:body use="literal" />
99
+ </wsdl:input>
100
+ <wsdl:output>
101
+ <soap12:body use="literal" />
102
+ </wsdl:output>
103
+ </wsdl:operation>
104
+ </wsdl:binding>
105
+ <wsdl:service name="InventoryWs">
106
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">A service for Chrome52 clients to query their inventory counts.</wsdl:documentation>
107
+ <wsdl:port name="InventoryWsSoap" binding="tns:InventoryWsSoap">
108
+ <soap:address location="http://www.ioperate.net/ws/inventory/inventoryws.asmx" />
109
+ </wsdl:port>
110
+ <wsdl:port name="InventoryWsSoap12" binding="tns:InventoryWsSoap12">
111
+ <soap12:address location="http://www.ioperate.net/ws/inventory/inventoryws.asmx" />
112
+ </wsdl:port>
113
+ </wsdl:service>
114
+ </wsdl:definitions>
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 1
9
- version: 0.0.1
8
+ - 2
9
+ version: 0.0.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - cnantais
@@ -100,8 +100,10 @@ files:
100
100
  - lib/blastramp/inventory_count_query.rb
101
101
  - lib/blastramp/session.rb
102
102
  - lib/blastramp/version.rb
103
+ - spec/blastramp/inventory_count_query_spec.rb
103
104
  - spec/blastramp/session_spec.rb
104
- - spec/fixtures/connect/success.xml
105
+ - spec/fixtures/inventory_count_query/many.xml
106
+ - spec/fixtures/wsdl.xml
105
107
  - spec/spec_helper.rb
106
108
  has_rdoc: true
107
109
  homepage: http://zkron.com
@@ -136,6 +138,8 @@ signing_key:
136
138
  specification_version: 3
137
139
  summary: Blastramp Shipping Services Client Library
138
140
  test_files:
141
+ - spec/blastramp/inventory_count_query_spec.rb
139
142
  - spec/blastramp/session_spec.rb
140
- - spec/fixtures/connect/success.xml
143
+ - spec/fixtures/inventory_count_query/many.xml
144
+ - spec/fixtures/wsdl.xml
141
145
  - spec/spec_helper.rb
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
3
- xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
4
- <soap:Body>
5
- <ConnectResponse xmlns="http://chrome52/webservices/">
6
- <ConnectResult>SUCCESS</ConnectResult>
7
- </ConnectResponse>
8
- </soap:Body>
9
- </soap:Envelope>