solidus_avatax_certified 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (19) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +6 -12
  3. data/Gemfile +5 -7
  4. data/app/models/solidus_avatax_certified/line.rb +4 -3
  5. data/app/models/solidus_avatax_certified/order_adjuster.rb +12 -0
  6. data/app/models/spree/calculator/avalara_transaction.rb +5 -2
  7. data/config/initializers/spree.rb +1 -0
  8. data/lib/solidus_avatax_certified/version.rb +1 -1
  9. data/solidus_avatax_certified.gemspec +1 -1
  10. data/spec/features/checkout_spec.rb +8 -8
  11. data/spec/models/solidus_avatax_certified/order_adjuster_spec.rb +36 -0
  12. data/spec/models/spree/calculator/avalara_transaction_spec.rb +4 -5
  13. data/spec/vcr/Certification/Exempt_sales_should_be_reflected_in_the_test_data_through_use_of_ExemptionNo_or_CustomerUsageType_/does_not_add_additional_tax.yml +39 -174
  14. data/spec/vcr/Checkout/payment/with_promotion/tax_not_included/has_adjusted_tax_amount_after_promotion_applied.yml +88 -18
  15. data/spec/vcr/SolidusAvataxCertified_OrderAdjuster/_adjust_/at_after_payment_state/updates_the_adjustments.yml +141 -0
  16. data/spec/vcr/Spree_Calculator_AvalaraTransaction/_compute/when_computing_a_line_item/when_tax_is_not_included_in_price/when_the_line_item_is_discounted/should_be_equal_to_the_items_pre-tax_total_rate.yml +43 -176
  17. data/spec/vcr/Spree_Calculator_AvalaraTransaction/_compute/when_computing_a_line_item/when_tax_is_not_included_in_price/when_the_order_is_discounted/should_be_equal_to_the_items_pre-tax_total_rate.yml +43 -107
  18. data/spec/vcr/Spree_Refund/full_refund/returns_correct_tax_calculations.yml +3 -67
  19. metadata +10 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 88d7c785ac3c5a75d216e1ceb29f7a541579be6c
4
- data.tar.gz: 6d5b6363588951eeef89cbe13a747ee4c4ae29c2
3
+ metadata.gz: 2ba6379569acf61b06167ab217fbb1eca5e472c0
4
+ data.tar.gz: b32a50a24a6fad7b76e36f9de281f602a27e7463
5
5
  SHA512:
6
- metadata.gz: 4831e98ede6e7d067b7d889184553261726f04faeac142133c7b53cddd19f46d1179b2ee680baf93dafbcbfd633c5edab8bcca6fc25104c96480d8d12b90067d
7
- data.tar.gz: f4a2e6f51878e652053d1c2bc4f951e592a441cdf7f85cff13409a4d28403154b395304d3625991396509bf57410db61e6249612893b538bf4f5085eb7fa5308
6
+ metadata.gz: bc1fd526badf9ece163b015df8368f862094da9f505e107e1ea37e731e914f2780d0b65fad326e59b48631da32c44a35d11935b8ffef3b287c025fbebf30cd8d
7
+ data.tar.gz: d638aa46c762ad2b656f785d3df01f1068ef090bf3bbe7d6b213820ce27c162ef538fe8566c1fe2b305e6e0dc0f29fb0b657174cdf52b770e8a0cf35ee9dc228
data/.travis.yml CHANGED
@@ -14,15 +14,9 @@ script:
14
14
  - bundle exec rspec
15
15
  env:
16
16
  matrix:
17
- - SOLIDUS_BRANCH=v1.0 DB=postgres
18
- - SOLIDUS_BRANCH=v1.1 DB=postgres
19
- - SOLIDUS_BRANCH=v1.2 DB=postgres
20
- - SOLIDUS_BRANCH=v1.3 DB=postgres
21
- - SOLIDUS_BRANCH=v1.4 DB=postgres
22
- - SOLIDUS_BRANCH=v2.0 DB=postgres
23
- - SOLIDUS_BRANCH=v1.0 DB=mysql
24
- - SOLIDUS_BRANCH=v1.1 DB=mysql
25
- - SOLIDUS_BRANCH=v1.2 DB=mysql
26
- - SOLIDUS_BRANCH=v1.3 DB=mysql
27
- - SOLIDUS_BRANCH=v1.4 DB=mysql
28
- - SOLIDUS_BRANCH=v2.0 DB=mysql
17
+ - SOLIDUS_BRANCH=v2.1 DB=postgres
18
+ - SOLIDUS_BRANCH=v2.2 DB=postgres
19
+ - SOLIDUS_BRANCH=master DB=postgres
20
+ - SOLIDUS_BRANCH=v2.1 DB=mysql
21
+ - SOLIDUS_BRANCH=v2.2 DB=mysql
22
+ - SOLIDUS_BRANCH=master DB=mysql
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- branch = ENV.fetch('SOLIDUS_BRANCH', 'v2.0')
3
+ branch = 'v2.1'
4
4
  gem "solidus", github: "solidusio/solidus", branch: branch
