avatax 21.9.0 → 22.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +55 -55
- data/.rspec +1 -1
- data/.travis.yml +18 -18
- data/.vs/VSWorkspaceState.json +5 -5
- data/.yardopts +4 -4
- data/Gemfile +2 -2
- data/LICENSE +201 -201
- data/README.md +98 -98
- data/Rakefile +9 -9
- data/avatax.gemspec +38 -38
- data/example/avatax.rb +47 -47
- data/example/credentials.example.yaml +5 -5
- data/lib/avatax/api.rb +27 -27
- data/lib/avatax/client/accounts.rb +22 -11
- data/lib/avatax/client/addresses.rb +4 -2
- data/lib/avatax/client/advancedrules.rb +10 -5
- data/lib/avatax/client/ageverification.rb +29 -0
- data/lib/avatax/client/avafileforms.rb +10 -5
- data/lib/avatax/client/batches.rb +16 -8
- data/lib/avatax/client/certexpressinvites.rb +6 -3
- data/lib/avatax/client/certificates.rb +30 -15
- data/lib/avatax/client/companies.rb +61 -21
- data/lib/avatax/client/compliance.rb +25 -14
- data/lib/avatax/client/contacts.rb +12 -6
- data/lib/avatax/client/customers.rb +26 -13
- data/lib/avatax/client/datasources.rb +12 -6
- data/lib/avatax/client/definitions.rb +140 -70
- data/lib/avatax/client/distancethresholds.rb +12 -6
- data/lib/avatax/client/ecms.rb +73 -73
- data/lib/avatax/client/ecommercetoken.rb +4 -2
- data/lib/avatax/client/errortransactions.rb +61 -61
- data/lib/avatax/client/filingcalendars.rb +9 -4
- data/lib/avatax/client/filings.rb +6 -2
- data/lib/avatax/client/firmclientlinkages.rb +18 -9
- data/lib/avatax/client/free.rb +2 -1
- data/lib/avatax/client/fundingrequests.rb +4 -2
- data/lib/avatax/client/items.rb +50 -25
- data/lib/avatax/client/jurisdictionoverrides.rb +12 -6
- data/lib/avatax/client/locations.rb +24 -12
- data/lib/avatax/client/multidocument.rb +20 -10
- data/lib/avatax/client/nexus.rb +30 -15
- data/lib/avatax/client/notices.rb +8 -4
- data/lib/avatax/client/notifications.rb +6 -3
- data/lib/avatax/client/onboarding.rb +55 -55
- data/lib/avatax/client/pointofsale.rb +21 -21
- data/lib/avatax/client/provisioning.rb +4 -2
- data/lib/avatax/client/registrar.rb +22 -11
- data/lib/avatax/client/reports.rb +8 -4
- data/lib/avatax/client/settings.rb +12 -6
- data/lib/avatax/client/shippingverification.rb +66 -0
- data/lib/avatax/client/subscriptions.rb +6 -3
- data/lib/avatax/client/taxcodes.rb +12 -6
- data/lib/avatax/client/taxcontent.rb +10 -5
- data/lib/avatax/client/taxprofiles.rb +42 -42
- data/lib/avatax/client/taxrules.rb +12 -6
- data/lib/avatax/client/transactions.rb +42 -21
- data/lib/avatax/client/upcs.rb +12 -6
- data/lib/avatax/client/userdefinedfields.rb +52 -0
- data/lib/avatax/client/users.rb +16 -8
- data/lib/avatax/client/utilities.rb +6 -3
- data/lib/avatax/client.rb +37 -35
- data/lib/avatax/configuration.rb +76 -76
- data/lib/avatax/connection.rb +49 -49
- data/lib/avatax/request.rb +51 -42
- data/lib/avatax/version.rb +3 -3
- data/lib/avatax.rb +26 -26
- data/spec/avatax/client/accounts_spec.rb +13 -13
- data/spec/avatax/client/transactions_spec.rb +80 -80
- data/spec/avatax/request_spec.rb +25 -25
- data/spec/avatax_spec.rb +45 -45
- data/spec/credentials.yaml.example +4 -4
- data/spec/fixtures/accounts.json +15 -15
- data/spec/spec_helper.rb +27 -27
- metadata +9 -13
data/lib/avatax/client.rb
CHANGED
@@ -1,35 +1,37 @@
|
|
1
|
-
module AvaTax
|
2
|
-
class Client < API
|
3
|
-
Dir[File.expand_path('../client/*.rb', __FILE__)].each{|f| require f}
|
4
|
-
|
5
|
-
include AvaTax::Client::Accounts
|
6
|
-
include AvaTax::Client::Addresses
|
7
|
-
include AvaTax::Client::Batches
|
8
|
-
include AvaTax::Client::CertExpressInvites
|
9
|
-
include AvaTax::Client::Companies
|
10
|
-
include AvaTax::Client::Contacts
|
11
|
-
include AvaTax::Client::Customers
|
12
|
-
include AvaTax::Client::Definitions
|
13
|
-
include AvaTax::Client::FilingCalendars
|
14
|
-
include AvaTax::Client::Filings
|
15
|
-
include AvaTax::Client::Free
|
16
|
-
include AvaTax::Client::FundingRequests
|
17
|
-
include AvaTax::Client::Items
|
18
|
-
include AvaTax::Client::JurisdictionOverrides
|
19
|
-
include AvaTax::Client::Locations
|
20
|
-
include AvaTax::Client::Nexus
|
21
|
-
include AvaTax::Client::Notices
|
22
|
-
include AvaTax::Client::Onboarding
|
23
|
-
include AvaTax::Client::PointOfSale
|
24
|
-
include AvaTax::Client::Registrar
|
25
|
-
include AvaTax::Client::Settings
|
26
|
-
include AvaTax::Client::Subscriptions
|
27
|
-
include AvaTax::Client::TaxCodes
|
28
|
-
include AvaTax::Client::TaxContent
|
29
|
-
include AvaTax::Client::TaxRules
|
30
|
-
include AvaTax::Client::Transactions
|
31
|
-
include AvaTax::Client::Upcs
|
32
|
-
include AvaTax::Client::Users
|
33
|
-
include AvaTax::Client::Utilities
|
34
|
-
|
35
|
-
|
1
|
+
module AvaTax
|
2
|
+
class Client < API
|
3
|
+
Dir[File.expand_path('../client/*.rb', __FILE__)].each{|f| require f}
|
4
|
+
|
5
|
+
include AvaTax::Client::Accounts
|
6
|
+
include AvaTax::Client::Addresses
|
7
|
+
include AvaTax::Client::Batches
|
8
|
+
include AvaTax::Client::CertExpressInvites
|
9
|
+
include AvaTax::Client::Companies
|
10
|
+
include AvaTax::Client::Contacts
|
11
|
+
include AvaTax::Client::Customers
|
12
|
+
include AvaTax::Client::Definitions
|
13
|
+
include AvaTax::Client::FilingCalendars
|
14
|
+
include AvaTax::Client::Filings
|
15
|
+
include AvaTax::Client::Free
|
16
|
+
include AvaTax::Client::FundingRequests
|
17
|
+
include AvaTax::Client::Items
|
18
|
+
include AvaTax::Client::JurisdictionOverrides
|
19
|
+
include AvaTax::Client::Locations
|
20
|
+
include AvaTax::Client::Nexus
|
21
|
+
include AvaTax::Client::Notices
|
22
|
+
include AvaTax::Client::Onboarding
|
23
|
+
include AvaTax::Client::PointOfSale
|
24
|
+
include AvaTax::Client::Registrar
|
25
|
+
include AvaTax::Client::Settings
|
26
|
+
include AvaTax::Client::Subscriptions
|
27
|
+
include AvaTax::Client::TaxCodes
|
28
|
+
include AvaTax::Client::TaxContent
|
29
|
+
include AvaTax::Client::TaxRules
|
30
|
+
include AvaTax::Client::Transactions
|
31
|
+
include AvaTax::Client::Upcs
|
32
|
+
include AvaTax::Client::Users
|
33
|
+
include AvaTax::Client::Utilities
|
34
|
+
include AvaTax::Client::ShippingVerification
|
35
|
+
include AvaTax::Client::AgeVerification
|
36
|
+
end
|
37
|
+
end
|
data/lib/avatax/configuration.rb
CHANGED
@@ -1,76 +1,76 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require File.expand_path('../version', __FILE__)
|
3
|
-
|
4
|
-
module AvaTax
|
5
|
-
module Configuration
|
6
|
-
|
7
|
-
VALID_OPTIONS_KEYS = [
|
8
|
-
:app_name,
|
9
|
-
:app_version,
|
10
|
-
:machine_name,
|
11
|
-
:environment,
|
12
|
-
:endpoint,
|
13
|
-
:user_agent,
|
14
|
-
:username,
|
15
|
-
:password,
|
16
|
-
:connection_options,
|
17
|
-
:logger,
|
18
|
-
:custom_logger,
|
19
|
-
:custom_logger_options,
|
20
|
-
:proxy,
|
21
|
-
:faraday_response,
|
22
|
-
:response_big_decimal_conversion
|
23
|
-
].freeze
|
24
|
-
|
25
|
-
DEFAULT_APP_NAME = nil
|
26
|
-
DEFAULT_APP_VERSION = nil
|
27
|
-
DEFAULT_MACHINE_NAME = nil
|
28
|
-
DEFAULT_ENDPOINT = 'https://rest.avatax.com'
|
29
|
-
DEFAULT_USER_AGENT = "AvaTax Ruby Gem #{AvaTax::VERSION}".freeze
|
30
|
-
DEFAULT_USERNAME = nil
|
31
|
-
DEFAULT_PASSWORD = nil
|
32
|
-
DEFAULT_CONNECTION_OPTIONS = {request: {timeout: 1200}} # timeout in seconds
|
33
|
-
DEFAULT_LOGGER = false
|
34
|
-
DEFAULT_CUSTOM_LOGGER = nil
|
35
|
-
DEFAULT_CUSTOM_LOGGER_OPTIONS = {}
|
36
|
-
DEFAULT_PROXY = nil
|
37
|
-
DEFAULT_FARADAY_RESPONSE = false
|
38
|
-
DEFAULT_RESPONSE_BIG_DECIMAL_CONVERSION = false
|
39
|
-
|
40
|
-
attr_accessor *VALID_OPTIONS_KEYS
|
41
|
-
|
42
|
-
# Reset config values when extended
|
43
|
-
def self.extended(base)
|
44
|
-
base.reset
|
45
|
-
end
|
46
|
-
|
47
|
-
# Allow configuration options to be set in a block
|
48
|
-
def configure
|
49
|
-
yield self
|
50
|
-
end
|
51
|
-
|
52
|
-
def options
|
53
|
-
VALID_OPTIONS_KEYS.inject({}) do |option, key|
|
54
|
-
option.merge!(key => send(key))
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
def reset
|
59
|
-
self.app_name = DEFAULT_APP_NAME
|
60
|
-
self.app_version = DEFAULT_APP_VERSION
|
61
|
-
self.machine_name = DEFAULT_MACHINE_NAME
|
62
|
-
self.endpoint = DEFAULT_ENDPOINT
|
63
|
-
self.user_agent = DEFAULT_USER_AGENT
|
64
|
-
self.username = DEFAULT_USERNAME
|
65
|
-
self.password = DEFAULT_PASSWORD
|
66
|
-
self.connection_options = DEFAULT_CONNECTION_OPTIONS
|
67
|
-
self.logger = DEFAULT_LOGGER
|
68
|
-
self.custom_logger = DEFAULT_CUSTOM_LOGGER
|
69
|
-
self.custom_logger_options = DEFAULT_CUSTOM_LOGGER_OPTIONS
|
70
|
-
self.proxy = DEFAULT_PROXY
|
71
|
-
self.faraday_response = DEFAULT_FARADAY_RESPONSE
|
72
|
-
self.response_big_decimal_conversion = DEFAULT_RESPONSE_BIG_DECIMAL_CONVERSION
|
73
|
-
end
|
74
|
-
|
75
|
-
end
|
76
|
-
end
|
1
|
+
require 'faraday'
|
2
|
+
require File.expand_path('../version', __FILE__)
|
3
|
+
|
4
|
+
module AvaTax
|
5
|
+
module Configuration
|
6
|
+
|
7
|
+
VALID_OPTIONS_KEYS = [
|
8
|
+
:app_name,
|
9
|
+
:app_version,
|
10
|
+
:machine_name,
|
11
|
+
:environment,
|
12
|
+
:endpoint,
|
13
|
+
:user_agent,
|
14
|
+
:username,
|
15
|
+
:password,
|
16
|
+
:connection_options,
|
17
|
+
:logger,
|
18
|
+
:custom_logger,
|
19
|
+
:custom_logger_options,
|
20
|
+
:proxy,
|
21
|
+
:faraday_response,
|
22
|
+
:response_big_decimal_conversion
|
23
|
+
].freeze
|
24
|
+
|
25
|
+
DEFAULT_APP_NAME = nil
|
26
|
+
DEFAULT_APP_VERSION = nil
|
27
|
+
DEFAULT_MACHINE_NAME = nil
|
28
|
+
DEFAULT_ENDPOINT = 'https://rest.avatax.com'
|
29
|
+
DEFAULT_USER_AGENT = "AvaTax Ruby Gem #{AvaTax::VERSION}".freeze
|
30
|
+
DEFAULT_USERNAME = nil
|
31
|
+
DEFAULT_PASSWORD = nil
|
32
|
+
DEFAULT_CONNECTION_OPTIONS = {request: {timeout: 1200}} # timeout in seconds
|
33
|
+
DEFAULT_LOGGER = false
|
34
|
+
DEFAULT_CUSTOM_LOGGER = nil
|
35
|
+
DEFAULT_CUSTOM_LOGGER_OPTIONS = {}
|
36
|
+
DEFAULT_PROXY = nil
|
37
|
+
DEFAULT_FARADAY_RESPONSE = false
|
38
|
+
DEFAULT_RESPONSE_BIG_DECIMAL_CONVERSION = false
|
39
|
+
|
40
|
+
attr_accessor *VALID_OPTIONS_KEYS
|
41
|
+
|
42
|
+
# Reset config values when extended
|
43
|
+
def self.extended(base)
|
44
|
+
base.reset
|
45
|
+
end
|
46
|
+
|
47
|
+
# Allow configuration options to be set in a block
|
48
|
+
def configure
|
49
|
+
yield self
|
50
|
+
end
|
51
|
+
|
52
|
+
def options
|
53
|
+
VALID_OPTIONS_KEYS.inject({}) do |option, key|
|
54
|
+
option.merge!(key => send(key))
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def reset
|
59
|
+
self.app_name = DEFAULT_APP_NAME
|
60
|
+
self.app_version = DEFAULT_APP_VERSION
|
61
|
+
self.machine_name = DEFAULT_MACHINE_NAME
|
62
|
+
self.endpoint = DEFAULT_ENDPOINT
|
63
|
+
self.user_agent = DEFAULT_USER_AGENT
|
64
|
+
self.username = DEFAULT_USERNAME
|
65
|
+
self.password = DEFAULT_PASSWORD
|
66
|
+
self.connection_options = DEFAULT_CONNECTION_OPTIONS
|
67
|
+
self.logger = DEFAULT_LOGGER
|
68
|
+
self.custom_logger = DEFAULT_CUSTOM_LOGGER
|
69
|
+
self.custom_logger_options = DEFAULT_CUSTOM_LOGGER_OPTIONS
|
70
|
+
self.proxy = DEFAULT_PROXY
|
71
|
+
self.faraday_response = DEFAULT_FARADAY_RESPONSE
|
72
|
+
self.response_big_decimal_conversion = DEFAULT_RESPONSE_BIG_DECIMAL_CONVERSION
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
data/lib/avatax/connection.rb
CHANGED
@@ -1,49 +1,49 @@
|
|
1
|
-
require 'faraday_middleware'
|
2
|
-
|
3
|
-
module AvaTax
|
4
|
-
|
5
|
-
module Connection
|
6
|
-
private
|
7
|
-
AUTHORIZATION_FILTER_REGEX = /(Authorization\:\ \"Basic\ )(\w+)\=/
|
8
|
-
REMOVED_LABEL = '\1[REMOVED]'
|
9
|
-
|
10
|
-
def connection
|
11
|
-
client_id = "#{app_name};#{app_version};RubySdk;#{
|
12
|
-
options = {
|
13
|
-
:headers =>
|
14
|
-
{
|
15
|
-
'Accept' => "application/json; charset=utf-8",
|
16
|
-
'User-Agent' => user_agent,
|
17
|
-
'X-Avalara-Client' => client_id
|
18
|
-
},
|
19
|
-
:url => endpoint,
|
20
|
-
:proxy => proxy
|
21
|
-
}.merge(connection_options)
|
22
|
-
|
23
|
-
Faraday.new(options) do |faraday|
|
24
|
-
if Gem::Version.new(RUBY_VERSION) > Gem::Version.new('2.2.2') and response_big_decimal_conversion
|
25
|
-
Oj.default_options = {
|
26
|
-
bigdecimal_load: :bigdecimal
|
27
|
-
}
|
28
|
-
end
|
29
|
-
|
30
|
-
faraday.response :json, content_type: /\bjson$/
|
31
|
-
faraday.basic_auth(username, password)
|
32
|
-
|
33
|
-
if logger
|
34
|
-
faraday.response :logger do |logger|
|
35
|
-
logger.filter(AUTHORIZATION_FILTER_REGEX, REMOVED_LABEL)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
if custom_logger
|
40
|
-
faraday.response :logger, custom_logger, custom_logger_options do |logger|
|
41
|
-
logger.filter(AUTHORIZATION_FILTER_REGEX, REMOVED_LABEL)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
faraday.adapter Faraday.default_adapter
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
1
|
+
require 'faraday_middleware'
|
2
|
+
|
3
|
+
module AvaTax
|
4
|
+
|
5
|
+
module Connection
|
6
|
+
private
|
7
|
+
AUTHORIZATION_FILTER_REGEX = /(Authorization\:\ \"Basic\ )(\w+)\=/
|
8
|
+
REMOVED_LABEL = '\1[REMOVED]'
|
9
|
+
|
10
|
+
def connection
|
11
|
+
client_id = "#{app_name};#{app_version};RubySdk;API_VERSION;#{machine_name}"
|
12
|
+
options = {
|
13
|
+
:headers =>
|
14
|
+
{
|
15
|
+
'Accept' => "application/json; charset=utf-8",
|
16
|
+
'User-Agent' => user_agent,
|
17
|
+
'X-Avalara-Client' => client_id
|
18
|
+
},
|
19
|
+
:url => endpoint,
|
20
|
+
:proxy => proxy
|
21
|
+
}.merge(connection_options)
|
22
|
+
|
23
|
+
Faraday.new(options) do |faraday|
|
24
|
+
if Gem::Version.new(RUBY_VERSION) > Gem::Version.new('2.2.2') and response_big_decimal_conversion
|
25
|
+
Oj.default_options = {
|
26
|
+
bigdecimal_load: :bigdecimal
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
faraday.response :json, content_type: /\bjson$/
|
31
|
+
faraday.basic_auth(username, password)
|
32
|
+
|
33
|
+
if logger
|
34
|
+
faraday.response :logger do |logger|
|
35
|
+
logger.filter(AUTHORIZATION_FILTER_REGEX, REMOVED_LABEL)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
if custom_logger
|
40
|
+
faraday.response :logger, custom_logger, custom_logger_options do |logger|
|
41
|
+
logger.filter(AUTHORIZATION_FILTER_REGEX, REMOVED_LABEL)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
faraday.adapter Faraday.default_adapter
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/avatax/request.rb
CHANGED
@@ -1,42 +1,51 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'json'
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
request.
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
end
|
1
|
+
require 'faraday'
|
2
|
+
require 'json'
|
3
|
+
require "erb"
|
4
|
+
|
5
|
+
|
6
|
+
module AvaTax
|
7
|
+
module Request
|
8
|
+
|
9
|
+
def get(path, options={}, apiversion="")
|
10
|
+
request(:get, path, nil, options, apiversion)
|
11
|
+
end
|
12
|
+
|
13
|
+
def post(path, model, options={}, apiversion="")
|
14
|
+
request(:post, path, model, options, apiversion)
|
15
|
+
end
|
16
|
+
|
17
|
+
def put(path, model, options={}, apiversion="")
|
18
|
+
request(:put, path, model, options, apiversion)
|
19
|
+
end
|
20
|
+
|
21
|
+
def delete(path, options={}, apiversion="")
|
22
|
+
request(:delete, path, nil, options, apiversion)
|
23
|
+
end
|
24
|
+
|
25
|
+
def request(method, path, model, options={}, apiversion="")
|
26
|
+
response = connection.send(method) do |request|
|
27
|
+
request.headers['X-Avalara-Client'] = request.headers['X-Avalara-Client'].gsub("API_VERSION", apiversion)
|
28
|
+
case method
|
29
|
+
when :get, :delete
|
30
|
+
request.url("#{encode_path(path)}?#{URI.encode_www_form(options)}")
|
31
|
+
when :post, :put
|
32
|
+
request.url("#{encode_path(path)}?#{URI.encode_www_form(options)}")
|
33
|
+
request.headers['Content-Type'] = 'application/json'
|
34
|
+
request.body = model.to_json unless model.empty?
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
if faraday_response
|
39
|
+
response
|
40
|
+
else
|
41
|
+
response.body
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def encode_path(path)
|
48
|
+
path.split('/').map { |part| ERB::Util.url_encode(part) }.join('/')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/avatax/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
module AvaTax
|
2
|
-
VERSION = '
|
3
|
-
end
|
1
|
+
module AvaTax
|
2
|
+
VERSION = '22.2.0'.freeze unless defined?(::AvaTax::VERSION)
|
3
|
+
end
|
data/lib/avatax.rb
CHANGED
@@ -1,26 +1,26 @@
|
|
1
|
-
require File.expand_path('../avatax/configuration', __FILE__)
|
2
|
-
require File.expand_path('../avatax/api', __FILE__)
|
3
|
-
require File.expand_path('../avatax/client', __FILE__)
|
4
|
-
|
5
|
-
module AvaTax
|
6
|
-
extend Configuration
|
7
|
-
|
8
|
-
# Alias for Avatax::Client.new
|
9
|
-
#
|
10
|
-
# @return [Avatax::Client]
|
11
|
-
def self.client(options={})
|
12
|
-
AvaTax::Client.new(options)
|
13
|
-
end
|
14
|
-
|
15
|
-
# Delegate to AvaTax::Client
|
16
|
-
def self.method_missing(method, *args, &block)
|
17
|
-
return super unless client.respond_to?(method)
|
18
|
-
client.send(method, *args, &block)
|
19
|
-
end
|
20
|
-
|
21
|
-
# Delegate to AvaTax::Client
|
22
|
-
def self.respond_to?(method, include_all=false)
|
23
|
-
return client.respond_to?(method, include_all) || super
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
1
|
+
require File.expand_path('../avatax/configuration', __FILE__)
|
2
|
+
require File.expand_path('../avatax/api', __FILE__)
|
3
|
+
require File.expand_path('../avatax/client', __FILE__)
|
4
|
+
|
5
|
+
module AvaTax
|
6
|
+
extend Configuration
|
7
|
+
|
8
|
+
# Alias for Avatax::Client.new
|
9
|
+
#
|
10
|
+
# @return [Avatax::Client]
|
11
|
+
def self.client(options={})
|
12
|
+
AvaTax::Client.new(options)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Delegate to AvaTax::Client
|
16
|
+
def self.method_missing(method, *args, &block)
|
17
|
+
return super unless client.respond_to?(method)
|
18
|
+
client.send(method, *args, &block)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Delegate to AvaTax::Client
|
22
|
+
def self.respond_to?(method, include_all=false)
|
23
|
+
return client.respond_to?(method, include_all) || super
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -1,13 +1,13 @@
|
|
1
|
-
require File.expand_path('../../../spec_helper', __FILE__)
|
2
|
-
|
3
|
-
describe AvaTax::Client do
|
4
|
-
|
5
|
-
describe ".accounts" do
|
6
|
-
it "should return an array of accounts" do
|
7
|
-
accounts = @client.query_accounts
|
8
|
-
expect(accounts).to be_a Object
|
9
|
-
expect(accounts['value'].first['id']).to be_a Integer
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe AvaTax::Client do
|
4
|
+
|
5
|
+
describe ".accounts" do
|
6
|
+
it "should return an array of accounts" do
|
7
|
+
accounts = @client.query_accounts
|
8
|
+
expect(accounts).to be_a Object
|
9
|
+
expect(accounts['value'].first['id']).to be_a Integer
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
@@ -1,80 +1,80 @@
|
|
1
|
-
require File.expand_path('../../../spec_helper', __FILE__)
|
2
|
-
|
3
|
-
describe AvaTax::Client do
|
4
|
-
|
5
|
-
describe ".transactions" do
|
6
|
-
before do
|
7
|
-
@base_transaction = {
|
8
|
-
type: 'SalesInvoice',
|
9
|
-
companyCode: @company_code,
|
10
|
-
date: '2017-06-05',
|
11
|
-
customerCode: 'ABC',
|
12
|
-
addresses: {
|
13
|
-
ShipFrom: {
|
14
|
-
line1: "123 Main Street",
|
15
|
-
city: "Irvine",
|
16
|
-
region: "CA",
|
17
|
-
country: "US",
|
18
|
-
postalCode: "92615"
|
19
|
-
},
|
20
|
-
ShipTo: {
|
21
|
-
line1: "100 Market Street",
|
22
|
-
city: "San Francisco",
|
23
|
-
region: "CA",
|
24
|
-
country: "US",
|
25
|
-
postalCode: "94105"
|
26
|
-
}
|
27
|
-
},
|
28
|
-
lines: [{amount: 100}]
|
29
|
-
}
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should create a transaction" do
|
33
|
-
transaction = @client.create_transaction(@base_transaction)
|
34
|
-
expect(transaction).to be_a Object
|
35
|
-
expect(transaction["id"]).to be_a Integer
|
36
|
-
expect(transaction["status"]).to eq "Saved"
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
|
42
|
-
# Test the option of faraday_response, the returned response should be a type of Faraday response rather than Hashie
|
43
|
-
describe ".transaction_with_faraday_response" do
|
44
|
-
before do
|
45
|
-
@client.faraday_response = true
|
46
|
-
@base_transaction = {
|
47
|
-
type: 'SalesInvoice',
|
48
|
-
companyCode: @company_code,
|
49
|
-
date: '2017-06-05',
|
50
|
-
customerCode: 'ABC',
|
51
|
-
addresses: {
|
52
|
-
ShipFrom: {
|
53
|
-
line1: "123 Main Street",
|
54
|
-
city: "Irvine",
|
55
|
-
region: "CA",
|
56
|
-
country: "US",
|
57
|
-
postalCode: "92615"
|
58
|
-
},
|
59
|
-
ShipTo: {
|
60
|
-
line1: "100 Market Street",
|
61
|
-
city: "San Francisco",
|
62
|
-
region: "CA",
|
63
|
-
country: "US",
|
64
|
-
postalCode: "94105"
|
65
|
-
}
|
66
|
-
},
|
67
|
-
lines: [{amount: 100}]
|
68
|
-
}
|
69
|
-
end
|
70
|
-
|
71
|
-
it "should create a transaction and return the faraday response" do
|
72
|
-
faraday_trans = @client.create_transaction(@base_transaction)
|
73
|
-
expect(faraday_trans).to be_a Object
|
74
|
-
expect(faraday_trans["status"]) == 201
|
75
|
-
expect(faraday_trans["reason_phrase"]) == "Created"
|
76
|
-
expect(faraday_trans["request_headers"]).to be_a Object
|
77
|
-
expect(faraday_trans["body"]).to be_a Object
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe AvaTax::Client do
|
4
|
+
|
5
|
+
describe ".transactions" do
|
6
|
+
before do
|
7
|
+
@base_transaction = {
|
8
|
+
type: 'SalesInvoice',
|
9
|
+
companyCode: @company_code,
|
10
|
+
date: '2017-06-05',
|
11
|
+
customerCode: 'ABC',
|
12
|
+
addresses: {
|
13
|
+
ShipFrom: {
|
14
|
+
line1: "123 Main Street",
|
15
|
+
city: "Irvine",
|
16
|
+
region: "CA",
|
17
|
+
country: "US",
|
18
|
+
postalCode: "92615"
|
19
|
+
},
|
20
|
+
ShipTo: {
|
21
|
+
line1: "100 Market Street",
|
22
|
+
city: "San Francisco",
|
23
|
+
region: "CA",
|
24
|
+
country: "US",
|
25
|
+
postalCode: "94105"
|
26
|
+
}
|
27
|
+
},
|
28
|
+
lines: [{amount: 100}]
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should create a transaction" do
|
33
|
+
transaction = @client.create_transaction(@base_transaction)
|
34
|
+
expect(transaction).to be_a Object
|
35
|
+
expect(transaction["id"]).to be_a Integer
|
36
|
+
expect(transaction["status"]).to eq "Saved"
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
# Test the option of faraday_response, the returned response should be a type of Faraday response rather than Hashie
|
43
|
+
describe ".transaction_with_faraday_response" do
|
44
|
+
before do
|
45
|
+
@client.faraday_response = true
|
46
|
+
@base_transaction = {
|
47
|
+
type: 'SalesInvoice',
|
48
|
+
companyCode: @company_code,
|
49
|
+
date: '2017-06-05',
|
50
|
+
customerCode: 'ABC',
|
51
|
+
addresses: {
|
52
|
+
ShipFrom: {
|
53
|
+
line1: "123 Main Street",
|
54
|
+
city: "Irvine",
|
55
|
+
region: "CA",
|
56
|
+
country: "US",
|
57
|
+
postalCode: "92615"
|
58
|
+
},
|
59
|
+
ShipTo: {
|
60
|
+
line1: "100 Market Street",
|
61
|
+
city: "San Francisco",
|
62
|
+
region: "CA",
|
63
|
+
country: "US",
|
64
|
+
postalCode: "94105"
|
65
|
+
}
|
66
|
+
},
|
67
|
+
lines: [{amount: 100}]
|
68
|
+
}
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should create a transaction and return the faraday response" do
|
72
|
+
faraday_trans = @client.create_transaction(@base_transaction)
|
73
|
+
expect(faraday_trans).to be_a Object
|
74
|
+
expect(faraday_trans["status"]) == 201
|
75
|
+
expect(faraday_trans["reason_phrase"]) == "Created"
|
76
|
+
expect(faraday_trans["request_headers"]).to be_a Object
|
77
|
+
expect(faraday_trans["body"]).to be_a Object
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|