ecom_core 1.2.4 → 1.2.10

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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/app/constants/ecom/core/status_constants.rb +11 -0
  3. data/app/controllers/ecom/core/access_controller.rb +1 -1
  4. data/app/models/ecom/core/attendance_sheet.rb +37 -26
  5. data/app/models/ecom/core/attendance_sheet_entry.rb +1 -1
  6. data/app/models/ecom/core/company.rb +10 -0
  7. data/app/models/ecom/core/crew.rb +4 -4
  8. data/app/models/ecom/core/crew_overtime.rb +6 -1
  9. data/app/models/ecom/core/crew_time.rb +7 -2
  10. data/app/models/ecom/core/overtime_sheet.rb +18 -15
  11. data/app/models/ecom/core/payment_detail.rb +1 -1
  12. data/app/models/ecom/core/payroll.rb +5 -0
  13. data/app/models/ecom/core/project.rb +4 -0
  14. data/app/models/ecom/core/project_crew.rb +15 -0
  15. data/config/database.ci.yml +1 -0
  16. data/db/migrate/20190101085530_create_ecom_core_companies.rb +14 -0
  17. data/db/migrate/20191119012030_create_ecom_core_task_templates.rb +4 -3
  18. data/db/migrate/20191119013236_create_ecom_core_work_product_templates.rb +4 -3
  19. data/db/migrate/20191119144618_create_ecom_core_stakeholders.rb +4 -3
  20. data/db/migrate/20191201131341_create_ecom_core_product_types.rb +4 -2
  21. data/db/migrate/20191201134420_create_ecom_core_work_component_templates.rb +8 -6
  22. data/db/migrate/20191201145848_create_ecom_core_projects.rb +28 -13
  23. data/db/migrate/20191202103735_create_ecom_core_tasks.rb +8 -5
  24. data/db/migrate/20191202105355_create_task_templates_resource_types.rb +8 -7
  25. data/db/migrate/20191202220832_create_ecom_core_users.rb +9 -6
  26. data/db/migrate/20191202220953_create_ecom_core_user_roles.rb +13 -8
  27. data/db/migrate/20191202221423_create_ecom_core_menus.rb +16 -9
  28. data/db/migrate/20191202235434_create_ecom_core_work_products.rb +29 -15
  29. data/db/migrate/20191206104247_create_ecom_core_work_components.rb +24 -14
  30. data/db/migrate/20191225100054_create_ecom_core_crews.rb +8 -4
  31. data/db/migrate/20191225121850_create_ecom_core_project_crews.rb +19 -0
  32. data/db/migrate/{20200401040433_create_ecom_core_attendance_sheets.rb → 20191225140433_create_ecom_core_attendance_sheets.rb} +6 -1
  33. data/db/migrate/20191225162539_create_ecom_core_attendance_sheet_entries.rb +17 -0
  34. data/db/migrate/20191225211712_create_ecom_core_crew_times.rb +15 -9
  35. data/db/migrate/20200126081005_create_ecom_core_payrolls.rb +4 -0
  36. data/db/migrate/20200126082103_create_ecom_core_payments.rb +6 -3
  37. data/db/migrate/20200126183218_create_ecom_core_payment_details.rb +10 -5
  38. data/db/migrate/20200307112519_create_ecom_core_custom_payment_details.rb +4 -3
  39. data/db/migrate/20200315145215_create_ecom_core_equipment_locations.rb +4 -3
  40. data/db/migrate/20200315150500_create_ecom_core_equipment_categories.rb +4 -2
  41. data/db/migrate/20200315152143_create_ecom_core_equipment.rb +4 -2
  42. data/db/migrate/20200315153640_create_ecom_core_equipment_items.rb +8 -5
  43. data/db/migrate/20200315160810_create_ecom_core_equipment_valuations.rb +4 -3
  44. data/db/migrate/20200316125323_create_ecom_core_equipment_components.rb +4 -3
  45. data/db/migrate/20200410090701_create_ecom_core_overtime_sheets.rb +7 -1
  46. data/db/migrate/20200410100035_create_ecom_core_overtime_sheet_entries.rb +8 -5
  47. data/db/migrate/20200410111827_create_ecom_core_crew_overtimes.rb +17 -11
  48. data/lib/ecom/core/version.rb +1 -1
  49. data/spec/factories/ecom/core/application_modules.rb +1 -1
  50. data/spec/factories/ecom/core/attendance_sheet_entries.rb +1 -1
  51. data/spec/factories/ecom/core/attendance_sheets.rb +3 -2
  52. data/spec/factories/ecom/core/companies.rb +9 -0
  53. data/spec/factories/ecom/core/crew_overtimes.rb +1 -1
  54. data/spec/factories/ecom/core/crew_times.rb +1 -1
  55. data/spec/factories/ecom/core/crew_types.rb +1 -1
  56. data/spec/factories/ecom/core/crews.rb +3 -1
  57. data/spec/factories/ecom/core/currencies.rb +1 -1
  58. data/spec/factories/ecom/core/custom_payment_details.rb +1 -1
  59. data/spec/factories/ecom/core/equipment.rb +1 -1
  60. data/spec/factories/ecom/core/equipment_categories.rb +1 -1
  61. data/spec/factories/ecom/core/equipment_components.rb +1 -1
  62. data/spec/factories/ecom/core/equipment_items.rb +1 -1
  63. data/spec/factories/ecom/core/equipment_locations.rb +1 -1
  64. data/spec/factories/ecom/core/equipment_types.rb +1 -1
  65. data/spec/factories/ecom/core/equipment_valuations.rb +1 -1
  66. data/spec/factories/ecom/core/location_types.rb +1 -1
  67. data/spec/factories/ecom/core/lookups.rb +1 -1
  68. data/spec/factories/ecom/core/material_types.rb +1 -1
  69. data/spec/factories/ecom/core/menus.rb +1 -1
  70. data/spec/factories/ecom/core/overtime_sheet_entries.rb +1 -1
  71. data/spec/factories/ecom/core/overtime_sheets.rb +3 -2
  72. data/spec/factories/ecom/core/overtime_types.rb +1 -1
  73. data/spec/factories/ecom/core/payment_details.rb +1 -1
  74. data/spec/factories/ecom/core/payments.rb +1 -1
  75. data/spec/factories/ecom/core/payrolls.rb +2 -1
  76. data/spec/factories/ecom/core/product_types.rb +1 -1
  77. data/spec/factories/ecom/core/project_crews.rb +9 -0
  78. data/spec/factories/ecom/core/projects.rb +2 -1
  79. data/spec/factories/ecom/core/resource_types.rb +1 -1
  80. data/spec/factories/ecom/core/stakeholder_types.rb +1 -1
  81. data/spec/factories/ecom/core/stakeholders.rb +1 -1
  82. data/spec/factories/ecom/core/task_template_types.rb +1 -1
  83. data/spec/factories/ecom/core/task_templates.rb +1 -1
  84. data/spec/factories/ecom/core/tasks.rb +1 -1
  85. data/spec/factories/ecom/core/user_roles.rb +1 -1
  86. data/spec/factories/ecom/core/users.rb +2 -1
  87. data/spec/factories/ecom/core/work_component_templates.rb +1 -1
  88. data/spec/factories/ecom/core/work_components.rb +1 -1
  89. data/spec/factories/ecom/core/work_product_templates.rb +1 -1
  90. data/spec/factories/ecom/core/work_products.rb +2 -2
  91. metadata +15 -18
  92. data/db/migrate/20200207035823_add_additional_columns_to_payment.rb +0 -6
  93. data/db/migrate/20200207040844_add_net_pay_column_to_payment_details.rb +0 -5
  94. data/db/migrate/20200210095535_add_advance_column_to_payment_details.rb +0 -5
  95. data/db/migrate/20200221123207_add_employee_id_to_crew.rb +0 -5
  96. data/db/migrate/20200401071343_remove_date_column_from_crew_times.rb +0 -5
  97. data/db/migrate/20200401122539_create_ecom_core_attendance_sheet_entries.rb +0 -14
  98. data/db/migrate/20200401142959_relate_crew_time_with_attendance_sheet_entry.rb +0 -8
  99. data/db/migrate/20200401144137_remove_crew_time_id_from_crew.rb +0 -7
  100. data/db/migrate/20200413144023_fix_crew_time_columns.rb +0 -17
  101. data/db/migrate/20200414044144_adjust_crew_overtime_column_names.rb +0 -6
  102. data/db/migrate/20200414185248_change_time_columns_to_datetime.rb +0 -8
