cats_core 1.5.19 → 1.5.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/cats/core/commodities_controller.rb +3 -3
  3. data/app/controllers/cats/core/dispatch_authorizations_controller.rb +4 -4
  4. data/app/controllers/cats/core/dispatch_plan_items_controller.rb +1 -1
  5. data/app/controllers/cats/core/dispatch_plans_controller.rb +2 -2
  6. data/app/controllers/cats/core/dispatch_transactions_controller.rb +1 -1
  7. data/app/controllers/cats/core/dispatches_controller.rb +5 -5
  8. data/app/controllers/cats/core/loans_controller.rb +1 -1
  9. data/app/controllers/cats/core/purchase_orders_controller.rb +2 -2
  10. data/app/controllers/cats/core/receipt_authorizations_controller.rb +5 -5
  11. data/app/controllers/cats/core/receipt_transactions_controller.rb +2 -2
  12. data/app/controllers/cats/core/receipts_controller.rb +1 -1
  13. data/app/controllers/cats/core/roles_controller.rb +1 -1
  14. data/app/controllers/cats/core/round_beneficiaries_controller.rb +5 -5
  15. data/app/controllers/cats/core/round_plans_controller.rb +3 -3
  16. data/app/controllers/cats/core/stack_transactions_controller.rb +1 -1
  17. data/app/controllers/cats/core/stacks_controller.rb +2 -2
  18. data/app/controllers/cats/core/stores_controller.rb +1 -1
  19. data/app/controllers/cats/core/swaps_controller.rb +2 -2
  20. data/app/controllers/cats/core/users_controller.rb +1 -1
  21. data/app/controllers/concerns/cats/core/common.rb +15 -16
  22. data/app/models/cats/core/authorization.rb +1 -1
  23. data/app/models/cats/core/beneficiary_plan_item.rb +1 -1
  24. data/app/models/cats/core/commodity.rb +12 -12
  25. data/app/models/cats/core/commodity_substitution.rb +2 -2
  26. data/app/models/cats/core/dispatch.rb +16 -16
  27. data/app/models/cats/core/dispatch_authorization.rb +3 -3
  28. data/app/models/cats/core/dispatch_plan.rb +6 -6
  29. data/app/models/cats/core/dispatch_plan_item.rb +10 -10
  30. data/app/models/cats/core/dispatch_transaction.rb +8 -8
  31. data/app/models/cats/core/location.rb +2 -2
  32. data/app/models/cats/core/receipt_authorization.rb +2 -2
  33. data/app/models/cats/core/receipt_transaction.rb +2 -2
  34. data/app/models/cats/core/round_beneficiary.rb +4 -4
  35. data/app/models/cats/core/round_plan.rb +2 -2
  36. data/app/models/cats/core/round_plan_item.rb +2 -2
  37. data/app/models/cats/core/route.rb +2 -2
  38. data/app/models/cats/core/stack.rb +30 -30
  39. data/app/models/cats/core/stacking_rule.rb +2 -2
  40. data/app/models/cats/core/store.rb +21 -21
  41. data/app/models/cats/core/transporter.rb +2 -2
  42. data/app/models/cats/core/unit_conversion.rb +1 -3
  43. data/app/serializers/cats/core/cash_donation_serializer.rb +1 -1
  44. data/app/serializers/cats/core/commodity_donation_serializer.rb +2 -2
  45. data/app/serializers/cats/core/commodity_serializer.rb +2 -2
  46. data/app/serializers/cats/core/dispatch_authorization_serializer.rb +2 -2
  47. data/app/serializers/cats/core/dispatch_plan_item_serializer.rb +3 -3
  48. data/app/serializers/cats/core/dispatch_plan_serializer.rb +1 -1
  49. data/app/serializers/cats/core/dispatch_serializer.rb +2 -2
  50. data/app/serializers/cats/core/dispatch_transaction_serializer.rb +1 -1
  51. data/app/serializers/cats/core/loan_serializer.rb +1 -1
  52. data/app/serializers/cats/core/purchase_order_serializer.rb +2 -2
  53. data/app/serializers/cats/core/receipt_authorization_serializer.rb +2 -2
  54. data/app/serializers/cats/core/receipt_serializer.rb +1 -1
  55. data/app/serializers/cats/core/receipt_transaction_serializer.rb +2 -2
  56. data/app/serializers/cats/core/round_beneficiary_serializer.rb +1 -1
  57. data/app/serializers/cats/core/round_plan_serializer.rb +1 -1
  58. data/app/serializers/cats/core/stack_serializer.rb +1 -1
  59. data/app/serializers/cats/core/store_serializer.rb +1 -1
  60. data/app/serializers/cats/core/swap_serializer.rb +2 -2
  61. data/app/services/cats/core/authorization_service.rb +3 -9
  62. data/app/services/cats/core/beneficiary_service.rb +2 -2
  63. data/app/services/cats/core/dispatch_plan_service.rb +1 -1
  64. data/app/services/cats/core/dispatch_service.rb +18 -20
  65. data/app/services/cats/core/notification_service.rb +1 -1
  66. data/app/services/cats/core/round_plan_service.rb +4 -6
  67. data/app/services/cats/core/space_service.rb +6 -6
  68. data/app/services/cats/core/stack_service.rb +8 -8
  69. data/app/services/cats/core/user_service.rb +1 -1
  70. data/db/migrate/20210715114910_create_cats_core_users.rb +3 -3
  71. data/db/migrate/20210715120018_create_cats_core_roles.rb +11 -11
  72. data/db/migrate/20210715121244_create_cats_core_menus.rb +3 -3
  73. data/db/migrate/20210715122141_create_cats_core_menu_items.rb +3 -3
  74. data/db/migrate/20210715122423_create_cats_core_role_menus.rb +12 -12
  75. data/db/migrate/20210717031810_create_cats_core_plans.rb +3 -3
  76. data/db/migrate/20210717032024_create_cats_core_plan_items.rb +19 -19
  77. data/db/migrate/20210717032260_create_cats_core_beneficiary_categories.rb +3 -3
  78. data/db/migrate/20210717032270_create_cats_core_rations.rb +9 -9
  79. data/db/migrate/20210717032290_create_cats_core_beneficiary_plan_items.rb +7 -7
  80. data/db/migrate/20210717032295_create_cats_core_plan_item_details.rb +7 -7
  81. data/db/migrate/20210717032330_create_cats_core_commodity_donations.rb +12 -12
  82. data/db/migrate/20210717032408_create_cats_core_cash_donations.rb +6 -6
  83. data/db/migrate/20210717032602_create_cats_core_gift_certificates.rb +12 -12
  84. data/db/migrate/20210717032855_create_cats_core_purchase_orders.rb +12 -12
  85. data/db/migrate/20210717032927_create_cats_core_projects.rb +3 -3
  86. data/db/migrate/20210717033223_create_cats_core_commodities.rb +9 -9
  87. data/db/migrate/20210717140855_create_cats_core_stores.rb +3 -3
  88. data/db/migrate/20210717171101_create_cats_core_stacks.rb +9 -9
  89. data/db/migrate/20210718040129_create_cats_core_routes.rb +9 -9
  90. data/db/migrate/20210718042755_create_cats_core_rhn_requests.rb +6 -6
  91. data/db/migrate/20210718043328_create_cats_core_dispatch_plans.rb +6 -6
  92. data/db/migrate/20210718043401_create_cats_core_dispatch_plan_items.rb +15 -15
  93. data/db/migrate/20210718045516_create_cats_core_dispatches.rb +12 -12
  94. data/db/migrate/20210718055414_create_cats_core_dispatch_authorizations.rb +12 -12
  95. data/db/migrate/20210718202957_create_cats_core_dispatch_transactions.rb +10 -10
  96. data/db/migrate/20210727074646_create_cats_core_receipt_authorizations.rb +12 -12
  97. data/db/migrate/20210727105834_create_cats_core_receipts.rb +6 -6
  98. data/db/migrate/20210728041505_create_cats_core_lost_commodities.rb +6 -6
  99. data/db/migrate/20210814160628_create_cats_core_receipt_transactions.rb +9 -9
  100. data/db/migrate/20210814175406_create_cats_core_stack_transactions.rb +9 -9
  101. data/db/migrate/20211215114737_create_cats_core_transport_plans.rb +3 -3
  102. data/db/migrate/20211215114835_create_cats_core_transport_plan_items.rb +9 -9
  103. data/db/migrate/20211215121151_create_cats_core_transport_bids.rb +3 -3
  104. data/db/migrate/20211215124452_create_cats_core_transport_bid_items.rb +9 -9
  105. data/db/migrate/20211229160125_create_cats_core_transport_offers.rb +7 -7
  106. data/db/migrate/20211229160126_create_cats_core_offer_items.rb +6 -6
  107. data/db/migrate/20211229160127_create_cats_core_transport_contracts.rb +6 -6
  108. data/db/migrate/20211229160128_create_cats_core_contract_items.rb +9 -9
  109. data/db/migrate/20211229160129_create_cats_core_commodity_substitutions.rb +10 -10
  110. data/db/migrate/20220103152802_create_cats_core_tenderers.rb +6 -6
  111. data/db/migrate/20220107121752_create_cats_core_round_plans.rb +6 -6
  112. data/db/migrate/20220107122280_create_cats_core_round_rations.rb +12 -12
  113. data/db/migrate/20220107125025_create_cats_core_round_plan_items.rb +18 -18
  114. data/db/migrate/20220107126025_create_cats_core_beneficiary_round_plan_items.rb +7 -7
  115. data/db/migrate/20220107132433_create_cats_core_round_plan_item_details.rb +9 -9
  116. data/db/migrate/20220209083928_create_cats_core_hub_authorizations.rb +12 -12
  117. data/db/migrate/20220416143416_create_cats_core_unit_conversions.rb +7 -7
  118. data/db/migrate/20220417105839_create_cats_core_transport_requisitions.rb +12 -12
  119. data/db/migrate/20220417123835_create_cats_core_transport_requisition_items.rb +9 -9
  120. data/db/migrate/20220417151821_create_cats_core_transport_requisition_details.rb +6 -6
  121. data/db/migrate/20220506082329_create_cats_core_transport_orders.rb +9 -9
  122. data/db/migrate/20220506083042_create_cats_core_transport_order_items.rb +12 -12
  123. data/db/migrate/20220511082354_create_cats_core_beneficiaries.rb +6 -6
  124. data/db/migrate/20220626063501_create_cats_core_loans.rb +6 -6
  125. data/db/migrate/20220626063757_create_cats_core_swaps.rb +12 -12
  126. data/db/migrate/20220626132050_create_cats_core_round_beneficiaries.rb +12 -12
  127. data/db/migrate/20220923190857_create_cats_core_application_settings.rb +3 -3
  128. data/lib/cats/core/engine.rb +1 -3
  129. data/lib/cats/core/version.rb +1 -1
  130. data/spec/factories/cats/core/dispatch_authorizations.rb +1 -1
  131. data/spec/factories/cats/core/dispatch_plan_items.rb +1 -1
  132. data/spec/factories/cats/core/dispatches.rb +4 -4
  133. data/spec/factories/cats/core/round_plan_item_details.rb +1 -1
  134. metadata +41 -13
