cats_core 1.4.4 → 1.4.7

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: 05ec37047a728927e68df2e0a0ae34dd16cca869cfe658314ea5fb0738ae894b
4
- data.tar.gz: 272f1c6cb33e96a8407cab42c3b9bd8b01540156feee9bf4d6012b5b97600b52
3
+ metadata.gz: dd88ba053bde7688e286bd43301fbd8b7d8c09eb3d76a22c5da0f70c80f8f733
4
+ data.tar.gz: 3377e493badbe09bd8d152bb93aad0843b427e72fad83273eeb5177257fc7dd0
5
5
  SHA512:
6
- metadata.gz: 19a5247f29b37ca8dc8a0176719b22b924069166168ddcf684a84ca0bcbd45ae170a164516ffada4cb2066b428ece538f89c8daa45bfb2db15bd432fb9676dab
7
- data.tar.gz: b41ed1c8028112b527cd21b01821187260ba85ab2647fe7f477422a69f40a72420aed74d6741d3525f5812d110354b85bc12cf23b54163ce921286be1d185e10
6
+ metadata.gz: 011ad9d0b3d1906c2cd7a3f978d5a2116c37af34bb199f1c52618682cc49064abcf533543cb088026f10d06b658cfbb40b21eccfb4d045605f4d93a55b729f47
7
+ data.tar.gz: 605b33ec788fff1f0514e7093f4d03698de791f84bd49744856664f045349570bf767ed767e31eded4ef0206902f3e7d07f3686796d31e219baf4d0c21c2ecab
@@ -0,0 +1,29 @@
1
+ module Cats
2
+ module Core
3
+ class TransportRequisition < ApplicationRecord
4
+ DRAFT = 'Draft'.freeze
5
+ APPROVED = 'Approved'.freeze
6
+ STATUSES = [DRAFT, APPROVED].freeze
7
+
8
+ belongs_to :dispatch_plan
9
+ belongs_to :requested_by, class_name: 'Cats::Core::User'
10
+ belongs_to :approved_by, class_name: 'Cats::Core::User', optional: true
11
+ belongs_to :unit, class_name: 'Cats::Core::UnitOfMeasure'
12
+
13
+ has_many :transport_requisition_items
14
+
15
+ validates :reference_no, presence: true, uniqueness: true
16
+ validates :status, presence: true, inclusion: { in: STATUSES }
17
+
18
+ delegate(:full_name, to: :requested_by, prefix: 'requestor')
19
+ delegate(:full_name, to: :approved_by, prefix: 'approver', allow_nil: true)
20
+ delegate(:abbreviation, to: :unit, prefix: true)
21
+ delegate(:reference_no, to: :dispatch_plan, prefix: true)
22
+
23
+ def quantity
24
+ quantities = transport_requisition_items.map { |item| UnitConversion.convert(item.unit, unit, item.quantity) }
25
+ quantities.sum
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,12 @@
1
+ module Cats
2
+ module Core
3
+ class TransportRequisitionDetail < ApplicationRecord
4
+ belongs_to :transport_requisition_item
5
+ belongs_to :fdp, class_name: 'Cats::Core::Location'
6
+
7
+ validates :quantity, presence: true, numericality: { greater_than: 0 }
8
+
9
+ delegate(:name, to: :fdp, prefix: true)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,22 @@
1
+ module Cats
2
+ module Core
3
+ class TransportRequisitionItem < ApplicationRecord
4
+ belongs_to :transport_requisition
5
+ belongs_to :dispatch_plan_item
6
+ belongs_to :unit, class_name: 'Cats::Core::UnitOfMeasure'
7
+
8
+ validates :quantity, presence: true, numericality: { greater_than: 0 }
9
+
10
+ delegate(:reference_no, to: :transport_requisition, prefix: 'requisition')
11
+ delegate(:abbreviation, to: :unit, prefix: true)
12
+
13
+ def commodity_name
14
+ dispatch_plan_item.commodity.source.commodity_category.name
15
+ end
16
+
17
+ def woreda
18
+ dispatch_plan_item.destination.name
19
+ end
20
+ end
21
+ end
22
+ end
@@ -3,7 +3,7 @@ module Cats
3
3
  class DispatchPlanItemSerializer < ActiveModel::Serializer
