Initial commit of foodsoft 2

This commit is contained in:
Benjamin Meichsner 2009-01-06 11:49:19 +01:00
commit 5b9a7e05df
657 changed files with 70444 additions and 0 deletions

View file

@ -0,0 +1,36 @@
class CreateUsers < ActiveRecord::Migration
USER_ADMIN = 'admin'
USER_TEST = 'test'
def self.up
create_table :users do |t|
t.column :nick, :string, :null => false
t.column :password_hash, :string, :null => false
t.column :password_salt, :string, :null => false
t.column :first_name, :string, :null => false
t.column :last_name, :string, :null => false
t.column :email, :string, :null => false
t.column :phone, :string
t.column :address, :string
t.column :created_on, :timestamp, :null => false
end
add_index(:users, :nick, :unique => true)
add_index(:users, :email, :unique => true)
# Create the default admin user...
puts "Creating user #{USER_ADMIN} with password 'secret'..."
user = User.new(:nick => USER_ADMIN, :first_name => "Anton", :last_name => "Administrator", :email => "admin@foo.test")
user.password = "secret"
raise "Failed!" unless user.save && User.find_by_nick(USER_ADMIN).has_password("secret")
# Create a normal user...
puts "Creating user #{USER_TEST} with password 'foobar'..."
user = User.new(:nick => USER_TEST, :first_name => "Tim", :last_name => "Tester", :email => "test@foo.test")
user.password = "foobar"
raise "Failed!" unless user.save && User.find_by_nick(USER_TEST).has_password("foobar")
end
def self.down
drop_table :users
end
end

View file

@ -0,0 +1,53 @@
class CreateGroups < ActiveRecord::Migration
GROUP_ADMIN = 'Administrators'
GROUP_ORDER = 'Sample Order Group'
def self.up
create_table :groups do |t|
t.column :type, :string, :null => false # inheritance, types: Group, OrderGroup
t.column :name, :string, :null => false
t.column :description, :string
t.column :actual_size, :integer # OrderGroup column
t.column :account_balance, :decimal, :precision => 8, :scale => 2, :null => false, :default => 0 # OrderGroup column
t.column :account_updated, :timestamp # OrderGroup column
t.column :created_on, :timestamp, :null => false
t.column :role_admin, :boolean, :default => false, :null => false
end
add_index(:groups, :name, :unique => true)
create_table :memberships do |t|
t.column :group_id, :integer, :null => false
t.column :user_id, :integer, :null => false
end
add_index(:memberships, [:user_id, :group_id], :unique => true)
# Create the default "Administrators" group...
puts "Creating group #{GROUP_ADMIN}..."
Group.create(:name => GROUP_ADMIN, :description => "System administrators.", :role_admin => true)
raise 'Failed!' unless administrators = Group.find_by_name(GROUP_ADMIN)
# Create a sample order group...
puts "Creating order group #{GROUP_ORDER}..."
ordergroup = OrderGroup.create!(:name => GROUP_ORDER, :description => "A sample order group created by the migration.", :actual_size => 1, :account_updated => Time.now)
raise "Wrong type created!" unless ordergroup.is_a?(OrderGroup)
# Get the admin user and join the admin group...
raise "User #{CreateUsers::USER_ADMIN} not found, cannot join group '#{administrators.name}'!" unless admin = User.find_by_nick(CreateUsers::USER_ADMIN)
puts "Joining #{CreateUsers::USER_ADMIN} user to new '#{administrators.name}' group as a group admin..."
membership = Membership.create(:group => administrators, :user => admin)
raise "Failed!" unless admin.memberships.first == membership
raise "User #{CreateUsers::USER_ADMIN} has no admin_roles" unless admin.role_admin?
# Get the test user and join the order group...
raise "User #{CreateUsers::USER_TEST} not found, cannot join group '#{ordergroup.name}'!" unless test = User.find_by_nick(CreateUsers::USER_TEST)
puts "Joining #{CreateUsers::USER_TEST} user to new '#{ordergroup.name}' group as a group admin..."
membership = Membership.create(:group => ordergroup, :user => test)
raise "Failed!" unless test.memberships.first == membership
end
def self.down
drop_table :groups
drop_table :memberships
end
end

View file