5
5
  gem "solidus_auth_devise", github: "solidusio/solidus_auth_devise"
6
6
 
@@ -8,12 +8,10 @@ group :test, :development do
8
8
  gem "pry"
9
9
  end
10
10
 
11
- if branch == 'master' || branch >= "v2.0"
12
- gem "rails-controller-testing", group: :test
13
- else
14
- gem "rails", '~> 4.2.7' # workaround for bundler resolution issue
15
- gem "rails_test_params_backport", group: :test
16
- end
11
+ gem "rails-controller-testing", group: :test
12
+
13
+ gem 'pg'
14
+ gem 'mysql2'
17
15
 
18
16
  gem 'pg'
19
17
  gem 'mysql2'
@@ -1,6 +1,9 @@
1
+ require 'spree/tax/tax_helpers'
2
+
1
3
  module SolidusAvataxCertified
2
4
  class Line
3
5
  attr_reader :order, :lines
6
+ include Spree::Tax::TaxHelpers
4
7
 
5
8
  def initialize(order, invoice_type, refund = nil)
6
9
  @order = order
@@ -132,9 +135,7 @@ module SolidusAvataxCertified
132
135
  end
133
136
 
134
137
  def tax_included_in_price?(item)
135
- # Need better error handling
136
- # if no tax rates, raise error tax rates needs to be set up
137
- order.tax_zone.tax_rates.where(tax_category: item.tax_category).try(:first).included_in_price
138
+ rates_for_item(item).try(:first).included_in_price || false
138
139
  end
139
140
  end
140
141
  end
@@ -0,0 +1,12 @@
1
+ module SolidusAvataxCertified
2
+ class OrderAdjuster < Spree::Tax::OrderAdjuster
3
+
4
+ def adjust!
5
+ if %w(cart address delivery).include?(order.state)
6
+ return (order.line_items + order.shipments)
7
+ end
8
+
9
+ super
10
+ end
11
+ end
12
+ end
@@ -36,11 +36,14 @@ module Spree
36
36
  end
37
37
  end
38
38
 
39
+ # Tax Adjustments are not created or calculated until on payment page.
40
+ # 1. We do not want to calculate tax until address is filled in and shipment type has been selected.
41
+ # 2. VAT tax adjustments set included on adjustment creation, if the tax initially returns 0, included is set to false causing incorrect calculations.
39
42
  def can_calculate_tax?(order)
40
- address = order.ship_address
43
+ address = order.tax_address
41
44
 
42
45
  return false unless Spree::Avatax::Config.tax_calculation
43
- return false if %w(address cart).include?(order.state)
46
+ return false if %w(address cart delivery).include?(order.state)
44
47
  return false if address.nil?
45
48
  return false unless calculable.zone.include?(address)
46
49
 
@@ -1,3 +1,4 @@
1
1
  Spree.user_class = "Spree::User"
2
2
  Spree::PermittedAttributes.user_attributes.concat([:avalara_entity_use_code_id, :exemption_number, :vat_id])
3
3
  Rails.application.config.spree.calculators.tax_rates << Spree::Calculator::AvalaraTransaction
4
+ Spree::Config.tax_adjuster_class = SolidusAvataxCertified::OrderAdjuster
@@ -1,3 +1,3 @@
1
1
  module SolidusAvataxCertified
2
- VERSION = '1.1.0'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.require_path = "lib"
22
22
  s.requirements << "none"
23
23
 
24
- s.add_dependency "solidus_core", [">= 1.0.0", "< 2.1.0"]
24
+ s.add_dependency "solidus_core", [">= 2.1.0", "< 2.3.0"]
25
25
  s.add_dependency "json", "~> 1.8"
26
26
  s.add_dependency "addressable", "~> 2.4"
27
27
  s.add_dependency "rest-client", "~> 1.7"
@@ -1,8 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Checkout", :vcr, type: :feature, inaccessible: true do
3
+ describe "Checkout", :vcr, type: :feature, inaccessible: true, js: true do
4
4
  let(:product) { Spree::Product.first }
5
- let!(:order) { create(:avalara_order, state: 'cart', shipment_cost: 10) }
5
+ let(:included_in_price) { false }
6
+ let!(:order) { create(:avalara_order, state: 'cart', shipment_cost: 10, tax_included: included_in_price) }
6
7
  let!(:user) { order.user }
7
8
 
8
9
  before do
@@ -58,6 +59,7 @@ describe "Checkout", :vcr, type: :feature, inaccessible: true do
58
59
  end
59
60
 
60
61
  context 'tax included' do
62
+ let(:included_in_price) { true }
61
63
  before do
62
64
  Spree::TaxRate.update_all(included_in_price: true)
