ecom_core 1.2.26 → 1.2.31

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/ecom/core/companies_controller.rb +15 -0
  3. data/app/controllers/ecom/core/project_crews_controller.rb +25 -0
  4. data/app/controllers/ecom/core/projects_controller.rb +32 -0
  5. data/app/models/ecom/core/cost_type.rb +8 -0
  6. data/app/models/ecom/core/crew.rb +3 -0
  7. data/app/models/ecom/core/crew_contract.rb +17 -0
  8. data/app/models/ecom/core/crew_overtime.rb +13 -0
  9. data/app/models/ecom/core/crew_time.rb +15 -6
  10. data/app/models/ecom/core/job_card.rb +16 -0
  11. data/app/models/ecom/core/maintenance_category.rb +6 -0
  12. data/app/models/ecom/core/maintenance_cost.rb +10 -0
  13. data/app/models/ecom/core/maintenance_service_order.rb +19 -0
  14. data/app/models/ecom/core/maintenance_status.rb +6 -0
  15. data/app/models/ecom/core/maintenance_type.rb +9 -0
  16. data/app/models/ecom/core/schedule_setting.rb +9 -0
  17. data/app/models/ecom/core/schedule_unit.rb +6 -0
  18. data/app/services/ecom/core/project_crew_service.rb +39 -0
  19. data/config/routes.rb +5 -0
  20. data/db/migrate/20200901085227_create_ecom_core_crew_contracts.rb +20 -0
  21. data/db/migrate/20200919053331_create_ecom_core_maintenance_types.rb +14 -0
  22. data/db/migrate/20200919072216_create_ecom_core_schedule_settings.rb +21 -0
  23. data/db/migrate/20200919081338_create_ecom_core_maintenance_service_orders.rb +32 -0
  24. data/db/migrate/20200919085613_create_ecom_core_job_cards.rb +48 -0
  25. data/db/migrate/20200919101941_create_ecom_core_cost_types.rb +10 -0
  26. data/db/migrate/20200919102802_create_ecom_core_maintenance_costs.rb +19 -0
  27. data/db/migrate/20200922044959_add_costs_approved_to_job_card.rb +5 -0
  28. data/lib/ecom/core/version.rb +1 -1
  29. data/spec/factories/ecom/core/attendance_sheet_entries.rb +1 -1
  30. data/spec/factories/ecom/core/cost_types.rb +6 -0
  31. data/spec/factories/ecom/core/crew_contracts.rb +13 -0
  32. data/spec/factories/ecom/core/job_cards.rb +17 -0
  33. data/spec/factories/ecom/core/maintenance_categories.rb +5 -0
  34. data/spec/factories/ecom/core/maintenance_costs.rb +9 -0
  35. data/spec/factories/ecom/core/maintenance_service_orders.rb +16 -0
  36. data/spec/factories/ecom/core/maintenance_statuses.rb +5 -0
  37. data/spec/factories/ecom/core/maintenance_types.rb +7 -0
  38. data/spec/factories/ecom/core/overtime_types.rb +1 -1
  39. data/spec/factories/ecom/core/schedule_settings.rb +8 -0
  40. data/spec/factories/ecom/core/schedule_units.rb +5 -0
  41. metadata +35 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc33c4120563276cee995e753b7c6e9bdcff0740e9b2e306549abfca286fa8b0
4
- data.tar.gz: 3cf51d8bf2777ff6a56b4659b404513d85c1aa9289069284ae17f8339c3f0df8
3
+ metadata.gz: 1e0b7beafc5d7b2e1a7385f1a01db93b9d3279c41434a3e104a76e58aa0b48ac
4
+ data.tar.gz: 766cbcb8b998e4725c1afe43f0c28a2a3901d8ce2e9a84fd308c5c88623ef392
5
5
  SHA512:
