Avatax_TaxService 1.0.4 → 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 +15 -0
- data/Avatax_TaxService.gemspec +2 -1
- data/lib/avatax_taxservice.rb +714 -807
- data/test/test_adjtax.rb +95 -87
- data/test/test_gettax.rb +63 -80
- data/test/test_gettaxhistory.rb +27 -25
- data/test/test_reconciletaxhistory.rb +31 -32
- metadata +6 -11
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
N2JjYzEyNGJlMDA3ZGM5ZmNmZGU4MWM1OGRmYzhjMGIyNDIyNzMxYw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MzgzY2MzMDc5MWVjMDFjM2Y0YWZlNDczMzUxNGUyM2RjNGIwOWI1MA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZTcyZjA0OTgxYTEyZmIyMGFhODYxZjhiYTAyNmRkNzY3MzQ4NzY4M2I1Zjc0
|
10
|
+
MTIwZTU0OTdkMzhlZDcxMzVjZTgzMGJhNzVhYTExOWZjZjNmODQwNzVhYjg1
|
11
|
+
YWZjZTlhMWUzZThiYjk2ODJjZTcxNzA1MjkxNWY2MDYxMGVhNjk=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MWQ5NjBiZjdlODlhZmZmZjRlMmU1OGM5NjRlZmQzYzU2OGU3NmFmOGQxNDNh
|
14
|
+
MDhjNDljNjJjNThlM2FjZDU5M2EyOTE1MTBjMTE4MDk1Nzg5ZmQ2NWQzNGJj
|
15
|
+
MTUyZDEzNDYzODNiZmRkZjhlYjA5MDkxM2UyMWIwZTc3MzVjNGM=
|
data/Avatax_TaxService.gemspec
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "Avatax_TaxService"
|
3
|
-
s.version = "1.0.
|
3
|
+
s.version = "1.0.7"
|
4
4
|
s.date = "2012-10-28"
|
5
5
|
s.author = "Graham S Wilson"
|
6
6
|
s.email = "support@Avalara.com"
|
7
7
|
s.summary = "Ruby SDK for Avatax Web Services"
|
8
8
|
s.homepage = "http://www.avalara.com/"
|
9
9
|
s.description = "Ruby SDK provides means of communication with Avatax Web Services."
|
10
|
+
s.license = 'MIT'
|
10
11
|
s.files = ["lib/tax_log.txt", "lib/taxservice_dev.wsdl", "lib/taxservice_prd.wsdl", "lib/avatax_taxservice.rb",
|
11
12
|
"lib/template_adjusttax.erb", "lib/template_canceltax.erb", "lib/template_committax.erb","lib/template_gettax.erb",
|
12
13
|
"lib/template_gettaxhistory.erb","lib/template_isauthorized.erb","lib/template_ping.erb","lib/template_posttax.erb",
|
data/lib/avatax_taxservice.rb
CHANGED
@@ -4,938 +4,739 @@ require 'nokogiri'
|
|
4
4
|
require 'benchmark'
|
5
5
|
|
6
6
|
module AvaTax
|
7
|
-
|
8
7
|
#Avalara tax class
|
9
|
-
class TaxService
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
8
|
+
class TaxService
|
9
|
+
def initialize(credentials)
|
10
|
+
|
11
|
+
#Extract data from hash
|
12
|
+
username = credentials[:username]
|
13
|
+
password = credentials[:password]
|
14
|
+
name = credentials[:name]
|
15
|
+
clientname = credentials[:clientname]
|
16
|
+
adapter = credentials[:adapter]
|
17
|
+
machine = credentials[:machine]
|
18
|
+
|
19
|
+
#Set credentials and Profile information
|
20
|
+
@username = username == nil ? "" : username
|
21
|
+
@password = password == nil ? "" : password
|
22
|
+
@name = name == nil ? "" : name
|
23
|
+
@clientname = clientname == nil ? "" : clientname
|
24
|
+
@adapter = adapter == nil ? "" : adapter
|
25
|
+
@machine = machine == nil ? "" : machine
|
26
|
+
|
27
|
+
#Set @def_locn to the Avatax-x.x.x gem install library. This enables the ruby programs to
|
28
|
+
#find other objects that it needs.
|
29
|
+
spec = Gem::Specification.find_by_name("Avatax_TaxService")
|
30
|
+
gem_root = spec.gem_dir
|
31
|
+
@def_locn = gem_root + "/lib"
|
32
|
+
|
33
|
+
#Header for response data
|
34
|
+
@responsetime_hdr = " (User) (System) (Total) (Real)"
|
35
|
+
|
36
|
+
#Open Avatax Error Log
|
37
|
+
@log = File.new(@def_locn + '/tax_log.txt', "w")
|
38
|
+
@log.puts "#{Time.now}: Tax service started"
|
39
|
+
|
40
|
+
#Get service details from WSDL - control_array[2] contains the WSDL read from the address_control file
|
41
|
+
#log :false turns off HTTP logging
|
42
|
+
@client = Savon.client(wsdl: @def_locn + '/taxservice_dev.wsdl', log: false)
|
43
|
+
|
44
|
+
#Read in the SOAP template for Get tax
|
45
|
+
begin
|
46
|
+
@template_gettax = ERB.new(File.read(@def_locn + '/template_gettax.erb'))
|
47
|
+
rescue
|
48
|
+
@log.puts "#{Time.now}: Error loading the GetTax template"
|
49
|
+
end
|
50
|
+
|
51
|
+
#Read in the SOAP template for Adjust tax
|
52
|
+
begin
|
53
|
+
@template_adjust = ERB.new(File.read(@def_locn + '/template_adjusttax.erb'))
|
54
|
+
rescue
|
55
|
+
@log.puts "#{Time.now}: Error loading the AdjustTax template"
|
56
|
+
end
|
57
|
+
|
58
|
+
#Read in the SOAP template for Ping
|
59
|
+
begin
|
60
|
+
@template_ping = ERB.new(File.read(@def_locn + '/template_ping.erb'))
|
61
|
+
rescue
|
62
|
+
@log.puts "#{Time.now}: Error loading the Ping template"
|
63
|
+
end
|
64
|
+
|
65
|
+
#Read in the SOAP template for IsAuthorized
|
66
|
+
begin
|
67
|
+
@template_isauthorized = ERB.new(File.read(@def_locn + '/template_isauthorized.erb'))
|
68
|
+
rescue
|
69
|
+
@log.puts "#{Time.now}: Error loading the IsAuthorized template"
|
70
|
+
end
|
71
|
+
|
72
|
+
#Read in the SOAP template for Tax
|
73
|
+
begin
|
74
|
+
@template_post = ERB.new(File.read(@def_locn + '/template_posttax.erb'))
|
75
|
+
rescue
|
76
|
+
@log.puts "#{Time.now}: Error loading the Post template"
|
77
|
+
end
|
78
|
+
|
79
|
+
#Read in the SOAP template for Commit tax
|
80
|
+
begin
|
81
|
+
@template_commit = ERB.new(File.read(@def_locn + '/template_committax.erb'))
|
82
|
+
rescue
|
83
|
+
@log.puts "#{Time.now}: Error loading the CommitTax template"
|
84
|
+
end
|
85
|
+
|
86
|
+
#Read in the SOAP template for Cancel tax
|
87
|
+
begin
|
88
|
+
@template_cancel = ERB.new(File.read(@def_locn + '/template_canceltax.erb'))
|
89
|
+
rescue
|
90
|
+
@log.puts "#{Time.now}: Error loading the CancelTax template"
|
91
|
+
end
|
92
|
+
|
93
|
+
#Read in the SOAP template for GetTaxHistory tax
|
94
|
+
begin
|
95
|
+
@template_gettaxhistory = ERB.new(File.read(@def_locn + '/template_gettaxhistory.erb'))
|
96
|
+
rescue
|
97
|
+
@log.puts "#{Time.now}: Error loading the GetTaxHistory template"
|
98
|
+
end
|
99
|
+
|
100
|
+
#Read in the SOAP template for GetTaxHistory tax
|
101
|
+
begin
|
102
|
+
@template_reconciletaxhistory = ERB.new(File.read(@def_locn + '/template_reconciletaxhistory.erb'))
|
103
|
+
rescue
|
104
|
+
@log.puts "#{Time.now}: Error loading the ReconcileTaxHistory template"
|
105
|
+
end
|
106
|
+
|
107
|
+
# Create hash for validate result
|
108
|
+
@return_data = Hash.new
|
103
109
|
end
|
104
|
-
|
105
|
-
|
110
|
+
|
106
111
|
####################################################################################################
|
107
112
|
# ping - Verifies connectivity to the web service and returns version information about the service.
|
108
113
|
####################################################################################################
|
109
114
|
def ping(message = nil)
|
110
115
|
#Read in the SOAP template
|
111
|
-
@message = message == nil ? "?" : message
|
116
|
+
@message = message == nil ? "?" : message
|
112
117
|
|
113
|
-
# Subsitute real vales for template place holders
|
118
|
+
# Subsitute real vales for template place holders
|
114
119
|
@soap = @template_ping.result(binding)
|
115
|
-
|
120
|
+
|
116
121
|
#Clear return hash
|
117
122
|
@return_data.clear
|
118
|
-
|
123
|
+
|
119
124
|
# Make the call to the Avalara service
|
120
125
|
begin
|
121
126
|
@response = @client.call(:ping, xml: @soap).to_s
|
122
|
-
|
123
|
-
|
127
|
+
rescue
|
128
|
+
@log.puts "#{Time.now}: Error calling Ping service ... check that your account name and password are correct."
|
124
129
|
end
|
125
130
|
# Load the response into a Nokogiri object and remove namespaces
|
126
|
-
@doc = Nokogiri::XML(@response).remove_namespaces!
|
127
|
-
|
128
|
-
#Read in an array of XPATH pointers
|
131
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
132
|
+
|
133
|
+
#Read in an array of XPATH pointers
|
129
134
|
@ping_xpath = File.readlines(@def_locn + '/xpath_ping.txt')
|
130
|
-
|
135
|
+
|
131
136
|
#Parse the returned repsonse and return to caller as a hash
|
132
137
|
@ping_xpath.each do |xpath|
|
133
138
|
if xpath.rstrip.length != 0
|
134
139
|
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
135
|
-
end
|
140
|
+
end
|
136
141
|
end
|
137
|
-
|
142
|
+
|
138
143
|
return @return_data
|
139
144
|
end
|
140
145
|
|
141
146
|
####################################################################################################
|
142
147
|
# gettax - Calls the Avatax GetTax Service
|
143
148
|
####################################################################################################
|
144
|
-
def gettax(
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
origincode,
|
155
|
-
destinationcode,
|
156
|
-
addresses,
|
157
|
-
lines,
|
158
|
-
detaillevel,
|
159
|
-
referencecode,
|
160
|
-
hashcode,
|
161
|
-
locationcode,
|
162
|
-
commit,
|
163
|
-
batchcode,
|
164
|
-
taxoverridetype,
|
165
|
-
taxamount,
|
166
|
-
taxdate,
|
167
|
-
reason,
|
168
|
-
currencycode,
|
169
|
-
servicemode,
|
170
|
-
paymentdate,
|
171
|
-
exchangerate,
|
172
|
-
exchangerateeffdate,
|
173
|
-
poslanecode,
|
174
|
-
businessidentificationno,
|
175
|
-
debug,
|
176
|
-
validate)
|
177
|
-
|
178
|
-
#Set parms passed by user - If Nil then default else use passed value
|
179
|
-
@companycode = companycode == nil ? "" : companycode
|
180
|
-
@doctype = doctype == nil ? "" : doctype
|
181
|
-
@doccode = doccode == nil ? "" : doccode
|
182
|
-
@docdate = docdate == nil ? "" : docdate
|
183
|
-
@salespersoncode = salespersoncode == nil ? "" : salespersoncode
|
184
|
-
@customercode = customercode == nil ? "" : customercode
|
185
|
-
@customerusagetype = customerusagetype == nil ? "" : customerusagetype
|
186
|
-
@discount = discount == nil ? "" : discount
|
187
|
-
@purchaseorderno = purchaseorderno == nil ? "" : purchaseorderno
|
188
|
-
@exemptionno = exemptionno == nil ? "" : exemptionno
|
189
|
-
@origincode = origincode == nil ? "" : origincode
|
190
|
-
@destinationcode = destinationcode == nil ? "" : destinationcode
|
191
|
-
@addresses = addresses == nil ? "" : addresses
|
192
|
-
@lines = lines == nil ? "" : lines
|
193
|
-
@detaillevel = detaillevel == nil ? "" : detaillevel
|
194
|
-
@referencecode = referencecode == nil ? "" : referencecode
|
195
|
-
@hashcode = hashcode == nil ? "" : hashcode
|
196
|
-
@locationcode = locationcode == nil ? "" : locationcode
|
197
|
-
@commit = commit == nil ? "" : commit
|
198
|
-
@batchcode = batchcode == nil ? "" : batchcode
|
199
|
-
@taxoverridetype = taxoverridetype == nil ? "" : taxoverridetype
|
200
|
-
@taxamount = taxamount == nil ? "" : taxamount
|
201
|
-
@taxdate = taxdate == nil ? "" : taxdate
|
202
|
-
@reason = reason == nil ? "" : reason
|
203
|
-
@currencycode = currencycode == nil ? "" : currencycode
|
204
|
-
@servicemode = servicemode == nil ? "" : servicemode
|
205
|
-
@paymentdate = paymentdate == nil ? "" : paymentdate
|
206
|
-
@exchangerate = exchangerate == nil ? "" : exchangerate
|
207
|
-
@exchangerateeffdate = exchangerateeffdate == nil ? "" : exchangerateeffdate
|
208
|
-
@poslanecode = poslanecode == nil ? "" : poslanecode
|
209
|
-
@businessidentificationno = businessidentificationno == nil ? "" : businessidentificationno
|
210
|
-
@debug = debug == nil ? false : debug
|
211
|
-
@validate = validate == nil ? false : validate
|
212
|
-
|
213
|
-
# If validate set to true then user has requested address validation before the tax call
|
214
|
-
if @validate
|
215
|
-
if @debug
|
216
|
-
#Use Ruby built in Benchmark function to record response times
|
217
|
-
time = Benchmark.measure do
|
218
|
-
valaddr
|
219
|
-
end
|
220
|
-
if @val_addr[:ResultCode] == "Success"
|
221
|
-
@log.puts "#{Time.now}: Validation OK"
|
222
|
-
else
|
223
|
-
@log.puts "#{Time.now}: Address #{line1}, #{line2}, #{line3}, #{city}, #{region}, #{postalcode}, #{country} failed to validate."
|
224
|
-
end
|
225
|
-
@log.puts "Response times for Address Validation:"
|
226
|
-
@log.puts @responsetime_hdr
|
227
|
-
@log.puts time
|
228
|
-
else
|
229
|
-
#Validate with no benchmarking
|
149
|
+
def gettax(document)
|
150
|
+
|
151
|
+
#Extract data from document hash
|
152
|
+
xtract(document)
|
153
|
+
|
154
|
+
# If validate set to true then user has requested address validation before the tax call
|
155
|
+
if @validate
|
156
|
+
if @debug
|
157
|
+
#Use Ruby built in Benchmark function to record response times
|
158
|
+
time = Benchmark.measure do
|
230
159
|
valaddr
|
231
|
-
end
|
232
|
-
|
233
|
-
|
234
|
-
# Subsitute template place holders with real values
|
235
|
-
@soap = @template_gettax.result(binding)
|
236
|
-
if debug
|
237
|
-
@log.puts "#{Time.now}: SOAP request created:"
|
238
|
-
@log.puts @soap
|
239
|
-
end
|
240
|
-
|
241
|
-
#Clear return hash
|
242
|
-
@return_data.clear
|
243
|
-
|
244
|
-
# Make the call to the Avalara service
|
245
|
-
begin
|
246
|
-
# Call using debug
|
247
|
-
if debug
|
248
|
-
# Use Ruby built in Benchmark function to record response times
|
249
|
-
@log.puts "#{Time.now}: Calling GetTax Service for DocCode: #{@doccode}"
|
250
|
-
time = Benchmark.measure do
|
251
|
-
# Call GetTax Service
|
252
|
-
@response = @client.call(:get_tax, xml: @soap).to_s
|
253
|
-
end
|
254
|
-
@log.puts "Response times for GetTax:"
|
255
|
-
@log.puts @responsetime_hdr
|
256
|
-
@log.puts time
|
160
|
+
end
|
161
|
+
if @val_addr[:ResultCode] == "Success"
|
162
|
+
@log.puts "#{Time.now}: Validation OK"
|
257
163
|
else
|
258
|
-
#
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
164
|
+
@log.puts "#{Time.now}: Address #{line1}, #{line2}, #{line3}, #{city}, #{region}, #{postalcode}, #{country} failed to validate."
|
165
|
+
end
|
166
|
+
@log.puts "Response times for Address Validation:"
|
167
|
+
@log.puts @responsetime_hdr
|
168
|
+
@log.puts time
|
169
|
+
else
|
170
|
+
#Validate with no benchmarking
|
171
|
+
valaddr
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
# Subsitute template place holders with real values
|
176
|
+
@soap = @template_gettax.result(binding)
|
177
|
+
if @debug
|
178
|
+
@log.puts "#{Time.now}: SOAP request created:"
|
179
|
+
@log.puts @soap
|
180
|
+
end
|
181
|
+
|
182
|
+
#Clear return hash
|
183
|
+
@return_data.clear
|
184
|
+
|
185
|
+
# Make the call to the Avalara service
|
186
|
+
begin
|
187
|
+
# Call using debug
|
188
|
+
if @debug
|
272
189
|
# Use Ruby built in Benchmark function to record response times
|
273
|
-
@log.puts "#{Time.now}:
|
190
|
+
@log.puts "#{Time.now}: Calling GetTax Service for DocCode: #{@doccode}"
|
274
191
|
time = Benchmark.measure do
|
275
|
-
|
276
|
-
@
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
end
|
282
|
-
end
|
283
|
-
end
|
284
|
-
@log.puts @responsetime_hdr
|
285
|
-
@log.puts time
|
192
|
+
# Call GetTax Service
|
193
|
+
@response = @client.call(:get_tax, xml: @soap).to_s
|
194
|
+
end
|
195
|
+
@log.puts "Response times for GetTax:"
|
196
|
+
@log.puts @responsetime_hdr
|
197
|
+
@log.puts time
|
286
198
|
else
|
287
|
-
|
288
|
-
@
|
199
|
+
# Call GetTax Service
|
200
|
+
@response = @client.call(:get_tax, xml: @soap).to_s
|
201
|
+
end
|
202
|
+
#Capture unexpected errors
|
203
|
+
rescue
|
204
|
+
@log.puts "#{Time.now}: Error calling GetTax service ... check that your account name and password are correct."
|
205
|
+
end
|
206
|
+
|
207
|
+
#Parse the response
|
208
|
+
#Read in an array of XPATH pointers
|
209
|
+
@gettax_xpath = File.readlines(@def_locn + '/xpath_gettax.txt')
|
210
|
+
|
211
|
+
# Call using debug
|
212
|
+
if @debug
|
213
|
+
# Use Ruby built in Benchmark function to record response times
|
214
|
+
@log.puts "#{Time.now}: Parsing the GeTax response:"
|
215
|
+
time = Benchmark.measure do
|
216
|
+
# Load the response into a Nokogiri object and remove namespaces
|
217
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
289
218
|
#Parse the returned repsonse and return to caller as a hash
|
290
219
|
@gettax_xpath.each do |xpath|
|
291
220
|
if xpath.rstrip.length != 0
|
292
|
-
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
221
|
+
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
293
222
|
end
|
294
223
|
end
|
295
|
-
end
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
224
|
+
end
|
225
|
+
@log.puts @responsetime_hdr
|
226
|
+
@log.puts time
|
227
|
+
else
|
228
|
+
# Load the response into a Nokogiri object and remove namespaces
|
229
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
230
|
+
#Parse the returned repsonse and return to caller as a hash
|
231
|
+
@gettax_xpath.each do |xpath|
|
232
|
+
if xpath.rstrip.length != 0
|
233
|
+
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
234
|
+
end
|
235
|
+
end
|
236
|
+
end
|
237
|
+
#Return data to calling program
|
238
|
+
return @return_data
|
239
|
+
end
|
240
|
+
|
300
241
|
####################################################################################################
|
301
242
|
# adjusttax - Calls the Avatax AdjustTax Service
|
302
243
|
####################################################################################################
|
303
|
-
def adjusttax(
|
304
|
-
adjustmentdescription,
|
305
|
-
companycode,
|
306
|
-
doctype,
|
307
|
-
doccode,
|
308
|
-
docdate,
|
309
|
-
salespersoncode,
|
310
|
-
customercode,
|
311
|
-
customerusagetype,
|
312
|
-
discount,
|
313
|
-
purchaseorderno,
|
314
|
-
exemptionno,
|
315
|
-
origincode,
|
316
|
-
destinationcode,
|
317
|
-
addresses,
|
318
|
-
lines,
|
319
|
-
detaillevel,
|
320
|
-
referencecode,
|
321
|
-
hashcode,
|
322
|
-
locationcode,
|
323
|
-
commit,
|
324
|
-
batchcode,
|
325
|
-
taxoverridetype,
|
326
|
-
taxamount,
|
327
|
-
taxdate,
|
328
|
-
reason,
|
329
|
-
currencycode,
|
330
|
-
servicemode,
|
331
|
-
paymentdate,
|
332
|
-
exchangerate,
|
333
|
-
exchangerateeffdate,
|
334
|
-
poslanecode,
|
335
|
-
businessidentificationno,
|
336
|
-
debug,
|
337
|
-
validate)
|
338
|
-
|
244
|
+
def adjusttax(document)
|
339
245
|
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
@
|
346
|
-
|
347
|
-
|
348
|
-
@customercode = customercode == nil ? "" : customercode
|
349
|
-
@customerusagetype = customerusagetype == nil ? "" : customerusagetype
|
350
|
-
@discount = discount == nil ? "" : discount
|
351
|
-
@purchaseorderno = purchaseorderno == nil ? "" : purchaseorderno
|
352
|
-
@exemptionno = exemptionno == nil ? "" : exemptionno
|
353
|
-
@origincode = origincode == nil ? "" : origincode
|
354
|
-
@destinationcode = destinationcode == nil ? "" : destinationcode
|
355
|
-
@addresses = addresses == nil ? "" : addresses
|
356
|
-
@lines = lines == nil ? "" : lines
|
357
|
-
@detaillevel = detaillevel == nil ? "" : detaillevel
|
358
|
-
@referencecode = referencecode == nil ? "" : referencecode
|
359
|
-
@hashcode = hashcode == nil ? "" : hashcode
|
360
|
-
@locationcode = locationcode == nil ? "" : locationcode
|
361
|
-
@commit = commit == nil ? "" : commit
|
362
|
-
@batchcode = batchcode == nil ? "" : batchcode
|
363
|
-
@taxoverridetype = taxoverridetype == nil ? "" : taxoverridetype
|
364
|
-
@taxamount = taxamount == nil ? "" : taxamount
|
365
|
-
@taxdate = taxdate == nil ? "" : taxdate
|
366
|
-
@reason = reason == nil ? "" : reason
|
367
|
-
@currencycode = currencycode == nil ? "" : currencycode
|
368
|
-
@servicemode = servicemode == nil ? "" : servicemode
|
369
|
-
@paymentdate = paymentdate == nil ? "" : paymentdate
|
370
|
-
@exchangerate = exchangerate == nil ? "" : exchangerate
|
371
|
-
@exchangerateeffdate = exchangerateeffdate == nil ? "" : exchangerateeffdate
|
372
|
-
@poslanecode = poslanecode == nil ? "" : poslanecode
|
373
|
-
@businessidentificationno = businessidentificationno == nil ? "" : businessidentificationno
|
374
|
-
@debug = debug == nil ? false : debug
|
375
|
-
@validate = validate == nil ? false : validate
|
376
|
-
|
377
|
-
# If vaidate set to true then user has requested address validation before the tax call
|
378
|
-
if @validate
|
379
|
-
if @debug
|
380
|
-
#Use Ruby built in Benchmark function to record response times
|
381
|
-
time = Benchmark.measure do
|
382
|
-
valaddr
|
383
|
-
end
|
384
|
-
if @val_addr[:ResultCode] == "Success"
|
385
|
-
@log.puts "#{Time.now}: Validation OK"
|
386
|
-
else
|
387
|
-
@log.puts "#{Time.now}: Address #{line1}, #{line2}, #{line3}, #{city}, #{region}, #{postalcode}, #{country} failed to validate."
|
388
|
-
end
|
389
|
-
@log.puts "Response times for Address Validation:"
|
390
|
-
@log.puts @responsetime_hdr
|
391
|
-
@log.puts time
|
392
|
-
else
|
393
|
-
#Validate with no benchmarking
|
246
|
+
#Extract data from document hash
|
247
|
+
xtract(document)
|
248
|
+
|
249
|
+
# If vaidate set to true then user has requested address validation before the tax call
|
250
|
+
if @validate
|
251
|
+
if @debug
|
252
|
+
#Use Ruby built in Benchmark function to record response times
|
253
|
+
time = Benchmark.measure do
|
394
254
|
valaddr
|
395
|
-
end
|
396
|
-
|
397
|
-
|
398
|
-
# Subsitute template place holders with real values
|
399
|
-
@soap = @template_adjust.result(binding)
|
400
|
-
if debug
|
401
|
-
@log.puts "#{Time.now}: SOAP request created:"
|
402
|
-
@log.puts @soap
|
403
|
-
end
|
404
|
-
|
405
|
-
#Clear return hash
|
406
|
-
@return_data.clear
|
407
|
-
|
408
|
-
# Make the call to the Avalara service
|
409
|
-
begin
|
410
|
-
# Call using debug
|
411
|
-
if debug
|
412
|
-
# Use Ruby built in Benchmark function to record response times
|
413
|
-
@log.puts "#{Time.now}: Calling AdjustTax Service for DocCode: #{@doccode}"
|
414
|
-
time = Benchmark.measure do
|
415
|
-
# Call AdjustTax Service
|
416
|
-
@response = @client.call(:adjust_tax, xml: @soap).to_s
|
417
|
-
end
|
418
|
-
@log.puts "Response times for AdjustTax:"
|
419
|
-
@log.puts @responsetime_hdr
|
420
|
-
@log.puts time
|
255
|
+
end
|
256
|
+
if @val_addr[:ResultCode] == "Success"
|
257
|
+
@log.puts "#{Time.now}: Validation OK"
|
421
258
|
else
|
422
|
-
#
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
259
|
+
@log.puts "#{Time.now}: Address #{line1}, #{line2}, #{line3}, #{city}, #{region}, #{postalcode}, #{country} failed to validate."
|
260
|
+
end
|
261
|
+
@log.puts "Response times for Address Validation:"
|
262
|
+
@log.puts @responsetime_hdr
|
263
|
+
@log.puts time
|
264
|
+
else
|
265
|
+
#Validate with no benchmarking
|
266
|
+
valaddr
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
270
|
+
# Subsitute template place holders with real values
|
271
|
+
@soap = @template_adjust.result(binding)
|
272
|
+
if @debug
|
273
|
+
@log.puts "#{Time.now}: SOAP request created:"
|
274
|
+
@log.puts @soap
|
275
|
+
end
|
276
|
+
|
277
|
+
#Clear return hash
|
278
|
+
@return_data.clear
|
279
|
+
|
280
|
+
# Make the call to the Avalara service
|
281
|
+
begin
|
282
|
+
# Call using debug
|
283
|
+
if @debug
|
436
284
|
# Use Ruby built in Benchmark function to record response times
|
437
|
-
@log.puts "#{Time.now}:
|
285
|
+
@log.puts "#{Time.now}: Calling AdjustTax Service for DocCode: #{@doccode}"
|
438
286
|
time = Benchmark.measure do
|
439
|
-
|
440
|
-
@
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
end
|
446
|
-
end
|
447
|
-
end
|
448
|
-
@log.puts @responsetime_hdr
|
449
|
-
@log.puts time
|
287
|
+
# Call AdjustTax Service
|
288
|
+
@response = @client.call(:adjust_tax, xml: @soap).to_s
|
289
|
+
end
|
290
|
+
@log.puts "Response times for AdjustTax:"
|
291
|
+
@log.puts @responsetime_hdr
|
292
|
+
@log.puts time
|
450
293
|
else
|
451
|
-
|
452
|
-
@
|
294
|
+
# Call AdjustTax Service
|
295
|
+
@response = @client.call(:adjust_tax, xml: @soap).to_s
|
296
|
+
end
|
297
|
+
#Capture unexpected errors
|
298
|
+
rescue
|
299
|
+
@log.puts "#{Time.now}: Error calling AdjustTax service ... check that your account name and password are correct."
|
300
|
+
end
|
301
|
+
|
302
|
+
#Parse the response
|
303
|
+
#Read in an array of XPATH pointers
|
304
|
+
@adjtax_xpath = File.readlines(@def_locn + '/xpath_adjtax.txt')
|
305
|
+
|
306
|
+
# Call using debug
|
307
|
+
if @debug
|
308
|
+
# Use Ruby built in Benchmark function to record response times
|
309
|
+
@log.puts "#{Time.now}: Parsing the AdjustTax response:"
|
310
|
+
time = Benchmark.measure do
|
311
|
+
# Load the response into a Nokogiri object and remove namespaces
|
312
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
453
313
|
#Parse the returned repsonse and return to caller as a hash
|
454
314
|
@adjtax_xpath.each do |xpath|
|
455
315
|
if xpath.rstrip.length != 0
|
456
|
-
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
316
|
+
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
457
317
|
end
|
458
318
|
end
|
459
|
-
end
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
319
|
+
end
|
320
|
+
@log.puts @responsetime_hdr
|
321
|
+
@log.puts time
|
322
|
+
else
|
323
|
+
# Load the response into a Nokogiri object and remove namespaces
|
324
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
325
|
+
#Parse the returned repsonse and return to caller as a hash
|
326
|
+
@adjtax_xpath.each do |xpath|
|
327
|
+
if xpath.rstrip.length != 0
|
328
|
+
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
329
|
+
end
|
330
|
+
end
|
331
|
+
end
|
332
|
+
#Return data to calling program
|
333
|
+
return @return_data
|
334
|
+
end
|
335
|
+
|
464
336
|
####################################################################################################
|
465
337
|
# posttax - Calls the Avatax PostTax Service
|
466
338
|
####################################################################################################
|
467
|
-
def posttax(
|
468
|
-
companycode,
|
469
|
-
doctype,
|
470
|
-
doccode,
|
471
|
-
docdate,
|
472
|
-
totalamount,
|
473
|
-
totaltax,
|
474
|
-
hashcode,
|
475
|
-
commit,
|
476
|
-
newdoccode,
|
477
|
-
debug)
|
339
|
+
def posttax(document)
|
478
340
|
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
@
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
@log.puts @soap
|
497
|
-
end
|
498
|
-
|
499
|
-
#Clear return hash
|
500
|
-
@return_data.clear
|
501
|
-
|
502
|
-
# Make the call to the Avalara service
|
503
|
-
begin
|
504
|
-
# Call using debug
|
505
|
-
if debug
|
506
|
-
# Use Ruby built in Benchmark function to record response times
|
507
|
-
@log.puts "#{Time.now}: Calling PostTax Service for DocCode: #{@doccode}"
|
508
|
-
time = Benchmark.measure do
|
509
|
-
# Call PostTax Service
|
510
|
-
@response = @client.call(:post_tax, xml: @soap).to_s
|
511
|
-
end
|
512
|
-
@log.puts "Response times for PostTax:"
|
513
|
-
@log.puts @responsetime_hdr
|
514
|
-
@log.puts time
|
515
|
-
else
|
516
|
-
# Call PostTax Service
|
517
|
-
@response = @client.call(:post_tax, xml: @soap).to_s
|
518
|
-
end
|
519
|
-
#Capture unexpected errors
|
520
|
-
rescue
|
521
|
-
@log.puts "#{Time.now}: Error calling PostTax service ... check that your account name and password are correct."
|
522
|
-
end
|
523
|
-
|
524
|
-
#Parse the response
|
525
|
-
#Read in an array of XPATH pointers
|
526
|
-
@posttax_xpath = File.readlines(@def_locn + '/xpath_post.txt')
|
527
|
-
|
528
|
-
# Call using debug
|
529
|
-
if debug
|
341
|
+
#Extract data from document hash
|
342
|
+
xtract(document)
|
343
|
+
|
344
|
+
# Subsitute template place holders with real values
|
345
|
+
@soap = @template_post.result(binding)
|
346
|
+
if debug
|
347
|
+
@log.puts "#{Time.now}: SOAP request created:"
|
348
|
+
@log.puts @soap
|
349
|
+
end
|
350
|
+
|
351
|
+
#Clear return hash
|
352
|
+
@return_data.clear
|
353
|
+
|
354
|
+
# Make the call to the Avalara service
|
355
|
+
begin
|
356
|
+
# Call using debug
|
357
|
+
if @debug
|
530
358
|
# Use Ruby built in Benchmark function to record response times
|
531
|
-
@log.puts "#{Time.now}:
|
359
|
+
@log.puts "#{Time.now}: Calling PostTax Service for DocCode: #{@doccode}"
|
532
360
|
time = Benchmark.measure do
|
533
|
-
|
534
|
-
@
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
end
|
540
|
-
end
|
541
|
-
end
|
542
|
-
@log.puts @responsetime_hdr
|
543
|
-
@log.puts time
|
361
|
+
# Call PostTax Service
|
362
|
+
@response = @client.call(:post_tax, xml: @soap).to_s
|
363
|
+
end
|
364
|
+
@log.puts "Response times for PostTax:"
|
365
|
+
@log.puts @responsetime_hdr
|
366
|
+
@log.puts time
|
544
367
|
else
|
545
|
-
|
546
|
-
@
|
368
|
+
# Call PostTax Service
|
369
|
+
@response = @client.call(:post_tax, xml: @soap).to_s
|
370
|
+
end
|
371
|
+
#Capture unexpected errors
|
372
|
+
rescue
|
373
|
+
@log.puts "#{Time.now}: Error calling PostTax service ... check that your account name and password are correct."
|
374
|
+
end
|
375
|
+
|
376
|
+
#Parse the response
|
377
|
+
#Read in an array of XPATH pointers
|
378
|
+
@posttax_xpath = File.readlines(@def_locn + '/xpath_post.txt')
|
379
|
+
|
380
|
+
# Call using debug
|
381
|
+
if @debug
|
382
|
+
# Use Ruby built in Benchmark function to record response times
|
383
|
+
@log.puts "#{Time.now}: Parsing the PostTax response:"
|
384
|
+
time = Benchmark.measure do
|
385
|
+
# Load the response into a Nokogiri object and remove namespaces
|
386
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
547
387
|
#Parse the returned repsonse and return to caller as a hash
|
548
388
|
@posttax_xpath.each do |xpath|
|
549
389
|
if xpath.rstrip.length != 0
|
550
|
-
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
390
|
+
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
551
391
|
end
|
552
392
|
end
|
553
|
-
end
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
393
|
+
end
|
394
|
+
@log.puts @responsetime_hdr
|
395
|
+
@log.puts time
|
396
|
+
else
|
397
|
+
# Load the response into a Nokogiri object and remove namespaces
|
398
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
399
|
+
#Parse the returned repsonse and return to caller as a hash
|
400
|
+
@posttax_xpath.each do |xpath|
|
401
|
+
if xpath.rstrip.length != 0
|
402
|
+
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
403
|
+
end
|
404
|
+
end
|
405
|
+
end
|
406
|
+
#Return data to calling program
|
407
|
+
return @return_data
|
408
|
+
end
|
409
|
+
|
558
410
|
####################################################################################################
|
559
411
|
# committax - Calls the Avatax CommitTax Service
|
560
412
|
####################################################################################################
|
561
|
-
def committax(
|
562
|
-
companycode,
|
563
|
-
doctype,
|
564
|
-
doccode,
|
565
|
-
newdoccode,
|
566
|
-
debug)
|
567
|
-
|
568
|
-
#Set parms passed by user - If Nil then default else use passed value
|
569
|
-
@docid = docid == nil ? "" : docid
|
570
|
-
@companycode = companycode == nil ? "" : companycode
|
571
|
-
@doctype = doctype == nil ? "" : doctype
|
572
|
-
@doccode = doccode == nil ? "" : doccode
|
573
|
-
@newdoccode = newdoccode == nil ? "" : newdoccode
|
574
|
-
@debug = debug == nil ? false : debug
|
575
|
-
@message =""
|
576
|
-
|
577
|
-
# Subsitute template place holders with real values
|
578
|
-
@soap = @template_commit.result(binding)
|
579
|
-
if debug
|
580
|
-
@log.puts "#{Time.now}: SOAP request created:"
|
581
|
-
@log.puts @soap
|
582
|
-
end
|
583
|
-
|
584
|
-
#Clear return hash
|
585
|
-
@return_data.clear
|
586
|
-
|
587
|
-
# Make the call to the Avalara service
|
588
|
-
begin
|
589
|
-
# Call using debug
|
590
|
-
if debug
|
591
|
-
# Use Ruby built in Benchmark function to record response times
|
592
|
-
@log.puts "#{Time.now}: Calling CommitTax Service for DocCode: #{@doccode}"
|
593
|
-
time = Benchmark.measure do
|
594
|
-
# Call CommitTax Service
|
595
|
-
@response = @client.call(:commit_tax, xml: @soap).to_s
|
596
|
-
end
|
597
|
-
@log.puts "Response times for CommitTax:"
|
598
|
-
@log.puts @responsetime_hdr
|
599
|
-
@log.puts time
|
600
|
-
else
|
601
|
-
# Call CommitTax Service
|
602
|
-
@response = @client.call(:commit_tax, xml: @soap).to_s
|
603
|
-
end
|
604
|
-
#Capture unexpected errors
|
605
|
-
rescue
|
606
|
-
@log.puts "#{Time.now}: Error calling CommitTax service ... check that your account name and password are correct."
|
607
|
-
end
|
608
|
-
|
609
|
-
#Parse the response
|
610
|
-
#Read in an array of XPATH pointers
|
611
|
-
@committax_xpath = File.readlines(@def_locn + '/xpath_commit.txt')
|
413
|
+
def committax(document)
|
612
414
|
|
613
|
-
|
614
|
-
|
415
|
+
#Extract data from document hash
|
416
|
+
xtract(document)
|
417
|
+
|
418
|
+
# Subsitute template place holders with real values
|
419
|
+
@soap = @template_commit.result(binding)
|
420
|
+
if @debug
|
421
|
+
@log.puts "#{Time.now}: SOAP request created:"
|
422
|
+
@log.puts @soap
|
423
|
+
end
|
424
|
+
|
425
|
+
#Clear return hash
|
426
|
+
@return_data.clear
|
427
|
+
|
428
|
+
# Make the call to the Avalara service
|
429
|
+
begin
|
430
|
+
# Call using debug
|
431
|
+
if @debug
|
615
432
|
# Use Ruby built in Benchmark function to record response times
|
616
|
-
@log.puts "#{Time.now}:
|
433
|
+
@log.puts "#{Time.now}: Calling CommitTax Service for DocCode: #{@doccode}"
|
617
434
|
time = Benchmark.measure do
|
618
|
-
|
619
|
-
@
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
end
|
625
|
-
end
|
626
|
-
end
|
627
|
-
@log.puts @responsetime_hdr
|
628
|
-
@log.puts time
|
435
|
+
# Call CommitTax Service
|
436
|
+
@response = @client.call(:commit_tax, xml: @soap).to_s
|
437
|
+
end
|
438
|
+
@log.puts "Response times for CommitTax:"
|
439
|
+
@log.puts @responsetime_hdr
|
440
|
+
@log.puts time
|
629
441
|
else
|
630
|
-
|
631
|
-
@
|
442
|
+
# Call CommitTax Service
|
443
|
+
@response = @client.call(:commit_tax, xml: @soap).to_s
|
444
|
+
end
|
445
|
+
#Capture unexpected errors
|
446
|
+
rescue
|
447
|
+
@log.puts "#{Time.now}: Error calling CommitTax service ... check that your account name and password are correct."
|
448
|
+
end
|
449
|
+
|
450
|
+
#Parse the response
|
451
|
+
#Read in an array of XPATH pointers
|
452
|
+
@committax_xpath = File.readlines(@def_locn + '/xpath_commit.txt')
|
453
|
+
|
454
|
+
# Call using debug
|
455
|
+
if @debug
|
456
|
+
# Use Ruby built in Benchmark function to record response times
|
457
|
+
@log.puts "#{Time.now}: Parsing the commitTax response:"
|
458
|
+
time = Benchmark.measure do
|
459
|
+
# Load the response into a Nokogiri object and remove namespaces
|
460
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
632
461
|
#Parse the returned repsonse and return to caller as a hash
|
633
|
-
@
|
462
|
+
@committax_xpath.each do |xpath|
|
634
463
|
if xpath.rstrip.length != 0
|
635
|
-
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
464
|
+
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
636
465
|
end
|
637
466
|
end
|
638
|
-
end
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
467
|
+
end
|
468
|
+
@log.puts @responsetime_hdr
|
469
|
+
@log.puts time
|
470
|
+
else
|
471
|
+
# Load the response into a Nokogiri object and remove namespaces
|
472
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
473
|
+
#Parse the returned repsonse and return to caller as a hash
|
474
|
+
@Committax_xpath.each do |xpath|
|
475
|
+
if xpath.rstrip.length != 0
|
476
|
+
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
477
|
+
end
|
478
|
+
end
|
479
|
+
end
|
480
|
+
#Return data to calling program
|
481
|
+
return @return_data
|
482
|
+
end
|
483
|
+
|
643
484
|
####################################################################################################
|
644
485
|
# canceltax - Calls the Avatax CancelTax Service
|
645
486
|
####################################################################################################
|
646
|
-
def canceltax(
|
647
|
-
companycode,
|
648
|
-
doctype,
|
649
|
-
doccode,
|
650
|
-
cancelcode,
|
651
|
-
debug)
|
487
|
+
def canceltax(document)
|
652
488
|
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
@
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
@return_data.clear
|
671
|
-
|
672
|
-
# Make the call to the Avalara service
|
673
|
-
begin
|
674
|
-
# Call using debug
|
675
|
-
if debug
|
676
|
-
# Use Ruby built in Benchmark function to record response times
|
677
|
-
@log.puts "#{Time.now}: Calling CancelTax Service for DocCode: #{@doccode}"
|
678
|
-
time = Benchmark.measure do
|
679
|
-
# Call CancelTax Service
|
680
|
-
@response = @client.call(:cancel_tax, xml: @soap).to_s
|
681
|
-
end
|
682
|
-
@log.puts "Response times for CancelTax:"
|
683
|
-
@log.puts @responsetime_hdr
|
684
|
-
@log.puts time
|
685
|
-
else
|
686
|
-
# Call CancelTax Service
|
687
|
-
@response = @client.call(:cancel_tax, xml: @soap).to_s
|
688
|
-
end
|
689
|
-
#Capture unexpected errors
|
690
|
-
rescue
|
691
|
-
@log.puts "#{Time.now}: Error calling CancelTax service ... check that your account name and password are correct."
|
692
|
-
end
|
693
|
-
|
694
|
-
#Parse the response
|
695
|
-
#Read in an array of XPATH pointers
|
696
|
-
@canceltax_xpath = File.readlines(@def_locn + '/xpath_cancel.txt')
|
697
|
-
|
698
|
-
# Call using debug
|
699
|
-
if debug
|
489
|
+
#Extract data from document hash
|
490
|
+
xtract(document)
|
491
|
+
|
492
|
+
# Subsitute template place holders with real values
|
493
|
+
@soap = @template_cancel.result(binding)
|
494
|
+
if @debug
|
495
|
+
@log.puts "#{Time.now}: SOAP request created:"
|
496
|
+
@log.puts @soap
|
497
|
+
end
|
498
|
+
|
499
|
+
#Clear return hash
|
500
|
+
@return_data.clear
|
501
|
+
|
502
|
+
# Make the call to the Avalara service
|
503
|
+
begin
|
504
|
+
# Call using debug
|
505
|
+
if @debug
|
700
506
|
# Use Ruby built in Benchmark function to record response times
|
701
|
-
@log.puts "#{Time.now}:
|
507
|
+
@log.puts "#{Time.now}: Calling CancelTax Service for DocCode: #{@doccode}"
|
702
508
|
time = Benchmark.measure do
|
703
|
-
|
704
|
-
@
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
end
|
710
|
-
end
|
711
|
-
end
|
712
|
-
@log.puts @responsetime_hdr
|
713
|
-
@log.puts time
|
509
|
+
# Call CancelTax Service
|
510
|
+
@response = @client.call(:cancel_tax, xml: @soap).to_s
|
511
|
+
end
|
512
|
+
@log.puts "Response times for CancelTax:"
|
513
|
+
@log.puts @responsetime_hdr
|
514
|
+
@log.puts time
|
714
515
|
else
|
715
|
-
|
716
|
-
@
|
516
|
+
# Call CancelTax Service
|
517
|
+
@response = @client.call(:cancel_tax, xml: @soap).to_s
|
518
|
+
end
|
519
|
+
#Capture unexpected errors
|
520
|
+
rescue
|
521
|
+
@log.puts "#{Time.now}: Error calling CancelTax service ... check that your account name and password are correct."
|
522
|
+
end
|
523
|
+
|
524
|
+
#Parse the response
|
525
|
+
#Read in an array of XPATH pointers
|
526
|
+
@canceltax_xpath = File.readlines(@def_locn + '/xpath_cancel.txt')
|
527
|
+
|
528
|
+
# Call using debug
|
529
|
+
if @debug
|
530
|
+
# Use Ruby built in Benchmark function to record response times
|
531
|
+
@log.puts "#{Time.now}: Parsing the CancelTax response:"
|
532
|
+
time = Benchmark.measure do
|
533
|
+
# Load the response into a Nokogiri object and remove namespaces
|
534
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
717
535
|
#Parse the returned repsonse and return to caller as a hash
|
718
536
|
@canceltax_xpath.each do |xpath|
|
719
537
|
if xpath.rstrip.length != 0
|
720
|
-
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
538
|
+
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
721
539
|
end
|
722
540
|
end
|
723
|
-
end
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
541
|
+
end
|
542
|
+
@log.puts @responsetime_hdr
|
543
|
+
@log.puts time
|
544
|
+
else
|
545
|
+
# Load the response into a Nokogiri object and remove namespaces
|
546
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
547
|
+
#Parse the returned repsonse and return to caller as a hash
|
548
|
+
@canceltax_xpath.each do |xpath|
|
549
|
+
if xpath.rstrip.length != 0
|
550
|
+
@return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.search(xpath).map{ |n| n.text}
|
551
|
+
end
|
552
|
+
end
|
553
|
+
end
|
554
|
+
#Return data to calling program
|
555
|
+
return @return_data
|
556
|
+
end
|
557
|
+
|
729
558
|
####################################################################################################
|
730
559
|
# gettaxhistory - Calls the Avatax GetTaxHistory Service
|
731
560
|
####################################################################################################
|
732
|
-
def gettaxhistory(
|
733
|
-
companycode,
|
734
|
-
doctype,
|
735
|
-
doccode,
|
736
|
-
detaillevel,
|
737
|
-
debug)
|
561
|
+
def gettaxhistory(document)
|
738
562
|
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
@
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
@
|
756
|
-
|
757
|
-
# Make the call to the Avalara service
|
758
|
-
begin
|
759
|
-
# Call using debug
|
760
|
-
if debug
|
761
|
-
# Use Ruby built in Benchmark function to record response times
|
762
|
-
@log.puts "#{Time.now}: Calling GetTaxHistory Service"
|
763
|
-
time = Benchmark.measure do
|
764
|
-
# Call GetTaxHistory Service
|
765
|
-
@response = @client.call(:get_tax_history, xml: @soap).to_s
|
766
|
-
end
|
767
|
-
@log.puts "Response times for GetTaxHistory:"
|
768
|
-
@log.puts @responsetime_hdr
|
769
|
-
@log.puts time
|
770
|
-
else
|
771
|
-
# Call GetTaxHistory Service
|
772
|
-
@response = @client.call(:get_tax_history, xml: @soap).to_s
|
773
|
-
end
|
774
|
-
#Capture unexpected errors
|
775
|
-
rescue
|
776
|
-
@log.puts "#{Time.now}: Error calling GetTaxHistory service ... check that your account name and password are correct."
|
777
|
-
end
|
778
|
-
|
779
|
-
#Parse the response
|
780
|
-
#Read in an array of XPATH pointers
|
781
|
-
@gettaxhistory_xpath = File.readlines(@def_locn + '/xpath_gettaxhistory.txt')
|
782
|
-
|
783
|
-
# Call using debug
|
784
|
-
if debug
|
563
|
+
#Extract data from document hash
|
564
|
+
xtract(document)
|
565
|
+
|
566
|
+
# Subsitute template place holders with real values
|
567
|
+
@soap = @template_gettaxhistory.result(binding)
|
568
|
+
if @debug
|
569
|
+
@log.puts "#{Time.now}: SOAP request created:"
|
570
|
+
@log.puts @soap
|
571
|
+
end
|
572
|
+
|
573
|
+
#Clear return hash
|
574
|
+
@return_data.clear
|
575
|
+
|
576
|
+
# Make the call to the Avalara service
|
577
|
+
begin
|
578
|
+
# Call using debug
|
579
|
+
if @debug
|
785
580
|
# Use Ruby built in Benchmark function to record response times
|
786
|
-
@log.puts "#{Time.now}:
|
581
|
+
@log.puts "#{Time.now}: Calling GetTaxHistory Service"
|
787
582
|
time = Benchmark.measure do
|
788
|
-
|
789
|
-
@
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
end
|
795
|
-
end
|
796
|
-
end
|
797
|
-
@log.puts @responsetime_hdr
|
798
|
-
@log.puts time
|
583
|
+
# Call GetTaxHistory Service
|
584
|
+
@response = @client.call(:get_tax_history, xml: @soap).to_s
|
585
|
+
end
|
586
|
+
@log.puts "Response times for GetTaxHistory:"
|
587
|
+
@log.puts @responsetime_hdr
|
588
|
+
@log.puts time
|
799
589
|
else
|
800
|
-
|
801
|
-
@
|
590
|
+
# Call GetTaxHistory Service
|
591
|
+
@response = @client.call(:get_tax_history, xml: @soap).to_s
|
592
|
+
end
|
593
|
+
#Capture unexpected errors
|
594
|
+
rescue
|
595
|
+
@log.puts "#{Time.now}: Error calling GetTaxHistory service ... check that your account name and password are correct."
|
596
|
+
end
|
597
|
+
|
598
|
+
#Parse the response
|
599
|
+
#Read in an array of XPATH pointers
|
600
|
+
@gettaxhistory_xpath = File.readlines(@def_locn + '/xpath_gettaxhistory.txt')
|
601
|
+
|
602
|
+
# Call using debug
|
603
|
+
if @debug
|
604
|
+
# Use Ruby built in Benchmark function to record response times
|
605
|
+
@log.puts "#{Time.now}: Parsing the GetTaxHistory response:"
|
606
|
+
time = Benchmark.measure do
|
607
|
+
# Load the response into a Nokogiri object and remove namespaces
|
608
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
802
609
|
#Parse the returned repsonse and return to caller as a hash
|
803
610
|
@gettaxhistory_xpath.each do |xpath|
|
804
611
|
if xpath.rstrip.length != 0
|
805
|
-
@return_data[xpath.gsub('/', '').chomp.gsub('"', '').to_sym] = @doc.search(xpath).map{ |n| n.text}
|
612
|
+
@return_data[xpath.gsub('/', '').chomp.gsub('"', '').to_sym] = @doc.search(xpath).map{ |n| n.text}
|
806
613
|
end
|
807
614
|
end
|
808
|
-
end
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
615
|
+
end
|
616
|
+
@log.puts @responsetime_hdr
|
617
|
+
@log.puts time
|
618
|
+
else
|
619
|
+
# Load the response into a Nokogiri object and remove namespaces
|
620
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
621
|
+
#Parse the returned repsonse and return to caller as a hash
|
622
|
+
@gettaxhistory_xpath.each do |xpath|
|
623
|
+
if xpath.rstrip.length != 0
|
624
|
+
@return_data[xpath.gsub('/', '').chomp.gsub('"', '').to_sym] = @doc.search(xpath).map{ |n| n.text}
|
625
|
+
end
|
626
|
+
end
|
627
|
+
end
|
628
|
+
#Return data to calling program
|
629
|
+
return @return_data
|
630
|
+
end
|
631
|
+
|
813
632
|
####################################################################################################
|
814
633
|
# reconciletaxhistory - Calls the Avatax ReconcileTaxHistory Service
|
815
634
|
####################################################################################################
|
816
|
-
def reconciletaxhistory(
|
817
|
-
lastdocid,
|
818
|
-
reconciled,
|
819
|
-
startdate,
|
820
|
-
enddate,
|
821
|
-
docstatus,
|
822
|
-
doctype,
|
823
|
-
lastdoccode,
|
824
|
-
pagesize,
|
825
|
-
debug)
|
635
|
+
def reconciletaxhistory(document)
|
826
636
|
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
@
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
end
|
845
|
-
|
846
|
-
#Clear return hash
|
847
|
-
@return_data.clear
|
848
|
-
|
849
|
-
# Make the call to the Avalara service
|
850
|
-
begin
|
851
|
-
# Call using debug
|
852
|
-
if debug
|
853
|
-
# Use Ruby built in Benchmark function to record response times
|
854
|
-
@log.puts "#{Time.now}: Calling ReconcileTaxHistory Service"
|
855
|
-
time = Benchmark.measure do
|
856
|
-
# Call ReconcileTaxHistory Service
|
857
|
-
@response = @client.call(:reconcile_tax_history, xml: @soap).to_s
|
858
|
-
end
|
859
|
-
@log.puts "Response times for ReconcileTaxHistory:"
|
860
|
-
@log.puts @responsetime_hdr
|
861
|
-
@log.puts time
|
862
|
-
else
|
863
|
-
# Call ReconcileTaxHistory Service
|
864
|
-
@response = @client.call(:reconcile_tax_history, xml: @soap).to_s
|
865
|
-
end
|
866
|
-
#Capture unexpected errors
|
867
|
-
rescue
|
868
|
-
@log.puts "#{Time.now}: Error calling ReconcileTaxHistory service ... check that your account name and password are correct."
|
869
|
-
end
|
870
|
-
|
871
|
-
#Parse the response
|
872
|
-
#Read in an array of XPATH pointers
|
873
|
-
@reconciletaxhistory_xpath = File.readlines(@def_locn + '/xpath_reconciletaxhistory.txt')
|
874
|
-
|
875
|
-
# Call using debug
|
876
|
-
if debug
|
637
|
+
#Extract data from document hash
|
638
|
+
xtract(document)
|
639
|
+
|
640
|
+
# Subsitute template place holders with real values
|
641
|
+
@soap = @template_reconciletaxhistory.result(binding)
|
642
|
+
if @debug
|
643
|
+
@log.puts "#{Time.now}: SOAP request created:"
|
644
|
+
@log.puts @soap
|
645
|
+
end
|
646
|
+
|
647
|
+
#Clear return hash
|
648
|
+
@return_data.clear
|
649
|
+
|
650
|
+
# Make the call to the Avalara service
|
651
|
+
begin
|
652
|
+
# Call using debug
|
653
|
+
if @debug
|
877
654
|
# Use Ruby built in Benchmark function to record response times
|
878
|
-
@log.puts "#{Time.now}:
|
655
|
+
@log.puts "#{Time.now}: Calling ReconcileTaxHistory Service"
|
879
656
|
time = Benchmark.measure do
|
880
|
-
|
881
|
-
@
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
end
|
887
|
-
end
|
888
|
-
end
|
889
|
-
@log.puts @responsetime_hdr
|
890
|
-
@log.puts time
|
657
|
+
# Call ReconcileTaxHistory Service
|
658
|
+
@response = @client.call(:reconcile_tax_history, xml: @soap).to_s
|
659
|
+
end
|
660
|
+
@log.puts "Response times for ReconcileTaxHistory:"
|
661
|
+
@log.puts @responsetime_hdr
|
662
|
+
@log.puts time
|
891
663
|
else
|
892
|
-
|
893
|
-
@
|
664
|
+
# Call ReconcileTaxHistory Service
|
665
|
+
@response = @client.call(:reconcile_tax_history, xml: @soap).to_s
|
666
|
+
end
|
667
|
+
#Capture unexpected errors
|
668
|
+
rescue
|
669
|
+
@log.puts "#{Time.now}: Error calling ReconcileTaxHistory service ... check that your account name and password are correct."
|
670
|
+
end
|
671
|
+
|
672
|
+
#Parse the response
|
673
|
+
#Read in an array of XPATH pointers
|
674
|
+
@reconciletaxhistory_xpath = File.readlines(@def_locn + '/xpath_reconciletaxhistory.txt')
|
675
|
+
|
676
|
+
# Call using debug
|
677
|
+
if @debug
|
678
|
+
# Use Ruby built in Benchmark function to record response times
|
679
|
+
@log.puts "#{Time.now}: Parsing the ReconcileTaxHistory response:"
|
680
|
+
time = Benchmark.measure do
|
681
|
+
# Load the response into a Nokogiri object and remove namespaces
|
682
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
894
683
|
#Parse the returned repsonse and return to caller as a hash
|
895
684
|
@reconciletaxhistory_xpath.each do |xpath|
|
896
685
|
if xpath.rstrip.length != 0
|
897
|
-
@return_data[xpath.gsub('/', '').chomp.gsub('"', '').to_sym] = @doc.search(xpath).map{ |n| n.text}
|
686
|
+
@return_data[xpath.gsub('/', '').chomp.gsub('"', '').to_sym] = @doc.search(xpath).map{ |n| n.text}
|
898
687
|
end
|
899
688
|
end
|
900
|
-
end
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
689
|
+
end
|
690
|
+
@log.puts @responsetime_hdr
|
691
|
+
@log.puts time
|
692
|
+
else
|
693
|
+
# Load the response into a Nokogiri object and remove namespaces
|
694
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
695
|
+
#Parse the returned repsonse and return to caller as a hash
|
696
|
+
@reconciletaxhistory_xpath.each do |xpath|
|
697
|
+
if xpath.rstrip.length != 0
|
698
|
+
@return_data[xpath.gsub('/', '').chomp.gsub('"', '').to_sym] = @doc.search(xpath).map{ |n| n.text}
|
699
|
+
end
|
700
|
+
end
|
701
|
+
end
|
702
|
+
#Return data to calling program
|
703
|
+
return @return_data
|
704
|
+
end
|
705
|
+
|
906
706
|
############################################################################################################
|
907
707
|
# isauthorized - Verifies connectivity to the web service and returns expiry information about the service.
|
908
708
|
############################################################################################################
|
909
709
|
def isauthorized(operation = nil)
|
910
710
|
#Read in the SOAP template
|
911
|
-
@operation = operation == nil ? "?" : operation
|
711
|
+
@operation = operation == nil ? "?" : operation
|
912
712
|
|
913
|
-
# Subsitute real vales for template place holders
|
713
|
+
# Subsitute real vales for template place holders
|
914
714
|
@soap = @template_isauthorized.result(binding)
|
915
|
-
|
916
|
-
|
715
|
+
|
716
|
+
#Clear return hash
|
917
717
|
@return_data.clear
|
918
|
-
|
718
|
+
|
919
719
|
# Make the call to the Avalara service
|
920
720
|
begin
|
921
721
|
@response = @client.call(:is_authorized, xml: @soap).to_s
|
922
|
-
|
923
|
-
|
722
|
+
rescue
|
723
|
+
@log.puts "#{Time.now}: Error calling IsAuthorized service ... check username and password"
|
924
724
|
end
|
925
|
-
|
725
|
+
|
926
726
|
# Load the response into a Nokogiri object and remove namespaces
|
927
|
-
@doc = Nokogiri::XML(@response).remove_namespaces!
|
928
|
-
|
929
|
-
#Read in an array of XPATH pointers
|
727
|
+
@doc = Nokogiri::XML(@response).remove_namespaces!
|
728
|
+
|
729
|
+
#Read in an array of XPATH pointers
|
930
730
|
@isauthorized_xpath = File.readlines(@def_locn + '/xpath_isauthorized.txt')
|
931
|
-
|
731
|
+
|
932
732
|
#Read each array element, extract the result returned by the service and place in a the @return_data hash
|
933
733
|
@isauthorized_xpath.each{|xpath| @return_data[xpath.gsub('/', '').chomp.to_sym] = @doc.xpath(xpath).text}
|
934
|
-
|
734
|
+
|
935
735
|
return @return_data
|
936
|
-
end
|
937
|
-
|
736
|
+
end
|
737
|
+
|
938
738
|
private
|
739
|
+
|
939
740
|
############################################################################################################
|
940
741
|
# valaddr - Validates an address using the Avatax Address Validation Service
|
941
742
|
############################################################################################################
|
@@ -943,13 +744,13 @@ module AvaTax
|
|
943
744
|
@x = 0
|
944
745
|
@addresses.each do |addresscode,line1,line2,line3,city,region,postalcode,country,taxregionid,latitude,longitude,textcase,coordinates,taxability|
|
945
746
|
@log.puts "#{Time.now}: Calling Address Validation Service for Address #{line1}, #{line2}, #{line3}, #{city}, #{region}, #{postalcode}, #{country}"
|
946
|
-
#Call the address validation service
|
747
|
+
#Call the address validation service
|
947
748
|
@val_addr = AddrService.validate(addresscode,line1,line2,line3,city,region,postalcode,country,taxregionid,latitude,longitude,textcase,coordinates,taxability)
|
948
|
-
#Update address details with the validated results
|
749
|
+
#Update address details with the validated results
|
949
750
|
@val_addr.each do
|
950
751
|
@addresses[@x][0] = @val_addr[:AddressCode]
|
951
752
|
@addresses[@x][1] = @val_addr[:Line1]
|
952
|
-
@addresses[@x][2] = @val_addr[:Line2]
|
753
|
+
@addresses[@x][2] = @val_addr[:Line2]
|
953
754
|
@addresses[@x][3] = @val_addr[:Line3]
|
954
755
|
@addresses[@x][4] = @val_addr[:City]
|
955
756
|
@addresses[@x][5] = @val_addr[:Region]
|
@@ -962,6 +763,112 @@ module AvaTax
|
|
962
763
|
@x += @x
|
963
764
|
end
|
964
765
|
end
|
766
|
+
|
767
|
+
############################################################################################################
|
768
|
+
# xtract - Extract data from document hash
|
769
|
+
############################################################################################################
|
770
|
+
def xtract(document)
|
771
|
+
|
772
|
+
companycode = document[:companycode]
|
773
|
+
doctype = document[:doctype]
|
774
|
+
doccode = document[:doccode]
|
775
|
+
docdate = document[:docdate]
|
776
|
+
docid = document[:docid]
|
777
|
+
salespersoncode = document[:salespersoncode]
|
778
|
+
customercode = document[:customercode]
|
779
|
+
customerusagetype = document[:customerusagetype]
|
780
|
+
discount = document[:discount]
|
781
|
+
purchaseorderno = document[:purchaseorderno]
|
782
|
+
exemptionno = document[:exemptionno]
|
783
|
+
origincode = document[:origincode]
|
784
|
+
destinationcode = document[:destinationcode]
|
785
|
+
addresses = document[:addresses]
|
786
|
+
lines = document[:lines]
|
787
|
+
detaillevel = document[:detaillevel]
|
788
|
+
referencecode = document[:referencecode]
|
789
|
+
hashcode = document[:hashcode]
|
790
|
+
locationcode = document[:locationcode]
|
791
|
+
commit = document[:commit]
|
792
|
+
batchcode = document[:batchcode]
|
793
|
+
taxoverridetype = document[:taxoverridetype]
|
794
|
+
taxamount = document[:taxamount]
|
795
|
+
taxdate = document[:taxdate]
|
796
|
+
reason = document[:reason]
|
797
|
+
currencycode = document[:currencycode]
|
798
|
+
servicemode = document[:servicemode]
|
799
|
+
paymentdate = document[:paymentdate]
|
800
|
+
exchangerate = document[:exchangerate]
|
801
|
+
exchangerateeffdate = document[:exchangerateeffdate]
|
802
|
+
poslanecode = document[:poslanecode]
|
803
|
+
businessidentificationno = document[:businessidentificationno]
|
804
|
+
adjustmentreason = document[:adjustmentreason]
|
805
|
+
adjustmentdescription = document[:adjustmentdescription]
|
806
|
+
totalamount = document[:totalamount]
|
807
|
+
totaltax = document[:totaltax]
|
808
|
+
newdoccode = document[:newdoccode]
|
809
|
+
lastdocid = document[:lastdocid]
|
810
|
+
reconciled = document[:reconciled]
|
811
|
+
startdate = document[:startdate]
|
812
|
+
enddate = document[:enddate]
|
813
|
+
docstatus = document[:docstatus]
|
814
|
+
lastdoccode = document[:lastdoccode]
|
815
|
+
cancelcode = document[:cancelcode]
|
816
|
+
pagesize = document[:pagesize]
|
817
|
+
debug = document[:debug]
|
818
|
+
validate = document[:validate]
|
819
|
+
|
820
|
+
#Set parms passed by user - If Nil then default else use passed value
|
821
|
+
@companycode = companycode == nil ? "" : companycode
|
822
|
+
@doctype = doctype == nil ? "" : doctype
|
823
|
+
@doccode = doccode == nil ? "" : doccode
|
824
|
+
@docdate = docdate == nil ? "" : docdate
|
825
|
+
@docid = docid == nil ? "" : docid
|
826
|
+
@salespersoncode = salespersoncode == nil ? "" : salespersoncode
|
827
|
+
@customercode = customercode == nil ? "" : customercode
|
828
|
+
@customerusagetype = customerusagetype == nil ? "" : customerusagetype
|
829
|
+
@discount = discount == nil ? "" : discount
|
830
|
+
@purchaseorderno = purchaseorderno == nil ? "" : purchaseorderno
|
831
|
+
@exemptionno = exemptionno == nil ? "" : exemptionno
|
832
|
+
@origincode = origincode == nil ? "" : origincode
|
833
|
+
@destinationcode = destinationcode == nil ? "" : destinationcode
|
834
|
+
@addresses = addresses == nil ? "" : addresses
|
835
|
+
@lines = lines == nil ? "" : lines
|
836
|
+
@detaillevel = detaillevel == nil ? "" : detaillevel
|
837
|
+
@referencecode = referencecode == nil ? "" : referencecode
|
838
|
+
@hashcode = hashcode == nil ? "" : hashcode
|
839
|
+
@locationcode = locationcode == nil ? "" : locationcode
|
840
|
+
@commit = commit == nil ? "" : commit
|
841
|
+
@batchcode = batchcode == nil ? "" : batchcode
|
842
|
+
@taxoverridetype = taxoverridetype == nil ? "" : taxoverridetype
|
843
|
+
@taxamount = taxamount == nil ? "" : taxamount
|
844
|
+
@taxdate = taxdate == nil ? "" : taxdate
|
845
|
+
@reason = reason == nil ? "" : reason
|
846
|
+
@currencycode = currencycode == nil ? "" : currencycode
|
847
|
+
@servicemode = servicemode == nil ? "" : servicemode
|
848
|
+
@paymentdate = paymentdate == nil ? "" : paymentdate
|
849
|
+
@exchangerate = exchangerate == nil ? "" : exchangerate
|
850
|
+
@exchangerateeffdate = exchangerateeffdate == nil ? "" : exchangerateeffdate
|
851
|
+
@poslanecode = poslanecode == nil ? "" : poslanecode
|
852
|
+
@businessidentificationno = businessidentificationno == nil ? "" : businessidentificationno
|
853
|
+
@validate = validate == nil ? false : validate
|
854
|
+
@adjustmentreason = adjustmentreason == nil ? "" : adjustmentreason
|
855
|
+
@adjustmentdescription = adjustmentdescription == nil ? "" : adjustmentdescription
|
856
|
+
@totalamount = totalamount == nil ? "" : totalamount
|
857
|
+
@totaltax = totaltax == nil ? "" : totaltax
|
858
|
+
@newdoccode = newdoccode == nil ? "" : newdoccode
|
859
|
+
@cancelcode = cancelcode == nil ? "" : cancelcode
|
860
|
+
@detaillevel = detaillevel == nil ? "" : detaillevel
|
861
|
+
@lastdocid = lastdocid == nil ? "" : lastdocid
|
862
|
+
@reconciled = reconciled == nil ? "" : reconciled
|
863
|
+
@startdate = startdate == nil ? "" : startdate
|
864
|
+
@enddate = enddate == nil ? "" : enddate
|
865
|
+
@docstatus = docstatus == nil ? "" : docstatus
|
866
|
+
@lastdoccode = lastdoccode == nil ? "" : lastdoccode
|
867
|
+
@pagesize = pagesize == nil ? "" : pagesize
|
868
|
+
@debug = debug == nil ? false : debug
|
869
|
+
@message = ""
|
870
|
+
|
871
|
+
end
|
965
872
|
|
966
873
|
end
|
967
|
-
|
874
|
+
end
|