solidus_core 2.11.7 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (140) 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/active_storage_adapter.rb +2 -0
  6. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +11 -11
  7. data/app/models/concerns/spree/adjustment_source.rb +0 -15
  8. data/app/models/concerns/spree/calculated_adjustments.rb +0 -18
  9. data/app/models/concerns/spree/soft_deletable.rb +2 -4
  10. data/app/models/concerns/spree/user_address_book.rb +0 -37
  11. data/app/models/concerns/spree/user_methods.rb +2 -11
  12. data/app/models/spree/ability.rb +0 -37
  13. data/app/models/spree/address.rb +8 -186
  14. data/app/models/spree/address/name.rb +2 -20
  15. data/app/models/spree/adjustment.rb +0 -28
  16. data/app/models/spree/base.rb +0 -35
  17. data/app/models/spree/calculator.rb +4 -7
  18. data/app/models/spree/calculator/flexi_rate.rb +0 -5
  19. data/app/models/spree/country.rb +1 -6
  20. data/app/models/spree/credit_card.rb +0 -27
  21. data/app/models/spree/customer_return.rb +1 -4
  22. data/app/models/spree/image.rb +0 -7
  23. data/app/models/spree/image/active_storage_attachment.rb +10 -2
  24. data/app/models/spree/image/paperclip_attachment.rb +1 -1
  25. data/app/models/spree/inventory_unit.rb +0 -21
  26. data/app/models/spree/line_item.rb +2 -45
  27. data/app/models/spree/order.rb +3 -136
  28. data/app/models/spree/order_cancellations.rb +4 -24
  29. data/app/models/spree/order_updater.rb +2 -11
  30. data/app/models/spree/payment.rb +0 -3
  31. data/app/models/spree/payment/cancellation.rb +1 -1
  32. data/app/models/spree/payment_create.rb +1 -13
  33. data/app/models/spree/payment_method.rb +5 -103
  34. data/app/models/spree/payment_method/bogus_credit_card.rb +13 -9
  35. data/app/models/spree/payment_method/credit_card.rb +1 -3
  36. data/app/models/spree/payment_method/simple_bogus_credit_card.rb +4 -4
  37. data/app/models/spree/product.rb +0 -39
  38. data/app/models/spree/product/scopes.rb +0 -27
  39. data/app/models/spree/promotion.rb +2 -6
  40. data/app/models/spree/promotion/actions/create_adjustment.rb +0 -3
  41. data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -3
  42. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -3
  43. data/app/models/spree/promotion/rules/taxon.rb +2 -15
  44. data/app/models/spree/promotion_action.rb +5 -9
  45. data/app/models/spree/promotion_code/batch_builder.rb +0 -14
  46. data/app/models/spree/promotion_rule.rb +4 -0
  47. data/app/models/spree/refund.rb +0 -50
  48. data/app/models/spree/reimbursement.rb +3 -41
  49. data/app/models/spree/reimbursement_performer.rb +2 -8
  50. data/app/models/spree/reimbursement_type/credit.rb +1 -4
  51. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +1 -2
  52. data/app/models/spree/reimbursement_type/store_credit.rb +1 -4
  53. data/app/models/spree/return_authorization.rb +1 -4
  54. data/app/models/spree/return_item.rb +1 -19
  55. data/app/models/spree/shipment.rb +1 -54
  56. data/app/models/spree/shipping_method.rb +0 -25
  57. data/app/models/spree/shipping_rate.rb +0 -2
  58. data/app/models/spree/state.rb +0 -4
  59. data/app/models/spree/stock/simple_coordinator.rb +0 -14
  60. data/app/models/spree/stock/splitter/base.rb +2 -7
  61. data/app/models/spree/stock_item.rb +1 -7
  62. data/app/models/spree/store.rb +0 -12
  63. data/app/models/spree/store_credit_category.rb +0 -32
  64. data/app/models/spree/tax_calculator/shipping_rate.rb +1 -12
  65. data/app/models/spree/tax_rate.rb +0 -27
  66. data/app/models/spree/taxon.rb +0 -11
  67. data/app/models/spree/taxon/active_storage_attachment.rb +0 -5
  68. data/app/models/spree/taxon/paperclip_attachment.rb +0 -5
  69. data/app/models/spree/user_address.rb +0 -5
  70. data/app/models/spree/variant.rb +1 -45
  71. data/config/locales/en.yml +0 -8
  72. data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +1 -1
  73. data/lib/generators/solidus/install/install_generator.rb +13 -2
  74. data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +3 -39
  75. data/lib/generators/spree/dummy/dummy_generator.rb +2 -1
  76. data/lib/generators/spree/dummy/templates/rails/database.yml +6 -1
  77. data/lib/generators/spree/dummy/templates/rails/storage.yml +3 -0
  78. data/lib/generators/spree/dummy/templates/rails/test.rb +2 -0
  79. data/lib/spree/app_configuration.rb +14 -65
  80. data/lib/spree/core.rb +9 -8
  81. data/lib/spree/core/class_constantizer.rb +2 -0
  82. data/lib/spree/core/controller_helpers/auth.rb +1 -14
  83. data/lib/spree/core/controller_helpers/order.rb +2 -22
  84. data/lib/spree/core/controller_helpers/payment_parameters.rb +0 -54
  85. data/lib/spree/core/controller_helpers/pricing.rb +0 -8
  86. data/lib/spree/core/controller_helpers/strong_parameters.rb +0 -4
  87. data/lib/spree/core/engine.rb +0 -35
  88. data/lib/spree/core/environment_extension.rb +0 -9
  89. data/lib/spree/core/product_filters.rb +0 -40
  90. data/lib/spree/core/role_configuration.rb +0 -14
  91. data/lib/spree/core/search/base.rb +0 -26
  92. data/lib/spree/core/state_machines.rb +2 -11
  93. data/lib/spree/core/version.rb +1 -1
  94. data/lib/spree/deprecation.rb +1 -1
  95. data/lib/spree/event.rb +0 -31
  96. data/lib/spree/event/configuration.rb +0 -5
  97. data/lib/spree/event/subscriber.rb +0 -18
  98. data/lib/spree/event/subscriber_registry.rb +3 -1
  99. data/lib/spree/i18n.rb +0 -22
  100. data/lib/spree/money.rb +3 -18
  101. data/lib/spree/permitted_attributes.rb +2 -53
  102. data/lib/spree/preferences/persistable.rb +23 -0
  103. data/lib/spree/testing_support/capybara_ext.rb +0 -30
  104. data/lib/spree/testing_support/controller_requests.rb +0 -82
  105. data/lib/spree/testing_support/dummy_app.rb +6 -14
  106. data/lib/spree/testing_support/dummy_app/migrations.rb +0 -3
  107. data/lib/spree/testing_support/factories/order_factory.rb +0 -1
  108. data/lib/spree/testing_support/factories/refund_factory.rb +0 -1
  109. data/lib/spree/testing_support/fixtures/file.txt +1 -0
  110. data/lib/spree/testing_support/order_walkthrough.rb +0 -3
  111. data/lib/spree/testing_support/preferences.rb +0 -25
  112. data/lib/tasks/upgrade.rake +7 -5
  113. data/solidus_core.gemspec +2 -5
  114. metadata +9 -48
  115. data/app/mailers/spree/test_mailer.rb +0 -13
  116. data/app/models/concerns/spree/user_payment_source.rb +0 -26
  117. data/app/models/spree/calculator/free_shipping.rb +0 -22
  118. data/app/models/spree/calculator/percent_per_item.rb +0 -51
  119. data/app/models/spree/calculator/price_sack.rb +0 -28
  120. data/app/models/spree/gateway.rb +0 -14
  121. data/app/models/spree/gateway/bogus.rb +0 -13
  122. data/app/models/spree/gateway/bogus_simple.rb +0 -13
  123. data/app/models/spree/order/checkout.rb +0 -244
  124. data/app/models/spree/order_capturing.rb +0 -50
  125. data/app/models/spree/promotion_handler/free_shipping.rb +0 -9
  126. data/lib/generators/spree/install/install_generator.rb +0 -15
  127. data/lib/solidus/migrations/rename_gateways.rb +0 -41
  128. data/lib/spree/core/current_store.rb +0 -24
  129. data/lib/spree/paranoia_deprecations.rb +0 -41
  130. data/lib/spree/promo/environment.rb +0 -12
  131. data/lib/spree/testing_support/bar_ability.rb +0 -19
  132. data/lib/tasks/core.rake +0 -104
  133. data/lib/tasks/email.rake +0 -12
  134. data/lib/tasks/migrations/copy_order_bill_address_to_credit_card.rake +0 -119
  135. data/lib/tasks/migrations/migrate_address_names.rake +0 -158
  136. data/lib/tasks/migrations/migrate_default_billing_addresses_to_address_book.rake +0 -38
  137. data/lib/tasks/migrations/migrate_shipping_rate_taxes.rake +0 -22
  138. data/lib/tasks/migrations/migrate_user_addresses.rake +0 -34
  139. data/lib/tasks/migrations/rename_gateways.rake +0 -23
  140. data/lib/tasks/order_capturing.rake +0 -27
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.11.7
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Solidus Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-18 00:00:00.000000000 Z
11
+ date: 2021-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionmailer
@@ -331,33 +331,19 @@ dependencies:
331
331
  - !ruby/object:Gem::Version
