solidus_core 2.9.0 → 2.10.0

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.
Files changed (219) hide show
  1. checksums.yaml +4 -4
  2. data/app/helpers/spree/base_helper.rb +4 -4
  3. data/app/helpers/spree/products_helper.rb +2 -1
  4. data/app/jobs/spree/promotion_code_batch_job.rb +2 -2
  5. data/app/models/concerns/spree/user_address_book.rb +2 -2
  6. data/app/models/concerns/spree/user_methods.rb +2 -2
  7. data/app/models/spree/address.rb +13 -17
  8. data/app/models/spree/adjustment.rb +20 -9
  9. data/app/models/spree/asset.rb +1 -1
  10. data/app/models/spree/base.rb +0 -2
  11. data/app/models/spree/calculator/price_sack.rb +1 -1
  12. data/app/models/spree/calculator/shipping/flexi_rate.rb +2 -2
  13. data/app/models/spree/calculator/tiered_flat_rate.rb +5 -5
  14. data/app/models/spree/calculator/tiered_percent.rb +6 -6
  15. data/app/models/spree/calculator.rb +1 -1
  16. data/app/models/spree/carton.rb +3 -3
  17. data/app/models/spree/classification.rb +2 -2
  18. data/app/models/spree/credit_card.rb +4 -4
  19. data/app/models/spree/customer_return.rb +1 -1
  20. data/app/models/spree/image/paperclip_attachment.rb +1 -1
  21. data/app/models/spree/inventory_unit.rb +5 -23
  22. data/app/models/spree/line_item.rb +4 -4
  23. data/app/models/spree/line_item_action.rb +2 -2
  24. data/app/models/spree/log_entry.rb +1 -1
  25. data/app/models/spree/option_value.rb +1 -1
  26. data/app/models/spree/option_values_variant.rb +2 -2
  27. data/app/models/spree/order/checkout.rb +1 -1
  28. data/app/models/spree/order/payments.rb +2 -2
  29. data/app/models/spree/order.rb +11 -10
  30. data/app/models/spree/order_cancellations.rb +1 -1
  31. data/app/models/spree/order_capturing.rb +2 -2
  32. data/app/models/spree/order_contents.rb +2 -2
  33. data/app/models/spree/order_mutex.rb +1 -1
  34. data/app/models/spree/order_promotion.rb +3 -3
  35. data/app/models/spree/order_shipping.rb +1 -1
  36. data/app/models/spree/order_taxation.rb +3 -3
  37. data/app/models/spree/payment/processing.rb +3 -3
  38. data/app/models/spree/payment.rb +8 -45
  39. data/app/models/spree/payment_capture_event.rb +1 -1
  40. data/app/models/spree/payment_method/bogus_credit_card.rb +1 -1
  41. data/app/models/spree/payment_method.rb +5 -2
  42. data/app/models/spree/payment_source.rb +1 -1
  43. data/app/models/spree/price.rb +2 -2
  44. data/app/models/spree/product/scopes.rb +218 -210
  45. data/app/models/spree/product.rb +5 -5
  46. data/app/models/spree/product_option_type.rb +2 -2
  47. data/app/models/spree/product_promotion_rule.rb +2 -2
  48. data/app/models/spree/product_property.rb +2 -2
  49. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +1 -1
  50. data/app/models/spree/promotion/actions/free_shipping.rb +1 -1
  51. data/app/models/spree/promotion/rules/option_value.rb +2 -2
  52. data/app/models/spree/promotion/rules/product.rb +3 -3
  53. data/app/models/spree/promotion.rb +28 -13
  54. data/app/models/spree/promotion_action.rb +2 -2
  55. data/app/models/spree/promotion_chooser.rb +2 -2
  56. data/app/models/spree/promotion_code/batch_builder.rb +3 -3
  57. data/app/models/spree/promotion_code.rb +11 -10
  58. data/app/models/spree/promotion_code_batch.rb +1 -1
  59. data/app/models/spree/promotion_rule.rb +2 -2
  60. data/app/models/spree/promotion_rule_role.rb +2 -2
  61. data/app/models/spree/promotion_rule_store.rb +2 -2
  62. data/app/models/spree/promotion_rule_taxon.rb +2 -2
  63. data/app/models/spree/promotion_rule_user.rb +2 -2
  64. data/app/models/spree/refund.rb +5 -5
  65. data/app/models/spree/reimbursement/credit.rb +2 -2
  66. data/app/models/spree/reimbursement/reimbursement_type_engine.rb +1 -1
  67. data/app/models/spree/reimbursement.rb +5 -13
  68. data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
  69. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +2 -2
  70. data/app/models/spree/return_authorization.rb +4 -10
  71. data/app/models/spree/return_item/eligibility_validator/default.rb +1 -1
  72. data/app/models/spree/return_item.rb +13 -52
  73. data/app/models/spree/role_user.rb +2 -2
  74. data/app/models/spree/shipment.rb +7 -41
  75. data/app/models/spree/shipping_calculator.rb +0 -4
  76. data/app/models/spree/shipping_manifest.rb +3 -3
  77. data/app/models/spree/shipping_method.rb +2 -2
  78. data/app/models/spree/shipping_method_category.rb +2 -2
  79. data/app/models/spree/shipping_method_stock_location.rb +2 -2
  80. data/app/models/spree/shipping_method_zone.rb +2 -2
  81. data/app/models/spree/shipping_rate.rb +2 -2
  82. data/app/models/spree/shipping_rate_tax.rb +2 -2
  83. data/app/models/spree/state.rb +2 -2
  84. data/app/models/spree/state_change.rb +2 -2
  85. data/app/models/spree/stock/differentiator.rb +1 -1
  86. data/app/models/spree/stock/package.rb +1 -1
  87. data/app/models/spree/stock_item.rb +3 -3
  88. data/app/models/spree/stock_location.rb +2 -2
  89. data/app/models/spree/stock_movement.rb +2 -2
  90. data/app/models/spree/stock_quantities.rb +13 -12
  91. data/app/models/spree/store_credit.rb +8 -8
  92. data/app/models/spree/store_credit_event.rb +3 -3
  93. data/app/models/spree/store_payment_method.rb +2 -2
  94. data/app/models/spree/store_shipping_method.rb +2 -2
  95. data/app/models/spree/tax_calculator/default.rb +0 -4
  96. data/app/models/spree/tax_calculator/shipping_rate.rb +0 -3
  97. data/app/models/spree/tax_rate.rb +5 -1
  98. data/app/models/spree/tax_rate_tax_category.rb +2 -2
  99. data/app/models/spree/taxon/paperclip_attachment.rb +13 -0
  100. data/app/models/spree/unit_cancel.rb +5 -2
  101. data/app/models/spree/user_address.rb +2 -2
  102. data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +36 -0
  103. data/app/models/spree/user_last_url_storer.rb +46 -0
  104. data/app/models/spree/user_stock_location.rb +2 -2
  105. data/app/models/spree/variant/scopes.rb +37 -29
  106. data/app/models/spree/variant.rb +10 -10
  107. data/app/models/spree/variant_property_rule.rb +1 -1
  108. data/app/models/spree/variant_property_rule_condition.rb +2 -2
  109. data/app/models/spree/variant_property_rule_value.rb +2 -2
  110. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +1 -1
  111. data/app/models/spree/wallet_payment_source.rb +2 -2
  112. data/app/models/spree/zone.rb +1 -1
  113. data/app/models/spree/zone_member.rb +2 -2
  114. data/config/initializers/inflections.rb +5 -0
  115. data/config/initializers/money.rb +2 -0
  116. data/config/locales/en.yml +34 -3
  117. data/lib/generators/spree/dummy/dummy_generator.rb +2 -0
  118. data/lib/generators/spree/install/install_generator.rb +3 -0
  119. data/lib/generators/spree/install/templates/config/initializers/spree.rb.tt +8 -0
  120. data/lib/spree/app_configuration.rb +18 -3
  121. data/lib/spree/core/controller_helpers/auth.rb +1 -13
  122. data/lib/spree/core/engine.rb +2 -2
  123. data/lib/spree/core/environment_extension.rb +9 -0
  124. data/lib/spree/core/importer/order.rb +28 -28
  125. data/lib/spree/core/importer/product.rb +2 -2
  126. data/lib/spree/core/product_filters.rb +15 -15
  127. data/lib/spree/core/role_configuration.rb +2 -2
  128. data/lib/spree/core/search/variant.rb +1 -1
  129. data/lib/spree/core/state_machines/inventory_unit.rb +42 -0
  130. data/lib/spree/core/state_machines/payment.rb +61 -0
  131. data/lib/spree/core/state_machines/reimbursement.rb +33 -0
  132. data/lib/spree/core/state_machines/return_authorization.rb +32 -0
  133. data/lib/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
  134. data/lib/spree/core/state_machines/return_item/reception_status.rb +42 -0
  135. data/lib/spree/core/state_machines/shipment.rb +58 -0
  136. data/lib/spree/core/state_machines.rb +78 -0
  137. data/lib/spree/core/stock_configuration.rb +1 -0
  138. data/lib/spree/core/validators/email.rb +1 -8
  139. data/lib/spree/core/version.rb +1 -1
  140. data/lib/spree/core.rb +12 -0
  141. data/lib/spree/money.rb +2 -2
  142. data/lib/spree/permission_sets/default_customer.rb +1 -1
  143. data/lib/spree/permission_sets/user_management.rb +3 -0
  144. data/lib/spree/permitted_attributes.rb +3 -3
  145. data/lib/spree/preferences/static_model_preferences.rb +2 -2
  146. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +6 -2
  147. data/lib/spree/testing_support/dummy_app.rb +4 -1
  148. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +8 -1
  149. data/lib/spree/testing_support/factories/promotion_factory.rb +7 -0
  150. data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
  151. data/lib/spree/testing_support/preferences.rb +54 -15
  152. data/solidus_core.gemspec +6 -6
  153. data/spec/lib/search/base_spec.rb +5 -1
  154. data/spec/lib/search/variant_spec.rb +1 -1
  155. data/spec/lib/spree/core/environment_extension_spec.rb +12 -1
  156. data/spec/lib/spree/core/stock_configuration_spec.rb +36 -0
  157. data/spec/lib/spree/core/validators/email_spec.rb +18 -18
  158. data/spec/lib/spree/event_spec.rb +15 -3
  159. data/spec/models/spree/address_spec.rb +23 -0
  160. data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +1 -1
  161. data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +1 -1
  162. data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +1 -1
  163. data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +2 -2
  164. data/spec/models/spree/calculator/shipping/per_item_spec.rb +1 -1
  165. data/spec/models/spree/calculator/shipping/price_sack_spec.rb +24 -15
  166. data/spec/models/spree/carton_spec.rb +10 -2
  167. data/spec/models/spree/classification_spec.rb +21 -9
  168. data/spec/models/spree/concerns/user_address_book_spec.rb +4 -4
  169. data/spec/models/spree/concerns/user_methods_spec.rb +5 -4
  170. data/spec/models/spree/credit_card_spec.rb +2 -2
  171. data/spec/models/spree/customer_return_spec.rb +1 -1
  172. data/spec/models/spree/order/checkout_spec.rb +1 -1
  173. data/spec/models/spree/order/outstanding_balance_integration_spec.rb +5 -5
  174. data/spec/models/spree/order/payment_spec.rb +1 -1
  175. data/spec/models/spree/order_contents_spec.rb +1 -1
  176. data/spec/models/spree/order_inventory_spec.rb +3 -3
  177. data/spec/models/spree/order_merger_spec.rb +3 -3
  178. data/spec/models/spree/order_shipping_spec.rb +1 -1
  179. data/spec/models/spree/order_spec.rb +14 -21
  180. data/spec/models/spree/order_updater_spec.rb +4 -3
  181. data/spec/models/spree/payment_create_spec.rb +6 -16
  182. data/spec/models/spree/payment_spec.rb +12 -12
  183. data/spec/models/spree/permission_sets/user_management_spec.rb +2 -0
  184. data/spec/models/spree/preference_spec.rb +4 -4
  185. data/spec/models/spree/preferences/preferable_spec.rb +3 -3
  186. data/spec/models/spree/preferences/statically_configurable_spec.rb +2 -2
  187. data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +2 -2
  188. data/spec/models/spree/promotion/rules/nth_order_spec.rb +2 -2
  189. data/spec/models/spree/promotion_rule_spec.rb +6 -6
  190. data/spec/models/spree/promotion_spec.rb +71 -54
  191. data/spec/models/spree/reimbursement_type/original_payment_spec.rb +3 -3
  192. data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +1 -1
  193. data/spec/models/spree/return_item_spec.rb +11 -11
  194. data/spec/models/spree/returns_calculator_spec.rb +2 -2
  195. data/spec/models/spree/shipment_spec.rb +6 -6
  196. data/spec/models/spree/shipping_calculator_spec.rb +1 -13
  197. data/spec/models/spree/shipping_method_spec.rb +32 -0
  198. data/spec/models/spree/stock/availability_validator_spec.rb +2 -2
  199. data/spec/models/spree/stock/differentiator_spec.rb +2 -2
  200. data/spec/models/spree/stock/estimator_spec.rb +3 -3
  201. data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +4 -4
  202. data/spec/models/spree/stock/package_spec.rb +28 -28
  203. data/spec/models/spree/stock/quantifier_spec.rb +3 -3
  204. data/spec/models/spree/stock/simple_coordinator_spec.rb +11 -11
  205. data/spec/models/spree/stock/splitter/base_spec.rb +4 -4
  206. data/spec/models/spree/stock/splitter/shipping_category_spec.rb +7 -7
  207. data/spec/models/spree/stock_quantities_spec.rb +1 -1
  208. data/spec/models/spree/store_credit_spec.rb +8 -8
  209. data/spec/models/spree/tax_category_spec.rb +1 -1
  210. data/spec/models/spree/tax_rate_spec.rb +1 -0
  211. data/spec/models/spree/taxon_spec.rb +2 -2
  212. data/spec/models/spree/taxons/paperclip_attachment_spec.rb +29 -0
  213. data/spec/models/spree/unit_cancel_spec.rb +5 -0
  214. data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +31 -0
  215. data/spec/models/spree/user_last_url_storer_spec.rb +60 -0
  216. data/spec/models/spree/user_spec.rb +3 -3
  217. metadata +46 -41
  218. data/spec/migrate/20190106184413_remove_code_from_spree_promotions_spec.rb +0 -148
  219. data/spec/models/spree/order/updating_spec.rb +0 -18
