ecom_core 1.2.30 → 1.2.35

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) 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/models/ecom/core/attendance_sheet.rb +19 -19
  4. data/app/models/ecom/core/available_unit_of_measurement.rb +10 -0
  5. data/app/models/ecom/core/crew.rb +14 -3
  6. data/app/models/ecom/core/crew_contract.rb +41 -1
  7. data/app/models/ecom/core/crew_contract_transaction.rb +29 -0
  8. data/app/models/ecom/core/crew_id_card.rb +36 -0
  9. data/app/models/ecom/core/crew_time.rb +11 -3
  10. data/app/models/ecom/core/dimension_element.rb +22 -0
  11. data/app/models/ecom/core/inspection_checklist.rb +6 -0
  12. data/app/models/ecom/core/job_card.rb +1 -1
  13. data/app/models/ecom/core/material.rb +6 -0
  14. data/app/models/ecom/core/material_identity.rb +21 -0
  15. data/app/models/ecom/core/material_item.rb +18 -0
  16. data/app/models/ecom/core/material_sub_type.rb +20 -0
  17. data/app/models/ecom/core/measurement_unit.rb +55 -0
  18. data/app/models/ecom/core/overtime_sheet.rb +26 -16
  19. data/app/models/ecom/core/payroll.rb +3 -3
  20. data/app/models/ecom/core/plan.rb +18 -0
  21. data/app/models/ecom/core/project.rb +0 -3
  22. data/app/models/ecom/core/project_template.rb +11 -0
  23. data/app/models/ecom/core/project_work_item_template.rb +9 -0
  24. data/app/models/ecom/core/schedule_setting.rb +8 -6
  25. data/app/models/ecom/core/{project_crew.rb → site.rb} +8 -4
  26. data/app/models/ecom/core/site_crew.rb +27 -0
  27. data/app/models/ecom/core/takeoff.rb +10 -0
  28. data/app/models/ecom/core/task.rb +32 -4
  29. data/app/models/ecom/core/task_inspection_checklist.rb +18 -0
  30. data/app/models/ecom/core/task_resource.rb +2 -0
  31. data/app/models/ecom/core/task_template.rb +22 -2
  32. data/app/models/ecom/core/task_template_inspection_checklist.rb +8 -0
  33. data/app/models/ecom/core/work_order.rb +26 -0
  34. data/app/models/ecom/core/work_package.rb +3 -0
  35. data/app/models/ecom/core/work_product.rb +3 -18
  36. data/app/models/ecom/core/work_product_template.rb +2 -2
  37. data/app/services/ecom/core/crew_contract_transaction_service.rb +89 -0
  38. data/app/services/ecom/core/site_crew_service.rb +44 -0
  39. data/app/uploaders/ecom/core/photo_uploader.rb +8 -1
  40. data/config/routes.rb +2 -2
  41. data/db/migrate/20191119012030_create_ecom_core_task_templates.rb +6 -1
  42. data/db/migrate/20191119013236_create_ecom_core_work_product_templates.rb +0 -15
  43. data/db/migrate/20191119021405_create_ecom_core_project_templates.rb +15 -0
  44. data/db/migrate/20191119034319_create_ecom_core_project_work_item_templates.rb +20 -0
  45. data/db/migrate/20191201145849_create_ecom_core_sites.rb +16 -0
  46. data/db/migrate/20191202222210_create_ecom_core_work_packages.rb +12 -0
  47. data/db/migrate/20191202235434_create_ecom_core_work_products.rb +2 -18
  48. data/db/migrate/{20191225100054_create_ecom_core_crews.rb → 20191207103729_create_ecom_core_crews.rb} +3 -3
  49. data/db/migrate/20191207103730_create_ecom_core_plans.rb +12 -0
  50. data/db/migrate/20191207103731_create_ecom_core_work_orders.rb +23 -0
  51. data/db/migrate/20191207103735_create_ecom_core_tasks.rb +23 -7
  52. data/db/migrate/20191225140433_create_ecom_core_attendance_sheets.rb +4 -4
  53. data/db/migrate/20200126081005_create_ecom_core_payrolls.rb +3 -3
  54. data/db/migrate/20200410090701_create_ecom_core_overtime_sheets.rb +4 -4
  55. data/db/migrate/20200616044231_create_ecom_core_material_sub_types.rb +14 -0
  56. data/db/migrate/20200616051902_create_ecom_core_material_identities.rb +17 -0
  57. data/db/migrate/20200618105233_create_ecom_core_material_items.rb +16 -0
  58. data/db/migrate/20200813165553_create_ecom_core_measurement_units.rb +14 -0
  59. data/db/migrate/20200813165555_create_ecom_core_available_unit_of_measurements.rb +16 -0
  60. data/db/migrate/20200814043632_create_ecom_core_takeoffs.rb +14 -0
  61. data/db/migrate/20200901085227_create_ecom_core_crew_contracts.rb +7 -1
  62. data/db/migrate/20200901134912_create_ecom_core_dimension_elements.rb +23 -0
  63. data/db/migrate/20200919085613_create_ecom_core_job_cards.rb +1 -0
  64. data/db/migrate/20201013072924_create_ecom_core_crew_contract_transactions.rb +16 -0
  65. data/db/migrate/20201013090609_create_ecom_core_site_crews.rb.rb +22 -0
  66. data/db/migrate/20201013094100_create_ecom_core_crew_id_cards.rb +16 -0
  67. data/db/migrate/20201113050953_create_ecom_core_task_inspection_checklists.rb +22 -0
  68. data/db/migrate/20201113094302_create_ecom_core_task_template_inspection_checklists.rb +17 -0
  69. data/lib/ecom/core/version.rb +1 -1
  70. data/spec/factories/ecom/core/attendance_sheet_entries.rb +1 -1
  71. data/spec/factories/ecom/core/attendance_sheets.rb +1 -1
  72. data/spec/factories/ecom/core/available_unit_of_measurements.rb +6 -0
  73. data/spec/factories/ecom/core/crew_contract_transactions.rb +8 -0
  74. data/spec/factories/ecom/core/crew_contracts.rb +12 -0
  75. data/spec/factories/ecom/core/crew_id_cards.rb +8 -0
  76. data/spec/factories/ecom/core/dimension_elements.rb +8 -0
  77. data/spec/factories/ecom/core/inspection_checklists.rb +5 -0
  78. data/spec/factories/ecom/core/maintenance_statuses.rb +1 -1
  79. data/spec/factories/ecom/core/material_identities.rb +6 -0
  80. data/spec/factories/ecom/core/material_items.rb +6 -0
  81. data/spec/factories/ecom/core/material_sub_types.rb +6 -0
  82. data/spec/factories/ecom/core/materials.rb +5 -0
  83. data/spec/factories/ecom/core/measurement_units.rb +16 -0
  84. data/spec/factories/ecom/core/overtime_sheets.rb +1 -1
  85. data/spec/factories/ecom/core/payrolls.rb +1 -1
  86. data/spec/factories/ecom/core/plans.rb +8 -0
  87. data/spec/factories/ecom/core/project_templates.rb +8 -0
  88. data/spec/factories/ecom/core/project_work_item_templates.rb +7 -0
  89. data/spec/factories/ecom/core/site_crews.rb +10 -0
  90. data/spec/factories/ecom/core/sites.rb +8 -0
  91. data/spec/factories/ecom/core/takeoffs.rb +6 -0
  92. data/spec/factories/ecom/core/task_inspection_checklists.rb +11 -0
  93. data/spec/factories/ecom/core/task_template_inspection_checklists.rb +7 -0
  94. data/spec/factories/ecom/core/task_templates.rb +11 -1
  95. data/spec/factories/ecom/core/tasks.rb +8 -3
  96. data/spec/factories/ecom/core/work_orders.rb +10 -0
  97. data/spec/factories/ecom/core/work_packages.rb +6 -0
  98. data/spec/factories/ecom/core/work_product_templates.rb +0 -1
  99. data/spec/factories/ecom/core/work_products.rb +1 -8
  100. metadata +75 -9
  101. data/app/services/ecom/core/project_crew_service.rb +0 -39
  102. data/db/migrate/20191225121850_create_ecom_core_project_crews.rb +0 -19
  103. data/db/migrate/20200922044959_add_costs_approved_to_job_card.rb +0 -5
  104. data/spec/factories/ecom/core/project_crews.rb +0 -9
