cats_core 1.0.44 → 1.0.48

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: 13bc9433b974cded9d6145d8bffc52e7669f3688b70ee861e5ad2c74110c3d2c
4
- data.tar.gz: b8cdd5dae74d00d59ae9a75bf63aed63a8873dbd3a578b14c953ea2c52235a3a
3
+ metadata.gz: e0cb918631b3c8651aca92abc3209f968ce85fbb0e6408332ae5683b95130333
4
+ data.tar.gz: 3dca9a7897114e6bf7830951190ac504eaceb03e2f9bf1e3f7de1c5bd1158a5a
5
5
  SHA512:
6
- metadata.gz: 2ae137b536163fbf766211a80ef278eebd5b4ab45023076b9c429594dd08cc5a976ad07bf3a063b11a3d601968112cd274385a54f1578cc10f9126589bfdb7a4
7
- data.tar.gz: 1433945abdd51c8a3f367920cb7ebe63d291d71448f7d617324352c9bc958a16abfe3ae888f4237e42274db0dcc9f59e4fb4a626ebc13e0a6dc8a09373f9058f
6
+ metadata.gz: a8d658d04da98b1e5607be0843fdfde3663d7ea089b56b9fd7f073420ffa00715613426233c066ca1a92f503bfd8bbc8b9a91663f633ddb93b3e779d1546496a
7
+ data.tar.gz: 4aa0772c1ca60ec644476785dc96b3fe7639fcb77e2a97d76e6d757f0a44c6a8f8beb6738edd15361e4edeb41c6559f2ae9f6186bd20e601358fcf1cf1092ab9
@@ -1,14 +1,19 @@
1
1
  module Cats
2
2
  module Core
3
3
  class Allocation < ApplicationRecord
4
+ DRAFT = 'Draft'.freeze
5
+ APPROVED = 'Approved'.freeze
6
+ ALLOCATION_STATUSES = [DRAFT, APPROVED].freeze
7
+
4
8
  belongs_to :rhn_request, optional: true
5
9
  belongs_to :commodity
6
10
  belongs_to :source, class_name: 'Cats::Core::Location'
7
11
 
8
- validates :commodity_status, presence: true
12
+ validates :commodity_status, :allocation_status, presence: true
9
13
  validates :reference_no, presence: true, uniqueness: true
10
14
  validates :quantity, presence: true, numericality: { greater_than: 0 }
11
15
  validates :commodity_status, inclusion: { in: Cats::Core::Commodity::COMMODITY_STATUSES }
16
+ validates :allocation_status, inclusion: { in: ALLOCATION_STATUSES }
12
17
 
13
18
  delegate(:reference_no, to: :rhn_request, prefix: :rhn, allow_nil: true)
14
19
  delegate(:batch_no, to: :commodity, prefix: true)
@@ -1,14 +1,38 @@
1
1
  module Cats
2
2
  module Core
3
3
  class Dispatch < ApplicationRecord
4
+ DRAFT = 'Draft'.freeze
5
+ APPROVED = 'Approved'.freeze
6
+ STARTED = 'Started'.freeze
7
+ ARRIVED = 'Arrived'.freeze
8
+ UNLOADED = 'Unloaded'.freeze
9
+ RECEIVED = 'Received'.freeze
10
+
11
+ DISPATCH_STATUSES = [DRAFT, APPROVED, STARTED, ARRIVED, UNLOADED, RECEIVED].freeze
12
+
4
13
  belongs_to :prepared_by, class_name: 'Cats::Core::User'
5
14
  belongs_to :transporter
6
15
  belongs_to :allocation_item
7
16
 
8
17
  validates :reference_no, :plate_no, :driver_name, :driver_phone, :quantity, :commodity_status, presence: true
18
+ validates :dispatch_status, presence: true, inclusion: { in: DISPATCH_STATUSES }
9
19
  validates :reference_no, uniqueness: true
10
20
  validates :quantity, numericality: { greater_than: 0 }
11
21
  validates :commodity_status, inclusion: { in: Cats::Core::Commodity::COMMODITY_STATUSES }
