ruby_omx 0.0.19 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. data/lib/ruby_omx/base.rb +3 -18
  2. data/lib/ruby_omx/connection.rb +3 -5
  3. data/lib/ruby_omx/exceptions.rb +16 -54
  4. data/lib/ruby_omx/items.rb +32 -56
  5. data/lib/ruby_omx/memos.rb +4 -4
  6. data/lib/ruby_omx/node.rb +30 -0
  7. data/lib/ruby_omx/orders.rb +13 -13
  8. data/lib/ruby_omx/purchase_orders.rb +5 -4
  9. data/lib/ruby_omx/request/custom_item_info_request.rb +17 -0
  10. data/lib/ruby_omx/request/item_info_request.rb +16 -0
  11. data/lib/ruby_omx/request/item_update_request.rb +37 -0
  12. data/lib/ruby_omx/request/memo_submission_request.rb +21 -0
  13. data/lib/ruby_omx/request/order_info_request.rb +22 -0
  14. data/lib/ruby_omx/request/purchase_order_update_request.rb +21 -0
  15. data/lib/ruby_omx/request/udoa_request.rb +84 -0
  16. data/lib/ruby_omx/request.rb +24 -0
  17. data/lib/ruby_omx/response/custom_item_info_response.rb +24 -0
  18. data/lib/ruby_omx/response/item_info_response.rb +4 -18
  19. data/lib/ruby_omx/response/item_update_response.rb +15 -0
  20. data/lib/ruby_omx/response/memo_submission_response.rb +1 -1
  21. data/lib/ruby_omx/response/order_info_response.rb +25 -15
  22. data/lib/ruby_omx/response/purchase_order_update_response.rb +1 -4
  23. data/lib/ruby_omx/response/response_error.rb +3 -9
  24. data/lib/ruby_omx/response/smart_report_response.rb +2 -2
  25. data/lib/ruby_omx/response/udoa_response.rb +7 -8
  26. data/lib/ruby_omx/response.rb +26 -41
  27. data/lib/ruby_omx/version.rb +1 -1
  28. data/lib/ruby_omx.rb +3 -18
  29. data/test/base_test.rb +4 -13
  30. data/test/items_test.rb +76 -19
  31. data/test/orders_test.rb +11 -12
  32. data/test/purchase_orders_test.rb +5 -9
  33. data/test/real_config.yml +8 -0
  34. data/test/real_test.rb +61 -0
  35. metadata +17 -7
  36. data/lib/ruby_omx/response/custom_item_attr_info_response.rb +0 -43
  37. data/lib/ruby_omx/response/memo_submission_request.rb +0 -33
  38. data/lib/ruby_omx/response/order_info_request.rb +0 -29
  39. data/lib/ruby_omx/response/purchase_order_update_request.rb +0 -33
  40. data/lib/ruby_omx/response/udoa_request.rb +0 -94
data/test/real_test.rb ADDED
@@ -0,0 +1,61 @@
1
+ require 'test_helper'
2
+
3
+ class RealTestTest < MiniTest::Unit::TestCase
4
+
5
+ def setup
6
+ @config = YAML.load_file( File.join(File.dirname(__FILE__), 'real_config.yml') )['real']
7
+ @connection = RubyOmx::Base.new(@config)
8
+ @line1 = { :item_code=>'WATCH-1', :quantity => 1, :price => 122.50 }
9
+ @line2 = { :item_code=>'APPLE-12', :quantity => 31, :price => 1.50 }
10
+ end
11
+
12
+ =begin
13
+ def test_real_item_update
14
+ request_attrs = {:items=> [{
15
+ :item_code => 'APPLE',
16
+ :product_status=>'True',
17
+ :incomplete_flag=>'False',
18
+ :product_name=>'Apple Product',
19
+ :product_group=>45,
20
+ :cost_of_goods=>10,
21
+ :upc_code=>'234234234',
22
+ :allow_order_line_info=>'True',
23
+ :launch_date=>'2/23/2006',
24
+ :file_sub_code=>20,
25
+ :inventory_product_flag=>'True',
26
+ :tax_code=>'TC4',
27
+ :inventory_type=>3,
28
+ :drop_ship_file_sub_code=>31 }]}
29
+
30
+ r = @connection.build_item_update_request(request_attrs)
31
+ assert_instance_of String, r.to_xml.to_s
32
+
33
+ response = @connection.append_item(request_attrs)
34
+ puts response.to_s
35
+ assert_kind_of ItemUpdateResponse, response
36
+ end
37
+
38
+ def test_real_purchase_order
39
+ po_data = { :line_items => [@line1, @line2], :supplier_id => '76' }
40
+ r = @connection.build_purchase_order_update_request(po_data)
41
+ assert_instance_of String, r.to_xml.to_s
42
+
43
+ response = @connection.append_po(po_data)
44
+ puts response.to_s
45
+ assert_kind_of PurchaseOrderUpdateResponse, response
46
+ end
47
+
48
+ def test_real_order_info
49
+ order_info_data = { :order_number => '16651', :version=>'2.00' }
50
+ r = @connection.build_info_request(order_info_data)
51
+ assert_instance_of String, r.to_xml.to_s
52
+ puts r.to_xml.to_s
53
+
54
+ response = @connection.send_info_request(order_info_data)
55
+ puts response.to_s
56
+ assert_kind_of OrderInfoResponse, response
57
+ end
58
+
59
+ =end
60
+
61
+ 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.19
4
+ version: 0.0.20
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-08-11 00:00:00.000000000 Z
12
+ date: 2012-08-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: roxml
@@ -71,19 +71,25 @@ files:
71
71
  - lib/ruby_omx/exceptions.rb
