Sha256: fb7ad9095ede6b86e5ce8770036d434ec4709cc8ad7568138c86bb9064d18bed

Contents?: true

Size: 1.26 KB

Versions: 42

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

module Spree
  # Tax calculation is broken out at this level to allow easy integration with 3rd party
  # taxation systems.  Those systems are usually geared toward calculating all items at once
  # rather than one at a time.
  #
  # To use an alternative tax calculator do this:
  #    Spree::ReturnAuthorization.reimbursement_tax_calculator = calculator_object
  # where `calculator_object` is an object that responds to "call" and accepts a reimbursement object

  class ReimbursementTaxCalculator
    class << self
      def call(reimbursement)
        reimbursement.return_items.includes(:inventory_unit).each do |return_item|
          set_tax!(return_item)
        end
      end

      private

      def set_tax!(return_item)
        percent_of_tax = (return_item.amount <= 0) ? 0 : return_item.amount / Spree::ReturnItem.refund_amount_calculator.new.compute(return_item)

        additional_tax_total = percent_of_tax * return_item.inventory_unit.additional_tax_total
        included_tax_total   = percent_of_tax * return_item.inventory_unit.included_tax_total

        return_item.update_attributes!({
          additional_tax_total: additional_tax_total,
          included_tax_total:   included_tax_total
        })
      end
    end
  end
end

Version data entries

42 entries across 42 versions & 2 rubygems

Version Path
solidus_core-2.9.6 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.8.6 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.9.5 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.9.4 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.6.6 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.7.4 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.8.5 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.9.3 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.9.2 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.7.3 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.6.5 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.9.1 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.9.0 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.9.0.rc.1 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.8.4 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.8.3 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.7.2 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.6.4 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.8.2 app/models/spree/reimbursement_tax_calculator.rb
solidus_core-2.8.1 app/models/spree/reimbursement_tax_calculator.rb