Sha256: 5054509f5172339179f6ba35e0dd6e21e0cbac7dd676c34080cde57a3140a93d

Contents?: true

Size: 1.36 KB

Versions: 74

Compression:

Stored size: 1.36 KB

Contents

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)
        calculated_refund = Spree::ReturnItem.refund_amount_calculator.new.compute(return_item)

        percent_of_tax = if return_item.pre_tax_amount <= 0 || calculated_refund <= 0
          0
        else
          return_item.pre_tax_amount / calculated_refund
        end

        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

74 entries across 74 versions & 2 rubygems

Version Path
goca-spree-core-3.1.14.rails.5.0.1 app/models/spree/reimbursement_tax_calculator.rb
goca-spree-core-3.1.14.rails.5.0 app/models/spree/reimbursement_tax_calculator.rb
goca-spree-core-3.1.15.rails.5.0 app/models/spree/reimbursement_tax_calculator.rb
goca-spree-core-3.1.15.pre.rails.pre.5.0 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.2.9 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.1.14 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.3.6 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.2.8 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.1.13 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.3.5 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.3.4 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.2.7 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.1.12 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.3.3 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.2.6 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.1.11 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.1.10 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.3.2 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.2.5 app/models/spree/reimbursement_tax_calculator.rb
spree_core-3.1.9 app/models/spree/reimbursement_tax_calculator.rb