ecom_core 1.2.34 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/ecom/core/{project_crews_controller.rb → site_crews_controller.rb} +5 -4
  3. data/app/controllers/ecom/core/unit_costs_controller.rb +29 -0
  4. data/app/models/ecom/core/attendance_sheet.rb +19 -19
  5. data/app/models/ecom/core/available_unit_of_measurement.rb +10 -0
  6. data/app/models/ecom/core/crew.rb +4 -2
  7. data/app/models/ecom/core/crew_contract.rb +41 -1
  8. data/app/models/ecom/core/crew_contract_transaction.rb +29 -0
  9. data/app/models/ecom/core/crew_id_card.rb +36 -0
  10. data/app/models/ecom/core/inspection_checklist.rb +6 -0
  11. data/app/models/ecom/core/lookahead_plan.rb +41 -0
  12. data/app/models/ecom/core/lookahead_plan_history.rb +16 -0
  13. data/app/models/ecom/core/lookahead_plan_review_time.rb +29 -0
  14. data/app/models/ecom/core/lookahead_plan_task_progress.rb +22 -0
  15. data/app/models/ecom/core/material.rb +6 -0
  16. data/app/models/ecom/core/material_identity.rb +21 -0
  17. data/app/models/ecom/core/material_item.rb +18 -0
  18. data/app/models/ecom/core/material_sub_type.rb +20 -0
  19. data/app/models/ecom/core/measurement_unit.rb +4 -14
  20. data/app/models/ecom/core/overtime_sheet.rb +13 -15
  21. data/app/models/ecom/core/payroll.rb +3 -3
  22. data/app/models/ecom/core/project.rb +0 -3
  23. data/app/models/ecom/core/project_template.rb +13 -0
  24. data/app/models/ecom/core/project_work_item_template.rb +9 -0
  25. data/app/models/ecom/core/resource_requisition.rb +21 -0
  26. data/app/models/ecom/core/resource_requisition_item.rb +45 -0
  27. data/app/models/ecom/core/{project_crew.rb → site.rb} +8 -4
  28. data/app/models/ecom/core/site_crew.rb +27 -0
  29. data/app/models/ecom/core/stakeholder.rb +1 -1
  30. data/app/models/ecom/core/task.rb +22 -9
  31. data/app/models/ecom/core/task_attachment.rb +11 -0
  32. data/app/models/ecom/core/task_inspection_checklist.rb +18 -0
  33. data/app/models/ecom/core/task_template.rb +20 -90
  34. data/app/models/ecom/core/task_template_inspection_checklist.rb +8 -0
  35. data/app/models/ecom/core/unit_cost.rb +27 -0
  36. data/app/models/ecom/core/unit_of_measure.rb +8 -0
  37. data/app/models/ecom/core/work_item_resource_requirement_template.rb +18 -0
  38. data/app/models/ecom/core/work_package.rb +3 -0
  39. data/app/models/ecom/core/work_product.rb +2 -18
  40. data/app/models/ecom/core/work_product_template.rb +2 -2
  41. data/app/serializers/ecom/core/unit_cost_serializer.rb +21 -0
  42. data/app/services/ecom/core/crew_contract_transaction_service.rb +89 -0
  43. data/app/services/ecom/core/menu_service.rb +2 -2
  44. data/app/services/ecom/core/site_crew_service.rb +44 -0
  45. data/app/uploaders/ecom/core/photo_uploader.rb +5 -1
  46. data/app/uploaders/ecom/core/task_attachment_uploader.rb +11 -0
  47. data/config/initializers/carrierwave.rb +8 -0
  48. data/config/routes.rb +4 -2
  49. data/db/migrate/20191118052213_create_ecom_core_unit_of_measures.rb +11 -0
  50. data/db/migrate/20191119012030_create_ecom_core_task_templates.rb +10 -8
  51. data/db/migrate/20191119013236_create_ecom_core_work_product_templates.rb +0 -15
  52. data/db/migrate/20191119021405_create_ecom_core_project_templates.rb +15 -0
  53. data/db/migrate/20191119034319_create_ecom_core_project_work_item_templates.rb +20 -0
  54. data/db/migrate/20191201145849_create_ecom_core_sites.rb +16 -0
  55. data/db/migrate/20191202222210_create_ecom_core_work_packages.rb +12 -0
  56. data/db/migrate/20191202235434_create_ecom_core_work_products.rb +2 -17
  57. data/db/migrate/20191207103730_create_ecom_core_lookahead_plans.rb +19 -0
  58. data/db/migrate/20191207103735_create_ecom_core_tasks.rb +15 -10
  59. data/db/migrate/20191225140433_create_ecom_core_attendance_sheets.rb +4 -4
  60. data/db/migrate/20200126081005_create_ecom_core_payrolls.rb +3 -3
  61. data/db/migrate/20200410090701_create_ecom_core_overtime_sheets.rb +4 -4
  62. data/db/migrate/20200616044231_create_ecom_core_material_sub_types.rb +14 -0
  63. data/db/migrate/20200616051902_create_ecom_core_material_identities.rb +17 -0
  64. data/db/migrate/20200618105233_create_ecom_core_material_items.rb +16 -0
  65. data/db/migrate/20200813165555_create_ecom_core_available_unit_of_measurements.rb +16 -0
  66. data/db/migrate/20200901085227_create_ecom_core_crew_contracts.rb +7 -1
  67. data/db/migrate/20201013072924_create_ecom_core_crew_contract_transactions.rb +16 -0
  68. data/db/migrate/20201013090609_create_ecom_core_site_crews.rb.rb +22 -0
  69. data/db/migrate/20201013094100_create_ecom_core_crew_id_cards.rb +16 -0
  70. data/db/migrate/20201113050953_create_ecom_core_task_inspection_checklists.rb +22 -0
  71. data/db/migrate/20201113094302_create_ecom_core_task_template_inspection_checklists.rb +17 -0
  72. data/db/migrate/20201121064916_create_ecom_core_unit_costs.rb +30 -0
  73. data/db/migrate/20201122123227_create_ecom_core_lookahead_plan_backlogs.rb +18 -0
  74. data/db/migrate/20201122170645_create_ecom_core_lookahead_plan_histories.rb +21 -0
  75. data/db/migrate/20201122170724_create_ecom_core_lookahead_plan_task_progresses.rb +21 -0
  76. data/db/migrate/20201123134917_create_ecom_core_task_attachments.rb +15 -0
  77. data/db/migrate/20201124171642_create_ecom_core_lookahead_plan_review_times.rb +17 -0
  78. data/db/migrate/20201125191158_create_ecom_core_work_item_resource_requirement_templates.rb +31 -0
  79. data/db/migrate/20201126191334_create_ecom_core_resource_requisitions.rb +23 -0
  80. data/db/migrate/20201126191349_create_ecom_core_resource_requisition_items.rb +33 -0
  81. data/lib/ecom/core/version.rb +1 -1
  82. data/spec/factories/ecom/core/attendance_sheets.rb +1 -1
  83. data/spec/factories/ecom/core/available_unit_of_measurements.rb +6 -0
  84. data/spec/factories/ecom/core/crew_contract_transactions.rb +8 -0
  85. data/spec/factories/ecom/core/crew_contracts.rb +12 -0
  86. data/spec/factories/ecom/core/crew_id_cards.rb +8 -0
  87. data/spec/factories/{dimension_elements.rb → ecom/core/dimension_elements.rb} +0 -0
  88. data/spec/factories/ecom/core/inspection_checklists.rb +5 -0
  89. data/spec/factories/ecom/core/lookahead_plan_histories.rb +9 -0
  90. data/spec/factories/ecom/core/lookahead_plan_review_times.rb +8 -0
  91. data/spec/factories/ecom/core/lookahead_plan_task_progresses.rb +9 -0
  92. data/spec/factories/ecom/core/lookahead_plans.rb +10 -0
  93. data/spec/factories/ecom/core/material_identities.rb +6 -0
  94. data/spec/factories/ecom/core/material_items.rb +6 -0
  95. data/spec/factories/ecom/core/material_sub_types.rb +6 -0
  96. data/spec/factories/ecom/core/materials.rb +5 -0
  97. data/spec/factories/{measurement_units.rb → ecom/core/measurement_units.rb} +6 -0
  98. data/spec/factories/ecom/core/overtime_sheets.rb +1 -1
  99. data/spec/factories/ecom/core/payrolls.rb +1 -1
  100. data/spec/factories/ecom/core/project_templates.rb +8 -0
  101. data/spec/factories/ecom/core/project_work_item_templates.rb +7 -0
  102. data/spec/factories/ecom/core/resource_requisition_items.rb +12 -0
  103. data/spec/factories/ecom/core/resource_requisitions.rb +9 -0
  104. data/spec/factories/ecom/core/site_crews.rb +10 -0
  105. data/spec/factories/ecom/core/sites.rb +8 -0
  106. data/spec/factories/ecom/core/task_attachments.rb +8 -0
  107. data/spec/factories/ecom/core/task_inspection_checklists.rb +11 -0
  108. data/spec/factories/ecom/core/task_template_inspection_checklists.rb +7 -0
  109. data/spec/factories/ecom/core/task_templates.rb +11 -6
  110. data/spec/factories/ecom/core/tasks.rb +9 -3
  111. data/spec/factories/ecom/core/unit_costs.rb +13 -0
  112. data/spec/factories/ecom/core/unit_of_measures.rb +7 -0
  113. data/spec/factories/ecom/core/work_item_resource_requirement_templates.rb +10 -0
  114. data/spec/factories/ecom/core/work_packages.rb +6 -0
  115. data/spec/factories/ecom/core/work_product_templates.rb +0 -1
  116. data/spec/factories/ecom/core/work_products.rb +1 -7
  117. metadata +97 -23
  118. data/app/controllers/concerns/ecom/core/filterable.rb +0 -14
  119. data/app/models/ecom/core/plan.rb +0 -18
  120. data/app/models/ecom/core/takeoff_calculator.rb +0 -115
  121. data/app/models/ecom/core/task_step.rb +0 -85
  122. data/app/models/ecom/core/task_step_dependency.rb +0 -10
  123. data/app/services/ecom/core/project_crew_service.rb +0 -39
  124. data/db/migrate/20191119012027_create_ecom_core_takeoff_calculators.rb +0 -11
  125. data/db/migrate/20191207103730_create_ecom_core_plans.rb +0 -12
  126. data/db/migrate/20191225121850_create_ecom_core_project_crews.rb +0 -19
  127. data/db/migrate/20200820123719_create_ecom_core_task_steps.rb +0 -17
  128. data/db/migrate/20200821130934_create_ecom_core_task_step_dependencies.rb +0 -16
  129. data/spec/factories/ecom/core/plans.rb +0 -8
  130. data/spec/factories/ecom/core/project_crews.rb +0 -9
  131. data/spec/factories/ecom/core/takeoff_calculators.rb +0 -18
  132. data/spec/factories/ecom/core/task_step_dependencies.rb +0 -6
  133. data/spec/factories/ecom/core/task_steps.rb +0 -8
