solidus_core 4.1.6 → 4.5.1
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/assets/images/logo/solidus.svg +18 -1
- data/app/assets/images/logo/solidus_logo.png +0 -0
- data/app/helpers/spree/base_helper.rb +2 -2
- data/app/helpers/spree/core/controller_helpers/auth.rb +66 -0
- data/app/helpers/spree/core/controller_helpers/common.rb +82 -0
- data/app/helpers/spree/core/controller_helpers/order.rb +86 -0
- data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +165 -0
- data/app/helpers/spree/core/controller_helpers/pricing.rb +19 -0
- data/app/helpers/spree/core/controller_helpers/search.rb +16 -0
- data/app/helpers/spree/core/controller_helpers/store.rb +19 -0
- data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +74 -0
- data/app/mailers/spree/base_mailer.rb +1 -1
- data/app/mailers/spree/carton_mailer.rb +1 -1
- data/app/mailers/spree/order_mailer.rb +3 -3
- data/app/mailers/spree/reimbursement_mailer.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter/normalization.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter.rb +1 -1
- data/app/models/concerns/spree/display_money.rb +1 -1
- data/app/models/concerns/spree/metadata.rb +64 -0
- data/app/models/concerns/spree/named_type.rb +2 -0
- data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
- data/app/models/concerns/spree/user_address_book.rb +8 -9
- data/app/models/concerns/spree/user_methods.rb +3 -3
- data/app/models/spree/address.rb +10 -8
- data/app/models/spree/adjustment.rb +15 -65
- data/app/models/spree/adjustment_reason.rb +2 -0
- data/app/models/spree/calculator/returns/default_refund_amount.rb +1 -1
- data/app/models/spree/carton.rb +2 -2
- data/app/models/spree/core/state_machines/inventory_unit.rb +42 -0
- data/app/models/spree/core/state_machines/order/class_methods.rb +217 -0
- data/app/models/spree/core/state_machines/order.rb +42 -0
- data/app/models/spree/core/state_machines/payment.rb +61 -0
- data/app/models/spree/core/state_machines/reimbursement.rb +33 -0
- data/app/models/spree/core/state_machines/return_authorization.rb +32 -0
- data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
- data/app/models/spree/core/state_machines/return_item/reception_status.rb +42 -0
- data/app/models/spree/core/state_machines/shipment.rb +58 -0
- data/app/models/spree/credit_card.rb +12 -9
- data/app/models/spree/customer_return.rb +2 -0
- data/app/models/spree/deprecated_configurable_class.rb +40 -0
- data/app/models/spree/fulfilment_changer.rb +4 -4
- data/app/models/spree/inventory_unit.rb +2 -2
- data/app/models/spree/item_total.rb +28 -0
- data/app/models/spree/legacy_user.rb +1 -0
- data/app/models/spree/line_item.rb +22 -4
- data/app/models/spree/money.rb +120 -0
- data/app/models/spree/null_promotion_adjuster.rb +13 -0
- data/app/models/spree/null_promotion_advertiser.rb +9 -0
- data/app/models/spree/null_promotion_finder.rb +9 -0
- data/app/models/spree/null_promotion_handler.rb +44 -0
- data/app/models/spree/option_value.rb +1 -0
- data/app/models/spree/order.rb +54 -36
- data/app/models/spree/order_cancellations.rb +8 -8
- data/app/models/spree/order_inventory.rb +6 -4
- data/app/models/spree/order_merger.rb +1 -1
- data/app/models/spree/order_mutex.rb +2 -2
- data/app/models/spree/order_shipping.rb +9 -9
- data/app/models/spree/order_taxation.rb +1 -0
- data/app/models/spree/order_updater.rb +19 -40
- data/app/models/spree/payment/processing.rb +2 -2
- data/app/models/spree/payment.rb +3 -2
- data/app/models/spree/payment_create.rb +1 -1
- data/app/models/spree/payment_method/bogus_credit_card.rb +14 -9
- data/app/models/spree/payment_method/simple_bogus_credit_card.rb +12 -6
- data/app/models/spree/payment_method/store_credit.rb +1 -1
- data/app/models/spree/payment_method.rb +3 -1
- data/app/models/spree/payment_source.rb +5 -1
- data/app/models/spree/permission_set.rb +11 -0
- data/app/models/spree/permission_sets/base.rb +45 -0
- data/app/models/spree/permission_sets/configuration_display.rb +53 -0
- data/app/models/spree/permission_sets/configuration_management.rb +52 -0
- data/app/models/spree/permission_sets/dashboard_display.rb +28 -0
- data/app/models/spree/permission_sets/default_customer.rb +83 -0
- data/app/models/spree/permission_sets/order_display.rb +50 -0
- data/app/models/spree/permission_sets/order_management.rb +50 -0
- data/app/models/spree/permission_sets/product_display.rb +43 -0
- data/app/models/spree/permission_sets/product_management.rb +47 -0
- data/app/models/spree/permission_sets/restricted_stock_display.rb +33 -0
- data/app/models/spree/permission_sets/restricted_stock_management.rb +33 -0
- data/app/models/spree/permission_sets/stock_display.rb +26 -0
- data/app/models/spree/permission_sets/stock_management.rb +26 -0
- data/app/models/spree/permission_sets/super_user.rb +26 -0
- data/app/models/spree/permission_sets/user_display.rb +27 -0
- data/app/models/spree/permission_sets/user_management.rb +44 -0
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/product.rb +13 -9
- data/app/models/spree/refund.rb +3 -1
- data/app/models/spree/refund_reason.rb +6 -1
- data/app/models/spree/reimbursement.rb +4 -4
- data/app/models/spree/reimbursement_performer.rb +3 -3
- data/app/models/spree/reimbursement_tax_calculator.rb +2 -2
- data/app/models/spree/reimbursement_type/credit.rb +1 -1
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +6 -6
- data/app/models/spree/reimbursement_type/store_credit.rb +1 -1
- data/app/models/spree/reimbursement_type.rb +6 -1
- data/app/models/spree/return_authorization.rb +2 -0
- data/app/models/spree/return_item.rb +10 -10
- data/app/models/spree/return_reason.rb +6 -1
- data/app/models/spree/role.rb +3 -1
- data/app/models/spree/role_permission.rb +8 -0
- data/app/models/spree/shipment.rb +9 -7
- data/app/models/spree/shipping_category.rb +2 -0
- data/app/models/spree/shipping_rate.rb +2 -3
- data/app/models/spree/{order_contents.rb → simple_order_contents.rb} +8 -12
- data/app/models/spree/stock/estimator.rb +1 -1
- data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
- data/app/models/spree/stock/package.rb +2 -2
- data/app/models/spree/stock/simple_coordinator.rb +36 -22
- data/app/models/spree/stock_item.rb +1 -0
- data/app/models/spree/stock_location.rb +5 -5
- data/app/models/spree/store.rb +3 -1
- data/app/models/spree/store_credit.rb +17 -15
- data/app/models/spree/store_credit_event.rb +4 -3
- data/app/models/spree/store_credit_reason.rb +6 -1
- data/app/models/spree/store_selector/by_server_name.rb +1 -1
- data/app/models/spree/tax/tax_helpers.rb +12 -1
- data/app/models/spree/tax_calculator/default.rb +3 -3
- data/app/models/spree/tax_calculator/shipping_rate.rb +1 -1
- data/app/models/spree/tax_category.rb +3 -1
- data/app/models/spree/tax_rate.rb +7 -3
- data/app/models/spree/taxon.rb +22 -2
- data/app/models/spree/taxon_brand_selector.rb +22 -0
- data/app/models/spree/taxonomy.rb +2 -2
- data/app/models/spree/unauthorized_redirect_handler.rb +24 -0
- data/app/models/spree/unit_cancel.rb +1 -2
- data/app/models/spree/user_address.rb +9 -3
- data/app/models/spree/variant/scopes.rb +4 -0
- data/app/models/spree/variant/vat_price_generator.rb +1 -1
- data/app/models/spree/variant.rb +21 -8
- data/app/models/spree/wallet.rb +2 -2
- data/app/views/spree/order_mailer/cancel_email.html.erb +1 -1
- data/app/views/spree/order_mailer/cancel_email.text.erb +1 -1
- data/app/views/spree/order_mailer/confirm_email.html.erb +5 -5
- data/app/views/spree/order_mailer/confirm_email.text.erb +5 -5
- data/app/views/spree/order_mailer/inventory_cancellation_email.html.erb +0 -1
- data/config/locales/en.yml +33 -90
- data/db/default/spree/permission_sets.rb +10 -0
- data/db/default/spree/return_reasons.rb +3 -1
- data/db/default/spree/states.rb +1 -1
- data/db/migrate/20160101010000_solidus_one_four.rb +0 -127
- data/db/migrate/20220419170826_remove_archived_user_addresses.rb +12 -0
- data/db/migrate/20230427095534_drop_deprecated_address_id_from_shipments.rb +1 -1
- data/db/migrate/20240821173254_create_spree_permission_sets_in_core.rb +9 -0
- data/db/migrate/20240821173341_create_spree_roles_permissions_in_core.rb +9 -0
- data/db/migrate/20240821173641_add_description_to_spree_roles.rb +5 -0
- data/db/migrate/20240904152041_add_privilege_and_category_to_spree_permission_sets.rb +6 -0
- data/db/migrate/20250129061658_add_metadata_to_spree_resources.rb +28 -0
- data/db/migrate/20250201172950_add_gtin_and_condition_to_spree_variant.rb +6 -0
- data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +7 -0
- data/db/migrate/20250221152004_add_metadata_to_users.rb +13 -0
- data/db/seeds.rb +1 -0
- data/lib/generators/solidus/install/app_templates/authentication/custom.rb +0 -5
- data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -1
- data/lib/generators/solidus/install/install_generator.rb +64 -15
- data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +15 -12
- data/lib/generators/solidus/update/update_generator.rb +1 -1
- data/lib/generators/spree/dummy/dummy_generator.rb +1 -1
- data/lib/generators/spree/dummy/templates/rails/application.rb.tt +1 -1
- data/lib/generators/spree/dummy/templates/rails/database.yml +41 -93
- data/lib/generators/spree/dummy/templates/rails/manifest.js +3 -0
- data/lib/generators/spree/dummy/templates/rails/test.rb +6 -1
- data/lib/spree/app_configuration.rb +102 -67
- data/lib/spree/core/class_constantizer.rb +2 -2
- data/lib/spree/core/controller_helpers/auth.rb +5 -61
- data/lib/spree/core/controller_helpers/common.rb +5 -80
- data/lib/spree/core/controller_helpers/order.rb +5 -86
- data/lib/spree/core/controller_helpers/payment_parameters.rb +5 -163
- data/lib/spree/core/controller_helpers/pricing.rb +5 -17
- data/lib/spree/core/controller_helpers/search.rb +5 -14
- data/lib/spree/core/controller_helpers/store.rb +5 -17
- data/lib/spree/core/controller_helpers/strong_parameters.rb +5 -71
- data/lib/spree/core/engine.rb +13 -5
- data/lib/spree/core/environment/calculators.rb +35 -3
- data/lib/spree/core/environment/promotions.rb +25 -4
- data/lib/spree/core/environment_extension.rb +16 -2
- data/lib/spree/core/importer/order.rb +5 -5
- data/lib/spree/core/importer/product.rb +3 -3
- data/lib/spree/core/nested_class_set.rb +28 -0
- data/lib/spree/core/null_promotion_configuration.rb +84 -0
- data/lib/spree/core/product_filters.rb +1 -1
- data/lib/spree/core/search/variant.rb +2 -2
- data/lib/spree/core/state_machines/inventory_unit.rb +5 -40
- data/lib/spree/core/state_machines/order.rb +5 -251
- data/lib/spree/core/state_machines/payment.rb +5 -59
- data/lib/spree/core/state_machines/reimbursement.rb +5 -31
- data/lib/spree/core/state_machines/return_authorization.rb +5 -30
- data/lib/spree/core/state_machines/return_item/acceptance_status.rb +5 -49
- data/lib/spree/core/state_machines/return_item/reception_status.rb +5 -40
- data/lib/spree/core/state_machines/shipment.rb +5 -56
- data/lib/spree/core/state_machines.rb +48 -81
- data/lib/spree/core/validators/email.rb +1 -1
- data/lib/spree/core/version.rb +2 -2
- data/lib/spree/core.rb +2 -14
- data/lib/spree/deprecator.rb +9 -0
- data/lib/spree/i18n.rb +1 -1
- data/lib/spree/mailer_previews/carton_preview.rb +1 -1
- data/lib/spree/money.rb +5 -118
- data/lib/spree/permission_sets/base.rb +5 -30
- data/lib/spree/permission_sets/configuration_display.rb +5 -41
- data/lib/spree/permission_sets/configuration_management.rb +5 -40
- data/lib/spree/permission_sets/dashboard_display.rb +5 -14
- data/lib/spree/permission_sets/default_customer.rb +5 -71
- data/lib/spree/permission_sets/order_display.rb +5 -38
- data/lib/spree/permission_sets/order_management.rb +5 -38
- data/lib/spree/permission_sets/product_display.rb +5 -31
- data/lib/spree/permission_sets/product_management.rb +5 -35
- data/lib/spree/permission_sets/restricted_stock_display.rb +5 -21
- data/lib/spree/permission_sets/restricted_stock_management.rb +5 -21
- data/lib/spree/permission_sets/stock_display.rb +5 -14
- data/lib/spree/permission_sets/stock_management.rb +5 -14
- data/lib/spree/permission_sets/super_user.rb +5 -14
- data/lib/spree/permission_sets/user_display.rb +5 -15
- data/lib/spree/permission_sets/user_management.rb +5 -32
- data/lib/spree/permission_sets.rb +5 -18
- data/lib/spree/permitted_attributes.rb +21 -9
- data/lib/spree/preferences/configuration.rb +4 -0
- data/lib/spree/preferences/persistable.rb +7 -1
- data/lib/spree/preferences/store.rb +2 -2
- data/lib/spree/testing_support/capybara_ext.rb +11 -1
- data/lib/spree/testing_support/common_rake.rb +1 -0
- data/lib/spree/testing_support/dummy_ability.rb +7 -0
- data/lib/spree/testing_support/dummy_app/assets/stylesheets/solidus_admin/tailwind.css +1 -0
- data/lib/spree/testing_support/dummy_app/database.yml +37 -46
- data/lib/spree/testing_support/dummy_app/migrations.rb +8 -15
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +3 -6
- data/lib/spree/testing_support/dummy_app.rb +33 -19
- data/lib/spree/testing_support/factories/adjustment_factory.rb +1 -2
- data/lib/spree/testing_support/factories/calculator_factory.rb +1 -5
- data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
- data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -2
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +3 -3
- data/lib/spree/testing_support/factories/order_factory.rb +13 -24
- data/lib/spree/testing_support/factories/product_factory.rb +1 -1
- data/lib/spree/testing_support/factories/shipment_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_item_factory.rb +5 -1
- data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
- data/lib/spree/testing_support/factories/user_factory.rb +1 -1
- data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
- data/lib/spree/testing_support/order_walkthrough.rb +3 -3
- data/lib/spree/testing_support/shared_examples/calculator.rb +10 -0
- data/lib/spree/testing_support/shared_examples/order_factory.rb +141 -0
- data/lib/spree/testing_support/shared_examples/working_factory.rb +15 -0
- data/lib/tasks/colorado_delivery_fee.rake +2 -2
- data/solidus_core.gemspec +7 -10
- metadata +107 -109
- data/app/jobs/spree/promotion_code_batch_job.rb +0 -26
- data/app/mailers/spree/promotion_code_batch_mailer.rb +0 -15
- data/app/models/spree/calculator/distributed_amount.rb +0 -33
- data/app/models/spree/calculator/flat_percent_item_total.rb +0 -23
- data/app/models/spree/calculator/flexi_rate.rb +0 -22
- data/app/models/spree/calculator/percent_on_line_item.rb +0 -13
- data/app/models/spree/calculator/tiered_flat_rate.rb +0 -52
- data/app/models/spree/calculator/tiered_percent.rb +0 -62
- data/app/models/spree/line_item_action.rb +0 -8
- data/app/models/spree/order_promotion.rb +0 -27
- data/app/models/spree/promotion/actions/create_adjustment.rb +0 -81
- data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -98
- data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -139
- data/app/models/spree/promotion/actions/free_shipping.rb +0 -59
- data/app/models/spree/promotion/order_adjustments_recalculator.rb +0 -92
- data/app/models/spree/promotion/rules/first_order.rb +0 -38
- data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +0 -36
- data/app/models/spree/promotion/rules/item_total.rb +0 -86
- data/app/models/spree/promotion/rules/nth_order.rb +0 -45
- data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -25
- data/app/models/spree/promotion/rules/option_value.rb +0 -50
- data/app/models/spree/promotion/rules/product.rb +0 -86
- data/app/models/spree/promotion/rules/store.rb +0 -26
- data/app/models/spree/promotion/rules/taxon.rb +0 -91
- data/app/models/spree/promotion/rules/user.rb +0 -34
- data/app/models/spree/promotion/rules/user_logged_in.rb +0 -20
- data/app/models/spree/promotion/rules/user_role.rb +0 -45
- data/app/models/spree/promotion.rb +0 -271
- data/app/models/spree/promotion_action.rb +0 -47
- data/app/models/spree/promotion_category.rb +0 -8
- data/app/models/spree/promotion_chooser.rb +0 -34
- data/app/models/spree/promotion_code/batch_builder.rb +0 -64
- data/app/models/spree/promotion_code.rb +0 -54
- data/app/models/spree/promotion_code_batch.rb +0 -27
- data/app/models/spree/promotion_handler/cart.rb +0 -75
- data/app/models/spree/promotion_handler/coupon.rb +0 -123
- data/app/models/spree/promotion_handler/page.rb +0 -26
- data/app/models/spree/promotion_handler/shipping.rb +0 -61
- data/app/models/spree/promotion_rule.rb +0 -55
- data/app/models/spree/promotion_rule_role.rb +0 -8
- data/app/models/spree/promotion_rule_store.rb +0 -10
- data/app/models/spree/promotion_rule_taxon.rb +0 -8
- data/app/models/spree/promotion_rule_user.rb +0 -10
- data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_errored.text.erb +0 -2
- data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_finished.text.erb +0 -2
- data/bin/rails +0 -13
- data/db/migrate/20161017102621_create_spree_promotion_code_batch.rb +0 -38
- data/db/migrate/20180202190713_create_promotion_rule_stores.rb +0 -12
- data/db/migrate/20180328172631_add_join_characters_to_promotion_code_batch.rb +0 -11
- data/db/migrate/20190106184413_remove_code_from_spree_promotions.rb +0 -42
- data/db/migrate/20220317165036_set_promotions_with_any_policy_to_all_if_possible.rb +0 -20
- data/db/migrate/20230322085416_remove_match_policy_from_spree_promotion.rb +0 -5
- data/db/migrate/20230325132905_remove_unused_columns_from_promotion_rules.rb +0 -6
- data/db/migrate/20230325161633_drop_unused_promo_action_line_items.rb +0 -13
- data/lib/generators/spree/dummy/templates/rails/script/rails +0 -6
- data/lib/solidus/migrations/promotions_with_code_handlers.rb +0 -66
- data/lib/spree/permission_sets/promotion_display.rb +0 -25
- data/lib/spree/permission_sets/promotion_management.rb +0 -25
- data/lib/spree/testing_support/factories/order_promotion_factory.rb +0 -8
- data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -7
- data/lib/spree/testing_support/factories/promotion_code_factory.rb +0 -8
- data/lib/spree/testing_support/factories/promotion_factory.rb +0 -98
@@ -2,87 +2,54 @@
|
|
2
2
|
|
3
3
|
module Spree
|
4
4
|
module Core
|
5
|
-
class StateMachines
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
require 'spree/core/state_machines/inventory_unit'
|
54
|
-
'Spree::Core::StateMachines::InventoryUnit'
|
55
|
-
end
|
56
|
-
|
57
|
-
@inventory_unit.constantize
|
58
|
-
end
|
59
|
-
|
60
|
-
def shipment
|
61
|
-
@shipment ||= begin
|
62
|
-
require 'spree/core/state_machines/shipment'
|
63
|
-
'Spree::Core::StateMachines::Shipment'
|
64
|
-
end
|
65
|
-
|
66
|
-
@shipment.constantize
|
67
|
-
end
|
68
|
-
|
69
|
-
def order
|
70
|
-
@order ||= begin
|
71
|
-
require 'spree/core/state_machines/order'
|
72
|
-
'Spree::Core::StateMachines::Order'
|
73
|
-
end
|
74
|
-
|
75
|
-
@order.constantize
|
76
|
-
end
|
77
|
-
|
78
|
-
def reimbursement
|
79
|
-
@reimbursement ||= begin
|
80
|
-
require 'spree/core/state_machines/reimbursement'
|
81
|
-
'Spree::Core::StateMachines::Reimbursement'
|
82
|
-
end
|
83
|
-
|
84
|
-
@reimbursement.constantize
|
85
|
-
end
|
5
|
+
class StateMachines < Spree::Preferences::Configuration
|
6
|
+
# State Machine module for Reimbursements
|
7
|
+
#
|
8
|
+
# @!attribute [rw] reimbursement
|
9
|
+
# @return [Module] a module that implements the state machine for the `Spree::Reimbursement` model.
|
10
|
+
class_name_attribute :reimbursement, default: "Spree::Core::StateMachines::Reimbursement"
|
11
|
+
|
12
|
+
# State Machine module for Return Authorizations
|
13
|
+
#
|
14
|
+
# @!attribute [rw] return_authorization
|
15
|
+
# @return [Module] a module that implements the state machine for the `Spree::ReturnAuthorization` model.
|
16
|
+
class_name_attribute :return_authorization, default: "Spree::Core::StateMachines::ReturnAuthorization"
|
17
|
+
|
18
|
+
# State Machine module for Return Item Acceptances
|
19
|
+
#
|
20
|
+
# @!attribute [rw] return_item_acceptance
|
21
|
+
# @return [Module] a module that implements the acceptance part of the state machine for the `Spree::ReturnItem` model.
|
22
|
+
class_name_attribute :return_item_acceptance, default: "Spree::Core::StateMachines::ReturnItem::AcceptanceStatus"
|
23
|
+
|
24
|
+
# State Machine module for Return Item Receptions
|
25
|
+
#
|
26
|
+
# @!attribute [rw] return_item_reception
|
27
|
+
# @return [Module] a module that implements the reception part of the state machine for the `Spree::ReturnItem` model.
|
28
|
+
class_name_attribute :return_item_reception, default: "Spree::Core::StateMachines::ReturnItem::ReceptionStatus"
|
29
|
+
|
30
|
+
# State Machine module for Payments
|
31
|
+
#
|
32
|
+
# @!attribute [rw] payment
|
33
|
+
# @return [Module] a module that implements the state machine for the `Spree::Payment` model.
|
34
|
+
class_name_attribute :payment, default: "Spree::Core::StateMachines::Payment"
|
35
|
+
|
36
|
+
# State Machine module for Inventory Units
|
37
|
+
#
|
38
|
+
# @!attribute [rw] inventory_unit
|
39
|
+
# @return [Module] a module that implements the state machine for the `Spree::InventoryUnit` model.
|
40
|
+
class_name_attribute :inventory_unit, default: "Spree::Core::StateMachines::InventoryUnit"
|
41
|
+
|
42
|
+
# State Machine module for Shipments
|
43
|
+
#
|
44
|
+
# @!attribute [rw] shipment
|
45
|
+
# @return [Module] a module that implements the state machine for the `Spree::Shipment` model.
|
46
|
+
class_name_attribute :shipment, default: "Spree::Core::StateMachines::Shipment"
|
47
|
+
|
48
|
+
# State Machine module for Orders
|
49
|
+
#
|
50
|
+
# @!attribute [rw] order
|
51
|
+
# @return [Module] a module that implements the state machine for the `Spree::Order` model.
|
52
|
+
class_name_attribute :order, default: "Spree::Core::StateMachines::Order"
|
86
53
|
end
|
87
54
|
end
|
88
55
|
end
|
@@ -14,7 +14,7 @@ module Spree
|
|
14
14
|
class EmailValidator < ActiveModel::EachValidator
|
15
15
|
def validate_each(record, attribute, value)
|
16
16
|
unless Spree::Config.default_email_regexp.match? value
|
17
|
-
record.errors.add(attribute, :invalid, **{ value:
|
17
|
+
record.errors.add(attribute, :invalid, **{ value: }.merge!(options))
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
data/lib/spree/core/version.rb
CHANGED
data/lib/spree/core.rb
CHANGED
@@ -11,6 +11,7 @@ require "sprockets/railtie"
|
|
11
11
|
|
12
12
|
require 'active_support/deprecation'
|
13
13
|
require 'spree/deprecated_instance_variable_proxy'
|
14
|
+
require 'spree/deprecator'
|
14
15
|
require 'acts_as_list'
|
15
16
|
require 'awesome_nested_set'
|
16
17
|
require 'cancan'
|
@@ -26,10 +27,6 @@ require 'state_machines-activerecord'
|
|
26
27
|
StateMachines::Machine.ignore_method_conflicts = true
|
27
28
|
|
28
29
|
module Spree
|
29
|
-
def self.deprecator
|
30
|
-
@deprecator ||= ActiveSupport::Deprecation.new('5.0', 'Solidus')
|
31
|
-
end
|
32
|
-
|
33
30
|
autoload :Deprecation, 'spree/deprecation'
|
34
31
|
|
35
32
|
mattr_accessor :user_class, default: 'Spree::LegacyUser'
|
@@ -108,25 +105,16 @@ require 'spree/core/engine'
|
|
108
105
|
|
109
106
|
require 'spree/i18n'
|
110
107
|
require 'spree/localized_number'
|
111
|
-
require 'spree/money'
|
112
108
|
require 'spree/permitted_attributes'
|
113
109
|
|
114
110
|
require 'spree/core/importer'
|
115
111
|
require 'spree/core/permalinks'
|
116
112
|
require 'spree/core/product_duplicator'
|
117
|
-
require 'spree/core/controller_helpers/auth'
|
118
|
-
require 'spree/core/controller_helpers/common'
|
119
|
-
require 'spree/core/controller_helpers/order'
|
120
|
-
require 'spree/core/controller_helpers/payment_parameters'
|
121
|
-
require 'spree/core/controller_helpers/pricing'
|
122
|
-
require 'spree/core/controller_helpers/search'
|
123
|
-
require 'spree/core/controller_helpers/store'
|
124
|
-
require 'spree/core/controller_helpers/strong_parameters'
|
125
113
|
require 'spree/core/role_configuration'
|
126
114
|
require 'spree/core/state_machines'
|
127
115
|
require 'spree/core/stock_configuration'
|
116
|
+
require 'spree/core/null_promotion_configuration'
|
128
117
|
require 'spree/core/validators/email'
|
129
|
-
require 'spree/permission_sets'
|
130
118
|
require 'spree/user_class_handle'
|
131
119
|
|
132
120
|
require 'spree/preferences/store'
|
data/lib/spree/i18n.rb
CHANGED
@@ -5,7 +5,7 @@ require 'i18n'
|
|
5
5
|
module Spree
|
6
6
|
def self.i18n_available_locales
|
7
7
|
I18n.available_locales.select do |locale|
|
8
|
-
I18n.t('spree.i18n.this_file_language', locale
|
8
|
+
I18n.t('spree.i18n.this_file_language', locale:, fallback: false, default: nil)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
@@ -7,7 +7,7 @@ module Spree
|
|
7
7
|
carton = Carton.joins(:orders).last
|
8
8
|
raise "Your database needs at least one shipped order with a carton to render this preview" unless carton
|
9
9
|
|
10
|
-
Spree::Config.carton_shipped_email_class.shipped_email(order: carton.orders.first, carton:
|
10
|
+
Spree::Config.carton_shipped_email_class.shipped_email(order: carton.orders.first, carton:)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
data/lib/spree/money.rb
CHANGED
@@ -1,120 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
DifferentCurrencyError = Class.new(StandardError)
|
9
|
-
|
10
|
-
class <<self
|
11
|
-
attr_accessor :default_formatting_rules
|
12
|
-
|
13
|
-
def parse(amount, currency = Spree::Config[:currency])
|
14
|
-
new(parse_to_money(amount, currency))
|
15
|
-
end
|
16
|
-
|
17
|
-
# @api private
|
18
|
-
def parse_to_money(amount, currency)
|
19
|
-
::Monetize.parse(amount, currency)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
self.default_formatting_rules = {
|
23
|
-
# Ruby money currently has this as false, which is wrong for the vast
|
24
|
-
# majority of locales.
|
25
|
-
sign_before_symbol: true
|
26
|
-
}
|
27
|
-
|
28
|
-
attr_reader :money
|
29
|
-
|
30
|
-
delegate :cents, :currency, :to_d, :zero?, to: :money
|
31
|
-
|
32
|
-
# @param amount [Money, #to_s] the value of the money object
|
33
|
-
# @param options [Hash] the default options for formatting the money object See #format
|
34
|
-
def initialize(amount, options = {})
|
35
|
-
if amount.is_a?(::Money)
|
36
|
-
@money = amount
|
37
|
-
else
|
38
|
-
currency = options[:currency] || Spree::Config[:currency]
|
39
|
-
|
40
|
-
@money = Monetize.from_string(amount, currency)
|
41
|
-
end
|
42
|
-
@options = Spree::Money.default_formatting_rules.merge(options)
|
43
|
-
end
|
44
|
-
|
45
|
-
# @return [String] the value of this money object formatted according to
|
46
|
-
# its options
|
47
|
-
def to_s
|
48
|
-
format
|
49
|
-
end
|
50
|
-
|
51
|
-
# @param options [Hash, String] the options for formatting the money object
|
52
|
-
# @option options [Boolean] with_currency when true, show the currency
|
53
|
-
# @option options [Boolean] no_cents when true, round to the closest dollar
|
54
|
-
# @option options [String] decimal_mark the mark for delimiting the
|
55
|
-
# decimals
|
56
|
-
# @option options [String, false, nil] thousands_separator the character to
|
57
|
-
# delimit powers of 1000, if one is desired, otherwise false or nil
|
58
|
-
# @option options [Boolean] sign_before_symbol when true the sign of the
|
59
|
-
# value comes before the currency symbol
|
60
|
-
# @option options [:before, :after] symbol_position the position of the
|
61
|
-
# currency symbol
|
62
|
-
# @return [String] the value of this money object formatted according to
|
63
|
-
# its options
|
64
|
-
def format(options = {})
|
65
|
-
@money.format(@options.merge(options))
|
66
|
-
end
|
67
|
-
|
68
|
-
# @note If you pass in options, ensure you pass in the { html_wrap: true } as well.
|
69
|
-
# @param options [Hash] additional formatting options
|
70
|
-
# @return [String] the value of this money object formatted according to
|
71
|
-
# its options and any additional options, by default with html_wrap.
|
72
|
-
def to_html(options = { html_wrap: true })
|
73
|
-
output = format(options)
|
74
|
-
# Maintain compatibility by checking html option renamed to html_wrap.
|
75
|
-
if options[:html_wrap]
|
76
|
-
output = output.html_safe
|
77
|
-
end
|
78
|
-
output
|
79
|
-
end
|
80
|
-
|
81
|
-
# (see #to_s)
|
82
|
-
def as_json(*)
|
83
|
-
to_s
|
84
|
-
end
|
85
|
-
|
86
|
-
def <=>(other)
|
87
|
-
if !other.respond_to?(:money)
|
88
|
-
raise TypeError, "Can't compare #{other.class} to Spree::Money"
|
89
|
-
end
|
90
|
-
if currency != other.currency
|
91
|
-
# By default, ::Money will try to run a conversion on `other.money` and
|
92
|
-
# try a comparison on that. We do not want any currency conversion to
|
93
|
-
# take place so we'll catch this here and raise an error.
|
94
|
-
raise(
|
95
|
-
DifferentCurrencyError,
|
96
|
-
"Can't compare #{currency} with #{other.currency}"
|
97
|
-
)
|
98
|
-
end
|
99
|
-
@money <=> other.money
|
100
|
-
end
|
101
|
-
|
102
|
-
# Delegates comparison to the internal ruby money instance.
|
103
|
-
#
|
104
|
-
# @see http://www.rubydoc.info/gems/money/Money/Arithmetic#%3D%3D-instance_method
|
105
|
-
def ==(other)
|
106
|
-
raise TypeError, "Can't compare #{other.class} to Spree::Money" if !other.respond_to?(:money)
|
107
|
-
@money == other.money
|
108
|
-
end
|
109
|
-
|
110
|
-
def -(other)
|
111
|
-
raise TypeError, "Can't subtract #{other.class} to Spree::Money" if !other.respond_to?(:money)
|
112
|
-
self.class.new(@money - other.money)
|
113
|
-
end
|
114
|
-
|
115
|
-
def +(other)
|
116
|
-
raise TypeError, "Can't add #{other.class} to Spree::Money" if !other.respond_to?(:money)
|
117
|
-
self.class.new(@money + other.money)
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
3
|
+
Spree.deprecator.warn(
|
4
|
+
<<~MSG
|
5
|
+
The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
|
6
|
+
MSG
|
7
|
+
)
|
@@ -1,32 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
# See one of the subclasses for example structure such as {Spree::PermissionSets::UserDisplay}
|
9
|
-
#
|
10
|
-
# @see Spree::RoleConfiguration
|
11
|
-
# @see Spree::PermissionSets
|
12
|
-
class Base
|
13
|
-
# @param ability [CanCan::Ability]
|
14
|
-
# The ability that will be extended with the current permission set.
|
15
|
-
# The ability passed in must respond to #user
|
16
|
-
def initialize(ability)
|
17
|
-
@ability = ability
|
18
|
-
end
|
19
|
-
|
20
|
-
# Activate permissions on the ability. Put your can and cannot statements here.
|
21
|
-
# Must be overriden by subclasses
|
22
|
-
def activate!
|
23
|
-
raise NotImplementedError.new
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
attr_reader :ability
|
29
|
-
delegate :can, :cannot, :user, to: :ability
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
3
|
+
Spree.deprecator.warn(
|
4
|
+
<<~MSG
|
5
|
+
The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
|
6
|
+
MSG
|
7
|
+
)
|
@@ -1,43 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
# panel, about:
|
9
|
-
#
|
10
|
-
# - Tax categories
|
11
|
-
# - Tax rates
|
12
|
-
# - Zones
|
13
|
-
# - Countries
|
14
|
-
# - States
|
15
|
-
# - Payment methods
|
16
|
-
# - Taxonomies
|
17
|
-
# - Shipping methods
|
18
|
-
# - Shipping categories
|
19
|
-
# - Stock locations
|
20
|
-
# - Stock movements
|
21
|
-
# - Refund reasons
|
22
|
-
# - Reimbursement types
|
23
|
-
# - Return reasons
|
24
|
-
class ConfigurationDisplay < PermissionSets::Base
|
25
|
-
def activate!
|
26
|
-
can [:read, :admin], Spree::TaxCategory
|
27
|
-
can [:read, :admin], Spree::TaxRate
|
28
|
-
can [:read, :admin], Spree::Zone
|
29
|
-
can [:read, :admin], Spree::Country
|
30
|
-
can [:read, :admin], Spree::State
|
31
|
-
can [:read, :admin], Spree::PaymentMethod
|
32
|
-
can [:read, :admin], Spree::Taxonomy
|
33
|
-
can [:read, :admin], Spree::ShippingMethod
|
34
|
-
can [:read, :admin], Spree::ShippingCategory
|
35
|
-
can [:read, :admin], Spree::StockLocation
|
36
|
-
can [:read, :admin], Spree::StockMovement
|
37
|
-
can [:read, :admin], Spree::RefundReason
|
38
|
-
can [:read, :admin], Spree::ReimbursementType
|
39
|
-
can [:read, :admin], Spree::ReturnReason
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
3
|
+
Spree.deprecator.warn(
|
4
|
+
<<~MSG
|
5
|
+
The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
|
6
|
+
MSG
|
7
|
+
)
|
@@ -1,42 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
#
|
9
|
-
# - Tax categories
|
10
|
-
# - Tax rates
|
11
|
-
# - Zones
|
12
|
-
# - Countries
|
13
|
-
# - States
|
14
|
-
# - Payment methods
|
15
|
-
# - Taxonomies
|
16
|
-
# - Shipping methods
|
17
|
-
# - Shipping categories
|
18
|
-
# - Stock locations
|
19
|
-
# - Stock movements
|
20
|
-
# - Refund reasons
|
21
|
-
# - Reimbursement types
|
22
|
-
# - Return reasons
|
23
|
-
class ConfigurationManagement < PermissionSets::Base
|
24
|
-
def activate!
|
25
|
-
can :manage, Spree::TaxCategory
|
26
|
-
can :manage, Spree::TaxRate
|
27
|
-
can :manage, Spree::Zone
|
28
|
-
can :manage, Spree::Country
|
29
|
-
can :manage, Spree::State
|
30
|
-
can :manage, Spree::PaymentMethod
|
31
|
-
can :manage, Spree::Taxonomy
|
32
|
-
can :manage, Spree::ShippingMethod
|
33
|
-
can :manage, Spree::ShippingCategory
|
34
|
-
can :manage, Spree::StockLocation
|
35
|
-
can :manage, Spree::StockMovement
|
36
|
-
can :manage, Spree::RefundReason
|
37
|
-
can :manage, Spree::ReimbursementType
|
38
|
-
can :manage, Spree::ReturnReason
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
3
|
+
Spree.deprecator.warn(
|
4
|
+
<<~MSG
|
5
|
+
The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
|
6
|
+
MSG
|
7
|
+
)
|
@@ -1,16 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
# which may or not contain sensitive information depending on
|
9
|
-
# customizations.
|
10
|
-
class DashboardDisplay < PermissionSets::Base
|
11
|
-
def activate!
|
12
|
-
can [:admin, :home], :dashboards
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
3
|
+
Spree.deprecator.warn(
|
4
|
+
<<~MSG
|
5
|
+
The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
|
6
|
+
MSG
|
7
|
+
)
|
@@ -1,73 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
# is the default role for all users without any explicit roles.
|
9
|
-
#
|
10
|
-
# Permissions include reading and updating orders when the ability's user
|
11
|
-
# has been assigned as the order's user, unless the order is already
|
12
|
-
# completed. Same is true for guest checkout orders.
|
13
|
-
#
|
14
|
-
# It grants read-only permissions for the following resources typically used
|
15
|
-
# during a checkout process:
|
16
|
-
#
|
17
|
-
# - Zones
|
18
|
-
# - Countries
|
19
|
-
# - States
|
20
|
-
# - Taxons
|
21
|
-
# - Taxonomies
|
22
|
-
# - Products
|
23
|
-
# - Properties
|
24
|
-
# - Product properties
|
25
|
-
# - Variants
|
26
|
-
# - Option types
|
27
|
-
# - Option values
|
28
|
-
# - Stock items
|
29
|
-
# - Stock locations
|
30
|
-
#
|
31
|
-
# Abilities with this role can also create refund authorizations for orders
|
32
|
-
# with the same user, as well as reading and updating the user record and
|
33
|
-
# their associated cards.
|
34
|
-
class DefaultCustomer < PermissionSets::Base
|
35
|
-
def activate!
|
36
|
-
can :read, Country
|
37
|
-
can :read, OptionType
|
38
|
-
can :read, OptionValue
|
39
|
-
can :create, Order do |order, token|
|
40
|
-
# same user, or both nil
|
41
|
-
order.user == user ||
|
42
|
-
# guest checkout order
|
43
|
-
order.email.present? ||
|
44
|
-
# via API, just like with show and update
|
45
|
-
(order.guest_token.present? && token == order.guest_token)
|
46
|
-
end
|
47
|
-
can [:show, :update], Order, Order.where(user: user) do |order, token|
|
48
|
-
order.user == user || (order.guest_token.present? && token == order.guest_token)
|
49
|
-
end
|
50
|
-
cannot :update, Order do |order|
|
51
|
-
order.completed?
|
52
|
-
end
|
53
|
-
can :create, ReturnAuthorization do |return_authorization|
|
54
|
-
return_authorization.order.user == user
|
55
|
-
end
|
56
|
-
can [:read, :update], CreditCard, user_id: user.id
|
57
|
-
can :read, Product
|
58
|
-
can :read, ProductProperty
|
59
|
-
can :read, Property
|
60
|
-
can :create, Spree.user_class
|
61
|
-
can [:show, :update, :update_email], Spree.user_class, id: user.id
|
62
|
-
can :read, State
|
63
|
-
can :read, StockItem, stock_location: { active: true }
|
64
|
-
can :read, StockLocation, active: true
|
65
|
-
can :read, Taxon
|
66
|
-
can :read, Taxonomy
|
67
|
-
can [:save_in_address_book, :remove_from_address_book], Spree.user_class, id: user.id
|
68
|
-
can [:read, :view_out_of_stock], Variant
|
69
|
-
can :read, Zone
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
3
|
+
Spree.deprecator.warn(
|
4
|
+
<<~MSG
|
5
|
+
The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
|
6
|
+
MSG
|
7
|
+
)
|
@@ -1,40 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
# orders, also from the admin panel, including:
|
9
|
-
#
|
10
|
-
# - Orders
|
11
|
-
# - Payments
|
12
|
-
# - Shipments
|
13
|
-
# - Adjustments
|
14
|
-
# - Line items
|
15
|
-
# - Return authorizations
|
16
|
-
# - Customer returns
|
17
|
-
# - Order cancellations
|
18
|
-
# - Reimbursements
|
19
|
-
# - Return items
|
20
|
-
# - Refunds
|
21
|
-
#
|
22
|
-
# However, it does not allow any modifications to be made to any of these
|
23
|
-
# resources.
|
24
|
-
class OrderDisplay < PermissionSets::Base
|
25
|
-
def activate!
|
26
|
-
can [:read, :admin, :edit, :cart], Spree::Order
|
27
|
-
can [:read, :admin], Spree::Payment
|
28
|
-
can [:read, :admin], Spree::Shipment
|
29
|
-
can [:read, :admin], Spree::Adjustment
|
30
|
-
can [:read, :admin], Spree::LineItem
|
31
|
-
can [:read, :admin], Spree::ReturnAuthorization
|
32
|
-
can [:read, :admin], Spree::CustomerReturn
|
33
|
-
can [:read, :admin], Spree::OrderCancellations
|
34
|
-
can [:read, :admin], Spree::Reimbursement
|
35
|
-
can [:read, :admin], Spree::ReturnItem
|
36
|
-
can [:read, :admin], Spree::Refund
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
3
|
+
Spree.deprecator.warn(
|
4
|
+
<<~MSG
|
5
|
+
The file "#{__FILE__}" does not need to be `require`d any longer, it is now autoloaded.
|
6
|
+
MSG
|
7
|
+
)
|