Avatax_AddressService 1.0.6 → 1.0.7
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.
- checksums.yaml +8 -8
- data/Avatax Ruby SDK Guide.docx +0 -0
- data/Avatax_AddressService.gemspec +3 -5
- data/lib/avatax_addressservice.rb +68 -63
- data/test/test_address.rb +51 -30
- metadata +1 -18
- data/lib/xpath_isauthorized.txt +0 -4
- data/lib/xpath_ping.txt +0 -9
- data/lib/xpath_validate.txt +0 -29
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MmFjMjMyYzQxYmNkMGNhNDZjYTU0NjM2MDk3NTA0ZDA1NDAyZjFjMQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MmQwMjA5ZjQwMGViNzJmOWE2NzhjYTkxNzU5NWUwYzExZGQ3Njk5Mg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZDU3ZDQ1OWNiMWQzMDMyMmIyMWNjMTZmYmI1NTFiYjVhOWRmYWU3OTA1Njlm
|
10
|
+
NjY1Mjk3NGQ3ZjEwZWE1ZDJhYTI1NGY4YTVlNTM1YjkzYjI4N2U0ZjZmZWE1
|
11
|
+
MzQxMWUzMTg5ZDI3NTI3MDM2YTY1NzdlYzgyNGEzN2VlNjVmYzM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzBiZTY2ZTIzMzJjMWIzNjgzYzcxYzY1MWVkYWFhNDFhNDBmNmQ2NjQxMjY2
|
14
|
+
NjE1NDFhOGEwNTYxMDkyOWU5YzA1MmY5MDIwYzlkMjUzNDgyNmQwMDI0ZWI4
|
15
|
+
MGVlYmQ0ZDY4NzZkOTdiN2YxYzlhOGVlOGU2NWU2MGVjYWZiNWI=
|
data/Avatax Ruby SDK Guide.docx
CHANGED
Binary file
|
@@ -1,19 +1,17 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "Avatax_AddressService"
|
3
|
-
s.version = "1.0.
|
3
|
+
s.version = "1.0.7"
|
4
4
|
s.date = "2012-12-16"
|
5
5
|
s.author = "Graham S Wilson"
|
6
6
|
s.email = "support@Avalara.com"
|
7
|
-
s.summary = "Ruby SDK for Avatax Address Web Services"
|
7
|
+
s.summary = "Ruby SDK for Avatax Address Web Services "
|
8
8
|
s.homepage = "http://www.avalara.com/"
|
9
9
|
s.license = 'MIT'
|
10
10
|
s.description = "Ruby SDK provides means of communication with Avatax Web Services."
|
11
11
|
s.files = ["lib/address_log.txt", "lib/addressservice_dev.wsdl", "lib/addressservice_prd.wsdl", "lib/avatax_addressservice.rb",
|
12
|
-
"lib/template_validate.erb","lib/template_ping.erb","lib/template_isauthorized.erb",
|
13
|
-
"lib/xpath_validate.txt", "lib/xpath_ping.txt","lib/xpath_isauthorized.txt","test/test_address.rb",
|
12
|
+
"lib/template_validate.erb","lib/template_ping.erb","lib/template_isauthorized.erb","test/test_address.rb",
|
14
13
|
"Avatax_AddressService.gemspec", "Avatax Ruby SDK Guide.docx", "LICENSE.txt"]
|
15
14
|
# s.add_dependency "nokogiri", ">= 1.4.0", "< 1.6"
|
16
|
-
s.add_dependency "nokogiri", ">= 1.4.0"
|
17
15
|
s.add_dependency "savon", ">= 2.3.0"
|
18
16
|
s.required_ruby_version = '>=1.9.1'
|
19
17
|
s.post_install_message = 'Thanks for installing the Avalara AddressService Ruby SDK. Refer to "Avatax Ruby SDK User Guide.docx" to get started.'
|
@@ -1,40 +1,49 @@
|
|
1
1
|
require 'savon'
|
2
2
|
require 'erb'
|
3
|
-
require 'nokogiri'
|
4
3
|
|
5
4
|
module AvaTax
|
6
5
|
#Avalara address class
|
7
6
|
class AddressService
|
8
7
|
def initialize(credentials)
|
9
8
|
|
9
|
+
#Set @def_locn to the Avatax-x.x.x gem install library. This enables the ruby programs to
|
10
|
+
#find other objects that it needs.
|
11
|
+
spec = Gem::Specification.find_by_name("Avatax_AddressService")
|
12
|
+
gem_root = spec.gem_dir
|
13
|
+
@def_locn = gem_root + "/lib"
|
14
|
+
|
10
15
|
#Extract data from hash
|
11
16
|
username = credentials[:username]
|
12
17
|
password = credentials[:password]
|
13
18
|
name = credentials[:name]
|
14
19
|
clientname = credentials[:clientname]
|
15
20
|
adapter = credentials[:adapter]
|
16
|
-
machine = credentials[:machine]
|
21
|
+
machine = credentials[:machine]
|
22
|
+
use_production_account = credentials[:use_production_account]
|
17
23
|
|
18
24
|
#Set credentials and Profile information
|
19
25
|
@username = username == nil ? "" : username
|
20
26
|
@password = password == nil ? "" : password
|
21
27
|
@name = name == nil ? "" : name
|
22
|
-
@clientname = clientname == nil ? "" : clientname
|
23
|
-
@adapter = adapter == nil
|
28
|
+
@clientname = (clientname == nil or clientname == "") ? "Avatax Address Service SDK for Ruby Default Client Name" : clientname
|
29
|
+
@adapter = (adapter == nil or adapter == "") ? spec.summary + spec.version.to_s : adapter
|
24
30
|
@machine = machine == nil ? "" : machine
|
25
|
-
|
26
|
-
#Set @def_locn to the Avatax-x.x.x gem install library. This enables the ruby programs to
|
27
|
-
#find other objects that it needs.
|
28
|
-
spec = Gem::Specification.find_by_name("Avatax_AddressService")
|
29
|
-
gem_root = spec.gem_dir
|
30
|
-
@def_locn = gem_root + "/lib"
|
31
|
+
@use_production_account = (use_production_account != true) ? false : use_production_account
|
31
32
|
|
32
33
|
#Open Avatax Error Log
|
33
34
|
@log = File.new(@def_locn + '/address_log.txt', "w")
|
34
|
-
|
35
|
-
|
36
|
-
#log :false turns off HTTP logging
|
37
|
-
|
35
|
+
|
36
|
+
#Get service details from WSDL - control_array[2] contains the WSDL read from the address_control file
|
37
|
+
#log :false turns off HTTP logging. Select either Dev or Prod depending on the value of the boolean value 'use_production_account'
|
38
|
+
if @use_production_account
|
39
|
+
@log.puts "#{Time.now}: Avalara Production Address service started"
|
40
|
+
#log :false turns off HTTP logging
|
41
|
+
@client = Savon.client(wsdl: @def_locn + '/addressservice_prd.wsdl', log: false)
|
42
|
+
else
|
43
|
+
@log.puts "#{Time.now}: Avalara Development Address service started"
|
44
|
+
#log :false turns off HTTP logging
|
45
|
+
@client = Savon.client(wsdl: @def_locn + '/addressservice_dev.wsdl', log: false)
|
46
|
+
end
|
38
47
|
|
39
48
|
begin
|
40
49
|
#Read in the SOAP template for Ping
|
@@ -56,14 +65,18 @@ module AvaTax
|
|
56
65
|
rescue
|
57
66
|
@log.puts "#{Time.now}: Error loading the IsAuthorized template"
|
58
67
|
end
|
59
|
-
|
60
|
-
|
68
|
+
|
69
|
+
# Create hash for result
|
70
|
+
@response = Hash.new
|
61
71
|
end
|
62
72
|
|
63
73
|
############################################################################################################
|
64
74
|
# ping - Verifies connectivity to the web service and returns version information
|
65
75
|
############################################################################################################
|
66
76
|
def ping(message = nil)
|
77
|
+
|
78
|
+
@service = 'Ping'
|
79
|
+
|
67
80
|
#Read in the SOAP template
|
68
81
|
@message = message == nil ? "?" : message
|
69
82
|
|
@@ -75,20 +88,14 @@ module AvaTax
|
|
75
88
|
|
76
89
|
# Make the call to the Avalara Ping service
|
77
90
|
begin
|
78
|
-
@response = @client.call(:ping, xml: @soap).
|
79
|
-
rescue
|
80
|
-
@log.puts "#{Time.now}: Error calling Ping service ... check username and password"
|
81
|
-
end
|
82
|
-
# Load the response into a Nokogiri object and remove namespaces
|
83
|
-
@doc = Nokogiri::XML(@response).remove_namespaces!
|
84
|
-
|
85
|
-
#Read in an array of XPATH pointers
|
86
|
-
@ping_xpath = File.readlines(@def_locn + '/xpath_ping.txt')
|
87
|
-
|
88
|
-
#Read each array element, extract the result returned by the service and place in a the @return_data hash
|
89
|
-
@ping_xpath.each{|xpath| @return_data[xpath[2...xpath.length].chomp.to_sym] = @doc.xpath(xpath).text}
|
91
|
+
@response = @client.call(:ping, xml: @soap).to_hash
|
90
92
|
|
91
|
-
return @
|
93
|
+
return @response
|
94
|
+
|
95
|
+
#Capture unexpected errors
|
96
|
+
rescue Savon::Error => error
|
97
|
+
abend(error)
|
98
|
+
end
|
92
99
|
end
|
93
100
|
|
94
101
|
############################################################################################################
|
@@ -96,6 +103,8 @@ module AvaTax
|
|
96
103
|
############################################################################################################
|
97
104
|
def validate(address)
|
98
105
|
|
106
|
+
@service = 'Validate'
|
107
|
+
|
99
108
|
#Extract data from hash
|
100
109
|
addresscode = address[:addresscode]
|
101
110
|
line1 = address[:line1]
|
@@ -131,59 +140,55 @@ module AvaTax
|
|
131
140
|
# Subsitute real vales for template place holders
|
132
141
|
@soap = @template_validate.result(binding)
|
133
142
|
|
134
|
-
#Clear return hash
|
135
|
-
@return_data.clear
|
136
|
-
|
137
143
|
# Make the call to the Avalara Validate service
|
138
144
|
begin
|
139
|
-
@response = @client.call(:validate, xml: @soap).
|
145
|
+
@response = @client.call(:validate, xml: @soap).to_hash
|
140
146
|
|
141
|
-
|
142
|
-
|
147
|
+
return @response
|
148
|
+
|
149
|
+
#Capture unexpected errors
|
150
|
+
rescue Savon::Error => error
|
151
|
+
abend(error)
|
143
152
|
end
|
144
|
-
|
145
|
-
# Load the response into a Nokogiri object and remove namespaces
|
146
|
-
@doc = Nokogiri::XML(@response).remove_namespaces!
|
147
|
-
|
148
|
-
#Read in an array of XPATH pointers
|
149
|
-
@validate_xpath = File.readlines(@def_locn + '/xpath_validate.txt')
|
150
|
-
|
151
|
-
#Read each array element, extract the result returned by the service and place in a the @return_data hash
|
152
|
-
@validate_xpath.each{|xpath| @return_data[xpath[2...xpath.length].chomp.to_sym] = @doc.xpath(xpath).text}
|
153
|
-
|
154
|
-
return @return_data
|
155
153
|
end
|
156
154
|
|
157
155
|
############################################################################################################
|
158
156
|
#Verifies connectivity to the web service and returns version information about the service.
|
159
157
|
############################################################################################################
|
160
158
|
def isauthorized(operation = nil)
|
159
|
+
|
160
|
+
@service = 'IsAuthorized'
|
161
|
+
|
161
162
|
#Read in the SOAP template
|
162
163
|
@operation = operation == nil ? "?" : operation
|
163
164
|
|
164
165
|
# Subsitute real vales for template place holders
|
165
166
|
@soap = @template_isauthorized.result(binding)
|
166
167
|
|
167
|
-
#Clear return hash
|
168
|
-
@return_data.clear
|
169
|
-
|
170
168
|
# Make the call to the Avalara Ping service
|
171
169
|
begin
|
172
|
-
@response = @client.call(:is_authorized, xml: @soap).
|
173
|
-
rescue
|
174
|
-
@log.puts "#{Time.now}: Error calling IsAuthorized service ... check username and password"
|
175
|
-
end
|
176
|
-
|
177
|
-
# Load the response into a Nokogiri object and remove namespaces
|
178
|
-
@doc = Nokogiri::XML(@response).remove_namespaces!
|
179
|
-
|
180
|
-
#Read in an array of XPATH pointers
|
181
|
-
@isauthorized_xpath = File.readlines(@def_locn + '/xpath_isauthorized.txt')
|
170
|
+
@response = @client.call(:is_authorized, xml: @soap).to_hash
|
182
171
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
172
|
+
return @response
|
173
|
+
|
174
|
+
#Capture unexpected errors
|
175
|
+
rescue Savon::Error => error
|
176
|
+
abend(error)
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
private
|
181
|
+
############################################################################################################
|
182
|
+
# abend - Unexpected error handling
|
183
|
+
############################################################################################################
|
184
|
+
def abend(error)
|
185
|
+
@log.puts "An unexpected error occurred: Response from server = #{error}"
|
186
|
+
@log.puts "#{Time.now}: Error calling #{@service} service ... check that your account name and password are correct."
|
187
|
+
@response = error.to_hash
|
188
|
+
@response[:result_code] = 'Error'
|
189
|
+
@response[:summary] = @response[:fault][:faultcode]
|
190
|
+
@response[:details] = @response[:fault][:faultstring]
|
191
|
+
return @response
|
187
192
|
end
|
188
193
|
end
|
189
194
|
end
|
data/test/test_address.rb
CHANGED
@@ -8,8 +8,9 @@ credentials = Hash.new
|
|
8
8
|
|
9
9
|
#Create new Address hash object
|
10
10
|
address = Hash.new
|
11
|
+
val_addr = Hash.new
|
11
12
|
|
12
|
-
Shoes.app :width => 400, :height =>
|
13
|
+
Shoes.app :width => 400, :height => 460 do
|
13
14
|
background orange
|
14
15
|
border("#BE8",
|
15
16
|
strokewidth: 6)
|
@@ -19,7 +20,9 @@ Shoes.app :width => 400, :height => 400 do
|
|
19
20
|
para "Username:"
|
20
21
|
@username = edit_line text: "USERNAME"
|
21
22
|
para "Password:"
|
22
|
-
@password = edit_line text: "PASSWORD", :secret => true
|
23
|
+
@password = edit_line text: "PASSWORD", :secret => true
|
24
|
+
para "Test Production:"
|
25
|
+
@use_production_account = edit_line text: "false"
|
23
26
|
para
|
24
27
|
@confirm = button "Confirm"
|
25
28
|
para
|
@@ -27,12 +30,18 @@ Shoes.app :width => 400, :height => 400 do
|
|
27
30
|
credentials[:username] = @username.text
|
28
31
|
credentials[:password] = @password.text
|
29
32
|
credentials[:name] = 'Avalara Inc.'
|
30
|
-
credentials[:clientname] = '
|
31
|
-
credentials[:adapter] = '
|
33
|
+
credentials[:clientname] = ''
|
34
|
+
credentials[:adapter] = ''
|
32
35
|
credentials[:machine] = 'Lenovo W520 Windows 7'
|
36
|
+
if @use_production_account.text == 'true' then
|
37
|
+
credentials[:use_production_account] = !!@use_production_account
|
38
|
+
else
|
39
|
+
credentials[:use_production_account] = nil
|
40
|
+
end
|
41
|
+
|
33
42
|
#Create an address service instance
|
34
43
|
AddrService = AvaTax::AddressService.new(credentials)
|
35
|
-
|
44
|
+
|
36
45
|
#Open a window to get the address to validate
|
37
46
|
Shoes.app :width => 400, :height => 700, :title => "Avalara - Address Validation Tester" do
|
38
47
|
|
@@ -78,50 +87,62 @@ Shoes.app :width => 400, :height => 400 do
|
|
78
87
|
address[:addresscode] = "123"
|
79
88
|
|
80
89
|
#Call the validate service - passing the address as a Hash
|
81
|
-
|
82
90
|
val_addr = AddrService.validate(address)
|
83
|
-
|
84
|
-
|
85
|
-
if val_addr[:ResultCode] == "Success"
|
91
|
+
|
92
|
+
if val_addr[:validate_response][:validate_result][:result_code] == "Success"
|
86
93
|
#Display validated result in a new window
|
87
|
-
Shoes.app :width => 400, :height =>
|
94
|
+
Shoes.app :width => 400, :height => 1000, :left => 1000, :title => "Avalara - Address Validation Result" do
|
88
95
|
|
89
96
|
background orange..blue
|
90
|
-
|
97
|
+
|
91
98
|
stack :margin => 10 do
|
92
99
|
#Display result
|
93
|
-
para "Line 1:"
|
94
|
-
edit_line :text => val_addr[:
|
100
|
+
para "Line 1:"
|
101
|
+
edit_line :text => val_addr[:validate_response][:validate_result][:valid_addresses][:valid_address][:line1]
|
95
102
|
para "Line 2:"
|
96
|
-
edit_line :text => val_addr[:
|
103
|
+
edit_line :text => val_addr[:validate_response][:validate_result][:valid_addresses][:valid_address][:line2]
|
97
104
|
para "Line 3:"
|
98
|
-
edit_line :text => val_addr[:
|
105
|
+
edit_line :text => val_addr[:validate_response][:validate_result][:valid_addresses][:valid_address][:line3]
|
99
106
|
para "City"
|
100
|
-
edit_line :text => val_addr[:
|
107
|
+
edit_line :text => val_addr[:validate_response][:validate_result][:valid_addresses][:valid_address][:city]
|
101
108
|
para "State"
|
102
|
-
edit_line :text => val_addr[:
|
109
|
+
edit_line :text => val_addr[:validate_response][:validate_result][:valid_addresses][:valid_address][:region]
|
103
110
|
para "Zip"
|
104
|
-
edit_line :text => val_addr[:
|
111
|
+
edit_line :text => val_addr[:validate_response][:validate_result][:valid_addresses][:valid_address][:postal_code]
|
105
112
|
para "Country"
|
106
|
-
edit_line :text => val_addr[:
|
113
|
+
edit_line :text => val_addr[:validate_response][:validate_result][:valid_addresses][:valid_address][:country]
|
114
|
+
para
|
115
|
+
para "Latitude"
|
116
|
+
edit_line :text => val_addr[:validate_response][:validate_result][:valid_addresses][:valid_address][:latitude]
|
117
|
+
para "Longitude"
|
118
|
+
edit_line :text => val_addr[:validate_response][:validate_result][:valid_addresses][:valid_address][:longitude]
|
119
|
+
para "County"
|
120
|
+
edit_line :text => val_addr[:validate_response][:validate_result][:valid_addresses][:valid_address][:county]
|
121
|
+
para "FIPS Code"
|
122
|
+
edit_line :text => val_addr[:validate_response][:validate_result][:valid_addresses][:valid_address][:fips_code]
|
123
|
+
para "Carrier Route"
|
124
|
+
edit_line :text => val_addr[:validate_response][:validate_result][:valid_addresses][:valid_address][:carrier_route]
|
125
|
+
para "Post Net"
|
126
|
+
edit_line :text => val_addr[:validate_response][:validate_result][:valid_addresses][:valid_address][:post_net]
|
107
127
|
end
|
108
128
|
end
|
109
|
-
else
|
129
|
+
else
|
110
130
|
#Display error message in a new window
|
111
131
|
Shoes.app :width => 400, :height => 500, :title => "Address Validation Error" do
|
112
132
|
|
113
133
|
background orange..red
|
114
134
|
|
115
|
-
if val_addr[:
|
135
|
+
if val_addr[:validate_response][:validate_result][:result_code] == "Error"
|
136
|
+
|
116
137
|
stack :margin => 10 do
|
117
138
|
#Dispay error details
|
118
|
-
para "RESULT: #{val_addr[:
|
119
|
-
para "SUMMARY: #{val_addr[:
|
120
|
-
para "DETAILS: #{val_addr[:
|
121
|
-
para "HELP LINK: #{val_addr[:
|
122
|
-
para "REFERS TO: #{val_addr[:
|
123
|
-
para "SEVERITY: #{val_addr[:
|
124
|
-
para "SOURCE #{val_addr[:
|
139
|
+
para "RESULT: #{val_addr[:validate_response][:validate_result][:result_code]}"
|
140
|
+
para "SUMMARY: #{val_addr[:validate_response][:validate_result][:messages][:message][:summary]}"
|
141
|
+
para "DETAILS: #{val_addr[:validate_response][:validate_result][:messages][:message][:details]}"
|
142
|
+
para "HELP LINK: #{val_addr[:validate_response][:validate_result][:messages][:message][:help_link]}"
|
143
|
+
para "REFERS TO: #{val_addr[:validate_response][:validate_result][:messages][:message][:refers_to]}"
|
144
|
+
para "SEVERITY: #{val_addr[:validate_response][:validate_result][:messages][:message][:severity]}"
|
145
|
+
para "SOURCE #{val_addr[:validate_response][:validate_result][:messages][:message][:source]}"
|
125
146
|
end
|
126
147
|
else
|
127
148
|
#Dispay error details
|
@@ -129,8 +150,8 @@ Shoes.app :width => 400, :height => 400 do
|
|
129
150
|
para "SUMMARY: Unexpected error"
|
130
151
|
para "DETAILS: An unexpected error has occurred ... please check address_log.txt for details"
|
131
152
|
end
|
132
|
-
end
|
153
|
+
end
|
133
154
|
end}
|
134
155
|
end}
|
135
156
|
end
|
136
|
-
end
|
157
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Avatax_AddressService
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Graham S Wilson
|
@@ -10,20 +10,6 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2012-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: nokogiri
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ! '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 1.4.0
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ! '>='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 1.4.0
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: savon
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -51,9 +37,6 @@ files:
|
|
51
37
|
- lib/template_validate.erb
|
52
38
|
- lib/template_ping.erb
|
53
39
|
- lib/template_isauthorized.erb
|
54
|
-
- lib/xpath_validate.txt
|
55
|
-
- lib/xpath_ping.txt
|
56
|
-
- lib/xpath_isauthorized.txt
|
57
40
|
- test/test_address.rb
|
58
41
|
- Avatax_AddressService.gemspec
|
59
42
|
- Avatax Ruby SDK Guide.docx
|
data/lib/xpath_isauthorized.txt
DELETED
data/lib/xpath_ping.txt
DELETED
data/lib/xpath_validate.txt
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
//TransactionId
|
2
|
-
//ResultCode
|
3
|
-
//Summary
|
4
|
-
//Details
|
5
|
-
//Helplink
|
6
|
-
//RefersTo
|
7
|
-
//Severity
|
8
|
-
//Source
|
9
|
-
//AddressCode
|
10
|
-
//Line1
|
11
|
-
//Line2
|
12
|
-
//Line3
|
13
|
-
//Line4
|
14
|
-
//City
|
15
|
-
//Region
|
16
|
-
//PostalCode
|
17
|
-
//Country
|
18
|
-
//TaxRegionId
|
19
|
-
//Latitude
|
20
|
-
//Longitude
|
21
|
-
//County
|
22
|
-
//FipsCode
|
23
|
-
//CarrierRoute
|
24
|
-
//PostNet
|
25
|
-
//AddressType
|
26
|
-
//Longitude
|
27
|
-
//ValidateStatus
|
28
|
-
//Geocode
|
29
|
-
//Taxable
|