@ -0,0 +1,38 @@
class CreateSuppliers < ActiveRecord::Migration
SUPPLIER_SAMPLE = 'Sample Supplier'
def self.up
add_column :groups, :role_suppliers, :boolean, :default => false, :null => false
Group.reset_column_information
puts "Give #{CreateGroups::GROUP_ADMIN} the role supplier .."
raise "Failed" unless Group.find_by_name(CreateGroups::GROUP_ADMIN).update_attribute(:role_suppliers, true)
raise "Cannot find admin user!" unless admin = User.find_by_nick(CreateUsers::USER_ADMIN)
raise "Failed to enable role_suppliers with admin user!" unless admin.role_suppliers?
create_table :suppliers do |t|
t.column :name, :string, :null => false
t.column :address, :string, :null => false
t.column :phone, :string, :null => false
t.column :phone2, :string
t.column :fax, :string
t.column :email, :string
t.column :url, :string
t.column :contact_person, :string
t.column :customer_number, :string
t.column :delivery_days, :string
t.column :order_howto, :string
t.column :note, :string
end
add_index(:suppliers, :name, :unique => true)
# Create sample supplier...
puts "Creating sample supplier '#{SUPPLIER_SAMPLE}'..."
Supplier.create(:name => SUPPLIER_SAMPLE, :address => "Organic City", :phone => "0123-555555")
raise "Failed!" unless supplier = Supplier.find_by_name(SUPPLIER_SAMPLE)
end
def self.down
remove_column :groups, :role_suppliers
drop_table :suppliers
end
end

View file

@ -0,0 +1,33 @@
class CreateArticleMeta < ActiveRecord::Migration
CATEGORY_SAMPLE = 'Sample Category'
TAX_STANDARD = 'Standard'
TAX_REDUCED = 'Reduced'
def self.up
# Add user roles...
add_column :groups, :role_article_meta, :boolean, :default => false, :null => false
Group.reset_column_information
puts "Give #{CreateGroups::GROUP_ADMIN} the role article_meta .."
raise "Failed" unless Group.find_by_name(CreateGroups::GROUP_ADMIN).update_attribute(:role_article_meta, true)
raise 'Cannot find admin user!' unless admin = User.find_by_nick(CreateUsers::USER_ADMIN)
raise 'Failed to enable role_article_meta with admin user!' unless admin.role_article_meta?
# ArticleCategories
create_table :article_categories do |t|
t.column :name, :string, :null => false
t.column :description, :string
end
add_index(:article_categories, :name, :unique => true)
# Create sample category...
puts "Creating sample article category '#{CATEGORY_SAMPLE}'..."
ArticleCategory.create(:name => CATEGORY_SAMPLE, :description => "This is just a sample article category.")
raise "Failed!" unless category = ArticleCategory.find_by_name(CATEGORY_SAMPLE)
end
def self.down
remove_column :groups, :role_article_meta
drop_table :article_categories
end
end

View file

@ -0,0 +1,38 @@
class CreateFinancialTransactions < ActiveRecord::Migration
def self.up
# Create Financial Transactions
create_table :financial_transactions do |t|
t.column :order_group_id, :integer, :null => false
t.column :amount, :decimal, :precision => 8, :scale => 2, :null => false
t.column :note, :text, :null => false
t.column :user_id, :integer, :null => false
t.column :created_on, :datetime, :null => false
end
# add column for the finance role
puts 'add column in "groups" for the finance role'
add_column :groups, :role_finance, :boolean, :default => false, :null => false
Group.reset_column_information
puts "Give #{CreateGroups::GROUP_ADMIN} the role finance .."
raise "Failed" unless Group.find_by_name(CreateGroups::GROUP_ADMIN).update_attribute(:role_finance, true)
raise 'Cannot find admin user!' unless admin = User.find_by_nick(CreateUsers::USER_ADMIN)
raise 'Failed to enable role_finance with admin user!' unless admin.role_finance?
# Add transactions to the sample order group
puts "Add 30 transactions to the group '#{CreateGroups::GROUP_ORDER}'..."
raise "Group '#{CreateGroups::GROUP_ORDER}' not found!" unless ordergroup = Group.find_by_name(CreateGroups::GROUP_ORDER)
balance = 0
for i in 1..30
ordergroup.addFinancialTransaction(i, "Sample Transaction Nr. #{i}", admin)
balance += i
end
raise "Failed!" unless financial_transaction = FinancialTransaction.find_by_note('Sample Transaction Nr. 1')
raise "Failed to update account_balance!" unless OrderGroup.find(ordergroup.id).account_balance == balance
end
def self.down
remove_column :groups, :role_finance
drop_table :financial_transactions
end
end