@@ -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,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
@@ -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
@@ -12,7 +12,14 @@ module Ecom
12
12
  end
13
13
 
14
14
  def filename
15
- original_filename
15
+ "#{secure_token}.#{file.extension}" if original_filename.present?
16
+ end
17
+
18
+ protected
19
+
20
+ def secure_token
21
+ var = :"@#{mounted_as}_secure_token"
22
+ model.instance_variable_get(var) || model.instance_variable_set(var, SecureRandom.uuid)
16
23
  end
17
24
  end
18
25
  end
@@ -15,6 +15,6 @@ 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
20
  end
@@ -10,7 +10,12 @@ class CreateEcomCoreTaskTemplates < ActiveRecord::Migration[6.0]
10
10
  foreign_key: { to_table: :ecom_core_task_template_types }
11
11
  t.string :ancestry, index: true
12
12
  t.boolean :has_takeoff_fields, null:false, default: false
13
- t.jsonb :fields
13
+ t.jsonb :takeoff_fields, null: false, default: {}
14
+ t.integer :percentage_contribution
15
+ t.integer :task_sequence
16
+ t.boolean :has_inspection, null: false, default: false
17
+ t.boolean :discipline, null: false, default: false
18
+ t.jsonb :task_completion_detail, null: false, default: {}
14
19
 
