ecom_core 1.2.24 → 1.2.29

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 (40) 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 +7 -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/app/uploaders/ecom/core/photo_uploader.rb +4 -0
  20. data/config/routes.rb +5 -0
  21. data/db/migrate/20200901085227_create_ecom_core_crew_contracts.rb +20 -0
  22. data/db/migrate/20200919053331_create_ecom_core_maintenance_types.rb +14 -0
  23. data/db/migrate/20200919072216_create_ecom_core_schedule_settings.rb +21 -0
  24. data/db/migrate/20200919081338_create_ecom_core_maintenance_service_orders.rb +32 -0
  25. data/db/migrate/20200919085613_create_ecom_core_job_cards.rb +48 -0
  26. data/db/migrate/20200919101941_create_ecom_core_cost_types.rb +10 -0
  27. data/db/migrate/20200919102802_create_ecom_core_maintenance_costs.rb +19 -0
  28. data/lib/ecom/core/version.rb +1 -1
  29. data/spec/factories/ecom/core/cost_types.rb +6 -0
  30. data/spec/factories/ecom/core/crew_contracts.rb +13 -0
  31. data/spec/factories/ecom/core/job_cards.rb +17 -0
  32. data/spec/factories/ecom/core/maintenance_categories.rb +5 -0
  33. data/spec/factories/ecom/core/maintenance_costs.rb +9 -0
  34. data/spec/factories/ecom/core/maintenance_service_orders.rb +16 -0
  35. data/spec/factories/ecom/core/maintenance_statuses.rb +5 -0
  36. data/spec/factories/ecom/core/maintenance_types.rb +7 -0
  37. data/spec/factories/ecom/core/overtime_types.rb +1 -1
  38. data/spec/factories/ecom/core/schedule_settings.rb +8 -0
  39. data/spec/factories/ecom/core/schedule_units.rb +5 -0
  40. metadata +34 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: df898073d93a47b62e3478402f39348fb1ebce76fcb15247cbaae48b1f20da8b
4
- data.tar.gz: 9b0e8f96058c4fcb320e42f4559c7f6ad951414935f8ad369e0d1b3f6cdd4f80
3
+ metadata.gz: 96742368eb7fe7bc3b44efac1eea88cc2d89394faa772638ca8e6b1d1b8c1e2d
4
+ data.tar.gz: 984af0317612fe326c38f59c0e223cb22267276781932a925c99d18ceb1c8b11
5
5
  SHA512:
6
- metadata.gz: 79e71c70e77d0dfdb3b13141f2be198fe8ab989293af0b7cb82b1bcb661d1a8b9f1b6604a50074c7a8c8d992e9db618720c4520702237b8b280215c4209b57c0
7
- data.tar.gz: 5d881608dee92bd62f78e777d2b4eadeadcf80faa89852c9d1af820ff900fd373b812a4763a80949d6eec6a5bbeb17ac256404f2b7a729b6dfef63431f9a3761
6
+ metadata.gz: 39788169311d18e2c67a7f051409855f0125938ae03aae3e0e699a9440824ea3bd8c2bceebe483d9ab4760c71edb392f5eec56b6eeab016747230b97b7b8fc4d
7
+ data.tar.gz: 7d5bf469f18d80ef09a86340ceb5fdd84ada1248a63e6fd958ccc674faaf2860ec9fa1811951156556d9c6518615d9909b75859dc8d1ce2d7aefe345adf75ba9
@@ -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 :checkout_is_greater_than_checkin
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,12 @@ module Ecom
27
22
  before_save :calculate_hours
28
23
  after_save :calculate_total
29
24
 
25
+ def checkout_is_greater_than_checkin
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
+
30
31
  def calculate_hours
31
32
  self.hours = if checkout_time.nil? || checkin_time.nil?
32
33
  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
@@ -10,6 +10,10 @@ module Ecom
10
10
  def extension_whitelist
11
11
  %w[jpg jpeg gif png]
12
12
  end
13
+
14
+ def filename
15
+ original_filename
16
+ end
13
17
  end
14
18
  end
15
19
  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
@@ -1,5 +1,5 @@
1
1
  module Ecom
2
2
  module Core
3
- VERSION = '1.2.24'.freeze
3
+ VERSION = '1.2.29'.freeze
4
4
  end
5
5
  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.24
4
+ version: 1.2.29
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-07 00:00:00.000000000 Z
11
+ date: 2020-09-22 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,13 @@ 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
357
378
  - lib/ecom/core.rb
358
379
  - lib/ecom/core/engine.rb
359
380
  - lib/ecom/core/version.rb
@@ -366,7 +387,9 @@ files:
366
387
  - spec/factories/ecom/core/bookings.rb
367
388
  - spec/factories/ecom/core/companies.rb
368
389
  - spec/factories/ecom/core/component_types.rb
390
+ - spec/factories/ecom/core/cost_types.rb
369
391
  - spec/factories/ecom/core/countries.rb
392
+ - spec/factories/ecom/core/crew_contracts.rb
370
393
  - spec/factories/ecom/core/crew_overtimes.rb
371
394
  - spec/factories/ecom/core/crew_times.rb
372
395
  - spec/factories/ecom/core/crew_types.rb
@@ -381,8 +404,14 @@ files:
381
404
  - spec/factories/ecom/core/equipment_requests.rb
382
405
  - spec/factories/ecom/core/equipment_types.rb
383
406
  - spec/factories/ecom/core/equipment_valuations.rb
407
+ - spec/factories/ecom/core/job_cards.rb
384
408
  - spec/factories/ecom/core/location_types.rb
385
409
  - spec/factories/ecom/core/lookups.rb
410
+ - spec/factories/ecom/core/maintenance_categories.rb
411
+ - spec/factories/ecom/core/maintenance_costs.rb
412
+ - spec/factories/ecom/core/maintenance_service_orders.rb
413
+ - spec/factories/ecom/core/maintenance_statuses.rb
414
+ - spec/factories/ecom/core/maintenance_types.rb
386
415
  - spec/factories/ecom/core/material_types.rb
387
416
  - spec/factories/ecom/core/menus.rb
388
417
  - spec/factories/ecom/core/overtime_sheet_entries.rb
@@ -397,6 +426,8 @@ files:
397
426
  - spec/factories/ecom/core/projects.rb
398
427
  - spec/factories/ecom/core/requested_items.rb
399
428
  - spec/factories/ecom/core/resource_types.rb
429
+ - spec/factories/ecom/core/schedule_settings.rb
430
+ - spec/factories/ecom/core/schedule_units.rb
400
431
  - spec/factories/ecom/core/stakeholder_types.rb
401
432
  - spec/factories/ecom/core/stakeholders.rb
402
433
  - spec/factories/ecom/core/task_resources.rb
@@ -427,7 +458,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
427
458
  - !ruby/object:Gem::Version
428
459
  version: '0'
429
460
  requirements: []
430
- rubygems_version: 3.1.2
461
+ rubygems_version: 3.1.4
431
462
  signing_key:
432
463
  specification_version: 4
433
464
  summary: Core engine for construction management application.