ingram_micro 0.1.4 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ingram_micro.gemspec +3 -1
- data/lib/ingram_micro.rb +5 -0
- data/lib/ingram_micro/base_element.rb +0 -7
- data/lib/ingram_micro/elements/credit_card_information.rb +0 -1
- data/lib/ingram_micro/elements/outbound_purchase_order_information.rb +21 -0
- data/lib/ingram_micro/elements/{shipment_information.rb → outbound_shipment_information.rb} +1 -1
- data/lib/ingram_micro/elements/return_authorization_submission.rb +2 -2
- data/lib/ingram_micro/elements/sales_order_shipment_information.rb +1 -1
- data/lib/ingram_micro/elements/sales_order_submission.rb +7 -2
- data/lib/ingram_micro/inbound_base_element.rb +16 -0
- data/lib/ingram_micro/inbound_elements/inbound_detail.rb +12 -0
- data/lib/ingram_micro/inbound_elements/inbound_line_item.rb +110 -0
- data/lib/ingram_micro/inbound_elements/inbound_order_header.rb +67 -0
- data/lib/ingram_micro/inbound_elements/inbound_purchase_order_information.rb +23 -0
- data/lib/ingram_micro/inbound_elements/inbound_shipment_information.rb +75 -0
- data/lib/ingram_micro/inbound_elements/inventory_sync.rb +16 -0
- data/lib/ingram_micro/inbound_elements/inventory_sync_detail.rb +12 -0
- data/lib/ingram_micro/inbound_elements/inventory_sync_line_item.rb +47 -0
- data/lib/ingram_micro/inbound_elements/sales_order_rejection.rb +27 -0
- data/lib/ingram_micro/inbound_elements/sales_order_success.rb +27 -0
- data/lib/ingram_micro/inbound_elements/serial_numbers.rb +58 -0
- data/lib/ingram_micro/inbound_elements/ship_advice.rb +27 -0
- data/lib/ingram_micro/inbound_transmission_factory.rb +52 -0
- data/lib/ingram_micro/transmission.rb +3 -3
- data/lib/ingram_micro/transmissions/check_shipment_status.rb +1 -0
- data/lib/ingram_micro/transmissions/failure_response.rb +9 -0
- data/lib/ingram_micro/transmissions/return_authorization.rb +2 -0
- data/lib/ingram_micro/transmissions/sales_order.rb +7 -2
- data/lib/ingram_micro/transmissions/standard_response.rb +8 -2
- data/lib/ingram_micro/transmissions/success_response.rb +9 -0
- data/lib/ingram_micro/version.rb +1 -1
- data/xsd/{BPXML_InventoryStatus.xsd → inbound/BPXML_InventoryStatus.xsd} +0 -0
- data/xsd/{inbound → outbound}/BPXML-StandardResponse.xsd +0 -0
- metadata +53 -9
- data/lib/ingram_micro/elements/purchase_order_information.rb +0 -15
- data/lib/ingram_micro/request_processor.rb +0 -11
- data/xsd/xml_samples/Sales_order_sample.xml +0 -143
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5fb97a0c9a6fe546e93cfe1bde2430d821f1831d
|
4
|
+
data.tar.gz: 7c8ab7fe0e9f17c022de3fc1ca3858ac12f40e33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9aeadaf84533aacbde526c281da6ce65052483ba6443020c95ba380ac4ea8f5be6c6b97f755925a117d96e726bb18d034d70572b913d0946918950de5dfc1e32
|
7
|
+
data.tar.gz: a69df711be7acf6bba396369f4557bbb0fd9cca4f3cd539826a6a677b199a24f3e1cf577e338cee16c2e50ec9a8fe6864fea90d6fa420b30060ee9222e66a34f
|
data/ingram_micro.gemspec
CHANGED
@@ -6,7 +6,7 @@ require 'ingram_micro/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "ingram_micro"
|
8
8
|
spec.version = IngramMicro::VERSION
|
9
|
-
spec.authors = ["Ben Christel", "Rachel Heaton", "Colby Holliday", "Joseph Nguyen"]
|
9
|
+
spec.authors = ["Ben Christel", "Khaaliq DeJan", "Rachel Heaton", "Colby Holliday", "Joseph Nguyen", "Shola Oyedele"]
|
10
10
|
spec.email = ["webops@walkerandcobrands.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{Rubygem wrapper for Ingram Micro API}
|
@@ -30,10 +30,12 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_dependency "faraday_middleware"
|
31
31
|
spec.add_dependency "nokogiri", "~> 1.6"
|
32
32
|
spec.add_dependency "require_all"
|
33
|
+
spec.add_dependency "nori"
|
33
34
|
spec.add_development_dependency "bundler", "~> 1.10"
|
34
35
|
spec.add_development_dependency "rake", "~> 10.0"
|
35
36
|
spec.add_development_dependency "rspec"
|
36
37
|
spec.add_development_dependency "pry"
|
37
38
|
spec.add_development_dependency "fabrication"
|
38
39
|
spec.add_development_dependency "faker"
|
40
|
+
spec.add_development_dependency "rubocop"
|
39
41
|
end
|
data/lib/ingram_micro.rb
CHANGED
@@ -2,6 +2,7 @@ require "nokogiri"
|
|
2
2
|
require "faraday"
|
3
3
|
require "faraday_middleware"
|
4
4
|
require "require_all"
|
5
|
+
require "securerandom"
|
5
6
|
require_rel 'ingram_micro/**/*.rb'
|
6
7
|
|
7
8
|
module IngramMicro
|
@@ -15,4 +16,8 @@ module IngramMicro
|
|
15
16
|
yield configuration
|
16
17
|
configuration.assert_valid
|
17
18
|
end
|
19
|
+
|
20
|
+
def self.generate_order_number(prefix='')
|
21
|
+
"#{prefix}#{SecureRandom.random_number(89999) + 10000}"
|
22
|
+
end
|
18
23
|
end
|
@@ -18,13 +18,6 @@ class IngramMicro::BaseElement
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
def parse(message_hash)
|
22
|
-
defaults.each do |field|
|
23
|
-
element_name = field.to_s.gsub('_', '-')
|
24
|
-
@element[field] = message_hash[element_name]
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
21
|
def self.format(field, formatter)
|
29
22
|
@formatters ||= {}
|
30
23
|
@formatters[field] = formatter
|
@@ -11,7 +11,6 @@ class IngramMicro::CreditCardInformation < IngramMicro::BaseElement
|
|
11
11
|
card_holder_state: nil,
|
12
12
|
card_holder_post_code: nil,
|
13
13
|
card_holder_country_code: nil,
|
14
|
-
authorized_amount: 0.0,
|
15
14
|
billing_sequence_number: nil,
|
16
15
|
billing_authorization_response: nil,
|
17
16
|
billing_address_match: nil,
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class IngramMicro::OutboundPurchaseOrderInformation < IngramMicro::BaseElement
|
2
|
+
DEFAULTS = {
|
3
|
+
purchase_order_number: nil,
|
4
|
+
account_description: nil,
|
5
|
+
purchase_order_amount: 0.0,
|
6
|
+
purchase_order_event: nil,
|
7
|
+
currency_code: nil,
|
8
|
+
comments: nil
|
9
|
+
}
|
10
|
+
|
11
|
+
def initialize(options = {})
|
12
|
+
super(options)
|
13
|
+
|
14
|
+
# customer_id is always set by BaseElement, but we don't need it here
|
15
|
+
self.element.delete(:customer_id)
|
16
|
+
end
|
17
|
+
|
18
|
+
def defaults
|
19
|
+
DEFAULTS
|
20
|
+
end
|
21
|
+
end
|
@@ -19,10 +19,10 @@ class IngramMicro::ReturnAuthorizationSubmission < IngramMicro::BaseElement
|
|
19
19
|
def initialize(options={})
|
20
20
|
super
|
21
21
|
@element[:customer] ||= IngramMicro::Customer.new
|
22
|
-
@element[:shipment_information] ||= IngramMicro::
|
22
|
+
@element[:shipment_information] ||= IngramMicro::OutboundShipmentInformation.new
|
23
23
|
@element[:credit_card_information] ||= IngramMicro::CreditCardInformation.new
|
24
24
|
@element[:order_header] ||= IngramMicro::ReturnAuthorizationOrderHeader.new
|
25
|
-
@element[:purchase_order_information] ||= IngramMicro::
|
25
|
+
@element[:purchase_order_information] ||= IngramMicro::OutboundPurchaseOrderInformation.new
|
26
26
|
@element[:detail] ||= IngramMicro::Detail.new
|
27
27
|
end
|
28
28
|
|
@@ -1,5 +1,4 @@
|
|
1
1
|
class IngramMicro::SalesOrderSubmission < IngramMicro::BaseElement
|
2
|
-
|
3
2
|
DEFAULTS = {
|
4
3
|
customer: nil,
|
5
4
|
sales_order_shipment_information: nil,
|
@@ -9,7 +8,8 @@ class IngramMicro::SalesOrderSubmission < IngramMicro::BaseElement
|
|
9
8
|
line_items: [],
|
10
9
|
customer_id: nil,
|
11
10
|
business_name: nil,
|
12
|
-
carrier_name: nil
|
11
|
+
carrier_name: nil,
|
12
|
+
purchase_order_information: nil
|
13
13
|
}
|
14
14
|
|
15
15
|
def defaults
|
@@ -37,6 +37,11 @@ class IngramMicro::SalesOrderSubmission < IngramMicro::BaseElement
|
|
37
37
|
builder.send('shipment-information') do
|
38
38
|
@element[:sales_order_shipment_information].build(builder)
|
39
39
|
end
|
40
|
+
if @element[:purchase_order_information]
|
41
|
+
builder.send('purchase-order-information') do
|
42
|
+
@element[:purchase_order_information].build(builder)
|
43
|
+
end
|
44
|
+
end
|
40
45
|
builder.send('credit-card-information') do
|
41
46
|
@element[:credit_card_information].build(builder)
|
42
47
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class IngramMicro::InboundBaseElement
|
2
|
+
attr_accessor :hash
|
3
|
+
|
4
|
+
def initialize(hash)
|
5
|
+
@hash = hash
|
6
|
+
end
|
7
|
+
|
8
|
+
def ==(other)
|
9
|
+
self.class == other.class &&
|
10
|
+
@hash == other.hash
|
11
|
+
end
|
12
|
+
|
13
|
+
def transaction_name
|
14
|
+
return @hash['message']['message_header']['transaction_name']
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class IngramMicro::InboundDetail < IngramMicro::InboundBaseElement
|
2
|
+
|
3
|
+
def line_items
|
4
|
+
if hash['line_item'].is_a?(Array)
|
5
|
+
hash['line_item'].map do |line_item|
|
6
|
+
IngramMicro::InboundLineItem.new(line_item)
|
7
|
+
end
|
8
|
+
else
|
9
|
+
[IngramMicro::InboundLineItem.new(hash['line_item'])]
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
class IngramMicro::InboundLineItem < IngramMicro::InboundBaseElement
|
2
|
+
|
3
|
+
def base_price
|
4
|
+
hash['base_price']
|
5
|
+
end
|
6
|
+
|
7
|
+
def bill_of_lading
|
8
|
+
hash['bill_of_lading']
|
9
|
+
end
|
10
|
+
|
11
|
+
def container_id
|
12
|
+
hash['container_id']
|
13
|
+
end
|
14
|
+
|
15
|
+
def comments
|
16
|
+
hash['comments']
|
17
|
+
end
|
18
|
+
|
19
|
+
def customer_order_date
|
20
|
+
hash['customer_order_date']
|
21
|
+
end
|
22
|
+
|
23
|
+
def line_discount
|
24
|
+
hash['line_discount']
|
25
|
+
end
|
26
|
+
|
27
|
+
def line_tax1
|
28
|
+
hash['line_tax1']
|
29
|
+
end
|
30
|
+
|
31
|
+
def line_tax2
|
32
|
+
hash['line_tax2']
|
33
|
+
end
|
34
|
+
|
35
|
+
def line_tax3
|
36
|
+
hash['line_tax3']
|
37
|
+
end
|
38
|
+
|
39
|
+
def serial_numbers
|
40
|
+
if hash['serial_list']
|
41
|
+
serial_numbers_hash = hash['serial_list']['serial_numbers']
|
42
|
+
IngramMicro::SerialNumbers.new(serial_numbers_hash)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def item_code
|
47
|
+
hash['item_code']
|
48
|
+
end
|
49
|
+
|
50
|
+
def line_no
|
51
|
+
hash['line_no']
|
52
|
+
end
|
53
|
+
|
54
|
+
def line_reference
|
55
|
+
hash['line_reference']
|
56
|
+
end
|
57
|
+
|
58
|
+
def line_status
|
59
|
+
hash['line_status'] || ''
|
60
|
+
end
|
61
|
+
|
62
|
+
def brightpoint_line_no
|
63
|
+
hash['brightpoint_line_no']
|
64
|
+
end
|
65
|
+
|
66
|
+
def market_id
|
67
|
+
hash['market_id']
|
68
|
+
end
|
69
|
+
|
70
|
+
def pallet_id
|
71
|
+
hash['pallet_id']
|
72
|
+
end
|
73
|
+
|
74
|
+
def product_name
|
75
|
+
hash['product_name']
|
76
|
+
end
|
77
|
+
|
78
|
+
def quantity
|
79
|
+
hash['quantity']
|
80
|
+
end
|
81
|
+
|
82
|
+
def backorder_quantity
|
83
|
+
hash['backorder_quantity']
|
84
|
+
end
|
85
|
+
|
86
|
+
def rejection_date
|
87
|
+
hash['rejection_date']
|
88
|
+
end
|
89
|
+
|
90
|
+
def scac
|
91
|
+
hash['scac']
|
92
|
+
end
|
93
|
+
|
94
|
+
def ship_quantity
|
95
|
+
hash['ship_quantity']
|
96
|
+
end
|
97
|
+
|
98
|
+
def special_message
|
99
|
+
hash['special_message']
|
100
|
+
end
|
101
|
+
|
102
|
+
def unit_of_measure
|
103
|
+
hash['unit_of_measure']
|
104
|
+
end
|
105
|
+
|
106
|
+
def universal_product_code
|
107
|
+
hash['universal_product_code']
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
class IngramMicro::InboundOrderHeader < IngramMicro::InboundBaseElement
|
2
|
+
|
3
|
+
def customer_order_number
|
4
|
+
hash['customer_order_number']
|
5
|
+
end
|
6
|
+
|
7
|
+
def customer_order_date
|
8
|
+
hash['customer_order_date']
|
9
|
+
end
|
10
|
+
|
11
|
+
def order_sub_total
|
12
|
+
hash['order_sub_total']
|
13
|
+
end
|
14
|
+
|
15
|
+
def order_discount
|
16
|
+
hash['order_discount']
|
17
|
+
end
|
18
|
+
|
19
|
+
def order_tax1
|
20
|
+
hash['order_tax1']
|
21
|
+
end
|
22
|
+
|
23
|
+
def order_tax2
|
24
|
+
hash['order_tax2']
|
25
|
+
end
|
26
|
+
|
27
|
+
def order_tax3
|
28
|
+
hash['order_tax3']
|
29
|
+
end
|
30
|
+
|
31
|
+
def order_shipment_charge
|
32
|
+
hash['order_shipment_charge']
|
33
|
+
end
|
34
|
+
|
35
|
+
def order_total_net
|
36
|
+
hash['order_total_net']
|
37
|
+
end
|
38
|
+
|
39
|
+
def order_status
|
40
|
+
hash['order_status']
|
41
|
+
end
|
42
|
+
|
43
|
+
def order_type
|
44
|
+
hash['order_type']
|
45
|
+
end
|
46
|
+
|
47
|
+
def brightpoint_order_number
|
48
|
+
hash['brightpoint_order_number']
|
49
|
+
end
|
50
|
+
|
51
|
+
def warehouse_id
|
52
|
+
hash['warehouse_id']
|
53
|
+
end
|
54
|
+
|
55
|
+
def ship_date
|
56
|
+
hash['ship_date']
|
57
|
+
end
|
58
|
+
|
59
|
+
def order_reference
|
60
|
+
hash['order_reference']
|
61
|
+
end
|
62
|
+
|
63
|
+
def gift_flag
|
64
|
+
hash['gift_flag']
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class IngramMicro::InboundPurchaseOrderInformation < IngramMicro::InboundBaseElement
|
2
|
+
|
3
|
+
def purchase_order_number
|
4
|
+
hash['purchase_order_number']
|
5
|
+
end
|
6
|
+
|
7
|
+
def account_description
|
8
|
+
hash['account_description']
|
9
|
+
end
|
10
|
+
|
11
|
+
def purchase_order_amount
|
12
|
+
hash['purchase_order_amount']
|
13
|
+
end
|
14
|
+
|
15
|
+
def currency_code
|
16
|
+
hash['currency_code']
|
17
|
+
end
|
18
|
+
|
19
|
+
def comments
|
20
|
+
hash['comments']
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
class IngramMicro::InboundShipmentInformation < IngramMicro::InboundBaseElement
|
2
|
+
|
3
|
+
def ship_first_name
|
4
|
+
hash['ship_first_name']
|
5
|
+
end
|
6
|
+
|
7
|
+
def ship_last_name
|
8
|
+
hash['ship_last_name']
|
9
|
+
end
|
10
|
+
|
11
|
+
def ship_middle_initial
|
12
|
+
hash['ship_middle_initial']
|
13
|
+
end
|
14
|
+
|
15
|
+
def ship_address1
|
16
|
+
hash['ship_address1']
|
17
|
+
end
|
18
|
+
|
19
|
+
def ship_address2
|
20
|
+
hash['ship_address2']
|
21
|
+
end
|
22
|
+
|
23
|
+
def ship_address3
|
24
|
+
hash['ship_address3']
|
25
|
+
end
|
26
|
+
|
27
|
+
def ship_city
|
28
|
+
hash['ship_city']
|
29
|
+
end
|
30
|
+
|
31
|
+
def ship_state
|
32
|
+
hash['ship_state']
|
33
|
+
end
|
34
|
+
|
35
|
+
def ship_post_code
|
36
|
+
hash['ship_post_code']
|
37
|
+
end
|
38
|
+
|
39
|
+
def ship_country_code
|
40
|
+
hash['ship_country_code']
|
41
|
+
end
|
42
|
+
|
43
|
+
def ship_phone1
|
44
|
+
hash['ship_phone1']
|
45
|
+
end
|
46
|
+
|
47
|
+
def ship_phone2
|
48
|
+
hash['ship_phone2']
|
49
|
+
end
|
50
|
+
|
51
|
+
def ship_fax
|
52
|
+
hash['ship_fax']
|
53
|
+
end
|
54
|
+
|
55
|
+
def ship_email
|
56
|
+
hash['ship_email']
|
57
|
+
end
|
58
|
+
|
59
|
+
def ship_via
|
60
|
+
hash['ship_via']
|
61
|
+
end
|
62
|
+
|
63
|
+
def ship_request_date
|
64
|
+
hash['ship_request_date']
|
65
|
+
end
|
66
|
+
|
67
|
+
def ship_request_from
|
68
|
+
hash['ship_request_from']
|
69
|
+
end
|
70
|
+
|
71
|
+
def ship_request_warehouse
|
72
|
+
hash['ship_request_warehouse']
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class IngramMicro::InventorySync < IngramMicro::InboundBaseElement
|
2
|
+
|
3
|
+
def message_header
|
4
|
+
@hash['message']['message_header']
|
5
|
+
end
|
6
|
+
|
7
|
+
def inventory_status
|
8
|
+
@hash['message']['inventory_synchronization']
|
9
|
+
end
|
10
|
+
|
11
|
+
def detail
|
12
|
+
detail = @hash['message']['inventory_synchronization']['detail']
|
13
|
+
IngramMicro::InventorySyncDetail.new(detail)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class IngramMicro::InventorySyncDetail < IngramMicro::InboundBaseElement
|
2
|
+
|
3
|
+
def line_items
|
4
|
+
if hash['line_item'].is_a?(Array)
|
5
|
+
hash['line_item'].map do |line_item|
|
6
|
+
IngramMicro::InventorySyncLineItem.new(line_item)
|
7
|
+
end
|
8
|
+
else
|
9
|
+
[IngramMicro::InventorySyncLineItem.new(hash['line_item'])]
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
class IngramMicro::InventorySyncLineItem < IngramMicro::InboundBaseElement
|
2
|
+
|
3
|
+
def line_no
|
4
|
+
hash['line_no'].to_i
|
5
|
+
end
|
6
|
+
|
7
|
+
def transaction_document_number
|
8
|
+
hash['transaction_document_number']
|
9
|
+
end
|
10
|
+
|
11
|
+
def item_code
|
12
|
+
hash['item_code']
|
13
|
+
end
|
14
|
+
|
15
|
+
def universal_product_code
|
16
|
+
hash['universal_product_code'].to_i
|
17
|
+
end
|
18
|
+
|
19
|
+
def warehouse_id
|
20
|
+
hash['warehouse_id']
|
21
|
+
end
|
22
|
+
|
23
|
+
def unit_of_measure
|
24
|
+
hash['unit_of_measure']
|
25
|
+
end
|
26
|
+
|
27
|
+
def quantity_on_hand
|
28
|
+
hash['quantity_on_hand'].to_i
|
29
|
+
end
|
30
|
+
|
31
|
+
def quantity_committed
|
32
|
+
hash['quantity_committed'].to_i
|
33
|
+
end
|
34
|
+
|
35
|
+
def quantity_available
|
36
|
+
hash['quantity_available'].to_i
|
37
|
+
end
|
38
|
+
|
39
|
+
def quantity_on_back_order
|
40
|
+
hash['quantity_on_back_order'].to_i
|
41
|
+
end
|
42
|
+
|
43
|
+
def synchronization_timestamp
|
44
|
+
hash['synchronization_timestamp'].to_i
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
class IngramMicro::SalesOrderRejection < IngramMicro::InboundBaseElement
|
2
|
+
|
3
|
+
def customer_id
|
4
|
+
hash['message']['sales_order_rejection']['header']['customer_id']
|
5
|
+
end
|
6
|
+
|
7
|
+
def shipment_information
|
8
|
+
shipment_information_hash = hash['message']['sales_order_rejection']['header']['shipment_information']
|
9
|
+
IngramMicro::InboundShipmentInformation.new(shipment_information_hash)
|
10
|
+
end
|
11
|
+
|
12
|
+
def purchase_order_information
|
13
|
+
purchase_order_information_hash = hash['message']['sales_order_rejection']['header']['purchase_order_information']
|
14
|
+
IngramMicro::InboundPurchaseOrderInformation.new(purchase_order_information_hash)
|
15
|
+
end
|
16
|
+
|
17
|
+
def order_header
|
18
|
+
order_header_hash = hash['message']['sales_order_rejection']['header']['order_header']
|
19
|
+
IngramMicro::InboundOrderHeader.new(order_header_hash)
|
20
|
+
end
|
21
|
+
|
22
|
+
def detail
|
23
|
+
detail_hash = hash['message']['sales_order_rejection']['detail']
|
24
|
+
IngramMicro::InboundDetail.new(detail_hash)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
class IngramMicro::SalesOrderSuccess < IngramMicro::InboundBaseElement
|
2
|
+
|
3
|
+
def customer_id
|
4
|
+
hash['message']['sales_order_success']['header']['customer_id']
|
5
|
+
end
|
6
|
+
|
7
|
+
def shipment_information
|
8
|
+
shipment_information_hash = hash['message']['sales_order_success']['header']['shipment_information']
|
9
|
+
IngramMicro::InboundShipmentInformation.new(shipment_information_hash)
|
10
|
+
end
|
11
|
+
|
12
|
+
def purchase_order_information
|
13
|
+
purchase_order_information_hash = hash['message']['sales_order_success']['header']['purchase_order_information']
|
14
|
+
IngramMicro::InboundPurchaseOrderInformation.new(purchase_order_information_hash)
|
15
|
+
end
|
16
|
+
|
17
|
+
def order_header
|
18
|
+
order_header_hash = hash['message']['sales_order_success']['header']['order_header']
|
19
|
+
IngramMicro::InboundOrderHeader.new(order_header_hash)
|
20
|
+
end
|
21
|
+
|
22
|
+
def detail
|
23
|
+
detail_hash = hash['message']['sales_order_success']['detail']
|
24
|
+
IngramMicro::InboundDetail.new(detail_hash)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
class IngramMicro::SerialNumbers < IngramMicro::InboundBaseElement
|
2
|
+
|
3
|
+
def min
|
4
|
+
hash['min']
|
5
|
+
end
|
6
|
+
|
7
|
+
def sid
|
8
|
+
hash['sid']
|
9
|
+
end
|
10
|
+
|
11
|
+
def mdn
|
12
|
+
hash['mdn']
|
13
|
+
end
|
14
|
+
|
15
|
+
def esn
|
16
|
+
hash['esn']
|
17
|
+
end
|
18
|
+
|
19
|
+
def sim
|
20
|
+
hash['sim']
|
21
|
+
end
|
22
|
+
|
23
|
+
def imei
|
24
|
+
hash['imei']
|
25
|
+
end
|
26
|
+
|
27
|
+
def sublock1
|
28
|
+
hash['sublock1']
|
29
|
+
end
|
30
|
+
|
31
|
+
def sublock2
|
32
|
+
hash['sublock2']
|
33
|
+
end
|
34
|
+
|
35
|
+
def sublock3
|
36
|
+
hash['sublock3']
|
37
|
+
end
|
38
|
+
|
39
|
+
def irdb
|
40
|
+
hash['irdb']
|
41
|
+
end
|
42
|
+
|
43
|
+
def meid
|
44
|
+
hash['meid']
|
45
|
+
end
|
46
|
+
|
47
|
+
def iccid
|
48
|
+
hash['iccid']
|
49
|
+
end
|
50
|
+
|
51
|
+
def macid
|
52
|
+
hash['macid']
|
53
|
+
end
|
54
|
+
|
55
|
+
def pesn
|
56
|
+
hash['pesn']
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
class IngramMicro::ShipAdvice < IngramMicro::InboundBaseElement
|
2
|
+
|
3
|
+
def customer_id
|
4
|
+
@hash['message']['ship_advice']['header']['customer_id']
|
5
|
+
end
|
6
|
+
|
7
|
+
def shipment_information
|
8
|
+
shipment_information_hash = @hash['message']['ship_advice']['header']['shipment_information']
|
9
|
+
IngramMicro::InboundShipmentInformation.new(shipment_information_hash)
|
10
|
+
end
|
11
|
+
|
12
|
+
def purchase_order_information
|
13
|
+
purchase_order_information_hash = @hash['message']['ship_advice']['header']['purchase_order_information']
|
14
|
+
IngramMicro::InboundPurchaseOrderInformation.new(purchase_order_information_hash)
|
15
|
+
end
|
16
|
+
|
17
|
+
def order_header
|
18
|
+
order_header_hash = @hash['message']['ship_advice']['header']['order_header']
|
19
|
+
IngramMicro::InboundOrderHeader.new(order_header_hash)
|
20
|
+
end
|
21
|
+
|
22
|
+
def detail
|
23
|
+
detail_hash = @hash['message']['ship_advice']['detail']
|
24
|
+
IngramMicro::InboundDetail.new(detail_hash)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'nori'
|
2
|
+
|
3
|
+
class IngramMicro::InboundTransmissionFactory
|
4
|
+
attr_reader :request_body_string
|
5
|
+
|
6
|
+
def self.from_xml(request_body_string)
|
7
|
+
new(request_body_string).from_xml
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize(request_body_string)
|
11
|
+
begin
|
12
|
+
Nokogiri::XML(request_body_string) do |config|
|
13
|
+
config.options = Nokogiri::XML::ParseOptions::STRICT | Nokogiri::XML::ParseOptions::NONET
|
14
|
+
end
|
15
|
+
rescue Nokogiri::SyntaxError => e
|
16
|
+
raise Error, "#{self.class.name} received malformed XML: #{request_body_string}: #{e.message}"
|
17
|
+
end
|
18
|
+
|
19
|
+
@request_body_string = request_body_string
|
20
|
+
end
|
21
|
+
|
22
|
+
def from_xml
|
23
|
+
inbound_transmission_class.new(request_hash)
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def inbound_transmission_class
|
29
|
+
case transaction_name
|
30
|
+
when 'sales-order-success'
|
31
|
+
IngramMicro::SalesOrderSuccess
|
32
|
+
when 'sales-order-rejection'
|
33
|
+
IngramMicro::SalesOrderRejection
|
34
|
+
when 'ship-advice'
|
35
|
+
IngramMicro::ShipAdvice
|
36
|
+
when 'inventory-synchronization'
|
37
|
+
IngramMicro::InventorySync
|
38
|
+
else
|
39
|
+
raise Error, "#{self.class.name} received unrecognized transaction-name: #{transaction_name}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def transaction_name
|
44
|
+
request_hash['message']['message_header']['transaction_name']
|
45
|
+
end
|
46
|
+
|
47
|
+
def request_hash
|
48
|
+
@request_hash ||= Nori.new.parse(request_body_string)
|
49
|
+
end
|
50
|
+
|
51
|
+
class Error < StandardError; end
|
52
|
+
end
|
@@ -4,11 +4,11 @@ class IngramMicro::Transmission
|
|
4
4
|
'sales-order-submission' => 'outbound/BPXML-SalesOrder.xsd',
|
5
5
|
'shipment-status' => 'outbound/BPXML-ShipmentStatus.xsd',
|
6
6
|
'return-authorization' => 'outbound/BPXML-ReturnAuthorization.xsd',
|
7
|
+
'standard-response' => 'outbound/BPXML-StandardResponse.xsd',
|
7
8
|
'load-reject' => 'inbound/BPXML-LoadReject.xsd',
|
8
9
|
'load-success' => 'inbound/BPXML-LoadSuccess.xsd',
|
9
10
|
'return-receipt' => 'inbound/BPXML-ReturnReceipt.xsd',
|
10
|
-
'ship-advice' => 'inbound/BPXML-ShipAdvice.xsd'
|
11
|
-
'standard-response' => 'inbound/BPXML-StandardResponse.xsd',
|
11
|
+
'ship-advice' => 'inbound/BPXML-ShipAdvice.xsd'
|
12
12
|
}
|
13
13
|
|
14
14
|
attr_reader :errors, :transaction_name
|
@@ -19,7 +19,7 @@ class IngramMicro::Transmission
|
|
19
19
|
|
20
20
|
def schema_valid?
|
21
21
|
xsd = Nokogiri::XML::Schema(File.read("#{IngramMicro::GEM_DIR}/xsd/" +
|
22
|
-
XSD[self.
|
22
|
+
XSD[self.class::TRANSMISSION_FILENAME]))
|
23
23
|
valid = true
|
24
24
|
xsd.validate(self.xml_builder.doc).each do |error|
|
25
25
|
errors << error.message
|
@@ -1,7 +1,9 @@
|
|
1
1
|
class IngramMicro::SalesOrder < IngramMicro::Transmission
|
2
|
+
TRANSMISSION_FILENAME = 'sales-order-submission'
|
3
|
+
|
2
4
|
attr_accessor :customer, :credit_card_information, :sales_order_header,
|
3
5
|
:sales_order_shipment_information, :detail, :carrier_name, :business_name,
|
4
|
-
:customer_id
|
6
|
+
:customer_id, :purchase_order_information
|
5
7
|
|
6
8
|
def initialize(options={})
|
7
9
|
super(options)
|
@@ -14,6 +16,8 @@ class IngramMicro::SalesOrder < IngramMicro::Transmission
|
|
14
16
|
@business_name = options[:business_name]
|
15
17
|
@customer_id = options[:customer_id]
|
16
18
|
@carrier_name = options[:carrier_name]
|
19
|
+
@purchase_order_information = options[:purchase_order_information]
|
20
|
+
|
17
21
|
validate_options(options)
|
18
22
|
end
|
19
23
|
|
@@ -46,7 +50,8 @@ class IngramMicro::SalesOrder < IngramMicro::Transmission
|
|
46
50
|
customer: customer,
|
47
51
|
sales_order_shipment_information: sales_order_shipment_information,
|
48
52
|
sales_order_header: sales_order_header,
|
49
|
-
credit_card_information: credit_card_information
|
53
|
+
credit_card_information: credit_card_information,
|
54
|
+
purchase_order_information: purchase_order_information
|
50
55
|
}
|
51
56
|
sos = IngramMicro::SalesOrderSubmission.new(sos_options)
|
52
57
|
builder.send('sales-order-submission') do
|
@@ -1,10 +1,12 @@
|
|
1
1
|
class IngramMicro::StandardResponse < IngramMicro::Transmission
|
2
|
+
TRANSMISSION_FILENAME = 'standard-response'
|
3
|
+
|
2
4
|
attr_accessor :status_code, :status_description, :comments,
|
3
|
-
:response_timestamp, :filename
|
5
|
+
:response_timestamp, :filename, :transaction_name
|
4
6
|
|
5
7
|
def initialize(options={})
|
6
8
|
super(options)
|
7
|
-
@transaction_name =
|
9
|
+
@transaction_name = options[:transaction_name]
|
8
10
|
@status_code = options[:status_code]
|
9
11
|
@status_description = options[:status_description]
|
10
12
|
@comments = options[:comments]
|
@@ -12,6 +14,10 @@ class IngramMicro::StandardResponse < IngramMicro::Transmission
|
|
12
14
|
@filename = options[:filename]
|
13
15
|
end
|
14
16
|
|
17
|
+
def to_xml(opts={})
|
18
|
+
xml_builder.to_xml
|
19
|
+
end
|
20
|
+
|
15
21
|
def xml_builder
|
16
22
|
@builder ||= Nokogiri::XML::Builder.new do |builder|
|
17
23
|
builder.message do
|
data/lib/ingram_micro/version.rb
CHANGED
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,17 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ingram_micro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Christel
|
8
|
+
- Khaaliq DeJan
|
8
9
|
- Rachel Heaton
|
9
10
|
- Colby Holliday
|
10
11
|
- Joseph Nguyen
|
12
|
+
- Shola Oyedele
|
11
13
|
autorequire:
|
12
14
|
bindir: exe
|
13
15
|
cert_chain: []
|
14
|
-
date: 2016-
|
16
|
+
date: 2016-08-09 00:00:00.000000000 Z
|
15
17
|
dependencies:
|
16
18
|
- !ruby/object:Gem::Dependency
|
17
19
|
name: faraday
|
@@ -69,6 +71,20 @@ dependencies:
|
|
69
71
|
- - ">="
|
70
72
|
- !ruby/object:Gem::Version
|
71
73
|
version: '0'
|
74
|
+
- !ruby/object:Gem::Dependency
|
75
|
+
name: nori
|
76
|
+
requirement: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
type: :runtime
|
82
|
+
prerelease: false
|
83
|
+
version_requirements: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
72
88
|
- !ruby/object:Gem::Dependency
|
73
89
|
name: bundler
|
74
90
|
requirement: !ruby/object:Gem::Requirement
|
@@ -153,6 +169,20 @@ dependencies:
|
|
153
169
|
- - ">="
|
154
170
|
- !ruby/object:Gem::Version
|
155
171
|
version: '0'
|
172
|
+
- !ruby/object:Gem::Dependency
|
173
|
+
name: rubocop
|
174
|
+
requirement: !ruby/object:Gem::Requirement
|
175
|
+
requirements:
|
176
|
+
- - ">="
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: '0'
|
179
|
+
type: :development
|
180
|
+
prerelease: false
|
181
|
+
version_requirements: !ruby/object:Gem::Requirement
|
182
|
+
requirements:
|
183
|
+
- - ">="
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: '0'
|
156
186
|
description:
|
157
187
|
email:
|
158
188
|
- webops@walkerandcobrands.com
|
@@ -184,7 +214,8 @@ files:
|
|
184
214
|
- lib/ingram_micro/elements/message_header_no_pw.rb
|
185
215
|
- lib/ingram_micro/elements/message_header_pw.rb
|
186
216
|
- lib/ingram_micro/elements/message_status.rb
|
187
|
-
- lib/ingram_micro/elements/
|
217
|
+
- lib/ingram_micro/elements/outbound_purchase_order_information.rb
|
218
|
+
- lib/ingram_micro/elements/outbound_shipment_information.rb
|
188
219
|
- lib/ingram_micro/elements/return_authorization_line_item.rb
|
189
220
|
- lib/ingram_micro/elements/return_authorization_order_header.rb
|
190
221
|
- lib/ingram_micro/elements/return_authorization_submission.rb
|
@@ -192,29 +223,42 @@ files:
|
|
192
223
|
- lib/ingram_micro/elements/sales_order_line_item.rb
|
193
224
|
- lib/ingram_micro/elements/sales_order_shipment_information.rb
|
194
225
|
- lib/ingram_micro/elements/sales_order_submission.rb
|
195
|
-
- lib/ingram_micro/elements/shipment_information.rb
|
196
226
|
- lib/ingram_micro/elements/shipment_status.rb
|
197
227
|
- lib/ingram_micro/elements/shipment_status_line_item.rb
|
198
228
|
- lib/ingram_micro/errors/invalid_type.rb
|
199
229
|
- lib/ingram_micro/errors/missing_field.rb
|
230
|
+
- lib/ingram_micro/inbound_base_element.rb
|
231
|
+
- lib/ingram_micro/inbound_elements/inbound_detail.rb
|
232
|
+
- lib/ingram_micro/inbound_elements/inbound_line_item.rb
|
233
|
+
- lib/ingram_micro/inbound_elements/inbound_order_header.rb
|
234
|
+
- lib/ingram_micro/inbound_elements/inbound_purchase_order_information.rb
|
235
|
+
- lib/ingram_micro/inbound_elements/inbound_shipment_information.rb
|
236
|
+
- lib/ingram_micro/inbound_elements/inventory_sync.rb
|
237
|
+
- lib/ingram_micro/inbound_elements/inventory_sync_detail.rb
|
238
|
+
- lib/ingram_micro/inbound_elements/inventory_sync_line_item.rb
|
239
|
+
- lib/ingram_micro/inbound_elements/sales_order_rejection.rb
|
240
|
+
- lib/ingram_micro/inbound_elements/sales_order_success.rb
|
241
|
+
- lib/ingram_micro/inbound_elements/serial_numbers.rb
|
242
|
+
- lib/ingram_micro/inbound_elements/ship_advice.rb
|
243
|
+
- lib/ingram_micro/inbound_transmission_factory.rb
|
200
244
|
- lib/ingram_micro/null_formatter.rb
|
201
|
-
- lib/ingram_micro/request_processor.rb
|
202
245
|
- lib/ingram_micro/transmission.rb
|
203
246
|
- lib/ingram_micro/transmissions/check_shipment_status.rb
|
247
|
+
- lib/ingram_micro/transmissions/failure_response.rb
|
204
248
|
- lib/ingram_micro/transmissions/return_authorization.rb
|
205
249
|
- lib/ingram_micro/transmissions/sales_order.rb
|
206
250
|
- lib/ingram_micro/transmissions/standard_response.rb
|
251
|
+
- lib/ingram_micro/transmissions/success_response.rb
|
207
252
|
- lib/ingram_micro/version.rb
|
208
|
-
- xsd/BPXML_InventoryStatus.xsd
|
209
253
|
- xsd/inbound/BPXML-LoadReject.xsd
|
210
254
|
- xsd/inbound/BPXML-LoadSuccess.xsd
|
211
255
|
- xsd/inbound/BPXML-ReturnReceipt.xsd
|
212
256
|
- xsd/inbound/BPXML-ShipAdvice.xsd
|
213
|
-
- xsd/inbound/
|
257
|
+
- xsd/inbound/BPXML_InventoryStatus.xsd
|
214
258
|
- xsd/outbound/BPXML-ReturnAuthorization.xsd
|
215
259
|
- xsd/outbound/BPXML-SalesOrder.xsd
|
216
260
|
- xsd/outbound/BPXML-ShipmentStatus.xsd
|
217
|
-
- xsd/
|
261
|
+
- xsd/outbound/BPXML-StandardResponse.xsd
|
218
262
|
homepage: https://github.com/WalkerAndCoBrandsInc/ingram_micro
|
219
263
|
licenses:
|
220
264
|
- MIT
|
@@ -236,7 +280,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
236
280
|
version: '0'
|
237
281
|
requirements: []
|
238
282
|
rubyforge_project:
|
239
|
-
rubygems_version: 2.
|
283
|
+
rubygems_version: 2.4.8
|
240
284
|
signing_key:
|
241
285
|
specification_version: 4
|
242
286
|
summary: Rubygem wrapper for Ingram Micro API
|
@@ -1,15 +0,0 @@
|
|
1
|
-
class IngramMicro::PurchaseOrderInformation < IngramMicro::BaseElement
|
2
|
-
|
3
|
-
DEFAULTS = {
|
4
|
-
purchase_order_number: nil,
|
5
|
-
account_description: nil,
|
6
|
-
purchase_order_amount: 0.0,
|
7
|
-
purchase_order_event: nil,
|
8
|
-
currency_code: nil,
|
9
|
-
comments: nil
|
10
|
-
}
|
11
|
-
|
12
|
-
def defaults
|
13
|
-
DEFAULTS
|
14
|
-
end
|
15
|
-
end
|
@@ -1,143 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<!DOCTYPE message SYSTEM "http://www.brightpoint.com:7800/best/dtd/SaleOrder.dtd">
|
3
|
-
<message>
|
4
|
-
<message-header>
|
5
|
-
<message-id>178329</message-id>
|
6
|
-
<transaction-name>sales-order-submission</transaction-name>
|
7
|
-
<partner-name>usfi</partner-name>
|
8
|
-
<partner-password/>
|
9
|
-
<source-url>http://www.customer.com</source-url>
|
10
|
-
<create-timestamp>20100415145015</create-timestamp>
|
11
|
-
<response-request>1</response-request>
|
12
|
-
</message-header>
|
13
|
-
<sales-order-submission>
|
14
|
-
<header>
|
15
|
-
<customer-id>286104</customer-id>
|
16
|
-
<business-name>customer</business-name>
|
17
|
-
<carrier-name>FEDEX</carrier-name>
|
18
|
-
<customer-information>
|
19
|
-
<customer-first-name/>
|
20
|
-
<customer-last-name/>
|
21
|
-
<customer-middle-initial/>
|
22
|
-
<customer-address1/>
|
23
|
-
<customer-address2/>
|
24
|
-
<customer-address3/>
|
25
|
-
<customer-city/>
|
26
|
-
<customer-state/>
|
27
|
-
<customer-post-code/>
|
28
|
-
<customer-country-code/>
|
29
|
-
<customer-phone1/>
|
30
|
-
<customer-phone2/>
|
31
|
-
<customer-fax/>
|
32
|
-
<customer-email/>
|
33
|
-
</customer-information>
|
34
|
-
<shipment-information>
|
35
|
-
<ship-first-name>Name 1</ship-first-name>
|
36
|
-
<ship-last-name>Name 2</ship-last-name>
|
37
|
-
<ship-middle-initial/>
|
38
|
-
<ship-address1>6229 WEST 16 AVE </ship-address1>
|
39
|
-
<ship-address2/>
|
40
|
-
<ship-address3/>
|
41
|
-
<ship-city>Somewhere</ship-city>
|
42
|
-
<ship-state>IN</ship-state>
|
43
|
-
<ship-post-code>12345</ship-post-code>
|
44
|
-
<ship-country-code>US</ship-country-code>
|
45
|
-
<ship-phone1>(317)555-8202</ship-phone1>
|
46
|
-
<ship-phone2/>
|
47
|
-
<ship-fax/>
|
48
|
-
<ship-email>customer@yahoo.com</ship-email>
|
49
|
-
<ship-via>SFXSVP</ship-via>
|
50
|
-
<ship-request-date>20100415</ship-request-date>
|
51
|
-
<ship-request-from>Indianapolis</ship-request-from>
|
52
|
-
<ship-request-warehouse>whse1</ship-request-warehouse>
|
53
|
-
</shipment-information>
|
54
|
-
<purchase-order-information>
|
55
|
-
<purchase-order-number>178329</purchase-order-number>
|
56
|
-
<account-description/>
|
57
|
-
<purchase-order-amount/>
|
58
|
-
<currency-code>USD</currency-code>
|
59
|
-
<comments/>
|
60
|
-
</purchase-order-information>
|
61
|
-
<credit-card-information>
|
62
|
-
<credit-card-number/>
|
63
|
-
<credit-card-expiration-date/>
|
64
|
-
<credit-card-identification/>
|
65
|
-
<global-card-classification-code/>
|
66
|
-
<card-holder-name/>
|
67
|
-
<card-holder-address1/>
|
68
|
-
<card-holder-address2/>
|
69
|
-
<card-holder-city/>
|
70
|
-
<card-holder-state/>
|
71
|
-
<card-holder-post-code/>
|
72
|
-
<card-holder-country-code/>
|
73
|
-
<authorized-amount/>
|
74
|
-
<billing-sequence-number/>
|
75
|
-
<billing-authorization-response/>
|
76
|
-
<billing-address-match/>
|
77
|
-
<billing-zip-match/>
|
78
|
-
<avs-hold/>
|
79
|
-
<merchant-name/>
|
80
|
-
</credit-card-information>
|
81
|
-
<order-header>
|
82
|
-
<customer-order-number>178329</customer-order-number>
|
83
|
-
<customer-order-date>20100415</customer-order-date>
|
84
|
-
<order-sub-total/>
|
85
|
-
<order-discount/>
|
86
|
-
<order-tax1/>
|
87
|
-
<order-tax2/>
|
88
|
-
<order-tax3/>
|
89
|
-
<order-shipment-charge/>
|
90
|
-
<order-total-net/>
|
91
|
-
<order-status>SUBMITTED</order-status>
|
92
|
-
<order-type>WEB SALES</order-type>
|
93
|
-
<gift-flag/>
|
94
|
-
</order-header>
|
95
|
-
</header>
|
96
|
-
<detail>
|
97
|
-
<line-item>
|
98
|
-
<line-no>1</line-no>
|
99
|
-
<item-code>HW-M750</item-code>
|
100
|
-
<universal-product-code/>
|
101
|
-
<product-name>Huawei M750</product-name>
|
102
|
-
<comments/>
|
103
|
-
<quantity>1</quantity>
|
104
|
-
<unit-of-measure>EA</unit-of-measure>
|
105
|
-
<sid/>
|
106
|
-
<esn/>
|
107
|
-
<min/>
|
108
|
-
<mdn/>
|
109
|
-
<irdb/>
|
110
|
-
<imei/>
|
111
|
-
<market-id/>
|
112
|
-
<line-status>IN STOCK</line-status>
|
113
|
-
<base-price/>
|
114
|
-
<line-discount/>
|
115
|
-
<line-tax1/>
|
116
|
-
<line-tax2/>
|
117
|
-
<line-tax3/>
|
118
|
-
</line-item>
|
119
|
-
<line-item>
|
120
|
-
<line-no>2</line-no>
|
121
|
-
<item-code>HW-M750</item-code>
|
122
|
-
<universal-product-code/>
|
123
|
-
<product-name>Huawei M750</product-name>
|
124
|
-
<comments/>
|
125
|
-
<quantity>1</quantity>
|
126
|
-
<unit-of-measure>EA</unit-of-measure>
|
127
|
-
<sid/>
|
128
|
-
<esn/>
|
129
|
-
<min/>
|
130
|
-
<mdn/>
|
131
|
-
<irdb/>
|
132
|
-
<imei/>
|
133
|
-
<market-id/>
|
134
|
-
<line-status>IN STOCK</line-status>
|
135
|
-
<base-price/>
|
136
|
-
<line-discount/>
|
137
|
-
<line-tax1/>
|
138
|
-
<line-tax2/>
|
139
|
-
<line-tax3/>
|
140
|
-
</line-item>
|
141
|
-
</detail>
|
142
|
-
</sales-order-submission>
|
143
|
-
</message>
|