cats_core 1.4.4 → 1.4.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 05ec37047a728927e68df2e0a0ae34dd16cca869cfe658314ea5fb0738ae894b
4
- data.tar.gz: 272f1c6cb33e96a8407cab42c3b9bd8b01540156feee9bf4d6012b5b97600b52
3
+ metadata.gz: 1f6f8e286a7968b1159a3b0a7c9cb6e99f1637179ceb1d283d6b00f8c7e04d0b
4
+ data.tar.gz: a98a62f4250435c8611f1034e27e5dc0668ab1833ed8bdf42aa0b6ecdb47b4cd
5
5
  SHA512:
6
- metadata.gz: 19a5247f29b37ca8dc8a0176719b22b924069166168ddcf684a84ca0bcbd45ae170a164516ffada4cb2066b428ece538f89c8daa45bfb2db15bd432fb9676dab
7
- data.tar.gz: b41ed1c8028112b527cd21b01821187260ba85ab2647fe7f477422a69f40a72420aed74d6741d3525f5812d110354b85bc12cf23b54163ce921286be1d185e10
6
+ metadata.gz: 5e8cfe8cacbf89d43b8a3552e2414d35081e2c4a92925f6c0a8678bc40822d34274961dd5bcb96c192e0b35ef6956cf709bea806676ff5dad7e84f73cae29888
7
+ data.tar.gz: 8d4e6d29a50e7ebc4fb2fa78dca753ca9d11ba90453c421ba77f7cf57819649e5027a40e76a298b14cdf20959f74b8fae2d57a265360a24d91ffe2e44df9134b
@@ -0,0 +1,28 @@
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')
20
+ delegate(:abbreviation, to: :unit, prefix: true)
21
+
22
+ def quantity
23
+ quantities = transport_requisition_items.map { |item| UnitConversion.convert(item.unit, unit, item.quantity) }
24
+ quantities.sum
25
+ end
26
+ end
27
+ end
28
+ 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,14 @@
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
+ end
13
+ end
14
+ 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.5'.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,7 +1,7 @@
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.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henock L.
@@ -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