ecom_core 1.2.30 → 1.2.35

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 (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