72
72
  - lib/ruby_omx/items.rb
73
73
  - lib/ruby_omx/memos.rb
74
+ - lib/ruby_omx/node.rb
74
75
  - lib/ruby_omx/orders.rb
75
76
  - lib/ruby_omx/purchase_orders.rb
76
- - lib/ruby_omx/response/custom_item_attr_info_response.rb
77
+ - lib/ruby_omx/request/custom_item_info_request.rb
78
+ - lib/ruby_omx/request/item_info_request.rb
79
+ - lib/ruby_omx/request/item_update_request.rb
80
+ - lib/ruby_omx/request/memo_submission_request.rb
81
+ - lib/ruby_omx/request/order_info_request.rb
82
+ - lib/ruby_omx/request/purchase_order_update_request.rb
83
+ - lib/ruby_omx/request/udoa_request.rb
84
+ - lib/ruby_omx/request.rb
85
+ - lib/ruby_omx/response/custom_item_info_response.rb
77
86
  - lib/ruby_omx/response/item_info_response.rb
78
- - lib/ruby_omx/response/memo_submission_request.rb
87
+ - lib/ruby_omx/response/item_update_response.rb
79
88
  - lib/ruby_omx/response/memo_submission_response.rb
80
- - lib/ruby_omx/response/order_info_request.rb
81
89
  - lib/ruby_omx/response/order_info_response.rb
82
- - lib/ruby_omx/response/purchase_order_update_request.rb
83
90
  - lib/ruby_omx/response/purchase_order_update_response.rb
84
91
  - lib/ruby_omx/response/response_error.rb
85
92
  - lib/ruby_omx/response/smart_report_response.rb
86
- - lib/ruby_omx/response/udoa_request.rb
87
93
  - lib/ruby_omx/response/udoa_response.rb
88
94
  - lib/ruby_omx/response.rb
89
95
  - lib/ruby_omx/version.rb
@@ -96,6 +102,8 @@ files:
96
102
  - test/memos_test.rb
97
103
  - test/orders_test.rb
98
104
  - test/purchase_orders_test.rb
105
+ - test/real_config.yml
106
+ - test/real_test.rb
99
107
  - test/test_config.yml
100
108
  - test/test_helper.rb
101
109
  homepage: http://github.com/aew/ruby_omx
@@ -128,5 +136,7 @@ test_files:
128
136
  - test/memos_test.rb
129
137
  - test/orders_test.rb
130
138
  - test/purchase_orders_test.rb
139
+ - test/real_config.yml
140
+ - test/real_test.rb
131
141
  - test/test_config.yml
132
142
  - test/test_helper.rb