@@ -6,11 +6,26 @@ class CreateEcomCoreProjects < ActiveRecord::Migration[6.0]
6
6
  t.string :location, null: false
7
7
  t.string :objective
8
8
  t.string :project_scope
9
- t.references :employer, index: { name: 'employer_on_projects_indx' }
10
- t.references :contractor, index: { name: 'employer_on_contractor_indx' }
11
- t.references :consultant, index: { name: 'employer_on_consultant_indx' }
12
- t.references :project_manager, index: { name: 'employer_on_pm_indx' }
13
- t.references :task_template, index: { name: 'employer_on_tt_indx' }
9
+ t.references :employer,
10
+ null: false,
11
+ index: { name: 'employer_on_projects_indx' },
12
+ foreign_key: { to_table: :ecom_core_stakeholders }
13
+ t.references :contractor,
14
+ null: false,
15
+ index: { name: 'employer_on_contractor_indx' },
16
+ foreign_key: { to_table: :ecom_core_stakeholders }
17
+ t.references :consultant,
18
+ null: false,
19
+ index: { name: 'employer_on_consultant_indx' },
20
+ foreign_key: { to_table: :ecom_core_stakeholders }
21
+ t.references :project_manager,
22
+ null: false,
23
+ index: { name: 'employer_on_pm_indx' },
24
+ foreign_key: { to_table: :ecom_core_stakeholders }
25
+ t.references :task_template,
26
+ null: false,
27
+ index: { name: 'employer_on_tt_indx' },
28
+ foreign_key: { to_table: :ecom_core_task_templates }
14
29
  t.string :contract_number, null: false
