solidus_core 2.11.1 → 3.0.0.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of solidus_core might be problematic. Click here for more details.

Files changed (198) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree.js.erb +0 -51
  3. data/app/helpers/spree/store_helper.rb +0 -11
  4. data/app/mailers/spree/carton_mailer.rb +1 -5
  5. data/app/models/concerns/spree/adjustment_source.rb +0 -15
  6. data/app/models/concerns/spree/calculated_adjustments.rb +0 -18
  7. data/app/models/concerns/spree/soft_deletable.rb +2 -4
  8. data/app/models/concerns/spree/user_address_book.rb +0 -37
  9. data/app/models/concerns/spree/user_methods.rb +2 -11
  10. data/app/models/spree/ability.rb +0 -37
  11. data/app/models/spree/address.rb +7 -162
  12. data/app/models/spree/address/name.rb +2 -20
  13. data/app/models/spree/adjustment.rb +0 -28
  14. data/app/models/spree/base.rb +1 -12
  15. data/app/models/spree/calculator.rb +4 -11
  16. data/app/models/spree/calculator/flexi_rate.rb +0 -5
  17. data/app/models/spree/country.rb +1 -6
  18. data/app/models/spree/credit_card.rb +0 -27
  19. data/app/models/spree/customer_return.rb +1 -4
  20. data/app/models/spree/image.rb +0 -7
  21. data/app/models/spree/inventory_unit.rb +0 -21
  22. data/app/models/spree/line_item.rb +2 -45
  23. data/app/models/spree/order.rb +3 -136
  24. data/app/models/spree/order/payments.rb +2 -2
  25. data/app/models/spree/order_cancellations.rb +4 -24
  26. data/app/models/spree/order_merger.rb +1 -1
  27. data/app/models/spree/order_updater.rb +2 -11
  28. data/app/models/spree/payment.rb +10 -6
  29. data/app/models/spree/payment/cancellation.rb +3 -22
  30. data/app/models/spree/payment_create.rb +1 -13
  31. data/app/models/spree/payment_method.rb +2 -103
  32. data/app/models/spree/payment_method/credit_card.rb +1 -3
  33. data/app/models/spree/payment_source.rb +2 -2
  34. data/app/models/spree/product.rb +8 -41
  35. data/app/models/spree/product/scopes.rb +0 -28
  36. data/app/models/spree/promotion.rb +2 -6
  37. data/app/models/spree/promotion/actions/create_adjustment.rb +0 -3
  38. data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -3
  39. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -3
  40. data/app/models/spree/promotion/rules/taxon.rb +2 -15
  41. data/app/models/spree/promotion_action.rb +2 -9
  42. data/app/models/spree/promotion_code/batch_builder.rb +0 -14
  43. data/app/models/spree/refund.rb +3 -47
  44. data/app/models/spree/reimbursement.rb +3 -41
  45. data/app/models/spree/reimbursement_performer.rb +2 -8
  46. data/app/models/spree/reimbursement_type/credit.rb +1 -4
  47. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +1 -2
  48. data/app/models/spree/reimbursement_type/store_credit.rb +1 -4
  49. data/app/models/spree/return_authorization.rb +1 -4
  50. data/app/models/spree/return_item.rb +1 -19
  51. data/app/models/spree/shipment.rb +1 -54
  52. data/app/models/spree/shipping_method.rb +1 -26
  53. data/app/models/spree/shipping_rate.rb +0 -2
  54. data/app/models/spree/state.rb +0 -4
  55. data/app/models/spree/stock/availability_validator.rb +2 -2
  56. data/app/models/spree/stock/inventory_validator.rb +2 -2
  57. data/app/models/spree/stock/simple_coordinator.rb +0 -14
  58. data/app/models/spree/stock/splitter/base.rb +2 -7
  59. data/app/models/spree/stock_item.rb +1 -7
  60. data/app/models/spree/store.rb +0 -12
  61. data/app/models/spree/store_credit_category.rb +0 -32
  62. data/app/models/spree/tax_calculator/shipping_rate.rb +1 -12
  63. data/app/models/spree/tax_rate.rb +0 -27
  64. data/app/models/spree/taxon.rb +0 -11
  65. data/app/models/spree/taxon/active_storage_attachment.rb +0 -6
  66. data/app/models/spree/taxon/paperclip_attachment.rb +0 -4
  67. data/app/models/spree/user_address.rb +0 -5
  68. data/app/models/spree/variant.rb +1 -45
  69. data/config/locales/en.yml +0 -8
  70. data/db/migrate/20210122110141_add_name_to_spree_addresses.rb +13 -0
  71. data/lib/generators/solidus/install/install_generator.rb +12 -1
  72. data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +3 -39
  73. data/lib/generators/spree/dummy/dummy_generator.rb +2 -1
  74. data/lib/generators/spree/dummy/templates/rails/database.yml +6 -1
  75. data/lib/generators/spree/dummy/templates/rails/storage.yml +3 -0
  76. data/lib/generators/spree/dummy/templates/rails/test.rb +6 -1
  77. data/lib/spree/app_configuration.rb +7 -66
  78. data/lib/spree/core.rb +10 -12
  79. data/lib/spree/core/class_constantizer.rb +2 -0
  80. data/lib/spree/core/controller_helpers/auth.rb +1 -14
  81. data/lib/spree/core/controller_helpers/order.rb +2 -22
  82. data/lib/spree/core/controller_helpers/payment_parameters.rb +0 -54
  83. data/lib/spree/core/controller_helpers/pricing.rb +0 -8
  84. data/lib/spree/core/controller_helpers/strong_parameters.rb +0 -4
  85. data/lib/spree/core/engine.rb +6 -42
  86. data/lib/spree/core/environment_extension.rb +0 -9
  87. data/lib/spree/core/product_filters.rb +0 -40
  88. data/lib/spree/core/role_configuration.rb +0 -14
  89. data/lib/spree/core/search/base.rb +0 -26
  90. data/lib/spree/core/state_machines.rb +2 -11
  91. data/lib/spree/core/version.rb +1 -1
  92. data/lib/spree/event.rb +0 -31
  93. data/lib/spree/event/configuration.rb +0 -5
  94. data/lib/spree/event/subscriber.rb +0 -18
  95. data/lib/spree/event/subscriber_registry.rb +3 -1
  96. data/lib/spree/i18n.rb +0 -22
  97. data/lib/spree/money.rb +3 -18
  98. data/lib/spree/permitted_attributes.rb +2 -53
  99. data/lib/spree/testing_support.rb +31 -0
  100. data/lib/spree/testing_support/capybara_ext.rb +0 -30
  101. data/lib/spree/testing_support/controller_requests.rb +0 -82
  102. data/lib/spree/testing_support/dummy_app.rb +10 -16
  103. data/lib/spree/testing_support/dummy_app/mailer_previews/test_mailer_preview.rb +4 -0
  104. data/lib/spree/testing_support/dummy_app/migrations.rb +0 -3
  105. data/lib/spree/testing_support/factories.rb +8 -4
  106. data/lib/spree/testing_support/factories/address_factory.rb +6 -2
  107. data/lib/spree/testing_support/factories/adjustment_factory.rb +10 -5
  108. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +5 -0
  109. data/lib/spree/testing_support/factories/calculator_factory.rb +5 -0
  110. data/lib/spree/testing_support/factories/carton_factory.rb +7 -2
  111. data/lib/spree/testing_support/factories/country_factory.rb +5 -0
  112. data/lib/spree/testing_support/factories/credit_card_factory.rb +5 -0
  113. data/lib/spree/testing_support/factories/customer_return_factory.rb +8 -3
  114. data/lib/spree/testing_support/factories/image_factory.rb +5 -0
  115. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +9 -4
  116. data/lib/spree/testing_support/factories/line_item_factory.rb +7 -2
  117. data/lib/spree/testing_support/factories/option_type_factory.rb +8 -0
  118. data/lib/spree/testing_support/factories/option_value_factory.rb +5 -0
  119. data/lib/spree/testing_support/factories/order_factory.rb +11 -7
  120. data/lib/spree/testing_support/factories/order_promotion_factory.rb +7 -2
  121. data/lib/spree/testing_support/factories/payment_factory.rb +9 -4
  122. data/lib/spree/testing_support/factories/payment_method_factory.rb +5 -0
  123. data/lib/spree/testing_support/factories/price_factory.rb +6 -1
  124. data/lib/spree/testing_support/factories/product_factory.rb +10 -5
  125. data/lib/spree/testing_support/factories/product_option_type_factory.rb +7 -2
  126. data/lib/spree/testing_support/factories/product_property_factory.rb +7 -2
  127. data/lib/spree/testing_support/factories/promotion_category_factory.rb +5 -0
  128. data/lib/spree/testing_support/factories/promotion_code_factory.rb +7 -2
  129. data/lib/spree/testing_support/factories/promotion_factory.rb +7 -2
  130. data/lib/spree/testing_support/factories/property_factory.rb +5 -0
  131. data/lib/spree/testing_support/factories/refund_factory.rb +7 -3
  132. data/lib/spree/testing_support/factories/refund_reason_factory.rb +5 -0
  133. data/lib/spree/testing_support/factories/reimbursement_factory.rb +6 -1
  134. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +5 -0
  135. data/lib/spree/testing_support/factories/return_authorization_factory.rb +8 -3
  136. data/lib/spree/testing_support/factories/return_item_factory.rb +8 -3
  137. data/lib/spree/testing_support/factories/return_reason_factory.rb +5 -0
  138. data/lib/spree/testing_support/factories/role_factory.rb +5 -0
  139. data/lib/spree/testing_support/factories/shipment_factory.rb +9 -3
  140. data/lib/spree/testing_support/factories/shipping_category_factory.rb +5 -0
  141. data/lib/spree/testing_support/factories/shipping_method_factory.rb +8 -3
  142. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +7 -2
  143. data/lib/spree/testing_support/factories/state_factory.rb +7 -1
  144. data/lib/spree/testing_support/factories/stock_item_factory.rb +7 -2
  145. data/lib/spree/testing_support/factories/stock_location_factory.rb +8 -3
  146. data/lib/spree/testing_support/factories/stock_movement_factory.rb +6 -1
  147. data/lib/spree/testing_support/factories/stock_package_factory.rb +7 -2
  148. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +5 -0
  149. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +7 -2
  150. data/lib/spree/testing_support/factories/store_credit_factory.rb +8 -3
  151. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +5 -0
  152. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +5 -0
  153. data/lib/spree/testing_support/factories/store_factory.rb +6 -1
  154. data/lib/spree/testing_support/factories/tax_category_factory.rb +7 -1
  155. data/lib/spree/testing_support/factories/tax_rate_factory.rb +8 -3
  156. data/lib/spree/testing_support/factories/taxon_factory.rb +6 -1
  157. data/lib/spree/testing_support/factories/taxonomy_factory.rb +5 -0
  158. data/lib/spree/testing_support/factories/user_factory.rb +8 -3
  159. data/lib/spree/testing_support/factories/variant_factory.rb +9 -4
  160. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +7 -2
  161. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +8 -3
  162. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +7 -2
  163. data/lib/spree/testing_support/factories/zone_factory.rb +7 -2
  164. data/lib/spree/testing_support/factory_bot.rb +68 -0
  165. data/lib/spree/testing_support/order_walkthrough.rb +10 -13
  166. data/lib/spree/testing_support/preferences.rb +0 -25
  167. data/lib/spree/testing_support/sequences.rb +4 -1
  168. data/{app/models → lib}/spree/user_class_handle.rb +0 -0
  169. data/lib/tasks/migrations/migrate_address_names.rake +158 -0
  170. data/lib/tasks/migrations/migrate_default_billing_addresses_to_address_book.rake +38 -0
  171. data/lib/tasks/upgrade.rake +13 -0
  172. data/solidus_core.gemspec +3 -4
  173. metadata +32 -63
  174. data/app/mailers/spree/test_mailer.rb +0 -13
  175. data/app/models/concerns/spree/user_payment_source.rb +0 -26
  176. data/app/models/spree/calculator/free_shipping.rb +0 -21
  177. data/app/models/spree/calculator/percent_per_item.rb +0 -49
  178. data/app/models/spree/calculator/price_sack.rb +0 -27
  179. data/app/models/spree/gateway.rb +0 -14
  180. data/app/models/spree/gateway/bogus.rb +0 -13
  181. data/app/models/spree/gateway/bogus_simple.rb +0 -13
  182. data/app/models/spree/order/checkout.rb +0 -244
  183. data/app/models/spree/order_capturing.rb +0 -50
  184. data/app/models/spree/promotion_handler/free_shipping.rb +0 -9
  185. data/lib/generators/spree/install/install_generator.rb +0 -15
  186. data/lib/solidus/migrations/rename_gateways.rb +0 -41
  187. data/lib/spree/awesome_nested_set_override.rb +0 -44
  188. data/lib/spree/core/current_store.rb +0 -24
  189. data/lib/spree/paranoia_deprecations.rb +0 -41
  190. data/lib/spree/promo/environment.rb +0 -12
  191. data/lib/spree/testing_support/bar_ability.rb +0 -19
  192. data/lib/tasks/core.rake +0 -104
  193. data/lib/tasks/email.rake +0 -11
  194. data/lib/tasks/migrations/copy_order_bill_address_to_credit_card.rake +0 -119
  195. data/lib/tasks/migrations/migrate_shipping_rate_taxes.rake +0 -22
  196. data/lib/tasks/migrations/migrate_user_addresses.rake +0 -34
  197. data/lib/tasks/migrations/rename_gateways.rake +0 -23
  198. data/lib/tasks/order_capturing.rake +0 -27
