cats_core 1.4.21 → 1.4.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/cats/core/dispatch_authorizations_controller.rb +35 -0
  3. data/app/controllers/cats/core/dispatch_plan_items_controller.rb +2 -2
  4. data/app/controllers/cats/core/dispatch_transactions_controller.rb +4 -4
  5. data/app/controllers/cats/core/dispatches_controller.rb +7 -2
  6. data/app/controllers/cats/core/lost_commodities_controller.rb +2 -2
  7. data/app/controllers/cats/core/receipt_authorizations_controller.rb +27 -0
  8. data/app/controllers/cats/core/receipt_transactions_controller.rb +2 -20
  9. data/app/controllers/cats/core/receipts_controller.rb +2 -28
  10. data/app/models/cats/core/authorization.rb +77 -0
  11. data/app/models/cats/core/dispatch.rb +30 -48
  12. data/app/models/cats/core/dispatch_authorization.rb +13 -0
  13. data/app/models/cats/core/dispatch_plan_item.rb +1 -0
  14. data/app/models/cats/core/dispatch_transaction.rb +39 -2
  15. data/app/models/cats/core/lost_commodity.rb +2 -3
  16. data/app/models/cats/core/receipt.rb +3 -37
  17. data/app/models/cats/core/receipt_authorization.rb +22 -0
  18. data/app/models/cats/core/receipt_transaction.rb +17 -14
  19. data/app/models/cats/core/transaction.rb +0 -30
  20. data/app/serializers/cats/core/dispatch_authorization_serializer.rb +8 -0
  21. data/app/serializers/cats/core/dispatch_plan_item_serializer.rb +1 -1
  22. data/app/serializers/cats/core/dispatch_transaction_serializer.rb +1 -2
  23. data/app/serializers/cats/core/lost_commodity_serializer.rb +1 -1
  24. data/app/serializers/cats/core/receipt_authorization_serializer.rb +8 -0
  25. data/app/serializers/cats/core/receipt_serializer.rb +1 -2
  26. data/app/serializers/cats/core/receipt_transaction_serializer.rb +1 -5
  27. data/app/services/cats/core/authorization_service.rb +25 -0
  28. data/config/routes.rb +26 -9
  29. data/db/migrate/20210718043401_create_cats_core_dispatch_plan_items.rb +1 -0
  30. data/db/migrate/20210718045516_create_cats_core_dispatches.rb +4 -0
  31. data/db/migrate/20210718055414_create_cats_core_dispatch_authorizations.rb +22 -0
  32. data/db/migrate/20210718202957_create_cats_core_dispatch_transactions.rb +9 -3
  33. data/db/migrate/20210727074646_create_cats_core_receipt_authorizations.rb +24 -0
  34. data/db/migrate/20210727105834_create_cats_core_receipts.rb +15 -0
  35. data/db/migrate/20210728041505_create_cats_core_lost_commodities.rb +3 -4
  36. data/db/migrate/20210814160628_create_cats_core_receipt_transactions.rb +3 -3
  37. data/lib/cats/core/version.rb +1 -1
  38. data/spec/factories/cats/core/dispatch_authorizations.rb +26 -0
  39. data/spec/factories/cats/core/dispatch_plan_items.rb +1 -0
  40. data/spec/factories/cats/core/dispatch_transactions.rb +2 -7
  41. data/spec/factories/cats/core/dispatches.rb +38 -3
  42. data/spec/factories/cats/core/lost_commodities.rb +1 -2
  43. data/spec/factories/cats/core/receipt_authorizations.rb +25 -0
  44. data/spec/factories/cats/core/receipt_transactions.rb +2 -22
  45. data/spec/factories/cats/core/receipts.rb +2 -9
  46. data/spec/factories/cats/core/stacks.rb +1 -1
  47. metadata +15 -4
  48. data/app/services/cats/core/receipt_service.rb +0 -48
  49. data/db/migrate/20210727074646_create_cats_core_receipts.rb +0 -20