4
4
  attributes :id, :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
6
+ :status, :commodity_id, :commodity_name, :commodity_batch_no
7
7
  end
8
8
  end
9
9
  end
@@ -0,0 +1,26 @@
1
+ class CreateCatsCoreTransportRequisitions < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :cats_core_transport_requisitions do |t|
4
+ t.references :dispatch_plan,
5
+ null: false,
6
+ index: { name: 'dp_on_tr_indx' },
7
+ foreign_key: { to_table: :cats_core_dispatch_plans }
8
+ t.string :reference_no, null: false, unique: true
9
+ t.references :requested_by,
10
+ null: false,
11
+ index: { name: 'rb_on_tr_indx' },
12
+ foreign_key: { to_table: :cats_core_users }
13
+ t.references :approved_by,
14
+ null: true,
15
+ index: { name: 'ab_on_tr_indx' },
16
+ foreign_key: { to_table: :cats_core_users }
17
+ t.string :status, null: false
18
+ t.references :unit,
19
+ null: false,
20
+ index: { name: 'unit_on_tr_indx' },
21
+ foreign_key: { to_table: :cats_core_unit_of_measures }
22
+
23
+ t.timestamps
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,21 @@
1
+ class CreateCatsCoreTransportRequisitionItems < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :cats_core_transport_requisition_items do |t|
4
+ t.references :transport_requisition,
5
+ null: false,
6
+ index: { name: 'tr_on_tri_indx' },
7
+ foreign_key: { to_table: :cats_core_transport_requisitions }
8
+ t.references :dispatch_plan_item,
9
+ null: false,
10
+ index: { name: 'dpi_on_tri_indx' },
11
+ foreign_key: { to_table: :cats_core_dispatch_plan_items }
12
+ t.float :quantity, null: false
13
+ t.references :unit,
14
+ null: false,
15
+ index: { name: 'unit_on_tri_indx' },
16
+ foreign_key: { to_table: :cats_core_unit_of_measures }
17
+
18
+ t.timestamps
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ class CreateCatsCoreTransportRequisitionDetails < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :cats_core_transport_requisition_details do |t|
4
+ t.references :transport_requisition_item,
5
+ null: false,
6
+ index: { name: 'tri_on_trd_indx'},
7
+ foreign_key: { to_table: :cats_core_transport_requisition_items }
8
+ t.float :quantity, null: false
9
+ t.references :fdp,
10
+ null: false,
11
+ index: { name: 'fdp_on_tri_indx'},
12
+ foreign_key: { to_table: :cats_core_locations }
13
+
14
+ t.timestamps
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,5 @@
1
1
  module Cats
2
2
  module Core
3
- VERSION = '1.4.4'.freeze
3
+ VERSION = '1.4.7'.freeze
4
4
  end
5
5
  end
@@ -6,23 +6,28 @@ FactoryBot.define do
6
6
  ancestry { nil }
7
7
  end
8
8
 
9
- factory :hub, parent: :location, class: 'Cats::Core::Location' do
10
- location_type { Cats::Core::Location::HUB }
9
+ factory :zone, parent: :location, class: 'Cats::Core::Location' do
10
+ location_type { Cats::Core::Location::ZONE }
11
11
  parent
12
12
  end
13
13
 
14
- factory :warehouse, parent: :location, class: 'Cats::Core::Location' do
15
- location_type { Cats::Core::Location::WAREHOUSE }
14
+ factory :woreda, parent: :location, class: 'Cats::Core::Location' do
15
+ location_type { Cats::Core::Location::WOREDA }
16
16
  parent
17
17
  end
18
18
 
