cats_core 1.3.13 → 1.3.18

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.
Files changed (26) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/cats/core/access_controller.rb +2 -1
  3. data/app/controllers/cats/core/dispatch_plan_items_controller.rb +1 -1
  4. data/app/controllers/cats/core/dispatch_plans_controller.rb +9 -6
  5. data/app/controllers/cats/core/dispatches_controller.rb +1 -1
  6. data/app/models/cats/core/dispatch_plan.rb +4 -0
  7. data/app/models/cats/core/dispatch_plan_item.rb +2 -2
  8. data/app/models/cats/core/monthly_plan.rb +1 -0
  9. data/app/models/cats/core/monthly_plan_item.rb +2 -0
  10. data/app/models/cats/core/monthly_plan_item_detail.rb +1 -1
  11. data/app/models/cats/core/plan.rb +3 -1
  12. data/app/models/cats/core/rhn_request.rb +7 -1
  13. data/app/notifications/cats/core/dispatch_notification.rb +1 -1
  14. data/app/serializers/cats/core/dispatch_plan_item_serializer.rb +1 -1
  15. data/app/serializers/cats/core/dispatch_plan_serializer.rb +2 -1
  16. data/app/services/cats/core/dispatch_plan_service.rb +25 -5
  17. data/app/services/cats/core/dispatch_service.rb +1 -1
  18. data/db/migrate/20210718043328_create_cats_core_dispatch_plans.rb +4 -0
  19. data/db/migrate/20210718043401_create_cats_core_dispatch_plan_items.rb +1 -4
  20. data/db/migrate/{20220107224630_create_cats_core_monthly_rations.rb → 20220107124630_create_cats_core_monthly_rations.rb} +0 -0
  21. data/db/migrate/20220107132433_create_cats_core_monthly_plan_item_details.rb +3 -3
  22. data/lib/cats/core/version.rb +1 -1
  23. data/spec/factories/cats/core/dispatch_plan_items.rb +1 -1
  24. data/spec/factories/cats/core/dispatch_plans.rb +1 -0
  25. data/spec/factories/cats/core/monthly_plan_item_details.rb +1 -1
  26. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d8384e95d3bf98191d6f0fb04ce96f6180daf53d653d954ef1470282bf3b4782
4
- data.tar.gz: 00a0000dba254d8f02dcb8f97fe37b268137d1fe19e03f5c385f2724cb03442b
3
+ metadata.gz: 551532d2140d05f61a268ef27a1e2b8b9a7abb9f084dc808f161962d7f319b19
4
+ data.tar.gz: 78e9e7fd69241d39c84542d5160041df4ab2c697c60ea6cd9cd719182d7de43c
5
5
  SHA512:
6
- metadata.gz: 2d6cdb1dcd812695e16f53ee1a613a834fa7683eb982d54b62cd1662a2082f147b0000ba2fa7453a7fedf5e5a003f94197eadeca05b7768fa104a9fb4655ab53
7
- data.tar.gz: 7426544df6c7c89477936e11cff07b9ac047c46617b199e02853822cb67260d5b94e08816b51dd7c881173d85e0700a4ddcc3d3a4ab01523f42b2a6ae4e591a6
6
+ metadata.gz: a48bca9d45e6cfc5ea41bd5657d8142aafde2cc8fb3da40d37f2ba1a306bf98c3b6f403a15996579c5f4fb0b73d26aee6f92a6ffa30696f5f61f4dec5fa6f13c
7
+ data.tar.gz: ac88009a158bd3596389611e60e558eaf6bc1f99f7686955b7ae1e1987376d153bd7a21f0c67ae6bfec474907f7a0748f8a5b2636bfbbbb7fe271c0db2d83ba8
@@ -15,7 +15,8 @@ module Cats
15
15
  end
16
16
 
17
17
  payload = {
18
- id: user.id, email: user.email, first_name: user.first_name, last_name: user.last_name, roles: roles
18
+ id: user.id, email: user.email, first_name: user.first_name, last_name: user.last_name, roles: roles,
19
+ details: user.details
19
20
  }
20
21
  jwt = Cats::Core::TokenAuthService.issue(payload)
21
22
  render json: { token: jwt, user: payload }
@@ -11,7 +11,7 @@ module Cats
11
11
  private
12
12
 
13
13
  def model_params
14
- params.require(:payload).permit(:dispatch_plan_id, :source_id, :destination_id, :quantity, :commodity_id)
14
+ params.require(:payload).permit(:dispatch_plan_id, :source_id, :destination_id, :quantity, :commodity_status)
15
15
  end
16
16
  end