@@ -35,7 +35,7 @@ module Spree
35
35
  end
36
36
 
37
37
  def update_cart(params)
38
- if order.update_attributes(params)
38
+ if order.update(params)
39
39
  unless order.completed?
40
40
  order.line_items = order.line_items.select { |li| li.quantity > 0 }
41
41
  # Update totals, then check if the order is eligible for any cart promotions.
@@ -61,7 +61,7 @@ module Spree
61
61
  raise ArgumentError, 'user or name must be specified'
62
62
  end
63
63
 
64
- order.update_attributes!(
64
+ order.update!(
65
65
  approver: user,
66
66
  approver_name: name,
67
67
  approved_at: Time.current
@@ -4,7 +4,7 @@ module Spree
4
4
  class OrderMutex < Spree::Base
5
5
  class LockFailed < StandardError; end
6
6
 
7
- belongs_to :order, class_name: "Spree::Order"
7
+ belongs_to :order, class_name: "Spree::Order", optional: true
8
8
 
9
9
  scope :expired, -> { where(arel_table[:created_at].lteq(Spree::Config[:order_mutex_max_age].seconds.ago)) }
10
10
 
@@ -8,9 +8,9 @@ module Spree
8
8
  class OrderPromotion < Spree::Base
9
9
  self.table_name = 'spree_orders_promotions'
10
10
 
11
- belongs_to :order, class_name: 'Spree::Order'
12
- belongs_to :promotion, class_name: 'Spree::Promotion'
13
- belongs_to :promotion_code, class_name: 'Spree::PromotionCode'
11
+ belongs_to :order, class_name: 'Spree::Order', optional: true
12
+ belongs_to :promotion, class_name: 'Spree::Promotion', optional: true
13
+ belongs_to :promotion_code, class_name: 'Spree::PromotionCode', optional: true
14
14
 
15
15
  validates :order, presence: true
16
16
  validates :promotion, presence: true
@@ -64,7 +64,7 @@ class Spree::OrderShipping
64
64
  inventory_units.map(&:shipment).uniq.each do |shipment|
65
65
  # Temporarily propagate the tracking number to the shipment as well
66
66
  # TODO: Remove tracking numbers from shipments.
67
- shipment.update_attributes!(tracking: tracking_number)
67
+ shipment.update!(tracking: tracking_number)
68
68
 
69
69
  next unless shipment.inventory_units.reload.all? { |iu| iu.shipped? || iu.canceled? }
70
70
  # TODO: make OrderShipping#ship_shipment call Shipment#ship! rather than
@@ -25,12 +25,12 @@ module Spree
25
25
  # @return [void]
26
26
  def apply(taxes)
27
27
  @order.line_items.each do |item|
28
- taxed_items = taxes.line_item_taxes.select { |i| i.item_id == item.id }
28
+ taxed_items = taxes.line_item_taxes.select { |element| element.item_id == item.id }
29
29
  update_adjustments(item, taxed_items)
30
30
  end
31
31
 
32
32
  @order.shipments.each do |item|
33
- taxed_items = taxes.shipment_taxes.select { |i| i.item_id == item.id }
33
+ taxed_items = taxes.shipment_taxes.select { |element| element.item_id == item.id }
34
34
  update_adjustments(item, taxed_items)
35
35
  end
36
36
  end
@@ -74,7 +74,7 @@ module Spree
74
74
  label: tax_item.label,
75
75
  included: tax_item.included_in_price
76
76
  )
77
- tax_adjustment.update_attributes!(amount: tax_item.amount)
77
+ tax_adjustment.update!(amount: tax_item.amount)
78
78
  tax_adjustment
79
79
  end
80
80
  end
@@ -59,7 +59,7 @@ module Spree
59
59
  )
