ecom_core 1.2.23 → 1.2.28

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 +54 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3061603023c7fd11324f811b79bb0c29e62292a2561c113298cc5541d7e6e3dd
4
- data.tar.gz: 72ab3c36d605bdfe6120367ec7d86bbe8314e085c902d7f0be3971ea769d3b05
3
+ metadata.gz: c60cc03ce91bb6a6fcda02c9d46c4f2a612db516dab13f6068e07b7410a236e8
4
+ data.tar.gz: 128979b27e4fb0d111ea8c372cd3a17b312a473ad254b76b3f86ccdee9fd13d4
5
5
  SHA512:
6
- metadata.gz: b919b5c759887570ced9b3b72301264d599dccfbbd3a3d06044c1b00f521514e2ccfeb44c63febeeba6391b17bf7e7b5d18421acfd622b284e345721580ba135
7
- data.tar.gz: 82c62c236eafc7fbe52811fc9ff82330ea66e56cab56c2c322b50ea47aba0f86eaeb13cf6bd8647b60fb416f5014613190b2e233e8ffb9b7e622568edd484c78
6
+ metadata.gz: ebb78acd53dfa40dfcb4a49a0bbbf0369c1282005b45dfa8af8909dd7ab095754d688408152eddce07b8dd91f193985a1b5f0a2b003d5746d7fd190283c31ee0
7
+ data.tar.gz: 0327b3d3d94bc49ffd640d5557b678f62c75b75bf9f45f25d16e6016f8d31ed4e72f00a915653b1c734408bd18be3e29f3b89ad05a8337b798ec7f7ced71a489
@@ -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: false,
22
+ index: { name: 'jc_on_cb_indx' },
23
+ foreign_key: { to_table: :ecom_core_users }
24
+ t.references :checkout_to,
25
+ null: false,
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: false,
34
+ index: { name: 'jc_on_cib_indx' },
35
+ foreign_key: { to_table: :ecom_core_users }
36
+ t.references :checkin_to,
37
+ null: false,
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.23'.freeze
3
+ VERSION = '1.2.28'.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.23
4
+ version: 1.2.28
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-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aasm
@@ -38,6 +38,26 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.10.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: after_commit_everywhere
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.1'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 0.1.5
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '0.1'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 0.1.5
41
61
  - !ruby/object:Gem::Dependency
42
62
  name: ancestry
43
63
  requirement: !ruby/object:Gem::Requirement
@@ -223,10 +243,13 @@ files:
223
243
  - app/controllers/ecom/core/access_controller.rb
224
244
  - app/controllers/ecom/core/application_controller.rb
225
245
  - app/controllers/ecom/core/application_modules_controller.rb
246
+ - app/controllers/ecom/core/companies_controller.rb
226
247
  - app/controllers/ecom/core/crew_types_controller.rb
227
248
  - app/controllers/ecom/core/equipment_types_controller.rb
228
249
  - app/controllers/ecom/core/material_types_controller.rb
229
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
230
253
  - app/controllers/ecom/core/user_roles_controller.rb
231
254
  - app/controllers/ecom/core/users_controller.rb
232
255
  - app/models/ecom/core/application_module.rb
@@ -237,8 +260,10 @@ files:
237
260
  - app/models/ecom/core/booking.rb
238
261
  - app/models/ecom/core/company.rb
239
262
  - app/models/ecom/core/component_type.rb
263
+ - app/models/ecom/core/cost_type.rb
240
264
  - app/models/ecom/core/country.rb
241
265
  - app/models/ecom/core/crew.rb
266
+ - app/models/ecom/core/crew_contract.rb
242
267
  - app/models/ecom/core/crew_overtime.rb
243
268
  - app/models/ecom/core/crew_time.rb
244
269
  - app/models/ecom/core/crew_type.rb
@@ -252,8 +277,14 @@ files:
252
277
  - app/models/ecom/core/equipment_request.rb
253
278
  - app/models/ecom/core/equipment_type.rb