@@ -0,0 +1,8 @@
1
+ module Ecom
2
+ module Core
3
+ class TaskTemplateInspectionChecklist < ApplicationRecord
4
+ belongs_to :task_template
5
+ belongs_to :inspection_checklist
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,27 @@
1
+ module Ecom
2
+ module Core
3
+ class UnitCost < ApplicationRecord
4
+ before_save :update_previous_unit_cost
5
+
6
+ belongs_to :resource_type
7
+ belongs_to :measurement_unit
8
+ belongs_to :currency
9
+ belongs_to :set_by, class_name: 'Ecom::Core::User'
10
+
11
+ validates :quantity, :effective_date, :utilization_factor, :set_by_id, :set_by, presence: true
12
+
13
+ validates :price, presence: true, numericality: { greater_than: 0 }
14
+ validates :utilization_factor, presence: true, numericality: { greater_than: 0, less_than_or_equal_to: 1 }
15
+
16
+ def update_previous_unit_cost
17
+ return if resource_type_id.nil?
18
+
19
+ return if active_changed?(from: true, to: false)
20
+
21
+ Ecom::Core::UnitCost
22
+ .where(resource_type_id: resource_type_id, active: true)
23
+ .update(active: false)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,8 @@
1
+ module Ecom
2
+ module Core
3
+ class UnitOfMeasure < ApplicationRecord
4
+ validates :code, :name, presence: true
5
+ validates :code, uniqueness: true
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,18 @@
1
+ module Ecom
2
+ module Core
3
+ class WorkItemResourceRequirementTemplate < ApplicationRecord
4
+ belongs_to :project_work_item_template
5
+ belongs_to :resource_type
6
+ belongs_to :work_item_quantity_measurement_unit, class_name: 'Ecom::Core::MeasurementUnit'
7
+ belongs_to :resource_quantity_measurement_unit, class_name: 'Ecom::Core::MeasurementUnit'
8
+
9
+ validates :project_work_item_template_id, :project_work_item_template,
10
+ :resource_type_id, :resource_type, :work_item_quantity_measurement_unit_id,
11
+ :work_item_quantity_measurement_unit, :resource_quantity_measurement_unit_id,
12
+ :resource_quantity_measurement_unit, presence: true
13
+
14
+ validates :work_item_quantity, presence: true, numericality: { greater_than: 0 }
15
+ validates :resource_quantity, presence: true, numericality: { greater_than: 0 }
16
+ end
17
+ end
18
+ end
@@ -2,9 +2,12 @@ module Ecom
2
2
  module Core
