solidus_core 4.4.1 → 4.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/app/helpers/spree/core/controller_helpers/auth.rb +66 -0
  3. data/app/helpers/spree/core/controller_helpers/common.rb +82 -0
  4. data/app/helpers/spree/core/controller_helpers/order.rb +86 -0
  5. data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +165 -0
  6. data/app/helpers/spree/core/controller_helpers/pricing.rb +19 -0
  7. data/app/helpers/spree/core/controller_helpers/search.rb +16 -0
  8. data/app/helpers/spree/core/controller_helpers/store.rb +19 -0
  9. data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +74 -0
  10. data/app/models/concerns/spree/metadata.rb +64 -0
  11. data/app/models/concerns/spree/user_address_book.rb +4 -5
  12. data/app/models/spree/core/state_machines/inventory_unit.rb +42 -0
  13. data/app/models/spree/core/state_machines/order/class_methods.rb +217 -0
  14. data/app/models/spree/core/state_machines/order.rb +42 -0
  15. data/app/models/spree/core/state_machines/payment.rb +61 -0
  16. data/app/models/spree/core/state_machines/reimbursement.rb +33 -0
  17. data/app/models/spree/core/state_machines/return_authorization.rb +32 -0
  18. data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
  19. data/app/models/spree/core/state_machines/return_item/reception_status.rb +42 -0
  20. data/app/models/spree/core/state_machines/shipment.rb +58 -0
  21. data/app/models/spree/customer_return.rb +2 -0
  22. data/app/models/spree/item_total.rb +28 -0
  23. data/app/models/spree/legacy_user.rb +1 -0
  24. data/app/models/spree/line_item.rb +21 -0
  25. data/app/models/spree/money.rb +120 -0
  26. data/app/models/spree/order.rb +20 -9
  27. data/app/models/spree/order_merger.rb +1 -1
  28. data/app/models/spree/order_shipping.rb +0 -1
  29. data/app/models/spree/order_taxation.rb +1 -0
  30. data/app/models/spree/order_updater.rb +13 -30
  31. data/app/models/spree/payment.rb +1 -0
  32. data/app/models/spree/permission_sets/base.rb +45 -0
  33. data/app/models/spree/permission_sets/configuration_display.rb +53 -0
  34. data/app/models/spree/permission_sets/configuration_management.rb +52 -0
  35. data/app/models/spree/permission_sets/dashboard_display.rb +28 -0
  36. data/app/models/spree/permission_sets/default_customer.rb +83 -0
  37. data/app/models/spree/permission_sets/order_display.rb +50 -0
  38. data/app/models/spree/permission_sets/order_management.rb +50 -0
  39. data/app/models/spree/permission_sets/product_display.rb +43 -0
  40. data/app/models/spree/permission_sets/product_management.rb +47 -0
  41. data/app/models/spree/permission_sets/restricted_stock_display.rb +33 -0
  42. data/app/models/spree/permission_sets/restricted_stock_management.rb +33 -0
  43. data/app/models/spree/permission_sets/stock_display.rb +26 -0
  44. data/app/models/spree/permission_sets/stock_management.rb +26 -0
  45. data/app/models/spree/permission_sets/super_user.rb +26 -0
  46. data/app/models/spree/permission_sets/user_display.rb +27 -0
  47. data/app/models/spree/permission_sets/user_management.rb +44 -0
  48. data/app/models/spree/product.rb +7 -0
  49. data/app/models/spree/refund.rb +2 -0
  50. data/app/models/spree/return_authorization.rb +2 -0
  51. data/app/models/spree/shipment.rb +2 -0
  52. data/app/models/spree/simple_order_contents.rb +4 -1
  53. data/app/models/spree/store_credit_event.rb +1 -0
  54. data/app/models/spree/tax/tax_helpers.rb +12 -1
  55. data/app/models/spree/tax_calculator/default.rb +1 -1
  56. data/app/models/spree/taxon.rb +22 -2
  57. data/app/models/spree/taxon_brand_selector.rb +22 -0
  58. data/app/models/spree/unauthorized_redirect_handler.rb +24 -0
  59. data/app/models/spree/user_address.rb +9 -3
  60. data/app/models/spree/variant.rb +14 -1
  61. data/config/locales/en.yml +16 -0
  62. data/db/migrate/20220419170826_remove_archived_user_addresses.rb +12 -0
  63. data/db/migrate/20250129061658_add_metadata_to_spree_resources.rb +29 -0
  64. data/db/migrate/20250201172950_add_gtin_and_condition_to_spree_variant.rb +6 -0
  65. data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +7 -0
  66. data/lib/generators/solidus/install/app_templates/authentication/custom.rb +0 -5
  67. data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -1
  68. data/lib/generators/spree/dummy/dummy_generator.rb +1 -1
  69. data/lib/generators/spree/dummy/templates/rails/application.rb.tt +1 -1
  70. data/lib/generators/spree/dummy/templates/rails/manifest.js +3 -0
  71. data/lib/spree/app_configuration.rb +49 -0
  72. data/lib/spree/core/controller_helpers/auth.rb +5 -61
  73. data/lib/spree/core/controller_helpers/common.rb +5 -80
  74. data/lib/spree/core/controller_helpers/order.rb +5 -86
  75. data/lib/spree/core/controller_helpers/payment_parameters.rb +5 -163
  76. data/lib/spree/core/controller_helpers/pricing.rb +5 -17
  77. data/lib/spree/core/controller_helpers/search.rb +5 -14
  78. data/lib/spree/core/controller_helpers/store.rb +5 -17
  79. data/lib/spree/core/controller_helpers/strong_parameters.rb +5 -71
  80. data/lib/spree/core/engine.rb +5 -0
  81. data/lib/spree/core/state_machines/inventory_unit.rb +5 -40
  82. data/lib/spree/core/state_machines/order.rb +5 -250
  83. data/lib/spree/core/state_machines/payment.rb +5 -59
  84. data/lib/spree/core/state_machines/reimbursement.rb +5 -31
  85. data/lib/spree/core/state_machines/return_authorization.rb +5 -30
  86. data/lib/spree/core/state_machines/return_item/acceptance_status.rb +5 -49
  87. data/lib/spree/core/state_machines/return_item/reception_status.rb +5 -40
  88. data/lib/spree/core/state_machines/shipment.rb +5 -56
  89. data/lib/spree/core/state_machines.rb +48 -81
  90. data/lib/spree/core/version.rb +2 -2
  91. data/lib/spree/core.rb +4 -10
  92. data/lib/spree/money.rb +5 -118
  93. data/lib/spree/permission_sets/base.rb +5 -42
  94. data/lib/spree/permission_sets/configuration_display.rb +5 -51
  95. data/lib/spree/permission_sets/configuration_management.rb +5 -50
  96. data/lib/spree/permission_sets/dashboard_display.rb +5 -26
  97. data/lib/spree/permission_sets/default_customer.rb +5 -81
  98. data/lib/spree/permission_sets/order_display.rb +5 -48
  99. data/lib/spree/permission_sets/order_management.rb +5 -48
  100. data/lib/spree/permission_sets/product_display.rb +5 -41
  101. data/lib/spree/permission_sets/product_management.rb +5 -45
  102. data/lib/spree/permission_sets/restricted_stock_display.rb +5 -31
  103. data/lib/spree/permission_sets/restricted_stock_management.rb +5 -31
  104. data/lib/spree/permission_sets/stock_display.rb +5 -24
  105. data/lib/spree/permission_sets/stock_management.rb +5 -24
  106. data/lib/spree/permission_sets/super_user.rb +5 -24
  107. data/lib/spree/permission_sets/user_display.rb +5 -25
  108. data/lib/spree/permission_sets/user_management.rb +5 -42
  109. data/lib/spree/permission_sets.rb +5 -16
  110. data/lib/spree/permitted_attributes.rb +18 -7
  111. data/lib/spree/preferences/configuration.rb +4 -0
  112. data/lib/spree/preferences/persistable.rb +1 -1
  113. data/lib/spree/testing_support/capybara_ext.rb +10 -0
  114. data/lib/spree/testing_support/dummy_app.rb +1 -1
  115. data/lib/spree/testing_support/extension_rake.rb +2 -2
  116. data/lib/spree/testing_support/factories/order_factory.rb +9 -1
  117. data/lib/spree/user_class_handle.rb +2 -2
  118. data/solidus_core.gemspec +1 -1
  119. metadata +64 -24
  120. data/lib/generators/spree/dummy/templates/rails/script/rails +0 -6
