Sha256: 51e69bc6b7936c249a2a8089b08c3260b5e0696fccfab32079495525ef129218

Contents?: true

Size: 1.62 KB

Versions: 27

Compression:

Stored size: 1.62 KB

Contents

module Workarea
  module Pricing
    module Calculators
      class TaxCalculator
        include Calculator

        def adjust
          adjust_shipped_items_tax
          adjust_not_shipped_items_tax
        end

        def adjust_shipped_items_tax
          shippings.each do |tmp_shipping|
            next unless tmp_shipping.address.present?

            adjustments_to_tax = price_adjustments_for(tmp_shipping)
            TaxApplier.new(tmp_shipping, adjustments_to_tax).apply
          end
        end

        def adjust_not_shipped_items_tax
          return unless payment&.address.present?

          ItemTaxApplier.new(
            payment.address,
            not_shipped_items_price_adjustments
          ).apply
        end

        def shipped_items_price_adjustments
          PriceAdjustmentSet.new(
            order.items.select(&:shipping?).flat_map(&:price_adjustments)
          )
        end

        def not_shipped_items_price_adjustments
          PriceAdjustmentSet.new(
            order.items.reject(&:shipping?).flat_map(&:price_adjustments)
          )
        end

        # @deprecated As of v3.5, this class supports applying tax directly to
        # items when they do not require shipping. As a result tax calculation
        # is split on this distinction and this method is no longer sufficient.
        # Instead modify the appropriate method to change the set of price
        # adjustments to consider for tax calculation.
        #
        # @return [PriceAdjustmentSet]
        #
        def price_adjustments_for(shipping)
          shipped_items_price_adjustments
        end
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
workarea-core-3.5.27 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.26 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.25 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.23 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.22 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.21 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.20 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.19 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.18 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.17 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.16 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.15 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.14 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.13 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.12 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.11 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.10 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.9 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.8 app/models/workarea/pricing/calculators/tax_calculator.rb
workarea-core-3.5.7 app/models/workarea/pricing/calculators/tax_calculator.rb