15
30
  t.date :date_contract_signed, null: false
16
31
  t.date :commencement_date, null: false
@@ -19,16 +34,16 @@ class CreateEcomCoreProjects < ActiveRecord::Migration[6.0]
19
34
  t.float :advance_payment, null: false
20
35
  t.float :retention, null: false
21
36
  t.string :remark
22
- t.references :currency, index: { name: 'employer_on_currency_indx' }
37
+ t.references :currency,
38
+ null: false,
39
+ index: { name: 'employer_on_currency_indx' },
40
+ foreign_key: { to_table: :ecom_core_currencies }
41
+ t.references :company,
42
+ null: false,
43
+ index: { name: 'project_on_company_indx' },
44
+ foreign_key: { to_table: :ecom_core_companies }
23
45
 
24
46
  t.timestamps
25
47
  end
26
-
27
- add_foreign_key :ecom_core_projects, :ecom_core_stakeholders, column: :employer_id
28
- add_foreign_key :ecom_core_projects, :ecom_core_stakeholders, column: :contractor_id
29
- add_foreign_key :ecom_core_projects, :ecom_core_stakeholders, column: :consultant_id
30
- add_foreign_key :ecom_core_projects, :ecom_core_stakeholders, column: :project_manager_id
31
- add_foreign_key :ecom_core_projects, :ecom_core_task_templates, column: :task_template_id
32
- add_foreign_key :ecom_core_projects, :ecom_core_currencies, column: :currency_id
33
48
  end
34
49
  end
@@ -5,13 +5,16 @@ class CreateEcomCoreTasks < ActiveRecord::Migration[6.0]
5
5
  t.string :name, null: false
6
6
  t.string :description
7
7
  t.string :ancestry
8
- t.references :project, index: { name: 'tasks_on_project_indx' }
9
- t.references :task_template, index: { name: 'tt_on_project_indx' }
8
+ t.references :project,
9
+ null: false,
10
+ index: { name: 'tasks_on_project_indx' },
11
+ foreign_key: { to_table: :ecom_core_projects }
12
+ t.references :task_template,
13
+ null: false,
14
+ index: { name: 'tt_on_project_indx' },
15
+ foreign_key: { to_table: :ecom_core_task_templates }
10
16
 
11
17
  t.timestamps
12
18
  end
13
-
14
- add_foreign_key :ecom_core_tasks, :ecom_core_projects, column: :project_id
15
- add_foreign_key :ecom_core_tasks, :ecom_core_task_templates, column: :task_template_id
16
19
  end
17
20
  end