@@ -12,41 +12,11 @@ module Cats
12
12
  validates :transaction_date, :quantity, :status, presence: true
13
13
  validates :quantity, numericality: { greater_than: 0 }
14
14
  validates :status, inclusion: { in: STATUSES }
15
- validate :validate_quantity, unless: :skip_quantity_validation
16
-
17
- def validate_quantity
18
- return unless quantity.present? && source.present? && dispatch.present?
19
-
20
- dispatched = self.class.joins(:source, :dispatch).where(
21
- source: { store_id: source.store_id },
22
- dispatch: { dispatch_plan_item_id: dispatch.dispatch_plan_item_id }
23
- ).sum(:quantity)
24
- dispatched -= quantity_was if quantity_was
25
-
26
- # Get quantity in hub authorization for source
27
- authorized = dispatch.dispatch_plan_item.hub_authorizations.where(store_id: source.store_id).sum(:quantity)
28
- available = authorized - dispatched
29
-
30
- errors.add(:quantity, "exceeds authorized quantity (Max = #{available}).") if quantity > available
31
- end
32
15
 
33
16
  def commit
34
17
  raise(NotImplementedError, 'Method should be implemented in child classes.')
35
18
  end
36
19
 
37
- def skip_quantity_validation
38
- # Quantity validation should be skipped if we are commiting transactions.
39
- (
40
- instance_of?(Cats::Core::DispatchTransaction) &&
41
- dispatch &&
42
- status == COMMITTED
43
- ) || (
44
- instance_of?(Cats::Core::ReceiptTransaction) &&
45
- receipt &&
46
- receipt.status == Cats::Core::Receipt::STACKING
47
- )
48
- end
49
-
50
20
  def set_status
51
21
  return unless new_record?
52
22
 
@@ -0,0 +1,8 @@
1
+ module Cats
2
+ module Core
3
+ class DispatchAuthorizationSerializer < ActiveModel::Serializer
4
+ attributes :id, :dispatch_id, :dispatch_reference_no, :store_id, :store_name, :quantity, :authorized_by_id,
5
+ :authorizer_full_name, :dispatch_status, :plate_no, :driver_name
6
+ end
7
+ end
8
+ end
@@ -1,7 +1,7 @@
1
1
  module Cats
2
2
  module Core
3
3
  class DispatchPlanItemSerializer < ActiveModel::Serializer
4
- attributes :id, :dispatch_plan_id, :plan_reference_no, :source_id, :source_name, :destination_id,
4
+ attributes :id, :reference_no, :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
6
  :status, :commodity_id, :commodity_name, :commodity_batch_no
7
7
  end
@@ -1,8 +1,7 @@
1
1
  module Cats
2
2
  module Core
3
3
  class DispatchTransactionSerializer < ActiveModel::Serializer
4
- attributes :id, :source_id, :source_code, :dispatch_id, :dispatch_reference_no, :quantity,
5
- :transaction_date, :status
4
+ attributes :id, :source_id, :source_code, :dispatch_authorization_id, :quantity, :transaction_date, :status
6
5
  end
7
6
  end
8
7
  end
@@ -1,7 +1,7 @@
1
1
  module Cats
2
2
  module Core
3
3
  class LostCommoditySerializer < ActiveModel::Serializer
4
- attributes :id, :dispatch_id, :quantity, :commodity_status, :remark
4
+ attributes :id, :receipt_authorization_id, :quantity, :remark
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,8 @@
1
+ module Cats
2
+ module Core
3
+ class ReceiptAuthorizationSerializer < ActiveModel::Serializer
4
+ attributes :id, :dispatch_id, :dispatch_reference_no, :store_id, :store_name, :quantity, :received_quantity,
5
+ :remark, :status, :authorized_by_id, :authorizer_full_name
6
+ end
7
+ end
8
+ end
@@ -1,8 +1,7 @@
1
1
  module Cats
