cats_core 1.4.34 → 1.4.37

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: 451e4ed5c952d795035700cc1ac97bed84f711c284e15d510214df6a012df397
4
- data.tar.gz: 7725d50aaa4dadfdb5aacf79e6bb733e156dbf78968ea61a4652481a1850fc5f
3
+ metadata.gz: f2ea0d3a39edea3ab29b38b312d3d2e31e16ba07d54c0f985f5ceb248869fef4
4
+ data.tar.gz: 02e0ba07bbc6bf360a637a215faa26de072c2fe3d955547b9ba68193eca1220e
5
5
  SHA512:
6
- metadata.gz: 5d87b3ce53a8e899335e469edd698311bf9324c5ac5fda72b681d236a512882a16800b5092108627fc3ceb8ea9933b06f1b0ba2da8346fbf07dc29da8f5ea9a5
7
- data.tar.gz: cec2931e3d2edb587e58b263bec7ba52f2ce31756f50cb0fe13d0c54be242024452c67d9c5a39185faa923df5db8fab0a6b9e13b7e6e4fd65cc186679e1be8d9
6
+ metadata.gz: 9c2f4ba51cc505f5320d2dee177e5cfa1e42d72bc8bd0b69b3128141b568354220a3e4b9d681d9412aa740b2ceda1bdc1a118a774f6ff34b1e8656eaff9e08b8
7
+ data.tar.gz: c976d634759281fb71a769495282b74459ed8167eb8c61be21f8566213e7394ee6fd873ba0cc2e3905eb473a56fc8cbdbe427913d40b3e784ca33a9bbcb9296c
@@ -18,7 +18,7 @@ module Cats
18
18
 
19
19
  def model_params
20
20
  params.require(:payload).permit(:reference_no, :dispatch_plan_id, :source_id, :destination_id, :quantity,
21
- :commodity_status, :status, :commodity_id)
21
+ :unit_id, :commodity_status, :status, :commodity_id)
22
22
  end
23
23
  end
24
24
  end
@@ -19,6 +19,12 @@ module Cats
19
19
  render json: { success: true, data: serialize(query.result) }
20
20
  end
21
21
 
22
+ def woredas
23
+ region = Location.find(params[:id])
24
+ woredas = Location.where(id: region.descendant_ids, location_type: Location::WOREDA)
25
+ render json: { success: true, data: serialize(woredas) }
26
+ end
27
+
22
28
  private
23
29
 
24
30
  def model_params
@@ -37,7 +37,7 @@ module Cats
37
37
  end
38
38
 
39
39
  def remove_items
40
- plan = @service.remove_items(params[:id], remove_params)
40
+ plan = @service.remove_items(params[:id], remove_params[:ids])
41
41
  render json: { success: true, data: serialize(plan) }
42
42
  rescue StandardError => e
43
43
  render json: { success: false, error: e.message }
@@ -16,7 +16,15 @@ module Cats
16
16
  # Commodity statuses
17
17
  GOOD = 'Good'.freeze
18
18
  DAMAGED = 'Damaged'.freeze
19
- COMMODITY_STATUSES = [GOOD, DAMAGED].freeze
19
+ LEAKAGE = 'Leakage'.freeze
20
+ WET = 'Wet'.freeze
21
+ MOLDY = 'Moldy'.freeze
22
+ INFESTED = 'Infested'.freeze
23
+ INSECT_INFECTED = 'Insect Infected'.freeze
24
+ FAECES_FROM_RODENTS = 'Faeces From Rodents'.freeze
25
+ UNDERWEIGHT_PACKAGE = 'Underweight Package'.freeze
26
+ COMMODITY_STATUSES = [GOOD, DAMAGED, LEAKAGE, WET, MOLDY, INFESTED, INSECT_INFECTED, FAECES_FROM_RODENTS,
27
+ UNDERWEIGHT_PACKAGE].freeze
20
28
 
21
29
  # Arrival Statuses
22
30
  AT_SOURCE = 'At Source'.freeze
@@ -11,6 +11,7 @@ module Cats
11
11
  belongs_to :destination, class_name: 'Cats::Core::Location'
12
12
  belongs_to :dispatch_plan
13
13
  belongs_to :commodity
14
+ belongs_to :unit, class_name: 'Cats::Core::UnitOfMeasure'
14
15
 
15
16
  has_many :dispatches
16
17
  has_many :hub_authorizations
@@ -26,6 +27,8 @@ module Cats
26
27
  delegate(:name, to: :destination, prefix: true)
27
28
  delegate(:location_type, to: :source, prefix: true)
28
29
  delegate(:location_type, to: :destination, prefix: true)
30
+ delegate(:abbreviation, to: :unit, prefix: true)
31
+ delegate(:shipping_reference, to: :commodity, prefix: true)
29
32
 
30
33
  # Authorize a dispatch plan item if it contains authorization entries
31
34
  # under it. A dispatch plan item can be authorized by source hub, or
@@ -3,7 +3,8 @@ module Cats
3
3
  class DispatchPlanItemSerializer < ActiveModel::Serializer
4
4
  attributes :id, :reference_no, :dispatch_plan_id, :plan_reference_no, :source_id, :source_name, :destination_id,
5
5
  :destination_name, :quantity, :source_location_type, :destination_location_type, :commodity_status,
6
- :status, :commodity_id, :commodity_name, :commodity_batch_no
6
+ :status, :commodity_id, :commodity_name, :commodity_batch_no, :unit_abbreviation,
7
+ :commodity_shipping_reference
7
8
  end
