Initial commit of foodsoft 2
This commit is contained in:
commit
5b9a7e05df
657 changed files with 70444 additions and 0 deletions
36
db/migrate/001_create_users.rb
Normal file
36
db/migrate/001_create_users.rb
Normal 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
|
||||
53
db/migrate/002_create_groups.rb
Normal file
53
db/migrate/002_create_groups.rb
Normal 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
|
||||
38
db/migrate/003_create_suppliers.rb
Normal file
38
db/migrate/003_create_suppliers.rb
Normal 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
|
||||
33
db/migrate/004_create_article_meta.rb
Normal file
33
db/migrate/004_create_article_meta.rb
Normal 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
|
||||
38
db/migrate/005_create_financial_transactions.rb
Normal file
38
db/migrate/005_create_financial_transactions.rb
Normal 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
|
||||
36
db/migrate/006_create_articles.rb
Normal file
36
db/migrate/006_create_articles.rb
Normal 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
|
||||
35
db/migrate/007_create_article_prices.rb
Normal file
35
db/migrate/007_create_article_prices.rb
Normal 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
|
||||
118
db/migrate/008_create_orders.rb
Normal file
118
db/migrate/008_create_orders.rb
Normal 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
|
||||
41
db/migrate/009_create_order_results.rb
Normal file
41
db/migrate/009_create_order_results.rb
Normal 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
|
||||
12
db/migrate/010_user_password_reset.rb
Normal file
12
db/migrate/010_user_password_reset.rb
Normal 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
|
||||
19
db/migrate/011_create_comments.rb
Normal file
19
db/migrate/011_create_comments.rb
Normal 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
|
||||
18
db/migrate/012_create_order_clearing.rb
Normal file
18
db/migrate/012_create_order_clearing.rb
Normal 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
|
||||
25
db/migrate/013_add_messaging.rb
Normal file
25
db/migrate/013_add_messaging.rb
Normal 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
|
||||
37
db/migrate/014_create_tasks.rb
Normal file
37
db/migrate/014_create_tasks.rb
Normal 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
|
||||
11
db/migrate/015_change_result_quantities.rb
Normal file
11
db/migrate/015_change_result_quantities.rb
Normal 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
|
||||
15
db/migrate/016_add_shared_lists_connection.rb
Normal file
15
db/migrate/016_add_shared_lists_connection.rb
Normal 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
|
||||
9
db/migrate/017_add_min_order_quantity.rb
Normal file
9
db/migrate/017_add_min_order_quantity.rb
Normal 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
|
||||
16
db/migrate/018_create_invites.rb
Normal file
16
db/migrate/018_create_invites.rb
Normal 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
|
||||
11
db/migrate/019_remove_uniqueness_of_article_name.rb
Normal file
11
db/migrate/019_remove_uniqueness_of_article_name.rb
Normal 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
|
||||
9
db/migrate/020_add_users_last_login.rb
Normal file
9
db/migrate/020_add_users_last_login.rb
Normal 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
|
||||
75
db/migrate/021_remove_table_article_prices.rb
Normal file
75
db/migrate/021_remove_table_article_prices.rb
Normal 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
|
||||
14
db/migrate/022_add_required_user_for_task.rb
Normal file
14
db/migrate/022_add_required_user_for_task.rb
Normal 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
|
||||
23
db/migrate/023_new_wording.rb
Normal file
23
db/migrate/023_new_wording.rb
Normal 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
|
||||
12
db/migrate/024_add_deposit_defaults.rb
Normal file
12
db/migrate/024_add_deposit_defaults.rb
Normal 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
|
||||
9
db/migrate/025_extend_comments.rb
Normal file
9
db/migrate/025_extend_comments.rb
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue