cats_core 1.0.34 → 1.0.38

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: 5f642691ce490f46cc23534f368644b7bd6cc2069736cae534994aafb8018d40
4
- data.tar.gz: a3967aca1998cf19cbfa55af249e8023c664bb4066bb0c40224a209225584485
3
+ metadata.gz: f003ab02e18c4d6748354703954b989a2854beb06d6cedde9a1417dd033b6b0d
4
+ data.tar.gz: ec1a54e9e760cf5a8c84109d526b7a6da50696b31bd3647a82b910e108dca482
5
5
  SHA512:
6
- metadata.gz: 8147dfe37fbe8ad5c1ae9e3945b71936e5c0c135a00633fba2c9e3f1a6aeac4ce482d3f4d81e965c0a3cb00d8ac9bec58033b2d8c418a750f9b68b63c61c4788
7
- data.tar.gz: d501edb9668b0372c6c6a91092619d467379083cc7c7ef3201856a43f1a53abcb5dcd0a97411d7e083ba8771f9ea66235213b283f5cdac64d870142bc1635840
6
+ metadata.gz: d21df2b1e4f3052deda19c879fbc0d3c4f4d5bf9754a7c91e6b7260a7ff1cf64292a68da01d847a9caec74d933cded52952d3de3c627afcd9b6a0bd426019cd0
7
+ data.tar.gz: 2afec4b8dedd8eb129bd3ad61cc3bcf766c69eb1fbc0d45ef12f18085b62db3856bbc298720be52cc63f040451904cd966cfc6b64fcf6d57037b76254b63f54b
@@ -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
@@ -6,7 +6,6 @@ module Cats
6
6
  belongs_to :operator
7
7
 
8
8
  validates :beneficiaries, presence: true, numericality: { greater_than: 0 }
9
- validates :commodity_amount, presence: true, numericality: { greater_than: 0 }
10
9
  validates :hrp_id, uniqueness: { scope: :woreda_id }
11
10
 
12
11
  delegate(:name, to: :woreda, prefix: true)
@@ -0,0 +1,12 @@
1
+ module Cats
2
+ module Core
3
+ class HrpItemDetail < ApplicationRecord
4
+ belongs_to :hrp_item
5
+ belongs_to :hrp_ration
6
+ belongs_to :ration_item
7
+
8
+ validates :amount, presence: true, numericality: { greater_than: 0 }
9
+ validates :hrp_item_id, uniqueness: { scope: :ration_item_id }
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ module Cats
2
+ module Core
3
+ class HrpRation < ApplicationRecord
4
+ belongs_to :hrp
5
+ belongs_to :ration
6
+
7
+ validates :hrp_id, uniqueness: true
8
+ end
9
+ end
10
+ 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, :amount, presence: true
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
@@ -0,0 +1,14 @@
1
+ module Cats
2
+ module Core
3
+ class RationItem < ApplicationRecord
4
+ belongs_to :commodity_category
5
+ belongs_to :ration
6
+ belongs_to :unit_of_measure
7
+
8
+ validates :amount, presence: true, numericality: { greater_than: 0 }
9
+
10
+ delegate(:name, to: :commodity_category, prefix: true)
11
+ delegate(:abbreviation, to: :unit_of_measure, prefix: true)
12
+ end
13
+ end
14
+ end
@@ -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
@@ -10,7 +10,6 @@ class CreateCatsCoreHrpItems < ActiveRecord::Migration[6.1]
10
10
  index: { name: 'woreda_on_hrp_items_idnx' },
11
11
  foreign_key: { to_table: :cats_core_locations }
12
12
  t.integer :beneficiaries, null: false
13
- t.float :commodity_amount, null: false
14
13
  t.references :operator,
15
14
  null: false,
16
15
  index: { name: 'operator_on_hrp_items_indx' },
@@ -0,0 +1,17 @@
1
+ class CreateCatsCoreHrpRations < ActiveRecord::Migration[6.1]
2
+ def change
3
+ create_table :cats_core_hrp_rations do |t|
4
+ t.references :hrp,
5
+ null: false,
6
+ index: { name: 'hrp_on_hr_indx' },
7
+ foreign_key: { to_table: :cats_core_hrps }
8
+ t.references :ration,
9
+ null: false,
10
+ index: { name: 'ration_on_hr_indx' },
11
+ foreign_key: { to_table: :cats_core_rations }
12
+
13
+ t.timestamps
14
+ end
15
+ add_index(:cats_core_hrp_rations, :hrp_id, unique: true)
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ class CreateCatsCoreHrpItemDetails < ActiveRecord::Migration[6.1]
2
+ def change
3
+ create_table :cats_core_hrp_item_details do |t|
4
+ t.references :hrp_item,
5
+ null: false,
6
+ index: { name: 'hi_on_hid_indx' },
7
+ foreign_key: { to_table: :cats_core_hrp_items }
8
+ t.references :hrp_ration,
9
+ null: false,
10
+ index: { name: 'hr_on_hid_indx' },
11
+ foreign_key: { to_table: :cats_core_hrp_rations }
12
+ t.references :ration_item,
13
+ null: false,
14
+ index: { name: 'ri_on_hid_indx' },
15
+ foreign_key: { to_table: :cats_core_ration_items }
16
+ t.float :amount, null: false
17
+
18
+ t.timestamps
19
+ end
20
+ add_index(:cats_core_hrp_item_details, [:hrp_item_id, :ration_item_id], unique: true, name: 'hii_rii_on_hid_indx')
21
+ end
22
+ end
@@ -1,5 +1,5 @@
1
1
  module Cats
