Sha256: 6aa195e5a69ce60beca337954c545743bc5e892cc5c1481769e58f4a602ece7e

Contents?: true

Size: 767 Bytes

Versions: 3

Compression:

Stored size: 767 Bytes

Contents

module SuperGood
  module SolidusTaxjar
    class TaxRateCalculator
      include CalculatorHelper
      def initialize(address, api: SuperGood::SolidusTaxjar.api)
        @address = address
        @api = api
      end

      def calculate
        return no_rate if SuperGood::SolidusTaxjar.test_mode
        return no_rate if incomplete_address?(address)
        return no_rate unless taxable_address?(address)
        cache do
          api.tax_rate_for(address).to_d
        end
      rescue => e
        exception_handler.call(e)
        no_rate
      end

      private

      attr_reader :address, :api

      def no_rate
        BigDecimal(0)
      end

      def cache_key
        SuperGood::SolidusTaxjar.cache_key.call(address)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
super_good-solidus_taxjar-1.0.0 lib/super_good/solidus_taxjar/tax_rate_calculator.rb
super_good-solidus_taxjar-0.18.2 lib/super_good/solidus_taxjar/tax_rate_calculator.rb
super_good-solidus_taxjar-0.18.1 lib/super_good/solidus_taxjar/tax_rate_calculator.rb