2
2
  module Core
3
3
  class ReceiptSerializer < ActiveModel::Serializer
4
- attributes :id, :dispatch_id, :dispatch_reference_no, :commodity_status, :quantity, :status, :remark,
5
- :prepared_by_id, :prepared_by_email
4
+ attributes :id, :receipt_authorization_id, :commodity_status, :quantity, :remark
6
5
  end
7
6
  end
8
7
  end
@@ -1,12 +1,8 @@
1
1
  module Cats
2
2
  module Core
3
3
  class ReceiptTransactionSerializer < ActiveModel::Serializer
4
- attributes :id, :receipt_id, :dispatch_reference, :destination_id, :destination_code, :quantity,
4
+ attributes :id, :receipt_authorization_id, :dispatch_reference_no, :destination_id, :destination_code, :quantity,
5
5
  :transaction_date, :status
6
-
7
- def dispatch_reference
8
- object.receipt.dispatch.reference_no
9
- end
10
6
  end
11
7
  end
12
8
  end
@@ -0,0 +1,25 @@
1
+ module Cats
2
+ module Core
3
+ class AuthorizationService
4
+ # A method to confirm a dispatch authorization. This method
5
+ # also checks if all authorizations under a dispatch are confirmed
6
+ # and if so it sets the dispatch status to READY_TO_START.
7
+ def confirm(id)
8
+ authorization = DispatchAuthorization.find(id)
9
+
10
+ ActiveRecord::Base.transaction do
11
+ authorization.confirm
12
+
13
+ # Check if all authorizations under the dispatch are confirmed.
14
+ dispatch = authorization.dispatch
15
+ if dispatch.all_authorizations_confirmed?
16
+ dispatch.quantity = dispatch.dispatch_transactions.sum(:quantity)
17
+ dispatch.dispatch_status = Dispatch::READY_TO_START
18
+ dispatch.save!
19
+ end
20
+ end
21
+ authorization
22
+ end
23
+ end
24
+ end
25
+ end
data/config/routes.rb CHANGED
@@ -96,12 +96,13 @@ Cats::Core::Engine.routes.draw do
96
96
  post '/dispatch_plan_items/filter', controller: :dispatch_plan_items, action: :filter
97
97
  get '/dispatch_plan_items/:id/dispatches', controller: :dispatches, action: :index, as: :dispatches_plan_item
98
98
 
99
+ post '/dispatches/filter', controller: :dispatches, action: :filter
99
100
  get '/dispatches/search', controller: :dispatches, action: :search, as: :search_dispatches
100
101
  resources :dispatches, except: %i[index destroy] do
101
102
  member do
102
- get 'transactions', controller: :dispatch_transactions, action: :index
103
+ get 'dispatch_authorizations', controller: :dispatch_authorizations, action: :index
104
+ get 'receipt_authorizations', controller: :receipt_authorizations, action: :index
103
105
  get 'receipts', controller: :receipts, action: :index
104
- get 'lost', controller: :lost_commodities, action: :index
105
106
  get 'commodity'
106
107
  post 'approve'
107
108
  post 'start'
@@ -109,6 +110,29 @@ Cats::Core::Engine.routes.draw do
109
110
  end
110
111
  end
111
112
 
113
+ resources :dispatch_authorizations, except: %i[index destory] do
114
+ member do
115
+ get 'transactions', controller: :dispatch_transactions, action: :index
116
+ post 'confirm', controller: :dispatch_authorizations, action: :confirm
117
+ end
118
+ end
119
+
120
+ get(
121
+ '/storekeeper/:id/authorizations',
122
+ controller: :dispatch_authorizations,
123
+ action: :storekeeper_authorizations,
124
+ as: :storekeeper_authorizations
125
+ )
126
+ resources :receipt_authorizations, except: %i[index destroy] do
127
+ member do
128
+ get 'transactions', controller: :receipt_transactions, action: :index
129
+ get 'lost', controller: :lost_commodities, action: :index
130
+ get 'receipts', controller: :receipts, action: :index
131
+ post 'confirm', controller: :receipt_authorizations, action: :confirm
132
+ end
133
+ end
134
+
135
+ resources :receipts, except: %i[index destroy]
112
136
  post(
113
137
  'dispatch_transactions/allocation',
114
138
  controller: :dispatch_transactions,
@@ -116,13 +140,6 @@ Cats::Core::Engine.routes.draw do
116
140
  as: :allocation_transaction
117
141
  )
