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.
@@ -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
- CANCEL_STATUS = ['50','52','90','95','96'] # item has come back or been cancelled
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
- # Smart Report Information
57
- def send_smart_report_request(attrs={})
58
- schedule_id = attrs[:schedule_id] ||= 1
59
- response = get("https://omx.ordermotion.com/en/net/SmartReports.aspx?HTTPBizID=#{@http_biz_id}&ScheduleID=#{schedule_id}")
60
- SmartReportResponse.format(response)
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
@@ -1,3 +1,3 @@
1
1
  module RubyOmx
2
- VERSION = "0.0.35"
2
+ VERSION = "0.0.36"
3
3
  end
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 test_send_smart_report_request
270
- @connection.stubs(:get).returns(xml_for('SmartReports',200))
271
- response = @connection.send_smart_report_request
272
- assert_kind_of SmartReportResponse, response
273
- assert_equal 2, response.rows.length
274
- assert_equal 12, response.rows[0].fields.length
275
- assert_equal '1', response.rows[0].fields[0].id
276
- assert_equal '12432343', response.rows[0].fields[0].value
277
- assert_kind_of Hash, response.as_hash
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.35
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 00:00:00.000000000 Z
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/smart_report_response.rb
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