cats_core 1.2.18 → 1.2.22

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: 0b93e9f178cac6984e2689146acb62925c8b1e5aae7ff52af44d1c66c61cbb1f
4
- data.tar.gz: e86322ba7a49ed5d297d0ee908146c19cdc06379fa3e9378d2453299debe0a68
3
+ metadata.gz: c5139b115f1503157e1d5f53a0a013b72d1296a0cd1fe808c1fd117a4a813830
4
+ data.tar.gz: eaf56d0ba167f6360144a4d7e6152eba2e0375b7c272ea271cfc9805178e781b
5
5
  SHA512:
6
- metadata.gz: 11740fca3ba58526553c0a5ac21d2092ec1119ff7cfa78e2883d48f4e3bc4cc2fdde53e9276e2369ed173a2c94f8662fdcb5479daf06346e44d13d420c57c099
7
- data.tar.gz: a03e11f02681870cb1552d4c4a05d7f1de37d25da9a50e98b29bc1ae7c8e4ef2c54b11cb7cb41bbcdec529851ec309596bba5d864fa957dbcede26cd6c96eca2
6
+ metadata.gz: bad07930acac569a78aee9152527d95c390f48eb3a69070894c888a3ff8de74f07f0904730aa59446b17a9b1979a0cdbd8e898b23eeb231b1693f449f664be7b
7
+ data.tar.gz: ab180af55c2610e87a0f1f7f7f1031a8730f9cccbae2ea1c0f5bc58cc6cf219dfac657e3078624e2624f38230b950dd49d708d44691f8ed47db55652262852d3
@@ -0,0 +1,23 @@
1
+ module Cats
2
+ module Core
3
+ class CommoditySubstitution < ApplicationRecord
4
+ belongs_to :program
5
+ belongs_to :commodity, class_name: 'Cats::Core::CommodityCategory'
6
+ belongs_to :replaced_by, class_name: 'Cats::Core::CommodityCategory'
7
+
8
+ validates :ratio, presence: true
9
+ validates :program_id, uniqueness: { scope: %i[commodity_id replaced_by_id] }
10
+ validate :validate_ratio
11
+
12
+ def validate_ratio
13
+ return unless ratio
14
+
15
+ left, right = ratio.split(':')
16
+ left_correct = Integer(left).is_a?(Integer) rescue false
17
+ right_correct = Integer(right).is_a?(Integer) rescue false
18
+
19
+ errors.add(:ratio, 'is not in correct format.') unless left_correct && right_correct
20
+ end
21
+ end
22
+ end
23
+ end
@@ -6,7 +6,7 @@ module Cats
6
6
  DONATION_TYPES = [CASH, KIND].freeze
7
7
 
8
8
  belongs_to :donor
9
- belongs_to :hrp
9
+ belongs_to :plan
10
10
  belongs_to :currency, optional: true
11
11
  belongs_to :commodity_category, optional: true
12
12
  belongs_to :unit_of_measure, optional: true
@@ -19,7 +19,7 @@ module Cats
19
19
  validates :unit_of_measure, presence: true, if: -> { donation_type == KIND }
20
20
 
21
21
  delegate(:name, to: :donor, prefix: true)
22
- delegate(:reference_no, to: :hrp, prefix: true)
22
+ delegate(:reference_no, to: :plan, prefix: true)
23
23
  delegate(:name, to: :commodity_category, prefix: true, allow_nil: true)
24
24
  delegate(:code, to: :currency, prefix: true, allow_nil: true)
25
25
  delegate(:abbreviation, to: :unit_of_measure, prefix: true, allow_nil: true)
@@ -1,6 +1,6 @@
1
1
  module Cats
2
2
  module Core
3
- class Hrp < ApplicationRecord
3
+ class Plan < ApplicationRecord
4
4
  DRAFT = 'Draft'.freeze
5
5
  APPROVED = 'Approved'.freeze
6
6
  NEEDS_APPROVED = 'Needs Approved'.freeze
@@ -13,7 +13,7 @@ module Cats
13
13
 