3
3
  class WorkPackage < ApplicationRecord
4
4
  belongs_to :project
5
+ belongs_to :site_engineer, class_name: 'Ecom::Core::User', optional: true
6
+ belongs_to :project_manager, class_name: 'Ecom::Core::User', optional: true
5
7
 
6
8
  validates :code, :name, presence: true
7
9
  validates :code, uniqueness: true
10
+ validates :budget, numericality: true, unless: proc { budget.nil? }
8
11
 
9
12
  has_many :tasks
10
13
  end
@@ -15,30 +15,14 @@
15
15
  module Ecom
16
16
  module Core
17
17
  class WorkProduct < ApplicationRecord
18
- include AASM
19
-
20
- NEW = 'New'.freeze
21
- UNDER_CONSTRUCTION = 'Under Construction'.freeze
22
- COMPLETED = 'Completed'.freeze
23
-
24
- STATUSES = [NEW, UNDER_CONSTRUCTION, COMPLETED].freeze
25
-
26
18
  belongs_to :work_product_template
27
19
  belongs_to :project
28
20
  belongs_to :product_group, optional: true
29
- belongs_to :approver, class_name: 'Ecom::Core::User', optional: true
30
- belongs_to :supervisor, class_name: 'Ecom::Core::User', optional: true
31
- belongs_to :quality_controller, class_name: 'Ecom::Core::User', optional: true
32
21
  has_many :tasks