@@ -1,16 +1,17 @@
1
1
  class CreateTaskTemplatesResourceTypes < ActiveRecord::Migration[6.0]
2
2
  def change
3
3
  create_table :ecom_core_task_templates_resource_types, id: false do |t|
4
- t.references :task_template, index: false
5
- t.references :resource_type, index: false
4
+ t.references :task_template,
5
+ null: false,
6
+ index: false,
7
+ foreign_key: { to_table: :ecom_core_task_templates }
8
+ t.references :resource_type,
9
+ null: false,
10
+ index: false,
11
+ foreign_key: { to_table: :ecom_core_resource_types }
6
12
  end
7
13
 
8
14
  add_index :ecom_core_task_templates_resource_types, %i[task_template_id resource_type_id],
9
15
  unique: true, name: 'ttr_on_tt_rt_indx'
10
-
11
- add_foreign_key :ecom_core_task_templates_resource_types, :ecom_core_task_templates,
12
- column: :task_template_id
13
- add_foreign_key :ecom_core_task_templates_resource_types, :ecom_core_resource_types,
14
- column: :resource_type_id
15
16
  end
16
17
  end
@@ -6,19 +6,22 @@ class CreateEcomCoreUsers < ActiveRecord::Migration[6.0]
6
6
  t.string :email, null: false
7
7
  t.boolean :active, null: false, default: true
8
8
  t.string :password_digest
9
+ t.jsonb :projects
9
10
 
10
11
  t.timestamps
11
12
  end
12
13
 
13
14
  create_table :ecom_core_application_modules_users, id: false do |t|
14
- t.references :user, index: false
15
- t.references :application_module, index: false
15
+ t.references :user,
16
+ null: false,
17
+ index: false,
18
+ foreign_key: { to_table: :ecom_core_users }
19
+ t.references :application_module,
20
+ null: false,
21
+ index: false,
22
+ foreign_key: { to_table: :ecom_core_application_modules }
16
23
  end
17
24
 
18
25
  add_index :ecom_core_application_modules_users, %i[user_id application_module_id], name: 'am_on_users_indx'
19
-
20
- add_foreign_key :ecom_core_application_modules_users, :ecom_core_users, column: :user_id
21
- add_foreign_key :ecom_core_application_modules_users, :ecom_core_application_modules,
22
- column: :application_module_id
23
26
  end
24
27
  end
@@ -2,21 +2,26 @@ class CreateEcomCoreUserRoles < ActiveRecord::Migration[6.0]
2
2
  def change
3
3
  create_table :ecom_core_user_roles do |t|
4
4
  t.string :name, index: false
5
- t.references :application_module, index: { name: 'ur_on_am_indx' }
5
+ t.references :application_module,
6
+ null: false,
7
+ index: { name: 'ur_on_am_indx' },
8
+ foreign_key: { to_table: :ecom_core_application_modules }
6
9
 
7
10
  t.timestamps
8
11
  end
9
- add_index :ecom_core_user_roles, %i[name application_module_id], unique: true, name: 'am_name_indx'
10
- add_foreign_key :ecom_core_user_roles, :ecom_core_application_modules,
11
- column: :application_module_id
12
12
 
13
13
  create_table :ecom_core_users_user_roles, id: false do |t|
14
- t.references :user, index: false
15
- t.references :user_role, index: false
14
+ t.references :user,
15
+ null: false,
16
+ index: false,
17
+ foreign_key: { to_table: :ecom_core_users }
18
+ t.references :user_role,
19
+ null: false,
20
+ index: false,
21
+ foreign_key: { to_table: :ecom_core_user_roles }
16
22
  end
17
23
 
24
+ add_index :ecom_core_user_roles, %i[name application_module_id], unique: true, name: 'am_name_indx'
18
25
  add_index :ecom_core_users_user_roles, %i[user_id user_role_id], unique: true, name: 'users_user_roles_indx'
19
- add_foreign_key :ecom_core_users_user_roles, :ecom_core_users, column: :user_id
20
- add_foreign_key :ecom_core_users_user_roles, :ecom_core_user_roles, column: :user_role_id
21
26
  end
22
27
  end
@@ -4,22 +4,29 @@ class CreateEcomCoreMenus < ActiveRecord::Migration[6.0]
4
4
  t.string :label, null: false