View file

@ -0,0 +1,36 @@
class CreateArticles < ActiveRecord::Migration
SAMPLE_ARTICLE_NAMES = ['banana', 'kiwi', 'strawberry']
def self.up
create_table :articles do |t|
t.column :name, :string, :null => false
t.column :supplier_id, :integer, :null => false
t.column :article_category_id, :integer, :null => false
t.column :unit, :string, :null => false
t.column :note, :string
t.column :availability, :boolean, :default => true, :null => false
t.column :current_price_id, :integer
end
add_index(:articles, :name, :unique => true)
# Create 30 sample articles...
puts "Create 3 articles of the supplier '#{CreateSuppliers::SUPPLIER_SAMPLE}'..."
raise "Supplier '#{CreateSuppliers::SUPPLIER_SAMPLE}' not found!" unless supplier = Supplier.find_by_name(CreateSuppliers::SUPPLIER_SAMPLE)
raise "Category '#{CreateArticleMeta::CATEGORY_SAMPLE}' not found!" unless category = ArticleCategory.find_by_name(CreateArticleMeta::CATEGORY_SAMPLE)
SAMPLE_ARTICLE_NAMES.each do |a|
puts 'Create Article ' + a
Article.create( :name => a,
:supplier => supplier,
:article_category => category,
:unit => '500g',
:note => 'delicious',
:availability => true)
end
raise "Failed!" unless Article.find(:all).length == SAMPLE_ARTICLE_NAMES.length
end
def self.down
drop_table :articles
end
end

View file

@ -0,0 +1,35 @@
class CreateArticlePrices < ActiveRecord::Migration
def self.up
create_table :article_prices do |t|
t.column :article_id, :int, :null => false
t.column :clear_price, :decimal, :precision => 8, :scale => 2, :null => false
t.column :gross_price, :decimal, :precision => 8, :scale => 2, :null => false #gross price, incl. vat, refund and price markup
t.column :tax, :float, :null => false, :default => 0
t.column :refund, :decimal, :precision => 8, :scale => 2, :null => false, :default => 0
t.column :updated_on, :datetime
t.column :unit_quantity, :int, :default => 1, :null => false
t.column :order_number, :string
end
add_index(:article_prices, :article_id)
#add some prices ...
puts 'add prices to the sample articles'
CreateArticles::SAMPLE_ARTICLE_NAMES.each do |a|
puts 'Create Price for article ' + a
raise 'article #{a} not found!' unless article = Article.find_by_name(a)
new_price = ArticlePrice.new(:clear_price => rand(4)+1,
:tax => 7.0,
:refund => 0,
:unit_quantity => rand(10)+1,
:order_number => rand(9999))
article.add_price(new_price)
raise 'Failed!' unless ArticlePrice.find_by_article_id(article.id)
end
raise 'Failed!' unless ArticlePrice.find(:all).length == CreateArticles::SAMPLE_ARTICLE_NAMES.length
end
def self.down
drop_table :article_prices
end
end

View file

