kanbanworkflowstimelinescrumrubyroadmapproject-planningproject-managementopenprojectangularissue-trackerifcgantt-chartganttbug-trackerboardsbcf
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
7.2 KiB
162 lines
7.2 KiB
#-- copyright
|
|
# OpenProject Costs Plugin
|
|
#
|
|
# Copyright (C) 2009 - 2014 the OpenProject Foundation (OPF)
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License
|
|
# version 3.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
#++
|
|
|
|
require Rails.root.join("db","migrate","migration_utils","migration_squasher").to_s
|
|
require Rails.root.join("db","migrate","migration_utils","setting_renamer").to_s
|
|
require 'open_project/plugins/migration_mapping'
|
|
# This migration aggregates the migrations detailed in MIGRATION_FILES
|
|
class AggregatedCostsMigrations < ActiveRecord::Migration
|
|
|
|
def initialize
|
|
super
|
|
@issues_table_exists = ActiveRecord::Base.connection.tables.include? 'issues'
|
|
end
|
|
|
|
MIGRATION_FILES = <<-MIGRATIONS
|
|
001_create_deliverables.rb
|
|
002_add_cost_types_default.rb
|
|
003_add_deliverable_to_issues.rb
|
|
004_add_rate.rb
|
|
005_add_deliverables_date_fields.rb
|
|
006_delete_cost_from_cost_entries.rb
|
|
007_refactor_deliverable_intermediates.rb
|
|
008_remove_budget_from_deliverable.rb
|
|
009_add_comment_field_to_budget.rb
|
|
010_add_free_text_to_budget_and_entries.rb
|
|
011_add_deleted_at_to_cost_types.rb
|
|
012_refactor_terms.rb
|
|
013_create_cost_queries.rb
|
|
014_add_denormalized_costs_fields.rb
|
|
015_add_cost_query_variables.rb
|
|
016_denormalize_spent_on_of_cost_entries.rb
|
|
017_rename_permissions.rb
|
|
018_higher_precision_for_currency.rb
|
|
20091123144305_add_permission_inheritance.rb
|
|
20091130214149_primary_key_for_groups_users.rb
|
|
20091204172554_remove_costs_from_issues.rb
|
|
20120313152442_create_initial_variable_cost_object_journals.rb
|
|
20121022124253_remove_group_user_enhancements.rb
|
|
MIGRATIONS
|
|
|
|
OLD_PLUGIN_NAME = "redmine_costs"
|
|
|
|
def up
|
|
migration_names = OpenProject::Plugins::MigrationMapping.migration_files_to_migration_names(MIGRATION_FILES, OLD_PLUGIN_NAME)
|
|
Migration::MigrationSquasher.squash(migration_names) do
|
|
create_table "cost_entries" do |t|
|
|
t.integer "user_id", :null => false
|
|
t.integer "project_id", :null => false
|
|
t.integer "issue_id", :null => false
|
|
t.integer "cost_type_id", :null => false
|
|
t.float "units", :null => false
|
|
t.date "spent_on", :null => false
|
|
t.datetime "created_on", :null => false
|
|
t.datetime "updated_on", :null => false
|
|
t.string "comments", :null => false
|
|
t.boolean "blocked", :default => false, :null => false
|
|
t.decimal "overridden_costs", :precision => 15, :scale => 4
|
|
t.decimal "costs", :precision => 15, :scale => 4
|
|
t.integer "rate_id"
|
|
t.integer "tyear", :null => false
|
|
t.integer "tmonth", :null => false
|
|
t.integer "tweek", :null => false
|
|
end
|
|
|
|
create_table "cost_objects" do |t|
|
|
t.integer "project_id", :null => false
|
|
t.integer "author_id", :null => false
|
|
t.string "subject", :null => false
|
|
t.text "description", :null => false
|
|
t.string "type", :null => false
|
|
t.boolean "project_manager_signoff", :default => false, :null => false
|
|
t.boolean "client_signoff", :default => false, :null => false
|
|
t.date "fixed_date", :null => false
|
|
t.datetime "created_on"
|
|
t.datetime "updated_on"
|
|
end
|
|
|
|
create_table "cost_types" do |t|
|
|
t.string "name", :null => false
|
|
t.string "unit", :null => false
|
|
t.string "unit_plural", :null => false
|
|
t.boolean "default", :default => false, :null => false
|
|
t.datetime "deleted_at"
|
|
end
|
|
|
|
create_table "labor_budget_items" do |t|
|
|
t.integer "cost_object_id", :null => false
|
|
t.float "hours", :null => false
|
|
t.integer "user_id"
|
|
t.string "comments", :default => "", :null => false
|
|
t.decimal "budget", :precision => 15, :scale => 4
|
|
end
|
|
|
|
create_table "material_budget_items" do |t|
|
|
t.integer "cost_object_id", :null => false
|
|
t.float "units", :null => false
|
|
t.integer "cost_type_id"
|
|
t.string "comments", :default => "", :null => false
|
|
t.decimal "budget", :precision => 15, :scale => 4
|
|
end
|
|
|
|
create_table "rates" do |t|
|
|
t.date "valid_from", :null => false
|
|
t.decimal "rate", :precision => 15, :scale => 4, :null => false
|
|
t.string "type", :null => false
|
|
t.integer "project_id"
|
|
t.integer "user_id"
|
|
t.integer "cost_type_id"
|
|
end
|
|
|
|
if @issues_table_exists
|
|
change_table "issues" do |t|
|
|
t.column :cost_object_id, :integer, :null => true
|
|
end
|
|
end
|
|
|
|
change_table "time_entries" do |t|
|
|
t.decimal "overridden_costs", :precision => 15, :scale => 4
|
|
t.decimal "costs", :precision => 15, :scale => 4
|
|
t.integer "rate_id"
|
|
end
|
|
TimeEntry.reset_column_information
|
|
Migration::SettingRenamer.rename("plugin_redmine_costs","plugin_openproject_costs")
|
|
end
|
|
end
|
|
|
|
def down
|
|
drop_table "cost_entries"
|
|
drop_table "cost_objects"
|
|
drop_table "cost_queries"
|
|
drop_table "cost_types"
|
|
drop_table "labor_budget_items"
|
|
drop_table "material_budget_items"
|
|
drop_table "rates"
|
|
if @issues_table_exists
|
|
remove_column :issues, :cost_object_id
|
|
end
|
|
|
|
change_table "time_entries" do |t|
|
|
t.remove_column "overridden_costs"
|
|
t.remove_column "costs"
|
|
t.remove_column "rate_id"
|
|
end
|
|
TimeEntry.reset_column_information
|
|
end
|
|
end
|
|
|