5
5
  t.string :icon
6
6
  t.string :route, null: false
7
- t.references :parent, index: { name: 'menus_on_menus_indx' }
8
- t.references :application_module, index: { name: 'menus_on_am_indx' }
7
+ t.references :parent,
8
+ null: true,
9
+ index: false,
10
+ foreign_key: { to_table: :ecom_core_menus }
11
+ t.references :application_module,
12
+ null: false,
13
+ index: { name: 'menus_on_am_indx' },
14
+ foreign_key: { to_table: :ecom_core_application_modules }
9
15
 
10
16
  t.timestamps
11
17
  end
12
18
 
13
- add_foreign_key :ecom_core_menus, :ecom_core_menus, column: :parent_id
14
- add_foreign_key :ecom_core_menus, :ecom_core_application_modules, column: :application_module_id
15
-
16
19
  create_table :ecom_core_menus_user_roles, id: false do |t|
17
- t.references :menu, index: false
18
- t.references :user_role, index: false
20
+ t.references :menu,
21
+ null: false,
22
+ index: false,
23
+ foreign_key: { to_table: :ecom_core_menus }
24
+ t.references :user_role,
25
+ null: false,
26
+ index: false,
27
+ foreign_key: { to_table: :ecom_core_user_roles }
19
28
  end
20
29
 
21
30
  add_index :ecom_core_menus_user_roles, %i[menu_id user_role_id], unique: true, name: 'menus_user_roles_indx'
22
- add_foreign_key :ecom_core_menus_user_roles, :ecom_core_menus, column: :menu_id
23
- add_foreign_key :ecom_core_menus_user_roles, :ecom_core_user_roles, column: :user_role_id
24
31
  end
25
32
  end
@@ -6,30 +6,44 @@ class CreateEcomCoreWorkProducts < ActiveRecord::Migration[6.0]
6
6
  t.string :description
7
7
  t.string :design_reference_no, unique: true
8
8
  t.json :dimension
9
- t.references :task, index: { name: 'task_on_wp_indx' }
10
- t.references :work_product_template, index: { name: 'wpt_on_wp_indx' }
11
- t.references :project, index: { name: 'projects_on_wp_indx' }
9
+ t.references :task,
10
+ null: false,
11
+ index: { name: 'task_on_wp_indx' },
12
+ foreign_key: { to_table: :ecom_core_tasks }
13
+ t.references :work_product_template,
14
+ null: false,
15
+ index: { name: 'wpt_on_wp_indx' },
16
+ foreign_key: { to_table: :ecom_core_work_product_templates }
17
+ t.references :project,
18
+ null: false,
19
+ index: { name: 'projects_on_wp_indx' },
20
+ foreign_key: { to_table: :ecom_core_projects }
12
21
  t.string :assignment_status, default: 'UNASSIGNED'
13
22
  t.string :task_status, default: 'NEW'
14
23
  t.integer :percent_completed
15
24
  t.string :remark
16
- t.references :performer, index: { name: 'pr_on_work_product_indx' }
17
- t.references :approver, index: { name: 'app_on_work_product_indx' }
18
- t.references :supervisor, index: { name: 'sup_on_work_product_indx' }
19
- t.references :quality_controller, index: { name: 'qut_ctr_on_work_product_indx' }
25
+ t.references :performer,
26
+ null: true,
27
+ index: false,
28
+ foreign_key: { to_table: :ecom_core_users }
29
+ t.references :approver,
30
+ null: true,
31
+ index: false,
32
+ foreign_key: { to_table: :ecom_core_users }
33
+ t.references :supervisor,
34
+ null: true,
35
+ index: false,
36
+ foreign_key: { to_table: :ecom_core_users }
37
+ t.references :quality_controller,
38
+ null: true,
39
+ index: false,
40
+ foreign_key: { to_table: :ecom_core_users }
20
41
  t.datetime :start_date
21
42
  t.datetime :completion_date
22
43
 
23
44
  t.timestamps
24
45
  end
46
+
25
47
  add_index :ecom_core_work_products, %i[code project_id], unique: true