6
- metadata.gz: 6380cdb381fe5dd76533f94351ee2fddb3be0ef6559c39d883f2e41999c50dd7fd045a9f9b58854e58433c3f5a67924c3f9fed4c24977f5fc1d880be7bf1bb43
7
- data.tar.gz: ce5cb1bac51e23a63dbc85b77129b1281d847323fae967f5fa9178544f91efeb679047748da472d1139e4396dc2e7d77a1699acc6fd88912dadd97066c98e125
6
+ metadata.gz: 6590ea1a50bdc293aa807ed135287cb6c89ecdd83e902898801f758d1d187b5003b31c77117f7d02ab8367e13b06bac4fb0054726c9e1934e8aa4279d6a36f43
7
+ data.tar.gz: ead89e3cd5136806c9e1ea45fb91c46249604aad30ab6040f902b119307f34c0a34940c491866d04ff8eab5a99b33350dcdbc9a7399a8ce73155ff086d43c802
@@ -0,0 +1,15 @@
1
+ module Ecom
2
+ module Core
3
+ class CompaniesController < ApplicationController
4
+ def index
5
+ data = Ecom::Core::Company.all
6
+ render json: data
7
+ end
8
+
9
+ def default_company
10
+ data = Ecom::Core::Company.first
11
+ render json: data
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,25 @@
1
+ module Ecom
2
+ module Core
3
+ class ProjectCrewsController < ApplicationController
4
+ before_action :set_service, only: %i[update]
5
+
6
+ def index
7
+ project = Ecom::Core::Project.find(params[:id])
8
+ serialized = ActiveModelSerializers::SerializableResource.new(project.crews)
9
+ render json: { success: true, data: serialized }
10
+ end
11
+
12
+ def update
13
+ data = @service.update(params)
14
+ serialized = ActiveModelSerializers::SerializableResource.new(data[:data])
15
+ render json: { success: true, data: serialized }
16
+ end
17
+
18
+ private
19
+
20
+ def set_service
21
+ @service = ProjectCrewService.new
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,32 @@
1
+ module Ecom
2
+ module Core
3
+ class ProjectsController < ApplicationController
4
+ before_action :set_project, only: %i[show]
5
+ # GET /projects
6
+ def index
7
+ projects = Ecom::Core::Project.includes(:employer, :contractor, :consultant, :project_manager)
8
+ .where(company_id: params[:id])
9
+ serialized = ActiveModelSerializers::SerializableResource.new(projects)
10
+ render json: { success: true, data: serialized }
11
+ end
12
+
13
+ def show
14
+ render json: @project
15
+ end
16
+
17
+ private
18
+
19
+ def set_project
20
+ @project = Project.find(params[:id])
21
+ end
22
+
23
+ def model_params
24
+ params.require(:project).permit(:name, :description, :location, :objective, :project_scope, :employer_id,
25
+ :contractor_id, :consultant_id, :project_manager_id, :contract_number,
26
+ :company_id, :date_contract_signed, :commencement_date, :completion_date,
27
+ :contract_amount, :advance_payment, :retention, :remark, :task_template_type_id,
28
+ :currency_id)
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,8 @@
1
+ module Ecom
2
+ module Core
3
+ class CostType < ApplicationRecord
4
+ validates :name, presence: true, uniqueness: true
5
+ validates :fields, presence: true
6
+ end
7
+ end
8
+ end
@@ -15,6 +15,9 @@ module Ecom
15
15
  validates :name, :address, :qualification, :employment, :wage, :wage_in_words, presence: true
16
16
  validates :employment, inclusion: EMPLOYMENT_TYPES
17
17
 
18
+ has_many :project_crews
19
+ has_many :projects, through: :project_crews
20
+
18
21
  scope :by_active, ->(active) { where(active: active) }
19
22
  scope :by_qualification, ->(qualification) { where(qualification: qualification) }
20
23
  scope :by_sub_contracted, ->(sub_contracted) { where(sub_contracted: sub_contracted) }
@@ -0,0 +1,17 @@
1
+ module Ecom
2
+ module Core
3
+ class CrewContract < ApplicationRecord
4
+ belongs_to :crew
5
+
6
+ validates :contract_no, :from, :to, :place_of_work, :probation_period, :contract_type, presence: true
7
+ validates :contract_no, uniqueness: true
8
+ validate :validate_date_range
9
+
10
+ def validate_date_range
11
+ return unless from && to
12
+
13
+ errors.add(:to, 'cannot be before from date.') if from >= to
14
+ end
15
+ end
16
+ end
17
+ end
@@ -9,6 +9,7 @@ module Ecom
9
9
  has_one :revision, class_name: 'Ecom::Core::CrewOvertime', foreign_key: :revision_to_id
