Sha256: 99ca21f8f5bbc5975c70892c5281e24a48d329b67a2cae278b136e4477f30e98

Contents?: true

Size: 861 Bytes

Versions: 9

Compression:

Stored size: 861 Bytes

Contents

module Spree
  module Tax
    # Add tax adjustments to all line items and shipments in an order
    class OrderAdjuster
      attr_reader :order

      include TaxHelpers

      # @param [Spree::Order] order to be adjusted
      def initialize(order)
        @order = order
      end

      # Creates tax adjustments for all taxable items (shipments and line items)
      # in the given order.
      def adjust!
        return unless order_tax_zone(order)

        (order.line_items + order.shipments).each do |item|
          ItemAdjuster.new(item, order_wide_options).adjust!
        end
      end

      private

      def order_wide_options
        {
          rates_for_order_zone: rates_for_order_zone(order),
          rates_for_default_zone: rates_for_default_zone,
          order_tax_zone: order_tax_zone(order),
        }
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
solidus_core-2.0.3 app/models/spree/tax/order_adjuster.rb
solidus_core-1.4.2 app/models/spree/tax/order_adjuster.rb
solidus_core-2.0.2 app/models/spree/tax/order_adjuster.rb
solidus_core-1.4.1 app/models/spree/tax/order_adjuster.rb
solidus_core-2.0.1 app/models/spree/tax/order_adjuster.rb
solidus_core-2.0.0 app/models/spree/tax/order_adjuster.rb
solidus_core-1.4.0 app/models/spree/tax/order_adjuster.rb
solidus_core-2.0.0.rc1 app/models/spree/tax/order_adjuster.rb
solidus_core-1.4.0.rc1 app/models/spree/tax/order_adjuster.rb