@@ -1,73 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module Core
5
- module ControllerHelpers
6
- module StrongParameters
7
- def permitted_attributes
8
- Spree::PermittedAttributes
9
- end
10
-
11
- delegate(*Spree::PermittedAttributes::ATTRIBUTES,
12
- to: :permitted_attributes,
13
- prefix: :permitted)
14
-
15
- def permitted_credit_card_update_attributes
16
- permitted_attributes.credit_card_update_attributes + [
17
- address_attributes: permitted_address_attributes
18
- ]
19
- end
20
-
21
- def permitted_payment_attributes
22
- permitted_attributes.payment_attributes + [
23
- source_attributes: permitted_source_attributes
24
- ]
25
- end
26
-
27
- def permitted_source_attributes
28
- permitted_attributes.source_attributes + [
29
- address_attributes: permitted_address_attributes
30
- ]
31
- end
32
-
33
- def permitted_checkout_address_attributes
34
- permitted_attributes.checkout_address_attributes
35
- end
36
-
37
- def permitted_checkout_delivery_attributes
38
- permitted_attributes.checkout_delivery_attributes
39
- end
40
-
41
- def permitted_checkout_payment_attributes
42
- permitted_attributes.checkout_payment_attributes
43
- end
44
-
45
- def permitted_checkout_confirm_attributes
46
- permitted_attributes.checkout_confirm_attributes
47
- end
48
-
49
- def permitted_order_attributes
50
- permitted_checkout_address_attributes +
51
- permitted_checkout_delivery_attributes +
52
- permitted_checkout_payment_attributes +
53
- permitted_checkout_confirm_attributes + [
54
- line_items_attributes: permitted_line_item_attributes
55
- ]
56
- end
57
-
58
- def permitted_product_attributes
59
- permitted_attributes.product_attributes + [
60
- product_properties_attributes: permitted_product_properties_attributes
61
- ]
62
- end
63
-
64
- def permitted_user_attributes
65
- permitted_attributes.user_attributes + [
66
- bill_address_attributes: permitted_address_attributes,
67
- ship_address_attributes: permitted_address_attributes
68
- ]
69
- end
70
- end
71
- end
72
- end
73
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -21,6 +21,11 @@ module Spree
21
21
  [Symbol, BigDecimal, ActiveSupport::HashWithIndifferentAccess]
