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.
- checksums.yaml +4 -4
- data/app/helpers/spree/base_helper.rb +4 -4
- data/app/helpers/spree/products_helper.rb +2 -1
- data/app/jobs/spree/promotion_code_batch_job.rb +2 -2
- data/app/models/concerns/spree/user_address_book.rb +2 -2
- data/app/models/concerns/spree/user_methods.rb +2 -2
- data/app/models/spree/address.rb +13 -17
- data/app/models/spree/adjustment.rb +20 -9
- data/app/models/spree/asset.rb +1 -1
- data/app/models/spree/base.rb +0 -2
- data/app/models/spree/calculator/price_sack.rb +1 -1
- data/app/models/spree/calculator/shipping/flexi_rate.rb +2 -2
- data/app/models/spree/calculator/tiered_flat_rate.rb +5 -5
- data/app/models/spree/calculator/tiered_percent.rb +6 -6
- data/app/models/spree/calculator.rb +1 -1
- data/app/models/spree/carton.rb +3 -3
- data/app/models/spree/classification.rb +2 -2
- data/app/models/spree/credit_card.rb +4 -4
- data/app/models/spree/customer_return.rb +1 -1
- data/app/models/spree/image/paperclip_attachment.rb +1 -1
- data/app/models/spree/inventory_unit.rb +5 -23
- data/app/models/spree/line_item.rb +4 -4
- data/app/models/spree/line_item_action.rb +2 -2
- data/app/models/spree/log_entry.rb +1 -1
- data/app/models/spree/option_value.rb +1 -1
- data/app/models/spree/option_values_variant.rb +2 -2
- data/app/models/spree/order/checkout.rb +1 -1
- data/app/models/spree/order/payments.rb +2 -2
- data/app/models/spree/order.rb +11 -10
- data/app/models/spree/order_cancellations.rb +1 -1
- data/app/models/spree/order_capturing.rb +2 -2
- data/app/models/spree/order_contents.rb +2 -2
- data/app/models/spree/order_mutex.rb +1 -1
- data/app/models/spree/order_promotion.rb +3 -3
- data/app/models/spree/order_shipping.rb +1 -1
- data/app/models/spree/order_taxation.rb +3 -3
- data/app/models/spree/payment/processing.rb +3 -3
- data/app/models/spree/payment.rb +8 -45
- data/app/models/spree/payment_capture_event.rb +1 -1
- data/app/models/spree/payment_method/bogus_credit_card.rb +1 -1
- data/app/models/spree/payment_method.rb +5 -2
- data/app/models/spree/payment_source.rb +1 -1
- data/app/models/spree/price.rb +2 -2
- data/app/models/spree/product/scopes.rb +218 -210
- data/app/models/spree/product.rb +5 -5
- data/app/models/spree/product_option_type.rb +2 -2
- data/app/models/spree/product_promotion_rule.rb +2 -2
- data/app/models/spree/product_property.rb +2 -2
- data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +1 -1
- data/app/models/spree/promotion/actions/free_shipping.rb +1 -1
- data/app/models/spree/promotion/rules/option_value.rb +2 -2
- data/app/models/spree/promotion/rules/product.rb +3 -3
- data/app/models/spree/promotion.rb +28 -13
- data/app/models/spree/promotion_action.rb +2 -2
- data/app/models/spree/promotion_chooser.rb +2 -2
- data/app/models/spree/promotion_code/batch_builder.rb +3 -3
- data/app/models/spree/promotion_code.rb +11 -10
- data/app/models/spree/promotion_code_batch.rb +1 -1
- data/app/models/spree/promotion_rule.rb +2 -2
- data/app/models/spree/promotion_rule_role.rb +2 -2
- data/app/models/spree/promotion_rule_store.rb +2 -2
- data/app/models/spree/promotion_rule_taxon.rb +2 -2
- data/app/models/spree/promotion_rule_user.rb +2 -2
- data/app/models/spree/refund.rb +5 -5
- data/app/models/spree/reimbursement/credit.rb +2 -2
- data/app/models/spree/reimbursement/reimbursement_type_engine.rb +1 -1
- data/app/models/spree/reimbursement.rb +5 -13
- data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +2 -2
- data/app/models/spree/return_authorization.rb +4 -10
- data/app/models/spree/return_item/eligibility_validator/default.rb +1 -1
- data/app/models/spree/return_item.rb +13 -52
- data/app/models/spree/role_user.rb +2 -2
- data/app/models/spree/shipment.rb +7 -41
- data/app/models/spree/shipping_calculator.rb +0 -4
- data/app/models/spree/shipping_manifest.rb +3 -3
- data/app/models/spree/shipping_method.rb +2 -2
- data/app/models/spree/shipping_method_category.rb +2 -2
- data/app/models/spree/shipping_method_stock_location.rb +2 -2
- data/app/models/spree/shipping_method_zone.rb +2 -2
- data/app/models/spree/shipping_rate.rb +2 -2
- data/app/models/spree/shipping_rate_tax.rb +2 -2
- data/app/models/spree/state.rb +2 -2
- data/app/models/spree/state_change.rb +2 -2
- data/app/models/spree/stock/differentiator.rb +1 -1
- data/app/models/spree/stock/package.rb +1 -1
- data/app/models/spree/stock_item.rb +3 -3
- data/app/models/spree/stock_location.rb +2 -2
- data/app/models/spree/stock_movement.rb +2 -2
- data/app/models/spree/stock_quantities.rb +13 -12
- data/app/models/spree/store_credit.rb +8 -8
- data/app/models/spree/store_credit_event.rb +3 -3
- data/app/models/spree/store_payment_method.rb +2 -2
- data/app/models/spree/store_shipping_method.rb +2 -2
- data/app/models/spree/tax_calculator/default.rb +0 -4
- data/app/models/spree/tax_calculator/shipping_rate.rb +0 -3
- data/app/models/spree/tax_rate.rb +5 -1
- data/app/models/spree/tax_rate_tax_category.rb +2 -2
- data/app/models/spree/taxon/paperclip_attachment.rb +13 -0
- data/app/models/spree/unit_cancel.rb +5 -2
- data/app/models/spree/user_address.rb +2 -2
- data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +36 -0
- data/app/models/spree/user_last_url_storer.rb +46 -0
- data/app/models/spree/user_stock_location.rb +2 -2
- data/app/models/spree/variant/scopes.rb +37 -29
- data/app/models/spree/variant.rb +10 -10
- data/app/models/spree/variant_property_rule.rb +1 -1
- data/app/models/spree/variant_property_rule_condition.rb +2 -2
- data/app/models/spree/variant_property_rule_value.rb +2 -2
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +1 -1
- data/app/models/spree/wallet_payment_source.rb +2 -2
- data/app/models/spree/zone.rb +1 -1
- data/app/models/spree/zone_member.rb +2 -2
- data/config/initializers/inflections.rb +5 -0
- data/config/initializers/money.rb +2 -0
- data/config/locales/en.yml +34 -3
- data/lib/generators/spree/dummy/dummy_generator.rb +2 -0
- data/lib/generators/spree/install/install_generator.rb +3 -0
- data/lib/generators/spree/install/templates/config/initializers/spree.rb.tt +8 -0
- data/lib/spree/app_configuration.rb +18 -3
- data/lib/spree/core/controller_helpers/auth.rb +1 -13
- data/lib/spree/core/engine.rb +2 -2
- data/lib/spree/core/environment_extension.rb +9 -0
- data/lib/spree/core/importer/order.rb +28 -28
- data/lib/spree/core/importer/product.rb +2 -2
- data/lib/spree/core/product_filters.rb +15 -15
- data/lib/spree/core/role_configuration.rb +2 -2
- data/lib/spree/core/search/variant.rb +1 -1
- data/lib/spree/core/state_machines/inventory_unit.rb +42 -0
- data/lib/spree/core/state_machines/payment.rb +61 -0
- data/lib/spree/core/state_machines/reimbursement.rb +33 -0
- data/lib/spree/core/state_machines/return_authorization.rb +32 -0
- data/lib/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
- data/lib/spree/core/state_machines/return_item/reception_status.rb +42 -0
- data/lib/spree/core/state_machines/shipment.rb +58 -0
- data/lib/spree/core/state_machines.rb +78 -0
- data/lib/spree/core/stock_configuration.rb +1 -0
- data/lib/spree/core/validators/email.rb +1 -8
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/core.rb +12 -0
- data/lib/spree/money.rb +2 -2
- data/lib/spree/permission_sets/default_customer.rb +1 -1
- data/lib/spree/permission_sets/user_management.rb +3 -0
- data/lib/spree/permitted_attributes.rb +3 -3
- data/lib/spree/preferences/static_model_preferences.rb +2 -2
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +6 -2
- data/lib/spree/testing_support/dummy_app.rb +4 -1
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +8 -1
- data/lib/spree/testing_support/factories/promotion_factory.rb +7 -0
- data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
- data/lib/spree/testing_support/preferences.rb +54 -15
- data/solidus_core.gemspec +6 -6
- data/spec/lib/search/base_spec.rb +5 -1
- data/spec/lib/search/variant_spec.rb +1 -1
- data/spec/lib/spree/core/environment_extension_spec.rb +12 -1
- data/spec/lib/spree/core/stock_configuration_spec.rb +36 -0
- data/spec/lib/spree/core/validators/email_spec.rb +18 -18
- data/spec/lib/spree/event_spec.rb +15 -3
- data/spec/models/spree/address_spec.rb +23 -0
- data/spec/models/spree/calculator/refunds/default_refund_amount_spec.rb +1 -1
- data/spec/models/spree/calculator/shipping/flat_percent_item_total_spec.rb +1 -1
- data/spec/models/spree/calculator/shipping/flat_rate_spec.rb +1 -1
- data/spec/models/spree/calculator/shipping/flexi_rate_spec.rb +2 -2
- data/spec/models/spree/calculator/shipping/per_item_spec.rb +1 -1
- data/spec/models/spree/calculator/shipping/price_sack_spec.rb +24 -15
- data/spec/models/spree/carton_spec.rb +10 -2
- data/spec/models/spree/classification_spec.rb +21 -9
- data/spec/models/spree/concerns/user_address_book_spec.rb +4 -4
- data/spec/models/spree/concerns/user_methods_spec.rb +5 -4
- data/spec/models/spree/credit_card_spec.rb +2 -2
- data/spec/models/spree/customer_return_spec.rb +1 -1
- data/spec/models/spree/order/checkout_spec.rb +1 -1
- data/spec/models/spree/order/outstanding_balance_integration_spec.rb +5 -5
- data/spec/models/spree/order/payment_spec.rb +1 -1
- data/spec/models/spree/order_contents_spec.rb +1 -1
- data/spec/models/spree/order_inventory_spec.rb +3 -3
- data/spec/models/spree/order_merger_spec.rb +3 -3
- data/spec/models/spree/order_shipping_spec.rb +1 -1
- data/spec/models/spree/order_spec.rb +14 -21
- data/spec/models/spree/order_updater_spec.rb +4 -3
- data/spec/models/spree/payment_create_spec.rb +6 -16
- data/spec/models/spree/payment_spec.rb +12 -12
- data/spec/models/spree/permission_sets/user_management_spec.rb +2 -0
- data/spec/models/spree/preference_spec.rb +4 -4
- data/spec/models/spree/preferences/preferable_spec.rb +3 -3
- data/spec/models/spree/preferences/statically_configurable_spec.rb +2 -2
- data/spec/models/spree/promotion/rules/first_repeat_purchase_since_spec.rb +2 -2
- data/spec/models/spree/promotion/rules/nth_order_spec.rb +2 -2
- data/spec/models/spree/promotion_rule_spec.rb +6 -6
- data/spec/models/spree/promotion_spec.rb +71 -54
- data/spec/models/spree/reimbursement_type/original_payment_spec.rb +3 -3
- data/spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb +1 -1
- data/spec/models/spree/return_item_spec.rb +11 -11
- data/spec/models/spree/returns_calculator_spec.rb +2 -2
- data/spec/models/spree/shipment_spec.rb +6 -6
- data/spec/models/spree/shipping_calculator_spec.rb +1 -13
- data/spec/models/spree/shipping_method_spec.rb +32 -0
- data/spec/models/spree/stock/availability_validator_spec.rb +2 -2
- data/spec/models/spree/stock/differentiator_spec.rb +2 -2
- data/spec/models/spree/stock/estimator_spec.rb +3 -3
- data/spec/models/spree/stock/inventory_units_finalizer_spec.rb +4 -4
- data/spec/models/spree/stock/package_spec.rb +28 -28
- data/spec/models/spree/stock/quantifier_spec.rb +3 -3
- data/spec/models/spree/stock/simple_coordinator_spec.rb +11 -11
- data/spec/models/spree/stock/splitter/base_spec.rb +4 -4
- data/spec/models/spree/stock/splitter/shipping_category_spec.rb +7 -7
- data/spec/models/spree/stock_quantities_spec.rb +1 -1
- data/spec/models/spree/store_credit_spec.rb +8 -8
- data/spec/models/spree/tax_category_spec.rb +1 -1
- data/spec/models/spree/tax_rate_spec.rb +1 -0
- data/spec/models/spree/taxon_spec.rb +2 -2
- data/spec/models/spree/taxons/paperclip_attachment_spec.rb +29 -0
- data/spec/models/spree/unit_cancel_spec.rb +5 -0
- data/spec/models/spree/user_last_url_storer/rules/authentication_rule_spec.rb +31 -0
- data/spec/models/spree/user_last_url_storer_spec.rb +60 -0
- data/spec/models/spree/user_spec.rb +3 -3
- metadata +46 -41
- data/spec/migrate/20190106184413_remove_code_from_spree_promotions_spec.rb +0 -148
- 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.
|
|
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.
|
|
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.
|
|
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 { |
|
|
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 { |
|
|
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.
|
|
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
|
-
|
|
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 =>
|
|
203
|
-
gateway_error(
|
|
202
|
+
rescue ActiveMerchant::ConnectionError => error
|
|
203
|
+
gateway_error(error)
|
|
204
204
|
end
|
|
205
205
|
|
|
206
206
|
def gateway_error(error)
|
data/app/models/spree/payment.rb
CHANGED
|
@@ -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, ->(
|
|
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
|
-
|
|
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 =>
|
|
236
|
-
gateway_error
|
|
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.
|
|
239
|
+
source.update!({
|
|
277
240
|
action: Spree::StoreCredit::ELIGIBLE_ACTION,
|
|
278
241
|
action_amount: amount,
|
|
279
242
|
action_authorization_code: response_code
|
|
@@ -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.
|
|
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 |
|
|
97
|
-
store.nil? || store.payment_methods.empty? || store.payment_methods.include?(
|
|
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
|
data/app/models/spree/price.rb
CHANGED
|
@@ -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
|