63
65
  order.reload
@@ -101,16 +103,14 @@ describe "Checkout", :vcr, type: :feature, inaccessible: true do
101
103
  end
102
104
 
103
105
  context 'complete order', js: true do
104
- let(:payment_method) { create(:credit_card_payment_method) }
105
- let!(:credit_card) do
106
- create(:credit_card, user_id: order.user.id, payment_method: payment_method, gateway_customer_profile_id: "BGS-WEFWF")
107
- end
106
+ let!(:payment_method) { create(:check_payment_method) }
107
+
108
108
  before do
109
109
  allow(order).to receive_messages(:available_payment_methods => [ payment_method ])
110
110
  visit_delivery
111
111
  click_button 'Save and Continue'
112
- click_button "Save and Continue"
113
- click_button "Place Order"
112
+ click_button 'Save and Continue'
113
+ click_button 'Place Order'
114
114
  end
115
115
 
116
116
  it 'has tax and shipping tax adjustments on page' do
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe SolidusAvataxCertified::OrderAdjuster, :vcr do
4
+ subject(:adjuster) { described_class.new(order) }
5
+
6
+ describe '#adjust!' do
7
+ context 'before payment state' do
8
+ let(:line_item) { build_stubbed(:line_item) }
9
+ let(:shipment) { build_stubbed(:shipment) }
10
+ let(:order) { build_stubbed(:order, state: 'delivery', line_items: [line_item], shipments: [shipment]) }
11
+
12
+ it 'does not create new tax adjustments' do
13
+ expect{ adjuster.adjust! }.to_not change { Spree::Adjustment.count }
14
+ end
15
+
16
+ it 'returns an array of all line items and shipments' do
17
+ expect(adjuster.adjust!).to include(line_item)
18
+ expect(adjuster.adjust!).to include(shipment)
19
+ end
20
+ end
21
+
22
+ context 'at & after payment state' do
23
+ let(:order) { create(:avalara_order) }
24
+
25
+ before do
26
+ order.reload # Allow order to create
27
+ order.line_items.update_all(price: 20)
28
+ end
29
+
30
+ it 'updates the adjustments' do
31
+ expect(order.state).to eq('payment')
32
+ expect{ adjuster.adjust! }.to change { order.line_items.first.adjustments.tax.first.amount }.from(0.4).to(0.8)
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spree::Calculator::AvalaraTransaction do
3
+ describe Spree::Calculator::AvalaraTransaction, :vcr do
4
4
  let(:included_in_price) { false }
5
5
  let(:tax_category) { Spree::TaxCategory.find_or_create_by(name: 'Clothing', tax_code: 'P0000000') }
6
6
  let(:calculator) { Spree::TaxRate.find_by(name: 'Tax').calculator }
@@ -85,12 +85,11 @@ describe Spree::Calculator::AvalaraTransaction do
85
85
  end
86
86
 
87
87
  context 'when the line item is discounted' do
88
- let!(:promotion) { create(:promotion_with_item_adjustment, adjustment_rate: 2) }
88
+ let(:promotion) { create(:promotion, :with_line_item_adjustment, adjustment_rate: 2) }
89
89
 
90
90
  before do
91
- create(:adjustment, order: order, source: promotion.promotion_actions.first, adjustable: line_item)
92
- line_item.reload
93
- order.reload.update!
91
+ create(:adjustment, order: order, source: promotion.promotion_actions.first, adjustable: order.line_items.first)
92
+ order.update!
94
93
  end
95
94
 
96
95
  it 'should be equal to the items pre-tax total * rate' do
