ruby_omx 0.0.35 → 0.0.36
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/ruby_omx/orders.rb +18 -16
- data/lib/ruby_omx/request/cancellation_history_request.rb +17 -0
- data/lib/ruby_omx/request/return_history_request.rb +17 -0
- data/lib/ruby_omx/response/cancellation_history_response.rb +49 -0
- data/lib/ruby_omx/response/return_history_response.rb +61 -0
- data/lib/ruby_omx/version.rb +1 -1
- data/test/orders_test.rb +57 -9
- metadata +6 -3
- data/lib/ruby_omx/response/smart_report_response.rb +0 -30
data/lib/ruby_omx/orders.rb
CHANGED
@@ -21,7 +21,8 @@ module RubyOmx
|
|
21
21
|
PENDING_STATUS = ['0','2'] # item is pending an OMX data delivery
|
22
22
|
BACKORDER_STATUS = [ '3', '20','5','8'] # item needs fulfillment attention
|
23
23
|
SHIPPED_STATUS = ['30','40','50','52'] # item has or will soon ship (may come back)
|
24
|
-
|
24
|
+
RETURN_STATUS = ['50','52']
|
25
|
+
CANCEL_STATUS = ['90','95','96'] # item has come back or been cancelled
|
25
26
|
|
26
27
|
# Universal Direct Order Appending (UDOA)
|
27
28
|
|
@@ -53,14 +54,23 @@ module RubyOmx
|
|
53
54
|
end
|
54
55
|
|
55
56
|
|
56
|
-
|
57
|
-
def
|
58
|
-
|
59
|
-
response = get(
|
60
|
-
|
57
|
+
#CancellationHistoryRequest (CHR100) This request type lists all the cancellations that have occurred between two dates.
|
58
|
+
def send_cancellation_history_request(attrs={})
|
59
|
+
request = CancellationHistoryRequest.new(attrs.merge({:http_biz_id=>@http_biz_id, :udi_auth_token=>@udi_auth_token}))
|
60
|
+
response = get(request.to_xml.to_s)
|
61
|
+
return response if request.raw_xml==true || request.raw_xml==1
|
62
|
+
CancellationHistoryResponse.format(response)
|
63
|
+
end
|
64
|
+
|
65
|
+
# ReturnHistoryRequest (RHR100) This request returns a list of all the product returns that have happened within a target date/time range, with basic information about these returns.
|
66
|
+
def send_return_history_request(attrs={})
|
67
|
+
request = ReturnHistoryRequest.new(attrs.merge({:http_biz_id=>@http_biz_id, :udi_auth_token=>@udi_auth_token}))
|
68
|
+
response = get(request.to_xml.to_s)
|
69
|
+
return response if request.raw_xml==true || request.raw_xml==1
|
70
|
+
ReturnHistoryResponse.format(response)
|
61
71
|
end
|
62
|
-
|
63
72
|
end
|
73
|
+
|
64
74
|
end
|
65
75
|
|
66
76
|
|
@@ -87,13 +97,5 @@ end
|
|
87
97
|
# 18 USPS International Global Express 39.99
|
88
98
|
# 19 Next Day Air (USA Only) 0.00
|
89
99
|
# 20 2nd Day Air (USA Only) 0.00
|
90
|
-
# 21 Priority Mail (Free $74.99 and above), 3-6 days 0.00
|
91
|
-
|
92
|
-
#OrderDetailUpdateRequest (ODUR100) This request type enables you to update certain data for orders.
|
93
|
-
#CancellationHistoryRequest (CHR100) This request type lists all the cancellations that have occurred between two dates.
|
94
|
-
#InvoiceProcessRequest (IPR100) This command takes an order number, and runs the invoicing and credit memo processes against the order if there are any order lines that can be subject to an invoice or credit memo, or if there are returns on the order.
|
95
|
-
#OrderCancellationRequest (OCR100) This request type enables you to cancel some or all the line items in an order.
|
96
|
-
#OrderSecondaryStatusUpdateRequest (OSSUR100) This request type enables you to set the secondary status of the OrderLines.
|
97
|
-
#OrderUpdateRequest (OUR200) This request type enables you to change the Payment Plan of an order, as well as the basis date for payment plan calculation, and also update the "Alt ID 2" (a.k.a "Reference") field of the order.
|
98
|
-
#OrderWaitDateUpdateRequest (OWDUR100) This request type enables you to change the Wait Date of an existing order.
|
100
|
+
# 21 Priority Mail (Free $74.99 and above), 3-6 days 0.00
|
99
101
|
=end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module RubyOmx
|
2
|
+
|
3
|
+
class CancellationHistoryRequest < Request
|
4
|
+
|
5
|
+
def initialize(attrs={})
|
6
|
+
return super unless attrs.any?
|
7
|
+
raise MissingRequestOptions if attrs[:start_date].nil? || attrs[:end_date].nil?
|
8
|
+
super
|
9
|
+
self.version = attrs[:version] ||= '1.00'
|
10
|
+
self.udi_parameters << RubyOmx::UDIParameter.new({:key=>'StartDate', :value=>attrs[:start_date]})
|
11
|
+
self.udi_parameters << RubyOmx::UDIParameter.new({:key=>'EndDate', :value=>attrs[:end_date] })
|
12
|
+
end
|
13
|
+
|
14
|
+
attr_accessor :start_date, :end_date
|
15
|
+
xml_name "CancellationHistoryRequest"
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module RubyOmx
|
2
|
+
|
3
|
+
class ReturnHistoryRequest < Request
|
4
|
+
|
5
|
+
def initialize(attrs={})
|
6
|
+
return super unless attrs.any?
|
7
|
+
raise MissingRequestOptions if attrs[:start_date].nil? || attrs[:end_date].nil?
|
8
|
+
super
|
9
|
+
self.version = attrs[:version] ||= '1.00'
|
10
|
+
self.udi_parameters << RubyOmx::UDIParameter.new({:key=>'StartDate', :value=>attrs[:start_date]})
|
11
|
+
self.udi_parameters << RubyOmx::UDIParameter.new({:key=>'EndDate', :value=>attrs[:end_date] })
|
12
|
+
end
|
13
|
+
|
14
|
+
attr_accessor :start_date, :end_date
|
15
|
+
xml_name "ReturnHistoryRequest"
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module RubyOmx
|
2
|
+
|
3
|
+
class CancellationHistoryLineItem < Node
|
4
|
+
xml_name "LineItem"
|
5
|
+
xml_reader :cancellation_date, :as=>DateTime
|
6
|
+
xml_reader :line_number, :from => '@lineNumber'
|
7
|
+
xml_reader :item_code
|
8
|
+
xml_reader :quantity, :as=>Integer # <Quantity>1</Quantity>
|
9
|
+
xml_reader :price, :as=>Float # <Price type="U">4.95</Price>
|
10
|
+
xml_reader :tax, :as=>Float # <Tax percent="8.75">0.43</Tax>
|
11
|
+
xml_reader :total_amount, :as=>Float # <TotalAmount>5.38</TotalAmount>
|
12
|
+
xml_reader :sh, :as=>Float, :from=>"SH"
|
13
|
+
xml_reader :sh_tax, :as=>Float, :from=>"SHTax"
|
14
|
+
end
|
15
|
+
|
16
|
+
class CancellationHistoryOrder < Node
|
17
|
+
xml_name "Order"
|
18
|
+
xml_reader :order_number, :from=>"@orderNumber"
|
19
|
+
xml_reader :order_id, :in=>"Header", :from=>"OrderID"
|
20
|
+
xml_reader :store_code, :in=>"Header"
|
21
|
+
xml_reader :line_items, :as => [CancellationHistoryLineItem], :in=>"OrderDetail"
|
22
|
+
end
|
23
|
+
|
24
|
+
class CancellationHistoryResponse < StandardResponse
|
25
|
+
xml_name "CancellationHistoryResponse>"
|
26
|
+
xml_reader :orders, :as => [CancellationHistoryOrder]
|
27
|
+
end
|
28
|
+
|
29
|
+
#<Order orderNumber="18602">
|
30
|
+
# <Header>
|
31
|
+
# <OrderID/>
|
32
|
+
# <StoreCode/>
|
33
|
+
# </Header>
|
34
|
+
# <OrderDetail>
|
35
|
+
# <LineItem lineNumber="4">
|
36
|
+
# <CancellationDate>2005-08-04 10:46:00</CancellationDate>
|
37
|
+
# <ItemCode>SUMTRACOFFEE</ItemCode>
|
38
|
+
# <Quantity>1</Quantity>
|
39
|
+
# <Price type="U">4.95</Price>
|
40
|
+
# <Tax percent="8.75">0.43</Tax>
|
41
|
+
# <TotalAmount>5.38</TotalAmount>
|
42
|
+
# <SH>0</SH>
|
43
|
+
# <Info/>
|
44
|
+
# <SHTax>0</SHTax>
|
45
|
+
# </LineItem>
|
46
|
+
# </OrderDetail>
|
47
|
+
#</Order>
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module RubyOmx
|
2
|
+
|
3
|
+
class ReturnHistoryLineItem < Node
|
4
|
+
xml_name "LineItem"
|
5
|
+
xml_reader :item_code
|
6
|
+
xml_reader :line_number, :from=>"@lineNumber"
|
7
|
+
xml_reader :ordered_quantity, :as=>Integer # <OrderedQuantity>4</OrderedQuantity>
|
8
|
+
xml_reader :return_quantity, :as=>Integer # <ReturnQuantity>1</ReturnQuantity>
|
9
|
+
xml_reader :return_amount, :as=>Float # <ReturnAmount>3.00</ReturnAmount>
|
10
|
+
xml_reader :return_tax_amount, :as=>Float # <ReturnTaxAmount>0.00</ReturnTaxAmount>
|
11
|
+
xml_reader :return_reason # <ReturnReason code="BADE" type="Replacement">Exchange - Add Inv</ReturnReason>
|
12
|
+
end
|
13
|
+
|
14
|
+
class ReturnHistoryItem < Node
|
15
|
+
xml_name "Return"
|
16
|
+
xml_reader :return_id, :from=>"@returnID"
|
17
|
+
xml_reader :return_type, :from=>"@type"
|
18
|
+
xml_reader :return_date, :as=>DateTime
|
19
|
+
xml_reader :return_amount, :as=>Float
|
20
|
+
xml_reader :return_tax_amount, :as=>Float
|
21
|
+
xml_reader :line_items, :as=>[ReturnHistoryLineItem], :in=>"LineDetail"
|
22
|
+
end
|
23
|
+
|
24
|
+
class ReturnHistoryOrder < Node
|
25
|
+
xml_name "Order"
|
26
|
+
xml_reader :order_number, :from=>"@orderNumber"
|
27
|
+
xml_reader :order_id, :in=>"Header", :from=>"OrderID"
|
28
|
+
xml_reader :store_code, :in=>"Header"
|
29
|
+
xml_reader :returns, :as => [ReturnHistoryItem], :in=>"ReturnDetail"
|
30
|
+
end
|
31
|
+
|
32
|
+
class ReturnHistoryResponse < StandardResponse
|
33
|
+
xml_name "ReturnHistoryResponse"
|
34
|
+
xml_reader :orders, :as => [ReturnHistoryOrder]
|
35
|
+
end
|
36
|
+
|
37
|
+
#<Order orderNumber="12992">
|
38
|
+
# <Header>
|
39
|
+
# <OrderID/>
|
40
|
+
# <StoreCode/>
|
41
|
+
# </Header>
|
42
|
+
# <ReturnDetail>
|
43
|
+
# <Return returnID="1" type="Return">
|
44
|
+
# <ReturnDate>2006-02-16 12:16:00</ReturnDate>
|
45
|
+
# <ReturnAmount>3.00</ReturnAmount>
|
46
|
+
# <ReturnTaxAmount>0.00</ReturnTaxAmount>
|
47
|
+
# <LineDetail>
|
48
|
+
# <LineItem lineNumber="3">
|
49
|
+
# <ItemCode>1112</ItemCode>
|
50
|
+
# <OrderedQuantity>4</OrderedQuantity>
|
51
|
+
# <ReturnQuantity>1</ReturnQuantity>
|
52
|
+
# <ReturnAmount>3.00</ReturnAmount>
|
53
|
+
# <ReturnTaxAmount>0.00</ReturnTaxAmount>
|
54
|
+
# <ReturnReason code="BADE" type="Replacement">Exchange - Add Inv</ReturnReason>
|
55
|
+
# </LineItem>
|
56
|
+
# </LineDetail>
|
57
|
+
# </Return>
|
58
|
+
# </ReturnDetail>
|
59
|
+
#</Order>
|
60
|
+
|
61
|
+
end
|
data/lib/ruby_omx/version.rb
CHANGED
data/test/orders_test.rb
CHANGED
@@ -261,20 +261,68 @@ class OrdersTest < MiniTest::Unit::TestCase
|
|
261
261
|
assert_equal '40', response.line_items[0].line_status.value
|
262
262
|
assert_equal '5/31/2010 5:36:00 AM', response.line_items[0].line_status.date
|
263
263
|
assert_kind_of Hash, response.as_hash
|
264
|
+
assert_kind_of String, response.to_s
|
264
265
|
|
265
266
|
response = @connection_alt.send_info_request({ :order_id=> 'AZ-43253-234', :store_code=>'XX01' })
|
266
267
|
assert_kind_of OrderInfoResponse, response
|
267
268
|
end
|
268
269
|
|
269
|
-
def
|
270
|
-
@connection.stubs(:get).returns(xml_for('
|
271
|
-
response = @connection.
|
272
|
-
assert_kind_of
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
270
|
+
def test_cancellation_history_request
|
271
|
+
@connection.stubs(:get).returns(xml_for('CancellationHistoryResponse(1.00)',200))
|
272
|
+
response = @connection.send_cancellation_history_request({:start_date=>Time.now, :end_date=>Time.now})
|
273
|
+
assert_kind_of CancellationHistoryResponse, response
|
274
|
+
|
275
|
+
assert_equal 15, response.orders.count
|
276
|
+
o = response.orders[8]
|
277
|
+
assert_equal "19661", o.order_number
|
278
|
+
assert_equal 3, o.line_items.count
|
279
|
+
li = o.line_items.first
|
280
|
+
assert_equal '1', li.line_number
|
281
|
+
assert_equal DateTime.parse('2005-08-04 10:46:00'), li.cancellation_date
|
282
|
+
assert_equal "GIFTBASKET04", li.item_code
|
283
|
+
assert_equal 1, li.quantity
|
284
|
+
assert_equal 79.99, li.price
|
285
|
+
assert_equal 0, li.tax
|
286
|
+
assert_equal 79.99, li.total_amount
|
287
|
+
assert_equal 0, li.sh
|
288
|
+
assert_equal 0, li.sh_tax
|
289
|
+
|
290
|
+
assert_kind_of Hash, response.as_hash
|
278
291
|
end
|
279
292
|
|
293
|
+
def test_return_history_request
|
294
|
+
@connection.stubs(:get).returns(xml_for('ReturnHistoryResponse(1.00)',200))
|
295
|
+
response = @connection.send_return_history_request({:start_date=>Time.now, :end_date=>Time.now})
|
296
|
+
assert_kind_of ReturnHistoryResponse, response
|
297
|
+
|
298
|
+
assert_equal 3, response.orders.count
|
299
|
+
o = response.orders[1]
|
300
|
+
|
301
|
+
assert_equal "18016", o.order_number
|
302
|
+
assert_equal 5, o.returns.count
|
303
|
+
|
304
|
+
r = o.returns.first
|
305
|
+
assert_equal '1', r.return_id
|
306
|
+
assert_equal 'Return', r.return_type
|
307
|
+
assert_equal DateTime.parse('2006-02-15 14:35:00'), r.return_date
|
308
|
+
assert_equal 20.02, r.return_amount
|
309
|
+
assert_equal 0, r.return_tax_amount
|
310
|
+
assert_equal 3, r.line_items.count
|
311
|
+
|
312
|
+
li = r.line_items.first
|
313
|
+
assert_equal '1', li.line_number
|
314
|
+
assert_equal '01-112', li.item_code
|
315
|
+
assert_equal 1, li.ordered_quantity
|
316
|
+
assert_equal 1, li.return_quantity
|
317
|
+
assert_equal 10.00, li.return_amount
|
318
|
+
assert_equal 0, li.return_tax_amount
|
319
|
+
assert_equal "Return - Broken during Delievery on the way", li.return_reason
|
320
|
+
|
321
|
+
# Not implemented
|
322
|
+
#assert_equal "BADD", li.return_reason_code
|
323
|
+
#assert_equal "Regular", li.return_reason_type
|
324
|
+
|
325
|
+
assert_kind_of Hash, response.as_hash
|
326
|
+
end
|
327
|
+
|
280
328
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_omx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.36
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: roxml
|
@@ -74,6 +74,7 @@ files:
|
|
74
74
|
- lib/ruby_omx/node.rb
|
75
75
|
- lib/ruby_omx/orders.rb
|
76
76
|
- lib/ruby_omx/purchase_orders.rb
|
77
|
+
- lib/ruby_omx/request/cancellation_history_request.rb
|
77
78
|
- lib/ruby_omx/request/custom_item_info_request.rb
|
78
79
|
- lib/ruby_omx/request/inventory_info_request.rb
|
79
80
|
- lib/ruby_omx/request/item_info_request.rb
|
@@ -82,9 +83,11 @@ files:
|
|
82
83
|
- lib/ruby_omx/request/memo_submission_request.rb
|
83
84
|
- lib/ruby_omx/request/order_info_request.rb
|
84
85
|
- lib/ruby_omx/request/purchase_order_update_request.rb
|
86
|
+
- lib/ruby_omx/request/return_history_request.rb
|
85
87
|
- lib/ruby_omx/request/supplier_item_update_request.rb
|
86
88
|
- lib/ruby_omx/request/udoa_request.rb
|
87
89
|
- lib/ruby_omx/request.rb
|
90
|
+
- lib/ruby_omx/response/cancellation_history_response.rb
|
88
91
|
- lib/ruby_omx/response/custom_item_info_response.rb
|
89
92
|
- lib/ruby_omx/response/inventory_info_response.rb
|
90
93
|
- lib/ruby_omx/response/item_info_response.rb
|
@@ -94,7 +97,7 @@ files:
|
|
94
97
|
- lib/ruby_omx/response/order_info_response.rb
|
95
98
|
- lib/ruby_omx/response/purchase_order_update_response.rb
|
96
99
|
- lib/ruby_omx/response/response_error.rb
|
97
|
-
- lib/ruby_omx/response/
|
100
|
+
- lib/ruby_omx/response/return_history_response.rb
|
98
101
|
- lib/ruby_omx/response/supplier_item_update_response.rb
|
99
102
|
- lib/ruby_omx/response/udoa_response.rb
|
100
103
|
- lib/ruby_omx/response.rb
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module RubyOmx
|
2
|
-
|
3
|
-
class SmartReportField < Node
|
4
|
-
xml_name "Field"
|
5
|
-
xml_reader :id, :from=>'@fieldID'
|
6
|
-
xml_reader :value, :from=>:content
|
7
|
-
end
|
8
|
-
|
9
|
-
class SmartReportRow < Node
|
10
|
-
xml_name "Row"
|
11
|
-
xml_reader :fields, :as=>[SmartReportField]
|
12
|
-
#1 Order Number
|
13
|
-
#2 Alt ID
|
14
|
-
#3 Product SKU
|
15
|
-
#4 Product Name
|
16
|
-
#5 Quantity
|
17
|
-
#6 Price
|
18
|
-
#7 Customer Number
|
19
|
-
#8 Customer Name
|
20
|
-
#10 Shipping Type
|
21
|
-
#11 Supplier Id
|
22
|
-
#12 Supplier Name
|
23
|
-
end
|
24
|
-
|
25
|
-
class SmartReportResponse < Response
|
26
|
-
xml_name "SmartReportResultXml"
|
27
|
-
xml_reader :rows, :as=>[SmartReportRow], :in=>'Detail'
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|