26
- add_foreign_key :ecom_core_work_products, :ecom_core_tasks, column: :task_id
27
- add_foreign_key :ecom_core_work_products, :ecom_core_work_product_templates,
28
- column: :work_product_template_id
29
- add_foreign_key :ecom_core_work_products, :ecom_core_projects, column: :project_id
30
- add_foreign_key :ecom_core_work_products, :ecom_core_users, column: :performer_id
31
- add_foreign_key :ecom_core_work_products, :ecom_core_users, column: :approver_id
32
- add_foreign_key :ecom_core_work_products, :ecom_core_users, column: :supervisor_id
33
- add_foreign_key :ecom_core_work_products, :ecom_core_users, column: :quality_controller_id
34
48
  end
35
49
  end
@@ -7,24 +7,34 @@ class CreateEcomCoreWorkComponents < ActiveRecord::Migration[6.0]
7
7
  t.string :task_status, null: false, default: :new
8
8
  t.integer :percent_completed, null: false, default: 0
9
9
  t.string :remark
10
- t.references :performer, index: { name: 'wc_on_performer_indx' }
11
- t.references :approver, index: { name: 'wc_on_approver_indx' }
12
- t.references :supervisor, index: { name: 'wc_on_supervisor_indx' }
13
- t.references :quality_controller, index: { name: 'wc_on_qc_indx' }
10
+ t.references :performer,
11
+ null: true,
12
+ index: false,
13
+ foreign_key: { to_table: :ecom_core_users }
14
+ t.references :approver,
15
+ null: true,
16
+ index: false,
17
+ foreign_key: { to_table: :ecom_core_users }
18
+ t.references :supervisor,
19
+ null: true,
20
+ index: false,
21
+ foreign_key: { to_table: :ecom_core_users }
22
+ t.references :quality_controller,
23
+ null: true,
24
+ index: false,
25
+ foreign_key: { to_table: :ecom_core_users }
14
26
  t.date :start_date
15
27
  t.date :completion_date
16
- t.references :work_component_template, index: { name: 'wct_on_wc_indx' }
17
- t.references :work_product, index: { name: 'wp_on_wc_indx' }
28
+ t.references :work_component_template,
29
+ null: false,
30
+ index: { name: 'wct_on_wc_indx' },
31
+ foreign_key: { to_table: :ecom_core_work_component_templates }
32
+ t.references :work_product,
33
+ null: false,
34
+ index: { name: 'wp_on_wc_indx' },
35
+ foreign_key: { to_table: :ecom_core_work_products }
18
36
 
19
37
  t.timestamps
20
38
  end
21
-
22
- add_foreign_key :ecom_core_work_components, :ecom_core_users, column: :performer_id
23
- add_foreign_key :ecom_core_work_components, :ecom_core_users, column: :approver_id
24
- add_foreign_key :ecom_core_work_components, :ecom_core_users, column: :supervisor_id
25
- add_foreign_key :ecom_core_work_components, :ecom_core_users, column: :quality_controller_id
26
- add_foreign_key :ecom_core_work_components, :ecom_core_work_component_templates,
27
- column: :work_component_template_id
28
- add_foreign_key :ecom_core_work_components, :ecom_core_work_products, column: :work_product_id
29
39
  end
30
40
  end
@@ -1,22 +1,26 @@
1
1
  class CreateEcomCoreCrews < ActiveRecord::Migration[6.0]
2
2
  def change
3
3
  create_table :ecom_core_crews do |t|
4
+ t.string :employee_id
4
5
  t.string :name, null: false
6
+ t.string :address, null: false
5
7
  t.string :phone
6
8
  t.string :email
7
9
  t.string :qualification, null: false
8
10
  t.string :employment, null: false
9
- t.float :wage
11
+ t.float :wage, null: false
12
+ t.string :wage_in_words, null: false
10
13
  t.date :employment_date
11
14
  t.boolean :sub_contracted, null: false, default: false
12
15
  t.string :guarantor_name
13
16
  t.string :guarantor_phone
14
17
  t.boolean :active, null: false, default: true
15
- t.references :crew_type, index: { name: 'crew_on_ct_indx' }
18
+ t.references :crew_type,
19
+ null: false,
20
+ index: { name: 'crew_on_ct_indx' },
21
+ foreign_key: { to_table: :ecom_core_resource_types }
16
22
 
17
23
  t.timestamps
18
24
  end
19
-
20
- add_foreign_key :ecom_core_crews, :ecom_core_resource_types, column: :crew_type_id
21
25
  end