@@ -37,14 +37,14 @@ module Spree
37
37
 
38
38
  private
39
39
 
40
- def process_payments_with(method)
40
+ def process_payments_with(method_name)
41
41
  # Don't run if there is nothing to pay.
42
42
  return true if payment_total >= total
43
43
 
44
44
  unprocessed_payments.each do |payment|
45
45
  break if payment_total >= total
46
46
 
47
- payment.public_send(method)
47
+ payment.public_send(method_name)
48
48
  end
49
49
  rescue Core::GatewayError => error
50
50
  result = !!Spree::Config[:allow_checkout_on_gateway_error]
@@ -23,16 +23,10 @@ class Spree::OrderCancellations
23
23
  # @api public
24
24
  #
25
25
  # @param [Array<InventoryUnit>] inventory_units the inventory units to be short shipped
26
- # @param [Spree.user_class] whodunnit (deprecated) the system or person that is short shipping the inventory unit
27
26
  # @param [Spree.user_class] created_by the system or person that is short shipping the inventory unit
28
27
  #
29
28
  # @return [Array<UnitCancel>] the units that have been canceled due to short shipping
30
- def short_ship(inventory_units, whodunnit: nil, created_by: nil)
31
- if whodunnit
32
- created_by ||= whodunnit
33
- Spree::Deprecation.warn("Calling #short_ship on #{self} with whodunnit is deprecated, use created_by instead")
34
- end
35
-
29
+ def short_ship(inventory_units, created_by: nil)
36
30
  if inventory_units.map(&:order_id).uniq != [@order.id]