14
14
  belongs_to :program
15
15
  belongs_to :ration, optional: true
16
- has_many :hrp_items
16
+ has_many :plan_items
17
17
 
18
18
  validates :reference_no, :year, :status, presence: true
19
19
  validates :season, presence: true, inclusion: { in: SEASONS }
@@ -1,14 +1,14 @@
1
1
  module Cats
2
2
  module Core
3
- class HrpItem < ApplicationRecord
4
- belongs_to :hrp
3
+ class PlanItem < ApplicationRecord
4
+ belongs_to :plan
5
5
  belongs_to :woreda, -> { where(location_type: Cats::Core::Location::WOREDA) }, class_name: 'Cats::Core::Location'
6
6
  belongs_to :operator
7
7
 
8
- has_many :hrp_item_details
8
+ has_many :plan_item_details
9
9
 
10
10
  validates :beneficiaries, presence: true, numericality: { greater_than: 0 }
11
- validates :hrp_id, uniqueness: { scope: :woreda_id }
11
+ validates :plan_id, uniqueness: { scope: :woreda_id }
12
12
 
13
13
  delegate(:name, to: :woreda, prefix: true)
14
14
  delegate(:name, to: :operator, prefix: true)
@@ -1,11 +1,11 @@
1
1
  module Cats
2
2
  module Core
3
- class HrpItemDetail < ApplicationRecord
4
- belongs_to :hrp_item
3
+ class PlanItemDetail < ApplicationRecord
4
+ belongs_to :plan_item
5
5
  belongs_to :ration_item
6
6
 
7
7
  validates :amount, presence: true, numericality: { greater_than: 0 }
8
- validates :hrp_item_id, uniqueness: { scope: :ration_item_id }
8
+ validates :plan_item_id, uniqueness: { scope: :ration_item_id }
9
9
  end
10
10
  end
11
11
  end
@@ -10,6 +10,7 @@ module Cats
10
10
  validates :quantity, presence: true, numericality: { greater_than: 0 }
11
11
 
12
12
  delegate(:name, to: :route, prefix: true)
13
+ delegate(:name, to: :unit, prefix: true, allow_nil: true)
13
14
  end
14
15
  end
15
16
  end
@@ -1,6 +1,6 @@
1
- class CreateCatsCoreHrps < ActiveRecord::Migration[6.1]
1
+ class CreateCatsCorePlans < ActiveRecord::Migration[6.1]
2
2
  def change
3
- create_table :cats_core_hrps do |t|
3
+ create_table :cats_core_plans do |t|
4
4
  t.string :reference_no, unique: true
5
5
  t.integer :year, null: false
6
6
  t.string :season, null: false
@@ -8,11 +8,11 @@ class CreateCatsCoreHrps < ActiveRecord::Migration[6.1]
8
8
 
9
9
  t.references :program,
10
10
  null: false,
11
- index: { name: 'program_on_hrp_indx' },
11
+ index: { name: 'program_on_plan_indx' },
12
12
  foreign_key: { to_table: :cats_core_programs }
13
13
  t.references :ration,
14
14
  null: true,
15
- index: { name: 'ration_on_hrp_indx' },
15
+ index: { name: 'ration_on_plan_indx' },
16
16
  foreign_key: { to_table: :cats_core_rations }
17
17
 
18
18
  t.timestamps
