cats_core 1.0.13 → 1.0.17
Sign up to get free protection for your applications and to get access to all the features.
- 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
|