118
142
  resources :dispatch_transactions, except: %i[index new edit destroy]
119
- resources :receipts, except: %i[index new edit destroy] do
120
- member do
121
- get 'transactions', controller: :receipt_transactions, action: :index
122
- post 'start_stacking'
123
- post 'finish_stacking'
124
- end
125
- end
126
143
  resources :receipt_transactions, except: %i[index new edit destroy]
127
144
  resources :lost_commodities, except: %i[index destroy]
128
145
  get '/plans/:id/round_plans', controller: :round_plans, action: :index, as: :round_plans_plan
@@ -1,6 +1,7 @@
1
1
  class CreateCatsCoreDispatchPlanItems < ActiveRecord::Migration[6.1]
2
2
  def change
3
3
  create_table :cats_core_dispatch_plan_items do |t|
4
+ t.string :reference_no, null: false, unique: true
4
5
  t.references :dispatch_plan,
5
6
  null: false,
6
7
  index: { name: 'dpi_on_dp_indx' },
@@ -14,6 +14,10 @@ class CreateCatsCoreDispatches < ActiveRecord::Migration[6.1]
14
14
  t.string :driver_name, null: false
15
15
  t.string :driver_phone, null: false
16
16
  t.float :quantity, null: false, default: 0
17
+ t.references :unit,
18
+ null: false,
19
+ index: { name: 'unit_on_dispatches_indx' },
20
+ foreign_key: { to_table: :cats_core_unit_of_measures }
17
21
  t.string :commodity_status, null: false, default: 'Good'
18
22
  t.string :remark
19
23
  t.references :prepared_by,
@@ -0,0 +1,22 @@
1
+ class CreateCatsCoreDispatchAuthorizations < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :cats_core_dispatch_authorizations do |t|
4
+ t.references :dispatch,
5
+ null: false,
6
+ index: { name: 'dispatch_on_da_indx' },
7
+ foreign_key: { to_table: :cats_core_dispatches }
8
+ t.references :store,
9
+ null: false,
10
+ index: { name: 'store_on_da_indx' },
11
+ foreign_key: { to_table: :cats_core_stores }
12
+ t.float :quantity, null: false
13
+ t.string :status, null: false, default: 'Authorized'
14
+ t.references :authorized_by,
15
+ null: false,
16
+ index: { name: 'ab_on_da_indx' },
17
+ foreign_key: { to_table: :cats_core_users }
18
+
19
+ t.timestamps
20
+ end
21
+ end
22
+ end
@@ -5,15 +5,21 @@ class CreateCatsCoreDispatchTransactions < ActiveRecord::Migration[6.1]
5
5
  null: false,
6
6
  index: { name: 'stack_on_dt_indx' },
7
7
  foreign_key: { to_table: :cats_core_stacks }
8
- t.references :dispatch,
8
+ t.references :dispatch_authorization,
9
9
  null: false,
10
- index: { name: 'dispatch_on_dt_indx' },
11
- foreign_key: { to_table: :cats_core_dispatches }
10
+ index: { name: 'da_on_dt_indx' },
11
+ foreign_key: { to_table: :cats_core_dispatch_authorizations }
12
12
  t.date :transaction_date, null: false
13
13
  t.float :quantity, null: false
14
14
  t.string :status, null: false, default: 'Draft'