17
17
  end
@@ -14,13 +14,16 @@ module Cats
14
14
  end
15
15
 
16
16
  def create
17
- obj = Cats::Core::DispatchPlan.new(model_params)
18
- obj.prepared_by = current_user
19
- if obj.save
20
- render json: { success: true, data: serialize(obj) }, status: :created
17
+ service = DispatchPlanService.new
18
+
19
+ data = service.create(model_params, current_user)
20
+ if data[0]
21
+ render json: { success: true, data: serialize(data[1]) }, status: :created
21
22
  else
22
- render json: { success: false, error: obj.errors.full_messages[0] }, status: :unprocessable_entity
23
+ render json: { success: false, error: data[1].errors.full_messages[0] }, status: :unprocessable_entity
23
24
  end
25
+ rescue StandardError => e
26
+ render json: { success: false, error: e.message }
24
27
  end
25
28
 
26
29
  def approve
@@ -34,7 +37,7 @@ module Cats
34
37
  private
35
38
 
36
39
  def model_params
37
- params.require(:payload).permit(:reference_no, :request_id)
40
+ params.require(:payload).permit(:reference_no, :request_id, :commodity_id)
38
41
  end
39
42
  end
40
43
  end
@@ -57,7 +57,7 @@ module Cats
57
57
  end
58
58
 
59
59
  def commodity
60
- data = @dispatch.dispatch_plan_item.commodity
60
+ data = @dispatch.dispatch_plan_item.dispatch_plan.commodity
61
61
  render json: { success: true, data: serialize(data) }
62
62
  end
63
63
 
@@ -8,12 +8,16 @@ module Cats
8
8
  belongs_to :request, polymorphic: true, optional: true
9
9
  belongs_to :prepared_by, class_name: 'Cats::Core::User'
10
10
  belongs_to :approved_by, class_name: 'Cats::Core::User', optional: true
11
+ belongs_to :commodity
11
12
 
12
13
  has_many :dispatch_plan_items
13
14
 
14
15
  validates :reference_no, presence: true, uniqueness: true
15
16
  validates :status, inclusion: { in: STATUSES }
16
17
 
18
+ delegate(:batch_no, :name, :quantity, to: :commodity, prefix: true)
19
+ delegate(:reference_no, to: :request, prefix: true, allow_nil: true)
20
+
17
21
  def approve
18
22
  raise(StandardError, 'Dispatch plan already approved.') if status == APPROVED
19
23
 
@@ -1,16 +1,16 @@
1
1
  module Cats
2
2
  module Core
3
3
  class DispatchPlanItem < ApplicationRecord
4
- belongs_to :commodity
5
4
  belongs_to :source, class_name: 'Cats::Core::Location'
6
5
  belongs_to :destination, class_name: 'Cats::Core::Location'
7
6
  belongs_to :dispatch_plan
8
7
  has_many :dispatches
9
8
 
9
+ validates :commodity_status, presence: true, inclusion: { in: Cats::Core::Commodity::COMMODITY_STATUSES }
10
10
  validates :quantity, presence: true, numericality: { greater_than: 0 }
11
11
 
12
12
  delegate(:reference_no, to: :dispatch_plan, prefix: :plan, allow_nil: true)
13
- delegate(:batch_no, to: :commodity, prefix: true)
13
+ delegate(:commodity_batch_no, :commodity_name, to: :dispatch_plan)
14
14
  delegate(:name, to: :source, prefix: true)
15
15
  delegate(:name, to: :destination, prefix: true)
16
16
  delegate(:location_type, to: :source, prefix: true)
@@ -5,6 +5,7 @@ module Cats
5
5
  belongs_to :region, class_name: 'Cats::Core::Location'
6
6
 
7
7
  has_many :monthly_plan_items
8
+ has_many :monthly_plan_item_details, through: :monthly_plan_items
8
9
  has_many :monthly_rations
9
10
 
10
11
  validates :reference_no, presence: true, uniqueness: true
@@ -7,6 +7,8 @@ module Cats
7
7
  has_many :monthly_plan_item_details
8
8
 
9
9
  validates :beneficiaries, presence: true, numericality: { greater_than: 0 }
10
+
11
+ delegate(:reference_no, to: :monthly_plan, prefix: 'plan')
10
12
  end
11
13
  end
12
14
  end
@@ -2,7 +2,7 @@ module Cats
2
2
  module Core
3
3
  class MonthlyPlanItemDetail < ApplicationRecord
4
4
  belongs_to :monthly_plan_item
5
- belongs_to :ration_item
5
+ belongs_to :monthly_ration
6
6
 