@@ -0,0 +1,23 @@
1
+ class CreateCatsCorePlanItems < ActiveRecord::Migration[6.1]
2
+ def change
3
+ create_table :cats_core_plan_items do |t|
4
+ t.references :plan,
5
+ null: false,
6
+ index: { name: 'plan_on_plan_items_indx' },
7
+ foreign_key: { to_table: :cats_core_plans }
8
+ t.references :woreda,
9
+ null: false,
10
+ index: { name: 'woreda_on_plan_items_idnx' },
11
+ foreign_key: { to_table: :cats_core_locations }
12
+ t.integer :beneficiaries, null: false
13
+ t.references :operator,
14
+ null: false,
15
+ index: { name: 'operator_on_plan_items_indx' },
16
+ foreign_key: { to_table: :cats_core_operators }
17
+
18
+ t.timestamps
19
+ end
20
+
21
+ add_index :cats_core_plan_items, [:plan_id, :woreda_id], unique: true
22
+ end
23
+ end
@@ -0,0 +1,18 @@
1
+ class CreateCatsCorePlanItemDetails < ActiveRecord::Migration[6.1]
2
+ def change
3
+ create_table :cats_core_plan_item_details do |t|
4
+ t.references :plan_item,
5
+ null: false,
6
+ index: { name: 'pi_on_pid_indx' },
7
+ foreign_key: { to_table: :cats_core_plan_items }
8
+ t.references :ration_item,
9
+ null: false,
10
+ index: { name: 'ri_on_pid_indx' },
11
+ foreign_key: { to_table: :cats_core_ration_items }
12
+ t.float :amount, null: false
13
+
14
+ t.timestamps
15
+ end
16
+ add_index(:cats_core_plan_item_details, [:plan_item_id, :ration_item_id], unique: true, name: 'pii_rii_on_pid_indx')
17
+ end
18
+ end
@@ -8,10 +8,10 @@ class CreateCatsCoreDonations < ActiveRecord::Migration[6.1]
8
8
  null: false,
9
9
  index: { name: 'donor_on_donation_indx' },
10
10
  foreign_key: { to_table: :cats_core_donors }
11
- t.references :hrp,
11
+ t.references :plan,
12
12
  null: false,
13
- index: { name: 'hrp_on_donation_indx' },
14
- foreign_key: { to_table: :cats_core_hrps }
13
+ index: { name: 'plan_on_donation_indx' },
14
+ foreign_key: { to_table: :cats_core_plans }
15
15
  t.float :amount, null: false
16
16
  t.references :currency,
17
17
  null: true,
@@ -0,0 +1,23 @@
1
+ class CreateCatsCoreCommoditySubstitutions < ActiveRecord::Migration[6.1]
2
+ def change
3
+ create_table :cats_core_commodity_substitutions do |t|
4
+ t.references :program,
5
+ null: false,
6
+ index: { name: 'program_on_cs_indx' },
7
+ foreign_key: { to_table: :cats_core_programs }
8
+ t.references :commodity,
9
+ null: false,
10
+ index: { name: 'commodity_on_cs_indx' },
11
+ foreign_key: { to_table: :cats_core_commodity_categories }
12
+ t.references :replaced_by,
13
+ null: false,
14
+ index: { name: 'rb_on_cs_indx' },
15
+ foreign_key: { to_table: :cats_core_commodity_categories }
16
+ t.string :ratio, null: false
17
+
18
+ t.timestamps
19
+
20
+ t.index [:program_id, :commodity_id, :replaced_by_id], unique: true, name: 'pcr_on_cs_indx'
21
+ end
22
+ end
23
+ end
@@ -1,5 +1,5 @@
1
1
  module Cats
2
2
  module Core
3
- VERSION = '1.2.18'.freeze
3
+ VERSION = '1.2.22'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,8 @@
1
+ FactoryBot.define do
2
+ factory :commodity_substitution, class: 'Cats::Core::CommoditySubstitution' do
3
+ program
4
+ commodity factory: :commodity_category
5
+ replaced_by factory: :commodity_category
6
+ ratio { '1:2' }
7
+ end
8
+ end
@@ -4,7 +4,7 @@ FactoryBot.define do
4
4
  donation_type { Cats::Core::Donation::KIND }
5
5
  donated_on { Date.today }
6
6
  donor
7
- hrp
7
+ plan
8
8
  amount { 100 }
9
9
  currency { nil }
10
10
  commodity_category
@@ -0,0 +1,7 @@
1
+ FactoryBot.define do
2
+ factory :plan_item_detail, class: 'Cats::Core::PlanItemDetail' do
3
+ plan_item
4
+ ration_item
5
+ amount { 150 }
6
+ end
7
+ end
@@ -1,6 +1,6 @@
1
1
  FactoryBot.define do