@@ -54,8 +54,8 @@ module Cats
54
54
  Store.find_by(code: "FDP-ST-#{code}")
55
55
  end
56
56
 
57
- def self.ransackable_attributes(auth_object = nil)
58
- ["code", "location_type", "name"]
57
+ def self.ransackable_attributes(_auth_object = nil)
58
+ %w[code location_type name]
59
59
  end
60
60
  end
61
61
  end
@@ -15,8 +15,8 @@ module Cats
15
15
  ValidationUtil.validate_quantity(self, "dispatch", authorizations, "dispatch")
16
16
  end
17
17
 
18
- def self.ransackable_attributes(auth_object = nil)
19
- ["authorized_by_id", "dispatch_id", "received_quantity", "quantity", "status", "store_id", "unit_id"]
18
+ def self.ransackable_attributes(_auth_object = nil)
19
+ %w[authorized_by_id dispatch_id received_quantity quantity status store_id unit_id]
20
20
  end
21
21
  end
22
22
  end
@@ -46,8 +46,8 @@ module Cats
46
46
  end
47
47
  end
48
48
 
49
- def self.ransackable_attributes(auth_object = nil)
50
- ["destination_id", "quantity", "receipt_authorization_id", "receipt_number", "status", "transaction_date", "unit_id"]
49
+ def self.ransackable_attributes(_auth_object = nil)
50
+ %w[destination_id quantity receipt_authorization_id receipt_number status transaction_date unit_id]
51
51
  end