@ -0,0 +1,118 @@
class CreateOrders < ActiveRecord::Migration
ORDER_TEST = 'Test Order'
GROUP_ORDER = 'Orders'
def self.up
# Order role
add_column :groups, :role_orders, :boolean, :default => false, :null => false
Group.reset_column_information
puts "Give #{CreateGroups::GROUP_ADMIN} the role finance .."
raise "Failed" unless Group.find_by_name(CreateGroups::GROUP_ADMIN).update_attribute(:role_orders, true)
raise 'Cannot find admin user!' unless admin = User.find_by_nick(CreateUsers::USER_ADMIN)
raise 'Failed to enable role_orders with admin user!' unless admin.role_orders?
# Create the default "Order" group...
puts 'Creating group "Orders"...'
Group.create(:name => GROUP_ORDER, :description => "working group for managing orders", :role_orders => true)
raise "Failed!" unless Group.find_by_name(GROUP_ORDER)
# Order
create_table :orders do |t|
t.column :name, :string, :null => false
t.column :supplier_id, :integer, :null => false
t.column :starts, :datetime, :null => false
t.column :ends, :datetime
t.column :note, :string
t.column :finished, :boolean, :default => false, :null => false
t.column :booked, :boolean, :null => false, :default => false
t.column :lock_version, :integer, :null => false, :default => 0
t.column :updated_by_user_id, :integer
end
add_index(:orders, :starts)
add_index(:orders, :ends)
add_index(:orders, :finished)
puts "Creating order '#{ORDER_TEST}'..."
raise "Supplier '#{CreateSuppliers::SUPPLIER_SAMPLE}' not found!" unless supplier = Supplier.find_by_name(CreateSuppliers::SUPPLIER_SAMPLE)
Order.create(:name => ORDER_TEST, :supplier => supplier, :starts => Time.now)
raise 'Creating test order failed!' unless order = Order.find_by_name(ORDER_TEST)
# OrderArticle
create_table :order_articles do |t|
t.column :order_id, :integer, :null => false
t.column :article_id, :integer, :null => false
t.column :quantity, :integer, :null => false, :default => 0
t.column :tolerance, :integer, :null => false, :default => 0
t.column :units_to_order, :integer, :null => false, :default => 0
t.column :lock_version, :integer, :null => false, :default => 0
end
add_index(:order_articles, [:order_id, :article_id], :unique => true)
puts 'Adding articles to the order...'
CreateArticles::SAMPLE_ARTICLE_NAMES.each { | a |
puts "Article #{a}..."
raise 'Article not found!' unless article = Article.find_by_name(a)
raise 'No price found for article!' unless price = article.current_price
OrderArticle.create(:order => order, :article => article)
raise 'Creating OrderArticle failed!' unless OrderArticle.find_by_order_id_and_article_id(order.id, article.id)
}
raise 'Creating OrderArticles failed!' unless order.articles.size == CreateArticles::SAMPLE_ARTICLE_NAMES.length
# GroupOrder
create_table :group_orders do |t|
t.column :order_group_id, :integer, :null => false
t.column :order_id, :integer, :null => false
t.column :price, :decimal, :precision => 8, :scale => 2, :null => false, :default => 0
t.column :lock_version, :integer, :null => false, :default => 0
t.column :updated_on, :timestamp, :null => false
t.column :updated_by_user_id, :integer, :null => false
end
add_index(:group_orders, [:order_group_id, :order_id], :unique => true)
puts 'Adding group order...'
raise "Cannot find user #{CreateUsers::USER_TEST}" unless user = User.find_by_nick(CreateUsers::USER_TEST)
raise "Cannot find OrderGroup '#{CreateGroups::GROUP_ORDER}'!" unless orderGroup = OrderGroup.find_by_name(CreateGroups::GROUP_ORDER)
GroupOrder.create(:order_group => orderGroup, :order => order, :price => 0, :updated_by => user)
raise 'Retrieving group order failed!' unless groupOrder = orderGroup.group_orders.find(:first, :conditions => "order_id = #{order.id}")
# GroupOrderArticles
create_table :group_order_articles do |t|
t.column :group_order_id, :integer, :null => false
t.column :order_article_id, :integer, :null => false
t.column :quantity, :integer, :null => false
t.column :tolerance, :integer, :null => false
t.column :updated_on, :timestamp, :null => false
end
add_index(:group_order_articles, [:group_order_id, :order_article_id], :unique => true, :name => "goa_index")
# GroupOrderArticleQuantity
create_table :group_order_article_quantities do |t|
t.column :group_order_article_id, :int, :null => false
t.column :quantity, :int, :default => 0
t.column :tolerance, :int, :default => 0
t.column :created_on, :timestamp, :null => false
end
puts 'Adding articles to group order...'
order.order_articles.each { | orderArticle |
puts "Article #{orderArticle.article.name}..."
GroupOrderArticle.create(:group_order => groupOrder, :order_article => orderArticle, :quantity => 0, :tolerance => 0)
raise 'Failed to create order!' unless article = GroupOrderArticle.find(:first, :conditions => "group_order_id = #{groupOrder.id} AND order_article_id = #{orderArticle.id}")
article.updateQuantities(rand(6) + 1, rand(4) + 1)
}
raise 'Failed to create orders!' unless groupOrder.order_articles.size == order.order_articles.size
groupOrder.updatePrice
raise 'Failed to update GroupOrder.price' unless groupOrder.save!
# Update order
order.updateQuantities
end
def self.down
remove_column :groups, :role_orders
drop_table :orders
drop_table :order_articles
drop_table :group_orders
drop_table :group_order_articles
drop_table :group_order_article_quantities
end
end

