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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 226d69727b3ecb4a8edfb5fc4c4a92fb6c91ff999d928f5509acaa9da26ec19a
4
- data.tar.gz: bb35268fa5cda39ace0d06240ad53f06da6845076df4e23041b6bd3ce147a36b
3
+ metadata.gz: 42f95a3904d7cdfebcafa09111ccfa6739bfda3496f67126e7d2fc43b586000f
4
+ data.tar.gz: e9cbda9dfca1b89b7660a50a1550ec0a0218dc2faaef488e179d5c0a5a21eedf
5
5
  SHA512:
6
- metadata.gz: 6069a79e8aa94eae4e49e9a68d0783a366fdb92c355d3d73ed4fdbd0ab2feaeb3f2c4c3678d8fda11a0cf7d25b783a89677d213752b1c9e5909e84f3491e52c6
7
- data.tar.gz: cf82927e16d1809c43760e3238202a87df93c10ae89b06cc482e598758c933d4368ecab45b8fb1d38c4dfec10180ae35e87e8ad785bde60d6329eac9e4c81c2f
6
+ metadata.gz: 704d938a16a2f48723e94663ba0161ada47c46d4c3cea081e1856d476aaaabb0820d1c0de57422f0787946bcf35a9eaac87973568c2736e3f63b7f03e4f9c77f
7
+ data.tar.gz: ceb93623c85ace2292f56142d3982e8be76fff618cdcad2cea79bdfe7c70d35a008e213114a885f16eacbd2de83df995287b94d66face645abb6513feeda0bbc
@@ -1,6 +1,7 @@
1
1
  module Ecom
2
2
  module Core
3
3
  class Crew < ApplicationRecord
4
+ mount_base64_uploader :photo, PhotoUploader
4
5
  PERMANENT = 'Permanent'.freeze
5
6
  SUPERVISOR = 'Supervisor'.freeze
6
7
  TEMPORARY = 'Temporary'.freeze
@@ -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
@@ -17,7 +17,7 @@ module Ecom
17
17
  m = 1
18
18
  y += 1
19
19
  end
20
- Payroll.create(month: m, year: y)
20
+ Payroll.create(month: m, year: y, project_id: project_id)
21
21
  end
22
22
  end
23
23
  end
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Ecom
2
2
  module Core
3
- VERSION = '1.2.22'.freeze
3
+ VERSION = '1.2.27'.freeze
4
4
  end
5
5
  end
@@ -3,3 +3,5 @@ require 'ecom/core/engine'
3
3
  require 'ancestry'
4
4
  require 'aasm'
5
5
  require 'active_model_serializers'
6
+ require 'carrierwave'
7
+ require 'carrierwave/base64'
@@ -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
@@ -10,6 +10,7 @@ FactoryBot.define do
10
10
  wage_in_words { FFaker::Name.name }
11
11
  employment_date { Date.today - 1 }
12
12
  sub_contracted { false }
13
+ photo { FFaker::Name.name }
13
14
  guarantor_name { FFaker::Name.name }
14
15
  guarantor_phone { FFaker::Name.name }
15
16
  active { true }
@@ -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
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.22
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-08-01 00:00:00.000000000 Z
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