15
20
  t.timestamps
16
21
  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
@@ -0,0 +1,16 @@
1
+ class CreateEcomCoreSites < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_sites do |t|
4
+ t.string :name, null: false
5
+ t.string :address, null: false
6
+ t.string :description
7
+ t.references :project,
8
+ null: false,
9
+ index: { name: 'site_on_project_indx' },
10
+ foreign_key: { to_table: :ecom_core_projects }
11
+ t.string :status, null: false, default: 'Active'
12
+
13
+ t.timestamps
14
+ end
15
+ end
16
+ end
@@ -6,6 +6,18 @@ class CreateEcomCoreWorkPackages < ActiveRecord::Migration[6.0]
6
6
  t.string :description
7
7
  t.date :start_date
8
8
  t.date :end_date
9
+ t.string :location
10
+ t.decimal :budget, precision: 10, scale: 2
11
+ t.string :resource_required
12
+ t.string :concerns
13
+ t.references :site_engineer,
14
+ null: true,
15
+ index: { name: 'wp_on_si_indx' },
16
+ foreign_key: { to_table: :ecom_core_users }
17
+ t.references :project_manager,
18
+ null: true,
19
+ index: { name: 'wp_on_pm_indx' },
20
+ foreign_key: { to_table: :ecom_core_users }
9
21
  t.references :project,
10
22
  null: false,
11
23
  index: { name: 'wp_on_project_indx' },
@@ -3,8 +3,7 @@ class CreateEcomCoreWorkProducts < ActiveRecord::Migration[6.0]
3
3
  create_table :ecom_core_work_products do |t|
4
4
  t.string :name, null: false
5
5
  t.string :description
6
- t.string :design_reference_no, unique: true
7
- t.json :dimension
6
+ t.string :design_reference, unique: true
8
7
  t.references :product_group,
9
8
  null: true,
10
9
  index: { name: 'wp_on_pg_indx' },
@@ -17,28 +16,13 @@ class CreateEcomCoreWorkProducts < ActiveRecord::Migration[6.0]
17
16
  null: false,
18
17
  index: { name: 'projects_on_wp_indx' },
19
18
  foreign_key: { to_table: :ecom_core_projects }
20
- t.string :status, default: 'New'
21
- t.integer :percent_completed, null: false, default: 0
22
19
  t.string :remark
23
- t.references :approver,
24
- null: true,
25
- index: false,
26
- foreign_key: { to_table: :ecom_core_users }
27
- t.references :supervisor,
28
- null: true,
29
- index: false,
30
- foreign_key: { to_table: :ecom_core_users }
31
- t.references :quality_controller,
32
- null: true,
33
- index: false,
34
- foreign_key: { to_table: :ecom_core_users }
35
20
  t.datetime :start_date
36
21
  t.datetime :completion_date
37
- t.boolean :tasks_generated, null: false, default: false
38
22
 
39
23
  t.timestamps
40
24
  end
41
25
 
42
- add_index :ecom_core_work_products, %i[design_reference_no project_id], unique: true, name: 'wp_on_drpi_indx'
26
+ add_index :ecom_core_work_products, %i[design_reference project_id], unique: true, name: 'wp_on_dr_pi_indx'
43
27
  end
44
28
  end
@@ -9,12 +9,12 @@ class CreateEcomCoreCrews < ActiveRecord::Migration[6.0]
9
9
  t.string :qualification, null: false
10
10
  t.string :employment, null: false
11
11
  t.float :wage, null: false
12
- t.string :wage_in_words, null: false
12
+ t.string :wage_in_words
13
13
  t.date :employment_date
14
14
  t.boolean :sub_contracted, null: false, default: false
15
15
  t.string :photo