2
2
  module Core
3
- VERSION = '1.0.34'.freeze
3
+ VERSION = '1.0.38'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,8 @@
1
+ FactoryBot.define do
2
+ factory :hrp_item_detail, class: 'Cats::Core::HrpItemDetail' do
3
+ hrp_item
4
+ hrp_ration
5
+ ration_item
6
+ amount { 150 }
7
+ end
8
+ end
@@ -3,7 +3,6 @@ FactoryBot.define do
3
3
  hrp
4
4
  woreda
5
5
  beneficiaries { 100 }
6
- commodity_amount { 100 }
7
6
  operator
8
7
  end
9
8
  end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ factory :hrp_ration, class: 'Cats::Core::HrpRation' do
3
+ hrp
4
+ ration
5
+ end
6
+ end
@@ -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
@@ -0,0 +1,8 @@
1
+ FactoryBot.define do
2
+ factory :ration_item, class: 'Cats::Core::RationItem' do
3
+ commodity_category
4
+ ration
5
+ amount { 150 }
6
+ unit_of_measure
7
+ end
8
+ end
@@ -2,8 +2,6 @@ FactoryBot.define do
2
2
  factory :ration, class: 'Cats::Core::Ration' do
3
3
  reference_no { FFaker::Name.name }
4
4
  program
5
- commodity_category
6
- amount { 1.5 }
7
5
  current { false }
8
6
  end
9
7
  end
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.34
4
+ version: 1.0.38
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-16 00:00:00.000000000 Z
11
+ date: 2021-09-19 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
@@ -241,6 +242,8 @@ files:
241
242
  - app/models/cats/core/gift_certificate.rb
242
243
  - app/models/cats/core/hrp.rb
243
244
  - app/models/cats/core/hrp_item.rb
245
+ - app/models/cats/core/hrp_item_detail.rb
246
+ - app/models/cats/core/hrp_ration.rb
244
247
  - app/models/cats/core/location.rb
245
248
  - app/models/cats/core/menu.rb
246
249
  - app/models/cats/core/menu_item.rb
@@ -249,6 +252,7 @@ files:
249
252
  - app/models/cats/core/program.rb
250
253
  - app/models/cats/core/purchase_order.rb
251
254
  - app/models/cats/core/ration.rb
255
+ - app/models/cats/core/ration_item.rb
252
256
  - app/models/cats/core/receipt.rb
253
257
  - app/models/cats/core/receipt_transaction.rb
254
258
  - app/models/cats/core/rhn_request.rb
@@ -271,6 +275,7 @@ files:
271
275
  - app/serializers/cats/core/unit_of_measure_serializer.rb
272
276
  - app/services/cats/core/menu_service.rb
273
277
  - app/services/cats/core/notification_service.rb
278
+ - app/services/cats/core/space_service.rb
274
279
  - app/services/cats/core/token_auth_service.rb
275
280
  - config/routes.rb
276
281
  - db/migrate/20210715114238_create_cats_core_application_modules.rb
@@ -288,8 +293,11 @@ files:
288
293
  - db/migrate/20210716210905_create_cats_core_suppliers.rb
289
294
  - db/migrate/20210717031108_create_cats_core_donors.rb
290
295
  - db/migrate/20210717031216_create_cats_core_rations.rb
296
+ - db/migrate/20210717031343_create_cats_core_ration_items.rb
291
297
  - db/migrate/20210717031810_create_cats_core_hrps.rb
292
298
  - db/migrate/20210717032024_create_cats_core_hrp_items.rb
299
+ - db/migrate/20210717032106_create_cats_core_hrp_rations.rb
300
+ - db/migrate/20210717032240_create_cats_core_hrp_item_details.rb
293
301
  - db/migrate/20210717032330_create_cats_core_donations.rb
294
302
  - db/migrate/20210717032602_create_cats_core_gift_certificates.rb
295
303
  - db/migrate/20210717032855_create_cats_core_purchase_orders.rb
@@ -323,7 +331,9 @@ files:
323
331
  - spec/factories/cats/core/donations.rb
324
332
  - spec/factories/cats/core/donors.rb
325
333
  - spec/factories/cats/core/gift_certificates.rb
334
+ - spec/factories/cats/core/hrp_item_details.rb
326
335
  - spec/factories/cats/core/hrp_items.rb
336
+ - spec/factories/cats/core/hrp_rations.rb
327
337
  - spec/factories/cats/core/hrps.rb
328
338
  - spec/factories/cats/core/locations.rb
329
339
  - spec/factories/cats/core/menu_items.rb
@@ -332,6 +342,7 @@ files:
332
342
  - spec/factories/cats/core/operators.rb
333
343
  - spec/factories/cats/core/programs.rb
334
344
  - spec/factories/cats/core/purchase_orders.rb
345
+ - spec/factories/cats/core/ration_items.rb
335
346
  - spec/factories/cats/core/rations.rb
336
347
  - spec/factories/cats/core/receipt_transactions.rb
337
348
  - spec/factories/cats/core/receipts.rb