33
22
  has_many :dimension_elements
34
23
 
35
- validates :name, :design_reference_no, :status, :percent_completed, presence: true
36
- validates :design_reference_no, uniqueness: { scope: :project_id }
37
- validates :status, inclusion: STATUSES
38
- validates_numericality_of :percent_completed,
39
- only_integer: true,
40
- greater_than_or_equal_to: 0,
41
- less_than_or_equal_to: 100
24
+ validates :name, :design_reference, presence: true
25
+ validates :design_reference, uniqueness: { scope: :project_id }
42
26
  end
43
27
  end
44
28
  end
@@ -2,8 +2,8 @@ module Ecom
2
2
  module Core
3
3
  class WorkProductTemplate < ApplicationRecord
4
4
  validates :code, :name, presence: true, uniqueness: true
5
- belongs_to :task_template_type
6
- has_and_belongs_to_many :task_templates
5
+ has_many :project_work_item_templates
6
+ has_many :task_templates, through: :project_work_item_templates
7
7
  has_many :product_types
8
8
  end
9
9
  end
@@ -0,0 +1,21 @@
1
+ module Ecom
2
+ module Core
3
+ class UnitCostSerializer < ActiveModel::Serializer
4
+ attributes :id, :resource_type_id, :quantity, :measurement_unit_id,
5
+ :price, :currency_id, :utilization_factor, :effective_date, :set_by_id,
6
+ :resource_type, :measurement_unit, :currency
7
+
8
+ def resource_type
9
+ object.resource_type
10
+ end
11
+
12
+ def measurement_unit
13
+ object.measurement_unit
14
+ end
15
+
16
+ def currency
17
+ object.currency.name
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,89 @@
1
+ module Ecom
2
+ module Core
3
+ class CrewContractTransactionService
4
+ def execute(transaction_type, crew_contract)
5
+ Ecom::Core::CrewContractTransaction.transaction do
6
+ case transaction_type
7
+ when Ecom::Core::CrewContractTransaction::TXN_UPDATE_CREW_TYPE
8
+
9
+ create_new_id_card(crew_contract.crew, crew_contract.to)
10
+ # update crew type
11
+ crew = crew_contract.crew
12
+ crew.update(crew_type_id: crew_contract.crew_type_id)
13
+
14
+ when Ecom::Core::CrewContractTransaction::TXN_UPDATE_PLACE_OF_WORK
15
+
16
+ create_new_id_card(crew_contract.crew, crew_contract.to)
17
+
18
+ when Ecom::Core::CrewContractTransaction::TXN_UPDATE_WAGE
19
+
20
+ crew = crew_contract.crew
21
+ # update wage
22
+ crew.update(wage: crew_contract.wage, wage_in_words: crew_contract.wage_in_words)
23
+
24
+ when Ecom::Core::CrewContractTransaction::TXN_UPDATE_VALIDITY
25
+
26
+ # make crew active
27
+ create_new_id_card(crew_contract.crew, crew_contract.to)
28
+ make_crew_active(crew_contract.crew)
29
+ activate_contract(crew_contract)
30
+
31
+ when Ecom::Core::CrewContractTransaction::TXN_TERMINATE_CONTRACT
32
+
33
+ # make crew inactive
34
+ make_crew_inactive(crew_contract.crew)
35
+
36
+ # make ID card invalid
37
+ invalidate_id_card(crew_contract.crew)
38
+
39
+ # make the contract void
40
+ deactivate_contract(crew_contract)
41
+
42
+ end
43
+ end
44
+ end
45
+
46
+ def activate_contract(crew_contract)
47
+ crew_contract.update(status: :in_effect)
48
+ end
49
+
50
+ def deactivate_contract(crew_contract)
51
+ crew_contract.update(status: :void)
52
+ end
53
+
54
+ def make_crew_active(crew)
55
+ return if crew.active
56
+
57
+ crew.update(active: true)
58
+ end
59
+
60
+ def make_crew_inactive(crew)
61
+ return unless crew.active
62
+
63
+ crew.update(active: false)
64
+ end
65
+
66
+ # invalidate other Id cards and creates a new ID card
67
+ def create_new_id_card(crew, valid_until)
68
+ issued_on = Time.now
69
+
70
+ previous_id_card = Ecom::Core::CrewIdCard.where(crew_id: crew.id).last
71
+
72
+ previous_id_card&.update(status: 'Invalid')
73
+
74
+ new_id_card = Ecom::Core::CrewIdCard.new(
75
+ crew_id: crew.id,
76
+ issued_on: issued_on,
77
+ valid_until: valid_until,
78
+ status: 'Valid'
79
+ )
80
+ raise StandardError, new_id_card.errors.messages unless new_id_card.save
81
+ end
82
+
83
+ def invalidate_id_card(crew)
84
+ current_id_card = Ecom::Core::CrewIdCard.where(crew_id: crew.id).last
85
+ current_id_card.update(status: 'Invalid')
86
+ end
87
+ end
88
+ end
89
+ end
@@ -9,12 +9,12 @@ module Ecom
9
9
  SQL
