ecom_core 1.2.10 → 1.2.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/concerns/ecom/core/lookupable.rb +1 -2
- data/app/controllers/concerns/ecom/core/resource_typeable.rb +1 -1
- data/app/controllers/ecom/core/access_controller.rb +1 -2
- data/app/controllers/ecom/core/application_controller.rb +0 -1
- data/app/controllers/ecom/core/application_modules_controller.rb +1 -1
- data/app/controllers/ecom/core/menus_controller.rb +1 -1
- data/app/controllers/ecom/core/user_roles_controller.rb +1 -2
- data/app/controllers/ecom/core/users_controller.rb +1 -2
- data/app/models/ecom/core/attendance_sheet.rb +2 -1
- data/app/models/ecom/core/booked_item.rb +12 -0
- data/app/models/ecom/core/booking.rb +16 -0
- data/app/models/ecom/core/component_type.rb +6 -0
- data/app/models/ecom/core/country.rb +6 -0
- data/app/models/ecom/core/crew.rb +4 -0
- data/app/models/ecom/core/crew_time.rb +1 -1
- data/app/models/ecom/core/equipment_component.rb +1 -0
- data/app/models/ecom/core/equipment_item.rb +15 -2
- data/app/models/ecom/core/equipment_location.rb +2 -1
- data/app/models/ecom/core/equipment_request.rb +19 -0
- data/app/models/ecom/core/payment.rb +1 -1
- data/app/models/ecom/core/product_group.rb +7 -0
- data/app/models/ecom/core/requested_item.rb +13 -0
- data/app/models/ecom/core/task.rb +41 -2
- data/app/models/ecom/core/task_resource.rb +10 -0
- data/app/models/ecom/core/task_template.rb +1 -1
- data/app/models/ecom/core/work_package.rb +10 -0
- data/app/models/ecom/core/work_product.rb +18 -46
- data/app/models/ecom/core/work_product_template.rb +1 -1
- data/app/serializers/ecom/core/lookup_serializer.rb +1 -1
- data/app/serializers/ecom/core/resource_type_serializer.rb +1 -1
- data/app/serializers/ecom/core/user_role_serializer.rb +1 -1
- data/app/services/ecom/core/menu_service.rb +1 -3
- data/app/services/ecom/core/token_auth_service.rb +2 -1
- data/app/validators/ecom/core/date_range_validator.rb +11 -0
- data/db/migrate/20191119013236_create_ecom_core_work_product_templates.rb +10 -3
- data/db/migrate/20191201251015_create_ecom_core_product_groups.rb +13 -0
- data/db/migrate/20191202222210_create_ecom_core_work_packages.rb +13 -0
- data/db/migrate/20191202235434_create_ecom_core_work_products.rb +7 -13
- data/db/migrate/20191207103735_create_ecom_core_tasks.rb +45 -0
- data/db/migrate/20191210724614_create_ecom_core_task_resources.rb +18 -0
- data/db/migrate/20200315152143_create_ecom_core_equipment.rb +1 -0
- data/db/migrate/20200315153640_create_ecom_core_equipment_items.rb +6 -1
- data/db/migrate/20200316125323_create_ecom_core_equipment_components.rb +5 -0
- data/db/migrate/20200601104719_create_ecom_core_equipment_requests.rb +18 -0
- data/db/migrate/20200602130247_create_ecom_core_requested_items.rb +26 -0
- data/db/migrate/20200602830603_create_ecom_core_bookings.rb +18 -0
- data/db/migrate/20200603115317_create_ecom_core_booked_items.rb +23 -0
- data/lib/ecom/core/engine.rb +0 -1
- data/lib/ecom/core/version.rb +1 -1
- data/spec/factories/ecom/core/application_modules.rb +1 -1
- data/spec/factories/ecom/core/booked_items.rb +10 -0
- data/spec/factories/ecom/core/bookings.rb +8 -0
- data/spec/factories/ecom/core/companies.rb +1 -1
- data/spec/factories/ecom/core/component_types.rb +5 -0
- data/spec/factories/ecom/core/countries.rb +5 -0
- data/spec/factories/ecom/core/equipment.rb +1 -0
- data/spec/factories/ecom/core/equipment_components.rb +2 -0
- data/spec/factories/ecom/core/equipment_items.rb +3 -1
- data/spec/factories/ecom/core/equipment_requests.rb +8 -0
- data/spec/factories/ecom/core/product_groups.rb +6 -0
- data/spec/factories/ecom/core/requested_items.rb +13 -0
- data/spec/factories/ecom/core/resource_types.rb +1 -1
- data/spec/factories/ecom/core/task_resources.rb +8 -0
- data/spec/factories/ecom/core/task_template_types.rb +1 -1
- data/spec/factories/ecom/core/task_templates.rb +1 -8
- data/spec/factories/ecom/core/tasks.rb +12 -3
- data/spec/factories/ecom/core/users.rb +1 -1
- data/spec/factories/ecom/core/work_component_templates.rb +1 -1
- data/spec/factories/ecom/core/work_packages.rb +9 -0
- data/spec/factories/ecom/core/work_product_templates.rb +1 -2
- data/spec/factories/ecom/core/work_products.rb +3 -6
- metadata +29 -3
- data/db/migrate/20191202103735_create_ecom_core_tasks.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e47a28bd7b3ce16d86c8ae18b5ff906bfba496c0a862dc97c41babd5760ea9e
|
4
|
+
data.tar.gz: '09dd7a50a6ac74286a82557aa1561c308a2ac295b75a3472fbe6d4af583bce22'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1d13e668d8382fe3a87d8386df80300488c09785b7357e7e33a061a058765abbab8ff84d798e49a065ac44c8708adebe68a5423b5387b702f8919da565871e4
|
7
|
+
data.tar.gz: e377ee5714e4e21c3e73bef63bb1aeec0e7621215eba0bfd81c8fd804974cb1e6b72ee1fbfd53cc746e465cf988c254dc89d2413a5ae47a8fa6e755851bc0d28
|
@@ -52,7 +52,8 @@ module Ecom
|
|
52
52
|
raise 'There is an open attendance sheet which needs to be submitted before creating a new one.'
|
53
53
|
end
|
54
54
|
|
55
|
-
AttendanceSheet.create(date: Date.today, opened_at: Time.now, status: StatusConstants::OPEN,
|
55
|
+
AttendanceSheet.create(date: Date.today, opened_at: Time.now, status: StatusConstants::OPEN,
|
56
|
+
project_id: project_id)
|
56
57
|
end
|
57
58
|
|
58
59
|
def self.submit_current(project_id)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Ecom
|
2
|
+
module Core
|
3
|
+
class Booking < ApplicationRecord
|
4
|
+
APPROVED = 'Approved'.freeze
|
5
|
+
UNAPPROVED = 'Unapproved'.freeze
|
6
|
+
|
7
|
+
STATUSES = [APPROVED, UNAPPROVED].freeze
|
8
|
+
|
9
|
+
belongs_to :equipment_request
|
10
|
+
belongs_to :booked_by, class_name: 'Ecom::Core::User'
|
11
|
+
has_many :booked_items
|
12
|
+
|
13
|
+
validates :status, presence: true, inclusion: STATUSES
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -14,6 +14,10 @@ module Ecom
|
|
14
14
|
validates :name, :address, :qualification, :employment, :wage, :wage_in_words, presence: true
|
15
15
|
validates :employment, inclusion: EMPLOYMENT_TYPES
|
16
16
|
|
17
|
+
scope :by_active, ->(active) { where(active: active) }
|
18
|
+
scope :by_qualification, ->(qualification) { where(qualification: qualification) }
|
19
|
+
scope :by_sub_contracted, ->(sub_contracted) { where(sub_contracted: sub_contracted) }
|
20
|
+
|
17
21
|
def set_employment_date
|
18
22
|
self.employment_date = Date.today
|
19
23
|
end
|
@@ -9,7 +9,7 @@ module Ecom
|
|
9
9
|
TIME_RANGE = {
|
10
10
|
MORNING => { start: Time.zone.parse('5:00 AM'), end: Time.zone.parse('9:00 AM') },
|
11
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')}
|
12
|
+
BOTH => { start: Time.zone.parse('5:00 AM'), end: Time.zone.parse('2:00 PM') }
|
13
13
|
}.freeze
|
14
14
|
|
15
15
|
belongs_to :attendance_sheet_entry
|
@@ -1,13 +1,26 @@
|
|
1
1
|
module Ecom
|
2
2
|
module Core
|
3
3
|
class EquipmentItem < ApplicationRecord
|
4
|
-
|
5
|
-
|
4
|
+
# Equipment Statuses
|
5
|
+
READY = 'Ready'.freeze
|
6
|
+
UNDER_MAINTENANCE = 'Under Maintenance'.freeze
|
7
|
+
EQUIPMENT_STATUSES = [READY, UNDER_MAINTENANCE].freeze
|
8
|
+
|
9
|
+
# Duty Statuses
|
10
|
+
AVAILABLE = 'Available'.freeze
|
11
|
+
BOOKED = 'Booked'.freeze
|
12
|
+
ON_DUTY = 'On Duty'.freeze
|
13
|
+
DUTY_STATUSES = [AVAILABLE, BOOKED, ON_DUTY].freeze
|
6
14
|
|
7
15
|
belongs_to :equipment
|
16
|
+
belongs_to :country
|
8
17
|
belongs_to :current_location, class_name: 'Ecom::Core::EquipmentLocation'
|
18
|
+
has_many :equipment_components
|
9
19
|
|
10
20
|
validates :name, :status, :serial_number, :purchase_date, :purchase_price, presence: true
|
21
|
+
validates :status, inclusion: EQUIPMENT_STATUSES
|
22
|
+
validates :duty_status, inclusion: DUTY_STATUSES
|
23
|
+
|
11
24
|
validates :serial_number, uniqueness: true
|
12
25
|
|
13
26
|
def self.search(param)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Ecom
|
2
|
+
module Core
|
3
|
+
class EquipmentRequest < ApplicationRecord
|
4
|
+
DRAFT = 'Draft'.freeze
|
5
|
+
UNDER_REVIEW = 'Under Review'.freeze
|
6
|
+
APPROVED = 'Approved'.freeze
|
7
|
+
REJECTED = 'Rejected'.freeze
|
8
|
+
|
9
|
+
STATUSES = [DRAFT, UNDER_REVIEW, APPROVED, REJECTED].freeze
|
10
|
+
belongs_to :project
|
11
|
+
belongs_to :requested_by, class_name: 'Ecom::Core::User'
|
12
|
+
has_one :booking
|
13
|
+
|
14
|
+
validates :status, presence: true, inclusion: STATUSES
|
15
|
+
|
16
|
+
scope :by_status, ->(status) { where(status: status) }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Ecom
|
2
|
+
module Core
|
3
|
+
class RequestedItem < ApplicationRecord
|
4
|
+
belongs_to :equipment_request
|
5
|
+
belongs_to :equipment
|
6
|
+
belongs_to :country, optional: true
|
7
|
+
|
8
|
+
validates :start_date, :end_date, :quantity, presence: true
|
9
|
+
validates :quantity, numericality: { only_integer: true, greater_than: 0 }
|
10
|
+
validates_with DateRangeValidator
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,10 +1,49 @@
|
|
1
1
|
module Ecom
|
2
2
|
module Core
|
3
3
|
class Task < ApplicationRecord
|
4
|
-
|
4
|
+
include AASM
|
5
|
+
|
6
|
+
belongs_to :work_product
|
5
7
|
belongs_to :task_template
|
8
|
+
belongs_to :work_package, optional: true
|
9
|
+
belongs_to :performer, class_name: 'Ecom::Core::User', optional: true
|
10
|
+
belongs_to :approver, class_name: 'Ecom::Core::User', optional: true
|
11
|
+
belongs_to :supervisor, class_name: 'Ecom::Core::User', optional: true
|
12
|
+
belongs_to :quality_controller, class_name: 'Ecom::Core::User', optional: true
|
13
|
+
|
14
|
+
validates :code, :name, :status, :percent_completed, presence: true
|
15
|
+
validates_numericality_of :percent_completed,
|
16
|
+
only_integer: true,
|
17
|
+
greater_than_or_equal_to: 0,
|
18
|
+
less_than_or_equal_to: 100
|
19
|
+
|
20
|
+
aasm column: 'status' do
|
21
|
+
state :new, initial: true
|
22
|
+
state :in_progress
|
23
|
+
state :submitted
|
24
|
+
state :under_review
|
25
|
+
state :completed
|
26
|
+
|
27
|
+
event :start do
|
28
|
+
transitions from: :new, to: :in_progress
|
29
|
+
end
|
30
|
+
|
31
|
+
event :submit do
|
32
|
+
transitions from: :in_progress, to: :submitted
|
33
|
+
end
|
34
|
+
|
35
|
+
event :review do
|
36
|
+
transitions from: :submitted, to: :under_review
|
37
|
+
end
|
38
|
+
|
39
|
+
event :complete do
|
40
|
+
transitions from: %i[submitted under_review], to: :completed
|
41
|
+
end
|
6
42
|
|
7
|
-
|
43
|
+
event :rework do
|
44
|
+
transitions from: :under_review, to: :in_progress
|
45
|
+
end
|
46
|
+
end
|
8
47
|
end
|
9
48
|
end
|
10
49
|
end
|
@@ -4,7 +4,7 @@ module Ecom
|
|
4
4
|
has_ancestry
|
5
5
|
|
6
6
|
belongs_to :task_template_type
|
7
|
-
|
7
|
+
has_and_belongs_to_many :work_product_templates, join_table: 'ecom_core_task_templates_work_product_templates'
|
8
8
|
has_and_belongs_to_many :resource_types, join_table: 'ecom_core_task_templates_resource_types'
|
9
9
|
|
10
10
|
validates :name, :code, presence: true
|
@@ -12,59 +12,31 @@
|
|
12
12
|
# way as chart of accounts to identify parent and child relationships. Even then,
|
13
13
|
# there needs to be a well defined coding scheme developed before using the column
|
14
14
|
# field.
|
15
|
-
#
|
16
15
|
module Ecom
|
17
16
|
module Core
|
18
17
|
class WorkProduct < ApplicationRecord
|
19
18
|
include AASM
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
belongs_to :performer, class_name: 'Ecom::Core::User'
|
25
|
-
belongs_to :approver, class_name: 'Ecom::Core::User'
|
26
|
-
belongs_to :supervisor, class_name: 'Ecom::Core::User'
|
27
|
-
belongs_to :quality_controller, class_name: 'Ecom::Core::User'
|
28
|
-
|
29
|
-
validates :name, presence: true
|
30
|
-
validates :design_reference_no, uniqueness: true
|
31
|
-
|
32
|
-
aasm column: 'task_status' do
|
33
|
-
state :new, initial: true
|
34
|
-
state :in_progress
|
35
|
-
state :submitted
|
36
|
-
state :under_review
|
37
|
-
state :completed
|
38
|
-
|
39
|
-
event :start do
|
40
|
-
transitions from: :new, to: :in_progress
|
41
|
-
end
|
42
|
-
|
43
|
-
event :submit do
|
44
|
-
transitions from: :in_progress, to: :submitted
|
45
|
-
end
|
20
|
+
NEW = 'New'.freeze
|
21
|
+
UNDER_CONSTRUCTION = 'Under Construction'.freeze
|
22
|
+
COMPLETED = 'Completed'.freeze
|
46
23
|
|
47
|
-
|
48
|
-
transitions from: :submitted, to: :under_review
|
49
|
-
end
|
24
|
+
STATUSES = [NEW, UNDER_CONSTRUCTION, COMPLETED].freeze
|
50
25
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
transitions from: :unassigned, to: :assigned
|
66
|
-
end
|
67
|
-
end
|
26
|
+
belongs_to :work_product_template
|
27
|
+
belongs_to :project
|
28
|
+
belongs_to :product_group, optional: true
|
29
|
+
belongs_to :approver, class_name: 'Ecom::Core::User', optional: true
|
30
|
+
belongs_to :supervisor, class_name: 'Ecom::Core::User', optional: true
|
31
|
+
belongs_to :quality_controller, class_name: 'Ecom::Core::User', optional: true
|
32
|
+
|
33
|
+
validates :name, :design_reference_no, :status, :percent_completed, presence: true
|
34
|
+
validates :design_reference_no, uniqueness: { scope: :project_id }
|
35
|
+
validates :status, inclusion: STATUSES
|
36
|
+
validates_numericality_of :percent_completed,
|
37
|
+
only_integer: true,
|
38
|
+
greater_than_or_equal_to: 0,
|
39
|
+
less_than_or_equal_to: 100
|
68
40
|
end
|
69
41
|
end
|
70
42
|
end
|
@@ -2,7 +2,7 @@ module Ecom
|
|
2
2
|
module Core
|
3
3
|
class WorkProductTemplate < ApplicationRecord
|
4
4
|
validates :code, :name, presence: true, uniqueness: true
|
5
|
-
|
5
|
+
has_and_belongs_to_many :task_templates
|
6
6
|
has_many :product_types
|
7
7
|
|
8
8
|
scope :filtered_by_template_type, lambda { |id|
|