52
52
  end
53
53
  end
@@ -12,12 +12,12 @@ module Cats
12
12
  delegate(:name, to: :commodity_category, prefix: true)
13
13
  delegate(:abbreviation, to: :unit, prefix: true)
14
14
 
15
- def self.ransackable_attributes(auth_object = nil)
16
- ["beneficiary_id", "commodity_category_id", "quantity", "received", "round_plan_item_id", "unit_id"]
15
+ def self.ransackable_attributes(_auth_object = nil)
16
+ %w[beneficiary_id commodity_category_id quantity received round_plan_item_id unit_id]
17
17
  end
18
18
 
19
- def self.ransackable_associations(auth_object = nil)
20
- ["beneficiary", "commodity_category", "round_plan_item", "unit"]
19
+ def self.ransackable_associations(_auth_object = nil)
20
+ %w[beneficiary commodity_category round_plan_item unit]
21
21
  end
22
22
  end
23
23
  end
@@ -72,8 +72,8 @@ module Cats
72
72
  errors.add(:region, "is not valid.") unless region.location_type == Location::REGION
73
73
  end
74
74
 
75
- def self.ransackable_attributes(auth_object = nil)
76
- ["plan_id", "reference_no", "region_id", "rounds", "status"]
75
+ def self.ransackable_attributes(_auth_object = nil)
76
+ %w[plan_id reference_no region_id rounds status]
77
77
  end
78
78
  end
79
79
  end
@@ -22,8 +22,8 @@ module Cats
22
22
  delegate(:name, to: :fdp, prefix: true)
23
23
  delegate(:name, to: :operator, prefix: true)
24
24
 
25
- def self.ransackable_attributes(auth_object = nil)
26
- ["fdp_id", "operator_id", "plan_item_id", "region_id", "round_plan_id", "woreda_id", "zone_id"]
25
+ def self.ransackable_attributes(_auth_object = nil)
26
+ %w[fdp_id operator_id plan_item_id region_id round_plan_id woreda_id zone_id]
27
27
  end
28
28
  end
29
29
  end
@@ -44,8 +44,8 @@ module Cats
44
44
  errors.add(:base, "Source and destination cannot be the same") if source == destination