10
10
  menu = Menu.joins(join_sql).where('UR.id IN (?)', role_ids).order(:id).distinct
11
11
  menu_list = menu.select { |m| m.parent.nil? }.each_with_object([]) do |item, list|
12
- list << { id: item.id, text: item.label, iconCss: item.icon, items: [] }
12
+ list << { id: item.id, label: item.label, icon: item.icon, items: [] }
13
13
  end
14
14
 
15
15
  menu_list.each do |ml|
16
16
  ml[:items] = menu.reject { |m| m.parent.nil? }.each_with_object([]) do |item, list|
17
- list << { id: item.id, text: item.label, iconCss: item.icon, url: item.route } if item.parent_id == ml[:id]
17
+ list << { id: item.id, label: item.label, icon: item.icon, url: item.route } if item.parent_id == ml[:id]
18
18
  end
19
19
  end
20
20
  { success: true, data: menu_list }
@@ -0,0 +1,44 @@
1
+ module Ecom
2
+ module Core
3
+ class SiteCrewService
4
+ def update(params)
5
+ id = params[:site_id]
6
+ crew = params[:crew]
7
+
8
+ # Process new additions
9
+ new_crew = crew.select { |c| c[:status] == 'checked' }
10
+ removed = crew.select { |c| c[:status] == 'unchecked' }
11
+
12
+ crew_ids = new_crew.map { |c| c[:crew_id] }
13
+
14
+ site_crew = Ecom::Core::Crew.where(id: crew_ids)
15
+
16
+ new_entries = []
17
+ new_crew.each do |nc|
18
+ new_entries << Ecom::Core::SiteCrew.new(
19
+ site_id: id, crew_id: nc[:crew_id], start_date: Date.today,
20
+ site_crew_type: 'Temporary site crew',
21
+ status: 'Active'
22
+ )
23
+ end
24
+
25
+ Ecom::Core::SiteCrew.transaction do
26
+ new_entries.each(&:save)
27
+ end
28
+
29
+ removed_ids = removed.map { |r| r[:crew_id] }
30
+ if removed_ids.count.positive?
31
+ removed_crews = Ecom::Core::SiteCrew.where(site_id: id, crew_id: removed_ids, status: 'Active')
32
+ Ecom::Core::SiteCrew.transaction do
33
+ # removed_crew.map(&:delete)
34
+ removed_crews.each do |removed_crew|
35
+ removed_crew.update(status: 'Inactive')
36
+ end
37
+ end
38
+ end
39
+
40
+ { success: true, data: site_crew }
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,7 +1,11 @@
1
1
  module Ecom