332
332
  version: '1.8'
333
333
  - !ruby/object:Gem::Dependency
334
- name: paperclip
335
- requirement: !ruby/object:Gem::Requirement
336
- requirements:
337
- - - ">="
338
- - !ruby/object:Gem::Version
339
- version: '4.2'
340
- type: :runtime
341
- prerelease: false
342
- version_requirements: !ruby/object:Gem::Requirement
343
- requirements:
344
- - - ">="
345
- - !ruby/object:Gem::Version
346
- version: '4.2'
347
- - !ruby/object:Gem::Dependency
348
- name: paranoia
334
+ name: kt-paperclip
349
335
  requirement: !ruby/object:Gem::Requirement
350
336
  requirements:
351
337
  - - "~>"
352
338
  - !ruby/object:Gem::Version
353
- version: '2.4'
339
+ version: '6.3'
354
340
  type: :runtime
355
341
  prerelease: false
356
342
  version_requirements: !ruby/object:Gem::Requirement
357
343
  requirements:
358
344
  - - "~>"
359
345
  - !ruby/object:Gem::Version
360
- version: '2.4'
346
+ version: '6.3'
361
347
  - !ruby/object:Gem::Dependency
362
348
  name: ransack
363
349
  requirement: !ruby/object:Gem::Requirement
