Avatax_TaxService 1.0.14 → 2.0.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/samples/PingTest.rb CHANGED
@@ -1,26 +1,26 @@
1
- require_relative '../Avatax_TaxService/lib/avatax_taxservice.rb'
2
- #require 'Avatax_TaxService'
3
-
4
- accountNumber = "1234567890"
5
- licenseKey = "A1B2C3D4E5F6G7H8"
6
- useProductionURL = false
7
-
8
- # Header Level Parameters
9
- taxSvc = AvaTax::TaxService.new(
10
-
11
- # Required Header Parameters
12
- :username => accountNumber,
13
- :password => licenseKey,
14
- :use_production_url => useProductionURL,
15
- :clientname => "AvaTaxSample",
16
-
17
- # Optional Header Parameters
18
- :name => "Development")
19
-
20
- pingResult = taxSvc.ping
21
-
22
- #Display the result
23
- puts "PingTest ResultCode: " + pingResult[:result_code]
24
- if pingResult[:result_code] != "Success"
25
- pingResult[:messages].each { |message| puts message[:details] }
1
+ require_relative '../lib/avatax_taxservice.rb'
2
+ #require 'Avatax_TaxService'
3
+
4
+ accountNumber = "1234567890"
5
+ licenseKey = "A1B2C3D4E5F6G7H8"
6
+ serviceURL = "https://development.avalara.net"
7
+
8
+ # Header Level Parameters
9
+ taxSvc = AvaTax::TaxService.new(
10
+
11
+ # Required Header Parameters
12
+ :username => accountNumber,
13
+ :password => licenseKey,
14
+ :service_url => serviceURL,
15
+ :clientname => "AvaTaxSample",
16
+
17
+ # Optional Header Parameters
18
+ :name => "Development")
19
+
20
+ pingResult = taxSvc.ping
21
+
22
+ #Display the result
23
+ puts "PingTest ResultCode: " + pingResult[:result_code]
24
+ if pingResult[:result_code] != "Success"
25
+ pingResult[:messages].each { |message| puts message[:details] }
26
26
  end
@@ -1,40 +1,40 @@
1
- require_relative '../Avatax_TaxService/lib/avatax_taxservice.rb'
2
- #require 'Avatax_TaxService'
3
-
4
- accountNumber = "1234567890"
5
- licenseKey = "A1B2C3D4E5F6G7H8"
6
- useProductionURL = false
7
-
8
- # Header Level Parameters
9
- taxSvc = AvaTax::TaxService.new(
10
-
11
- # Required Header Parameters
12
- :username => accountNumber,
13
- :password => licenseKey,
14
- :use_production_url => useProductionURL,
15
- :clientname => "AvaTaxSample",
16
-
17
- # Optional Header Parameters
18
- :name => "Development")
19
-
20
- postTaxRequest = {
21
- # Required Request Parameters
22
- :companycode => "APITrialCompany",
23
- :doctype => "SalesInvoice",
24
- :doccode => "INV001",
25
- :commit => "false",
26
- :docdate => "2014-01-01",
27
- :totaltax => "34.07",
28
- :totalamount => "170",
29
-
30
- # Optional Request Parameters
31
- :newdoccode => "INV001-1"
32
- }
33
-
34
- postTaxResult = taxSvc.posttax(postTaxRequest)
35
-
36
- # Print Results
37
- puts "PostTaxTest ResultCode: " + postTaxResult[:result_code]
38
- if postTaxResult[:result_code] != "Success"
39
- postTaxResult[:messages].each { |message| puts message[:details] }
1
+ require_relative '../lib/avatax_taxservice.rb'
2
+ #require 'Avatax_TaxService'
3
+
4
+ accountNumber = "1234567890"
5
+ licenseKey = "A1B2C3D4E5F6G7H8"
6
+ serviceURL = "https://development.avalara.net"
7
+
8
+ # Header Level Parameters
9
+ taxSvc = AvaTax::TaxService.new(
10
+
11
+ # Required Header Parameters
12
+ :username => accountNumber,
13
+ :password => licenseKey,
14
+ :service_url => serviceURL,
15
+ :clientname => "AvaTaxSample",
16
+
17
+ # Optional Header Parameters
18
+ :name => "Development")
19
+
20
+ postTaxRequest = {
21
+ # Required Request Parameters
22
+ :companycode => "APITrialCompany",
23
+ :doctype => "SalesInvoice",
24
+ :doccode => "INV001",
25
+ :commit => "false",
26
+ :docdate => "2014-01-01",
27
+ :totaltax => "34.07",
28
+ :totalamount => "170",
29
+
30
+ # Optional Request Parameters
31
+ :newdoccode => "INV001-1"
32
+ }
33
+
34
+ postTaxResult = taxSvc.posttax(postTaxRequest)
35
+
36
+ # Print Results
37
+ puts "PostTaxTest ResultCode: " + postTaxResult[:result_code]
38
+ if postTaxResult[:result_code] != "Success"
39
+ postTaxResult[:messages].each { |message| puts message[:details] }
40
40
  end