@@ -5,13 +5,13 @@ http_interactions:
5
5
  uri: https://development.avalara.net/1.0/tax/get
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"DocCode":"R478514717","DocDate":"2017-03-21","Discount":"0.0","Commit":false,"DocType":"SalesOrder","Addresses":[{"AddressCode":"Orig","Line1":"915
9
- S Jackson St","Line2":"","City":"Montgomery","Region":"AL","PostalCode":"36104","Country":"US"},{"AddressCode":"Dest","Line1":"A
10
- Different Road","Line2":"","City":"Montgomery","Region":"Alabama","Country":"US","PostalCode":"36104"},{"AddressCode":"2","Line1":"1600
8
+ string: '{"DocCode":"R607844213","DocDate":"2017-03-24","Discount":"0.0","Commit":false,"DocType":"SalesOrder","Addresses":[{"AddressCode":"Orig","Line1":"915
9
+ S Jackson St","Line2":"","City":"Montgomery","Region":"AL","PostalCode":"36104","Country":"US"},{"AddressCode":"Dest","Line1":"915
10
+ S Jackson St","Line2":"","City":"Montgomery","Region":"Alabama","Country":"US","PostalCode":"36104"},{"AddressCode":"2","Line1":"1600
11
11
  Pennsylvania Ave NW","Line2":null,"City":"Washington","PostalCode":"20500","Country":"US"}],"Lines":[{"LineNo":"1-LI","Description":"Product
12
- #8 - 9986","TaxCode":"PC030000","ItemCode":"SKU-8","Qty":1,"Amount":10.0,"OriginCode":"2","DestinationCode":"Dest","CustomerUsageType":null,"Discounted":false,"TaxIncluded":false},{"LineNo":"1-FR","ItemCode":"Avalara
12
+ #1 - 3270","TaxCode":"PC030000","ItemCode":"SKU-1","Qty":1,"Amount":10.0,"OriginCode":"2","DestinationCode":"Dest","CustomerUsageType":null,"Discounted":false,"TaxIncluded":false},{"LineNo":"1-FR","ItemCode":"Avalara
13
13
  Ground","Qty":1,"Amount":5.0,"OriginCode":"2","DestinationCode":"Dest","CustomerUsageType":null,"Description":"Shipping
14
- Charge","TaxCode":"FR000000","Discounted":false,"TaxIncluded":false}],"CustomerCode":1,"CompanyCode":"54321","CustomerUsageType":null,"ExemptionNo":null,"Client":"a0o33000004FH8l","ReferenceCode":"R478514717","DetailLevel":"Tax","CurrencyCode":"USD"}'
14
+ Charge","TaxCode":"FR000000","Discounted":false,"TaxIncluded":false}],"CustomerCode":1,"CompanyCode":"54321","CustomerUsageType":null,"ExemptionNo":null,"Client":"a0o33000004FH8l","ReferenceCode":"R607844213","DetailLevel":"Tax","CurrencyCode":"USD"}'
15
15
  headers:
16
16
  Accept:
17
17
  - "*/*; q=0.5, application/xml"
@@ -43,146 +43,11 @@ http_interactions:
43
43
  X-Powered-By:
44
44
  - ASP.NET
45
45
  Date:
46
- - Tue, 21 Mar 2017 21:33:47 GMT
46
+ - Fri, 24 Mar 2017 15:27:41 GMT
47
47
  Content-Length:
48
48
  - '663'
49
49
  Set-Cookie:
50
- - TS017f1821=01a8ddc44e8f4c037724fad8f6e2d33f9710eadb28da1004462c96a14ba92d11274d5bb3749f9db4eba0e2a9b89b9b8e7b8e206745;
51
- Path=/
52
- body:
53
- encoding: ASCII-8BIT
54
- string: !binary |-
55
- H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3m
56
- kuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZk
57
- AWz2zkrayZ4hgKrIHz9+fB8/In5x8tGb7N3zYpk3Hz1Kv5fQ3/jjRUV/fbS7
58
- /fzsoxG3OKlmOT56ebJzb4ce/TibFGXRXuObtl7n+PRJtV7Osvr6eX6Zl/ji
59
- p4rVfXxx+i5frNqiWuJDBvC0aKbUurUfMMSSO9rlD15lLf+1M97Zp175M2ok
60
- H+3rXydZOV2X1HIWfv40b7OitOM6QVc14/rVazR5lV8oNsfP8fd31nXRvLle
61
- cY+vWwJoPzXD39nFRwT7fdFkKC+yBTc7fn785PiLY3xOrdyn6es3x29O0zfH
62
- v/dHvyT5fvJLkhGh7U/Hs1f6jsHn2SvqjR79+GdvOviVjcPc07+6s2E+/2HM
63
- xi2xZCCO7LecjO8n0uR4NqvzpnECox8YrJ7mTQtovRG+rJo2K02ze5/u7jBr
64
- dAdOXchHZ0zBvZ37ew8ePsQ3jLd5f2d3d2f3/q4OUHHAF8fp0+L8PK/zZZu+
65
- qrIZvj5RrviiWrYX1SIntIS79D0DlMlzA+KEkPQpWOKjpyf4u4M4twlQJoz1
66
- wVfaNX/x6c5O+jJfLpvr8jJbFll6fJmnL76LZgb172bNvFhetNSjm4unOtd7
67
- O7sPtnfube8xRzytpqbLV/sPDu7v7j/YfaBfxN94Uyxo1rLFKvzqzd7uo3v3
68
- Hu0/GD8kGA/2P/0pblwRNY4XoBKa7zLX8Yd9CcKnfUnjjwl9w7ceCPoUn+yM
69
- P/U/6goVf/kqb9Zla0b6ej2dgpy/JPl/AL0wL/3UBQAA
70
- http_version:
71
- recorded_at: Tue, 21 Mar 2017 21:33:46 GMT
72
- - request:
73
- method: post
74
- uri: https://development.avalara.net/1.0/tax/get
75
- body:
76
- encoding: UTF-8
77
- string: '{"DocCode":"R105275816","DocDate":"2017-03-21","Discount":"0.0","Commit":false,"DocType":"SalesOrder","Addresses":[{"AddressCode":"Orig","Line1":"915
78
- S Jackson St","Line2":"","City":"Montgomery","Region":"AL","PostalCode":"36104","Country":"US"},{"AddressCode":"Dest","Line1":"3366
79
- Speedway Blvd","Line2":"","City":"Lincoln","Region":"Alabama","Country":"US","PostalCode":"35096"},{"AddressCode":"3","Line1":"1600
80
- Pennsylvania Ave NW","Line2":null,"City":"Washington","PostalCode":"20500","Country":"US"}],"Lines":[{"LineNo":"2-LI","Description":"Product
81
- #9 - 9966","TaxCode":"PC030000","ItemCode":"SKU-9","Qty":1,"Amount":10.0,"OriginCode":"3","DestinationCode":"Dest","CustomerUsageType":"","Discounted":false,"TaxIncluded":false}],"CustomerCode":"acreilly3@gmail.com","CompanyCode":"54321","CustomerUsageType":"","ExemptionNo":null,"Client":"a0o33000004FH8l","ReferenceCode":"R105275816","DetailLevel":"Tax","CurrencyCode":"USD"}'
82
- headers:
83
- Accept:
84
- - "*/*; q=0.5, application/xml"
85
- Accept-Encoding:
86
- - gzip, deflate
87
- Authorization:
88
- - Basic MTEwMDExMzA5NjoxRDEzRURBMkRDQ0M3RTRB
89
- Content-Type:
90
- - application/json
91
- Content-Length:
92
- - '932'
93
- User-Agent:
94
- - Ruby
95
- response:
96
- status:
97
- code: 200
98
- message: OK
99
- headers:
100
- Cache-Control:
101
- - private
102
- Content-Type:
103
- - text/json; charset=utf-8
104
- Content-Encoding:
105
- - gzip
106
- Vary:
107
- - Accept-Encoding
108
- X-Aspnet-Version:
109
- - 4.0.30319
110
- X-Powered-By:
111
- - ASP.NET
112
- Date:
113
- - Tue, 21 Mar 2017 21:33:48 GMT
114
- Content-Length:
115
- - '621'
116
- Set-Cookie:
117
- - TS017f1821=01a8ddc44ed87dfee437a076fa854f1263c59ca6d001c58df077d5b84b3c3ea2771fa897dd1b42769a77cf32d59f807922bce36b86;
118
- Path=/
119
- body:
120
- encoding: ASCII-8BIT
121
- string: !binary |-
122
- H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3m
123
- kuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZk
124
- AWz2zkrayZ4hgKrIHz9+fB8/In5x8tGrvFmX7Uk1yz96lH70ej2d5k3z0Sj5
125
- 6Gk1fZq1/Onezu6D7Z1723u7+OJNscibNluswq/e7O0+unfv0f7B+NODg4f7
126
- B/s/xY2rNiuPF9V62aL57o798GnRTM3H7tPTd/li1RbVMvz4TfYum5SMjAeC
127
- PsUnO+N9/6OTrJyuS0J95n+ZvYuPhoZpBv9qd+f+3oP7B7uf4gt643mxzBv6
128
- 5nsJEQp/vKjor4/2tp+faQvz6suTnXs79OjH2aQoi/Ya37T1OsenT2iss6y+
129
- fp5f5iW++KlidR9f9Efcpwwg+qN/pUPZGe/sU6/8GTWSj8x4B+mQt1lR2nGd
130
- oKuacf3qNZq8yi8Um+Pn+Ps767po3lyvuMfXLQG0n5rh7zApCfb7oslQXmQL
131
- bnb8/PjJ8RfH+JxauU/T12+O35ymb45/749+SfL9BP+XJsezWU3c6uZIP6A/
132
- P7p379NP09erPJ9dZdfpk/JyBrjawOD9lBgZH5/oZNEcT6tyyR91yfKyIqYv
133
- zZv37u88ZDbpUovQko/OmOx7u3v7Dz/dwzc8VvP+zu7u3u7+vd29HRrTKER9
134
- 99OdnfRlvlw21+Vltiyy9PgyT198F0C0mQFzD58Z7L+bNfNiedESOvh08wD2
135
- du7LhAi2+OjpCf7uDIDbBKjv7tJU8kOoYzr+H6NlJhVGBAAA
136
- http_version:
137
- recorded_at: Tue, 21 Mar 2017 21:33:47 GMT
138
- - request:
139
- method: post
140
- uri: https://development.avalara.net/1.0/tax/get
141
- body:
142
- encoding: UTF-8
143
- string: '{"DocCode":"R478514717","DocDate":"2017-03-21","Discount":"0.0","Commit":false,"DocType":"SalesInvoice","Addresses":[{"AddressCode":"Orig","Line1":"915
144
- S Jackson St","Line2":"","City":"Montgomery","Region":"AL","PostalCode":"36104","Country":"US"},{"AddressCode":"Dest","Line1":"A
145
- Different Road","Line2":"","City":"Montgomery","Region":"Alabama","Country":"US","PostalCode":"36104"},{"AddressCode":"2","Line1":"1600
146
- Pennsylvania Ave NW","Line2":null,"City":"Washington","PostalCode":"20500","Country":"US"}],"Lines":[{"LineNo":"1-LI","Description":"Product
147
- #8 - 9986","TaxCode":"PC030000","ItemCode":"SKU-8","Qty":1,"Amount":10.0,"OriginCode":"2","DestinationCode":"Dest","CustomerUsageType":"A","Discounted":false,"TaxIncluded":false},{"LineNo":"1-FR","ItemCode":"Avalara
148
- Ground","Qty":1,"Amount":5.0,"OriginCode":"2","DestinationCode":"Dest","CustomerUsageType":"A","Description":"Shipping
149
- Charge","TaxCode":"FR000000","Discounted":false,"TaxIncluded":false}],"CustomerCode":1,"CompanyCode":"54321","CustomerUsageType":"A","ExemptionNo":null,"Client":"a0o33000004FH8l","ReferenceCode":"R478514717","DetailLevel":"Tax","CurrencyCode":"USD"}'
150
- headers:
151
- Accept:
152
- - "*/*; q=0.5, application/xml"
153
- Accept-Encoding:
154
- - gzip, deflate
155
- Authorization:
156
- - Basic MTEwMDExMzA5NjoxRDEzRURBMkRDQ0M3RTRB
157
- Content-Type:
158
- - application/json
159
- Content-Length:
160
- - '1142'
161
- User-Agent:
162
- - Ruby
163
- response:
164
- status:
165
- code: 200
166
- message: OK
167
- headers:
168
- Cache-Control:
169
- - private
170
- Content-Type:
171
- - text/json; charset=utf-8
172
- Content-Encoding:
173
- - gzip
174
- Vary:
175
- - Accept-Encoding
176
- X-Aspnet-Version:
177
- - 4.0.30319
178
- X-Powered-By:
179
- - ASP.NET
180
- Date:
181
- - Tue, 21 Mar 2017 21:33:48 GMT
182
- Content-Length:
183
- - '644'
184
- Set-Cookie:
185
- - TS017f1821=01a8ddc44e1b31152ba7b97a040ef2b39165e207569414b590c7bd8d5f53e86f6fc9430579995125913cd7a2b0900daee9a11e5e0e;
50
+ - TS017f1821=01a8ddc44e0b8a4408655952a95767026b3979db519efd3531b708098d76ad0011e44884c4ca1a757089ed24f77478698044d18a08;
186
51
  Path=/
187
52
  body:
188
53
  encoding: ASCII-8BIT
@@ -190,32 +55,32 @@ http_interactions:
190
55
  H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3m
191
56
  kuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZk
192
57
  AWz2zkrayZ4hgKrIHz9+fB8/In5x8tGrvFmX7Uk1yz96lH70ej2d5k3z0Sj5
193
- 6Gk1fZq1/Onezu6D7Z1723u7+OJNscibNluswq/e7O0+unfv0f7D8d4BN6va
194
- rDxeVOtli4a79+2HT4tmaj7esZ+evssXq7aolvjYa/0me5dNSsbDNaYPex+c
195
- ZOV0XRLKM/dV9i4+BhqcGfKr/QcH93f3H+w+wBf0xvNimTf0zfcSIg/+eFHR
196
- Xx/tbj8/0xbm1ZcnO/d26NGPs0lRFu01vmnrdY5Pn9A4Z1l9/Ty/zEt88VPF
197
- iocWjpYh9MkCkN7IX+lQdsY7+9Qrf0Zt+CP9fYAGeZsVpR3TCXqpGc+vXqPJ
198
- q/xCMTl+jr+/s66L5s31int73RI4+6kZ+g6TkWC/F4YM4kW24EbHz4+fHH9x
199
- jM+pjfs0ff3m+M1p+ub49/7olyTfT35JMiKc/Xl49krfMcg8e0V90aMff+15
200
- 4E9+NA3yaW8avp9Ik+PZrCYd4WREP6A/PzpOnxbn53mdL9v0VZXNAFW/Nig/
201
- JeWBj090ir6olu1FtciJEvi0S5SXFema0rx879PdnX183KUV4SUfnTHJ93bu
202
- 7z14+BDf8GDN+zu7uzu793dBE+ErRQ7f7X66s5O+zJfL5rq8zJZFlh5f5umL
203
- 7wKINjNg9vCZGcB3s2ZeLC9aQgefbh4AIUZ908eCLT56eoK/OwPgNgHqhLk+
204
- hDrm4/8BWnu9Qb0FAAA=
58
+ 6Gk1NZ+++nTnwcH+/t7uPf3iadbyF3s7uw+2d+5t7+3jizfFIm/abLEKv3qz
59
+ e//R3oNH+7vjg3v37+1/uv9T3Lhqs/J4Ua2XLZrv3rcfPi2aqfl4x356+i5f
60
+ rNqiWoYfv8neZZOSkfFA0Kf4ZGf8qf/RSVZO1yWhPvO/zN49L5Z5Qx99LyF6
61
+ 4I8XFf310e728zNtYQjx8mTn3g49+nE2KcqivcY3bb3O8ekTwnyW1dfP88u8
62
+ xBfHs1mtFO0PoT9UANXh8AevCF38tTPe2aeO+TNqJB8J1Qm9zsDM50/zNitK
63
+ O7QTdFUzul+9RpNX+YVic/wcf39nXRfNm+sV9/i6JYD2U0OBnV18RLDfF02G
64
+ 8iJbcLPj58dPjr84xufUyn2avn5z/OY0fXP8e3/0S5LvJ78kGRHa/ow8e6Xv
65
+ GHyevaLe6NGPf1ZnhPlr40j39K/uhJjPfxgTckssGYij/C3n4/uJNFEaOrHR
66
+ DwxWT0kRAFpvhC8r0hClaXbv090d5o7uwKkL+eiMKbi3c3/vwcOH+IbxNu/v
67
+ 7O7u7N7f1QEqDvji4e799HX6nWz6tqmW6WvBRRnji2rZXlSLnNASBtP3DFAm
68
+ zw2IE0LSp2CJj56e4O8O4twmQJkw1gdfadf8xac7O+nLfLlsrsvLbFlk6fFl
69
+ nr74LpoZ1L+bNfNiedFSj24uIsr4lyT/D9wIMU7aBQAA
205
70
  http_version:
206
- recorded_at: Tue, 21 Mar 2017 21:33:48 GMT
71
+ recorded_at: Fri, 24 Mar 2017 15:27:41 GMT
207
72
  - request:
208
73
  method: post
209
74
  uri: https://development.avalara.net/1.0/tax/get
210
75
  body:
211
76
  encoding: UTF-8
212
- string: '{"DocCode":"R362354686","DocDate":"2017-03-21","Discount":"0.0","Commit":false,"DocType":"SalesInvoice","Addresses":[{"AddressCode":"Orig","Line1":"915
77
+ string: '{"DocCode":"R607844213","DocDate":"2017-03-24","Discount":"0.0","Commit":false,"DocType":"SalesInvoice","Addresses":[{"AddressCode":"Orig","Line1":"915
213
78
  S Jackson St","Line2":"","City":"Montgomery","Region":"AL","PostalCode":"36104","Country":"US"},{"AddressCode":"Dest","Line1":"915
214
79
  S Jackson St","Line2":"","City":"Montgomery","Region":"Alabama","Country":"US","PostalCode":"36104"},{"AddressCode":"2","Line1":"1600
215
80
  Pennsylvania Ave NW","Line2":null,"City":"Washington","PostalCode":"20500","Country":"US"}],"Lines":[{"LineNo":"1-LI","Description":"Product
216
- #6 - 6205","TaxCode":"PC030000","ItemCode":"SKU-6","Qty":1,"Amount":10.0,"OriginCode":"2","DestinationCode":"Dest","CustomerUsageType":"A","Discounted":false,"TaxIncluded":false},{"LineNo":"1-FR","ItemCode":"Avalara
81
+ #1 - 3270","TaxCode":"PC030000","ItemCode":"SKU-1","Qty":1,"Amount":10.0,"OriginCode":"2","DestinationCode":"Dest","CustomerUsageType":"A","Discounted":false,"TaxIncluded":false},{"LineNo":"1-FR","ItemCode":"Avalara
217
82
  Ground","Qty":1,"Amount":5.0,"OriginCode":"2","DestinationCode":"Dest","CustomerUsageType":"A","Description":"Shipping
218
- Charge","TaxCode":"FR000000","Discounted":false,"TaxIncluded":false}],"CustomerCode":1,"CompanyCode":"54321","CustomerUsageType":"A","ExemptionNo":null,"Client":"a0o33000004FH8l","ReferenceCode":"R362354686","DetailLevel":"Tax","CurrencyCode":"USD"}'
83
+ Charge","TaxCode":"FR000000","Discounted":false,"TaxIncluded":false}],"CustomerCode":1,"CompanyCode":"54321","CustomerUsageType":"A","ExemptionNo":null,"Client":"a0o33000004FH8l","ReferenceCode":"R607844213","DetailLevel":"Tax","CurrencyCode":"USD"}'
219
84
  headers:
220
85
  Accept:
221
86
  - "*/*; q=0.5, application/xml"
@@ -247,11 +112,11 @@ http_interactions:
247
112
  X-Powered-By:
248
113
  - ASP.NET
249
114
  Date:
250
- - Tue, 21 Mar 2017 21:37:58 GMT
115
+ - Fri, 24 Mar 2017 15:27:41 GMT
251
116
  Content-Length:
252
- - '641'
117
+ - '644'
253
118
  Set-Cookie:
254
- - TS017f1821=01a8ddc44e87005ae3db978c7c86e9779d0cb76475880ab3d0ba36a92fd9bab885173a2d266705a8caa6a81272bef08ec279ef027e;
119
+ - TS017f1821=01a8ddc44e88d767c51c757cebeb3ba2637e6bc378db027472f390ef1b8557783e9b22c812361beab41629fc440b99ec9fb3d5744c;
255
120
  Path=/
256
121
  body:
257
122
  encoding: ASCII-8BIT
@@ -259,18 +124,18 @@ http_interactions:
259
124
  H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3m
260
125
  kuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZk
261
126
  AWz2zkrayZ4hgKrIHz9+fB8/In5x8tGrvFmX7Uk1yz96lH70ej2d5k3z0Sj5
262
- 6Gk1NZ++uvfp3r37+58efKpfPM1a/mJvZ/fB9s697b1dfPGmWORNmy1W4Vdv
263
- 9nYf3Xvw6P7B+NOH3Kxqs/J4Ua2XLRru3rcfPi2aqfl4x356+i5frNqiWuJj
264
- r/Wb7F02KRkP15g+7H1wkpXTdUkoz9xX2bvnxTJv6IPvJUQF/PGior8+2t1+
265
- fqYtzPBfnuzc26FHP84mRVm01/imrdc5Pn1CWM+y+vp5fpmX+OJ4NquVjiH6
266
- DKQ/TkD1hvKKkOU/xjv71DF/Rm34I/09PqineZsVpR3WCXqpGdWvXqPJq/xC
267
- MTl+jr+/s66L5s31int73RI4+6kZ/Y7M7XtiyCBeZAtudPz8+MnxF8f4nNq4
268
- T9PXb47fnKZvjn/vj35J8v3klyQjwtmfimev9B2DzLNX1Bc9+vGHTAUz0o9m
269
- Qj7tzcT3E2mi1HOSoh/Qnx893L2fvk6/k03fNtUyfd0Cqn5tUH5KCgEfn+gs
270
- fVEt24tqkRMl8GmXKC8r0h+lefnep7s7+/i4SyvCSz46Y5Lv7dzfe/CQdQsP
271
- 1ry/s7u7s3t/FzQR1lLk8N3upzs76ct8uWyuy8tsWWTp8WWevvgugGgzA2YP
272
- n5kBfDdr5sXyoiV08OnmARBi1Dd9LNjio6cn+LszAG4ToE6Y60Oom7mIaN1f
273
- kvw/kcnCEsMFAAA=
127
+ 6Gk1NZ+++nTnwcH+/t7uPf3iadbyF3s7uw+2d+5t7+3jizfFIm/abLEKv3qz
128
+ e//R3oNH+3vjT3cYwJuqzcrjRbVetmi5e99++LRopubjHfvp6bt8sWqLaomP
129
+ vdZvsnfZpGREXGP6sPfBSVZO1yXhPHNfZe+eF8u8oQ++lxAZ8MeLiv76aHf7
130
+ +Zm2MON/ebJzb4ce/TibFGXRXuObtl7n+PQJYT3L6uvn+WVe4ovj2axWQobo
131
+ M5D+OAHVG8orQpb/GO/sU8f8GbXhj/T3+KCe5m1WlHZYJ+ilZlS/eo0mr/IL
132
+ xeT4Of7+zroumjfXK+7tdUvg7Kdm9Du7+IhgvxeGDOJFtuBGx8+Pnxx/cYzP
133
+ qY37NH395vjNafrm+Pf+6Jck309+STIinP2pePZK3zHIPHtFfdGjH3/IVDAj
134
+ /Wgm5NPeTHw/kSZKPScp+gH9+dHD3fvp6/Q72fRtUy3T1y2g6tcG5aekEfDx
135
+ ic7SF9WyvagWOVECn3aJ8rIiBVKal+99urvDmqVLK8JLPjpjku/t3N978PAh
136
+ vuHBmvd3dnd3du/vgibCWoocvtv9dGcnfZkvl811eZktiyw9vszTF98FEG1m
137
+ wOzhMzOA72bNvFhetIQOPt08AEKM+qaPBVt89PQEf3cGwG0C1AlzfQh1MxcR
138
+ tftLkv8HUXts98QFAAA=
274
139
  http_version:
275
- recorded_at: Tue, 21 Mar 2017 21:37:57 GMT
140
+ recorded_at: Fri, 24 Mar 2017 15:27:42 GMT
276
141
  recorded_with: VCR 3.0.3