10
10
 
11
11
  validates :hours, :raw_hours, presence: true
12
+ validate :validate_overtime_by_type
12
13
 
13
14
  scope :by_overtime, lambda { |id|
14
15
  joins(:overtime_sheet_entry).where(ecom_core_overtime_sheet_entries: { overtime_sheet_id: id })
@@ -17,6 +18,18 @@ module Ecom
17
18
 
18
19
  before_save :calculate_hours
19
20
 
21
+ def validate_overtime_by_type
22
+ return unless overtime_type
23
+
24
+ start = Time.zone.parse(overtime_type.from)
25
+ finish = Time.zone.parse(overtime_type.to)
26
+ diff = ((finish - start) / 3600).round
27
+
28
+ return unless raw_hours > diff
29
+
30
+ errors.add(:crew_overtime, 'The selected overtime type does not allow the specified amount of hours.')
31
+ end
32
+
20
33
  def calculate_hours
21
34
  rate = OvertimeType.find(overtime_type_id).rate
22
35
  self.hours = raw_hours * rate
@@ -6,18 +6,13 @@ module Ecom
6
6
  AFTERNOON = :afternoon
7
7
  FULL_DAY = :full_day
8
8
 
9
- # TIME_RANGE = {
10
- # MORNING => { start: Time.zone.parse('5:00 AM'), end: Time.zone.parse('9:00 AM') },
11
- # AFTERNOON => { start: Time.zone.parse('10:00 AM'), end: Time.zone.parse('2:00 PM') },
12
- # BOTH => { start: Time.zone.parse('5:00 AM'), end: Time.zone.parse('2:00 PM') }
13
- # }.freeze
14
-
15
9
  belongs_to :attendance_sheet_entry
16
10
  belongs_to :revision_to, class_name: 'Ecom::Core::CrewTime', optional: true
17
11
  belongs_to :created_by, class_name: 'Ecom::Core::User'
18
12
  has_one :revision, class_name: 'Ecom::Core::CrewTime', foreign_key: :revision_to_id
19
13
 
20
14
  validates :checkin_time, presence: true, if: :checkout_time
15
+ validate :time_range_validation, :total_time_validation
21
16
 
22
17
  scope :by_attendance, lambda { |id|
23
18
  joins(:attendance_sheet_entry).where(ecom_core_attendance_sheet_entries: { attendance_sheet_id: id })
@@ -27,6 +22,20 @@ module Ecom
27
22
  before_save :calculate_hours
28
23
  after_save :calculate_total
29
24
 
25
+ def time_range_validation
26
+ return unless checkin_time && checkout_time && checkout_time <= checkin_time
27
+
28
+ errors.add(:checkout_time, "can't be less than checkin time.")
29
+ end
30
+
31
+ def total_time_validation
32
+ return if checkout_time.nil? || checkin_time.nil?
33
+
34
+ return unless attendance_sheet_entry.total_hours + compute_hours > 8
35
+
36
+ errors.add(:attendance_sheet_entry, 'has more than 8 hours')
37
+ end
38
+
30
39
  def calculate_hours
31
40
  self.hours = if checkout_time.nil? || checkin_time.nil?
32
41
  0
@@ -0,0 +1,16 @@
1
+ module Ecom
2
+ module Core
3
+ class JobCard < ApplicationRecord
4
+ belongs_to :maintenance_service_order
5
+ belongs_to :service_provider, class_name: 'Ecom::Core::EquipmentLocation'
6
+ belongs_to :checkout_by, class_name: 'Ecom::Core::User', optional: true
7
+ belongs_to :checkout_to, class_name: 'Ecom::Core::EquipmentLocation', optional: true
8
+ belongs_to :maintenance_status
9
+ belongs_to :checkin_by, class_name: 'Ecom::Core::User', optional: true
10
+ belongs_to :checkin_to, class_name: 'Ecom::Core::EquipmentLocation', optional: true
11
+ belongs_to :prepared_by, class_name: 'Ecom::Core::User'
12
+
13
+ validates :code, presence: true, uniqueness: true
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,6 @@
1
+ module Ecom
2
+ module Core
3
+ class MaintenanceCategory < Lookup
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ module Ecom
2
+ module Core
3
+ class MaintenanceCost < ApplicationRecord
4
+ belongs_to :job_card
5
+ belongs_to :cost_type
6
+
7
+ validates :cost_detail, presence: true
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,19 @@
1
+ module Ecom
2
+ module Core
3
+ class MaintenanceServiceOrder < ApplicationRecord
4
+ NEW = 'New'.freeze
5
+ IN_PROGRESS = 'In Progress'.freeze
6
+ COMPLETED = 'Completed'.freeze
7
+
8
+ STATUSES = [NEW, IN_PROGRESS, COMPLETED].freeze
9
+
10
+ belongs_to :equipment_item
11
+ belongs_to :maintenance_type
12
+ belongs_to :prepared_by, class_name: 'Ecom::Core::User'
13
+ belongs_to :approved_by, class_name: 'Ecom::Core::User'
14
+
15
+ validates :title, :status, :current_reading, presence: true
16
+ validates :status, inclusion: STATUSES
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,6 @@
1
+ module Ecom
2
+ module Core
3
+ class MaintenanceStatus < Lookup
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,9 @@
1
+ module Ecom
2
+ module Core
3
+ class MaintenanceType < ApplicationRecord
4
+ belongs_to :maintenance_category
5
+
6
+ validates :name, presence: true
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Ecom::Core
2
+ class ScheduleSetting < ApplicationRecord
3
+ belongs_to :equipment
4
+ belongs_to :maintenance_type
5
+ belongs_to :schedule_unit
6
+
7
+ validates :value, presence: true
8
+ end
9
+ end
@@ -0,0 +1,6 @@
1
+ module Ecom
2
+ module Core
3
+ class ScheduleUnit < Lookup
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,39 @@
1
+ module Ecom
2
+ module Core
3
+ class ProjectCrewService
4
+ def update(params)
5
+ id = params[:project_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
+ project_crew = Ecom::Core::Crew.where(id: crew_ids)
15
+
16
+ new_entries = []
17
+ new_crew.each do |nc|
18
+ new_entries << Ecom::Core::ProjectCrew.new(
19
+ project_id: id, crew_id: nc[:crew_id], start_date: Date.today, status: 'Active'
20
+ )
21
+ end
22
+
23
+ Ecom::Core::ProjectCrew.transaction do
24
+ new_entries.each(&:save)
25
+ end
26
+
27
+ removed_ids = removed.map { |r| r[:crew_id] }
28
+ if removed_ids.count.positive?
29
+ removed_crew = Ecom::Core::ProjectCrew.where(project_id: id, crew_id: removed_ids)
30
+ Ecom::Core::ProjectCrew.transaction do
31
+ removed_crew.map(&:delete)
32
+ end
33
+ end
34
+
35
+ { success: true, data: project_crew }
36
+ end
37
+ end
38
+ end
39
+ end
@@ -12,4 +12,9 @@ Ecom::Core::Engine.routes.draw do
12
12
  resources :equipment_types
13
13
  resources :material_types
14
14
  resources :menus, only: %i[index]
15
+ resources :projects
16
+ resources :companies
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
15
20
  end
@@ -0,0 +1,20 @@
1
+ class CreateEcomCoreCrewContracts < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_crew_contracts do |t|
4
+ t.string :contract_no, null: false, unique: true
5
+ t.date :from, null: false
6
+ t.date :to, null: false
7
+ t.string :place_of_work, null: false
8
+ t.integer :probation_period, null: false
9
+ t.string :contract_type, null: false
10
+ t.boolean :contract_signed, null: false, default: false
11
+ t.date :date_contract_signed
12
+ t.references :crew,
13
+ null: false,
14
+ index: { name: 'cc_on_crew_indx' },
15
+ foreign_key: { to_table: :ecom_core_crews }
16
+
17
+ t.timestamps
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ class CreateEcomCoreMaintenanceTypes < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_maintenance_types do |t|
4
+ t.string :name, null: false
5
+ t.string :description
6
+ t.references :maintenance_category,
7
+ null: false,
8
+ index: { name: 'mt_on_mc_indx' },
9
+ foreign_key: { to_table: :ecom_core_lookups }
10
+
11
+ t.timestamps
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,21 @@
1
+ class CreateEcomCoreScheduleSettings < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_schedule_settings do |t|
4
+ t.references :equipment,
5
+ null: false,
6
+ index: { name: 'ss_on_equipment_indx' },
7
+ foreign_key: { to_table: :ecom_core_equipment }
8
+ t.references :maintenance_type,
9
+ null: false,
10
+ index: { name: 'ss_on_mt_indx' },
11
+ foreign_key: { to_table: :ecom_core_maintenance_types }
12
+ t.references :schedule_unit,
13
+ null: false,
14
+ index: { name: 'ss_in_su_indx' },
15
+ foreign_key: { to_table: :ecom_core_lookups }
16
+ t.float :value, null: false
17
+
18
+ t.timestamps
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,32 @@
1
+ class CreateEcomCoreMaintenanceServiceOrders < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_maintenance_service_orders do |t|
4
+ t.string :title, null: false
5
+ t.string :description
6
+ t.date :start_date
7
+ t.date :end_date
8
+ t.boolean :approved, default: false
9
+ t.string :status, null: false, default: 'New'
10
+ t.string :remark
11
+ t.float :current_reading, null: false
12
+ t.references :equipment_item,
13
+ null: false,
14
+ index: { name: 'mso_on_ei_indx' },
15
+ foreign_key: { to_table: :ecom_core_equipment_items }
16
+ t.references :maintenance_type,
17
+ null: false,
18
+ index: { name: 'mso_on_mt_indx' },
19
+ foreign_key: { to_table: :ecom_core_maintenance_types }
20
+ t.references :prepared_by,
21
+ null: false,
22
+ index: { name: 'mso_on_pb_indx' },
23
+ foreign_key: { to_table: :ecom_core_users }
24
+ t.references :approved_by,
25
+ null: false,
26
+ index: { name: 'mso_on_ab_indx' },
27
+ foreign_key: { to_table: :ecom_core_users }
28
+
29
+ t.timestamps
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,48 @@
1
+ class CreateEcomCoreJobCards < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_job_cards do |t|
4
+ t.string :code, unique: true
5
+ t.date :start_date
6
+ t.date :due_date
7
+ t.date :checkin_date
8
+ t.date :checkout_date
9
+ t.boolean :approved, null: false, default: false
10
+ t.boolean :checkin_confirmed, null: false, default: false
11
+ t.boolean :checkout_confirmed, null: false, default: false
12
+ t.references :maintenance_service_order,
13
+ null: false,
14
+ index: { name: 'jc_on_mso_indx' },
15
+ foreign_key: { to_table: :ecom_core_maintenance_service_orders }
16
+ t.references :service_provider,
17
+ null: false,
18
+ index: { name: 'jc_on_sp_indx' },
19
+ foreign_key: { to_table: :ecom_core_equipment_locations }
20
+ t.references :checkout_by,
21
+ null: true,
22
+ index: { name: 'jc_on_cb_indx' },
23
+ foreign_key: { to_table: :ecom_core_users }
24
+ t.references :checkout_to,
25
+ null: true,
26
+ index: { name: 'jc_on_ct_indx' },
27
+ foreign_key: { to_table: :ecom_core_equipment_locations }
28
+ t.references :maintenance_status,
29
+ null: false,
30
+ index: { name: 'jc_on_ms_indx' },
31
+ foreign_key: { to_table: :ecom_core_lookups }
32
+ t.references :checkin_by,
33
+ null: true,
34
+ index: { name: 'jc_on_cib_indx' },
35
+ foreign_key: { to_table: :ecom_core_users }
36
+ t.references :checkin_to,
37
+ null: true,
38
+ index: { name: 'jc_on_cit_indx' },
39
+ foreign_key: { to_table: :ecom_core_equipment_locations }
40
+ t.references :prepared_by,
41
+ null: false,
42
+ index: { name: 'jc_on_pb_indx' },
43
+ foreign_key: { to_table: :ecom_core_users }
44
+
45
+ t.timestamps
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,10 @@
1
+ class CreateEcomCoreCostTypes < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_cost_types do |t|
4
+ t.string :name, unique: true
5
+ t.jsonb :fields, null: false
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,19 @@
1
+ class CreateEcomCoreMaintenanceCosts < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_maintenance_costs do |t|
4
+ t.references :job_card,
5
+ null: false,
6
+ index: { name: 'mc_on_jc_indx' },
7
+ foreign_key: { to_table: :ecom_core_job_cards }
8
+ t.references :cost_type,
9
+ null: false,
10
+ index: { name: 'mc_on_ct_indx' },
11
+ foreign_key: { to_table: :ecom_core_cost_types }
12
+ t.jsonb :cost_detail, null: false
13
+ t.string :remark
14
+ t.boolean :costs_approved, null: false, default: false
15
+
16
+ t.timestamps
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,5 @@
1
+ class AddCostsApprovedToJobCard < ActiveRecord::Migration[6.0]
2
+ def change
3
+ add_column :ecom_core_job_cards, :costs_approved, :boolean, default: false
4
+ end
5
+ end
@@ -1,5 +1,5 @@
1
1
  module Ecom
2
2
  module Core
3
- VERSION = '1.2.26'.freeze
3
+ VERSION = '1.2.31'.freeze
4
4
  end
5
5
  end
@@ -2,6 +2,6 @@ FactoryBot.define do
2
2
  factory :attendance_sheet_entry, class: Ecom::Core::AttendanceSheetEntry do
3
3
  association :attendance_sheet
4
4
  association :crew
5
- total_hours { FFaker::Random.rand(0..8) }
5
+ total_hours { 0 }
6
6
  end
7
7
  end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ factory :cost_type, class: Ecom::Core::CostType do
3
+ name { FFaker::Name.name }
4
+ fields { [{ name: 'amount', type: 'float' }] }
5
+ end
6
+ end
@@ -0,0 +1,13 @@
1
+ FactoryBot.define do
2
+ factory :crew_contract, class: 'Ecom::Core::CrewContract' do
3
+ from { Date.yesterday }
4
+ to { Date.tomorrow }
5
+ place_of_work { FFaker::Name.name }
6
+ probation_period { 45 }
7
+ contract_no { FFaker::Name.name }
8
+ contract_type { FFaker::Name.name }
9
+ contract_signed { false }
10
+ date_contract_signed { Date.today }
11
+ association :crew
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ FactoryBot.define do
2
+ factory :job_card, class: Ecom::Core::JobCard do
3
+ code { FFaker::Name.name }
4
+ start_date { Date.yesterday }
5
+ due_date { Date.tomorrow }
6
+ checkin_date { Date.yesterday }
7
+ checkout_date { Date.tomorrow }
8
+ association :maintenance_service_order
9
+ association :service_provider, factory: :equipment_location
10
+ association :checkout_by, factory: :user
11
+ association :checkout_to, factory: :equipment_location
12
+ association :maintenance_status
13
+ association :checkin_by, factory: :user
14
+ association :checkin_to, factory: :equipment_location
15
+ association :prepared_by, factory: :user
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ FactoryBot.define do
2
+ factory :maintenance_category, class: Ecom::Core::MaintenanceCategory, parent: :lookup do
3
+ type { 'Ecom::Core::MaintenanceCategory' }
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ FactoryBot.define do
2
+ factory :maintenance_cost, class: Ecom::Core::MaintenanceCost do
3
+ association :job_card
4
+ association :cost_type
5
+ cost_detail { { part_number: 'ABCDEF', quantity: 1, price: 200 } }
6
+ remark { FFaker::Name.name }
7
+ costs_approved { false }
8
+ end
9
+ end
@@ -0,0 +1,16 @@
1
+ FactoryBot.define do
2
+ factory :maintenance_service_order, class: Ecom::Core::MaintenanceServiceOrder do
3
+ title { FFaker::Name.name }
4
+ description { FFaker::Name.name }
5
+ start_date { Date.yesterday }
6
+ end_date { Date.today }
7
+ approved { false }
8
+ status { 'New' }
9
+ remark { FFaker::Name.name }
10
+ current_reading { 1.5 }
11
+ association :equipment_item
12
+ association :maintenance_type
13
+ association :prepared_by, factory: :user
14
+ association :approved_by, factory: :user
15
+ end
16
+ end
@@ -0,0 +1,5 @@
1
+ FactoryBot.define do
2
+ factory :maintenance_status, class: Ecom::Core::MaintenanceStatus, parent: :lookup do
3
+ type { 'Ecom::Core::MaintenanceStatus'}
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ FactoryBot.define do
2
+ factory :maintenance_type, class: Ecom::Core::MaintenanceType do
3
+ name { FFaker::Name.name }
4
+ description { FFaker::Name.name }
5
+ association :maintenance_category
6
+ end
7
+ end
@@ -4,7 +4,7 @@ FactoryBot.define do
4
4
  "OTName#{n}"
5
5
  end
6
6
  from { '07:00 AM' }
7
- to { '08:00 AM' }
7
+ to { '09:00 AM' }
8
8
  rate { 1.5 }
9
9
  end
10
10
  end
@@ -0,0 +1,8 @@
1
+ FactoryBot.define do
2
+ factory :schedule_setting, class: Ecom::Core::ScheduleSetting do
3
+ association :equipment
4
+ association :maintenance_type
5
+ association :schedule_unit
6
+ value { 1.5 }
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ FactoryBot.define do
2
+ factory :schedule_unit, class: Ecom::Core::ScheduleUnit, parent: :lookup do
3
+ type { 'Ecom::Core::ScheduleUnit' }
4
+ end
5
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecom_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.26
4
+ version: 1.2.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henock L.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-11 00:00:00.000000000 Z
11
+ date: 2020-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aasm
@@ -243,10 +243,13 @@ files:
243
243
  - app/controllers/ecom/core/access_controller.rb
244
244
  - app/controllers/ecom/core/application_controller.rb
245
245
  - app/controllers/ecom/core/application_modules_controller.rb
246
+ - app/controllers/ecom/core/companies_controller.rb
246
247
  - app/controllers/ecom/core/crew_types_controller.rb
247
248
  - app/controllers/ecom/core/equipment_types_controller.rb
248
249
  - app/controllers/ecom/core/material_types_controller.rb
249
250
  - app/controllers/ecom/core/menus_controller.rb
251
+ - app/controllers/ecom/core/project_crews_controller.rb
252
+ - app/controllers/ecom/core/projects_controller.rb
250
253
  - app/controllers/ecom/core/user_roles_controller.rb
251
254
  - app/controllers/ecom/core/users_controller.rb
252
255
  - app/models/ecom/core/application_module.rb
@@ -257,8 +260,10 @@ files:
257
260
  - app/models/ecom/core/booking.rb
258
261
  - app/models/ecom/core/company.rb
259
262
  - app/models/ecom/core/component_type.rb
263
+ - app/models/ecom/core/cost_type.rb
260
264
  - app/models/ecom/core/country.rb
261
265
  - app/models/ecom/core/crew.rb
266
+ - app/models/ecom/core/crew_contract.rb
262
267
  - app/models/ecom/core/crew_overtime.rb
263
268
  - app/models/ecom/core/crew_time.rb
264
269
  - app/models/ecom/core/crew_type.rb
@@ -272,8 +277,14 @@ files:
272
277
  - app/models/ecom/core/equipment_request.rb
273
278
  - app/models/ecom/core/equipment_type.rb
274
279
  - app/models/ecom/core/equipment_valuation.rb
280
+ - app/models/ecom/core/job_card.rb
275
281
  - app/models/ecom/core/location_type.rb
276
282
  - app/models/ecom/core/lookup.rb
283
+ - app/models/ecom/core/maintenance_category.rb
284
+ - app/models/ecom/core/maintenance_cost.rb
285
+ - app/models/ecom/core/maintenance_service_order.rb
286
+ - app/models/ecom/core/maintenance_status.rb
287
+ - app/models/ecom/core/maintenance_type.rb
277
288
  - app/models/ecom/core/material_type.rb
278
289
  - app/models/ecom/core/menu.rb
279
290
  - app/models/ecom/core/overtime_sheet.rb
@@ -288,6 +299,8 @@ files:
288
299
  - app/models/ecom/core/project_crew.rb
289
300
  - app/models/ecom/core/requested_item.rb
290
301
  - app/models/ecom/core/resource_type.rb
302
+ - app/models/ecom/core/schedule_setting.rb
303
+ - app/models/ecom/core/schedule_unit.rb
291
304
  - app/models/ecom/core/stakeholder.rb
292
305
  - app/models/ecom/core/stakeholder_type.rb
293
306
  - app/models/ecom/core/task.rb
@@ -305,6 +318,7 @@ files:
305
318
  - app/serializers/ecom/core/user_role_serializer.rb
306
319
  - app/serializers/ecom/core/user_serializer.rb
307
320
  - app/services/ecom/core/menu_service.rb
321
+ - app/services/ecom/core/project_crew_service.rb
308
322
  - app/services/ecom/core/token_auth_service.rb
309
323
  - app/uploaders/ecom/core/photo_uploader.rb
310
324
  - app/validators/ecom/core/date_range_validator.rb
@@ -354,6 +368,14 @@ files:
354
368
  - db/migrate/20200602130247_create_ecom_core_requested_items.rb
355
369
  - db/migrate/20200602830603_create_ecom_core_bookings.rb
356
370
  - db/migrate/20200603115317_create_ecom_core_booked_items.rb
371
+ - db/migrate/20200901085227_create_ecom_core_crew_contracts.rb
372
+ - db/migrate/20200919053331_create_ecom_core_maintenance_types.rb
373
+ - db/migrate/20200919072216_create_ecom_core_schedule_settings.rb
374
+ - db/migrate/20200919081338_create_ecom_core_maintenance_service_orders.rb
375
+ - db/migrate/20200919085613_create_ecom_core_job_cards.rb
376
+ - db/migrate/20200919101941_create_ecom_core_cost_types.rb
377
+ - db/migrate/20200919102802_create_ecom_core_maintenance_costs.rb
378
+ - db/migrate/20200922044959_add_costs_approved_to_job_card.rb
357
379
  - lib/ecom/core.rb
358
380
  - lib/ecom/core/engine.rb
359
381
  - lib/ecom/core/version.rb
@@ -366,7 +388,9 @@ files:
366
388
  - spec/factories/ecom/core/bookings.rb
367
389
  - spec/factories/ecom/core/companies.rb
368
390
  - spec/factories/ecom/core/component_types.rb
391
+ - spec/factories/ecom/core/cost_types.rb
369
392
  - spec/factories/ecom/core/countries.rb
393
+ - spec/factories/ecom/core/crew_contracts.rb
370
394
  - spec/factories/ecom/core/crew_overtimes.rb
371
395
  - spec/factories/ecom/core/crew_times.rb
372
396
  - spec/factories/ecom/core/crew_types.rb
@@ -381,8 +405,14 @@ files:
381
405
  - spec/factories/ecom/core/equipment_requests.rb
382
406
  - spec/factories/ecom/core/equipment_types.rb
383
407
  - spec/factories/ecom/core/equipment_valuations.rb
408
+ - spec/factories/ecom/core/job_cards.rb
384
409
  - spec/factories/ecom/core/location_types.rb
385
410
  - spec/factories/ecom/core/lookups.rb
411
+ - spec/factories/ecom/core/maintenance_categories.rb
412
+ - spec/factories/ecom/core/maintenance_costs.rb
413
+ - spec/factories/ecom/core/maintenance_service_orders.rb
414
+ - spec/factories/ecom/core/maintenance_statuses.rb
415
+ - spec/factories/ecom/core/maintenance_types.rb
386
416
  - spec/factories/ecom/core/material_types.rb
387
417
  - spec/factories/ecom/core/menus.rb
388
418
  - spec/factories/ecom/core/overtime_sheet_entries.rb
@@ -397,6 +427,8 @@ files:
397
427
  - spec/factories/ecom/core/projects.rb
398
428
  - spec/factories/ecom/core/requested_items.rb
399
429
  - spec/factories/ecom/core/resource_types.rb
430
+ - spec/factories/ecom/core/schedule_settings.rb
431
+ - spec/factories/ecom/core/schedule_units.rb
400
432
  - spec/factories/ecom/core/stakeholder_types.rb
401
433
  - spec/factories/ecom/core/stakeholders.rb
402
434
  - spec/factories/ecom/core/task_resources.rb
@@ -427,7 +459,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
427
459
  - !ruby/object:Gem::Version
428
460
  version: '0'
429
461
  requirements: []
430
- rubygems_version: 3.1.2
462
+ rubygems_version: 3.1.4
431
463
  signing_key:
432
464
  specification_version: 4
433
465
  summary: Core engine for construction management application.