2
- factory :hrp_item, class: 'Cats::Core::HrpItem' do
3
- hrp
2
+ factory :plan_item, class: 'Cats::Core::PlanItem' do
3
+ plan
4
4
  woreda
5
5
  beneficiaries { 100 }
6
6
  operator
@@ -0,0 +1,10 @@
1
+ FactoryBot.define do
2
+ factory :plan, class: 'Cats::Core::Plan' do
3
+ reference_no { FFaker::Name.name }
4
+ year { 1 }
5
+ season { Cats::Core::Plan::BELG }
6
+ status { Cats::Core::Plan::DRAFT }
7
+ program
8
+ ration
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.2.18
4
+ version: 1.2.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henock L.
@@ -256,6 +256,7 @@ files:
256
256
  - app/models/cats/core/application_record.rb
257
257
  - app/models/cats/core/commodity.rb
258
258
  - app/models/cats/core/commodity_category.rb
259
+ - app/models/cats/core/commodity_substitution.rb
259
260
  - app/models/cats/core/contract_item.rb
260
261
  - app/models/cats/core/currency.rb
261
262
  - app/models/cats/core/dispatch.rb
@@ -265,15 +266,15 @@ files:
265
266
  - app/models/cats/core/donation.rb
266
267
  - app/models/cats/core/donor.rb
267
268
  - app/models/cats/core/gift_certificate.rb
268
- - app/models/cats/core/hrp.rb
269
- - app/models/cats/core/hrp_item.rb
270
- - app/models/cats/core/hrp_item_detail.rb
271
269
  - app/models/cats/core/location.rb
272
270
  - app/models/cats/core/menu.rb
273
271
  - app/models/cats/core/menu_item.rb
274
272
  - app/models/cats/core/notification.rb
275
273
  - app/models/cats/core/notification_rule.rb
276
274
  - app/models/cats/core/operator.rb
275
+ - app/models/cats/core/plan.rb
276
+ - app/models/cats/core/plan_item.rb
277
+ - app/models/cats/core/plan_item_detail.rb
277
278
  - app/models/cats/core/program.rb
278
279
  - app/models/cats/core/purchase_order.rb
279
280
  - app/models/cats/core/ration.rb
@@ -341,9 +342,9 @@ files:
341
342
  - db/migrate/20210717031108_create_cats_core_donors.rb
342
343
  - db/migrate/20210717031216_create_cats_core_rations.rb
343
344
  - db/migrate/20210717031343_create_cats_core_ration_items.rb
344
- - db/migrate/20210717031810_create_cats_core_hrps.rb
345
- - db/migrate/20210717032024_create_cats_core_hrp_items.rb
346
- - db/migrate/20210717032240_create_cats_core_hrp_item_details.rb
345
+ - db/migrate/20210717031810_create_cats_core_plans.rb
346
+ - db/migrate/20210717032024_create_cats_core_plan_items.rb
347
+ - db/migrate/20210717032240_create_cats_core_plan_item_details.rb
347
348
  - db/migrate/20210717032330_create_cats_core_donations.rb
348
349
  - db/migrate/20210717032602_create_cats_core_gift_certificates.rb
349
350
  - db/migrate/20210717032855_create_cats_core_purchase_orders.rb
@@ -372,6 +373,7 @@ files:
372
373
  - db/migrate/20211229160126_create_cats_core_transport_offers.rb
373
374
  - db/migrate/20211229160127_create_cats_core_transport_contracts.rb
374
375
  - db/migrate/20211229160128_create_cats_core_contract_items.rb
376
+ - db/migrate/20211229160129_create_cats_core_commodity_substitutions.rb
375
377
  - lib/cats/core.rb
376
378
  - lib/cats/core/engine.rb
377
379
  - lib/cats/core/version.rb
@@ -382,6 +384,7 @@ files:
382
384
  - spec/factories/cats/core/application_modules.rb