@@ -1,43 +0,0 @@
1
- module RubyOmx
2
-
3
- class CustomItemAttribute < Response
4
- xml_name "Attribute"
5
- xml_reader :attribute_id, :from => '@attributeID'
6
- xml_reader :name, :from => '@name'
7
- xml_reader :value, :from => :content
8
- end
9
-
10
- class CIAIResponseItem < Response
11
- xml_name "Item"
12
- xml_reader :item_code, :from => '@itemCode'
13
- xml_reader :active, :from => '@active'
14
- xml_reader :attributes, :as => [CustomItemAttribute]
15
- end
16
-
17
- class CustomItemAttributeInformationResponse < Response
18
- xml_name "CustomItemAttributeInformationResponse"
19
-
20
- xml_reader :items, :as => [CIAIResponseItem], :in => "Items"
21
- xml_reader :success
22
-
23
- #xml_reader :item_code, :from => '@itemCode', :in => "Item"
24
- #xml_reader :active, :from => '@active', :in => "Item"
25
- #xml_reader :incomplete, :from => '@incomplete', :in => "Item"
26
- #xml_reader :parent_item_code, :from => '@parentItemCode', :in => "Item"
27
-
28
-
29
- #xml_reader :product_name, :in => "Item"
30
- #xml_reader :available_inventory, :as => Integer, :in => "Item"
31
- #xml_reader :sub_item_count, :as => Integer, :in => "Item"
32
- #xml_reader :last_updated_date, :as => DateTime, :in => "Item"
33
- #xml_reader :weight, :as => Float, :in => "Item"
34
-
35
- #xml_reader :price_type, :from => '@priceType', :in => 'Item/PriceData'
36
- #xml_reader :price_quantity, :from => '@quantity', :in => 'Item/PriceData/Price', :as => Integer
37
- #xml_reader :price_amount, :from => 'Amount', :in => 'Item/PriceData/Price', :as => Float
38
- #xml_reader :price_addl_sh, :from => 'AdditionalSH', :in => 'Item/PriceData/Price', :as => Float
39
- #xml_reader :bonus, :in => 'Item/PriceData/Price', :as => Float
40
-
41
- end
42
-
43
- end
@@ -1,33 +0,0 @@
1
- module RubyOmx
2
-
3
- class MemoSubmissionRequest < Response
4
- def initialize(a=nil)
5
- return super unless a.present? # bail if no array of options has been given
6
- http_biz_id = a.delete(:http_biz_id)
7
- udi_auth_token = a.delete(:udi_auth_token)
8
-
9
- self.version = a[:version] ||= '1.00'
10
- super
11
-
12
- self.udi_parameters = []
13
- self.udi_parameters << RubyOmx::UDIParameter.new({:key=>'UDIAuthToken', :value=>udi_auth_token})
14
- self.udi_parameters << RubyOmx::UDIParameter.new({:key=>'HTTPBizID', :value=>http_biz_id})
15
- end
16
-
17
- attr_accessor :order_number, :order_id, :store_code, :raw_xml
18
-
19
- xml_name "MemoSubmissionRequest"
20
- xml_accessor :version, :from => '@version'
21
- xml_accessor :udi_parameters, :as => [RubyOmx::UDIParameter], :in => 'UDIParameter'
22
-
23
- xml_accessor :lead_number, :in=>'Memo'
24
- xml_accessor :customer_number, :in=>'Memo'
25
- xml_accessor :order_number, :in=>'Memo'
26
- xml_accessor :shipment_number, :in=>'Memo'
27
- xml_accessor :reminder_date, :in=>'Memo', :as=>DateTime # Dates are almost the same as the W3C Schema "date" type, but with a space instead of the "T" separating the date from the time.
28
- xml_accessor :memo_type, :in=>'Memo', :as=>Integer
29
- xml_accessor :memo_text, :in=>'Memo'
30
- xml_accessor :memo_transmission_date, :in=>'Memo', :as=>DateTime
31
-
32
- end
33
- end
@@ -1,29 +0,0 @@
1
- #$wtf = "https://api.omx.ordermotion.com/hdde/xml/udi.asp?Wrapper=1&RequestType=OrderInformationRequest&RequestVersion=1.00&HTTPBizID=".BIZ_ID."&OrderNumber=".$OMorderid."&level=$level";
2
- module RubyOmx
3
-
4
- class OrderInformationRequest < Response
5
- def initialize(a=nil)
6
- return super unless a.present? # bail if no array of options has been given
7
- http_biz_id = a.delete(:http_biz_id)
8
- udi_auth_token = a.delete(:udi_auth_token)
9
-
10
- raise MissingOrderOptions if a[:order_number].nil? && (a[:store_code].nil? || a[:order_id].nil?)
11
- self.version = a[:version] ||= '1.00'
12
- super
13
-
14
- self.udi_parameters = []
15
- self.udi_parameters << RubyOmx::UDIParameter.new({:key=>'UDIAuthToken', :value=>udi_auth_token})
16
- self.udi_parameters << RubyOmx::UDIParameter.new({:key=>'HTTPBizID', :value=>http_biz_id})
17
- self.udi_parameters << RubyOmx::UDIParameter.new({:key=>'OrderNumber', :value=>a[:order_number]}) if a[:order_number]
18
- self.udi_parameters << RubyOmx::UDIParameter.new({:key=>'OrderID', :value=>a[:order_id]}) if a[:order_id]
19
- self.udi_parameters << RubyOmx::UDIParameter.new({:key=>'StoreCode', :value=>a[:store_code]}) if a[:store_code]
20
- self.udi_parameters << RubyOmx::UDIParameter.new({:key=>'level', :value=>a[:level] ||=2 })
21
- end
22
-
23
- attr_accessor :order_number, :order_id, :store_code, :raw_xml
24
-
25
- xml_name "OrderInformationRequest"
26
- xml_accessor :version, :from => '@version'
27
- xml_accessor :udi_parameters, :as => [RubyOmx::UDIParameter], :in => 'UDIParameter'
28
- end
29
- end
@@ -1,33 +0,0 @@
1
- module RubyOmx
2
-
3
- class PurchaseOrderUpdateRequest < Response
4
- def initialize(a=nil)
5
- if a.present?
6
- http_biz_id = a.delete(:http_biz_id)
7
- udi_auth_token = a.delete(:udi_auth_token)
8
-
9
- #required_fields = [:purchase_order]
10
- #raise MissingPurchaseOrderOptions if required_fields.any? { |option| a[option].nil? }
11
- #raise MissingPurchaseOrderOptions if a[:purchase_order][:po_number].nil? && a[:purchase_order][:supplier_id].nil?
12
- #raise MissingPurchaseOrderOptions if a[:purchase_order][:line_items].nil?
13
- super
14
- self.version = a[:version] ||= '1.00'
15
- self.udi_parameters = []
16
- self.udi_parameters << UDIParameter.new({:key=>'UDIAuthToken', :value=>udi_auth_token})
17
- self.udi_parameters << UDIParameter.new({:key=>'HTTPBizID', :value=>http_biz_id})
18
- else
19
- super
20
- end
21
- end
22
-
23
- attr_accessor :raw_xml
24
-
25
- xml_name "PurchaseOrderUpdateRequest"
26
- xml_accessor :version, :from => '@version'
27
- xml_accessor :udi_parameters, :as => [RubyOmx::UDIParameter], :in => 'UDIParameter'
28
-
29
- xml_accessor :po_number, :from=>'@PONumber', :in=>'PurchaseOrder' #<PurchaseOrder PONumber="16651" supplierID="76">
30
- xml_accessor :supplier_id, :from=>'@supplierID', :in=>'PurchaseOrder'
31
- xml_accessor :line_items, :as => [RubyOmx::LineItem], :in => 'PurchaseOrder/LineDetail'
32
- end
33
- end
@@ -1,94 +0,0 @@
1
- module RubyOmx
2
-
3
- class Address < Response
4
- xml_name "Address"
5
- xml_accessor :address_type, :from => '@type'
6
- xml_accessor :title_code, :company, :firstname, :lastname, :address1, :address2, :city, :state, :phone_number, :email
7
- xml_accessor :zip, :from => 'ZIP'
8
- xml_accessor :tld, :from => 'TLD'
9
- end
10
-
11
- class CustomField < Response
12
- xml_name 'Field'
13
- xml_accessor :field_id, :from => '@fieldID'
14
- xml_accessor :line_number, :from => '@lineNumber'
15
- xml_accessor :value, :from => :content
16
- end
17
-
18
- class Flag < Response
19
- xml_name 'Flag'
20
- xml_accessor :name, :from => '@name'
21
- xml_accessor :value, :from => :content
22
- end
23
-
24
- class UDOARequest < Response
25
- def initialize(a=nil)
26
- super if a.nil?
27
- if !a.nil?
28
- http_biz_id = a.delete(:http_biz_id)
29
- udi_auth_token = a.delete(:udi_auth_token)
30
-
31
- required_fields = [:keycode, :queue_flag, :verify_flag, :order_date, :order_id, :bill_to, :line_items, :method_code]
32
- raise MissingOrderOptions if required_fields.any? { |option| a[option].nil? }
33
- super
34
- self.version = a[:version] ||= '2.00'
35
- self.payment_type = a[:payment_type] ||= '6' #6 for open invoice
36
- self.origin_type = a[:origin_type] ||= '2' # 2 = phone order, 3 = internet order
37
- self.udi_parameters = []
38
- self.udi_parameters << UDIParameter.new({:key=>'UDIAuthToken', :value=>udi_auth_token})
39
- self.udi_parameters << UDIParameter.new({:key=>'HTTPBizID', :value=>http_biz_id})
40
- self.udi_parameters << UDIParameter.new({:key=>'Keycode', :value=>a[:keycode]})
41
- self.udi_parameters << UDIParameter.new({:key=>'VerifyFlag', :value=>a[:verify_flag] ||= 'True' }) # Determines whether a successful order should be saved, or only verified/calculated. When set to "True", OrderMotion will behave as if the order was placed, but not return an Order Number in the response.
42
- self.udi_parameters << UDIParameter.new({:key=>'QueueFlag', :value=>a[:queue_flag] ||= 'False' }) # Determines whether any orders with errors will be stored in the OrderMotion "Outside Order Queue", to be corrected by an OrderMotion user before resubmission. If set to "True", almost all orders will be accepted by OrderMotion, but additional order information will only be returned in the response if the order is successfully placed. Otherwise, any order with any error (eg invalid ZIP code) will be rejected.
43
- self.udi_parameters << UDIParameter.new({:key=>'Vendor', :value=>a[:vendor] }) if !a[:vendor].nil?
44
- self.bill_to = Address.new(a[:bill_to])
45
- self.ship_to = Address.new(a[:ship_to])
46
-
47
- i = 0
48
- self.line_items = a[:line_items].collect { |h|
49
- i+=1
50
- h[:line_number] = h[:line_number] ||= i # Provide line numbers if they are omitted
51
- LineItem.new(h)
52
- }
53
-
54
- self.custom_fields = a[:custom_fields].collect { |h| CustomField.new(h) } if !a[:custom_fields].nil?
55
- self.flags = a[:flags].collect { |h| Flag.new(h) } if !a[:flags].nil?
56
- else
57
- super
58
- end
59
- end
60
-
61
- attr_accessor :raw_xml, :keycode, :queue_flag, :verify_flag, :vendor
62
-
63
- xml_name "UDOARequest"
64
- xml_accessor :version, :from => '@version'
65
- xml_accessor :udi_parameters, :as => [RubyOmx::UDIParameter], :in => 'UDIParameter'
66
- xml_accessor :order_date, :in => 'Header', :as => DateTime # Dates are almost the same as the W3C Schema "date" type, but with a space instead of the "T" separating the date from the time.
67
- xml_accessor :order_id, :in => 'Header', :from => 'OrderID'
68
- xml_accessor :origin_type, :in => 'Header'
69
- xml_accessor :store_code, :in => 'Header'
70
- xml_accessor :bill_to, :as => Address, :in => 'Customer'
71
- xml_accessor :flags, :as => [Flag], :in => 'Customer/FlagData'
72
- xml_accessor :ship_to, :as => Address, :in => 'ShippingInformation'
73
-
74
- xml_accessor :method_code, :in => 'ShippingInformation', :as => Integer
75
- xml_accessor :shipping_amount, :in => 'ShippingInformation', :as => Float
76
- xml_accessor :handling_amount, :in => 'ShippingInformation', :as => Float
77
- xml_accessor :special_instructions, :in => 'ShippingInformation'
78
- xml_accessor :gift_wrapping, :in => 'ShippingInformation'
79
- xml_accessor :gift_message, :in => 'ShippingInformation'
80
-
81
- xml_accessor :payment_type, :in => 'Payment', :from => '@type'
82
- xml_accessor :card_number, :in => 'Payment'
83
- xml_accessor :card_verification, :in => 'Payment'
84
- xml_accessor :card_exp_date_month, :in => 'Payment'
85
- xml_accessor :card_exp_date_year, :in => 'Payment'
86
- xml_accessor :card_status, :in => 'Payment'
87
- xml_accessor :card_auth_code, :in => 'Payment'
88
- xml_accessor :card_transaction_id, :from => 'CardTransactionID', :in => 'Payment'
89
-
90
- xml_accessor :line_items, :as => [RubyOmx::LineItem], :in => 'OrderDetail'
91
- xml_accessor :custom_fields, :as => [CustomField], :in => 'CustomFields/Report'
92
- xml_accessor :total_amount, :in => 'Check'
93
- end
94
- end