45
45
  end
46
46
 
47
- def self.ransackable_attributes(auth_object = nil)
48
- ["destination_id", "name", "region_id", "source_id"]
47
+ def self.ransackable_attributes(_auth_object = nil)
48
+ %w[destination_id name region_id source_id]
49
49
  end
50
50
  end
51
51
  end
@@ -15,16 +15,16 @@ module Cats
15
15
  has_many :receipt_transactions, foreign_key: :destination_id
16
16
 
17
17
  validates :code, :length, :width, :height, :start_x, :start_y, :commodity_status, :stack_status,
18
- :quantity, presence: true
18
+ :quantity, presence: true
19
19
  validates :code, uniqueness: true
20
20
  validates :length, :width, :height, :start_x, :start_y, numericality: {greater_than: 0}
21
21
  validates :quantity, numericality: {greater_than_or_equal_to: 0}
22
22
  validates :commodity_status, inclusion: {in: Cats::Core::Commodity::COMMODITY_STATUSES}
23
23
  validates :stack_status, inclusion: {in: STACK_STATUSES}
24
24
  validate :validate_coordinates, :validate_dimensions, :validate_distance_from_wall, :validate_overlap,
25
- :validate_space_between_stack, :validate_max_height, :validate_max_length, :validate_max_width,
26
- :validate_distance_from_ceiling,
27
- unless: -> { store && (store.code == "SUP-STORE" || store.code.start_with?("FDP-ST")) }
25
+ :validate_space_between_stack, :validate_max_height, :validate_max_length, :validate_max_width,
26
+ :validate_distance_from_ceiling,
27
+ unless: -> { store && (store.code == "SUP-STORE" || store.code.start_with?("FDP-ST")) }
28
28
 
29
29
  delegate :batch_no, to: :commodity, prefix: true
30
30
  delegate :abbreviation, to: :unit, prefix: true
@@ -66,9 +66,9 @@ module Cats
66
66
 
67
67
  rule = stacking_rules
68
68
  if start_x < rule.distance_from_wall || store.length - (start_x + length) < rule.distance_from_wall ||
69
- store.width - (start_y + width) < rule.distance_from_wall || start_y < rule.distance_from_wall
69
+ store.width - (start_y + width) < rule.distance_from_wall || start_y < rule.distance_from_wall
70
70
  errors.add(:base,
71
- message: "The stack must be placed #{rule.distance_from_wall} meter away from a store wall")
71
+ message: "The stack must be placed #{rule.distance_from_wall} meter away from a store wall")
72
72
  end
73
73
  end
74
74
 
@@ -89,9 +89,9 @@ module Cats
89
89
  rule = stacking_rules
90
90
  new_stack = dup
91
91
  new_stack.assign_attributes(start_x: start_x - rule.space_between_stack,
92
- start_y: start_y - rule.space_between_stack,
93
- length: length + (2 * rule.space_between_stack),
94
- width: width + (2 * rule.space_between_stack))
92
+ start_y: start_y - rule.space_between_stack,
93
+ length: length + (2 * rule.space_between_stack),
94
+ width: width + (2 * rule.space_between_stack))
95
95
  stacks.each do |s|
96
96
  errors.add(:base, message: "#{code} overlaps with #{s.code}") if overlaps?(new_stack, s)
97
97
  end
@@ -140,10 +140,10 @@ module Cats
140
140
  return unless length_previously_changed? || width_previously_changed? || stack_status_previously_changed?
141
141
 
142
142
  old_area = if length_previously_was.nil? && width_previously_was.nil?
143
- 0
144
- else
145
- length_previously_was * width_previously_was
146
- end
143
+ 0
144
+ else
145
+ length_previously_was * width_previously_was
146
+ end
147
147
 
148
148
  store.available_space += old_area
149
149
  store.available_space -= length * width unless stack_status == DESTROYED
@@ -171,27 +171,27 @@ module Cats
171
171
  end
172
172
 
173
173
  def destroy_stack
174
- if stack_status == Cats::Core::Stack::RESERVED || quantity.zero?
175
- self.stack_status = Cats::Core::Stack::DESTROYED
176
- save!
177
- else
174
+ unless stack_status == Cats::Core::Stack::RESERVED || quantity.zero?
178
175
  raise(StandardError, "Stack has to be either RESERVED or with zero quantity to be destroyed.")
179
176
  end
177
+
178
+ self.stack_status = Cats::Core::Stack::DESTROYED
179
+ save!
180
180
  end
181
181
 