37
31
  raise ArgumentError, "Not all inventory units belong to this order"
38
32
  end
@@ -65,16 +59,10 @@ class Spree::OrderCancellations
65
59
  #
66
60
  # @param [InventoryUnit] inventory_unit the inventory unit to be canceled
67
61
  # @param [String] reason the reason that you are canceling the inventory unit
68
- # @param [Spree.user_class] whodunnit (deprecated) the system or person that is canceling the inventory unit
69
62
  # @param [Spree.user_class] created_by the system or person that is canceling the inventory unit
70
63
  #
71
64
  # @return [UnitCancel] the unit that has been canceled
72
- def cancel_unit(inventory_unit, reason: Spree::UnitCancel::DEFAULT_REASON, whodunnit: nil, created_by: nil)
73
- if whodunnit
74
- created_by ||= whodunnit
75
- Spree::Deprecation.warn("Calling #cancel_unit on #{self} with whodunnit is deprecated, use created_by instead")
76
- end
77
-
65
+ def cancel_unit(inventory_unit, reason: Spree::UnitCancel::DEFAULT_REASON, created_by: nil)
78
66
  unit_cancel = nil
79
67
 
80
68
  Spree::OrderMutex.with_lock!(@order) do
@@ -96,10 +84,7 @@ class Spree::OrderCancellations
96
84
  # @param [Array<InventoryUnit>] inventory_units the inventory units to be reimbursed
