Sha256: 203d8c4ccc1aab9853144c36482161151f887afccec96bc6416510d8717de39e

Contents?: true

Size: 1.27 KB

Versions: 45

Compression:

Stored size: 1.27 KB

Contents

class AddCountOnHandToVariantsAndProducts < ActiveRecord::Migration
  def self.up
    add_column :variants, :count_on_hand, :integer, :default => 0, :null => false
    add_column :products, :count_on_hand, :integer, :default => 0, :null => false

    # In some cases needed to reflect changes in table structure
    Variant.reset_column_information
    Product.reset_column_information

    say_with_time 'Transfering inventory units with status on_hand to variants table...' do
      Variant.all.each do |v|
        v.update_attribute(:count_on_hand, v.inventory_units.with_state("on_hand").size)
        InventoryUnit.destroy_all(:variant_id => v.id, :state => "on_hand")
      end
    end

    say_with_time 'Updating products count on hand' do
      Product.all.each do |p|
        product_count_on_hand = p.has_variants? ?
            p.variants.inject(0) {|acc, v| acc + v.count_on_hand} :
            (p.master ? p.master.count_on_hand : 0)
        p.update_attribute(:count_on_hand, product_count_on_hand)
      end
    end
  end

  def self.down
    Variant.all.each do |v|
      v.count_on_hand.times do
        InventoryUnit.create(:variant => variant, :state => 'on_hand')
      end
    end
    remove_column :variants, :count_on_hand
    remove_column :products, :count_on_hand
  end
end

Version data entries

45 entries across 33 versions & 8 rubygems

Version Path
spree_core-0.70.7 db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
spree_core-0.70.6 db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
apispree_core-0.0.0 db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
My-Commerce_core-1.1.0 db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
My-Commerce_core-1.0.0 db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
MyCommerceapi-1.0.0 core/spec/test_app/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
MyCommerceapi-1.0.0 dash/spec/test_app/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
MyCommerceapi-1.0.0 api/spec/test_app/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
MyCommerceapi-1.0.0 sandbox/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
MyCommerceapi-1.0.0 auth/spec/test_app/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
MyCommerceapi-1.0.0 core/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
MyCommerceapi-1.0.0 promo/spec/test_app/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
MyCommerce-0.0.3 sandbox/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
MyCommerce-0.0.3 api/spec/test_app/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
MyCommerce-0.0.3 auth/spec/test_app/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
MyCommerce-0.0.3 core/spec/test_app/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
MyCommerce-0.0.3 dash/spec/test_app/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
MyCommerce-0.0.3 promo/spec/test_app/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
MyCommerce-0.0.3 core/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
rfcommerce_sandbox-0.0.3 db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb