cats_core 1.0.32 → 1.0.36
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/controllers/cats/core/spaces_controller.rb +11 -0
- data/app/models/cats/core/allocation.rb +1 -0
- data/app/models/cats/core/allocation_item.rb +1 -0
- data/app/models/cats/core/ration.rb +1 -4
- data/app/models/cats/core/ration_item.rb +11 -0
- data/app/models/cats/core/stack.rb +17 -0
- data/app/models/cats/core/store.rb +7 -0
- data/app/services/cats/core/space_service.rb +40 -0
- data/config/routes.rb +14 -0
- data/db/migrate/20210717031216_create_cats_core_rations.rb +0 -5
- data/db/migrate/20210717031343_create_cats_core_ration_items.rb +21 -0
- data/db/migrate/20210717140855_create_cats_core_stores.rb +2 -0
- data/lib/cats/core/version.rb +1 -1
- data/spec/factories/cats/core/locations.rb +5 -0
- data/spec/factories/cats/core/ration_items.rb +8 -0
- data/spec/factories/cats/core/rations.rb +0 -2
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c909272a932180976b058fc2514d349d48677862c5bee425d97e1ebb1d92f30e
|
4
|
+
data.tar.gz: 57060b872361ba7f38b5bffe9522241ccb147bb3fac27b7e593288937a771672
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af510c6f846701bea55bd995f6ccf3d34500c11c8a23cdac2df2f89f258170c4f93fb31c9242eaf927ed3a24a5e499fdd2c995ca1d2c178d9e39c60364e6d072
|
7
|
+
data.tar.gz: 19dff931a8a64a71870263e2193709f541ea530110ac852ef0c751bca2e8739d996c8da2ad53c3465d720ad2167a34ead9c9cca36cd42956db7abecf6b1b37fa
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Cats
|
2
|
+
module Core
|
3
|
+
class SpacesController < ApplicationController
|
4
|
+
def available_space
|
5
|
+
service = SpaceService.new
|
6
|
+
space = service.available_space(params[:id], params[:level])
|
7
|
+
render json: { success: true, data: space }
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -13,6 +13,7 @@ module Cats
|
|
13
13
|
delegate(:reference_no, to: :rhn_request, prefix: :rhn, allow_nil: true)
|
14
14
|
delegate(:batch_no, to: :commodity, prefix: true)
|
15
15
|
delegate(:name, to: :source, prefix: true)
|
16
|
+
delegate(:location_type, to: :source, prefix: true)
|
16
17
|
end
|
17
18
|
end
|
18
19
|
end
|
@@ -2,11 +2,8 @@ module Cats
|
|
2
2
|
module Core
|
3
3
|
class Ration < ApplicationRecord
|
4
4
|
belongs_to :program
|
5
|
-
belongs_to :commodity_category
|
6
5
|
|
7
|
-
validates :reference_no, :
|
8
|
-
validates :reference_no, uniqueness: true
|
9
|
-
validates :amount, numericality: { greater_than: 0 }
|
6
|
+
validates :reference_no, presence: true, uniqueness: true
|
10
7
|
end
|
11
8
|
end
|
12
9
|
end
|
@@ -22,6 +22,8 @@ module Cats
|
|
22
22
|
validate :validate_coordinates, :validate_dimensions, :validate_distance_from_wall, :validate_overlap,
|
23
23
|
:validate_space_between_stack
|
24
24
|
|
25
|
+
after_save :update_store_space
|
26
|
+
|
25
27
|
def validate_coordinates
|
26
28
|
return unless store.present? && length.present? && width.present? && start_x.present? && start_y.present?
|
27
29
|
|
@@ -99,6 +101,21 @@ module Cats
|
|
99
101
|
|
100
102
|
true
|
101
103
|
end
|
104
|
+
|
105
|
+
def update_store_space
|
106
|
+
return unless length_previously_changed? || width_previously_changed? || stack_status_previously_changed?
|
107
|
+
|
108
|
+
old_area = if length_previously_was.nil? && width_previously_was.nil?
|
109
|
+
0
|
110
|
+
else
|
111
|
+
length_previously_was * width_previously_was
|
112
|
+
end
|
113
|
+
|
114
|
+
store.available_space += old_area
|
115
|
+
store.available_space -= length * width unless stack_status == DESTROYED
|
116
|
+
|
117
|
+
store.save
|
118
|
+
end
|
102
119
|
end
|
103
120
|
end
|
104
121
|
end
|
@@ -15,6 +15,7 @@ module Cats
|
|
15
15
|
allow_nil: true
|
16
16
|
validate :validate_location
|
17
17
|
|
18
|
+
before_create :update_usable_space
|
18
19
|
after_save :update_store_keeper
|
19
20
|
|
20
21
|
def validate_location
|
@@ -27,6 +28,12 @@ module Cats
|
|
27
28
|
"#{store_keeper.first_name} #{store_keeper.last_name}"
|
28
29
|
end
|
29
30
|
|
31
|
+
def update_usable_space
|
32
|
+
self.usable_space = (length - 2) * (width - 2)
|
33
|
+
self.usable_space -= (gangway_length * gangway_width) if has_gangway
|
34
|
+
self.available_space = self.usable_space
|
35
|
+
end
|
36
|
+
|
30
37
|
def update_store_keeper
|
31
38
|
return unless store_keeper_id_previously_changed?
|
32
39
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Cats
|
2
|
+
module Core
|
3
|
+
class SpaceService
|
4
|
+
HUB = 'Hub'.freeze
|
5
|
+
WAREHOUSE = 'Warehouse'.freeze
|
6
|
+
STORE = 'Store'.freeze
|
7
|
+
|
8
|
+
def available_space(id, level)
|
9
|
+
case level
|
10
|
+
when HUB
|
11
|
+
warehouse_ids = Cats::Core::Location.find(id).children.map(&:id)
|
12
|
+
stores = Cats::Core::Store.joins(:warehouse)
|
13
|
+
.where(
|
14
|
+
cats_core_locations: {
|
15
|
+
location_type: Cats::Core::Location::WAREHOUSE,
|
16
|
+
id: warehouse_ids
|
17
|
+
}
|
18
|
+
).group_by(&:warehouse_id)
|
19
|
+
wh_details = []
|
20
|
+
stores.each do |key, value|
|
21
|
+
total_space = value.inject(0) { |sum, val| sum + val.available_space }
|
22
|
+
details = value.map { |val| { store_id: val.id, total_space: val.available_space } }
|
23
|
+
wh_details << { warehouse_id: key, total_space: total_space, details: details }
|
24
|
+
end
|
25
|
+
hub_space = wh_details.inject(0) { |sum, val| sum + val[:total_space] }
|
26
|
+
space = { hub_id: id, total_space: hub_space, details: wh_details }
|
27
|
+
when WAREHOUSE
|
28
|
+
stores = Cats::Core::Store.where(warehouse_id: id)
|
29
|
+
details = stores.map { |store| { store_id: store.id, total_space: store.available_space } }
|
30
|
+
total_space = stores.inject(0) { |sum, val| sum + val.available_space }
|
31
|
+
space = { warehouse_id: id, total_space: total_space, details: details }
|
32
|
+
when STORE
|
33
|
+
store = Cats::Core::Store.find(id)
|
34
|
+
space = { store_id: store.id, total_space: store.available_space }
|
35
|
+
end
|
36
|
+
space
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/config/routes.rb
CHANGED
@@ -28,6 +28,20 @@ Cats::Core::Engine.routes.draw do
|
|
28
28
|
get 'children'
|
29
29
|
end
|
30
30
|
end
|
31
|
+
|
32
|
+
get '/hubs/:id/space',
|
33
|
+
to: 'spaces#available_space',
|
34
|
+
as: :hub_space,
|
35
|
+
defaults: { level: Cats::Core::SpaceService::HUB }
|
36
|
+
get '/warehousess/:id/space',
|
37
|
+
to: 'spaces#available_space',
|
38
|
+
as: :warehouse_space,
|
39
|
+
defaults: { level: Cats::Core::SpaceService::WAREHOUSE }
|
40
|
+
get '/store/:id/space',
|
41
|
+
to: 'spaces#available_space',
|
42
|
+
as: :store_space,
|
43
|
+
defaults: { level: Cats::Core::SpaceService::STORE }
|
44
|
+
|
31
45
|
resources :commodity_categories, except: %i[destroy] do
|
32
46
|
member do
|
33
47
|
get 'children'
|
@@ -6,11 +6,6 @@ class CreateCatsCoreRations < ActiveRecord::Migration[6.1]
|
|
6
6
|
null: false,
|
7
7
|
index: { name: 'program_on_ration_indx' },
|
8
8
|
foreign_key: { to_table: :cats_core_programs }
|
9
|
-
t.references :commodity_category,
|
10
|
-
null: false,
|
11
|
-
index: { name: 'cc_on_ration_indx' },
|
12
|
-
foreign_key: { to_table: :cats_core_commodity_categories }
|
13
|
-
t.float :amount, null: false
|
14
9
|
t.boolean :current, null: false, default: true
|
15
10
|
|
16
11
|
t.timestamps
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class CreateCatsCoreRationItems < ActiveRecord::Migration[6.1]
|
2
|
+
def change
|
3
|
+
create_table :cats_core_ration_items do |t|
|
4
|
+
t.references :commodity_category,
|
5
|
+
null: false,
|
6
|
+
index: { name: 'cc_on_ration_indx' },
|
7
|
+
foreign_key: { to_table: :cats_core_commodity_categories }
|
8
|
+
t.references :ration,
|
9
|
+
null: false,
|
10
|
+
index: { name: 'ri_on_ration_indx' },
|
11
|
+
foreign_key: { to_table: :cats_core_rations }
|
12
|
+
t.references :unit_of_measure,
|
13
|
+
null: false,
|
14
|
+
index: { name: 'uom_on_ration_indx' },
|
15
|
+
foreign_key: { to_table: :cats_core_unit_of_measures }
|
16
|
+
t.float :amount, null: false
|
17
|
+
|
18
|
+
t.timestamps
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -5,6 +5,8 @@ class CreateCatsCoreStores < ActiveRecord::Migration[6.1]
|
|
5
5
|
t.float :length, null: false
|
6
6
|
t.float :width, null: false
|
7
7
|
t.float :height, null: false
|
8
|
+
t.float :usable_space, null: false
|
9
|
+
t.float :available_space, null: false
|
8
10
|
t.boolean :temporary, null: false, default: false
|
9
11
|
t.boolean :has_gangway, null: false, default: false
|
10
12
|
t.float :gangway_length
|
data/lib/cats/core/version.rb
CHANGED
@@ -5,6 +5,11 @@ FactoryBot.define do
|
|
5
5
|
ancestry { nil }
|
6
6
|
end
|
7
7
|
|
8
|
+
factory :hub, parent: :location, class: 'Cats::Core::Location' do
|
9
|
+
location_type { Cats::Core::Location::HUB }
|
10
|
+
parent
|
11
|
+
end
|
12
|
+
|
8
13
|
factory :warehouse, parent: :location, class: 'Cats::Core::Location' do
|
9
14
|
location_type { Cats::Core::Location::WAREHOUSE }
|
10
15
|
parent
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cats_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.36
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henock L.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_model_serializers
|
@@ -224,6 +224,7 @@ files:
|
|
224
224
|
- app/controllers/cats/core/menus_controller.rb
|
225
225
|
- app/controllers/cats/core/notifications_controller.rb
|
226
226
|
- app/controllers/cats/core/roles_controller.rb
|
227
|
+
- app/controllers/cats/core/spaces_controller.rb
|
227
228
|
- app/controllers/cats/core/unit_of_measures_controller.rb
|
228
229
|
- app/controllers/cats/core/users_controller.rb
|
229
230
|
- app/jobs/cats/core/application_job.rb
|
@@ -249,6 +250,7 @@ files:
|
|
249
250
|
- app/models/cats/core/program.rb
|
250
251
|
- app/models/cats/core/purchase_order.rb
|
251
252
|
- app/models/cats/core/ration.rb
|
253
|
+
- app/models/cats/core/ration_item.rb
|
252
254
|
- app/models/cats/core/receipt.rb
|
253
255
|
- app/models/cats/core/receipt_transaction.rb
|
254
256
|
- app/models/cats/core/rhn_request.rb
|
@@ -271,6 +273,7 @@ files:
|
|
271
273
|
- app/serializers/cats/core/unit_of_measure_serializer.rb
|
272
274
|
- app/services/cats/core/menu_service.rb
|
273
275
|
- app/services/cats/core/notification_service.rb
|
276
|
+
- app/services/cats/core/space_service.rb
|
274
277
|
- app/services/cats/core/token_auth_service.rb
|
275
278
|
- config/routes.rb
|
276
279
|
- db/migrate/20210715114238_create_cats_core_application_modules.rb
|
@@ -288,6 +291,7 @@ files:
|
|
288
291
|
- db/migrate/20210716210905_create_cats_core_suppliers.rb
|
289
292
|
- db/migrate/20210717031108_create_cats_core_donors.rb
|
290
293
|
- db/migrate/20210717031216_create_cats_core_rations.rb
|
294
|
+
- db/migrate/20210717031343_create_cats_core_ration_items.rb
|
291
295
|
- db/migrate/20210717031810_create_cats_core_hrps.rb
|
292
296
|
- db/migrate/20210717032024_create_cats_core_hrp_items.rb
|
293
297
|
- db/migrate/20210717032330_create_cats_core_donations.rb
|
@@ -332,6 +336,7 @@ files:
|
|
332
336
|
- spec/factories/cats/core/operators.rb
|
333
337
|
- spec/factories/cats/core/programs.rb
|
334
338
|
- spec/factories/cats/core/purchase_orders.rb
|
339
|
+
- spec/factories/cats/core/ration_items.rb
|
335
340
|
- spec/factories/cats/core/rations.rb
|
336
341
|
- spec/factories/cats/core/receipt_transactions.rb
|
337
342
|
- spec/factories/cats/core/receipts.rb
|