View file

@ -0,0 +1,41 @@
class CreateOrderResults < ActiveRecord::Migration
def self.up
create_table :group_order_results do |t|
t.column :order_id, :int, :null => false
t.column :group_name, :string, :null => false
t.column :price, :decimal, :precision => 8, :scale => 2, :null => false, :default => 0
end
add_index(:group_order_results, [:group_name, :order_id], :unique => true)
create_table :order_article_results do |t|
t.column :order_id, :int, :null => false
t.column :name, :string, :null => false
t.column :unit, :string, :null => false
t.column :note, :string
t.column :clear_price, :decimal, :precision => 8, :scale => 2, :null => false
t.column :gross_price, :decimal, :precision => 8, :scale => 2, :null => false
t.column :tax, :float, :null => false, :default => 0
t.column :refund, :decimal, :precision => 8, :scale => 2
t.column :fc_markup, :float, :null => false
t.column :order_number, :string
t.column :unit_quantity, :int, :null => false
t.column :units_to_order, :int, :null => false
end
add_index(:order_article_results, :order_id)
create_table :group_order_article_results do |t|
t.column :order_article_result_id, :int, :null => false
t.column :group_order_result_id, :int, :null => false
t.column :quantity, :int, :null => false
t.column :tolerance, :int
end
add_index(:group_order_article_results, :order_article_result_id)
add_index(:group_order_article_results, :group_order_result_id)
end
def self.down
drop_table :group_order_results
drop_table :order_article_results
drop_table :group_order_article_results
end
end

View file

@ -0,0 +1,12 @@
class UserPasswordReset < ActiveRecord::Migration
def self.up
add_column :users, :reset_password_token, :string
add_column :users, :reset_password_expires, :timestamp
end
def self.down
remove_column :users, :reset_password_token
remove_column :users, :reset_password_expires
end
end

View file

@ -0,0 +1,19 @@
class CreateComments < ActiveRecord::Migration
def self.up
create_table :comments, :force => true do |t|
t.column :title, :string, :limit => 50, :default => ""
t.column :comment, :string, :default => ""
t.column :created_at, :datetime, :null => false
t.column :commentable_id, :integer, :default => 0, :null => false
t.column :commentable_type, :string, :limit => 15,
:default => "", :null => false
t.column :user_id, :integer, :default => 0, :null => false
end
add_index :comments, ["user_id"], :name => "fk_comments_user"
end
def self.down
drop_table :comments
end
end

View file

@ -0,0 +1,18 @@
class CreateOrderClearing < ActiveRecord::Migration
def self.up
add_column :orders, :invoice_amount, :decimal, :precision => 8, :scale => 2, :null => false, :default => 0
add_column :orders, :refund, :decimal, :precision => 8, :scale => 2, :null => false, :default => 0
add_column :orders, :refund_credit, :decimal, :precision => 8, :scale => 2, :null => false, :default => 0
add_column :orders, :invoice_number, :string
add_column :orders, :invoice_date, :string
end
def self.down
remove_column :orders, :invoice_amount
remove_column :orders, :refund
remove_column :orders, :refund_credit
remove_column :orders, :invoice_number
remove_column :orders, :invoice_date
end
end

View file