@@ -415,7 +401,6 @@ files:
415
401
  - app/mailers/spree/order_mailer.rb
416
402
  - app/mailers/spree/promotion_code_batch_mailer.rb
417
403
  - app/mailers/spree/reimbursement_mailer.rb
418
- - app/mailers/spree/test_mailer.rb
419
404
  - app/models/concerns/spree/active_storage_adapter.rb
420
405
  - app/models/concerns/spree/active_storage_adapter/attachment.rb
421
406
  - app/models/concerns/spree/active_storage_adapter/normalization.rb
@@ -430,7 +415,6 @@ files:
430
415
  - app/models/concerns/spree/user_address_book.rb
431
416
  - app/models/concerns/spree/user_api_authentication.rb
432
417
  - app/models/concerns/spree/user_methods.rb
433
- - app/models/concerns/spree/user_payment_source.rb
434
418
  - app/models/concerns/spree/user_reporting.rb
435
419
  - app/models/spree/ability.rb
436
420
  - app/models/spree/address.rb
@@ -447,10 +431,7 @@ files:
447
431
  - app/models/spree/calculator/flat_percent_item_total.rb
448
432
  - app/models/spree/calculator/flat_rate.rb
449
433
  - app/models/spree/calculator/flexi_rate.rb
450
- - app/models/spree/calculator/free_shipping.rb
451
434
  - app/models/spree/calculator/percent_on_line_item.rb
452
- - app/models/spree/calculator/percent_per_item.rb
453
- - app/models/spree/calculator/price_sack.rb
454
435
  - app/models/spree/calculator/returns/default_refund_amount.rb