60
60
  money = ::Money.new(amount, currency)
61
61
  capture_events.create!(amount: money.to_d)
62
- update_attributes!(amount: captured_amount)
62
+ update!(amount: captured_amount)
63
63
  handle_response(response, :complete, :failure)
64
64
  end
65
65
  end
@@ -199,8 +199,8 @@ module Spree
199
199
 
200
200
  def protect_from_connection_error
201
201
  yield
202
- rescue ActiveMerchant::ConnectionError => e
203
- gateway_error(e)
202
+ rescue ActiveMerchant::ConnectionError => error
203
+ gateway_error(error)
204
204
  end
205
205
 
206
206
  def gateway_error(error)
@@ -15,9 +15,9 @@ module Spree
15
15
  NON_RISKY_AVS_CODES = ['B', 'D', 'H', 'J', 'M', 'Q', 'T', 'V', 'X', 'Y'].freeze
16
16
  RISKY_AVS_CODES = ['A', 'C', 'E', 'F', 'G', 'I', 'K', 'L', 'N', 'O', 'P', 'R', 'S', 'U', 'W', 'Z'].freeze
17
17
 
18
- belongs_to :order, class_name: 'Spree::Order', touch: true, inverse_of: :payments
19
- belongs_to :source, polymorphic: true
20
- belongs_to :payment_method, -> { with_deleted }, class_name: 'Spree::PaymentMethod', inverse_of: :payments
18
+ belongs_to :order, class_name: 'Spree::Order', touch: true, inverse_of: :payments, optional: true
19
+ belongs_to :source, polymorphic: true, optional: true
20
+ belongs_to :payment_method, -> { with_deleted }, class_name: 'Spree::PaymentMethod', inverse_of: :payments, optional: true
21
21
 