@ -0,0 +1,25 @@
class AddMessaging < ActiveRecord::Migration
def self.up
# Table that holds the messages:
create_table :messages do |t|
t.column :sender_id, :integer
t.column :recipient_id, :integer, :null => false
t.column :recipients, :string, :null => false
t.column :subject, :string, :null => false
t.column :body, :text, :null => false
t.column :read, :boolean, :null => false, :default => false
t.column :email_state, :integer, :null => false
t.column :created_on, :timestamp, :null => false
end
add_index(:messages, :sender_id)
add_index(:messages, :recipient_id)
# Setup acts_as_configurable plugin for user options etc.
ConfigurableSetting.create_table
end
def self.down
drop_table :messages
ConfigurableSetting.drop_table
end
end

View file

@ -0,0 +1,37 @@
class CreateTasks < ActiveRecord::Migration
def self.up
create_table :tasks do |t|
t.column :name, :string, :null => false
t.column :description, :string
t.column :due_date, :date
t.column :done, :boolean, :default => false
t.column :group_id, :integer
t.column :assigned, :boolean, :default => false
t.column :created_on, :datetime, :null => false
t.column :updated_on, :datetime, :null => false
end
add_index :tasks, :name
add_index :tasks, :due_date
create_table :assignments do |t|
t.column :user_id, :integer, :null => false
t.column :task_id, :integer, :null => false
t.column :accepted, :boolean, :default => false
end
add_index :assignments, [:user_id, :task_id], :unique => true
add_column :groups, :weekly_task, :boolean, :default => false # if group has an job for every week
add_column :groups, :weekday, :integer # e.g. 1 means monday, 2 = tuesday an so on
add_column :groups, :task_name, :string # the name of the weekly task
add_column :groups, :task_description, :string
end
def self.down
drop_table :tasks
drop_table :assignments
remove_column :groups, :weekly_task
remove_column :groups, :weekday
remove_column :groups, :task_name
remove_column :groups, :task_description
end
end

View file

@ -0,0 +1,11 @@
class ChangeResultQuantities < ActiveRecord::Migration
def self.up
change_column :group_order_article_results, :quantity, :decimal, :precision => 6, :scale => 3
change_column :order_article_results, :units_to_order, :decimal, :precision => 6, :scale => 3, :null => false
end
def self.down
change_column :group_order_article_results, :quantity, :integer, :null => false
change_column :order_article_results, :units_to_order,:integer, :default => 0, :null => false
end
end

View file

@ -0,0 +1,15 @@
class AddSharedListsConnection < ActiveRecord::Migration
def self.up
add_column :suppliers, :shared_supplier_id, :integer
add_column :articles, :manufacturer , :string
add_column :articles, :origin, :string
add_column :articles, :shared_updated_on, :timestamp
end
def self.down
remove_column :suppliers, :shared_supplier_id
remove_column :articles, :manufacturer
remove_column :articles, :origin
remove_column :articles, :shared_updated_on
end
end

View file

@ -0,0 +1,9 @@
class AddMinOrderQuantity < ActiveRecord::Migration
def self.up
add_column :suppliers, :min_order_quantity, :string
end
def self.down
remove_column :suppliers, :min_order_quantity
end
end

View file

@ -0,0 +1,16 @@
class CreateInvites < ActiveRecord::Migration
def self.up
create_table :invites do |t|
t.column :token, :string, :null => false
t.column :expires_at, :timestamp, :null => false
t.column :group_id, :integer, :null => false
t.column :user_id, :integer, :null => false
t.column :email, :string, :null => false
end
add_index :invites, :token
end
def self.down
drop_table :invites
end
end

View file

@ -0,0 +1,11 @@
class RemoveUniquenessOfArticleName < ActiveRecord::Migration
def self.up
remove_index :articles, :name
add_index :articles, [:name, :supplier_id]
end
def self.down
remove_index :articles, [:name, :supplier_id]
add_index :articles, :name, :unique => true
end
end

View file

@ -0,0 +1,9 @@
class AddUsersLastLogin < ActiveRecord::Migration
def self.up
add_column :users, :last_login, :datetime
end
def self.down
remove_column :users, :last_login
end
end

View file