97
85
  # @param [Spree.user_class] created_by the user that is performing this action
98
86
  # @return [Reimbursement] the reimbursement for inventory being canceled
99
- def reimburse_units(inventory_units, created_by: nil)
100
- unless created_by
101
- Spree::Deprecation.warn("Calling #reimburse_units on #{self} without created_by is deprecated")
102
- end
87
+ def reimburse_units(inventory_units, created_by:)
103
88
  reimbursement = nil
104
89
 
105
90
  Spree::OrderMutex.with_lock!(@order) do
@@ -113,12 +98,7 @@ class Spree::OrderCancellations
113
98
 
114
99
  private
115
100
 
116
- def short_ship_unit(inventory_unit, whodunnit: nil, created_by: nil)
117
- if whodunnit
118
- created_by ||= whodunnit
119
- Spree::Deprecation.warn("Calling #short_ship_unit on #{self} with whodunnit is deprecated, use created_by instead")
120
- end
121
-
101
+ def short_ship_unit(inventory_unit, created_by: nil)
122
102
  unit_cancel = Spree::UnitCancel.create!(
123
103
  inventory_unit: inventory_unit,
124
104
  reason: Spree::UnitCancel::SHORT_SHIP,
@@ -128,7 +128,7 @@ module Spree
128
128
  # @param [Spree::LineItem] line_item The line item which could not be saved
129
129
  # @return [void]
130
130
  def handle_error(line_item)
131
- order.errors[:base] << line_item.errors.full_messages
131
+ order.errors.add(:base, line_item.errors.full_messages)
132
132
  end
133
133
 
134
134
  # Save the order totals after merge
@@ -3,7 +3,7 @@
3
3
  module Spree
4
4
  class OrderUpdater
5
5
  attr_reader :order
6
- delegate :payments, :line_items, :adjustments, :all_adjustments, :shipments, :update_hooks, :quantity, to: :order
6
+ delegate :payments, :line_items, :adjustments, :all_adjustments, :shipments, :quantity, to: :order
7
7
 
8
8
  def initialize(order)
9
9
  @order = order
@@ -26,20 +26,11 @@ module Spree
26
26
  update_shipments
27
27
  update_shipment_state
28
28
  end
29
- run_hooks if update_hooks.any?
30
29
  Spree::Event.fire 'order_recalculated', order: order
31
30
  persist_totals
32
31
  end
33
32
  end
34
33
 
35
- def run_hooks
36
- Spree::Deprecation.warn \
37
- "This method is deprecated. Please run your hooks by subscribing " \
38
- "to `order_recalculated` and/or `order_finalized` events instead, depending " \
39
- " on when OrderUpdater#run_hooks was called.", caller(1)
40
- update_hooks.each { |hook| order.send hook }
41
- end
42
-
43
34
  # Updates the +shipment_state+ attribute according to the following logic:
44
35
  #
45
36
  # shipped when all Shipments are in the "shipped" state
@@ -186,7 +177,7 @@ module Spree
186
177
  end
187
178
 
188
179
  def persist_totals
189
- order.save!(validate: Spree::Config.run_order_validations_on_order_updater)
180
+ order.save!
190
181
  end
191
182
 
192
183
  def log_state_change(name)
@@ -8,9 +8,6 @@ module Spree
8
8
  class Payment < Spree::Base
9
9
  include Spree::Payment::Processing
10
10
 
11
- alias_attribute :identifier, :number
12
- deprecate :identifier, :identifier=, deprecator: Spree::Deprecation
13
-
14
11
  IDENTIFIER_CHARS = (('A'..'Z').to_a + ('0'..'9').to_a - %w(0 1 I O)).freeze
15
12
  NON_RISKY_AVS_CODES = ['B', 'D', 'H', 'J', 'M', 'Q', 'T', 'V', 'X', 'Y'].freeze
16
13
  RISKY_AVS_CODES = ['A', 'C', 'E', 'F', 'G', 'I', 'K', 'L', 'N', 'O', 'P', 'R', 'S', 'U', 'W', 'Z'].freeze
@@ -168,9 +165,16 @@ module Spree
168
165
 
169
166
  def validate_source
170
167
  if source && !source.valid?
171
- source.errors.each do |field, error|
172
- field_name = I18n.t("activerecord.attributes.#{source.class.to_s.underscore}.#{field}")
173
- errors.add(I18n.t(source.class.to_s.demodulize.underscore, scope: 'spree'), "#{field_name} #{error}")
168
+ if Gem::Requirement.new(">= 6.1").satisfied_by?(Rails.gem_version)
169
+ source.errors.each do |error|
170
+ field_name = I18n.t("activerecord.attributes.#{source.class.to_s.underscore}.#{error.attribute}")
171
+ errors.add(I18n.t(source.class.to_s.demodulize.underscore, scope: 'spree'), "#{field_name} #{error.message}")
172
+ end
173
+ else
174
+ source.errors.each do |field, error|
175
+ field_name = I18n.t("activerecord.attributes.#{source.class.to_s.underscore}.#{field}")
176
+ errors.add(I18n.t(source.class.to_s.demodulize.underscore, scope: 'spree'), "#{field_name} #{error}")
177
+ end
174
178
  end
175
179
  end
176
180
  if errors.any?
@@ -26,16 +26,10 @@ module Spree
26
26
  # @param payment [Spree::Payment] - the payment that should be canceled
27
27
  #
28
28
  def cancel(payment)
29
- # For payment methods already implemeting `try_void`
30
- if try_void_available?(payment.payment_method)
31
- if response = payment.payment_method.try_void(payment)
32
- payment.handle_void_response(response)
33
- else
34
- payment.refunds.create!(amount: payment.credit_allowed, reason: refund_reason, perform_after_create: false).perform!
35
- end
29
+ if response = payment.payment_method.try_void(payment)
30
+ payment.handle_void_response(response)
36
31
  else
37
- # For payment methods not yet implemeting `try_void`
38
- deprecated_behavior(payment)
32
+ payment.refunds.create!(amount: payment.credit_allowed, reason: refund_reason).perform!
39
33
  end
40
34
  end
41
35
 
@@ -44,19 +38,6 @@ module Spree
44
38
  def refund_reason
45
39
  Spree::RefundReason.where(name: reason).first_or_create
46
40
  end
47
-
48
- def try_void_available?(payment_method)
49
- payment_method.respond_to?(:try_void) &&
50
- payment_method.method(:try_void).owner != Spree::PaymentMethod
51
- end
52
-
53
- def deprecated_behavior(payment)
54
- Spree::Deprecation.warn "#{payment.payment_method.class.name}#cancel is deprecated and will be removed. " \
55
- 'Please implement a `try_void` method instead that returns a response object if void succeeds ' \
56
- 'or `false|nil` if not. Solidus will refund the payment then.'
57
- response = payment.payment_method.cancel(payment.response_code)
58
- payment.handle_void_response(response)
59
- end
60
41
  end
61
42
  end
62
43
  end
@@ -7,7 +7,6 @@ module Spree
7
7
  # @param attributes [Hash,ActionController::Parameters] attributes which are assigned to the new payment
8
8
  # * :payment_method_id Id of payment method used for this payment
9
9
  # * :source_attributes Attributes used to build the source of this payment. Usually a {CreditCard}
10
- # * :existing_card_id (Integer) Deprecated: The id of an existing {CreditCard} object to use
11
10
  # * :wallet_payment_source_id (Integer): The id of a {WalletPaymentSource} to use
12
11
  # @param request_env [Hash] rack env of user creating the payment
13
12
  # @param payment [Payment] Internal use only. Instead of making a new payment, change the attributes for an existing one.
@@ -29,13 +28,7 @@ module Spree
29
28
  @payment.request_env = @request_env if @request_env
30
29
  @payment.attributes = @attributes
31
30
 
32
- if source_attributes[:existing_card_id].present?
33
- Spree::Deprecation.warn(
34
- "Passing existing_card_id to PaymentCreate is deprecated. Use wallet_payment_source_id instead.",
35
- caller,
36
- )
37
- build_existing_card
38
- elsif source_attributes[:wallet_payment_source_id].present?
31
+ if source_attributes[:wallet_payment_source_id].present?
39
32
  build_from_wallet_payment_source
40
33
  else
41
34
  build_source
@@ -67,11 +60,6 @@ module Spree
67
60
  build_from_payment_source(wallet_payment_source.payment_source)
68
61
  end
69
62
 
70
- def build_existing_card
71
- credit_card = available_cards.find(source_attributes[:existing_card_id])
72
- build_from_payment_source(credit_card)
73
- end
74
-
75
63
  def build_from_payment_source(payment_source)
76
64
  # FIXME: does this work?
77
65
  if source_attributes[:verification_value]
@@ -18,19 +18,6 @@ module Spree
18
18
 
19
19
  acts_as_list
20
20
 
21
- # @private
22
- def self.const_missing(name)
23
- if name == :DISPLAY
24
- Spree::Deprecation.warn(
25
- "#{self}::DISPLAY has been deprecated and will be removed in Solidus v3.",
26
- caller
27
- )
28
- const_set(:DISPLAY, [:both, :front_end, :back_end])
29
- else
30
- super
31
- end
32
- end
33
-
34
21
  validates :name, :type, presence: true
35
22
 
36
23
  has_many :payments, class_name: "Spree::Payment", inverse_of: :payment_method
@@ -67,51 +54,9 @@ module Spree
67
54
  end
68
55
 
69
56
  class << self
70
- # @deprecated Use Spree::Config.environment.payment_methods instead
71
- def providers
72
- Spree::Deprecation.warn 'Spree::PaymentMethod.providers is deprecated and will be deleted in Solidus 3.0. ' \
73
- 'Please use Rails.application.config.spree.payment_methods instead'
74
- Spree::Config.environment.payment_methods
75
- end
76
-
77
- # @deprecated Use {.active}, {.available_to_users}, and {.available_to_admin} scopes instead.
78
- def available(display_on = nil, store: nil)
79
- Spree::Deprecation.warn "Spree::PaymentMethod.available is deprecated."\
80
- "Please use .active, .available_to_users, and .available_to_admin scopes instead."\
81
- "For payment methods associated with a specific store, use Spree::PaymentMethod.available_to_store(your_store)"\
82
- " as the base applying any further filtering"
83
-
84
- display_on = display_on.to_s
85
-
86
- available_payment_methods =
87
- case display_on
88
- when 'front_end'
89
- active.available_to_users
90
- when 'back_end'
91
- active.available_to_admin
92
- else
93
- active.available_to_users.available_to_admin
94
- end
95
- available_payment_methods.select do |payment|
96
- store.nil? || store.payment_methods.empty? || store.payment_methods.include?(payment)
97
- end
98
- end
99
-
100
57
  def model_name
101
58
  ModelName.new(self, Spree)
102
59
  end
103
-
104
- # @deprecated Use .active.any? instead
105
- def active?
106
- Spree::Deprecation.warn "#{self}.active? is deprecated. Use #{self}.active.any? instead"
107
- where(type: to_s, active: true).count > 0
108
- end
109
-
110
- # @deprecated Use .with_discarded.find instead
111
- def find_with_destroyed(*args)
112
- Spree::Deprecation.warn "#{self}.find_with_destroyed is deprecated. Use #{self}.with_discarded.find instead"
113
- unscoped { find(*args) }
114
- end
115
60
  end
116
61
 
117
62
  # Represents the gateway of this payment method
@@ -138,8 +83,6 @@ module Spree
138
83
 
139
84
  @gateway ||= gateway_class.new(gateway_options)
140
85
  end
141
- alias_method :provider, :gateway
142
- deprecate provider: :gateway, deprecator: Spree::Deprecation
143
86
 
144
87
  # Represents all preferences as a Hash
145
88
  #
@@ -159,29 +102,6 @@ module Spree
159
102
  raise ::NotImplementedError, "You must implement payment_source_class method for #{self.class}."
160
103
  end
161
104
 
162
- # @deprecated Use {Spree::PaymentMethod#available_to_users=} and {Spree::PaymentMethod#available_to_admin=} instead
163
- def display_on=(value)
164
- Spree::Deprecation.warn "Spree::PaymentMethod#display_on= is deprecated."\
165
- "Please use #available_to_users= and #available_to_admin= instead."
166
- self.available_to_users = value.blank? || value == 'front_end'
167
- self.available_to_admin = value.blank? || value == 'back_end'
168
- end
169
-
170
- # @deprecated Use {Spree::PaymentMethod#available_to_users} and {Spree::PaymentMethod#available_to_admin} instead
171
- def display_on
172
- Spree::Deprecation.warn "Spree::PaymentMethod#display_on is deprecated."\
173
- "Please use #available_to_users and #available_to_admin instead."
174
- if available_to_users? && available_to_admin?
175
- ''
176
- elsif available_to_users?
177
- 'front_end'
178
- elsif available_to_admin?
179
- 'back_end'
180
- else
181
- 'none'
182
- end
183
- end
184
-
185
105
  # Used as partial name for your payment method
186
106
  #
187
107
  # Currently your payment method needs to provide these partials:
@@ -202,21 +122,7 @@ module Spree
202
122
  # The view that represents your payment method on orders through the api
203
123
  #
204
124
  def partial_name
205
- deprecated_method_type_override || type.demodulize.underscore
206
- end
207
-
208
- # :nodoc:
209
- # If method_type has been overridden, call it and return the value, otherwise return nil
210
- def deprecated_method_type_override
211
- if method(:method_type).owner != Spree::PaymentMethod
212
- Spree::Deprecation.warn "#{method(:method_type).owner} is overriding PaymentMethod#method_type. This is deprecated and will be removed from Solidus 3.0 (override partial_name instead).", caller[1..-1]
213
- method_type
214
- end
215
- end
216
-
217
- def method_type
218
- Spree::Deprecation.warn "method_type is deprecated and will be removed from Solidus 3.0 (use partial_name instead)", caller
219
- partial_name
125
+ type.demodulize.underscore
220
126
  end
221
127
 
222
128
  def payment_profiles_supported?
@@ -274,14 +180,7 @@ module Spree
274
180
  # Represents the gateway class of this payment method
275
181
  #
276
182
  def gateway_class
277
- if respond_to? :provider_class
278
- Spree::Deprecation.warn \
279
- "provider_class is deprecated and will be removed from Solidus 3.0 " \
280
- "(use gateway_class instead)"
281
- public_send :provider_class
282
- else
283
- raise ::NotImplementedError, "You must implement gateway_class method for #{self.class}."
284
- end
183
+ raise ::NotImplementedError, "You must implement gateway_class method for #{self.class}."
285
184
  end
286
185
  end
287
186
  end
@@ -14,7 +14,7 @@ module Spree
14
14
  end
15
15
 
16
16
  def partial_name
17
- deprecated_method_type_override || 'gateway'
17
+ 'gateway'
18
18
  end
19
19
 
20
20
  def supports?(source)
@@ -27,8 +27,6 @@ module Spree
27
27
  source_ids = order.payments.where(payment_method_id: id).pluck(:source_id).uniq
28
28
  payment_source_class.where(id: source_ids).select(&:reusable?)
29
29
  end
30
- alias_method :sources_by_order, :reusable_sources_by_order
31
- deprecate sources_by_order: :reusable_sources_by_order, deprecator: Spree::Deprecation
32
30
 
33
31
  def reusable_sources(order)
34
32
  if order.completed?
@@ -23,9 +23,9 @@ module Spree
23
23
  end
24
24
 
25
25
  # @param payment [Spree::Payment] the payment we want to know if can be voided
26
- # @return [Boolean] true when the payment is not failed or voided
26
+ # @return [Boolean] true when the payment is not failed, voided or invalid
27
27
  def can_void?(payment)
28
- !payment.failed? && !payment.void?
28
+ payment.can_void?
29
29
  end
30
30
 
31
31
  # Indicates whether its possible to credit the payment. Note that most
@@ -5,10 +5,6 @@ module Spree
5
5
  # variations, called variants. Product properties include description,
6
6
  # permalink, availability, shipping category, etc. that do not change by
7
7
  # variant.
8
- #
9
- # @note this model uses {https://github.com/radar/paranoia paranoia}.
10
- # +#destroy+ will only soft-destroy records and the default scope hides
11
- # soft-destroyed records using +WHERE deleted_at IS NULL+.
12
8
  class Product < Spree::Base
13
9
  extend FriendlyId
14
10
  friendly_id :slug_candidates, use: :history
@@ -89,7 +85,6 @@ module Spree
89
85
  :has_default_price?,
90
86
  :images,
91
87
  :price_for,
92
- :price_in,
93
88
  :rebuild_vat_prices=,
94
89
  to: :find_or_build_master
95
90
 
@@ -186,19 +181,6 @@ module Spree
186
181
  !!discontinue_on&.past?
187
182
  end
188
183
 
189
- # Groups variants by the specified option type.
190
- #
191
- # @deprecated This method is not called in the Solidus codebase
192
- # @param opt_type [String] the name of the option type to group by
193
- # @param pricing_options [Spree::Config.pricing_options_class] the pricing options to search
194
- # for, default: the default pricing options
195
- # @return [Hash] option_type as keys, array of variants as values.
196
- def categorise_variants_from_option(opt_type, pricing_options = Spree::Config.default_pricing_options)
197
- return {} unless option_types.include?(opt_type)
198
- variants.with_prices(pricing_options).group_by { |variant| variant.option_values.detect { |option| option.option_type == opt_type } }
199
- end
200
- deprecate :categorise_variants_from_option, deprecator: Spree::Deprecation
201
-
202
184
  # Poor man's full text search.
203
185
  #
204
186
  # Filters products to those which have any of the strings in +values+ in
@@ -214,17 +196,6 @@ module Spree
214
196
  where conditions.inject(:or)
215
197
  end
216
198
 
217
- # @param current_currency [String] currency to filter variants by; defaults to Spree's default
218
- # @deprecated This method can only handle prices for currencies
219
- # @return [Array<Spree::Variant>] all variants with at least one option value
220
- def variants_and_option_values(current_currency = nil)
221
- variants.includes(:option_values).active(current_currency).select do |variant|
222
- variant.option_values.any?
223
- end
224
- end
225
- deprecate variants_and_option_values: :variants_and_option_values_for,
226
- deprecator: Spree::Deprecation
227
-
228
199
  # @param pricing_options [Spree::Variant::PricingOptions] the pricing options to search
229
200
  # for, default: the default pricing options
230
201
  # @return [Array<Spree::Variant>] all variants with at least one option value
@@ -296,16 +267,6 @@ module Spree
296
267
  end
297
268
  end
298
269
 
299
- # Image that can be used for the product.
300
- #
301
- # Will first search for images on the product, then those belonging to the
302
- # variants. If all else fails, will return a new image object.
303
- # @return [Spree::Image] the image to display
304
- def display_image
305
- Spree::Deprecation.warn('Spree::Product#display_image is DEPRECATED. Choose an image from Spree::Product#gallery instead.')
306
- images.first || variant_images.first || Spree::Image.new
307
- end
308
-
309
270
  # Finds the variant property rule that matches the provided option value ids.
310
271
  #
311
272
  # @param option_value_ids [Array<Integer>] list of option value ids
@@ -366,8 +327,14 @@ module Spree
366
327
  # If the master is invalid, the Product object will be assigned its errors
367
328
  def validate_master
368
329
  unless master.valid?
369
- master.errors.each do |att, error|
370
- errors.add(att, error)
330
+ if Gem::Requirement.new(">= 6.1").satisfied_by?(Rails.gem_version)
331
+ master.errors.each do |error|
332
+ errors.add(error.attribute, error.message)
333
+ end
334
+ else
335
+ master.errors.each do |att, error|
336
+ errors.add(att, error)
337
+ end
371
338
  end
372
339
  end
373
340
  end