Module: Easyship::SalesTax::Calculator

Defined in:
lib/easyship/sales_tax/calculator.rb,
lib/easyship/sales_tax/calculator/version.rb

Defined Under Namespace

Classes: Error

Constant Summary collapse

FALLBACK_VALUE =
{sales_tax: 0, provincial_sales_tax: 0}.freeze
VERSION =
"0.7.0"

Class Method Summary collapse

Class Method Details

.calculate(origin_country_alpha2: nil, destination_country_alpha2: nil, origin_state: nil, destination_state: nil, fees: nil, effective_timestamp: nil, effective_country_alpha2s: []) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/easyship/sales_tax/calculator.rb', line 11

def self.calculate(origin_country_alpha2: nil, destination_country_alpha2: nil, origin_state: nil, destination_state: nil, fees: nil, effective_timestamp: nil, effective_country_alpha2s: [])
  return FALLBACK_VALUE if origin_country_alpha2.nil? || origin_country_alpha2.empty? || destination_country_alpha2.nil? || destination_country_alpha2.empty?
  return FALLBACK_VALUE unless fees.is_a?(Fee)

  if domestic?(origin_country_alpha2, destination_country_alpha2) || within_eu?(origin_country_alpha2, destination_country_alpha2)
    domestic_value(
      origin_country_alpha2: origin_country_alpha2,
      origin_state: origin_state,
      destination_state: destination_state,
      fees: fees,
      effective_timestamp: effective_timestamp,
      effective_country_alpha2s: effective_country_alpha2s
    )
  else
    FALLBACK_VALUE
  end
rescue
  FALLBACK_VALUE
end

.sales_tax_website_name(country_alpha2, effective_timestamp = nil) ⇒ Object



31
32
33
34
# File 'lib/easyship/sales_tax/calculator.rb', line 31

def self.sales_tax_website_name(country_alpha2, effective_timestamp = nil)
  rates = Formula.effective_data(country_alpha2, effective_timestamp)
  (rates || {}).dig(:sales_tax_website_name)
end