455
436
  - app/models/spree/calculator/shipping/flat_percent_item_total.rb
456
437
  - app/models/spree/calculator/shipping/flat_rate.rb
@@ -469,9 +450,6 @@ files:
469
450
  - app/models/spree/fulfilment_changer.rb
470
451
  - app/models/spree/gallery/product_gallery.rb
471
452
  - app/models/spree/gallery/variant_gallery.rb
472
- - app/models/spree/gateway.rb
473
- - app/models/spree/gateway/bogus.rb
474
- - app/models/spree/gateway/bogus_simple.rb
475
453
  - app/models/spree/image.rb
476
454
  - app/models/spree/image/active_storage_attachment.rb
477
455
  - app/models/spree/image/paperclip_attachment.rb
@@ -484,11 +462,9 @@ files:
484
462
  - app/models/spree/option_value.rb
485
463
  - app/models/spree/option_values_variant.rb
486
464
  - app/models/spree/order.rb
487
- - app/models/spree/order/checkout.rb
488
465
  - app/models/spree/order/number_generator.rb
489
466
  - app/models/spree/order/payments.rb
490
467
  - app/models/spree/order_cancellations.rb
491
- - app/models/spree/order_capturing.rb
492
468
  - app/models/spree/order_contents.rb
493
469
  - app/models/spree/order_inventory.rb
494
470
  - app/models/spree/order_merger.rb
@@ -542,7 +518,6 @@ files:
542
518
  - app/models/spree/promotion_code_batch.rb
543
519
  - app/models/spree/promotion_handler/cart.rb
544
520
  - app/models/spree/promotion_handler/coupon.rb
545
- - app/models/spree/promotion_handler/free_shipping.rb
546
521
  - app/models/spree/promotion_handler/page.rb
547
522
  - app/models/spree/promotion_handler/shipping.rb
548
523
  - app/models/spree/promotion_rule.rb
@@ -746,10 +721,9 @@ files:
746
721
  - lib/generators/spree/dummy/templates/rails/database.yml
747
722
  - lib/generators/spree/dummy/templates/rails/routes.rb
748
723
  - lib/generators/spree/dummy/templates/rails/script/rails
724
+ - lib/generators/spree/dummy/templates/rails/storage.yml
749
725
  - lib/generators/spree/dummy/templates/rails/test.rb
750
- - lib/generators/spree/install/install_generator.rb
751
726
  - lib/solidus/migrations/promotions_with_code_handlers.rb
752
- - lib/solidus/migrations/rename_gateways.rb
753
727
  - lib/solidus_core.rb
754
728
  - lib/spree/app_configuration.rb
755
729
  - lib/spree/config.rb
@@ -765,7 +739,6 @@ files:
765
739
  - lib/spree/core/controller_helpers/search.rb
766
740
  - lib/spree/core/controller_helpers/store.rb
767
741
  - lib/spree/core/controller_helpers/strong_parameters.rb
768
- - lib/spree/core/current_store.rb
769
742
  - lib/spree/core/engine.rb
770
743
  - lib/spree/core/environment.rb
771
744
  - lib/spree/core/environment/calculators.rb
@@ -807,7 +780,6 @@ files:
807
780
  - lib/spree/migration_helpers.rb
808
781
  - lib/spree/migrations.rb
809
782
  - lib/spree/money.rb
810
- - lib/spree/paranoia_deprecations.rb
811
783
  - lib/spree/permission_sets.rb
812
784
  - lib/spree/permission_sets/base.rb
813
785
  - lib/spree/permission_sets/configuration_display.rb
@@ -829,17 +801,16 @@ files:
829
801
  - lib/spree/permission_sets/user_management.rb
830
802
  - lib/spree/permitted_attributes.rb
831
803
  - lib/spree/preferences/configuration.rb
804
+ - lib/spree/preferences/persistable.rb
832
805
  - lib/spree/preferences/preferable.rb
833
806
  - lib/spree/preferences/preferable_class_methods.rb
834
807
  - lib/spree/preferences/scoped_store.rb
835
808
  - lib/spree/preferences/static_model_preferences.rb
836
809
  - lib/spree/preferences/statically_configurable.rb