22
22
  has_many :offsets, -> { offset_payment }, class_name: "Spree::Payment", foreign_key: :source_id
23
23
  has_many :log_entries, as: :source
@@ -47,7 +47,7 @@ module Spree
47
47
  default_scope -> { order(:created_at) }
48
48
 
49
49
  scope :from_credit_card, -> { where(source_type: 'Spree::CreditCard') }
50
- scope :with_state, ->(s) { where(state: s.to_s) }
50
+ scope :with_state, ->(state) { where(state: state.to_s) }
51
51
  # "offset" is reserved by activerecord
52
52
  scope :offset_payment, -> { where("source_type = 'Spree::Payment' AND amount < 0 AND state = 'completed'") }
53
53
 
@@ -63,44 +63,7 @@ module Spree
63
63
  scope :store_credits, -> { where(source_type: Spree::StoreCredit.to_s) }
64
64
  scope :not_store_credits, -> { where(arel_table[:source_type].not_eq(Spree::StoreCredit.to_s).or(arel_table[:source_type].eq(nil))) }
65
65
 
66
- # order state machine (see http://github.com/pluginaweek/state_machine/tree/master for details)
67
- state_machine initial: :checkout do
68
- # With card payments, happens before purchase or authorization happens
69
- #
70
- # Setting it after creating a profile and authorizing a full amount will
71
- # prevent the payment from being authorized again once Order transitions
72
- # to complete
73
- event :started_processing do
74
- transition from: [:checkout, :pending, :completed, :processing], to: :processing
75
- end
76
- # When processing during checkout fails
77
- event :failure do
78
- transition from: [:pending, :processing], to: :failed
79
- end
80
- # With card payments this represents authorizing the payment
81
- event :pend do
82
- transition from: [:checkout, :processing], to: :pending
83
- end
84
- # With card payments this represents completing a purchase or capture transaction
85
- event :complete do
86
- transition from: [:processing, :pending, :checkout], to: :completed
87
- end
88
- event :void do
89
- transition from: [:pending, :processing, :completed, :checkout], to: :void
90
- end
91
- # when the card brand isnt supported
92
- event :invalidate do
93
- transition from: [:checkout], to: :invalid
94
- end
95
-
96
- after_transition do |payment, transition|
97
- payment.state_changes.create!(
98
- previous_state: transition.from,
99
- next_state: transition.to,
100
- name: 'payment'
101
- )
102
- end
103
- end
66
+ include ::Spree::Config.state_machines.payment
104
67
 