15
15
 
16
16
  t.timestamps
17
17
  end
18
+ add_index(
19
+ :cats_core_dispatch_transactions,
20
+ [:source_id, :dispatch_authorization_id],
21
+ unique: true,
22
+ name: 'sda_on_dt_uniq_indx'
23
+ )
18
24
  end
19
25
  end
@@ -0,0 +1,24 @@
1
+ class CreateCatsCoreReceiptAuthorizations < ActiveRecord::Migration[6.1]
2
+ def change
3
+ create_table :cats_core_receipt_authorizations do |t|
4
+ t.references :dispatch,
5
+ null: false,
6
+ index: { name: 'dispatch_on_receipt_authorizations_indx' },
7
+ foreign_key: { to_table: :cats_core_dispatches }
8
+ t.references :store,
9
+ null: false,
10
+ index: { name: 'store_on_ra_indx' },
11
+ foreign_key: { to_table: :cats_core_stores }
12
+ t.float :quantity, null: false
13
+ t.float :received_quantity, null: false, default: 0
14
+ t.string :status, null: false, default: 'Authorized'
15
+ t.string :remark
16
+ t.references :authorized_by,
17
+ null: false,
18
+ index: { name: 'ab_on_receipt_authorizations_indx' },
19
+ foreign_key: { to_table: :cats_core_users }
20
+
21
+ t.timestamps
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,15 @@
1
+ class CreateCatsCoreReceipts < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :cats_core_receipts do |t|
4
+ t.references :receipt_authorization,
5
+ null: false,
6
+ index: { name: 'ra_on_receipts_indx' },
7
+ foreign_key: { to_table: :cats_core_receipt_authorizations }
8
+ t.string :commodity_status, null: false
9
+ t.float :quantity, null: false
10
+ t.string :remark
11
+
12
+ t.timestamps
13
+ end
14
+ end
15
+ end
@@ -1,12 +1,11 @@
1
1
  class CreateCatsCoreLostCommodities < ActiveRecord::Migration[7.0]
2
2
  def change
3
3
  create_table :cats_core_lost_commodities do |t|
4
- t.references :dispatch,
4
+ t.references :receipt_authorization,
5
5
  null: false,
6
- index: { name: 'lc_on_dispatch_indx' },
7
- foreign_key: { to_table: :cats_core_dispatches }
6
+ index: { name: 'ra_on_lc_indx' },
7
+ foreign_key: { to_table: :cats_core_receipt_authorizations }
8
8
  t.float :quantity, null: false
9
- t.string :commodity_status, null: false
10
9
  t.string :remark
11
10
 
12
11
  t.timestamps
@@ -1,10 +1,10 @@
1
1
  class CreateCatsCoreReceiptTransactions < ActiveRecord::Migration[6.1]
2
2
  def change
3
3
  create_table :cats_core_receipt_transactions do |t|
4
- t.references :receipt,
4
+ t.references :receipt_authorization,
5
5
  null: false,
6
- index: { name: 'receipt_on_rt_indx' },
7
- foreign_key: { to_table: :cats_core_receipts }
6
+ index: { name: 'receipt_authorization_on_rt_indx' },
7
+ foreign_key: { to_table: :cats_core_receipt_authorizations }
8
8
  t.references :destination,
9
9
  null: false,
10
10
  index: { name: 'stack_on_rt_indx' },
@@ -1,5 +1,5 @@
1
1
  module Cats
2
2
  module Core