22
26
  end
@@ -0,0 +1,19 @@
1
+ class CreateEcomCoreProjectCrews < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_project_crews do |t|
4
+ t.references :project,
5
+ null: false,
6
+ index: { name: 'pc_on_project_indx' },
7
+ foreign_key: { to_table: :ecom_core_projects }
8
+ t.references :crew,
9
+ null: false,
10
+ index: { name: 'pc_on_crew_indx' },
11
+ foreign_key: { to_table: :ecom_core_crews }
12
+ t.date :start_date, null: false
13
+ t.date :end_date
14
+ t.string :status, null: false, default: 'Inactive'
15
+
16
+ t.timestamps
17
+ end
18
+ end
19
+ end
@@ -1,13 +1,18 @@
1
1
  class CreateEcomCoreAttendanceSheets < ActiveRecord::Migration[6.0]
2
2
  def change
3
3
  create_table :ecom_core_attendance_sheets do |t|
4
- t.date :date, null: false, unique: true
4
+ t.date :date, null: false
5
5
  t.time :opened_at, null: false
6
6
  t.time :closed_at
7
7
  t.string :remark
8
8
  t.string :status, null: false, default: 'Open'
9
+ t.references :project,
10
+ null: false,
11
+ index: { name: 'as_on_project_indx' },
12
+ foreign_key: { to_table: :ecom_core_projects }
9
13
 
10
14
  t.timestamps
11
15
  end
16
+ add_index :ecom_core_attendance_sheets, %i[date project_id], unique: true
12
17
  end
13
18
  end
@@ -0,0 +1,17 @@
1
+ class CreateEcomCoreAttendanceSheetEntries < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_attendance_sheet_entries do |t|
4
+ t.references :attendance_sheet,
5
+ null: false,
6
+ index: { name: 'ase_on_as_indx' },
7
+ foreign_key: { to_table: :ecom_core_attendance_sheets }
8
+ t.references :crew,
9
+ null: false,
10
+ index: { name: 'ase_on_crew_indx' },
11
+ foreign_key: { to_table: :ecom_core_crews }
12
+ t.float :total_hours
13
+
14
+ t.timestamps
15
+ end
16
+ end
17
+ end
@@ -1,19 +1,25 @@
1
1
  class CreateEcomCoreCrewTimes < ActiveRecord::Migration[6.0]
2
2
  def change
3
3
  create_table :ecom_core_crew_times do |t|
4
- t.date :date, null: false
5
- t.time :checkin_time
6
- t.time :checkout_time
4
+ t.datetime :checkin_time
5
+ t.datetime :checkout_time
7
6
  t.float :hours, null: false
8
- t.float :converted_hours, null: false, default: 0
9
- t.references :crew, index: { name: 'ct_on_crew_indx' }
10
7
  t.string :remark
11
- t.boolean :overtime, null: false, default: false
12
- t.integer :overtime_type_id, null: true
8
+ t.boolean :revised, null: false, default: false
9
+ t.references :revision_to,
10
+ null: true,
11
+ index: { name: 'ct_on_rt_indx' },
12
+ foreign_key: { to_table: :ecom_core_crew_times }
13
+ t.references :created_by,
14
+ null: false,
15
+ index: { name: 'ct_on_cb_indx' },
16
+ foreign_key: { to_table: :ecom_core_users }
17
+ t.references :attendance_sheet_entry,
18
+ null: false,
19
+ index: { name: 'ct_on_ase_indx' },
20
+ foreign_key: { to_table: :ecom_core_attendance_sheet_entries }
13
21
 
14
22
  t.timestamps
15
23
  end
16
-
17
- add_foreign_key :ecom_core_crew_times, :ecom_core_crews, column: :crew_id
18
24
  end
19
25
  end
@@ -4,6 +4,10 @@ class CreateEcomCorePayrolls < ActiveRecord::Migration[6.0]
4
4
  t.integer :month, null: false
5
5
  t.integer :year, null: false
6
6
  t.boolean :approved, null: false, default: false
7
+ t.references :project,
8
+ null: false,
9
+ index: { name: 'payroll_on_project_indx' },
10
+ foreign_key: { to_table: :ecom_core_projects }
7
11
 
8
12
  t.timestamps
9
13
  end