@@ -1,237 +1,237 @@
1
- require "spec_helper"
2
-
3
- describe "AdjustTax" do
4
- before :each do
5
- credentials = YAML::load(File.open('credentials.yml'))
6
- @creds = {:username => credentials['username'],
7
- :password => credentials['password'],
8
- :clientname => credentials['clientname'],
9
- :use_production_url => credentials['production']}
10
- @svc = AvaTax::TaxService.new(@creds)
11
- @get_tax_request = {
12
- :doctype => "SalesInvoice",
13
- :commit => false,
14
- :detaillevel => "Tax",
15
- :docdate=>DateTime.now.strftime("%Y-%m-%d"),
16
- :customercode => "CUST123",
17
- :origincode => "456",
18
- :destinationcode => "456",
19
- :addresses=>[{
20
- :addresscode=>"456",
21
- :line1=>"7070 West Arlington Drive",
22
- :postalcode=>"80123",
23
- :country=>"US",
24
- }],
25
- :lines=>[{
26
- :no=>"1",
27
- :itemcode=>"Canoe",
28
- :qty=>"1",
29
- :amount=>"300.43",
30
- :description=>"Blue canoe",
31
- }]}
32
- @get_tax_result = @svc.gettax(@get_tax_request)
33
- @request_required = {
34
- :adjustmentreason => "5",
35
- :adjustmentdescription => "Testing Adjustments",
36
- :doccode => @get_tax_result[:doc_code],
37
- :doctype => "SalesInvoice",
38
- :detaillevel => "Tax",
39
- :docdate=>DateTime.now.strftime("%Y-%m-%d"),
40
- :customercode => "CUST123",
41
- :origincode => "456",
42
- :destinationcode => "456",
43
- :addresses=>[{
44
- :addresscode=>"456",
45
- :line1=>"7070 West Arlington Drive",
46
- :postalcode=>"80123",
47
- :country=>"US",
48
- }],
49
- :lines=>[{
50
- :no=>"1",
51
- :itemcode=>"Canoe",
52
- :qty=>"1",
53
- :amount=>"300.43",
54
- :description=>"Blue canoe",
55
- }]
56
-
57
- }
58
- @request_optional = {
59
- :companycode => @get_tax_result[:company_code],
60
- :salespersoncode => "Bill Sales",
61
- :customerusagetype => "L",
62
- :discount => "10",
63
- :purchaseorderno => "PO9823",
64
- :exemptionno => "23423",
65
- :referencecode => "ref1",
66
- :locationcode => "001",
67
- :commit => "false",
68
- :batchcode => "",
69
- :taxoverridetype => "TaxDate",
70
- :taxamount => "0",
71
- :taxdate => "1999-01-01",
72
- :reason => "Override",
73
- :currencycode => "USD",
74
- :servicemode => "Remote",
75
- :paymentdate => DateTime.now.strftime("%Y-%m-%d"),
76
- :exchangerate => "0",
77
- :exchangerateeffdate => "1900-01-01",
78
- :poslanecode => "1",
79
- :businessidentificationno => "2342",
80
- :debug => false,
81
- :hashcode => "0",
82
- :taxoverridetype=>"None",
83
- :taxamount=>".0000",
84
- :taxdate=>"1900-01-01",
85
- :reason=>"",
86
- :addresses=>[{
87
- :addresscode=>"123",
88
- :line1=>"100 ravine lane",
89
- :line2=>"Suite 21",
90
- :city=>"Bainbridge Island",
91
- :region=>"WA",
92
- :postalcode=>"98110",
93
- :country=>"US",
94
- :taxregionid=>"0",
95
- :latitude=>"",
96
- :longitude=>""
97
- }, {
98
- :addresscode=>"456",
99
- :line1=> "Attn. Accounting",
100
- :line3=>"7070 West Arlington Drive",
101
- :postalcode=>"80123",
102
- :country=>"US",
103
- :taxregionid=>"0"
104
- }],
105
- :lines=>[{
106
- :no=>"1",
107
- :itemcode=>"Canoe",
108
- :qty=>"1",
109
- :amount=>"300.43",
110
- :discounted=>"false",
111
- :ref1=>"ref1",
112
- :ref2=>"ref2",
113
- :description=>"Blue canoe",
114
- :taxoverridetypeline=>"TaxAmount",
115
- :taxamountline=>"10",
116
- :taxdateline=>"1900-01-01",
117
- :reasonline=>"Tax credit",
118
- :taxincluded=>"false"
119
- }, {
120
- :no=>"2",
121
- :itemcode=>"Rowing boat",
122
- :qty=>"1",
123
- :destinationcodeline=>"123",
124
- :amount=>"800.12",
125
- :discounted=>"false",
126
- :ref1=>"ref3",
127
- :ref2=>"ref4",
128
- :description=>"Red rowing boat",
129
- :taxoverridetype=>"None",
130
- :taxamount=>"0",
131
- :taxdate=>"1900-01-01",
132
- :taxincluded=>"true"
133
- }]
134
- }
135
- end
136
-
137
- describe "returns a meaningful" do
138
- it "error when URL is missing" do
139
- @creds[:use_production_url] = nil
140
- @service = AvaTax::TaxService.new(@creds)
141
- @service.adjusttax(@request_required)[:result_code].should eql "Success"
142
- end
143
- it "success when URL is specified" do
144
- @creds[:use_production_url] = false
145
- @service = AvaTax::TaxService.new(@creds)
146
- @service.adjusttax(@request_required)[:result_code].should eql "Success"
147
- end
148
- it "error when username is missing" do
149
- @creds[:username] = nil
150
- @service = AvaTax::TaxService.new(@creds)
151
- @service.adjusttax(@request_required)[:result_code].should eql "Error"
152
- end
153
- it "error when password is omitted" do
154
- @creds[:password] = nil
155
- @service = AvaTax::TaxService.new(@creds)
156
- @service.adjusttax(@request_required)[:result_code].should eql "Error"
157
- end
158
- it "success when clientname is omitted" do
159
- @creds[:clientname] = nil
160
- @service = AvaTax::TaxService.new(@creds)
161
- @service.adjusttax(@request_required)[:result_code].should eql "Success"
162
- end
163
- end
164
-
165
- describe "has consistent formatting for" do
166
- it "server-side errors" do
167
- @creds[:password] = nil
168
- @service = AvaTax::TaxService.new(@creds)
169
- @result = @service.adjusttax(@request_required)
170
- @result[:result_code].should eql "Error" and
171
- @result[:messages].kind_of?(Array).should eql true and
172
- @result[:messages][0].should include(:details => "The user or account could not be authenticated.")
173
- end
174
- it "successful results" do
175
- @service = AvaTax::TaxService.new(@creds)
176
- @result = @service.adjusttax(@request_required)
177
- @result[:result_code].should eql "Success" and @result[:transaction_id].should_not be_nil
178
- end
179
- end
180
- describe "requests with" do
181
- it "missing required parameters fail" do
182
- @service = AvaTax::TaxService.new(@creds)
183
- @result = @service.adjusttax(@request_optional)
184
- @result[:result_code].should eql "Error"
185
- end
186
- it "invalid parameters ignore them" do
187
- @service = AvaTax::TaxService.new(@creds)
188
- @request_required[:bogus] = "data"
189
- @result = @service.adjusttax(@request_required)
190
- @result[:result_code].should eql "Success"
191
- end
192
- it "missing optional parameters succeed" do
193
- @service = AvaTax::TaxService.new(@creds)
194
- @result = @service.adjusttax(@request_required)
195
- @result[:result_code].should eql "Success"
196
- end
197
- it "all parameters succeed" do
198
- @service = AvaTax::TaxService.new(@creds)
199
- @result = @service.adjusttax(@request_required.merge(@request_optional))
200
- @result[:result_code].should eql "Success"
201
- end
202
- end
203
- describe "workflow" do
204
- it "should adjust committed documents" do
205
- @request_required[:customercode] = "NewCust"
206
- @generic_request = {
207
- :doccode => @request_required[:doccode],
208
- :companycode => @request_required[:companycode],
209
- :doctype => @request_required[:doctype],
210
- :commit => true
211
- }
212
- @post_result = @svc.posttax(@generic_request)
213
- @result = @svc.adjusttax(@request_required)
214
- @history_result = @svc.gettaxhistory(@generic_request)
215
- @result[:result_code].should eql "Success" and
216
- @history_result[:get_tax_request][:customer_code].should eql @request_required[:customercode] and
217
- @history_result[:get_tax_result][:doc_status].should eql "Committed"
218
- end
219
- it "should adjust uncommitted documents" do
220
- @request_required[:customercode] = "NewCust"
221
- @generic_request = {
222
- :doccode => @request_required[:doccode],
223
- :companycode => @request_required[:companycode],
224
- :doctype => @request_required[:doctype],
225
- :commit => false
226
- }
227
- @post_result = @svc.posttax(@generic_request)
228
- @result = @svc.adjusttax(@request_required)
229
- @history_result = @svc.gettaxhistory(@generic_request)
230
- @result[:result_code].should eql "Success" and
231
- @history_result[:get_tax_request][:customer_code].should eql @request_required[:customercode] and
232
- @history_result[:get_tax_result][:doc_status].should eql "Saved"
233
- end
234
-
235
- end
236
-
1
+ require "spec_helper"
2
+
3
+ describe "AdjustTax" do
4
+ before :each do
5
+ credentials = YAML::load(File.open('credentials.yml'))
6
+ @creds = {:username => credentials['username'],
7
+ :password => credentials['password'],
8
+ :clientname => credentials['clientname'],
9
+ :use_production_url => credentials['production']}
10
+ @svc = AvaTax::TaxService.new(@creds)
11
+ @get_tax_request = {
12
+ :doctype => "SalesInvoice",
13
+ :commit => false,
14
+ :detaillevel => "Tax",
15
+ :docdate=>DateTime.now.strftime("%Y-%m-%d"),
16
+ :customercode => "CUST123",
17
+ :origincode => "456",
18
+ :destinationcode => "456",
19
+ :addresses=>[{
20
+ :addresscode=>"456",
21
+ :line1=>"7070 West Arlington Drive",
22
+ :postalcode=>"80123",
23
+ :country=>"US",
24
+ }],
25
+ :lines=>[{
26
+ :no=>"1",
27
+ :itemcode=>"Canoe",
28
+ :qty=>"1",
29
+ :amount=>"300.43",
30
+ :description=>"Blue canoe",
31
+ }]}
32
+ @get_tax_result = @svc.gettax(@get_tax_request)
33
+ @request_required = {
34
+ :adjustmentreason => "5",
35
+ :adjustmentdescription => "Testing Adjustments",
36
+ :doccode => @get_tax_result[:doc_code],
37
+ :doctype => "SalesInvoice",
38
+ :detaillevel => "Tax",
39
+ :docdate=>DateTime.now.strftime("%Y-%m-%d"),
40
+ :customercode => "CUST123",
41
+ :origincode => "456",
42
+ :destinationcode => "456",
43
+ :addresses=>[{
44
+ :addresscode=>"456",
45
+ :line1=>"7070 West Arlington Drive",
46
+ :postalcode=>"80123",
47
+ :country=>"US",
48
+ }],
49
+ :lines=>[{
50
+ :no=>"1",
51
+ :itemcode=>"Canoe",
52
+ :qty=>"1",
53
+ :amount=>"300.43",
54
+ :description=>"Blue canoe",
55
+ }]
56
+
57
+ }
58
+ @request_optional = {
59
+ :companycode => @get_tax_result[:company_code],
60
+ :salespersoncode => "Bill Sales",
61
+ :customerusagetype => "L",
62
+ :discount => "10",
63
+ :purchaseorderno => "PO9823",
64
+ :exemptionno => "23423",
65
+ :referencecode => "ref1",
66
+ :locationcode => "001",
67
+ :commit => "false",
68
+ :batchcode => "",
69
+ :taxoverridetype => "TaxDate",
70
+ :taxamount => "0",
71
+ :taxdate => "1999-01-01",
72
+ :reason => "Override",
73
+ :currencycode => "USD",
74
+ :servicemode => "Remote",
75
+ :paymentdate => DateTime.now.strftime("%Y-%m-%d"),
76
+ :exchangerate => "0",
77
+ :exchangerateeffdate => "1900-01-01",
78
+ :poslanecode => "1",
79
+ :businessidentificationno => "2342",
80
+ :debug => false,
81
+ :hashcode => "0",
82
+ :taxoverridetype=>"None",
83
+ :taxamount=>".0000",
84
+ :taxdate=>"1900-01-01",
85
+ :reason=>"",
86
+ :addresses=>[{
87
+ :addresscode=>"123",
88
+ :line1=>"100 ravine lane",
89
+ :line2=>"Suite 21",
90
+ :city=>"Bainbridge Island",
91
+ :region=>"WA",
92
+ :postalcode=>"98110",
93
+ :country=>"US",
94
+ :taxregionid=>"0",
95
+ :latitude=>"",
96
+ :longitude=>""
97
+ }, {
98
+ :addresscode=>"456",
99
+ :line1=> "Attn. Accounting",
100
+ :line3=>"7070 West Arlington Drive",
101
+ :postalcode=>"80123",
102
+ :country=>"US",
103
+ :taxregionid=>"0"
104
+ }],
105
+ :lines=>[{
106
+ :no=>"1",
107
+ :itemcode=>"Canoe",
108
+ :qty=>"1",
109
+ :amount=>"300.43",
110
+ :discounted=>"false",
111
+ :ref1=>"ref1",
112
+ :ref2=>"ref2",
113
+ :description=>"Blue canoe",
114
+ :taxoverridetypeline=>"TaxAmount",
115
+ :taxamountline=>"10",
116
+ :taxdateline=>"1900-01-01",
117
+ :reasonline=>"Tax credit",
118
+ :taxincluded=>"false"
119
+ }, {
120
+ :no=>"2",
121
+ :itemcode=>"Rowing boat",
122
+ :qty=>"1",
123
+ :destinationcodeline=>"123",
124
+ :amount=>"800.12",
125
+ :discounted=>"false",
126
+ :ref1=>"ref3",
127
+ :ref2=>"ref4",
128
+ :description=>"Red rowing boat",
129
+ :taxoverridetype=>"None",
130
+ :taxamount=>"0",
131
+ :taxdate=>"1900-01-01",
132
+ :taxincluded=>"true"
133
+ }]
134
+ }
135
+ end
136
+
137
+ describe "returns a meaningful" do
138
+ it "error when URL is missing" do
139
+ @creds[:use_production_url] = nil
140
+ @service = AvaTax::TaxService.new(@creds)
141
+ @service.adjusttax(@request_required)[:result_code].should eql "Success"
142
+ end
143
+ it "success when URL is specified" do
144
+ @creds[:use_production_url] = false
145
+ @service = AvaTax::TaxService.new(@creds)
146
+ @service.adjusttax(@request_required)[:result_code].should eql "Success"
147
+ end
148
+ it "error when username is missing" do
149
+ @creds[:username] = nil
150
+ @service = AvaTax::TaxService.new(@creds)
151
+ @service.adjusttax(@request_required)[:result_code].should eql "Error"
152
+ end
153
+ it "error when password is omitted" do
154
+ @creds[:password] = nil
155
+ @service = AvaTax::TaxService.new(@creds)
156
+ @service.adjusttax(@request_required)[:result_code].should eql "Error"
157
+ end
158
+ it "success when clientname is omitted" do
159
+ @creds[:clientname] = nil
160
+ @service = AvaTax::TaxService.new(@creds)
161
+ @service.adjusttax(@request_required)[:result_code].should eql "Success"
162
+ end
163
+ end
164
+
165
+ describe "has consistent formatting for" do
166
+ it "server-side errors" do
167
+ @creds[:password] = nil
168
+ @service = AvaTax::TaxService.new(@creds)
169
+ @result = @service.adjusttax(@request_required)
170
+ @result[:result_code].should eql "Error" and
171
+ @result[:messages].kind_of?(Array).should eql true and
172
+ @result[:messages][0].should include(:details => "The user or account could not be authenticated.")
173
+ end
174
+ it "successful results" do
175
+ @service = AvaTax::TaxService.new(@creds)
176
+ @result = @service.adjusttax(@request_required)
177
+ @result[:result_code].should eql "Success" and @result[:transaction_id].should_not be_nil
178
+ end
179
+ end
180
+ describe "requests with" do
181
+ it "missing required parameters fail" do
182
+ @service = AvaTax::TaxService.new(@creds)
183
+ @result = @service.adjusttax(@request_optional)
184
+ @result[:result_code].should eql "Error"
185
+ end
186
+ it "invalid parameters ignore them" do
187
+ @service = AvaTax::TaxService.new(@creds)
188
+ @request_required[:bogus] = "data"
189
+ @result = @service.adjusttax(@request_required)
190
+ @result[:result_code].should eql "Success"
191
+ end
192
+ it "missing optional parameters succeed" do
193
+ @service = AvaTax::TaxService.new(@creds)
194
+ @result = @service.adjusttax(@request_required)
195
+ @result[:result_code].should eql "Success"
196
+ end
197
+ it "all parameters succeed" do
198
+ @service = AvaTax::TaxService.new(@creds)
199
+ @result = @service.adjusttax(@request_required.merge(@request_optional))
200
+ @result[:result_code].should eql "Success"
201
+ end
202
+ end
203
+ describe "workflow" do
204
+ it "should adjust committed documents" do
205
+ @request_required[:customercode] = "NewCust"
206
+ @generic_request = {
207
+ :doccode => @request_required[:doccode],
208
+ :companycode => @request_required[:companycode],
209
+ :doctype => @request_required[:doctype],
210
+ :commit => true
211
+ }
212
+ @post_result = @svc.posttax(@generic_request)
213
+ @result = @svc.adjusttax(@request_required)
214
+ @history_result = @svc.gettaxhistory(@generic_request)
215
+ @result[:result_code].should eql "Success" and
216
+ @history_result[:get_tax_request][:customer_code].should eql @request_required[:customercode] and
217
+ @history_result[:get_tax_result][:doc_status].should eql "Committed"
218
+ end
219
+ it "should adjust uncommitted documents" do
220
+ @request_required[:customercode] = "NewCust"
221
+ @generic_request = {
222
+ :doccode => @request_required[:doccode],
223
+ :companycode => @request_required[:companycode],
224
+ :doctype => @request_required[:doctype],
225
+ :commit => false
226
+ }
227
+ @post_result = @svc.posttax(@generic_request)
228
+ @result = @svc.adjusttax(@request_required)
229
+ @history_result = @svc.gettaxhistory(@generic_request)
230
+ @result[:result_code].should eql "Success" and
231
+ @history_result[:get_tax_request][:customer_code].should eql @request_required[:customercode] and
232
+ @history_result[:get_tax_result][:doc_status].should eql "Saved"
233
+ end
234
+
235
+ end
236
+
237
237
  end