ecom_core 1.3.2 → 1.3.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 621b9066b1247c45b0327f64ea03e820b175888a78d1e4819301763cee03b279
4
- data.tar.gz: cfebe590afc77b32cbe81da6c4cb848d6d40d856c235b914938df2c71f3d85a4
3
+ metadata.gz: 5e8e8893a70210a4ad36fa2468d4a692a532e273f3d66be4eb50c83068aa771d
4
+ data.tar.gz: ae8c128f18b9d473da5cb4f3278bad9edba5b6137e8ef0e216b511583548781d
5
5
  SHA512:
6
- metadata.gz: f5a936576f1fb6caf3774bdcda05d10f7583253b45e8d1f89ff5b0300fe99346642582f92094b4cc62b347013b1daa6ac07ef65341ab529a870b070be6ea7bab
7
- data.tar.gz: bbb27165e2ebc8bd422a2ac6b8f04de12029a9683fcf408d089ae64ebfeb28c5176b16ec44555d857bf502e7e2ffc5e8f06763d309dcfeb17f52cb796a85e852
6
+ metadata.gz: 61849355dbdc3879f310d7d8b59e2ff1ffa334535813bcd268c09986310e1ba8cd7196829cdf03364856b3e1ea75a760ddfb084f55731bc137dded25ecefb54d
7
+ data.tar.gz: b20b9ce507e05925dc5e71a894620cc611a6fa3ebf17e4bd296ca74376b4b81804176d62e07c31fed30fb39535be013b36178526dc57bbfaace44cc1944e05d5
@@ -4,6 +4,8 @@ module Ecom
4
4
  belongs_to :attendance_sheet
5
5
  belongs_to :crew
6
6
  has_many :crew_times
7
+
8
+ validates :total_hours, presence: true, numericality: { greater_than_or_equal_to: 0 }
7
9
  end
8
10
  end
9
11
  end
@@ -10,6 +10,10 @@ module Ecom
10
10
 
11
11
  validates :hours, :raw_hours, presence: true
12
12
  validate :validate_overtime_by_type
13
+ validates :hours, presence: true, numericality: { greater_than_or_equal_to: 0 }
14
+ validates :overtime_type_id,
15
+ uniqueness: { scope: :overtime_sheet_entry_id,
16
+ message: 'There exists a crew overtime for the given overtime sheet and overtime type' }
13
17
 