22
+ validate :validate_quantity
23
+
24
+ delegate(:name, to: :transporter, prefix: true)
25
+ delegate(:email, to: :prepared_by, prefix: true)
26
+
27
+ def validate_quantity
28
+ return unless quantity && allocation_item
29
+
30
+ return unless quantity_changed?
31
+
32
+ dispatched = Dispatch.where(allocation_item: allocation_item).sum(:quantity)
33
+ remaining = allocation_item.quantity - dispatched
34
+ errors.add(:quantity, "exceeds allocated quantity. Maximum allowed is #{remaining}") if quantity > remaining
35
+ end
12
36
  end
13
37
  end
14
38
  end
@@ -3,6 +3,9 @@ module Cats
3
3
  class DispatchTransaction < Transaction
4
4
  belongs_to :source, class_name: 'Cats::Core::Stack'
5
5
  belongs_to :destination, class_name: 'Cats::Core::Dispatch'
6
+
7
+ delegate(:code, to: :source, prefix: true)
8
+ delegate(:reference_no, to: :destination, prefix: true)
6
9
  end
7
10
  end
8
11
  end
@@ -5,7 +5,8 @@ module Cats
5
5
  belongs_to :store_keeper, class_name: 'Cats::Core::User'
6
6
  has_many :stacks
7
7
 
8
- validates :name, :length, :width, :height, presence: true
8
+ validates :code, :name, :length, :width, :height, presence: true
9
+ validates :code, uniqueness: true
9
10
  validates :length, :width, :height, numericality: { greater_than: 0 }
10
11
  validates :gangway_length, :gangway_width, :gangway_corner_dist, presence: true, if: :has_gangway?
11
12
  validates :gangway_length,
@@ -1,6 +1,7 @@
1
1
  class CreateCatsCoreStores < ActiveRecord::Migration[6.1]
2
2
  def change
3
3
  create_table :cats_core_stores do |t|
4
+ t.string :code, unique: true
4
5
  t.string :name, null: false
5
6
  t.float :length, null: false
6
7
  t.float :width, null: false
@@ -16,6 +16,7 @@ class CreateCatsCoreAllocations < ActiveRecord::Migration[6.1]
16
16
  foreign_key: { to_table: :cats_core_locations }
17
17
  t.float :quantity, null: false
18
18
  t.string :commodity_status, null: false, default: 'Good'
19
+ t.string :allocation_status, null: false, default: 'Draft'
19
20
  t.string :remark
20
21
 
21
22
  t.timestamps
@@ -20,6 +20,7 @@ class CreateCatsCoreDispatches < ActiveRecord::Migration[6.1]
20
20
  null: false,
21
21
  index: { name: 'pb_on_dispatches_indx' },
22
22
  foreign_key: { to_table: :cats_core_users }
23
+ t.string :dispatch_status, null: false
23
24
 
24
25
  t.timestamps
25
26
  end
@@ -1,5 +1,5 @@
1
1
  module Cats
2
2
  module Core
3
- VERSION = '1.0.44'.freeze
3
+ VERSION = '1.0.48'.freeze
4
4
  end
5
5
  end
@@ -6,6 +6,7 @@ FactoryBot.define do
6
6
  source factory: :location
7
7
  quantity { 50 }
8
8
  commodity_status { Cats::Core::Commodity::GOOD }
9
+ allocation_status { Cats::Core::Allocation::DRAFT }
9
10
  remark { FFaker::Name.name }
10
11
  end
11
12
  end
@@ -9,5 +9,6 @@ FactoryBot.define do
9
9
  quantity { 50 }
10
10
  remark { FFaker::Name.name }
11
11
  prepared_by factory: :user
12
+ dispatch_status { Cats::Core::Dispatch::DRAFT }
12
13
  end
13
14
  end
@@ -1,5 +1,6 @@
1
1
  FactoryBot.define do
2
2
  factory :store, class: 'Cats::Core::Store' do
3
+ code { FFaker::Name.name }
3
4
  name { FFaker::Name.name }
4
5
  length { 50 }
5
6
  width { 40 }
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.0.44
4
+ version: 1.0.48
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henock L.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-20 00:00:00.000000000 Z
11
+ date: 2021-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_model_serializers