2
2
  module Core
3
3
  class PhotoUploader < CarrierWave::Uploader::Base
4
- storage :file
4
+ if Rails.env.production?
5
+ storage :fog
6
+ else
7
+ storage :file
8
+ end
5
9
 
6
10
  def store_dir
7
11
  "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
@@ -0,0 +1,11 @@
1
+ module Ecom
2
+ module Core
3
+ class TaskAttachmentUploader < CarrierWave::Uploader::Base
4
+ storage :file
5
+
6
+ def store_dir
7
+ "#{ENV.fetch('UPLOAD_PREFIX')}uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ CarrierWave.configure do |config|
2
+ config.fog_credentials = {
3
+ provider: 'Google',
4
+ google_storage_access_key_id: ENV["GOOGLE_STORAGE_ACCESS_KEY"],
5
+ google_storage_secret_access_key: ENV["GOOGLE_STORAGE_SECRETE_KEY"]
6
+ }
7
+ config.fog_directory = ENV["GOOGLE_STORAGE_BUCKET_NAME"]
8
+ end
@@ -15,6 +15,8 @@ Ecom::Core::Engine.routes.draw do
15
15
  resources :projects
16
16
  resources :companies
17
17
  get '/default_company', controller: :companies, action: :default_company
18
- get '/projects/:id/crew', controller: :project_crews, action: :index
19
- post '/project_crews', controller: :project_crews, action: :update
18
+ get '/sites/:id/crew', controller: :site_crews, action: :index
19
+ post '/site_crews', controller: :site_crews, action: :update
20
+
21
+ resources :unit_costs, only: %i[index create]
20
22
  end
