dhl-get_quote 0.5.0 → 0.5.1
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.
- data/README.md +35 -22
- data/lib/dhl/get_quote/request.rb +4 -2
- data/lib/dhl/get_quote/version.rb +1 -1
- data/spec/lib/dhl/get_quote/request_spec.rb +10 -0
- data/tpl/request.xml.erb +2 -0
- metadata +1 -1
data/README.md
CHANGED
@@ -6,6 +6,8 @@ Get shipping quotes from DHL's XML-PI Service.
|
|
6
6
|
|
7
7
|
Use of the XML-PI Service requires you to have Site ID and Password from DHL. You can sign up here: https://myaccount.dhl.com/MyAccount/jsp/TermsAndConditionsIndex.htm
|
8
8
|
|
9
|
+
Many thanks to John Riff of DHL for his help during the development of this gem.
|
10
|
+
|
9
11
|
## Installation
|
10
12
|
|
11
13
|
Add this line to your application's Gemfile:
|
@@ -31,8 +33,7 @@ Or install it yourself as:
|
|
31
33
|
:test_mode => true # changes the url being hit
|
32
34
|
)
|
33
35
|
|
34
|
-
r.
|
35
|
-
r.centimeters!
|
36
|
+
r.metric_measurements!
|
36
37
|
|
37
38
|
r.add_special_service("DD")
|
38
39
|
|
@@ -72,19 +73,40 @@ request = Dhl::GetQuote::Request.new(
|
|
72
73
|
|
73
74
|
*NOTE*: You can also set default beforehand in, for example, an initializer. For more information on this, please see the section "Initializers with Dhl::GetQuote"
|
74
75
|
|
76
|
+
#### Setting Payment Account Number
|
77
|
+
|
78
|
+
If you are using a special account for shipping payments, you can specify it as
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
request.payment_account_number('12345678')
|
82
|
+
```
|
83
|
+
|
84
|
+
To read the current payment account number (if set), use:
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
request.payment_accout_number
|
88
|
+
```
|
89
|
+
|
90
|
+
It will return the current number or nil if none has been set.
|
91
|
+
|
75
92
|
#### Package Source and Destination
|
76
93
|
|
77
94
|
To set the source and destination, use the #to() and #from() methods:
|
78
95
|
|
79
|
-
#to(_country_code_, _postal_code_), #from(_country_code_, _postal_code_)
|
96
|
+
#to(_country_code_, _postal_code_, city_name), #from(_country_code_, _postal_code_, city_name)
|
80
97
|
|
81
|
-
The country code must be the two-letter capitalized ISO country code. The postal code will be cast in to a string.
|
98
|
+
The country code must be the two-letter capitalized ISO country code. The postal code will be cast in to a string. City name is optional.
|
82
99
|
|
83
100
|
Example:
|
84
101
|
|
85
102
|
```ruby
|
103
|
+
# without city
|
86
104
|
request.from('US', 84111)
|
87
105
|
request.to('CA', 'T1H 0A1')
|
106
|
+
|
107
|
+
# with city
|
108
|
+
request.from('US', 84111, "Bountiful")
|
109
|
+
request.to('MX', "53950", 'Naucalpan de Juárez')
|
88
110
|
```
|
89
111
|
|
90
112
|
#### Measurement Units
|
@@ -94,28 +116,21 @@ DHL can accept weights and measures in both Metric and US Customary units. Weig
|
|
94
116
|
To set to US Customary, use:
|
95
117
|
|
96
118
|
```ruby
|
97
|
-
request.
|
98
|
-
request.pounds! # set weight to pounds
|
119
|
+
request.us_measurements! # set dimensions to inches and weight to pounds
|
99
120
|
```
|
100
121
|
|
101
122
|
To set back to Metric, use
|
102
123
|
|
103
124
|
```ruby
|
104
|
-
request.
|
105
|
-
request.centimetres! # alternate spelling
|
106
|
-
|
107
|
-
request.kilograms! # set weight to kilograms
|
108
|
-
request.kilogrammes! # alternate spelling
|
125
|
+
request.metric_measurements! # set dimensions to centimeters and weight to kilograms
|
109
126
|
```
|
110
127
|
|
111
128
|
To query what measurement system the object is currently using, use the following boolean calls:
|
112
129
|
|
113
130
|
```ruby
|
114
|
-
request.
|
115
|
-
request.centimeters? # or request.centimetres?
|
131
|
+
request.us_measurements?
|
116
132
|
|
117
|
-
request.
|
118
|
-
request.kilograms? # or request.kilogrammes?
|
133
|
+
request.metric_measurements?
|
119
134
|
```
|
120
135
|
|
121
136
|
You can also get the value directly:
|
@@ -129,11 +144,11 @@ You can also get the value directly:
|
|
129
144
|
|
130
145
|
! Note, this a breaking change from 0.4.x
|
131
146
|
|
132
|
-
To set the duty on a shipment, use the dutiable
|
147
|
+
To set the duty on a shipment, use the dutiable() method. It accepts the numeric value and an optional currency code. If not specified, the currency code default to US Dollars (USD).
|
133
148
|
|
134
149
|
```ruby
|
135
150
|
# set the dutiable value at $100 in US Dollars
|
136
|
-
request.dutiable
|
151
|
+
request.dutiable(100.00, 'USD')
|
137
152
|
```
|
138
153
|
|
139
154
|
To remove a previously set duty, use the not_dutiable!() method.
|
@@ -326,12 +341,10 @@ To do this, call Dhl::GetQuote::configure and pass a block:
|
|
326
341
|
|
327
342
|
c.production_mode! # or test_mode!
|
328
343
|
|
329
|
-
c.
|
330
|
-
c.
|
331
|
-
c.inches!
|
332
|
-
c.pounds!
|
344
|
+
c.metric_measurements!
|
345
|
+
c.us_measurements!
|
333
346
|
|
334
|
-
c.dutiable
|
347
|
+
c.dutiable(1.00, 'USD')
|
335
348
|
|
336
349
|
end
|
337
350
|
```
|
@@ -43,16 +43,18 @@ class Dhl::GetQuote::Request
|
|
43
43
|
@test_mode = false
|
44
44
|
end
|
45
45
|
|
46
|
-
def from(country_code, postal_code)
|
46
|
+
def from(country_code, postal_code, city=nil)
|
47
47
|
@from_postal_code = postal_code.to_s
|
48
48
|
validate_country_code!(country_code)
|
49
49
|
@from_country_code = country_code
|
50
|
+
@from_city_name = city
|
50
51
|
end
|
51
52
|
|
52
|
-
def to(country_code, postal_code)
|
53
|
+
def to(country_code, postal_code, city=nil)
|
53
54
|
@to_postal_code = postal_code.to_s
|
54
55
|
validate_country_code!(country_code)
|
55
56
|
@to_country_code = country_code
|
57
|
+
@to_city_name = city
|
56
58
|
end
|
57
59
|
|
58
60
|
def dutiable?
|
@@ -63,6 +63,11 @@ describe Dhl::GetQuote::Request do
|
|
63
63
|
subject.from('us', '84111')
|
64
64
|
end.must raise_exception(Dhl::GetQuote::CountryCodeError)
|
65
65
|
end
|
66
|
+
|
67
|
+
it 'must accept an optional city name' do
|
68
|
+
subject.from('US', '84111', "Bountiful")
|
69
|
+
subject.instance_variable_get(:@from_city_name).must == 'Bountiful'
|
70
|
+
end
|
66
71
|
end
|
67
72
|
|
68
73
|
describe '#to' do
|
@@ -94,6 +99,11 @@ describe Dhl::GetQuote::Request do
|
|
94
99
|
subject.from('ca', 'T1H 0A1')
|
95
100
|
end.must raise_exception(Dhl::GetQuote::CountryCodeError)
|
96
101
|
end
|
102
|
+
|
103
|
+
it 'must accept an optional city name' do
|
104
|
+
subject.to('US', '84111', "Bountiful")
|
105
|
+
subject.instance_variable_get(:@to_city_name).must == 'Bountiful'
|
106
|
+
end
|
97
107
|
end
|
98
108
|
|
99
109
|
describe "#dutiable?" do
|
data/tpl/request.xml.erb
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
<From>
|
11
11
|
<CountryCode><%= @from_country_code %></CountryCode>
|
12
12
|
<Postalcode><%= @from_postal_code %></Postalcode>
|
13
|
+
<% if @from_city_name -%><City><%= @from_city_name %></City><% end -%>
|
13
14
|
</From>
|
14
15
|
<BkgDetails>
|
15
16
|
<PaymentCountryCode><%= @from_country_code %></PaymentCountryCode>
|
@@ -38,6 +39,7 @@
|
|
38
39
|
<To>
|
39
40
|
<CountryCode><%= @to_country_code %></CountryCode>
|
40
41
|
<Postalcode><%= @to_postal_code %></Postalcode>
|
42
|
+
<% if @to_city_name -%><City><%= @to_city_name %></City><% end -%>
|
41
43
|
</To>
|
42
44
|
<%- if dutiable? %>
|
43
45
|
<Dutiable>
|