19
- factory :woreda, parent: :location, class: 'Cats::Core::Location' do
20
- location_type { Cats::Core::Location::WOREDA }
19
+ factory :fdp, parent: :woreda, class: 'Cats::Core::Location' do
20
+ location_type { Cats::Core::Location::FDP }
21
21
  parent
22
22
  end
23
23
 
24
- factory :zone, parent: :location, class: 'Cats::Core::Location' do
25
- location_type { Cats::Core::Location::ZONE }
24
+ factory :hub, parent: :location, class: 'Cats::Core::Location' do
25
+ location_type { Cats::Core::Location::HUB }
26
+ parent
27
+ end
28
+
29
+ factory :warehouse, parent: :location, class: 'Cats::Core::Location' do
30
+ location_type { Cats::Core::Location::WAREHOUSE }
26
31
  parent
27
32
  end
28
33
  end
@@ -0,0 +1,7 @@
1
+ FactoryBot.define do
2
+ factory :transport_requisition_detail, class: 'Cats::Core::TransportRequisitionDetail' do
3
+ transport_requisition_item
4
+ quantity { 50 }
5
+ fdp factory: :fdp
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ FactoryBot.define do
2
+ factory :transport_requisition_item, class: 'Cats::Core::TransportRequisitionItem' do
3
+ transport_requisition
4
+ dispatch_plan_item
5
+ quantity { 100 }
6
+ unit factory: :unit_of_measure
7
+ end
8
+ end
@@ -0,0 +1,10 @@
1
+ FactoryBot.define do
2
+ factory :transport_requisition, class: 'Cats::Core::TransportRequisition' do
3
+ dispatch_plan
4
+ reference_no { FFaker::Name.name }
5
+ requested_by factory: :user
6
+ approved_by factory: :user
7
+ status { Cats::Core::TransportRequisition::DRAFT }
8
+ unit factory: :unit_of_measure
9
+ end
10
+ 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.4.4
4
+ version: 1.4.7
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-04-17 00:00:00.000000000 Z
11
+ date: 2022-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_model_serializers
@@ -309,6 +309,9 @@ files:
309
309
  - app/models/cats/core/transport_offer.rb
310
310
  - app/models/cats/core/transport_plan.rb
311
311
  - app/models/cats/core/transport_plan_item.rb
312
+ - app/models/cats/core/transport_requisition.rb
313
+ - app/models/cats/core/transport_requisition_detail.rb
314
+ - app/models/cats/core/transport_requisition_item.rb
312
315
  - app/models/cats/core/transporter.rb
313
316
  - app/models/cats/core/unit_conversion.rb
314
317
  - app/models/cats/core/unit_of_measure.rb
@@ -404,6 +407,9 @@ files:
404
407
  - db/migrate/20220107132433_create_cats_core_monthly_plan_item_details.rb
405
408
  - db/migrate/20220209083928_create_cats_core_hub_authorizations.rb
406
409
  - db/migrate/20220416143416_create_cats_core_unit_conversions.rb
410
+ - db/migrate/20220417105839_create_cats_core_transport_requisitions.rb
411
+ - db/migrate/20220417123835_create_cats_core_transport_requisition_items.rb
412
+ - db/migrate/20220417151821_create_cats_core_transport_requisition_details.rb
407
413
  - lib/cats/core.rb
408
414
  - lib/cats/core/engine.rb
409
415
  - lib/cats/core/version.rb
@@ -460,6 +466,9 @@ files:
460
466
  - spec/factories/cats/core/transport_offers.rb
461
467
  - spec/factories/cats/core/transport_plan_items.rb
462
468
  - spec/factories/cats/core/transport_plans.rb
469
+ - spec/factories/cats/core/transport_requisition_details.rb
470
+ - spec/factories/cats/core/transport_requisition_items.rb
471
+ - spec/factories/cats/core/transport_requisitions.rb
463
472
  - spec/factories/cats/core/transporters.rb
464
473
  - spec/factories/cats/core/unit_conversions.rb
465
474
  - spec/factories/cats/core/unit_of_measures.rb