Sha256: a75ef4d594608ffe41b21eb680094ef2dd194bbc860e1088c689860fe3e785be

Contents?: true

Size: 1.19 KB

Versions: 8

Compression:

Stored size: 1.19 KB

Contents

module Spree
  module Adjustable
    class AdjustmentsUpdater
      def self.update(adjustable)
        new(adjustable).update
      end

      def initialize(adjustable)
        @adjustable = adjustable
        adjustable.reload if shipment? && adjustable && adjustable.persisted?
      end

      def update
        return unless adjustable_still_exists?

        totals = {
          non_taxable_adjustment_total: 0,
          taxable_adjustment_total: 0
        }
        adjusters.each do |klass|
          klass.adjust(@adjustable, totals)
        end

        persist_totals totals
      end

      private

      def persist_totals(totals)
        attributes = totals
        attributes[:adjustment_total] = totals[:non_taxable_adjustment_total] +
          totals[:taxable_adjustment_total] +
          totals[:additional_tax_total]
        attributes[:updated_at] = Time.current
        @adjustable.update_columns(totals)
      end

      def shipment?
        @adjustable.is_a?(Shipment)
      end

      def adjusters
        Rails.application.config.spree.adjusters
      end

      def adjustable_still_exists?
        @adjustable && @adjustable.class.exists?(@adjustable.id)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
spree_core-3.6.6 app/models/spree/adjustable/adjustments_updater.rb
spree_core-3.6.5 app/models/spree/adjustable/adjustments_updater.rb
spree_core-3.6.4 app/models/spree/adjustable/adjustments_updater.rb
spree_core-3.6.3 app/models/spree/adjustable/adjustments_updater.rb
spree_core-3.6.2 app/models/spree/adjustable/adjustments_updater.rb
spree_core-3.6.1 app/models/spree/adjustable/adjustments_updater.rb
spree_core-3.6.0 app/models/spree/adjustable/adjustments_updater.rb
spree_core-3.6.0.rc1 app/models/spree/adjustable/adjustments_updater.rb