14
18
  scope :by_overtime, lambda { |id|
15
19
  joins(:overtime_sheet_entry).where(ecom_core_overtime_sheet_entries: { overtime_sheet_id: id })
@@ -23,8 +27,11 @@ module Ecom
23
27
 
24
28
  start = Time.zone.parse(overtime_type.from)
25
29
  finish = Time.zone.parse(overtime_type.to)
26
- diff = ((finish - start) / 3600).round
27
-
30
+ diff = if finish >= start
31
+ ((finish - start) / 3600).round
32
+ else
33
+ ((start - finish) / 3600).round
34
+ end
28
35
  return unless raw_hours > diff
29
36
 
30
37
  errors.add(:crew_overtime, 'The selected overtime type does not allow the specified amount of hours.')
@@ -13,6 +13,7 @@ module Ecom
13
13
 
14
14
  validates :checkin_time, presence: true, if: :checkout_time
15
15
  validate :time_range_validation, :total_time_validation
16
+ validates :hours, presence: true, numericality: { greater_than_or_equal_to: 0 }
16
17
 
17
18
  scope :by_attendance, lambda { |id|
18
19
  joins(:attendance_sheet_entry).where(ecom_core_attendance_sheet_entries: { attendance_sheet_id: id })
@@ -31,9 +32,13 @@ module Ecom
31
32
  def total_time_validation
32
33
  return if checkout_time.nil? || checkin_time.nil?
33
34
 
34
- return unless attendance_sheet_entry.total_hours + compute_hours > 8
35
-
36
- errors.add(:attendance_sheet_entry, 'has more than 8 hours')
35
+ if new_record? & !persisted?
36
+ if attendance_sheet_entry.total_hours + compute_hours > 8
37
+ errors.add(:attendance_sheet_entry, 'has more than 8 hours')
38
+ end
39
+ elsif attendance_sheet_entry.total_hours + compute_hours - computed_hour > 8
40
+ errors.add(:attendance_sheet_entry, 'has more than 8 hours')
41
+ end
37
42
  end
38
43
 
39
44
  def calculate_hours
@@ -109,6 +114,21 @@ module Ecom
109
114
  time -= 1 if day_part == FULL_DAY
110
115
  time
111
116
  end
117
+
118
+ # A similar method as `compute_hours` but this one computes hours for
119
+ # the the currently presisted checkin_time and checkout_time
120
+ def computed_hour
121
+ # Reparse time to avoid errors caused by date differences
122
+ range = define_range
123
+ start = Time.zone.parse(checkin_time_was.strftime('%I:%M%p'))
124
+ finish = Time.zone.parse(checkout_time_was.strftime('%I:%M%p'))
125
+ day_part = find_range(start, finish)
126
+ left = start.before?(range[day_part][:start]) ? range[day_part][:start] : start
127
+ right = finish.after?(range[day_part][:finish]) ? range[day_part][:finish] : finish
128
+ time = (right - left) / 1.hour
129
+ time -= 1 if day_part == FULL_DAY
130
+ time
131
+ end
112
132
  end
113
133
  end
114
134
  end
@@ -10,9 +10,9 @@ module Ecom
10
10
  belongs_to :equipment_item
11
11
  belongs_to :maintenance_type
12
12
  belongs_to :prepared_by, class_name: 'Ecom::Core::User'
13
- belongs_to :approved_by, class_name: 'Ecom::Core::User'
13
+ belongs_to :approved_by, class_name: 'Ecom::Core::User', optional: true
14
14
 
15
- validates :title, :status, :current_reading, presence: true
15
+ validates :title, :status, presence: true
16
16
  validates :status, inclusion: STATUSES
17
17
  end
18
18
  end
@@ -4,6 +4,8 @@ module Ecom
4
4
  belongs_to :overtime_sheet
5
5
  belongs_to :crew
6
6
  has_many :crew_overtimes
7
+
8
+ validates :total_overtime, presence: true, numericality: { greater_than_or_equal_to: 0 }
7
9
  end
8
10
  end
9
11
  end
@@ -5,7 +5,7 @@ module Ecom
5
5
  belongs_to :payment
6
6
 
7
7
  validates :hours, :ot_hours, :base_salary, :overtime, :gross_salary, :tax, :pension, :net_salary, :net_pay,
8
- :advance, presence: true
8
+ :advance, presence: true, numericality: { greater_than_or_equal_to: 0 }
9
9
  end
10
10
  end
11
11
  end
@@ -4,7 +4,6 @@ module Ecom
4
4
  has_ancestry
5
5
 
6
6
  belongs_to :task_template_type
7
- belongs_to :unit_of_measure
8
7
 
9
8
  has_many :task_template_inspection_checklists
10
9
  has_many :inspection_checklists, through: :task_template_inspection_checklists
@@ -12,7 +11,7 @@ module Ecom
12
11
  has_many :work_product_templates, through: :project_work_item_templates
13
12
  has_and_belongs_to_many :resource_types, join_table: 'ecom_core_task_templates_resource_types'
14
13
 
15
- validates :name, :code, :takeoff_fields, :task_completion_detail, presence: true
14
+ validates :name, :code, presence: true
16
15
  validates :code, uniqueness: true
17
16
  validates :percentage_contribution,
18
17
  numericality: {
@@ -0,0 +1,19 @@
1
+ module Ecom
2
+ module Core
3
+ class FilterService
4
+ def get_filtered_data(type, filters)
5
+ positive = {}
6
+ negative = {}
7
+ obj = type.constantize
8
+ filters.each { |f|
9
+ if f[:cond] == 'P'
10
+ positive[f[:key]] = f[:value]
11
+ else
12
+ negative[f[:key]] = f[:value]
13
+ end
14
+ }
15
+ obj.where(positive).where.not(negative)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -8,18 +8,14 @@ class CreateEcomCoreTaskTemplates < ActiveRecord::Migration[6.0]
8
8
  null: false,
9
9
  index: { name: 'tt_on_ttt_indx' },
10
10
  foreign_key: { to_table: :ecom_core_task_template_types }
11
- t.references :unit_of_measure,
12
- null: false,
13
- index: { name: 'tt_on_uof_indx' },
14
- foreign_key: { to_table: :ecom_core_unit_of_measures }
15
11
  t.string :ancestry, index: true
16
- t.boolean :has_takeoff_fields, null:false, default: false
17
- t.jsonb :takeoff_fields, null: false, default: {}
12
+ t.boolean :has_takeoff_fields, null: false, default: false
13
+ t.jsonb :takeoff_fields, null: true
18
14
  t.integer :percentage_contribution
19
15
  t.integer :task_sequence
20
16
  t.boolean :has_inspection, null: false, default: false
21
17
  t.boolean :discipline, null: false, default: false
22
- t.jsonb :task_completion_detail, null: false, default: {}
18
+ t.jsonb :task_completion_detail, null: true
23
19
 
24
20
  t.timestamps
25
21
  end
@@ -23,5 +23,6 @@ class CreateEcomCoreCrewOvertimes < ActiveRecord::Migration[6.0]
23
23
 
24
24
  t.timestamps
25
25
  end
26
+ add_index :ecom_core_crew_overtimes, [:overtime_type_id, :overtime_sheet_entry_id],unique: true, name: 'ot_on_ose_name_indx'
26
27
  end
27
28
  end
@@ -8,7 +8,7 @@ class CreateEcomCoreMaintenanceServiceOrders < ActiveRecord::Migration[6.0]
8
8
  t.boolean :approved, default: false
9
9
  t.string :status, null: false, default: 'New'
10
10
  t.string :remark
11
- t.float :current_reading, null: false
11
+ t.float :current_reading, null: true
12
12
  t.references :equipment_item,
13
13
  null: false,
14
14
  index: { name: 'mso_on_ei_indx' },
@@ -22,7 +22,7 @@ class CreateEcomCoreMaintenanceServiceOrders < ActiveRecord::Migration[6.0]
22
22
  index: { name: 'mso_on_pb_indx' },
23
23
  foreign_key: { to_table: :ecom_core_users }
24
24
  t.references :approved_by,
25
- null: false,
25
+ null: true,
26
26
  index: { name: 'mso_on_ab_indx' },
27
27
  foreign_key: { to_table: :ecom_core_users }
28
28
 
@@ -8,7 +8,7 @@ class CreateEcomCoreCrewIdCards < ActiveRecord::Migration[6.0]
8
8
 
9
9
  t.datetime :issued_on, null: false
10
10
  t.datetime :valid_until, null: false
11
- t.string :status, null: false, default: 'Active'
11
+ t.string :status, null: false, default: 'Valid'
12
12
 
13
13
  t.timestamps
14
14
  end
@@ -1,5 +1,5 @@
1
1
  module Ecom
2
2
  module Core
3
- VERSION = '1.3.2'.freeze
3
+ VERSION = '1.3.7'.freeze
4
4
  end
5
5
  end
@@ -6,7 +6,6 @@ FactoryBot.define do
6
6
  name { FFaker::Name.name }
7
7
  description { FFaker::Name.name }
8
8
  association :task_template_type
9
- association :unit_of_measure
10
9
  has_takeoff_fields { false }
11
10
  takeoff_fields { [{ name: 'length', label: 'Length' }] }
12
11
  percentage_contribution { nil }
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.3.2
4
+ version: 1.3.7
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-12-19 00:00:00.000000000 Z
11
+ date: 2021-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aasm
@@ -375,6 +375,7 @@ files:
375
375
  - app/serializers/ecom/core/user_role_serializer.rb
376
376
  - app/serializers/ecom/core/user_serializer.rb
377
377
  - app/services/ecom/core/crew_contract_transaction_service.rb
378
+ - app/services/ecom/core/filter_service.rb
378
379
  - app/services/ecom/core/menu_service.rb
379
380
  - app/services/ecom/core/site_crew_service.rb
380
381
  - app/services/ecom/core/token_auth_service.rb
@@ -571,7 +572,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
571
572
  - !ruby/object:Gem::Version
572
573
  version: '0'
573
574
  requirements: []
574
- rubygems_version: 3.1.4
575
+ rubygems_version: 3.1.2
575
576
  signing_key:
576
577
  specification_version: 4
577
578
  summary: Core engine for construction management application.