cats_core 1.0.13 → 1.0.17
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 +4 -4
- data/app/models/cats/core/commodity.rb +2 -3
- data/app/models/cats/core/commodity_allocation.rb +19 -0
- data/app/models/cats/core/currency.rb +8 -0
- data/app/models/cats/core/dispatch.rb +14 -0
- data/app/models/cats/core/dispatch_transaction.rb +8 -0
- data/app/models/cats/core/donation.rb +18 -0
- data/app/models/cats/core/gift_certificate.rb +11 -0
- data/app/models/cats/core/hrp.rb +16 -0
- data/app/models/cats/core/hrp_item.rb +12 -0
- data/app/models/cats/core/operator.rb +8 -0
- data/app/models/cats/core/purchase_order.rb +11 -0
- data/app/models/cats/core/ration.rb +12 -0
- data/app/models/cats/core/receipt.rb +19 -0
- data/app/models/cats/core/receipt_transaction.rb +8 -0
- data/app/models/cats/core/stack.rb +2 -2
- data/app/models/cats/core/stack_transaction.rb +8 -0
- data/app/models/cats/core/store.rb +18 -0
- data/app/models/cats/core/supplier.rb +8 -0
- data/app/models/cats/core/transaction.rb +32 -0
- data/app/models/cats/core/user.rb +0 -1
- data/db/migrate/{20210717043620_create_cats_core_locations.rb → 20210716183620_create_cats_core_locations.rb} +0 -0
- data/db/migrate/20210716185529_create_cats_core_currencies.rb +10 -0
- data/db/migrate/20210716210635_create_cats_core_operators.rb +13 -0
- data/db/migrate/20210716210905_create_cats_core_suppliers.rb +14 -0
- data/db/migrate/20210717031216_create_cats_core_rations.rb +19 -0
- data/db/migrate/20210717031810_create_cats_core_hrps.rb +20 -0
- data/db/migrate/20210717032024_create_cats_core_hrp_items.rb +22 -0
- data/db/migrate/20210717032330_create_cats_core_donations.rb +24 -0
- data/db/migrate/20210717032602_create_cats_core_gift_certificates.rb +29 -0
- data/db/migrate/20210717032855_create_cats_core_purchase_orders.rb +21 -0
- data/db/migrate/20210717033223_create_cats_core_commodities.rb +2 -14
- data/db/migrate/20210718042823_create_cats_core_commodity_allocations.rb +23 -0
- data/db/migrate/20210718045516_create_cats_core_dispatches.rb +27 -0
- data/db/migrate/20210718202957_create_cats_core_dispatch_transactions.rb +19 -0
- data/db/migrate/20210727074646_create_cats_core_receipts.rb +20 -0
- data/db/migrate/20210814160628_create_cats_core_receipt_transactions.rb +19 -0
- data/db/migrate/20210814175406_create_cats_core_stack_transactions.rb +19 -0
- data/lib/cats/core/version.rb +1 -1
- data/spec/factories/cats/core/commodities.rb +2 -5
- data/spec/factories/cats/core/commodity_allocations.rb +10 -0
- data/spec/factories/cats/core/currencies.rb +6 -0
- data/spec/factories/cats/core/dispatch_transactions.rb +9 -0
- data/spec/factories/cats/core/dispatches.rb +13 -0
- data/spec/factories/cats/core/donations.rb +11 -0
- data/spec/factories/cats/core/gift_certificates.rb +17 -0
- data/spec/factories/cats/core/hrp_items.rb +9 -0
- data/spec/factories/cats/core/hrps.rb +10 -0
- data/spec/factories/cats/core/locations.rb +5 -0
- data/spec/factories/cats/core/operators.rb +9 -0
- data/spec/factories/cats/core/purchase_orders.rb +10 -0
- data/spec/factories/cats/core/rations.rb +9 -0
- data/spec/factories/cats/core/receipt_transactions.rb +9 -0
- data/spec/factories/cats/core/receipts.rb +10 -0
- data/spec/factories/cats/core/stack_transactions.rb +9 -0
- data/spec/factories/cats/core/suppliers.rb +10 -0
- metadata +49 -15
- data/app/models/cats/core/commodity_transaction.rb +0 -55
- data/app/models/cats/core/receipt_plan.rb +0 -24
- data/app/models/cats/core/way_bill.rb +0 -12
- data/app/models/cats/core/way_bill_item.rb +0 -15
- data/db/migrate/20210718045516_create_cats_core_way_bills.rb +0 -25
- data/db/migrate/20210718050751_create_cats_core_way_bill_items.rb +0 -18
- data/db/migrate/20210718202957_create_cats_core_commodity_transactions.rb +0 -14
- data/db/migrate/20210727074646_create_cats_core_receipt_plans.rb +0 -16
- data/spec/factories/cats/core/commodity_transactions.rb +0 -10
- data/spec/factories/cats/core/receipt_plans.rb +0 -9
- data/spec/factories/cats/core/way_bill_items.rb +0 -8
- data/spec/factories/cats/core/way_bills.rb +0 -12
@@ -1,55 +0,0 @@
|
|
1
|
-
module Cats
|
2
|
-
module Core
|
3
|
-
class CommodityTransaction < ApplicationRecord
|
4
|
-
# Transaction statuses
|
5
|
-
DRAFT = 'Draft'.freeze
|
6
|
-
COMMITTED = 'Committed'.freeze
|
7
|
-
STATUSES = [DRAFT, COMMITTED].freeze
|
8
|
-
|
9
|
-
# Transaction types
|
10
|
-
STACK_TO_STACK = 'Stack to Stack'.freeze
|
11
|
-
STACK_TO_WAY_BILL = 'Stack to Way Bill'.freeze
|
12
|
-
WAY_BILL_TO_STACK = 'Way Bill to Stack'.freeze
|
13
|
-
TRANSACTION_TYPES = [STACK_TO_STACK, STACK_TO_WAY_BILL, WAY_BILL_TO_STACK].freeze
|
14
|
-
|
15
|
-
belongs_to :source, polymorphic: true
|
16
|
-
belongs_to :destination, polymorphic: true
|
17
|
-
|
18
|
-
validates :transaction_date, :quantity, :status, presence: true
|
19
|
-
validates :quantity, numericality: { greater_than: 0 }
|
20
|
-
validates :status, inclusion: { in: STATUSES }
|
21
|
-
validate :validate_quantity
|
22
|
-
|
23
|
-
before_validation :set_transaction_type
|
24
|
-
|
25
|
-
def validate_quantity
|
26
|
-
return unless quantity.present? && source.present?
|
27
|
-
|
28
|
-
errors.add(:quantity, 'cannot be more than source quantity') if quantity > source.quantity
|
29
|
-
end
|
30
|
-
|
31
|
-
def commit
|
32
|
-
CommodityTransaction.transaction do
|
33
|
-
source.quantity -= quantity
|
34
|
-
destination.quantity += quantity
|
35
|
-
source.save
|
36
|
-
destination.save
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
def set_transaction_type
|
43
|
-
return unless transaction_type.nil? && source.present? && destination.present?
|
44
|
-
|
45
|
-
if source.instance_of?(Cats::Core::Stack) && destination.instance_of?(Cats::Core::Stack)
|
46
|
-
self.transaction_type = STACK_TO_STACK
|
47
|
-
elsif source.instance_of?(Cats::Core::Stack) && destination.instance_of?(Cats::Core::WayBillItem)
|
48
|
-
self.transaction_type = STACK_TO_WAY_BILL
|
49
|
-
else
|
50
|
-
self.transaction_type = WAY_BILL_TO_STACK
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module Cats
|
2
|
-
module Core
|
3
|
-
class ReceiptPlan < ApplicationRecord
|
4
|
-
# receipt plan status
|
5
|
-
DRAFT = 'Draft'.freeze
|
6
|
-
ACCEPTED = 'Accepted'.freeze
|
7
|
-
DECLINED = 'Declined'.freeze
|
8
|
-
RECEIPT_PLAN_STATUSES = [DRAFT, ACCEPTED, DECLINED].freeze
|
9
|
-
|
10
|
-
validates :quantity, :status, presence: true
|
11
|
-
belongs_to :commodity
|
12
|
-
belongs_to :plan_recipient, polymorphic: true
|
13
|
-
validates :quantity, numericality: { greater_than: 0 }
|
14
|
-
validates :status, inclusion: { in: RECEIPT_PLAN_STATUSES }
|
15
|
-
validate :validate_reason_for_decline
|
16
|
-
|
17
|
-
def validate_reason_for_decline
|
18
|
-
return unless reason_for_decline.nil? || reason_for_decline == 'Accepted'
|
19
|
-
|
20
|
-
errors.add(:reason_for_decline, 'must be specified')
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
module Cats
|
2
|
-
module Core
|
3
|
-
class WayBill < ApplicationRecord
|
4
|
-
belongs_to :source, class_name: 'Cats::Core::Location'
|
5
|
-
belongs_to :destination, class_name: 'Cats::Core::Location'
|
6
|
-
belongs_to :transporter
|
7
|
-
|
8
|
-
validates :ref_no, :plate_no, :driver_name, :driver_phone, :date_prepared, presence: true
|
9
|
-
validates :ref_no, uniqueness: true
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module Cats
|
2
|
-
module Core
|
3
|
-
class WayBillItem < ApplicationRecord
|
4
|
-
belongs_to :way_bill
|
5
|
-
belongs_to :commodity
|
6
|
-
|
7
|
-
has_many :source_transactions, class_name: 'Cats::Core::CommodityTransaction', as: :source
|
8
|
-
has_many :destination_transactions, class_name: 'Cats::Core::CommodityTransaction', as: :destination
|
9
|
-
|
10
|
-
validates :quantity, :commodity_status, presence: true
|
11
|
-
validates :quantity, numericality: { greater_than: 0 }
|
12
|
-
validates :commodity_status, inclusion: { in: Cats::Core::Commodity::COMMODITY_STATUSES }
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
class CreateCatsCoreWayBills < ActiveRecord::Migration[6.1]
|
2
|
-
def change
|
3
|
-
create_table :cats_core_way_bills do |t|
|
4
|
-
t.string :ref_no, unique: true
|
5
|
-
t.references :source,
|
6
|
-
null: false,
|
7
|
-
index: { name: 'source_on_wb_indx' },
|
8
|
-
foreign_key: { to_table: :cats_core_locations }
|
9
|
-
t.references :destination,
|
10
|
-
null: false,
|
11
|
-
index: { name: 'destination_on_wb_indx' },
|
12
|
-
foreign_key: { to_table: :cats_core_locations }
|
13
|
-
t.references :transporter,
|
14
|
-
null: false,
|
15
|
-
index: { name: 'transporter_on_wb_indx' },
|
16
|
-
foreign_key: { to_table: :cats_core_transporters }
|
17
|
-
t.string :plate_no, null: false
|
18
|
-
t.string :driver_name, null: false
|
19
|
-
t.string :driver_phone, null: false
|
20
|
-
t.date :date_prepared, null: false
|
21
|
-
|
22
|
-
t.timestamps
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
class CreateCatsCoreWayBillItems < ActiveRecord::Migration[6.1]
|
2
|
-
def change
|
3
|
-
create_table :cats_core_way_bill_items do |t|
|
4
|
-
t.references :way_bill,
|
5
|
-
null: false,
|
6
|
-
index: { name: 'wb_on_wbi_indx' },
|
7
|
-
foreign_key: { to_table: :cats_core_way_bills }
|
8
|
-
t.references :commodity,
|
9
|
-
null: false,
|
10
|
-
index: { name: 'commodity_on_wbi_indx' },
|
11
|
-
foreign_key: { to_table: :cats_core_commodities }
|
12
|
-
t.float :quantity, null: false
|
13
|
-
t.string :commodity_status, null: false
|
14
|
-
|
15
|
-
t.timestamps
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
class CreateCatsCoreCommodityTransactions < ActiveRecord::Migration[6.1]
|
2
|
-
def change
|
3
|
-
create_table :cats_core_commodity_transactions do |t|
|
4
|
-
t.references :source, polymorphic: true
|
5
|
-
t.references :destination, polymorphic: true
|
6
|
-
t.date :transaction_date, null: false
|
7
|
-
t.float :quantity, null: false
|
8
|
-
t.string :status, null: false, default: 'Draft'
|
9
|
-
t.string :transaction_type, null: false, default: 'Stack to Stack'
|
10
|
-
|
11
|
-
t.timestamps
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
class CreateCatsCoreReceiptPlans < ActiveRecord::Migration[6.1]
|
2
|
-
def change
|
3
|
-
create_table :cats_core_receipt_plans do |t|
|
4
|
-
t.float :quantity, null: false
|
5
|
-
t.string :status, default: 'Draft'
|
6
|
-
t.references :commodity,
|
7
|
-
null: false,
|
8
|
-
index: { name: 'commodity_on_receipt_plan_indx' },
|
9
|
-
foreign_key: { to_table: :cats_core_commodities }
|
10
|
-
t.string :reason_for_decline
|
11
|
-
t.references :plan_recipient, polymorphic: true
|
12
|
-
|
13
|
-
t.timestamps
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
FactoryBot.define do
|
2
|
-
factory :commodity_transaction, class: 'Cats::Core::CommodityTransaction' do
|
3
|
-
source factory: :stack
|
4
|
-
destination factory: :stack
|
5
|
-
transaction_date { Date.today }
|
6
|
-
quantity { 10 }
|
7
|
-
status { Cats::Core::CommodityTransaction::DRAFT }
|
8
|
-
transaction_type { Cats::Core::CommodityTransaction::STACK_TO_STACK }
|
9
|
-
end
|
10
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
FactoryBot.define do
|
2
|
-
factory :way_bill, class: 'Cats::Core::WayBill' do
|
3
|
-
ref_no { FFaker::Name.name }
|
4
|
-
source factory: :location
|
5
|
-
destination factory: :location
|
6
|
-
transporter
|
7
|
-
plate_no { FFaker::Name.name }
|
8
|
-
driver_name { FFaker::Name.name }
|
9
|
-
driver_phone { FFaker::Name.name }
|
10
|
-
date_prepared { Date.today }
|
11
|
-
end
|
12
|
-
end
|