182
- def self.ransackable_attributes(auth_object = nil)
183
- [
184
- "commodity_id",
185
- "commodity_status",
186
- "height",
187
- "length",
188
- "quantity",
189
- "stack_status",
190
- "start_x",
191
- "start_y",
192
- "store_id",
193
- "unit_id",
194
- "width"
182
+ def self.ransackable_attributes(_auth_object = nil)
183
+ %w[
184
+ commodity_id
185
+ commodity_status
186
+ height
187
+ length
188
+ quantity
189
+ stack_status
190
+ start_x
191
+ start_y
192
+ store_id
193
+ unit_id
194
+ width
195
195
  ]
196
196
  end
197
197
  end
@@ -2,14 +2,14 @@ module Cats
2
2
  module Core
3
3
  class StackingRule < ApplicationRecord
4
4
  validates :distance_from_wall, :space_between_stack, :distance_from_ceiling, :maximum_height, :maximum_length,
5
- :maximum_width, :distance_from_gangway, presence: true, numericality: {greater_than: 0}
5
+ :maximum_width, :distance_from_gangway, presence: true, numericality: {greater_than: 0}
6
6
  validate :validate_only_a_record_exist
7
7
 
8
8
  def validate_only_a_record_exist
9
9
  return unless StackingRule.count > 1
10
10
 
11
11
  errors.add(:base,
12
- "There is already a stacking rule entry. A new rule can not be added")
12
+ "There is already a stacking rule entry. A new rule can not be added")
13
13
  end
14
14
  end
15
15
  end
@@ -9,10 +9,10 @@ module Cats
9
9
  validates :length, :width, :height, numericality: {greater_than: 0}
10
10
  validates :gangway_length, :gangway_width, :gangway_corner_dist, presence: true, if: :has_gangway?
11
11
  validates :gangway_length,
12
- :gangway_width,
13
- :gangway_corner_dist,
14
- numericality: {greater_than: 0},
15
- allow_nil: true
12
+ :gangway_width,
13
+ :gangway_corner_dist,
14
+ numericality: {greater_than: 0},
15
+ allow_nil: true
16
16
  validate :validate_location
17
17
 
18
18
  before_create :update_usable_space
@@ -29,26 +29,26 @@ module Cats
29
29
  self.available_space = self.usable_space
30
30
  end
31
31
 