8
9
  end
9
10
  end
@@ -3,7 +3,7 @@ module Cats
3
3
  class DispatchSerializer < ActiveModel::Serializer
4
4
  attributes :id, :reference_no, :dispatch_plan_item_id, :transporter_id, :transporter_name, :plate_no,
5
5
  :driver_name, :driver_phone, :quantity, :remark, :prepared_by_id, :prepared_by_email,
6
- :dispatch_status, :destination, :auth_details
6
+ :dispatch_status, :destination, :auth_details, :unit_id, :commodity_status
7
7
 
8
8
  def destination
9
9
  object.dispatch_plan_item.destination.name
@@ -7,7 +7,7 @@ module Cats
7
7
 
8
8
  raise(StandardError, 'Plan has no plan items.') if round_plan.round_plan_items.count.zero?
9
9
 
10
- round_plan.round_plan_item_details.delete_all if round_plan.round_plan_item_details.count.positive?
10
+ clear_needs(round_plan.id)
11
11
 
12
12
  details = []
13
13
  rations = round_plan.round_rations
@@ -32,6 +32,13 @@ module Cats
32
32
  round_plan
33
33
  end
34
34
 
35
+ def clear_needs(plan_id)
36
+ Cats::Core::RoundPlanItemDetail
37
+ .joins(beneficiary_round_plan_item: :round_plan_item)
38
+ .where(cats_core_beneficiary_round_plan_items: { cats_core_round_plan_items: { round_plan_id: plan_id } })
39
+ .delete_all
40
+ end
41
+
35
42
  def generate_round_plan(reference_no, rounds, plan_id, region_id)
36
43
  round_plan = Cats::Core::RoundPlan.create!(
37
44
  plan_id: plan_id,
@@ -108,7 +115,7 @@ module Cats
108
115
  .where(beneficiary_round_plan_items: { id: ids })
109
116
  raise(StandardError, 'Round plan items should be from the same plan.') if plans.count > 1
110
117
 
111
- unless plans.count.positive? && plan_id == plans[0].id
118
+ unless plans.count.positive? && plan.id == plans[0].id
112
119
  raise(StandardError, 'Round plan items are not from the given round plan.')
113
120
  end
114
121
 
@@ -139,10 +146,16 @@ module Cats
139
146
  if plan.plan.program.code == 'PSNP'
140
147
  rounds = plan.rounds.count
141
148
  item_ids = plan.beneficiary_round_plan_items.pluck('beneficiary_plan_item_id').flatten
142
- plan_items = BeneficiaryPlanItem.where(id: item_ids)
143
- invalid = plan_items.select { |pi| pi.rounds - (pi.rounds_served || 0) < rounds }
144
- error = 'There are plan items whose served rounds may exceed the allowed number of rounds.'
145
- raise(StandardError, error) if invalid.count.positive?
149
+ plan_items = BeneficiaryPlanItem.includes(plan_item: :fdp).where(id: item_ids)
150
+ invalid = plan_items.select { |pi| pi.rounds - (pi.rounds_served || 0) < rounds }.map do |pi|
151
+ pi.plan_item.fdp.name
152
+ end
153
+
154
+ if invalid.count.positive?
155
+ msg = invalid.join(', ')
156
+ error = "The FDPs [#{msg}] exceeded their allowed number of rounds."
157
+ raise(StandardError, error)
158
+ end
146
159
 
147
160
  items = plan_items.each_with_object([]) do |plan_item, res|
148
161
  rounds_served = plan_item.rounds_served || 0
data/config/routes.rb CHANGED
@@ -39,6 +39,7 @@ Cats::Core::Engine.routes.draw do
39
39
  end
40
40
  end
41
41
 
42
+ get '/regions/:id/woredas', controller: :locations, action: :woredas, as: :region_woredas
42
43
  post '/locations/filter', controller: :locations, action: :filter
43
44
  resources :locations, except: %i[destroy] do
44
45
  member do
@@ -19,6 +19,10 @@ class CreateCatsCoreDispatchPlanItems < ActiveRecord::Migration[6.1]
19
19
  index: { name: 'commodity_on_dpi_indx' },
20
20
  foreign_key: { to_table: :cats_core_commodities }
21
21
  t.float :quantity, null: false
22
+ t.references :unit,
23
+ null: false,
24
+ index: { name: 'unit_on_dpi_indx' },
25
+ foreign_key: { to_table: :cats_core_unit_of_measures }
22
26
  t.string :commodity_status, null: false, default: 'Good'
23
27
  t.string :status, null: false, default: 'Unauthorized'
24
28
 
@@ -1,5 +1,5 @@
1
1
  module Cats
2
2
  module Core
3
- VERSION = '1.4.34'.freeze
3
+ VERSION = '1.4.37'.freeze
4
4
  end
5
5
  end
@@ -5,6 +5,7 @@ FactoryBot.define do
5
5
  destination factory: :location
6
6
  dispatch_plan
7
7
  quantity { 100 }
8
+ unit factory: :unit_of_measure
8
9
  commodity
9
10
  commodity_status { Cats::Core::Commodity::GOOD }
10
11
  status { Cats::Core::DispatchPlanItem::UNAUTHORIZED }
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.4.34
4
+ version: 1.4.37
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-06-05 00:00:00.000000000 Z
11
+ date: 2022-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_model_serializers