solidus_tax_cloud 1.0.0
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 +7 -0
- data/.circleci/config.yml +35 -0
- data/.gem_release.yml +5 -0
- data/.gitignore +20 -0
- data/.rspec +2 -0
- data/.rubocop.yml +7 -0
- data/.rubocop_todo.yml +132 -0
- data/CHANGELOG.md +52 -0
- data/Gemfile +33 -0
- data/LICENSE +26 -0
- data/README.md +130 -0
- data/Rakefile +6 -0
- data/TaxCloudImplementationVerificationGuide.pdf +0 -0
- data/app/assets/javascripts/spree/backend/solidus_tax_cloud.js +2 -0
- data/app/assets/javascripts/spree/frontend/solidus_tax_cloud.js +2 -0
- data/app/assets/stylesheets/spree/backend/solidus_tax_cloud.css +4 -0
- data/app/assets/stylesheets/spree/backend/solidus_tax_cloud.scss +0 -0
- data/app/assets/stylesheets/spree/frontend/solidus_tax_cloud.css +4 -0
- data/app/decorators/models/solidus_tax_cloud/spree/app_configuration_decorator.rb +18 -0
- data/app/decorators/models/solidus_tax_cloud/spree/line_item_decorator.rb +47 -0
- data/app/decorators/models/solidus_tax_cloud/spree/order_decorator.rb +42 -0
- data/app/decorators/models/solidus_tax_cloud/spree/product_decorator.rb +25 -0
- data/app/decorators/models/solidus_tax_cloud/spree/shipment_decorator.rb +27 -0
- data/app/models/spree/calculator/tax_cloud_calculator.rb +111 -0
- data/app/models/spree/tax_cloud.rb +66 -0
- data/app/overrides/spree/admin/products/_form.rb +9 -0
- data/app/overrides/spree/admin/shared/_configuration_menu.rb +9 -0
- data/bin/console +17 -0
- data/bin/r +15 -0
- data/bin/rails +15 -0
- data/bin/rake +7 -0
- data/bin/sandbox +84 -0
- data/bin/sandbox_rails +18 -0
- data/bin/setup +8 -0
- data/config/initializers/tax_cloud_usps_username.rb +5 -0
- data/config/locales/en.yml +13 -0
- data/config/routes.rb +7 -0
- data/db/migrate/20121220192438_create_spree_tax_cloud_transactions.rb +13 -0
- data/db/migrate/20121220193944_create_spree_tax_cloud_cart_items.rb +22 -0
- data/db/migrate/20130829215819_fix_scale_of_cart_item_prices.rb +15 -0
- data/db/migrate/20140623225628_add_tic_to_products.rb +11 -0
- data/lib/assets/javascripts/spree/frontend/solidus_tax_cloud.js.erb +1 -0
- data/lib/assets/stylesheets/spree/frontend/solidus_tax_cloud.css.erb +5 -0
- data/lib/controllers/backend/spree/admin/tax_cloud_settings_controller.rb +29 -0
- data/lib/decorators/backend/controllers/solidus_tax_cloud/spree/admin/orders_controller_decorator.rb +21 -0
- data/lib/decorators/frontend/controllers/solidus_tax_cloud/spree/checkout_controller_decorator.rb +24 -0
- data/lib/generators/solidus_tax_cloud/install/install_generator.rb +29 -0
- data/lib/generators/solidus_tax_cloud/templates/ca-bundle.crt +3895 -0
- data/lib/solidus_tax_cloud.rb +10 -0
- data/lib/solidus_tax_cloud/engine.rb +23 -0
- data/lib/solidus_tax_cloud/error.rb +6 -0
- data/lib/solidus_tax_cloud/factories.rb +4 -0
- data/lib/solidus_tax_cloud/version.rb +5 -0
- data/lib/tasks/.gitkeep +0 -0
- data/lib/tasks/tax_cloud.rake +74 -0
- data/lib/views/backend/spree/admin/products/_edit_tax_cloud_tic.html.erb +6 -0
- data/lib/views/backend/spree/admin/tax_cloud_settings/edit.html.erb +32 -0
- data/solidus_tax_cloud.gemspec +39 -0
- data/spec/features/checkout_spec.rb +511 -0
- data/spec/models/tax_cloud_api_spec.rb +192 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/support/capybara.rb +20 -0
- data/spec/support/tax_cloud.rb +20 -0
- data/spec/support/transactions.rb +5 -0
- metadata +204 -0
@@ -0,0 +1,192 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
# This spec ensures that the low-level TaxCloud API returns the values specified by the TaxCloud Implementation Guide.
|
6
|
+
# If any errors are found in the Solidus-related feature specs, this will serve as a means for verifying whether the errors
|
7
|
+
# are coming from the TaxCloud gem or API, or whether they are related to the Solidus integration specifically.
|
8
|
+
|
9
|
+
describe 'Models' do
|
10
|
+
origin = TaxCloud::Address.new(address1: '3121 West Government Way', city: 'Seattle', state: 'WA', zip5: '98199', zip4: '1402')
|
11
|
+
|
12
|
+
it 'TaxCloud Test Case 1a: Verify Address with error' do
|
13
|
+
destination = TaxCloud::Address.new(address1: '1 3rd Street', city: 'Seattle', state: 'WA', zip5: '98001')
|
14
|
+
cart_items = []
|
15
|
+
cart_items << TaxCloud::CartItem.new(index: 0, item_id: 'TestItem1', tic: '00000', quantity: 1, price: 10.00)
|
16
|
+
transaction = test_transaction(cart_items, origin, destination)
|
17
|
+
|
18
|
+
result = transaction.lookup
|
19
|
+
|
20
|
+
# From TaxCloud:
|
21
|
+
# This address will not verify correctly (the VerifyAddress API call will return an error).
|
22
|
+
# That is okay. Occasionally an address cannot be verified. When that happens, pass the
|
23
|
+
# destination address as originally entered to Lookup. The address can still be passed to
|
24
|
+
# Lookup. The only error that should prevent an order from proceeding is when a customer
|
25
|
+
# provided zip code does not exist within the customer provided state (discussed later in Test
|
26
|
+
# Case 7, Handling Errors).
|
27
|
+
|
28
|
+
expect { destination.verify }.to raise_error(TaxCloud::Errors::ApiError)
|
29
|
+
|
30
|
+
expect(result.cart_items.size).to eq 1
|
31
|
+
expect(result.cart_items.first.cart_item_index).to eq 0
|
32
|
+
expect(result.cart_items.first.tax_amount).to eq 0.99
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'TaxCloud Test Case 1b: Verify Address without error' do
|
36
|
+
destination = TaxCloud::Address.new(address1: '16422 SE 128th St', city: 'Renton', state: 'WA', zip5: '98059')
|
37
|
+
cart_items = []
|
38
|
+
cart_items << TaxCloud::CartItem.new(index: 0, item_id: 'TestItem2', tic: '00000', quantity: 1, price: 10.00)
|
39
|
+
transaction = test_transaction(cart_items, origin, destination)
|
40
|
+
|
41
|
+
result = transaction.lookup
|
42
|
+
|
43
|
+
# From TaxCloud:
|
44
|
+
# The destination address used as-is will not give the most accurate rate ($1.00 in tax).
|
45
|
+
# The verified address will have a Plus4 Zip Code of 98059-8625 give a correct result
|
46
|
+
# ($0.86 in tax).
|
47
|
+
|
48
|
+
expect(result.cart_items.size).to eq 1
|
49
|
+
expect(result.cart_items.first.cart_item_index).to eq 0
|
50
|
+
expect(result.cart_items.first.tax_amount).to eq 0.86
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'TaxCloud Test Case 2a: If all items in cart are tax exempt, shipping is not taxed (in some states)' do
|
54
|
+
destination = TaxCloud::Address.new(address1: '75 Rev Martin Luther King Jr Drive', city: 'St. Paul', state: 'MN', zip5: '55155')
|
55
|
+
cart_items = []
|
56
|
+
cart_items << TaxCloud::CartItem.new(index: 0, item_id: 'Shirt001', tic: '20010', quantity: 1, price: 10.00)
|
57
|
+
cart_items << TaxCloud::CartItem.new(index: 1, item_id: 'Shipping', tic: '11010', quantity: 1, price: 10.00)
|
58
|
+
transaction = test_transaction(cart_items, origin, destination)
|
59
|
+
|
60
|
+
result = transaction.lookup
|
61
|
+
|
62
|
+
expect(result.cart_items.size).to eq 2
|
63
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 0 }.tax_amount).to eq 0
|
64
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 1 }.tax_amount).to eq 0
|
65
|
+
|
66
|
+
# capture = transaction.authorized_with_capture
|
67
|
+
# expect(capture).to eq('OK')
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'TaxCloud Test Case 2b: With both taxable and tax exempt items, shipping is taxable' do
|
71
|
+
destination = TaxCloud::Address.new(address1: '75 Rev Martin Luther King Jr Drive', city: 'St. Paul', state: 'MN', zip5: '55155')
|
72
|
+
cart_items = []
|
73
|
+
cart_items << TaxCloud::CartItem.new(index: 0, item_id: 'Shirt001', tic: '20010', quantity: 1, price: 10.00)
|
74
|
+
cart_items << TaxCloud::CartItem.new(index: 1, item_id: 'Gadget001', tic: '00000', quantity: 1, price: 10.00)
|
75
|
+
cart_items << TaxCloud::CartItem.new(index: 2, item_id: 'Shipping', tic: '11010', quantity: 1, price: 10.00)
|
76
|
+
transaction = test_transaction(cart_items, origin, destination)
|
77
|
+
|
78
|
+
result = transaction.lookup
|
79
|
+
|
80
|
+
expect(result.cart_items.size).to eq 3
|
81
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 0 }.tax_amount).to eq 0
|
82
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 1 }.tax_amount).to eq 0.79
|
83
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 2 }.tax_amount).to eq 0.79
|
84
|
+
|
85
|
+
# capture = transaction.authorized_with_capture
|
86
|
+
# expect(capture).to eq('OK')
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'TaxCloud Test Case 3: Item taxable, shipping not taxable' do
|
90
|
+
destination = TaxCloud::Address.new(address1: '2300 N Lincoln Blvd', city: 'Oklahoma City', state: 'OK', zip5: '73105')
|
91
|
+
cart_items = []
|
92
|
+
cart_items << TaxCloud::CartItem.new(index: 0, item_id: 'Shirt002', tic: '20010', quantity: 1, price: 10.00)
|
93
|
+
cart_items << TaxCloud::CartItem.new(index: 1, item_id: 'Shipping', tic: '11010', quantity: 1, price: 10.00)
|
94
|
+
transaction = test_transaction(cart_items, origin, destination)
|
95
|
+
|
96
|
+
result = transaction.lookup
|
97
|
+
|
98
|
+
expect(result.cart_items.size).to eq 2
|
99
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 0 }.tax_amount).to eq 0.86
|
100
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 1 }.tax_amount).to eq 0
|
101
|
+
|
102
|
+
# capture = transaction.authorized_with_capture
|
103
|
+
# expect(capture).to eq('OK')
|
104
|
+
end
|
105
|
+
|
106
|
+
skip 'TaxCloud Test Case 4: Return all items in previous order' do
|
107
|
+
# TODO
|
108
|
+
end
|
109
|
+
|
110
|
+
skip 'TaxCloud Test Case 5: Return single item in previous order' do
|
111
|
+
# TODO
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'TaxCloud Test Case 6: Item and shipping taxable' do
|
115
|
+
destination = TaxCloud::Address.new(address1: '384 Northyards Blvd NW', city: 'Atlanta', state: 'GA', zip5: '30313')
|
116
|
+
cart_items = []
|
117
|
+
cart_items << TaxCloud::CartItem.new(index: 0, item_id: 'Shirt003', tic: '20010', quantity: 1, price: 10.00)
|
118
|
+
cart_items << TaxCloud::CartItem.new(index: 1, item_id: 'Shipping', tic: '11010', quantity: 1, price: 10.00)
|
119
|
+
transaction = test_transaction(cart_items, origin, destination)
|
120
|
+
|
121
|
+
result = transaction.lookup
|
122
|
+
|
123
|
+
expect(result.cart_items.size).to eq 2
|
124
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 0 }.tax_amount).to eq 0.89
|
125
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 1 }.tax_amount).to eq 0.89
|
126
|
+
end
|
127
|
+
|
128
|
+
it 'TaxCloud Test Case 7: Handling errors' do
|
129
|
+
destination = TaxCloud::Address.new(address1: '384 Northyards Blvd NW', city: 'Atlanta', state: 'GA', zip5: '30313', zip4: '2440')
|
130
|
+
cart_items = []
|
131
|
+
cart_items << TaxCloud::CartItem.new(index: 0, item_id: 'Gadget002', tic: '00000', quantity: 1, price: -5.00)
|
132
|
+
transaction = test_transaction(cart_items, origin, destination)
|
133
|
+
|
134
|
+
expect { transaction.lookup }.to raise_error(TaxCloud::Errors::ApiError)
|
135
|
+
|
136
|
+
begin
|
137
|
+
transaction.lookup
|
138
|
+
rescue StandardError => e
|
139
|
+
expect(e.problem).to eq('Cart Item 0 has a negative Price (-5). Only positive values can be used')
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
context 'with discounts' do
|
144
|
+
it 'TaxCloud Test Case 3, with item discount' do
|
145
|
+
destination = TaxCloud::Address.new(address1: '2300 N Lincoln Blvd', city: 'Oklahoma City', state: 'OK', zip5: '73105')
|
146
|
+
cart_items = []
|
147
|
+
cart_items << TaxCloud::CartItem.new(index: 0, item_id: 'Shirt002', tic: '20010', quantity: 1, price: 5.00)
|
148
|
+
cart_items << TaxCloud::CartItem.new(index: 1, item_id: 'Shipping', tic: '11010', quantity: 1, price: 10.00)
|
149
|
+
transaction = test_transaction(cart_items, origin, destination)
|
150
|
+
|
151
|
+
result = transaction.lookup
|
152
|
+
|
153
|
+
expect(result.cart_items.size).to eq 2
|
154
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 0 }.tax_amount).to eq 0.43
|
155
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 1 }.tax_amount).to eq 0
|
156
|
+
|
157
|
+
# capture = transaction.authorized_with_capture
|
158
|
+
# expect(capture).to eq('OK')
|
159
|
+
end
|
160
|
+
|
161
|
+
it 'TaxCloud Test Case 3, with item discount, multiple items' do
|
162
|
+
destination = TaxCloud::Address.new(address1: '2300 N Lincoln Blvd', city: 'Oklahoma City', state: 'OK', zip5: '73105')
|
163
|
+
cart_items = []
|
164
|
+
cart_items << TaxCloud::CartItem.new(index: 0, item_id: 'Shirt002', tic: '20010', quantity: 2, price: 7.50)
|
165
|
+
cart_items << TaxCloud::CartItem.new(index: 1, item_id: 'Shipping', tic: '11010', quantity: 2, price: 20.00)
|
166
|
+
transaction = test_transaction(cart_items, origin, destination)
|
167
|
+
|
168
|
+
result = transaction.lookup
|
169
|
+
|
170
|
+
expect(result.cart_items.size).to eq 2
|
171
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 0 }.tax_amount).to eq 1.29
|
172
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 1 }.tax_amount).to eq 0
|
173
|
+
|
174
|
+
# capture = transaction.authorized_with_capture
|
175
|
+
# expect(capture).to eq('OK')
|
176
|
+
end
|
177
|
+
|
178
|
+
it 'TaxCloud Test Case 6, with shipping promotion' do
|
179
|
+
destination = TaxCloud::Address.new(address1: '384 Northyards Blvd NW', city: 'Atlanta', state: 'GA', zip5: '30313')
|
180
|
+
cart_items = []
|
181
|
+
cart_items << TaxCloud::CartItem.new(index: 0, item_id: 'Shirt003', tic: '20010', quantity: 1, price: 10.00)
|
182
|
+
cart_items << TaxCloud::CartItem.new(index: 1, item_id: 'Shipping', tic: '11010', quantity: 1, price: 0.00)
|
183
|
+
transaction = test_transaction(cart_items, origin, destination)
|
184
|
+
|
185
|
+
result = transaction.lookup
|
186
|
+
|
187
|
+
expect(result.cart_items.size).to eq 2
|
188
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 0 }.tax_amount).to eq 0.89
|
189
|
+
expect(result.cart_items.detect { |i| i.cart_item_index == 1 }.tax_amount).to eq 0.00
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Configure Rails Environment
|
4
|
+
ENV['RAILS_ENV'] = 'test'
|
5
|
+
|
6
|
+
# Run Coverage report
|
7
|
+
require 'solidus_dev_support/rspec/coverage'
|
8
|
+
|
9
|
+
require File.expand_path('dummy/config/environment.rb', __dir__).tap { |file|
|
10
|
+
# Create the dummy app if it's still missing.
|
11
|
+
system 'bin/rake extension:test_app' unless File.exist? file
|
12
|
+
}
|
13
|
+
|
14
|
+
# Requires factories and other useful helpers defined in spree_core.
|
15
|
+
require 'solidus_dev_support/rspec/feature_helper'
|
16
|
+
|
17
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
18
|
+
# in spec/support/ and its subdirectories.
|
19
|
+
Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
|
20
|
+
|
21
|
+
# Requires factories defined in lib/solidus_tax_cloud/factories.rb
|
22
|
+
require 'solidus_tax_cloud/factories'
|
23
|
+
|
24
|
+
RSpec.configure do |config|
|
25
|
+
config.infer_spec_type_from_file_location!
|
26
|
+
config.use_transactional_fixtures = false
|
27
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module TestingSupport
|
5
|
+
module CapybaraHelpers
|
6
|
+
def sign_in_as!(user)
|
7
|
+
visit spree.login_path
|
8
|
+
within '#new_spree_user' do
|
9
|
+
fill_in 'Email', with: user.email
|
10
|
+
fill_in 'Password', with: user.password
|
11
|
+
end
|
12
|
+
click_button 'Login'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
RSpec.configure do |config|
|
19
|
+
config.include Spree::TestingSupport::CapybaraHelpers, type: :feature
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.configure do |config|
|
4
|
+
# Official verification and test harness login credentials provided 7/8/14
|
5
|
+
# by David Campbell of The Federal Tax Authority.
|
6
|
+
# This account is configured to collect sales tax in the 24 SSUTA states:
|
7
|
+
# AR, GA, IN, IA, KS, KY, MI, MN, NE, NV, NJ, NC, ND, OH, OK, RI, SD, TN, UT, VT, WA, WV, WI, and WY
|
8
|
+
# The account does not collect sales tax in the remaining sales tax states:
|
9
|
+
# AL, AK, AZ, CA, CO, CT, DC, FL, HI, ID, IL, LA, ME, MD, MA, MS, MO, NM, NY, PA, SC, TX, and VA
|
10
|
+
config.before :suite do
|
11
|
+
TaxCloud.configure do |config|
|
12
|
+
config.api_login_id = '2D7D820'
|
13
|
+
config.api_key = '0946110C-2AA9-4387-AD5C-4E1C551B8D0C'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
config.before do
|
18
|
+
stub_spree_preferences(taxcloud_default_product_tic: '00000', taxcloud_shipping_tic: '11010')
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
def test_transaction(cart_items, origin, destination)
|
4
|
+
TaxCloud::Transaction.new(customer_id: SecureRandom.hex(8), cart_id: SecureRandom.hex(8), order_id: SecureRandom.hex(8), cart_items: cart_items, origin: origin, destination: destination)
|
5
|
+
end
|
metadata
ADDED
@@ -0,0 +1,204 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: solidus_tax_cloud
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jerrold Thompson
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-06-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: deface
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: savon
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.12.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.12.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: solidus_core
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.0.0
|
48
|
+
- - "<"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '3'
|
51
|
+
type: :runtime
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: 2.0.0
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '3'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: solidus_support
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0.5'
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0.5'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: tax_cloud
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 0.3.0
|
82
|
+
type: :runtime
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 0.3.0
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: solidus_dev_support
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
description: Solidus extension providing Tax Cloud services
|
104
|
+
email: jet@whidbey.com
|
105
|
+
executables: []
|
106
|
+
extensions: []
|
107
|
+
extra_rdoc_files: []
|
108
|
+
files:
|
109
|
+
- ".circleci/config.yml"
|
110
|
+
- ".gem_release.yml"
|
111
|
+
- ".gitignore"
|
112
|
+
- ".rspec"
|
113
|
+
- ".rubocop.yml"
|
114
|
+
- ".rubocop_todo.yml"
|
115
|
+
- CHANGELOG.md
|
116
|
+
- Gemfile
|
117
|
+
- LICENSE
|
118
|
+
- README.md
|
119
|
+
- Rakefile
|
120
|
+
- TaxCloudImplementationVerificationGuide.pdf
|
121
|
+
- app/assets/javascripts/spree/backend/solidus_tax_cloud.js
|
122
|
+
- app/assets/javascripts/spree/frontend/solidus_tax_cloud.js
|
123
|
+
- app/assets/stylesheets/spree/backend/solidus_tax_cloud.css
|
124
|
+
- app/assets/stylesheets/spree/backend/solidus_tax_cloud.scss
|
125
|
+
- app/assets/stylesheets/spree/frontend/solidus_tax_cloud.css
|
126
|
+
- app/decorators/models/solidus_tax_cloud/spree/app_configuration_decorator.rb
|
127
|
+
- app/decorators/models/solidus_tax_cloud/spree/line_item_decorator.rb
|
128
|
+
- app/decorators/models/solidus_tax_cloud/spree/order_decorator.rb
|
129
|
+
- app/decorators/models/solidus_tax_cloud/spree/product_decorator.rb
|
130
|
+
- app/decorators/models/solidus_tax_cloud/spree/shipment_decorator.rb
|
131
|
+
- app/models/spree/calculator/tax_cloud_calculator.rb
|
132
|
+
- app/models/spree/tax_cloud.rb
|
133
|
+
- app/overrides/spree/admin/products/_form.rb
|
134
|
+
- app/overrides/spree/admin/shared/_configuration_menu.rb
|
135
|
+
- bin/console
|
136
|
+
- bin/r
|
137
|
+
- bin/rails
|
138
|
+
- bin/rake
|
139
|
+
- bin/sandbox
|
140
|
+
- bin/sandbox_rails
|
141
|
+
- bin/setup
|
142
|
+
- config/initializers/tax_cloud_usps_username.rb
|
143
|
+
- config/locales/en.yml
|
144
|
+
- config/routes.rb
|
145
|
+
- db/migrate/20121220192438_create_spree_tax_cloud_transactions.rb
|
146
|
+
- db/migrate/20121220193944_create_spree_tax_cloud_cart_items.rb
|
147
|
+
- db/migrate/20130829215819_fix_scale_of_cart_item_prices.rb
|
148
|
+
- db/migrate/20140623225628_add_tic_to_products.rb
|
149
|
+
- lib/assets/javascripts/spree/frontend/solidus_tax_cloud.js.erb
|
150
|
+
- lib/assets/stylesheets/spree/frontend/solidus_tax_cloud.css.erb
|
151
|
+
- lib/controllers/backend/spree/admin/tax_cloud_settings_controller.rb
|
152
|
+
- lib/decorators/backend/controllers/solidus_tax_cloud/spree/admin/orders_controller_decorator.rb
|
153
|
+
- lib/decorators/frontend/controllers/solidus_tax_cloud/spree/checkout_controller_decorator.rb
|
154
|
+
- lib/generators/solidus_tax_cloud/install/install_generator.rb
|
155
|
+
- lib/generators/solidus_tax_cloud/templates/ca-bundle.crt
|
156
|
+
- lib/solidus_tax_cloud.rb
|
157
|
+
- lib/solidus_tax_cloud/engine.rb
|
158
|
+
- lib/solidus_tax_cloud/error.rb
|
159
|
+
- lib/solidus_tax_cloud/factories.rb
|
160
|
+
- lib/solidus_tax_cloud/version.rb
|
161
|
+
- lib/tasks/.gitkeep
|
162
|
+
- lib/tasks/tax_cloud.rake
|
163
|
+
- lib/views/backend/spree/admin/products/_edit_tax_cloud_tic.html.erb
|
164
|
+
- lib/views/backend/spree/admin/tax_cloud_settings/edit.html.erb
|
165
|
+
- solidus_tax_cloud.gemspec
|
166
|
+
- spec/features/checkout_spec.rb
|
167
|
+
- spec/models/tax_cloud_api_spec.rb
|
168
|
+
- spec/spec_helper.rb
|
169
|
+
- spec/support/capybara.rb
|
170
|
+
- spec/support/tax_cloud.rb
|
171
|
+
- spec/support/transactions.rb
|
172
|
+
homepage: https://github.com/solidusio-contrib/solidus_tax_cloud
|
173
|
+
licenses:
|
174
|
+
- BSD-3-Clause
|
175
|
+
metadata:
|
176
|
+
homepage_uri: https://github.com/solidusio-contrib/solidus_tax_cloud
|
177
|
+
source_code_uri: https://github.com/solidusio-contrib/solidus_tax_cloud
|
178
|
+
changelog_uri: https://github.com/solidusio-contrib/solidus_tax_cloud/blob/master/CHANGELOG.md
|
179
|
+
post_install_message:
|
180
|
+
rdoc_options: []
|
181
|
+
require_paths:
|
182
|
+
- lib
|
183
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '2.5'
|
188
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
189
|
+
requirements:
|
190
|
+
- - ">="
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: '0'
|
193
|
+
requirements: []
|
194
|
+
rubygems_version: 3.0.8
|
195
|
+
signing_key:
|
196
|
+
specification_version: 4
|
197
|
+
summary: Solidus extension providing Tax Cloud services
|
198
|
+
test_files:
|
199
|
+
- spec/features/checkout_spec.rb
|
200
|
+
- spec/models/tax_cloud_api_spec.rb
|
201
|
+
- spec/spec_helper.rb
|
202
|
+
- spec/support/capybara.rb
|
203
|
+
- spec/support/tax_cloud.rb
|
204
|
+
- spec/support/transactions.rb
|