7
7
  validates :amount, presence: true, numericality: { greater_than: 0 }
8
8
  end
@@ -9,11 +9,13 @@ module Cats
9
9
 
10
10
  BELG = 'Belg'.freeze
11
11
  MEHER = 'Meher'.freeze
12
- SEASONS = [BELG, MEHER].freeze
12
+ ANNUAL = 'Annual'.freeze
13
+ SEASONS = [BELG, MEHER, ANNUAL].freeze
13
14
 
14
15
  belongs_to :program
15
16
  belongs_to :ration, optional: true
16
17
  has_many :plan_items
18
+ has_many :plan_item_details, through: :plan_items
17
19
 
18
20
  validates :reference_no, :year, :status, presence: true
19
21
  validates :season, presence: true, inclusion: { in: SEASONS }
@@ -3,7 +3,8 @@ module Cats
3
3
  class RhnRequest < ApplicationRecord
4
4
  DRAFT = 'Draft'.freeze
5
5
  APPROVED = 'Approved'.freeze
6
- STATUSES = [DRAFT, APPROVED].freeze
6
+ ALLOCATED = 'Allocated'.freeze
7
+ STATUSES = [DRAFT, APPROVED, ALLOCATED].freeze
7
8
 
8
9
  belongs_to :commodity
9
10
 
@@ -35,6 +36,11 @@ module Cats
35
36
  self.status = APPROVED
36
37
  save!
37
38
  end
39
+
40
+ def allocate
41
+ self.status = ALLOCATED
42
+ save!
43
+ end
38
44
  end
39
45
  end
40
46
  end
@@ -7,7 +7,7 @@ module Cats
7
7
 
8
8
  def message
9
9
  dispatch = params[:dispatch]
10
- commodity = dispatch.dispatch_plan_item.commodity
10
+ commodity = dispatch.dispatch_plan_item.dispatch_plan.commodity
11
11
  title = "Dispatch Notification - #{commodity.name}"
12
12
  date = Date.today
13
13
  body = <<~BODY
@@ -2,7 +2,7 @@ module Cats
2
2
  module Core
3
3
  class DispatchPlanItemSerializer < ActiveModel::Serializer
4
4
  attributes :id, :dispatch_plan_id, :plan_reference_no, :source_id, :source_name, :destination_id,
5
- :destination_name, :quantity, :source_location_type, :destination_location_type
5
+ :destination_name, :quantity, :source_location_type, :destination_location_type, :commodity_status
6
6
  end
7
7
  end
8
8
  end
@@ -1,7 +1,8 @@
1
1
  module Cats
2
2
  module Core
3
3
  class DispatchPlanSerializer < ActiveModel::Serializer
4
- attributes :id, :reference_no, :status, :request_id, :upstream
4
+ attributes :id, :reference_no, :status, :request_id, :commodity_id, :commodity_name, :commodity_batch_no,
5
+ :commodity_quantity, :request_reference_no, :upstream
5
6
  end
6
7
  end
7
8
  end
@@ -1,7 +1,27 @@
1
- class DispatchPlanService
2
- def approve(plan)
3
- plan.approve
4
- send_notification(plan)
5
- plan
1
+ module Cats
2
+ module Core
3
+ class DispatchPlanService
4
+ def approve(plan)
5
+ plan.approve
6
+ plan.request.allocate if plan.request_id
7
+ # send_notification(plan)
8
+ plan
9
+ end
10
+
11
+ def create(params, user)
12
+ plan = Cats::Core::DispatchPlan.new(params)
13
+ raise 'Commodity is not assigned for plan.' unless plan.commodity_id || plan.request_id
14
+
15
+ unless plan.commodity_id
16
+ request = Cats::Core::RhnRequest.find(plan.request_id)
17
+ plan.commodity_id = request.commodity_id
18
+ plan.request_type = 'Cats::Core::RhnRequest'
19
+ end
20
+ plan.prepared_by = user
21
+ result = plan.save
22
+
23
+ [result, plan]
24
+ end
25
+ end
6
26
  end
7
27
  end
@@ -10,7 +10,7 @@ module Cats
10
10
  store = Cats::Core::Store.find_by(code: 'SUP-STORE')
11
11
  raise(StandardError, 'Supplier store does not exist.') unless store
12
12
 
13
- commodity = plan_item.commodity
13
+ commodity = plan_item.dispatch_plan.commodity
14
14
  stack = store.stacks.find_by(commodity: commodity)
15
15
 
16
16
  raise(StandardError, 'Commodity not found in supplier store.') unless stack
