cats_core 1.5.22 → 1.5.24

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: 3f009c7cb5782eac61ebe0e03b07db78fd40bfd88bdbe690b047bd3abf5ab3d6
4
- data.tar.gz: 9985511c1fd14c0e3dc5d9764a2bd7842fc556c916f3d0b0ef629d5d6bc9f617
3
+ metadata.gz: e90178cd66acd3f96313a3663036ba07bbf157e092e672adc393d840f701cfde
4
+ data.tar.gz: 7236c8485554e65bc5058bc600bfe25b38465b5d760823c3e96aec29c37ae951
5
5
  SHA512:
6
- metadata.gz: 663bc3e411d28fab8c1bfa5a18d5932aa81a4968f47602813382dd7e5082ba0e40d726de954427b0fb27b402900bbb8e12f86a1196c3e9ab726da91c860f5822
7
- data.tar.gz: f532090a4b59dcecbe2b122bc3b941df3be5e5e64e2c6208569f4d7f181ba3feaa0e0c251e517878d0dd26a344aa7375f5307ed24fdc802d3426c31058f98cc0
6
+ metadata.gz: 80fff7d2dae7ed8e2d0fe77339bc0dbcd433d1fba6be6083e0c1e3b118c222912a957c0eee129908016a1fd7b25b1f4c4c931b8ef632fe12943d5b5facd620ce
7
+ data.tar.gz: '0765604991129318a519ad3960f32a43582f561492972264b027dda9846d87c1255c3009743a3f493386abda67ca9c373184f1d809b06ce5109017a1b96a6da4'
@@ -76,6 +76,13 @@ module Cats
76
76
  render json: {success: true, data: serialize(data)}
77
77
  end
78
78
 
79
+ def revert
80
+ data = set_object.revert
81
+ render json: {success: true, data: serialize(data)}
82
+ rescue StandardError => e
83
+ render json: {success: false, error: e.message}
84
+ end
85
+
79
86
  private
80
87
 
81
88
  def set_service
@@ -15,6 +15,12 @@ module Cats
15
15
  render json: {success: true, data: serialize(query.result)}
16
16
  end
17
17
 
18
+ def commit
19
+ transaction = set_object
20
+ transaction.commit
21
+ render json: {success: true, data: serialize(transaction)}
22
+ end
23
+
18
24
  private
19
25
 
20
26
  def model_params
@@ -54,6 +54,14 @@ module Cats
54
54
  save!
55
55
  end
56
56
 
57
+ def revert
58
+ raise(StandardError, "Dispatch has to be in approved state.") unless dispatch_status == Dispatch::APPROVED
59
+
60
+ self.dispatch_status = DRAFT
61
+ self.quantity = 0
62
+ save!
63
+ end
64
+
57
65
  def all_authorizations_confirmed?
58
66
  statuses = dispatch_authorizations.map(&:status).uniq
59
67
  return true if statuses.length == 1 && statuses[0] == Authorization::CONFIRMED
@@ -36,7 +36,7 @@ module Cats
36
36
  return
37
37
  end
38
38
  stack_quantity = stacks.map { |s| UnitConversion.convert(s.unit, unit, s.quantity) }.sum
39
- authorizations = DispatchAuthorization.where(dispatch: dispatch)
39
+ authorizations = DispatchAuthorization.where(dispatch: dispatch, store: store)
40
40
  authorized = authorizations.map { |a| UnitConversion.convert(a.unit, unit, a.quantity) }.sum
41
41
  authorized -= quantity_was if persisted?
42
42
 
@@ -5,6 +5,8 @@ module Cats
5
5
  belongs_to :destination, class_name: "Cats::Core::Stack"
6
6
  belongs_to :unit, class_name: "Cats::Core::UnitOfMeasure"
7
7
 
8
+ validate :validate_commodity
9
+
8
10
  def validate_quantity
9
11
  return unless quantity.present? && source.present?
10
12
 
@@ -15,6 +17,25 @@ module Cats
15
17
 
16
18
  errors.add(:quantity, "total is higher than source quantity (Max = #{available}).") if quantity > available
17
19
  end
20
+
21
+ def validate_commodity
22
+ return unless source && destination
23
+
24
+ return if source.commodity.batch_no == destination.commodity.batch_no
25
+
26
+ errors.add(:commodity, "batch number should be the same.")
27
+ end
28
+
29
+ def commit
30
+ StackTransaction.transaction do
31
+ source.quantity -= UnitConversion.convert(unit, source.unit, quantity)
32
+ source.save!
33
+ destination.quantity += UnitConversion.convert(unit, destination.unit, quantity)
34
+ destination.save!
35
+ self.status = COMMITTED
36
+ save!
37
+ end
38
+ end
18
39
  end
19
40
  end
20
41
  end
@@ -14,6 +14,7 @@ module Cats
14
14
  Commodity with the following details has been dispatched to you:
15
15
  Authorization no. = #{dispatch.dispatch_plan_item.reference_no}
16
16
  Dispatch Ref. = #{dispatch.reference_no}
17
+ Shipping Ref. = #{commodity.shipping_reference}
17
18
  Batch No. = #{commodity.batch_no}
18
19
  Commodity = #{commodity.name}
19
20
  Allocated Quantity = #{dispatch.dispatch_plan_item.quantity}
data/config/routes.rb CHANGED
@@ -122,6 +122,7 @@ Cats::Core::Engine.routes.draw do
122
122
  get "receipts", controller: :receipts, action: :index
123
123
  get "commodity"
124
124
  post "approve"
125
+ post "revert"
125
126
  post "start"
126
127
  post "confirm"
127
128
  post "start_with_pin"
@@ -192,7 +193,11 @@ Cats::Core::Engine.routes.draw do
192
193
  resources :dispatch_transactions, except: %i[index new edit destroy]
193
194
  post "/receipt_transactions/filter", controller: :receipt_transactions, action: :filter
194
195
  resources :receipt_transactions, except: %i[index new edit destroy]
195
- resources :stack_transactions, except: %i[index new edit destroy]
196
+ resources :stack_transactions, except: %i[index new edit destroy] do
197
+ member do
198
+ post "commit"
199
+ end
200
+ end
196
201
  resources :lost_commodities, except: %i[index destroy]
197
202
  get "/plans/:id/round_plans", controller: :round_plans, action: :index, as: :round_plans_plan
198
203
 
@@ -1,5 +1,5 @@
1
1
  module Cats
2
2
  module Core
3
- VERSION = "1.5.22".freeze
3
+ VERSION = "1.5.24".freeze
4
4
  end
5
5
  end
@@ -1,10 +1,14 @@
1
1
  FactoryBot.define do
2
2
  factory :stack_transaction, class: "Cats::Core::StackTransaction" do
3
- source factory: :stack
4
- destination factory: :stack
3
+ transient do
4
+ unit_of_measure { create(:unit_of_measure) }
5
+ commodity { create(:commodity, unit: unit_of_measure) }
6
+ end
7
+ source { association :stack, commodity: commodity }
8
+ destination { association :stack, commodity: commodity }
5
9
  transaction_date { Date.today }
6
10
  quantity { 25 }
7
- unit { source.unit }
11
+ unit { unit_of_measure }
8
12
  status { Cats::Core::Transaction::DRAFT }
9
13
  end
10
14
  end
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.5.22
4
+ version: 1.5.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henock L.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-22 00:00:00.000000000 Z
11
+ date: 2023-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_model_serializers