3
- VERSION = '1.4.21'.freeze
3
+ VERSION = '1.4.24'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,26 @@
1
+ FactoryBot.define do
2
+ factory :dispatch_authorization, class: 'Cats::Core::DispatchAuthorization' do
3
+ transient do
4
+ s { create(:store) }
5
+ stack { create(:stack, quantity: 100, store: s) }
6
+ end
7
+ dispatch
8
+ store { s }
9
+ quantity { 100 }
10
+ status { Cats::Core::ReceiptAuthorization::AUTHORIZED }
11
+ authorized_by factory: :user
12
+
13
+ trait :approved do
14
+ after(:create) do |obj|
15
+ obj.dispatch.approve
16
+ end
17
+ end
18
+
19
+ trait :with_transaction do
20
+ after(:create) do |obj, options|
21
+ obj.dispatch.approve
22
+ create(:dispatch_transaction, dispatch_authorization: obj, source: options.stack, quantity: 100)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,5 +1,6 @@
1
1
  FactoryBot.define do
2
2
  factory :dispatch_plan_item, class: 'Cats::Core::DispatchPlanItem' do
3
+ reference_no { FFaker::Name.name }
3
4
  source factory: :location
4
5
  destination factory: :location
5
6
  dispatch_plan
@@ -4,14 +4,9 @@ FactoryBot.define do
4
4
  stack { create(:stack) }
5
5
  end
6
6
  source { stack }
7
- dispatch do
8
- plan_item = create(:dispatch_plan_item, quantity: 100)
9
- plan_item.dispatch_plan.approve
10
- create(:hub_authorization, dispatch_plan_item: plan_item, quantity: 100, store: stack.store)
11
- create(:dispatch, dispatch_plan_item: plan_item, transaction?: false)
12
- end
7
+ association :dispatch_authorization, :approved
13
8
  transaction_date { Date.today }
14
- quantity { 10 }
9
+ quantity { 100 }
15
10
  status { Cats::Core::Transaction::DRAFT }
16
11
  end
17
12
  end
@@ -2,7 +2,6 @@ FactoryBot.define do
2
2
  factory :dispatch, class: 'Cats::Core::Dispatch' do
3
3
  transient do
4
4
  stack { create(:stack, quantity: 100) }
5
- transaction? { true }
6
5
  end
7
6
  reference_no { FFaker::Name.name }
8
7
  dispatch_plan_item do
@@ -11,6 +10,7 @@ FactoryBot.define do
11
10
  create(:hub_authorization, dispatch_plan_item: plan_item, quantity: 100, store: stack.store)
12
11
  plan_item
13
12
  end
13
+ unit factory: :unit_of_measure
14
14
  transporter
15
15
  plate_no { FFaker::Name.name }
16
16
  driver_name { FFaker::Name.name }
@@ -19,8 +19,43 @@ FactoryBot.define do
19
19
  prepared_by factory: :user
20
20
  dispatch_status { Cats::Core::Dispatch::DRAFT }
21
21
 
22
- after :create do |dispatch, options|
23
- create(:dispatch_transaction, dispatch: dispatch, source: options.stack, quantity: 100) if options.transaction?
22
+ trait :with_authorization do
23
+ after(:create) do |dispatch, options|
24
+ create(:dispatch_authorization, dispatch: dispatch, store: options.stack.store)
25
+ end
26
+ end
27
+
28
+ trait :with_transaction do
29
+ after(:create) do |dispatch, options|
30
+ authorization = create(:dispatch_authorization, dispatch: dispatch, store: options.stack.store)
31
+ dispatch.approve
32
+ create(:dispatch_transaction, dispatch_authorization: authorization, source: options.stack, quantity: 100)
33
+ end
34
+ end
35
+
36
+ trait :ready_to_start do
37
+ after(:create) do |dispatch, options|
38
+ authorization = create(:dispatch_authorization, dispatch: dispatch, store: options.stack.store)
39
+ dispatch.approve
40
+ create(:dispatch_transaction, dispatch_authorization: authorization, source: options.stack, quantity: 100)
41
+ authorization.confirm
42
+ dispatch.quantity = 100
43
+ dispatch.dispatch_status = Cats::Core::Dispatch::READY_TO_START
44
+ dispatch.save!
45
+ end
46
+ end
47
+
48
+ trait :started do
49
+ after(:create) do |dispatch, options|
50
+ authorization = create(:dispatch_authorization, dispatch: dispatch, store: options.stack.store)
51
+ dispatch.approve
52
+ create(:dispatch_transaction, dispatch_authorization: authorization, source: options.stack, quantity: 100)
53
+ authorization.confirm
54
+ dispatch.quantity = 100
55
+ dispatch.dispatch_status = Cats::Core::Dispatch::READY_TO_START
56
+ dispatch.save!
57
+ dispatch.start
58
+ end
24
59
  end