254
279
  - app/models/ecom/core/equipment_valuation.rb
280
+ - app/models/ecom/core/job_card.rb
255
281
  - app/models/ecom/core/location_type.rb
256
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
257
288
  - app/models/ecom/core/material_type.rb
258
289
  - app/models/ecom/core/menu.rb
259
290
  - app/models/ecom/core/overtime_sheet.rb
@@ -268,6 +299,8 @@ files:
268
299
  - app/models/ecom/core/project_crew.rb
269
300
  - app/models/ecom/core/requested_item.rb
270
301
  - app/models/ecom/core/resource_type.rb
302
+ - app/models/ecom/core/schedule_setting.rb
303
+ - app/models/ecom/core/schedule_unit.rb
271
304
  - app/models/ecom/core/stakeholder.rb
272
305
  - app/models/ecom/core/stakeholder_type.rb
273
306
  - app/models/ecom/core/task.rb
@@ -285,6 +318,7 @@ files:
285
318
  - app/serializers/ecom/core/user_role_serializer.rb
286
319
  - app/serializers/ecom/core/user_serializer.rb
287
320
  - app/services/ecom/core/menu_service.rb
321
+ - app/services/ecom/core/project_crew_service.rb
288
322
  - app/services/ecom/core/token_auth_service.rb
289
323
  - app/uploaders/ecom/core/photo_uploader.rb
290
324
  - app/validators/ecom/core/date_range_validator.rb
@@ -334,6 +368,13 @@ files:
334
368
  - db/migrate/20200602130247_create_ecom_core_requested_items.rb
335
369
  - db/migrate/20200602830603_create_ecom_core_bookings.rb
336
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
337
378
  - lib/ecom/core.rb
338
379
  - lib/ecom/core/engine.rb
339
380
  - lib/ecom/core/version.rb
@@ -346,7 +387,9 @@ files:
346
387
  - spec/factories/ecom/core/bookings.rb
347
388
  - spec/factories/ecom/core/companies.rb
348
389
  - spec/factories/ecom/core/component_types.rb
390
+ - spec/factories/ecom/core/cost_types.rb
349
391
  - spec/factories/ecom/core/countries.rb
392
+ - spec/factories/ecom/core/crew_contracts.rb
350
393
  - spec/factories/ecom/core/crew_overtimes.rb
351
394
  - spec/factories/ecom/core/crew_times.rb
352
395
  - spec/factories/ecom/core/crew_types.rb
@@ -361,8 +404,14 @@ files:
361
404
  - spec/factories/ecom/core/equipment_requests.rb
362
405
  - spec/factories/ecom/core/equipment_types.rb
363
406
  - spec/factories/ecom/core/equipment_valuations.rb
407
+ - spec/factories/ecom/core/job_cards.rb
364
408
  - spec/factories/ecom/core/location_types.rb
365
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
366
415
  - spec/factories/ecom/core/material_types.rb
367
416
  - spec/factories/ecom/core/menus.rb
368
417
  - spec/factories/ecom/core/overtime_sheet_entries.rb
@@ -377,6 +426,8 @@ files:
377
426
  - spec/factories/ecom/core/projects.rb
378
427
  - spec/factories/ecom/core/requested_items.rb
379
428
  - spec/factories/ecom/core/resource_types.rb
429
+ - spec/factories/ecom/core/schedule_settings.rb
430
+ - spec/factories/ecom/core/schedule_units.rb
380
431
  - spec/factories/ecom/core/stakeholder_types.rb
381
432
  - spec/factories/ecom/core/stakeholders.rb
382
433
  - spec/factories/ecom/core/task_resources.rb
@@ -407,7 +458,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
407
458
  - !ruby/object:Gem::Version
408
459
  version: '0'
409
460
  requirements: []
410
- rubygems_version: 3.1.2
461
+ rubygems_version: 3.1.4
411
462
  signing_key:
412
463
  specification_version: 4
413
464
  summary: Core engine for construction management application.