@ -0,0 +1,75 @@
class RemoveTableArticlePrices < ActiveRecord::Migration
def self.up
puts "create columns in articles ..."
add_column "articles", "clear_price", :decimal, :precision => 8, :scale => 2, :default => 0.0, :null => false
add_column "articles", "gross_price", :decimal, :precision => 8, :scale => 2, :default => 0.0, :null => false
add_column "articles", "tax", :float
add_column "articles", "refund", :decimal, :precision => 8, :scale => 2, :default => 0.0, :null => false
add_column "articles", "unit_quantity", :integer, :default => 1, :null => false
add_column "articles", "order_number", :string
add_column "articles", "created_at", :datetime
add_column "articles", "updated_at", :datetime
# stop auto-updating the timestamps to make the data-copy safe!
Article.record_timestamps = false
puts "now copy values of article_prices into new articles-columns..."
Article.find(:all).each do |article|
price = article.current_price
article.update_attributes!(:clear_price => price.clear_price,
:gross_price => price.gross_price,
:tax => price.tax,
:refund => price.refund,
:unit_quantity => price.unit_quantity,
:order_number => price.order_number,
:updated_at => price.updated_on,
:created_at => price.updated_on)
end
puts "delete article_prices, current_price attribute"
drop_table :article_prices
remove_column :articles, :current_price_id
end
def self.down
add_column :articles, :current_price_id, :integer
create_table "article_prices", :force => true do |t|
t.integer "article_id", :default => 0, :null => false
t.decimal "clear_price", :precision => 8, :scale => 2, :default => 0.0, :null => false
t.decimal "gross_price", :precision => 8, :scale => 2, :default => 0.0, :null => false
t.float "tax", :default => 0.0, :null => false
t.decimal "refund", :precision => 8, :scale => 2, :default => 0.0, :null => false
t.datetime "updated_on"
t.integer "unit_quantity", :default => 1, :null => false
t.string "order_number"
end
# copy data from article now into old ArticlePrice-object
Article.find(:all).each do |article|
price = ArticlePrice.create(:clear_price => article.clear_price,
:gross_price => article.gross_price,
:tax => article.tax,
:refund => article.refund,
:unit_quantity => article.unit_quantity,
:order_number => article.order_number.blank? ? nil : article.order_number,
:updated_on => article.updated_at)
article.update_attribute(:current_price, price)
price.update_attribute(:article, article)
end
# remove new columns
remove_column "articles", "clear_price"
remove_column "articles", "gross_price"
remove_column "articles", "tax"
remove_column "articles", "refund"
remove_column "articles", "unit_quantity"
remove_column "articles", "order_number"
remove_column "articles", "created_at"
remove_column "articles", "updated_at"
end
end

View file

@ -0,0 +1,14 @@
class AddRequiredUserForTask < ActiveRecord::Migration
def self.up
add_column :tasks, :required_users, :integer, :default => 1
add_column :groups, :task_required_users, :integer, :default => 1
# add default values to every task and group
Task.find(:all).each { |task| task.update_attribute :required_users, 1 }
Group.workgroups.each { |group| group.update_attribute :task_required_users, 1 }
end
def self.down
remove_column :tasks, :required_users
remove_column :groups, :tasks_required_users
end
end

View file

@ -0,0 +1,23 @@
class NewWording < ActiveRecord::Migration
def self.up
rename_column :articles, :clear_price, :net_price
rename_column :articles, :refund, :deposit
rename_column :order_article_results, :clear_price, :net_price
rename_column :order_article_results, :refund, :deposit
rename_column :orders, :refund, :deposit
rename_column :orders, :refund_credit, :deposit_credit
end
def self.down
rename_column :articles, :net_price, :clear_price
rename_column :articles, :deposit, :refund
rename_column :order_article_results, :net_price, :clear_price
rename_column :order_article_results, :deposit, :refund
rename_column :orders, :deposit, :refund
rename_column :orders, :deposit_credit, :refund_credit
end
end

View file

@ -0,0 +1,12 @@
class AddDepositDefaults < ActiveRecord::Migration
def self.up
change_column_default :articles, :deposit, 0.0
change_column_default :order_article_results, :net_price, 0.0
change_column_default :order_article_results, :deposit, 0.0
change_column_default :orders, :deposit, 0.0
change_column_default :orders, :deposit_credit, 0.0
end
def self.down
end
end

View file

@ -0,0 +1,9 @@
class ExtendComments < ActiveRecord::Migration
def self.up
change_column :comments, :comment, :text, :default => ""
end
def self.down
change_column :comments, :comment, :string, :default => ""
end
end