cats_core 1.3.19 → 1.3.23
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/cats/core/dispatch_plans_controller.rb +4 -9
- data/app/controllers/cats/core/transporters_controller.rb +13 -0
- data/app/models/cats/core/dispatch_plan.rb +3 -2
- data/app/models/cats/core/monthly_plan.rb +10 -0
- data/app/models/cats/core/monthly_plan_item.rb +1 -0
- data/app/models/cats/core/rhn_request.rb +10 -0
- data/app/models/concerns/cats/core/dispatchable.rb +15 -0
- data/app/serializers/cats/core/dispatch_plan_serializer.rb +3 -2
- data/app/serializers/cats/core/transporter_serializer.rb +3 -0
- data/app/services/cats/core/dispatch_plan_service.rb +6 -11
- data/config/routes.rb +1 -0
- data/db/migrate/20210718043328_create_cats_core_dispatch_plans.rb +1 -1
- data/lib/cats/core/version.rb +1 -1
- data/spec/factories/cats/core/dispatch_plans.rb +1 -1
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c3f37fca9f63d54dbce888d0beaeb5e3bbd96ac1e1052011433711c2d1b126a
|
4
|
+
data.tar.gz: b018b4b1903cb423c01a37eefc6ec109db0757294b5179f3eb1faba0b30dd6e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 047d73951d974a609d6caa7c1d76b1ce156d4c2d47e446fc16821732dfdcf0a017eff53dac8c7f64eae1cec0534e9e4cc651cf46f084fdb81892c64245c170d6
|
7
|
+
data.tar.gz: 6e515febfd96c18ab7876fa0ab92c511f34e96c31e3241419b2bd3a2bf5789f65894e958621a16b5a7ae1c35cd00a91640202aaf66213971ba9f0517c29f5b46
|
@@ -15,15 +15,10 @@ module Cats
|
|
15
15
|
|
16
16
|
def create
|
17
17
|
service = DispatchPlanService.new
|
18
|
-
|
19
|
-
data
|
20
|
-
if data[0]
|
21
|
-
render json: { success: true, data: serialize(data[1]) }, status: :created
|
22
|
-
else
|
23
|
-
render json: { success: false, error: data[1].errors.full_messages[0] }, status: :unprocessable_entity
|
24
|
-
end
|
18
|
+
plan = service.create(model_params, current_user)
|
19
|
+
render json: { success: true, data: serialize(plan) }, status: :created
|
25
20
|
rescue StandardError => e
|
26
|
-
render json: { success: false, error: e.message }
|
21
|
+
render json: { success: false, error: e.message }, status: :unprocessable_entity
|
27
22
|
end
|
28
23
|
|
29
24
|
def approve
|
@@ -37,7 +32,7 @@ module Cats
|
|
37
32
|
private
|
38
33
|
|
39
34
|
def model_params
|
40
|
-
params.require(:payload).permit(:reference_no, :
|
35
|
+
params.require(:payload).permit(:reference_no, :dispatchable_id, :dispatchable_type, :commodity_id)
|
41
36
|
end
|
42
37
|
end
|
43
38
|
end
|
@@ -5,7 +5,7 @@ module Cats
|
|
5
5
|
APPROVED = 'Approved'.freeze
|
6
6
|
STATUSES = [DRAFT, APPROVED].freeze
|
7
7
|
|
8
|
-
belongs_to :
|
8
|
+
belongs_to :dispatchable, 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
11
|
belongs_to :commodity
|
@@ -16,7 +16,8 @@ module Cats
|
|
16
16
|
validates :status, inclusion: { in: STATUSES }
|
17
17
|
|
18
18
|
delegate(:batch_no, :name, :quantity, to: :commodity, prefix: true)
|
19
|
-
delegate(:
|
19
|
+
delegate(:request_reference, to: :dispatchable, allow_nil: true)
|
20
|
+
delegate(:request_quantity, to: :dispatchable, allow_nil: true)
|
20
21
|
|
21
22
|
def approve
|
22
23
|
raise(StandardError, 'Dispatch plan already approved.') if status == APPROVED
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module Cats
|
2
2
|
module Core
|
3
3
|
class MonthlyPlan < ApplicationRecord
|
4
|
+
include Dispatchable
|
5
|
+
|
4
6
|
belongs_to :plan
|
5
7
|
belongs_to :region, class_name: 'Cats::Core::Location'
|
6
8
|
|
@@ -16,6 +18,14 @@ module Cats
|
|
16
18
|
delegate(:reference_no, to: :plan, prefix: true)
|
17
19
|
delegate(:name, to: :region, prefix: true)
|
18
20
|
|
21
|
+
def request_reference
|
22
|
+
reference_no
|
23
|
+
end
|
24
|
+
|
25
|
+
def request_quantity
|
26
|
+
nil
|
27
|
+
end
|
28
|
+
|
19
29
|
def validate_month
|
20
30
|
return unless month
|
21
31
|
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module Cats
|
2
2
|
module Core
|
3
3
|
class RhnRequest < ApplicationRecord
|
4
|
+
include Dispatchable
|
5
|
+
|
4
6
|
DRAFT = 'Draft'.freeze
|
5
7
|
APPROVED = 'Approved'.freeze
|
6
8
|
ALLOCATED = 'Allocated'.freeze
|
@@ -16,6 +18,14 @@ module Cats
|
|
16
18
|
|
17
19
|
delegate(:batch_no, to: :commodity, prefix: true)
|
18
20
|
|
21
|
+
def request_reference
|
22
|
+
reference_no
|
23
|
+
end
|
24
|
+
|
25
|
+
def request_quantity
|
26
|
+
quantity
|
27
|
+
end
|
28
|
+
|
19
29
|
def validate_commodity_status
|
20
30
|
return unless commodity
|
21
31
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# A concern to represent entities that lead to dispatch plan.
|
2
|
+
# All classes including this concern must implement `request_reference()`
|
3
|
+
# and `request_quantity()` methods, which will be used to generate
|
4
|
+
# reference information in dispatch plan serializer.
|
5
|
+
module Cats
|
6
|
+
module Core
|
7
|
+
module Dispatchable
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
|
10
|
+
included do
|
11
|
+
has_many :dispatch_plans, as: :dispatchable
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -1,8 +1,9 @@
|
|
1
1
|
module Cats
|
2
2
|
module Core
|
3
3
|
class DispatchPlanSerializer < ActiveModel::Serializer
|
4
|
-
attributes :id, :reference_no, :status, :
|
5
|
-
:
|
4
|
+
attributes :id, :reference_no, :status, :dispatchable_id, :dispatchable_type, :request_reference,
|
5
|
+
:request_quantity, :commodity_id, :commodity_name, :commodity_batch_no, :commodity_quantity,
|
6
|
+
:upstream
|
6
7
|
end
|
7
8
|
end
|
8
9
|
end
|
@@ -3,24 +3,19 @@ module Cats
|
|
3
3
|
class DispatchPlanService
|
4
4
|
def approve(plan)
|
5
5
|
plan.approve
|
6
|
-
|
6
|
+
|
7
|
+
plan.dispatchable.allocate if plan.dispatchable_type == Cats::Core::RhnRequest.name
|
7
8
|
# send_notification(plan)
|
8
9
|
plan
|
9
10
|
end
|
10
11
|
|
11
12
|
def create(params, user)
|
12
13
|
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
14
|
plan.prepared_by = user
|
21
|
-
|
22
|
-
|
23
|
-
|
15
|
+
plan.save!
|
16
|
+
plan
|
17
|
+
rescue ActiveRecord::RecordInvalid
|
18
|
+
raise(StandardError, plan.errors.full_messages[0])
|
24
19
|
end
|
25
20
|
end
|
26
21
|
end
|
data/config/routes.rb
CHANGED
@@ -66,6 +66,7 @@ Cats::Core::Engine.routes.draw do
|
|
66
66
|
end
|
67
67
|
resources :currencies, except: %i[destroy]
|
68
68
|
resources :unit_of_measures, except: %i[destroy]
|
69
|
+
resources :transporters, except: %i[destroy]
|
69
70
|
|
70
71
|
post '/routes/filter', controller: :routes, action: :filter
|
71
72
|
resources :routes, except: %i[destroy]
|
@@ -4,7 +4,7 @@ class CreateCatsCoreDispatchPlans < ActiveRecord::Migration[6.1]
|
|
4
4
|
t.string :reference_no, unique: true
|
5
5
|
t.string :description
|
6
6
|
t.string :status, null: false, default: 'Draft'
|
7
|
-
t.references :
|
7
|
+
t.references :dispatchable, polymorphic: true
|
8
8
|
t.boolean :upstream, null: false, default: false
|
9
9
|
t.references :commodity,
|
10
10
|
null: false,
|
data/lib/cats/core/version.rb
CHANGED
@@ -2,7 +2,7 @@ FactoryBot.define do
|
|
2
2
|
factory :dispatch_plan, class: 'Cats::Core::DispatchPlan' do
|
3
3
|
reference_no { FFaker::Name.name }
|
4
4
|
status { Cats::Core::DispatchPlan::DRAFT }
|
5
|
-
|
5
|
+
dispatchable { nil }
|
6
6
|
upstream { false }
|
7
7
|
commodity
|
8
8
|
prepared_by factory: :user
|
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.
|
4
|
+
version: 1.3.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henock L.
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_model_serializers
|
@@ -246,6 +246,7 @@ files:
|
|
246
246
|
- app/controllers/cats/core/roles_controller.rb
|
247
247
|
- app/controllers/cats/core/routes_controller.rb
|
248
248
|
- app/controllers/cats/core/spaces_controller.rb
|
249
|
+
- app/controllers/cats/core/transporters_controller.rb
|
249
250
|
- app/controllers/cats/core/unit_of_measures_controller.rb
|
250
251
|
- app/controllers/cats/core/users_controller.rb
|
251
252
|
- app/controllers/concerns/cats/core/common.rb
|
@@ -306,6 +307,7 @@ files:
|
|
306
307
|
- app/models/cats/core/transporter.rb
|
307
308
|
- app/models/cats/core/unit_of_measure.rb
|
308
309
|
- app/models/cats/core/user.rb
|
310
|
+
- app/models/concerns/cats/core/dispatchable.rb
|
309
311
|
- app/notifications/cats/core/allocation_notification.rb
|
310
312
|
- app/notifications/cats/core/dispatch_notification.rb
|
311
313
|
- app/notifications/cats/core/simple_notification.rb
|
@@ -322,6 +324,7 @@ files:
|
|
322
324
|
- app/serializers/cats/core/role_menu_serializer.rb
|
323
325
|
- app/serializers/cats/core/role_serializer.rb
|
324
326
|
- app/serializers/cats/core/route_serializer.rb
|
327
|
+
- app/serializers/cats/core/transporter_serializer.rb
|
325
328
|
- app/serializers/cats/core/unit_of_measure_serializer.rb
|
326
329
|
- app/serializers/cats/core/user_serializer.rb
|
327
330
|
- app/services/cats/core/dispatch_plan_service.rb
|
@@ -455,7 +458,7 @@ metadata:
|
|
455
458
|
homepage_uri: http://cats.ndrmcapps.org
|
456
459
|
source_code_uri: https://github.com/ndrmc/cats_core
|
457
460
|
changelog_uri: https://github.com/ndrmc/cats_core/CHANGELOG.md
|
458
|
-
post_install_message:
|
461
|
+
post_install_message:
|
459
462
|
rdoc_options: []
|
460
463
|
require_paths:
|
461
464
|
- lib
|
@@ -470,8 +473,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
470
473
|
- !ruby/object:Gem::Version
|
471
474
|
version: '0'
|
472
475
|
requirements: []
|
473
|
-
rubygems_version: 3.
|
474
|
-
signing_key:
|
476
|
+
rubygems_version: 3.3.3
|
477
|
+
signing_key:
|
475
478
|
specification_version: 4
|
476
479
|
summary: Core module for CATS applications
|
477
480
|
test_files: []
|