383
385
  - spec/factories/cats/core/commodities.rb
384
386
  - spec/factories/cats/core/commodity_categories.rb
387
+ - spec/factories/cats/core/commodity_substitutions.rb
385
388
  - spec/factories/cats/core/contract_items.rb
386
389
  - spec/factories/cats/core/currencies.rb
387
390
  - spec/factories/cats/core/dispatch_plan_items.rb
@@ -391,15 +394,15 @@ files:
391
394
  - spec/factories/cats/core/donations.rb
392
395
  - spec/factories/cats/core/donors.rb
393
396
  - spec/factories/cats/core/gift_certificates.rb
394
- - spec/factories/cats/core/hrp_item_details.rb
395
- - spec/factories/cats/core/hrp_items.rb
396
- - spec/factories/cats/core/hrps.rb
397
397
  - spec/factories/cats/core/locations.rb
398
398
  - spec/factories/cats/core/menu_items.rb
399
399
  - spec/factories/cats/core/menus.rb
400
400
  - spec/factories/cats/core/notification_rules.rb
401
401
  - spec/factories/cats/core/notifications.rb
402
402
  - spec/factories/cats/core/operators.rb
403
+ - spec/factories/cats/core/plan_item_details.rb
404
+ - spec/factories/cats/core/plan_items.rb
405
+ - spec/factories/cats/core/plans.rb
403
406
  - spec/factories/cats/core/programs.rb
404
407
  - spec/factories/cats/core/purchase_orders.rb
405
408
  - spec/factories/cats/core/ration_items.rb
@@ -1,23 +0,0 @@
1
- class CreateCatsCoreHrpItems < ActiveRecord::Migration[6.1]
2
- def change
3
- create_table :cats_core_hrp_items do |t|
4
- t.references :hrp,
5
- null: false,
6
- index: { name: 'hrp_on_hrp_items_indx' },
7
- foreign_key: { to_table: :cats_core_hrps }
8
- t.references :woreda,
9
- null: false,
10
- index: { name: 'woreda_on_hrp_items_idnx' },
11
- foreign_key: { to_table: :cats_core_locations }
12
- t.integer :beneficiaries, null: false
13
- t.references :operator,
14
- null: false,
15
- index: { name: 'operator_on_hrp_items_indx' },
16
- foreign_key: { to_table: :cats_core_operators }
17
-
18
- t.timestamps
19
- end
20
-
21
- add_index :cats_core_hrp_items, [:hrp_id, :woreda_id], unique: true
22
- end
23
- end
@@ -1,18 +0,0 @@
1
- class CreateCatsCoreHrpItemDetails < ActiveRecord::Migration[6.1]
2
- def change
3
- create_table :cats_core_hrp_item_details do |t|
4
- t.references :hrp_item,
5
- null: false,
6
- index: { name: 'hi_on_hid_indx' },
7
- foreign_key: { to_table: :cats_core_hrp_items }
8
- t.references :ration_item,
9
- null: false,
10
- index: { name: 'ri_on_hid_indx' },
11
- foreign_key: { to_table: :cats_core_ration_items }
12
- t.float :amount, null: false
13
-
14
- t.timestamps
15
- end
16
- add_index(:cats_core_hrp_item_details, [:hrp_item_id, :ration_item_id], unique: true, name: 'hii_rii_on_hid_indx')
17
- end
18
- end
@@ -1,7 +0,0 @@
1
- FactoryBot.define do
2
- factory :hrp_item_detail, class: 'Cats::Core::HrpItemDetail' do
3
- hrp_item
4
- ration_item
5
- amount { 150 }
6
- end
7
- end
@@ -1,10 +0,0 @@
1
- FactoryBot.define do
2
- factory :hrp, class: 'Cats::Core::Hrp' do
3
- reference_no { FFaker::Name.name }
4
- year { 1 }
5
- season { Cats::Core::Hrp::BELG }
6
- status { Cats::Core::Hrp::DRAFT }
7
- program
8
- ration
9
- end
10
- end