25
60
  end
26
61
  end
@@ -1,8 +1,7 @@
1
1
  FactoryBot.define do
2
2
  factory :lost_commodity, class: 'Cats::Core::LostCommodity' do
3
- dispatch
3
+ receipt_authorization
4
4
  quantity { 100 }
5
- commodity_status { Cats::Core::Commodity::DAMAGED }
6
5
  remark { FFaker::Name.name }
7
6
  end
8
7
  end
@@ -0,0 +1,25 @@
1
+ FactoryBot.define do
2
+ factory :receipt_authorization, class: 'Cats::Core::ReceiptAuthorization' do
3
+ association :dispatch, :started
4
+ store
5
+ quantity { 100 }
6
+ received_quantity { 0 }
7
+ remark { FFaker::Name.name }
8
+ status { Cats::Core::ReceiptAuthorization::AUTHORIZED }
9
+ authorized_by factory: :user
10
+
11
+ trait :with_receipt do
12
+ after(:create) do |authorization|
13
+ create(:receipt, receipt_authorization: authorization, quantity: 100)
14
+ end
15
+ end
16
+
17
+ trait :confirmed do
18
+ after(:create) do |authorization|
19
+ create(:receipt, receipt_authorization: authorization, quantity: 100)
20
+ authorization.status = Cats::Core::Authorization::CONFIRMED
21
+ authorization.save!
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,27 +1,7 @@
1
1
  FactoryBot.define do
2
2
  factory :receipt_transaction, class: 'Cats::Core::ReceiptTransaction' do
3
- transient do
4
- dispatch { create(:dispatch) }
5
- end
6
- transient do
7
- stack { create(:stack) }
8
- end
9
-
10
- destination { stack }
11
- receipt do
12
- dispatch.approve
13
- dispatch.start
14
- receipt = create(:receipt, dispatch: dispatch)
15
- dispatch.confirm
16
- create(
17
- :hub_authorization,
18
- authorization_type: Cats::Core::HubAuthorization::DESTINATION,
19
- dispatch_plan_item: dispatch.dispatch_plan_item,
20
- store: stack.store,
21
- quantity: 100
22
- )
23
- receipt
24
- end
3
+ association :receipt_authorization, :confirmed
4
+ destination factory: :stack
25
5
  transaction_date { Date.today }
26
6
  quantity { 100 }
27
7
  status { Cats::Core::Transaction::DRAFT }
@@ -1,15 +1,8 @@
1
1
  FactoryBot.define do
2
2
  factory :receipt, class: 'Cats::Core::Receipt' do
3
- dispatch do
4
- dispatch = create(:dispatch)
5
- dispatch.approve
6
- dispatch.start
7
- dispatch
8
- end
9
- quantity { 100 }
3
+ receipt_authorization
10
4
  commodity_status { Cats::Core::Commodity::GOOD }
11
- status { Cats::Core::Receipt::DRAFT }
5
+ quantity { 50 }
12
6
  remark { FFaker::Name.name }
13
- prepared_by factory: :user
14
7
  end
15
8
  end
@@ -10,6 +10,6 @@ FactoryBot.define do
10
10
  store
11
11
  commodity_status { Cats::Core::Commodity::GOOD }
12
12
  stack_status { Cats::Core::Stack::RESERVED }
13
- quantity { 50 }
13
+ quantity { 100 }
14
14
  end
15
15
  end