32
- def self.ransackable_attributes(auth_object = nil)
33
- [
34
- "available_space",
35
- "code",
36
- "gangway_corner_dist",
37
- "gangway_length",
38
- "gangway_width",
39
- "has_gangway",
40
- "height",
41
- "length",
42
- "name",
43
- "temporary",
44
- "usable_space",
45
- "warehouse_id",
46
- "width"
32
+ def self.ransackable_attributes(_auth_object = nil)
33
+ %w[
34
+ available_space
35
+ code
36
+ gangway_corner_dist
37
+ gangway_length
38
+ gangway_width
39
+ has_gangway
40
+ height
41
+ length
42
+ name
43
+ temporary
44
+ usable_space
45
+ warehouse_id
46
+ width
47
47
  ]
48
48
  end
49
49
 
50
- def self.ransackable_associations(auth_object = nil)
51
- ["stacks", "warehouse"]
50
+ def self.ransackable_associations(_auth_object = nil)
51
+ %w[stacks warehouse]
52
52
  end
53
53
  end
54
54
  end
@@ -4,8 +4,8 @@ module Cats
4
4
  validates :code, :name, :address, :contact_phone, presence: true
5
5
  validates :code, uniqueness: true
6
6
 
7
- def self.ransackable_attributes(auth_object = nil)
8
- ["address", "code", "contact_phone", "name"]
7
+ def self.ransackable_attributes(_auth_object = nil)
8
+ %w[address code contact_phone name]
9
9
  end
10
10
  end
11
11
  end
@@ -19,9 +19,7 @@ module Cats
19
19
 
20
20
  # Check if there is reverse conversion entry defined
21
21
  conversion = find_by(from: to, to: from)
22
- unless conversion
23
- raise(StandardError, "Conversion factor between #{from.abbreviation} and #{to.abbreviation} not found.")
24
- end
22
+ raise(StandardError, "Conversion factor between #{from.abbreviation} and #{to.abbreviation} not found.") unless conversion
25
23
 
26
24
  (value / conversion.factor).round(2)
27
25
  end
@@ -2,7 +2,7 @@ module Cats
2
2
  module Core
3
3
  class CashDonationSerializer < ActiveModel::Serializer
4
4
  attributes :id, :reference_no, :description, :donated_on, :donor_id, :donor_name, :amount, :currency_id,
5
- :currency_code
5
+ :currency_code
6
6
  end
7
7
  end
8
8
  end
@@ -2,8 +2,8 @@ module Cats
2
2
  module Core
3
3
  class CommodityDonationSerializer < ActiveModel::Serializer
4
4
  attributes :id, :reference_no, :donated_on, :donor_id, :donor_name, :plan_id, :plan_reference_no,
5
- :quantity, :unit_id, :unit_abbreviation, :description, :commodity_category_id,
6
- :commodity_category_name, :shipping_reference
5
+ :quantity, :unit_id, :unit_abbreviation, :description, :commodity_category_id,
6
+ :commodity_category_name, :shipping_reference
7
7
  end
8
8
  end
9
9
  end
@@ -2,8 +2,8 @@ module Cats
2
2
  module Core
3
3
  class CommoditySerializer < ActiveModel::Serializer
4
4
  attributes :id, :name, :batch_no, :description, :unit_of_measure_id, :unit_abbreviation, :project_id,
5
- :project_code, :quantity, :best_use_before, :volume_per_metric_ton, :arrival_status, :status,
6
- :shipping_reference, :commodity_grade, :package_unit_id, :package_unit_abbreviation
5
+ :project_code, :quantity, :best_use_before, :volume_per_metric_ton, :arrival_status, :status,
6
+ :shipping_reference, :commodity_grade, :package_unit_id, :package_unit_abbreviation
7
7
  end
8
8
  end
9
9
  end
@@ -2,8 +2,8 @@ module Cats
2
2
  module Core
3
3
  class DispatchAuthorizationSerializer < ActiveModel::Serializer
4
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, :status, :unit_id,
6
- :unit_abbreviation
5
+ :authorizer_full_name, :dispatch_status, :plate_no, :driver_name, :status, :unit_id,
6
+ :unit_abbreviation
7
7
  end
8
8
  end
9
9
  end
@@ -2,9 +2,9 @@ module Cats
2
2
  module Core
3
3
  class DispatchPlanItemSerializer < ActiveModel::Serializer
4
4
  attributes :id, :reference_no, :dispatch_plan_id, :plan_reference_no, :source_id, :source_name, :destination_id,
5
- :destination_name, :quantity, :source_location_type, :destination_location_type, :commodity_status,
6
- :status, :commodity_id, :commodity_name, :commodity_batch_no, :unit_abbreviation,
7
- :commodity_shipping_reference, :unit_id
5
+ :destination_name, :quantity, :source_location_type, :destination_location_type, :commodity_status,
6
+ :status, :commodity_id, :commodity_name, :commodity_batch_no, :unit_abbreviation,
7
+ :commodity_shipping_reference, :unit_id
8
8
  end
9
9
  end
10
10
  end
@@ -2,7 +2,7 @@ module Cats
2
2
  module Core
3
3
  class DispatchPlanSerializer < ActiveModel::Serializer
4
4
  attributes :id, :reference_no, :status, :dispatchable_id, :dispatchable_type, :request_reference,
5
- :request_quantity, :upstream
5
+ :request_quantity, :upstream
6
6
  end
7
7
  end
8
8
  end
@@ -2,8 +2,8 @@ module Cats
2
2
  module Core
3
3
  class DispatchSerializer < ActiveModel::Serializer
4
4
  attributes :id, :reference_no, :dispatch_plan_item_id, :transporter_id, :transporter_name, :plate_no,
5
- :driver_name, :driver_phone, :quantity, :remark, :prepared_by_id, :prepared_by_email,
6
- :dispatch_status, :destination, :auth_details, :unit_id, :unit_abbreviation, :commodity_status
5
+ :driver_name, :driver_phone, :quantity, :remark, :prepared_by_id, :prepared_by_email,
6
+ :dispatch_status, :destination, :auth_details, :unit_id, :unit_abbreviation, :commodity_status
7
7
  end
8
8
  end
9
9
  end
@@ -2,7 +2,7 @@ module Cats
2
2
  module Core
3
3
  class DispatchTransactionSerializer < ActiveModel::Serializer
4
4
  attributes :id, :source_id, :source_code, :dispatch_authorization_id, :quantity, :transaction_date, :status,
5
- :unit_id, :unit_abbreviation, :reference_no
5
+ :unit_id, :unit_abbreviation, :reference_no
6
6
  end
7
7
  end
8
8
  end
@@ -2,7 +2,7 @@ module Cats
2
2
  module Core
3
3
  class LoanSerializer < ActiveModel::Serializer
4
4
  attributes :id, :reference_no, :lender, :agreement_date, :repayment_date, :commodity_category_id,
5
- :commodity_category_name, :quantity, :unit_id, :unit_abbreviation
5
+ :commodity_category_name, :quantity, :unit_id, :unit_abbreviation
6
6
  end
7
7
  end
8
8
  end
@@ -2,8 +2,8 @@ module Cats
2
2
  module Core
3
3
  class PurchaseOrderSerializer < ActiveModel::Serializer
4
4
  attributes :id, :reference_no, :order_date, :requisition_no, :supplier, :cash_donation_id, :purchase_type,
5
- :commodity_category_id, :commodity_category_name, :quantity, :unit_id, :unit_name, :currency_id,
6
- :currency_code, :price
5
+ :commodity_category_id, :commodity_category_name, :quantity, :unit_id, :unit_name, :currency_id,
6
+ :currency_code, :price
7
7
  end
8
8
  end
9
9
  end
@@ -2,8 +2,8 @@ module Cats
2
2
  module Core
3
3
  class ReceiptAuthorizationSerializer < ActiveModel::Serializer
4
4
  attributes :id, :dispatch_id, :dispatch_reference_no, :store_id, :store_name, :quantity, :received_quantity,
5
- :remark, :status, :authorized_by_id, :authorizer_full_name, :auth_details, :plate_no, :driver_name,
6
- :dispatch_status, :unit_id, :unit_abbreviation, :driver_confirmed
5
+ :remark, :status, :authorized_by_id, :authorizer_full_name, :auth_details, :plate_no, :driver_name,
6
+ :dispatch_status, :unit_id, :unit_abbreviation, :driver_confirmed
7
7
  end
8
8
  end
9
9
  end
@@ -2,7 +2,7 @@ module Cats
2
2
  module Core
3
3
  class ReceiptSerializer < ActiveModel::Serializer
4
4
  attributes :id, :receipt_authorization_id, :commodity_status, :commodity_grade, :quantity, :remark,
5
- :unit_id, :unit_abbreviation, :reference_no
5
+ :unit_id, :unit_abbreviation, :reference_no
6
6
  end
7
7
  end
8
8
  end
@@ -2,8 +2,8 @@ module Cats
2
2
  module Core
3
3
  class ReceiptTransactionSerializer < ActiveModel::Serializer
4
4
  attributes :id, :receipt_authorization_id, :receipt_number,
5
- :dispatch_reference_no, :destination_id, :destination_code, :quantity,
6
- :transaction_date, :status, :unit_id, :unit_abbreviation
5
+ :dispatch_reference_no, :destination_id, :destination_code, :quantity,
6
+ :transaction_date, :status, :unit_id, :unit_abbreviation
7
7
  end
8
8
  end
9
9
  end
@@ -2,7 +2,7 @@ module Cats
2
2
  module Core
3
3
  class RoundBeneficiarySerializer < ActiveModel::Serializer
4
4
  attributes :id, :beneficiary_id, :beneficiary_full_name, :round_plan_item_id, :commodity_category_id,
5
- :commodity_category_name, :quantity, :unit_id, :unit_abbreviation, :received
5
+ :commodity_category_name, :quantity, :unit_id, :unit_abbreviation, :received
6
6
  end
7
7
  end
8
8
  end
@@ -2,7 +2,7 @@ module Cats
2
2
  module Core
3
3
  class RoundPlanSerializer < ActiveModel::Serializer
4
4
  attributes :id, :reference_no, :status, :plan_id, :plan_reference_no, :region_id, :region_name, :rounds,
5
- :program_code
5
+ :program_code
6
6
  end
7
7
  end
8
8
  end
@@ -2,7 +2,7 @@ module Cats
2
2
  module Core
3
3
  class StackSerializer < ActiveModel::Serializer
4
4
  attributes :id, :code, :length, :width, :height, :start_x, :start_y, :commodity_id, :store_id, :commodity_status,
5
- :stack_status, :quantity, :commodity_batch_no, :unit_id, :unit_abbreviation
5
+ :stack_status, :quantity, :commodity_batch_no, :unit_id, :unit_abbreviation
6
6
  end
7
7
  end
8
8
  end
@@ -2,7 +2,7 @@ module Cats
2
2
  module Core
3
3
  class StoreSerializer < ActiveModel::Serializer
4
4
  attributes :id, :code, :name, :length, :width, :height, :temporary, :has_gangway, :gangway_length,
5
- :gangway_width, :gangway_corner_dist, :warehouse_id
5
+ :gangway_width, :gangway_corner_dist, :warehouse_id
6
6
 
7
7
  has_many :stacks
8
8
  end
@@ -2,8 +2,8 @@ module Cats
2
2
  module Core
3
3
  class SwapSerializer < ActiveModel::Serializer
4
4
  attributes :id, :reference_no, :swapper, :agreement_date, :issued_commodity_id, :issued_commodity_name,
5
- :issued_quantity, :received_commodity_id, :received_commodity_name, :received_quantity,
6
- :issued_unit_id, :issued_unit_abbreviation, :received_unit_id, :received_unit_abbreviation
5
+ :issued_quantity, :received_commodity_id, :received_commodity_name, :received_quantity,
6
+ :issued_unit_id, :issued_unit_abbreviation, :received_unit_id, :received_unit_abbreviation
7
7
  end
8
8
  end
9
9
  end
@@ -3,9 +3,7 @@ module Cats
3
3
  class AuthorizationService
4
4
  def driver_confirm(authorization_id, pin, receipt_number)
5
5
  authorization = ReceiptAuthorization.find(authorization_id)
6
- if authorization.status == Authorization::AUTHORIZED
7
- raise(StandardError, "Authorization not confirmed by storekeeper.")
8
- end
6
+ raise(StandardError, "Authorization not confirmed by storekeeper.") if authorization.status == Authorization::AUTHORIZED
9
7
 
10
8
  raise(StandardError, "No pin has been generated for receipt.") if authorization.auth_details.nil?
11
9
 
@@ -65,14 +63,10 @@ module Cats
65
63
 
66
64
  def stack(authorization_id)
67
65
  authorization = ReceiptAuthorization.find(authorization_id)
68
- unless authorization.dispatch.dispatch_status == Dispatch::RECEIVED
69
- raise(StandardError, "Dispatch is not received.")
70
- end
66
+ raise(StandardError, "Dispatch is not received.") unless authorization.dispatch.dispatch_status == Dispatch::RECEIVED
71
67
 
72
68
  total = authorization.transactions.sum(:quantity)
73
- if total != authorization.received_quantity
74
- raise(StandardError, "Received quantity is not the same as quantity to be stacked.")
75
- end
69
+ raise(StandardError, "Received quantity is not the same as quantity to be stacked.") if total != authorization.received_quantity
76
70
 
77
71
  authorization.transactions.each(&:commit)
78
72
 
@@ -57,7 +57,7 @@ module Cats
57
57
  end
58
58
 
59
59
  beneficiaries = RoundBeneficiary.joins(:round_plan_item)
60
- .where(round_plan_item: {round_plan_id: plan_id})
60
+ .where(round_plan_item: {round_plan_id: plan_id})
61
61
  to_delete = RoundBeneficiary.where(id: ids)
62
62
  diff = to_delete - beneficiaries
63
63
  raise(StandardError, "Round plan beneficiaries should be from the same plan.") if diff.count.positive?
@@ -76,7 +76,7 @@ module Cats
76
76
  end
77
77
 
78
78
  beneficiaries = RoundBeneficiary.joins(:round_plan_item)
79
- .where(round_plan_item: {round_plan_id: plan_id})
79
+ .where(round_plan_item: {round_plan_id: plan_id})
80
80
  to_confirm = RoundBeneficiary.where(id: ids)
81
81
  diff = to_confirm - beneficiaries
82
82
  raise(StandardError, "Round plan beneficiaries should be from the same plan.") if diff.count.positive?
@@ -50,7 +50,7 @@ module Cats
50
50
  recipients = users.map do |user|
51
51
  details = user.details
52
52
  if (details.key?("warehouse") && details["warehouse"] == location_id) ||
53
- (details.key?("hub") && details["hub"] == location_id)
53
+ (details.key?("hub") && details["hub"] == location_id)
54
54
  user
55
55
  end
56
56
  end.compact
@@ -4,33 +4,31 @@ module Cats
4
4
  def search(user, status, authorized: false)
5
5
  details = user.details
6
6
 
7
- unless details["stores"] || details["warehouse"] || details["hub"]
8
- raise(StandardError, "User does not have associated location.")
9
- end
7
+ raise(StandardError, "User does not have associated location.") unless details["stores"] || details["warehouse"] || details["hub"]
10
8
 
11
9
  # Get user's hub
12
10
  hub = if details["stores"]
13
- Store.find(details["stores"][0]).warehouse.parent
14
- elsif details["warehouse"]
15
- Location.find(details["warehouse"]).parent
16
- else
17
- Location.find(details["hub"])
18
- end
11
+ Store.find(details["stores"][0]).warehouse.parent
12
+ elsif details["warehouse"]
13
+ Location.find(details["warehouse"]).parent
14
+ else
15
+ Location.find(details["hub"])
16
+ end
19
17
 
20
18
  if authorized
21
19
  return Dispatch.joins(:dispatch_plan_item)
22
- .includes({dispatch_plan_item: :destination}, :transporter, :prepared_by, :unit)
23
- .where(
24
- dispatch_plan_item: {destination: hub, status: DispatchPlanItem::AUTHORIZED},
25
- dispatch_status: status
26
- )
20
+ .includes({dispatch_plan_item: :destination}, :transporter, :prepared_by, :unit)
21
+ .where(
22
+ dispatch_plan_item: {destination: hub, status: DispatchPlanItem::AUTHORIZED},
23
+ dispatch_status: status
24
+ )
27
25
  end
28
26
  Dispatch.joins(:dispatch_plan_item)
29
- .includes({dispatch_plan_item: :destination}, :transporter, :prepared_by, :unit)
30
- .where(
31
- dispatch_plan_item: {destination: hub},
32
- dispatch_status: status
33
- )
27
+ .includes({dispatch_plan_item: :destination}, :transporter, :prepared_by, :unit)
28
+ .where(
29
+ dispatch_plan_item: {destination: hub},
30
+ dispatch_status: status
31
+ )
34
32
  end
35
33
 
36
34
  def start(dispatch)
@@ -77,7 +75,7 @@ module Cats
77
75
  details = user.details
78
76
 
79
77
  if (details.key?("warehouse") && hub.child_ids.include?(details["warehouse"])) ||
80
- (details.key?("hub") && details["hub"] == location_id)
78
+ (details.key?("hub") && details["hub"] == location_id)
81
79
  user
82
80
  end
83
81
  end.compact
@@ -34,7 +34,7 @@ module Cats
34
34
  roles = rule[:recipients]
35
35
 
36
36
  users = Cats::Core::User.joins(:application_module)
37
- .where(application_module: {prefix: app_code}).with_all_roles(*roles)
37
+ .where(application_module: {prefix: app_code}).with_all_roles(*roles)
38
38
  notifier.deliver(users)
39
39
  end
40
40
  end