22
22
  end
23
23
 
24
+ initializer "spree.zeitwerk_ignores" do
25
+ old_helpers = Engine.root.join("lib", "spree", "core", "controller_helpers", "*", "*.rb")
26
+ Rails.application.autoloaders.main.ignore(old_helpers)
27
+ end
28
+
24
29
  initializer "spree.environment", before: :load_config_initializers do |app|
25
30
  app.config.spree = Spree::Config.environment
26
31
  end
@@ -1,42 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module Core
5
- class StateMachines
6
- # Inventory Units' state machine
7
- #
8
- # for each event the following instance methods are dynamically implemented:
9
- # #<event_name>
10
- # #<event_name>!
11
- # #can_<event_name>?
12
- #
13
- # for each state the following instance methods are implemented:
14
- # #<state_name>?
15
- #
16
- module InventoryUnit
17
- extend ActiveSupport::Concern
18
-
19
- included do
20
- state_machine initial: :on_hand do
21
- event :fill_backorder do
22
- transition to: :on_hand, from: :backordered
23
- end
24
- after_transition on: :fill_backorder, do: :fulfill_order
25
-
26
- event :ship do
27
- transition to: :shipped, if: :allow_ship?
28
- end
29
-
30
- event :return do
31
- transition to: :returned, from: :shipped
32
- end
33
-
34
- event :cancel do
35
- transition to: :canceled, from: ::Spree::InventoryUnit::CANCELABLE_STATES.map(&:to_sym)
36
- end
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,252 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module Core
5
- class StateMachines
6
- module Order
7
- def self.included(klass)
8
- klass.extend ClassMethods
9
- end
10
-
11
- module ClassMethods
12
- attr_accessor :previous_states
13
- attr_writer :next_event_transitions
14
- attr_writer :checkout_steps
15
- attr_writer :removed_transitions
16
-
17
- def checkout_flow(&block)
18
- if block_given?
19
- @checkout_flow = block
20
- define_state_machine!
21
- else
22
- @checkout_flow
23
- end
24
- end
25
-
26
- def define_state_machine!
27
- self.checkout_steps = {}
28
- self.next_event_transitions = []
29
- self.previous_states = [:cart]
30
- self.removed_transitions = []
31
-
32
- # Build the checkout flow using the checkout_flow defined either
33
- # within the Order class, or a decorator for that class.
34
- #
35
- # This method may be called multiple times depending on if the
36
- # checkout_flow is re-defined in a decorator or not.
37
- instance_eval(&checkout_flow)
38
-
39
- klass = self
40
-
41
- # To avoid multiple occurrences of the same transition being defined
42
- # On first definition, state_machines will not be defined
43
- state_machines.clear if respond_to?(:state_machines)
44
- state_machine :state, initial: :cart, use_transactions: false do
45
- klass.next_event_transitions.each { |state| transition(state.merge(on: :next)) }
46
-
47
- # Persist the state on the order
48
- after_transition do |order, transition|
49
- # Hard to say if this is really necessary, it was introduced in this commit:
50
- # https://github.com/mamhoff/solidus/commit/fa1d66c42e4c04ee7cd1c20d87e4cdb74a226d3d
51
- # But it seems to be harmless, so we'll keep it for now.
52
- order.state = order.state # rubocop:disable Lint/SelfAssignment
53
-
54
- order.state_changes.create(
55
- previous_state: transition.from,
56
- next_state: transition.to,
57
- name: 'order',
58
- user_id: order.user_id
59
- )
60
- order.save
61
- end
62
-
63
- event :cancel do
64
- transition to: :canceled, if: :allow_cancel?, from: :complete
65
- end
66
-
67
- event :return do
68
- transition to: :returned, from: [:complete, :awaiting_return], if: :all_inventory_units_returned?
69
- end
70
-
71
- event :resume do
72
- transition to: :resumed, from: :canceled, if: :canceled?
73
- end
74
-
75
- event :authorize_return do
76
- transition to: :awaiting_return, from: :complete
77
- end
78
-
79
- event :complete do
80
- transition to: :complete, from: klass.checkout_steps.keys.last
81
- end
82
-
83
- if states[:payment]
84
- event :payment_failed do
85
- transition to: :payment, from: :confirm
86
- end
87
-
88
- after_transition to: :complete, do: :add_payment_sources_to_wallet
89
- before_transition to: :payment, do: :add_default_payment_from_wallet
90
- before_transition to: :payment, do: :ensure_billing_address
91
-
92
- before_transition to: :confirm, do: :add_store_credit_payments
93
-
94
- # see also process_payments_before_complete below which needs to
95
- # be added in the correct sequence.
96
- end
97
-
98
- before_transition from: :cart, do: :ensure_line_items_present
99
-
100
- if states[:address]
101
- before_transition to: :address, do: :assign_default_user_addresses
102
- before_transition from: :address, do: :persist_user_address!
103
- end
104
-
105
- if states[:delivery]
106
- before_transition to: :delivery, do: :ensure_shipping_address
107
- before_transition to: :delivery, do: :create_proposed_shipments
108
- before_transition to: :delivery, do: :ensure_available_shipping_rates
109
- end
110
-
111
- before_transition to: :resumed, do: :ensure_line_item_variants_are_not_deleted
112
- before_transition to: :resumed, do: :validate_line_item_availability
113
-
114
- # Sequence of before_transition to: :complete
115
- # calls matter so that we do not process payments
116
- # until validations have passed
117
- before_transition to: :complete, do: :validate_line_item_availability
118
- before_transition to: :complete, do: :ensure_promotions_eligible
119
- before_transition to: :complete, do: :ensure_line_item_variants_are_not_deleted
120
- before_transition to: :complete, do: :ensure_inventory_units
121
- if states[:payment]
122
- before_transition to: :complete, do: :process_payments_before_complete
123
- end
124
-
125
- after_transition to: :complete, do: :finalize
126
- after_transition to: :resumed, do: :after_resume
127
- after_transition to: :canceled, do: :after_cancel
128
-
129
- after_transition from: any - :cart, to: any - [:confirm, :complete] do |order|
130
- order.recalculate
131
- end
132
-
133
- after_transition do |order, transition|
134
- order.logger.debug "Order #{order.number} transitioned from #{transition.from} to #{transition.to} via #{transition.event}"
135
- end
136
-
137
- after_failure do |order, transition|
138
- order.logger.debug "Order #{order.number} halted transition on event #{transition.event} state #{transition.from}: #{order.errors.full_messages.join}"
139
- end
140
- end
141
- end
142
-
143
- def go_to_state(name, options = {})
144
- checkout_steps[name] = options
145
- previous_states.each do |state|
146
- add_transition({ from: state, to: name }.merge(options))
147
- end
148
- if options[:if]
149
- previous_states << name
150
- else
151
- self.previous_states = [name]
152
- end
153
- end
154
-
155
- def insert_checkout_step(name, options = {})
156
- before = options.delete(:before)
157
- after = options.delete(:after) unless before
158
- after = checkout_steps.keys.last unless before || after
159
-
160
- cloned_steps = checkout_steps.clone
161
- cloned_removed_transitions = removed_transitions.clone
162
- checkout_flow do
163
- cloned_steps.each_pair do |key, value|
164
- go_to_state(name, options) if key == before
165
- go_to_state(key, value)
166
- go_to_state(name, options) if key == after
167
- end
168
- cloned_removed_transitions.each do |transition|
169
- remove_transition(transition)
170
- end
171
- end
172
- end
173
-
174
- def remove_checkout_step(name)
175
- cloned_steps = checkout_steps.clone
176
- cloned_removed_transitions = removed_transitions.clone
177
- checkout_flow do
178
- cloned_steps.each_pair do |key, value|
179
- go_to_state(key, value) unless key == name
180
- end
181
- cloned_removed_transitions.each do |transition|
182
- remove_transition(transition)
183
- end
184
- end
185
- end
186
-
187
- def remove_transition(options = {})
188
- removed_transitions << options
189
- next_event_transitions.delete(find_transition(options))
190
- end
191
-
192
- def find_transition(options = {})
193
- return nil if options.nil? || !options.include?(:from) || !options.include?(:to)
194
-
195
- next_event_transitions.detect do |transition|
196
- transition[options[:from].to_sym] == options[:to].to_sym
197
- end
198
- end
199
-
200
- def next_event_transitions
201
- @next_event_transitions ||= []
202
- end
203
-
204
- def checkout_steps
205
- @checkout_steps ||= {}
206
- end
207
-
208
- def checkout_step_names
209
- checkout_steps.keys
210
- end
211
-
212
- def add_transition(options)
213
- next_event_transitions << { options.delete(:from) => options.delete(:to) }.merge(options)
214
- end
215
-
216
- def removed_transitions
217
- @removed_transitions ||= []
218
- end
219
- end
220
-
221
- def checkout_steps
222
- steps = self.class.checkout_steps.each_with_object([]) { |(step, options), checkout_steps|
223
- next if options.include?(:if) && !options[:if].call(self)
224
-
225
- checkout_steps << step
226
- }.map(&:to_s)
227
- # Ensure there is always a complete step
228
- steps << "complete" unless steps.include?("complete")
229
- steps
230
- end
231
-
232
- def has_checkout_step?(step)
233
- step.present? && checkout_steps.include?(step)
234
- end
235
-
236
- def passed_checkout_step?(step)
237
- has_checkout_step?(step) && checkout_step_index(step) < checkout_step_index(state)
238
- end
239
-
240
- def checkout_step_index(step)
241
- checkout_steps.index(step).to_i
242
- end
243
-
244
- def can_go_to_state?(state)
245
- return false unless has_checkout_step?(self.state) && has_checkout_step?(state)
246
-
247
- checkout_step_index(state) > checkout_step_index(self.state)
248
- end
249
- end
250
- end
251
- end
252
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,61 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module Core
5
- class StateMachines
6
- # Payments' state machine
7
- #
8
- # for each event the following instance methods are dynamically implemented:
9
- # #<event_name>
10
- # #<event_name>!
11
- # #can_<event_name>?
12
- #
13
- # for each state the following instance methods are implemented:
14
- # #<state_name>?
15
- #
16
- module Payment
17
- extend ActiveSupport::Concern
18
-
19
- included do
20
- state_machine initial: :checkout do
21
- # With card payments, happens before purchase or authorization happens
22
- #
23
- # Setting it after creating a profile and authorizing a full amount will
24
- # prevent the payment from being authorized again once Order transitions
25
- # to complete
26
- event :started_processing do
27
- transition from: [:checkout, :pending, :completed, :processing], to: :processing
28
- end
29
- # When processing during checkout fails
30
- event :failure do
31
- transition from: [:pending, :processing], to: :failed
32
- end
33
- # With card payments this represents authorizing the payment
34
- event :pend do
35
- transition from: [:checkout, :processing], to: :pending
36
- end
37
- # With card payments this represents completing a purchase or capture transaction
38
- event :complete do
39
- transition from: [:processing, :pending, :checkout], to: :completed
40
- end
41
- event :void do
42
- transition from: [:pending, :processing, :completed, :checkout], to: :void
43
- end
44
- # when the card brand isnt supported
45
- event :invalidate do
46
- transition from: [:checkout], to: :invalid
47
- end
48
-
49
- after_transition do |payment, transition|
50
- payment.state_changes.create!(
51
- previous_state: transition.from,
52
- next_state: transition.to,
53
- name: 'payment'
54
- )
55
- end
56
- end
57
- end
58
- end
59
- end
60
- end
61
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,33 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module Core
5
- class StateMachines
6
- # Reimbursement' state machine
7
- #
8
- # for each event the following instance methods are dynamically implemented:
9
- # #<event_name>
10
- # #<event_name>!
11
- # #can_<event_name>?
12
- #
13
- # for each state the following instance methods are implemented:
14
- # #<state_name>?
15
- #
16
- module Reimbursement
17
- extend ActiveSupport::Concern
18
-
19
- included do
20
- state_machine :reimbursement_status, initial: :pending do
21
- event :errored do
22
- transition to: :errored, from: [:pending, :errored]
23
- end
24
-
25
- event :reimbursed do
26
- transition to: :reimbursed, from: [:pending, :errored]
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,32 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module Core
5
- class StateMachines
6
- # Return Authorizations' state machine
7
- #
8
- # for each event the following instance methods are dynamically implemented:
9
- # #<event_name>
10
- # #<event_name>!
11
- # #can_<event_name>?
12
- #
13
- # for each state the following instance methods are implemented:
14
- # #<state_name>?
15
- #
16
- module ReturnAuthorization
17
- extend ActiveSupport::Concern
18
-
19
- included do
20
- state_machine initial: :authorized do
21
- before_transition to: :canceled, do: :cancel_return_items
22
-
23
- event :cancel do
24
- transition to: :canceled, from: :authorized,
25
- if: lambda { |return_authorization| return_authorization.can_cancel_return_items? }
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,51 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module Core
5
- class StateMachines
6
- module ReturnItem
7
- # Return Items' acceptance status state machine
8
- #
9
- # for each event the following instance methods are dynamically implemented:
10
- # #<event_name>
11
- # #<event_name>!
12
- # #can_<event_name>?
13
- #
14
- # for each state the following instance methods are implemented:
15
- # #<state_name>?
16
- #
17
- module AcceptanceStatus
18
- extend ActiveSupport::Concern
19
-
20
- included do
21
- state_machine :acceptance_status, initial: :pending do
22
- event :attempt_accept do
23
- transition to: :accepted, from: :accepted
24
- transition to: :accepted, from: :pending, if: ->(return_item) { return_item.eligible_for_return? }
25
- transition to: :manual_intervention_required, from: :pending, if: ->(return_item) { return_item.requires_manual_intervention? }
26
- transition to: :rejected, from: :pending
27
- end
28
-
29
- # bypasses eligibility checks
30
- event :accept do
31
- transition to: :accepted, from: [:accepted, :pending, :manual_intervention_required]
32
- end
33
-
34
- # bypasses eligibility checks
35
- event :reject do
36
- transition to: :rejected, from: [:accepted, :pending, :manual_intervention_required]
37
- end
38
-
39
- # bypasses eligibility checks
40
- event :require_manual_intervention do
41
- transition to: :manual_intervention_required, from: [:accepted, :pending, :manual_intervention_required]
42
- end
43
-
44
- after_transition any => any, do: :persist_acceptance_status_errors
45
- end
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )
@@ -1,42 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Spree
4
- module Core
5
- class StateMachines
6
- module ReturnItem
7
- # Return Items' reception status state machine
8
- #
9
- # for each event the following instance methods are dynamically implemented:
10
- # #<event_name>
11
- # #<event_name>!
12
- # #can_<event_name>?
13
- #
14
- # for each state the following instance methods are implemented:
15
- # #<state_name>?
16
- #
17
- module ReceptionStatus
18
- extend ActiveSupport::Concern
19
-
20
- included do
21
- state_machine :reception_status, initial: :awaiting do
22
- after_transition to: ::Spree::ReturnItem::COMPLETED_RECEPTION_STATUSES, do: :attempt_accept, if: :can_attempt_accept?
23
- after_transition to: ::Spree::ReturnItem::COMPLETED_RECEPTION_STATUSES, do: :check_unexchange
24
- after_transition to: :received, do: :process_inventory_unit!
25
-
26
- event(:cancel) { transition to: :cancelled, from: :awaiting }
27
-
28
- event(:receive) { transition to: :received, from: ::Spree::ReturnItem::INTERMEDIATE_RECEPTION_STATUSES + [:awaiting] }
29
- event(:unexchange) { transition to: :unexchanged, from: [:awaiting] }
30
- event(:give) { transition to: :given_to_customer, from: :awaiting }
31
- event(:lost) { transition to: :lost_in_transit, from: :awaiting }
32
- event(:wrong_item_shipped) { transition to: :shipped_wrong_item, from: :awaiting }
33
- event(:short_shipped) { transition to: :short_shipped, from: :awaiting }
34
- event(:in_transit) { transition to: :in_transit, from: :awaiting }
35
- event(:expired) { transition to: :expired, from: :awaiting }
36
- end
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
3
+ Spree.deprecator.warn(
4
+ <<~MSG
5
+ The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
6
+ MSG
7
+ )