Sha256: 4029d13ba6cb5dfabd87023036e12cb435a7c316f4219ef6875dcaffba0ccc84

Contents?: true

Size: 1.84 KB

Versions: 107

Compression:

Stored size: 1.84 KB

Contents

class UpgradeAdjustments < ActiveRecord::Migration[4.2]
  def up
    # Add Temporary index
    add_index :spree_adjustments, :originator_type unless index_exists?(:spree_adjustments, :originator_type)

    # Temporarily make originator association available
    Spree::Adjustment.class_eval do
      belongs_to :originator, polymorphic: true
    end
    # Shipping adjustments are now tracked as fields on the object
    Spree::Adjustment.where(source_type: "Spree::Shipment").find_each do |adjustment|
      # Account for possible invalid data
      next if adjustment.source.nil?
      adjustment.source.update_column(:cost, adjustment.amount)
      adjustment.destroy!
    end

    # Tax adjustments have their sources altered
    Spree::Adjustment.where(originator_type: "Spree::TaxRate").find_each do |adjustment|
      adjustment.source_id = adjustment.originator_id
      adjustment.source_type = "Spree::TaxRate"
      adjustment.save!
    end

    # Promotion adjustments have their source altered also
    Spree::Adjustment.where(originator_type: "Spree::PromotionAction").find_each do |adjustment|
      next if adjustment.originator.nil?
      adjustment.source = adjustment.originator
      begin
        if adjustment.source.calculator_type == "Spree::Calculator::FreeShipping"
          # Previously this was a Spree::Promotion::Actions::CreateAdjustment
          # And it had a calculator to work out FreeShipping
          # In Spree 2.2, the "calculator" is now the action itself.
          adjustment.source.becomes(Spree::Promotion::Actions::FreeShipping)
        end
      rescue
        # Fail silently. This is primarily in instances where the calculator no longer exists
      end

      adjustment.save!
    end

    # Remove Temporary index
    remove_index :spree_adjustments, :originator_type if index_exists?(:spree_adjustments, :originator_type)
  end
end

Version data entries

107 entries across 107 versions & 1 rubygems

Version Path
spree_core-4.0.9 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.1.15 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.2.7 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.3.3 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.2.6 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.3.2 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.3.1 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.3.0 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.3.0.rc3 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.3.0.rc2 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.3.0.rc1 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.2.5 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.1.14 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.0.8 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.2.4 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-3.7.14.1 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.2.3.1 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.1.13.1 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.0.7.1 db/migrate/20130807024301_upgrade_adjustments.rb
spree_core-4.2.3 db/migrate/20130807024301_upgrade_adjustments.rb