@@ -0,0 +1,11 @@
1
+ class CreateEcomCoreUnitOfMeasures < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_unit_of_measures do |t|
4
+ t.string :code, unique: true
5
+ t.string :name, null: false
6
+ t.string :description
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -8,16 +8,18 @@ class CreateEcomCoreTaskTemplates < ActiveRecord::Migration[6.0]
8
8
  null: false,
9
9
  index: { name: 'tt_on_ttt_indx' },
10
10
  foreign_key: { to_table: :ecom_core_task_template_types }
11
- t.references :takeoff_calculator,
12
- null: true,
13
- index: { name: 'tt_on_tc_indx' },
14
- foreign_key: { to_table: :ecom_core_takeoff_calculators }
11
+ t.references :unit_of_measure,
12
+ null: false,
13
+ index: { name: 'tt_on_uof_indx' },
14
+ foreign_key: { to_table: :ecom_core_unit_of_measures }
15
15
  t.string :ancestry, index: true
16
16
  t.boolean :has_takeoff_fields, null:false, default: false
17
- t.jsonb :fields
18
- t.jsonb :takeoff_fields
19
- t.jsonb :task_steps
20
- t.jsonb :milestones
17
+ t.jsonb :takeoff_fields, null: false, default: {}
18
+ t.integer :percentage_contribution
19
+ t.integer :task_sequence
20
+ t.boolean :has_inspection, null: false, default: false
21
+ t.boolean :discipline, null: false, default: false
22
+ t.jsonb :task_completion_detail, null: false, default: {}
21
23
 
22
24
  t.timestamps
23
25
  end
@@ -4,23 +4,8 @@ class CreateEcomCoreWorkProductTemplates < ActiveRecord::Migration[6.0]
4
4
  t.string :code, null: false, unique: true
5
5
  t.string :name, null: false, unique: true
6
6
  t.string :description
7
- t.references :task_template_type,
8
- null: false,
9
- index: { name: 'wpt_on_ttt_indx' },
10
- foreign_key: { to_table: :ecom_core_task_template_types }
11
7
 
12
8
  t.timestamps
13
9
  end
14
-
15
- create_table :ecom_core_task_templates_work_product_templates do |t|
16
- t.references :task_template,
17
- null: false,
18
- index: { name: 'ttwpt_on_tt_indx' },
19
- foreign_key: { to_table: :ecom_core_task_templates }
20
- t.references :work_product_template,
21
- null: false,
22
- index: { name: 'ttwpt_on_wpt_indx' },
23
- foreign_key: { to_table: :ecom_core_work_product_templates }
24
- end
25
10
  end
26
11
  end
@@ -0,0 +1,15 @@
1
+ class CreateEcomCoreProjectTemplates < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_project_templates do |t|
4
+ t.string :code, unique: true
5
+ t.string :name, null: false
6
+ t.string :description
7
+ t.references :task_template_type,
8
+ null: false,
9
+ index: { name: 'pt_on_ttt_indx' },
10
+ foreign_key: { to_table: :ecom_core_task_template_types }
11
+
12
+ t.timestamps
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ class CreateEcomCoreProjectWorkItemTemplates < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_project_work_item_templates do |t|
4
+ t.references :task_template,
5
+ null: false,
6
+ index: { name: 'pwit_on_tt_indx' },
7
+ foreign_key: { to_table: :ecom_core_task_templates }
8
+ t.references :work_product_template,
9
+ null: false,
10
+ index: { name: 'pwit_on_wpt_indx' },
11
+ foreign_key: { to_table: :ecom_core_work_product_templates }
12
+ t.references :project_template,
13
+ null: false,
14
+ index: { name: 'pwit_on_pt_indx' },
15
+ foreign_key: { to_table: :ecom_core_project_templates }
16
+
17
+ t.timestamps
18
+ end
19
+ end
20
+ end