837
810
  - lib/spree/preferences/store.rb
838
- - lib/spree/promo/environment.rb
839
811
  - lib/spree/testing_support.rb
840
812
  - lib/spree/testing_support/ability_helpers.rb
841
813
  - lib/spree/testing_support/authorization_helpers.rb
842
- - lib/spree/testing_support/bar_ability.rb
843
814
  - lib/spree/testing_support/blacklist_urls.rb
844
815
  - lib/spree/testing_support/caching.rb
845
816
  - lib/spree/testing_support/capybara_ext.rb
@@ -918,6 +889,7 @@ files:
918
889
  - lib/spree/testing_support/factories/zone_factory.rb
919
890
  - lib/spree/testing_support/factory_bot.rb
920
891
  - lib/spree/testing_support/fixtures/blank.jpg
892
+ - lib/spree/testing_support/fixtures/file.txt
921
893
  - lib/spree/testing_support/flash.rb
922
894
  - lib/spree/testing_support/job_helpers.rb
923
895
  - lib/spree/testing_support/order_walkthrough.rb
@@ -931,15 +903,6 @@ files:
931
903
  - lib/spree/testing_support/url_helpers.rb
932
904
  - lib/spree/user_class_handle.rb
933
905
  - lib/spree_core.rb
934
- - lib/tasks/core.rake
935
- - lib/tasks/email.rake
936
- - lib/tasks/migrations/copy_order_bill_address_to_credit_card.rake
937
- - lib/tasks/migrations/migrate_address_names.rake
938
- - lib/tasks/migrations/migrate_default_billing_addresses_to_address_book.rake
939
- - lib/tasks/migrations/migrate_shipping_rate_taxes.rake
940
- - lib/tasks/migrations/migrate_user_addresses.rake
941
- - lib/tasks/migrations/rename_gateways.rake
942
- - lib/tasks/order_capturing.rake
943
906
  - lib/tasks/upgrade.rake
944
907
  - solidus_core.gemspec
945
908
  - vendor/assets/javascripts/jquery.payment.js
@@ -961,9 +924,7 @@ post_install_message: |
961
924
  If you are updating Solidus from an older version, please run
962
925
  the following commands to complete the update:
963
926
 
964
- $ bin/rails railties:install:migrations
965
- $ bin/rails db:migrate
966
- $ bin/rails solidus:upgrade:two_point_eleven
927
+ $ bin/rails solidus:upgrade
967
928
 
968
929
  Please report any issues at:
