Sha256: 1a8cb86bf5611ddd93f0387b4303eb11fe42dea1014576f49b1e48eb6e93dee3

Contents?: true

Size: 766 Bytes

Versions: 7

Compression:

Stored size: 766 Bytes

Contents

module Spree
  module AdjustmentSource
    extend ActiveSupport::Concern

    included do
      def deals_with_adjustments_for_deleted_source
        adjustment_scope = self.adjustments.joins(:order)

        # For incomplete orders, remove the adjustment completely.
        adjustment_scope.where(spree_orders: { completed_at: nil }).destroy_all

        # For complete orders, the source will be invalid.
        # Therefore we nullify the source_id, leaving the adjustment in place.
        # This would mean that the order's total is not altered at all.
        attrs = {
          source_id: nil,
          updated_at: Time.current
        }
        adjustment_scope.where.not(spree_orders: { completed_at: nil }).update_all(attrs)
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
solidus_core-1.2.3 app/models/concerns/spree/adjustment_source.rb
solidus_core-1.2.2 app/models/concerns/spree/adjustment_source.rb
solidus_core-1.2.1 app/models/concerns/spree/adjustment_source.rb
solidus_core-1.2.0 app/models/concerns/spree/adjustment_source.rb
solidus_core-1.2.0.rc2 app/models/concerns/spree/adjustment_source.rb
solidus_core-1.2.0.rc1 app/models/concerns/spree/adjustment_source.rb
solidus_core-1.2.0.beta1 app/models/concerns/spree/adjustment_source.rb