16
- t.string :guarantor_name
17
- t.string :guarantor_phone
16
+ t.string :guarantor_name, null: false
17
+ t.string :guarantor_phone, null: false
18
18
  t.boolean :active, null: false, default: true
19
19
  t.references :crew_type,
20
20
  null: false,
@@ -0,0 +1,12 @@
1
+ class CreateEcomCorePlans < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_plans do |t|
4
+ t.string :name, null: false
5
+ t.date :start_date, null: false
6
+ t.date :end_date, null: false
7
+ t.string :status, null: false, default: 'New'
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,23 @@
1
+ class CreateEcomCoreWorkOrders < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_work_orders do |t|
4
+ t.string :name
5
+ t.string :reference_number
6
+ t.references :assigned_to,
7
+ null: false,
8
+ index: { name: 'wo_on_at_indx' },
9
+ foreign_key: { to_table: :ecom_core_crews }
10
+
11
+ t.references :generated_by,
12
+ null: false,
13
+ index: { name: 'wo_on_gb_indx' },
14
+ foreign_key: { to_table: :ecom_core_users }
15
+
16
+ t.date :start_date, null: false
17
+ t.date :end_date, null: false
18
+ t.string :status, null: false, default: :new
19
+
20
+ t.timestamps
21
+ end
22
+ end
23
+ end
@@ -10,25 +10,41 @@ class CreateEcomCoreTasks < ActiveRecord::Migration[6.0]
10
10
  t.string :status, null: false, default: :new
11
11
  t.integer :percent_completed, null: false, default: 0
12
12
  t.string :remark
13
+ t.date :inspection_submission_date
14
+ t.string :inspection_status, null: false, default: 'Not Inspected'
15
+ t.boolean :change_order, null: false, default: false
16
+ t.integer :percentage_contribution
17
+ t.references :change_order_for,
18
+ null: true,
19
+ index: { name: 'tasks_on_cot_indx' },
20
+ foreign_key: { to_table: :ecom_core_tasks }
13
21
  t.references :work_package,
14
22
  null: true,
15
- index: { name: 'wp_on_wp_indx' },
23
+ index: { name: 'tasks_on_work_package_indx' },
16
24
  foreign_key: { to_table: :ecom_core_work_packages }
25
+ t.references :work_order,
26
+ null: true,
27
+ index: { name: 'tasks_on_wo_indx' },
28
+ foreign_key: { to_table: :ecom_core_work_orders }
29
+ t.references :plan,
30
+ null: true,
31
+ index: { name: 'tasks_on_plan_indx' },
32
+ foreign_key: { to_table: :ecom_core_plans }
17
33
  t.references :performer,
18
34
  null: true,
19
35
  index: { name: 'tasks_on_performer_indx' },
20
36
  foreign_key: { to_table: :ecom_core_users }
21
- t.references :approver,
37
+ t.references :client_consultant,
22
38
  null: true,
23
- index: { name: 'tasks_on_approver_indx' },
39
+ index: { name: 'tasks_on_cc_indx' },
24
40
  foreign_key: { to_table: :ecom_core_users }
25
- t.references :supervisor,
41
+ t.references :foreman,
26
42
  null: true,
27
- index: { name: 'tasks_on_supervisor_indx' },
43
+ index: { name: 'tasks_on_foreman_indx' },
28
44
  foreign_key: { to_table: :ecom_core_users }
29
- t.references :quality_controller,
45
+ t.references :inspector,
30
46
  null: true,
31
- index: { name: 'tasks_on_qc_indx' },
47
+ index: { name: 'tasks_on_inspector_indx' },
32
48
  foreign_key: { to_table: :ecom_core_users }
33
49
  t.references :work_product,
34
50
  null: false,
@@ -7,13 +7,13 @@ class CreateEcomCoreAttendanceSheets < ActiveRecord::Migration[6.0]
7
7
  t.datetime :approved_at
8
8
  t.string :remark
9
9
  t.string :status, null: false, default: 'Open'
10
- t.references :project,
10
+ t.references :site,
11
11
  null: false,
12
- index: { name: 'as_on_project_indx' },
13
- foreign_key: { to_table: :ecom_core_projects }
12
+ index: { name: 'as_on_site_indx' },
13
+ foreign_key: { to_table: :ecom_core_sites }
14
14
 
15
15
  t.timestamps
16
16
  end
17
- add_index :ecom_core_attendance_sheets, %i[date project_id], unique: true
17
+ add_index :ecom_core_attendance_sheets, %i[date site_id], unique: true
18
18
  end
19
19
  end