105
68
  # @return [String] this payment's response code
106
69
  def transaction_id
@@ -232,8 +195,8 @@ module Spree
232
195
  return if source.imported
233
196
 
234
197
  payment_method.create_profile(self)
235
- rescue ActiveMerchant::ConnectionError => e
236
- gateway_error e
198
+ rescue ActiveMerchant::ConnectionError => error
199
+ gateway_error error
237
200
  end
238
201
 
239
202
  def invalidate_old_payments
@@ -273,7 +236,7 @@ module Spree
273
236
  # type of payment getting refunded, hence the additional check
274
237
  # if the source is a store credit.
275
238
  if store_credit? && source.is_a?(Spree::StoreCredit)
276
- source.update_attributes!({
239
+ source.update!({
277
240
  action: Spree::StoreCredit::ELIGIBLE_ACTION,
278
241
  action_amount: amount,
279
242
  action_authorization_code: response_code
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Spree
4
4
  class PaymentCaptureEvent < Spree::Base
5
- belongs_to :payment, class_name: 'Spree::Payment'
5
+ belongs_to :payment, class_name: 'Spree::Payment', optional: true
6
6
 
7
7
  def display_amount
8
8
  Spree::Money.new(amount, { currency: payment.currency })
@@ -19,7 +19,7 @@ module Spree
19
19
  return if payment.source.has_payment_profile?
20
20
  # simulate the storage of credit card profile using remote service
21
21
  if success = VALID_CCS.include?(payment.source.number)
22
- payment.source.update_attributes(gateway_customer_profile_id: generate_profile_id(success))
22
+ payment.source.update(gateway_customer_profile_id: generate_profile_id(success))
23
23
  end
24
24
  end
25
25
 
@@ -93,8 +93,8 @@ module Spree
93
93
  else
94
94
  active.available_to_users.available_to_admin
95
95
  end
96
- available_payment_methods.select do |p|
97
- store.nil? || store.payment_methods.empty? || store.payment_methods.include?(p)
96
+ available_payment_methods.select do |payment|
97
+ store.nil? || store.payment_methods.empty? || store.payment_methods.include?(payment)
98
98
  end
99
99
  end
100
100
 
@@ -199,6 +199,9 @@ module Spree
199
199
  # 4. app/views/spree/admin/payments/source_views/_{partial_name}.html.erb
200
200
  # The view that represents your payment method on orders in the backend
201
201
  #
202
+ # 5. app/views/spree/api/payments/source_views/_{partial_name}.json.jbuilder
203
+ # The view that represents your payment method on orders through the api
204
+ #
202
205
  def partial_name
203
206
  deprecated_method_type_override || type.demodulize.underscore
204
207
  end
@@ -4,7 +4,7 @@ module Spree
4
4
  class PaymentSource < Spree::Base
5
5
  self.abstract_class = true
6
6
 
7
- belongs_to :payment_method
7
+ belongs_to :payment_method, optional: true
8
8
 
9
9
  has_many :payments, as: :source
10
10
  has_many :wallet_payment_sources, class_name: 'Spree::WalletPaymentSource', as: :payment_source, inverse_of: :payment_source
@@ -12,8 +12,8 @@ module Spree
12
12
 
13
13
  MAXIMUM_AMOUNT = BigDecimal('99_999_999.99')
14
14
 
15
- belongs_to :variant, -> { with_deleted }, class_name: 'Spree::Variant', touch: true
16
- belongs_to :country, class_name: "Spree::Country", foreign_key: "country_iso", primary_key: "iso"
15
+ belongs_to :variant, -> { with_deleted }, class_name: 'Spree::Variant', touch: true, optional: true
16
+ belongs_to :country, class_name: "Spree::Country", foreign_key: "country_iso", primary_key: "iso", optional: true
17
17
 
18
18
  delegate :product, to: :variant
19
19
  delegate :tax_rates, to: :variant