@@ -6,6 +6,10 @@ class CreateCatsCoreDispatchPlans < ActiveRecord::Migration[6.1]
6
6
  t.string :status, null: false, default: 'Draft'
7
7
  t.references :request, polymorphic: true
8
8
  t.boolean :upstream, null: false, default: false
9
+ t.references :commodity,
10
+ null: false,
11
+ index: { name: 'commodity_on_dp_indx' },
12
+ foreign_key: { to_table: :cats_core_commodities }
9
13
 
10
14
  t.references :prepared_by,
11
15
  null: false,
@@ -5,10 +5,6 @@ class CreateCatsCoreDispatchPlanItems < ActiveRecord::Migration[6.1]
5
5
  null: false,
6
6
  index: { name: 'dpi_on_dp_indx' },
7
7
  foreign_key: { to_table: :cats_core_dispatch_plans }
8
- t.references :commodity,
9
- null: false,
10
- index: { name: 'dpi_on_commodity_indx' },
11
- foreign_key: { to_table: :cats_core_commodities }
12
8
  t.references :source,
13
9
  null: false,
14
10
  index: { name: 'dpi_on_source_indx' },
@@ -18,6 +14,7 @@ class CreateCatsCoreDispatchPlanItems < ActiveRecord::Migration[6.1]
18
14
  index: { name: 'dpi_on_destination_indx'},
19
15
  foreign_key: { to_table: :cats_core_locations }
20
16
  t.float :quantity, null: false
17
+ t.string :commodity_status, null: false, default: 'Good'
21
18
 
22
19
  t.timestamps
23
20
  end
@@ -5,10 +5,10 @@ class CreateCatsCoreMonthlyPlanItemDetails < ActiveRecord::Migration[6.1]
5
5
  null: false,
6
6
  index: { name: 'mpi_on_mpid_indx' },
7
7
  foreign_key: { to_table: :cats_core_monthly_plan_items }
8
- t.references :ration_item,
8
+ t.references :monthly_ration,
9
9
  null: false,
10
- index: { name: 'ri_on_mpid_indx' },
11
- foreign_key: { to_table: :cats_core_ration_items }
10
+ index: { name: 'ri_on_mr_indx' },
11
+ foreign_key: { to_table: :cats_core_monthly_rations }
12
12
  t.float :amount, null: false
13
13
 
14
14
  t.timestamps
@@ -1,5 +1,5 @@
1
1
  module Cats
2
2
  module Core
3
- VERSION = '1.3.13'.freeze
3
+ VERSION = '1.3.18'.freeze
4
4
  end
5
5
  end
@@ -1,9 +1,9 @@
1
1
  FactoryBot.define do
2
2
  factory :dispatch_plan_item, class: 'Cats::Core::DispatchPlanItem' do
3
- commodity
4
3
  source factory: :location
5
4
  destination factory: :location
6
5
  dispatch_plan
7
6
  quantity { 100 }
7
+ commodity_status { Cats::Core::Commodity::GOOD }
8
8
  end
9
9
  end
@@ -4,6 +4,7 @@ FactoryBot.define do
4
4
  status { Cats::Core::DispatchPlan::DRAFT }
5
5
  request { nil }
6
6
  upstream { false }
7
+ commodity
7
8
  prepared_by factory: :user
8
9
  approved_by { nil }
9
10
  end
@@ -1,7 +1,7 @@
1
1
  FactoryBot.define do
2
2
  factory :monthly_plan_item_detail, class: 'Cats::Core::MonthlyPlanItemDetail' do
3
3
  monthly_plan_item
4
- ration_item
4
+ monthly_ration
5
5
  amount { 150 }
6
6
  end
7
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.3.13
4
+ version: 1.3.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henock L.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-10 00:00:00.000000000 Z
11
+ date: 2022-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_model_serializers
@@ -385,9 +385,9 @@ files:
385
385
  - db/migrate/20211229160129_create_cats_core_commodity_substitutions.rb
386
386
  - db/migrate/20220103152802_create_cats_core_tenderers.rb
387
387
  - db/migrate/20220107121752_create_cats_core_monthly_plans.rb
388
+ - db/migrate/20220107124630_create_cats_core_monthly_rations.rb
388
389
  - db/migrate/20220107125025_create_cats_core_monthly_plan_items.rb
389
390
  - db/migrate/20220107132433_create_cats_core_monthly_plan_item_details.rb
390
- - db/migrate/20220107224630_create_cats_core_monthly_rations.rb
391
391
  - lib/cats/core.rb
392
392
  - lib/cats/core/engine.rb
393
393
  - lib/cats/core/version.rb