ecom_core 1.2.22 → 1.2.27
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.
- checksums.yaml +4 -4
- data/app/models/ecom/core/crew.rb +1 -0
- data/app/models/ecom/core/crew_contract.rb +17 -0
- data/app/models/ecom/core/crew_overtime.rb +13 -0
- data/app/models/ecom/core/crew_time.rb +7 -6
- data/app/models/ecom/core/payroll.rb +1 -1
- data/app/uploaders/ecom/core/photo_uploader.rb +19 -0
- data/db/migrate/20191225100054_create_ecom_core_crews.rb +1 -0
- data/db/migrate/20200901085227_create_ecom_core_crew_contracts.rb +20 -0
- data/lib/ecom/core/version.rb +1 -1
- data/lib/ecom_core.rb +2 -0
- data/spec/factories/ecom/core/crew_contracts.rb +13 -0
- data/spec/factories/ecom/core/crews.rb +1 -0
- data/spec/factories/ecom/core/overtime_types.rb +1 -1
- metadata +54 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 42f95a3904d7cdfebcafa09111ccfa6739bfda3496f67126e7d2fc43b586000f
|
4
|
+
data.tar.gz: e9cbda9dfca1b89b7660a50a1550ec0a0218dc2faaef488e179d5c0a5a21eedf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 704d938a16a2f48723e94663ba0161ada47c46d4c3cea081e1856d476aaaabb0820d1c0de57422f0787946bcf35a9eaac87973568c2736e3f63b7f03e4f9c77f
|
7
|
+
data.tar.gz: ceb93623c85ace2292f56142d3982e8be76fff618cdcad2cea79bdfe7c70d35a008e213114a885f16eacbd2de83df995287b94d66face645abb6513feeda0bbc
|
@@ -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,19 @@
|
|
1
|
+
module Ecom
|
2
|
+
module Core
|
3
|
+
class PhotoUploader < CarrierWave::Uploader::Base
|
4
|
+
storage :file
|
5
|
+
|
6
|
+
def store_dir
|
7
|
+
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
8
|
+
end
|
9
|
+
|
10
|
+
def extension_whitelist
|
11
|
+
%w[jpg jpeg gif png]
|
12
|
+
end
|
13
|
+
|
14
|
+
def filename
|
15
|
+
original_filename
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -12,6 +12,7 @@ class CreateEcomCoreCrews < ActiveRecord::Migration[6.0]
|
|
12
12
|
t.string :wage_in_words, null: false
|
13
13
|
t.date :employment_date
|
14
14
|
t.boolean :sub_contracted, null: false, default: false
|
15
|
+
t.string :photo
|
15
16
|
t.string :guarantor_name
|
16
17
|
t.string :guarantor_phone
|
17
18
|
t.boolean :active, null: false, default: true
|
@@ -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
|
data/lib/ecom/core/version.rb
CHANGED
data/lib/ecom_core.rb
CHANGED
@@ -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
|
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.
|
4
|
+
version: 1.2.27
|
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-
|
11
|
+
date: 2020-09-01 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
|
@@ -66,6 +86,34 @@ dependencies:
|
|
66
86
|
- - ">="
|
67
87
|
- !ruby/object:Gem::Version
|
68
88
|
version: '0'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: carrierwave
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
type: :runtime
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: carrierwave-base64
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :runtime
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
69
117
|
- !ruby/object:Gem::Dependency
|
70
118
|
name: jwt
|
71
119
|
requirement: !ruby/object:Gem::Requirement
|
@@ -211,6 +259,7 @@ files:
|
|
211
259
|
- app/models/ecom/core/component_type.rb
|
212
260
|
- app/models/ecom/core/country.rb
|
213
261
|
- app/models/ecom/core/crew.rb
|
262
|
+
- app/models/ecom/core/crew_contract.rb
|
214
263
|
- app/models/ecom/core/crew_overtime.rb
|
215
264
|
- app/models/ecom/core/crew_time.rb
|
216
265
|
- app/models/ecom/core/crew_type.rb
|
@@ -258,6 +307,7 @@ files:
|
|
258
307
|
- app/serializers/ecom/core/user_serializer.rb
|
259
308
|
- app/services/ecom/core/menu_service.rb
|
260
309
|
- app/services/ecom/core/token_auth_service.rb
|
310
|
+
- app/uploaders/ecom/core/photo_uploader.rb
|
261
311
|
- app/validators/ecom/core/date_range_validator.rb
|
262
312
|
- config/database.ci.yml
|
263
313
|
- config/routes.rb
|
@@ -305,6 +355,7 @@ files:
|
|
305
355
|
- db/migrate/20200602130247_create_ecom_core_requested_items.rb
|
306
356
|
- db/migrate/20200602830603_create_ecom_core_bookings.rb
|
307
357
|
- db/migrate/20200603115317_create_ecom_core_booked_items.rb
|
358
|
+
- db/migrate/20200901085227_create_ecom_core_crew_contracts.rb
|
308
359
|
- lib/ecom/core.rb
|
309
360
|
- lib/ecom/core/engine.rb
|
310
361
|
- lib/ecom/core/version.rb
|
@@ -318,6 +369,7 @@ files:
|
|
318
369
|
- spec/factories/ecom/core/companies.rb
|
319
370
|
- spec/factories/ecom/core/component_types.rb
|
320
371
|
- spec/factories/ecom/core/countries.rb
|
372
|
+
- spec/factories/ecom/core/crew_contracts.rb
|
321
373
|
- spec/factories/ecom/core/crew_overtimes.rb
|
322
374
|
- spec/factories/ecom/core/crew_times.rb
|
323
375
|
- spec/factories/ecom/core/crew_types.rb
|