969
930
  - https://github.com/solidusio/solidus/issues
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- class TestMailer < BaseMailer
5
- def test_email(email)
6
- Spree::Deprecation.warn("Spree::TestMailer has been deprecated and will be removed with Solidus 3.0")
7
-
8
- store = Spree::Store.default
9
- subject = "#{store.name} #{t('.subject')}"
10
- mail(to: email, from: from_address(store), subject: subject)
11
- end
12
- end
13
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- module UserPaymentSource
5
- extend ActiveSupport::Concern
6
-
7
- def default_credit_card
8
- Spree::Deprecation.warn(
9
- "user.default_credit_card is deprecated. Please use user.wallet.default_wallet_payment_source instead.",
10
- caller
11
- )
12
- default = wallet.default_wallet_payment_source
13
- if default && default.payment_source.is_a?(Spree::CreditCard)
14
- default.payment_source
15
- end
16
- end
17
-
18
- def payment_sources
19
- Spree::Deprecation.warn(
20
- "user.payment_sources is deprecated. Please use user.wallet.wallet_payment_sources instead.",
21
- caller
22
- )
23
- credit_cards.with_payment_profile
24
- end
25
- end
26
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_dependency 'spree/calculator'
4
-
5
- module Spree
6
- # @deprecated This calculator will be removed in future versions of Spree.
7
- # The only case where it was used was for Free Shipping Promotions. There is
8
- # now a Promotion Action which deals with these types of promotions instead.
9
- class Calculator::FreeShipping < Calculator
10
- def compute(object)
11
- Spree::Deprecation.warn('This method is deprecated, because it is no longer used')
12
- if object.is_a?(Array)
13
- return if object.empty?
14
- order = object.first.order
15
- else
16
- order = object
17
- end
18
-
19
- order.ship_total
20
- end
21
- end
22
- end
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_dependency 'spree/calculator'
4
-
5
- module Spree
6
- # A calculator for promotions that calculates a percent-off discount
7
- # for all matching products in an order. This should not be used as a
8
- # shipping calculator since it would be the same thing as a flat percent
9
- # off the entire order.
10
- #
11
- #
12
- # TODO Should be deprecated now that we have adjustments at the line item level in spree core
13
-
14
- class Calculator::PercentPerItem < Calculator
15
- preference :percent, :decimal, default: 0
16
-
17
- def compute(object = nil)
18
- Spree::Deprecation.warn('This method is deprecated, please use adjustments at line item level')
19
-
20
- return 0 if object.nil?
21
- object.line_items.sum { |line_item|
22
- value_for_line_item(line_item)
23
- }
24
- end
25
-
26
- private
27
-
28
- # Returns all products that match this calculator, but only if the calculator
29
- # is attached to a promotion. If attached to a ShippingMethod, nil is returned.
30
- # Copied from per_item.rb
31
- def matching_products
32
- if compute_on_promotion?
33
- calculable.promotion.rules.flat_map do |rule|
34
- rule.respond_to?(:products) ? rule.products : []
35
- end
36
- end
37
- end
38
-
39
- def value_for_line_item(line_item)
40
- if compute_on_promotion?
41
- return 0 unless matching_products.blank? || matching_products.include?(line_item.product)
42
- end
43
- ((line_item.price * line_item.quantity) * preferred_percent) / 100
44
- end
45
-
46
- # Determines wether or not the calculable object is a promotion
47
- def compute_on_promotion?
48
- @compute_on_promotion ||= calculable.respond_to?(:promotion)
49
- end
50
- end
51
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_dependency 'spree/calculator'
4
-
5
- module Spree
6
- class Calculator::PriceSack < Calculator
7
- preference :minimal_amount, :decimal, default: 0
8
- preference :normal_amount, :decimal, default: 0
9
- preference :discount_amount, :decimal, default: 0
10
- preference :currency, :string, default: ->{ Spree::Config[:currency] }
11
-
12
- # as object we always get line items, as calculable we have Coupon, ShippingMethod
13
- def compute(object)
14
- Spree::Deprecation.warn('This method is deprecated, please use adjustments at line item level')
15
- if object.is_a?(Array)
16
- base = object.sum { |element| element.respond_to?(:amount) ? element.amount : BigDecimal(element.to_s) }
17
- else
18
- base = object.respond_to?(:amount) ? object.amount : BigDecimal(object.to_s)
19
- end
20
-
21
- if base < preferred_minimal_amount
22
- preferred_normal_amount
23
- else
24
- preferred_discount_amount
25
- end
26
- end
27
- end
28
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- # @deprecated Use Spree::PaymentMethod::CreditCard or Spree::PaymentMethod instead
5
- class Gateway < PaymentMethod::CreditCard
6
- def initialize(*args)
7
- Spree::Deprecation.warn \
8
- "Using Spree::Gateway as parent class of payment methods is deprecated. " \
9
- "Please use Spree::PaymentMethod::CreditCard for credit card based payment methods " \
10
- "or Spree::PaymentMethod for non credit card payment methods instead."
11
- super
12
- end
13
- end
14
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- # @deprecated Use Spree::PaymentMethod::BogusCreditCard instead
5
- class Gateway::Bogus < PaymentMethod::BogusCreditCard
6
- def initialize(*args)
7
- Spree::Deprecation.warn \
8
- 'Spree::Gateway::Bogus is deprecated. ' \
9
- 'Please use Spree::PaymentMethod::BogusCreditCard instead'
10
- super
11
- end
12
- end
13
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- # @deprecated Use Spree::PaymentMethod::SimpleBogusCreditCard instead
5
- class Gateway::BogusSimple < Spree::PaymentMethod::SimpleBogusCreditCard
6
- def initialize(*args)
7
- Spree::Deprecation.warn \
8
- 'Spree::Gateway::BogusSimple is deprecated. ' \
9
- 'Please use Spree::PaymentMethod::SimpleBogusCreditCard instead'
10
- super
11
- end
12
- end
13
- end
@@ -1,244 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- class Order < Spree::Base
5
- module Checkout
6
- def self.included(klass)
7
- klass.extend ClassMethods
8
- end
9
-
10
- module ClassMethods
11
- attr_accessor :previous_states
12
- attr_writer :next_event_transitions
13
- attr_writer :checkout_steps
14
- attr_writer :removed_transitions
15
-
16
- def checkout_flow(&block)
17
- if block_given?
18
- @checkout_flow = block
19
- define_state_machine!
20
- else
21
- @checkout_flow
22
- end
23
- end
24
-
25
- def define_state_machine!
26
- self.checkout_steps = {}
27
- self.next_event_transitions = []
28
- self.previous_states = [:cart]
29
- self.removed_transitions = []
30
-
31
- # Build the checkout flow using the checkout_flow defined either
32
- # within the Order class, or a decorator for that class.
33
- #
34
- # This method may be called multiple times depending on if the
35
- # checkout_flow is re-defined in a decorator or not.
36
- instance_eval(&checkout_flow)
37
-
38
- klass = self
39
-
40
- # To avoid multiple occurrences of the same transition being defined
41
- # On first definition, state_machines will not be defined
42
- state_machines.clear if respond_to?(:state_machines)
43
- state_machine :state, initial: :cart, use_transactions: false do
44
- klass.next_event_transitions.each { |state| transition(state.merge(on: :next)) }
45
-
46
- # Persist the state on the order
47
- after_transition do |order, transition|
48
- order.state = order.state
49
- order.state_changes.create(
50
- previous_state: transition.from,
51
- next_state: transition.to,
52
- name: 'order',
53
- user_id: order.user_id
54
- )
55
- order.save
56
- end
57
-
58
- event :cancel do
59
- transition to: :canceled, if: :allow_cancel?
60
- end
61
-
62
- event :return do
63
- transition to: :returned, from: [:returned, :complete, :awaiting_return, :canceled], if: :all_inventory_units_returned?
64
- end
65
-
66
- event :resume do
67
- transition to: :resumed, from: :canceled, if: :canceled?
68
- end
69
-
70
- event :authorize_return do
71
- transition to: :awaiting_return
72
- end
73
-
74
- event :complete do
75
- transition to: :complete, from: :confirm
76
- end
77
-
78
- if states[:payment]
79
- event :payment_failed do
80
- transition to: :payment, from: :confirm
81
- end
82
-
83
- after_transition to: :complete, do: :add_payment_sources_to_wallet
84
- before_transition to: :payment, do: :add_default_payment_from_wallet
85
- before_transition to: :payment, do: :ensure_billing_address
86
-
87
- before_transition to: :confirm, do: :add_store_credit_payments
88
-
89
- # see also process_payments_before_complete below which needs to
90
- # be added in the correct sequence.
91
- end
92
-
93
- before_transition from: :cart, do: :ensure_line_items_present
94
-
95
- if states[:address]
96
- before_transition to: :address, do: :assign_default_user_addresses
97
- before_transition from: :address, do: :persist_user_address!
98
- end
99
-
100
- if states[:delivery]
101
- before_transition to: :delivery, do: :ensure_shipping_address
102
- before_transition to: :delivery, do: :create_proposed_shipments
103
- before_transition to: :delivery, do: :ensure_available_shipping_rates
104
- before_transition from: :delivery, do: :apply_shipping_promotions
105
- end
106
-
107
- before_transition to: :resumed, do: :ensure_line_item_variants_are_not_deleted
108
- before_transition to: :resumed, do: :validate_line_item_availability
109
-
110
- # Sequence of before_transition to: :complete
111
- # calls matter so that we do not process payments
112
- # until validations have passed
113
- before_transition to: :complete, do: :validate_line_item_availability
114
- before_transition to: :complete, do: :ensure_promotions_eligible
115
- before_transition to: :complete, do: :ensure_line_item_variants_are_not_deleted
116
- before_transition to: :complete, do: :ensure_inventory_units
117
- if states[:payment]
118
- before_transition to: :complete, do: :process_payments_before_complete
119
- end
120
-
121
- after_transition to: :complete, do: :finalize!
122
- after_transition to: :resumed, do: :after_resume
123
- after_transition to: :canceled, do: :after_cancel
124
-
125
- after_transition from: any - :cart, to: any - [:confirm, :complete] do |order|
126
- order.recalculate
127
- end
128
-
129
- after_transition do |order, transition|
130
- order.logger.debug "Order #{order.number} transitioned from #{transition.from} to #{transition.to} via #{transition.event}"
131
- end
132
-
133
- after_failure do |order, transition|
134
- order.logger.debug "Order #{order.number} halted transition on event #{transition.event} state #{transition.from}: #{order.errors.full_messages.join}"
135
- end
136
- end
137
- end
138
-
139
- def go_to_state(name, options = {})
140
- checkout_steps[name] = options
141
- previous_states.each do |state|
142
- add_transition({ from: state, to: name }.merge(options))
143
- end
144
- if options[:if]
145
- previous_states << name
146
- else
147
- self.previous_states = [name]
148
- end
149
- end
150
-
151
- def insert_checkout_step(name, options = {})
152
- before = options.delete(:before)
153
- after = options.delete(:after) unless before
154
- after = checkout_steps.keys.last unless before || after
155
-
156
- cloned_steps = checkout_steps.clone
157
- cloned_removed_transitions = removed_transitions.clone
158
- checkout_flow do
159
- cloned_steps.each_pair do |key, value|
160
- go_to_state(name, options) if key == before
161
- go_to_state(key, value)
162
- go_to_state(name, options) if key == after
163
- end
164
- cloned_removed_transitions.each do |transition|
165
- remove_transition(transition)
166
- end
167
- end
168
- end
169
-
170
- def remove_checkout_step(name)
171
- cloned_steps = checkout_steps.clone
172
- cloned_removed_transitions = removed_transitions.clone
173
- checkout_flow do
174
- cloned_steps.each_pair do |key, value|
175
- go_to_state(key, value) unless key == name
176
- end
177
- cloned_removed_transitions.each do |transition|
178
- remove_transition(transition)
179
- end
180
- end
181
- end
182
-
183
- def remove_transition(options = {})
184
- removed_transitions << options
185
- next_event_transitions.delete(find_transition(options))
186
- end
187
-
188
- def find_transition(options = {})
189
- return nil if options.nil? || !options.include?(:from) || !options.include?(:to)
190
- next_event_transitions.detect do |transition|
191
- transition[options[:from].to_sym] == options[:to].to_sym
192
- end
193
- end
194
-
195
- def next_event_transitions
196
- @next_event_transitions ||= []
197
- end
198
-
199
- def checkout_steps
200
- @checkout_steps ||= {}
201
- end
202
-
203
- def checkout_step_names
204
- checkout_steps.keys
205
- end
206
-
207
- def add_transition(options)
208
- next_event_transitions << { options.delete(:from) => options.delete(:to) }.merge(options)
209
- end
210
-
211
- def removed_transitions
212
- @removed_transitions ||= []
213
- end
214
- end
215
-
216
- def checkout_steps
217
- steps = self.class.checkout_steps.each_with_object([]) { |(step, options), checkout_steps|
218
- next if options.include?(:if) && !options[:if].call(self)
219
- checkout_steps << step
220
- }.map(&:to_s)
221
- # Ensure there is always a complete step
222
- steps << "complete" unless steps.include?("complete")
223
- steps
224
- end
225
-
226
- def has_checkout_step?(step)
227
- step.present? && checkout_steps.include?(step)
228
- end
229
-
230
- def passed_checkout_step?(step)
231
- has_checkout_step?(step) && checkout_step_index(step) < checkout_step_index(state)
232
- end
233
-
234
- def checkout_step_index(step)
235
- checkout_steps.index(step).to_i
236
- end
237
-
238
- def can_go_to_state?(state)
239
- return false unless has_checkout_step?(self.state) && has_checkout_step?(state)
240
- checkout_step_index(state) > checkout_step_index(self.state)
241
- end
242
- end
243
- end
244
- end