solidus_core 3.0.0 → 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/README.md +1 -2
- data/Rakefile +7 -2
- data/app/assets/images/logo/solidus.svg +18 -1
- data/app/assets/images/logo/solidus_logo.png +0 -0
- data/app/controllers/spree/base_controller.rb +1 -3
- data/app/helpers/spree/base_helper.rb +3 -3
- 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/{lib/spree/core/controller_helpers/current_host.rb → app/helpers/spree/core/controller_helpers/pricing.rb} +6 -4
- 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/helpers/spree/products_helper.rb +2 -2
- 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/attachment.rb +30 -11
- data/app/models/concerns/spree/active_storage_adapter/normalization.rb +1 -1
- data/app/models/concerns/spree/active_storage_adapter.rb +1 -18
- data/app/models/concerns/spree/default_price.rb +30 -10
- 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/ransackable_attributes.rb +9 -5
- data/app/models/concerns/spree/user_address_book.rb +19 -10
- data/app/models/concerns/spree/user_methods.rb +40 -6
- data/app/models/spree/address.rb +11 -9
- data/app/models/spree/adjustment.rb +15 -76
- data/app/models/spree/adjustment_reason.rb +2 -0
- data/app/models/spree/calculator/flat_fee.rb +21 -0
- data/app/models/spree/calculator/returns/default_refund_amount.rb +1 -1
- data/app/models/spree/carton.rb +3 -3
- 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/country.rb +1 -1
- data/app/models/spree/credit_card.rb +13 -10
- data/app/models/spree/customer_return.rb +6 -3
- data/app/models/spree/deprecated_configurable_class.rb +40 -0
- data/app/models/spree/fulfilment_changer.rb +56 -29
- data/app/models/spree/image/active_storage_attachment.rb +2 -7
- data/app/models/spree/image/paperclip_attachment.rb +2 -2
- 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 +26 -8
- data/app/models/spree/log_entry.rb +98 -1
- 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_type.rb +1 -1
- data/app/models/spree/option_value.rb +4 -3
- data/app/models/spree/order/number_generator.rb +7 -1
- data/app/models/spree/order.rb +143 -96
- data/app/models/spree/order_cancellations.rb +8 -8
- data/app/models/spree/order_inventory.rb +7 -5
- data/app/models/spree/order_merger.rb +5 -7
- data/app/models/spree/order_mutex.rb +2 -2
- data/app/models/spree/order_shipping.rb +15 -19
- data/app/models/spree/order_taxation.rb +7 -4
- data/app/models/spree/order_update_attributes.rb +3 -1
- data/app/models/spree/order_updater.rb +25 -63
- data/app/models/spree/payment/processing.rb +60 -57
- data/app/models/spree/payment.rb +14 -27
- data/app/models/spree/payment_create.rb +1 -1
- data/app/models/spree/payment_method/bogus_credit_card.rb +18 -14
- data/app/models/spree/payment_method/credit_card.rb +0 -4
- data/app/models/spree/payment_method/simple_bogus_credit_card.rb +18 -4
- data/app/models/spree/payment_method/store_credit.rb +1 -1
- data/app/models/spree/payment_method.rb +29 -10
- 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/price.rb +3 -3
- data/app/models/spree/product/scopes.rb +23 -10
- data/app/models/spree/product.rb +30 -23
- data/app/models/spree/product_property.rb +1 -1
- data/app/models/spree/property.rb +1 -1
- data/app/models/spree/refund.rb +13 -3
- data/app/models/spree/refund_reason.rb +6 -1
- data/app/models/spree/reimbursement.rb +6 -6
- data/app/models/spree/reimbursement_performer.rb +3 -3
- data/app/models/spree/reimbursement_tax_calculator.rb +3 -3
- 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 +3 -1
- data/app/models/spree/return_item.rb +13 -15
- 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 +12 -10
- data/app/models/spree/shipping_category.rb +2 -0
- data/app/models/spree/shipping_rate.rb +2 -3
- data/app/models/spree/shipping_rate_tax.rb +1 -1
- data/app/models/spree/{order_contents.rb → simple_order_contents.rb} +10 -13
- data/app/models/spree/state.rb +1 -1
- data/app/models/spree/stock/allocator/on_hand_first.rb +2 -2
- data/app/models/spree/stock/availability.rb +11 -3
- 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/quantifier.rb +12 -8
- data/app/models/spree/stock/simple_coordinator.rb +38 -28
- data/app/models/spree/stock/splitter/shipping_category.rb +1 -1
- data/app/models/spree/stock_item.rb +2 -1
- data/app/models/spree/stock_location.rb +7 -7
- data/app/models/spree/stock_movement.rb +2 -2
- data/app/models/spree/store.rb +3 -1
- data/app/models/spree/store_credit.rb +31 -16
- data/app/models/spree/store_credit_event.rb +4 -3
- data/app/models/spree/store_credit_prioritizer.rb +17 -0
- 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/item_tax.rb +3 -2
- data/app/models/spree/tax/order_tax.rb +3 -1
- data/app/models/spree/tax/tax_helpers.rb +14 -3
- data/app/models/spree/tax/tax_location.rb +4 -7
- data/app/models/spree/tax_calculator/default.rb +32 -1
- data/app/models/spree/tax_calculator/shipping_rate.rb +2 -2
- data/app/models/spree/tax_category.rb +3 -1
- data/app/models/spree/tax_rate.rb +14 -1
- data/app/models/spree/taxon/active_storage_attachment.rb +2 -2
- data/app/models/spree/taxon/paperclip_attachment.rb +4 -4
- data/app/models/spree/taxon.rb +25 -3
- data/app/models/spree/taxon_brand_selector.rb +22 -0
- data/app/models/spree/taxonomy.rb +4 -3
- 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/user_last_url_storer/rules/authentication_rule.rb +1 -1
- data/app/models/spree/variant/price_selector.rb +25 -8
- 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 +64 -37
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +4 -4
- data/app/models/spree/wallet.rb +2 -2
- data/app/models/spree/zone.rb +1 -1
- data/app/subscribers/spree/order_mailer_subscriber.rb +35 -0
- data/app/views/layouts/spree/base_mailer.html.erb +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/i18n-tasks.yml +134 -0
- data/config/locales/en.yml +439 -338
- data/db/default/spree/permission_sets.rb +10 -0
- data/db/default/spree/return_reasons.rb +3 -1
- data/db/default/spree/states.rb +2 -2
- data/db/migrate/20160101010000_solidus_one_four.rb +0 -127
- data/db/migrate/20180710170104_create_spree_store_credit_reasons_table.rb +2 -2
- data/db/migrate/20201127212108_add_type_before_removal_to_spree_payment_methods.rb +7 -0
- data/db/migrate/20210312061050_change_column_null_on_prices.rb +7 -0
- data/db/migrate/20210815004823_add_unique_index_to_option_values_variants.rb +16 -0
- data/db/migrate/20220419170826_remove_archived_user_addresses.rb +12 -0
- data/db/migrate/20220805202442_add_level_to_spree_tax_rates.rb +5 -0
- data/db/migrate/20221123152807_add_shipping_category_to_spree_variants.rb +5 -0
- data/db/migrate/20230321161854_change_column_null_option_values_option_type_id.rb +5 -0
- data/db/migrate/20230425103509_remove_taxon_position.rb +5 -0
- data/db/migrate/20230427095534_drop_deprecated_address_id_from_shipments.rb +11 -0
- 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 +5 -1
- data/lib/generators/solidus/install/app_templates/authentication/custom.rb +16 -0
- data/lib/generators/solidus/install/app_templates/authentication/devise.rb +16 -0
- data/lib/generators/solidus/install/app_templates/authentication/existing.rb +10 -0
- data/lib/generators/solidus/install/app_templates/authentication/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/frontend/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -0
- data/lib/generators/solidus/install/app_templates/payment_method/braintree.rb +5 -0
- data/lib/generators/solidus/install/app_templates/payment_method/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/payment_method/paypal.rb +5 -0
- data/lib/generators/solidus/install/app_templates/payment_method/stripe.rb +5 -0
- data/lib/generators/solidus/install/install_generator.rb +210 -156
- data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +27 -33
- data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/backend/all.js +2 -2
- data/lib/generators/solidus/update/templates/config/initializers/new_solidus_defaults.rb.tt +30 -0
- data/lib/generators/solidus/update/update_generator.rb +124 -0
- data/lib/generators/spree/custom_user/custom_user_generator.rb +6 -4
- data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +2 -6
- data/lib/generators/spree/custom_user/templates/migration.rb.tt +7 -3
- data/lib/generators/spree/dummy/dummy_generator.rb +12 -9
- data/lib/generators/spree/dummy/templates/rails/application.rb.tt +1 -2
- data/lib/generators/spree/dummy/templates/rails/database.yml +48 -63
- data/lib/generators/spree/dummy/templates/rails/manifest.js +3 -0
- data/lib/generators/spree/dummy/templates/rails/test.rb +7 -2
- data/lib/spree/app_configuration.rb +220 -71
- data/lib/spree/bus.rb +11 -0
- data/lib/spree/core/class_constantizer.rb +2 -2
- data/lib/spree/core/controller_helpers/auth.rb +5 -69
- 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 -165
- 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 +49 -16
- 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 +6 -6
- 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_duplicator.rb +1 -1
- data/lib/spree/core/product_filters.rb +2 -2
- data/lib/spree/core/search/base.rb +18 -9
- 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 -247
- 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/stock_configuration.rb +18 -0
- data/lib/spree/core/validators/email.rb +2 -4
- data/lib/spree/core/version.rb +5 -1
- data/lib/spree/core/versioned_value.rb +75 -0
- data/lib/spree/core.rb +40 -16
- data/lib/spree/deprecated_instance_variable_proxy.rb +57 -0
- data/lib/spree/deprecation.rb +3 -51
- 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/migration_helpers.rb +3 -3
- data/lib/spree/migrations.rb +13 -11
- 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 -23
- data/lib/spree/permission_sets/configuration_management.rb +5 -23
- data/lib/spree/permission_sets/dashboard_display.rb +5 -9
- data/lib/spree/permission_sets/default_customer.rb +5 -35
- data/lib/spree/permission_sets/order_display.rb +5 -19
- data/lib/spree/permission_sets/order_management.rb +5 -20
- data/lib/spree/permission_sets/product_display.rb +5 -17
- data/lib/spree/permission_sets/product_management.rb +5 -19
- data/lib/spree/permission_sets/restricted_stock_display.rb +5 -16
- data/lib/spree/permission_sets/restricted_stock_management.rb +5 -16
- data/lib/spree/permission_sets/stock_display.rb +5 -10
- data/lib/spree/permission_sets/stock_management.rb +5 -10
- data/lib/spree/permission_sets/super_user.rb +5 -9
- data/lib/spree/permission_sets/user_display.rb +5 -11
- data/lib/spree/permission_sets/user_management.rb +5 -23
- data/lib/spree/permission_sets.rb +5 -18
- data/lib/spree/permitted_attributes.rb +35 -14
- data/lib/spree/preferences/configuration.rb +88 -0
- data/lib/spree/preferences/persistable.rb +7 -1
- data/lib/spree/preferences/preferable.rb +13 -0
- data/lib/spree/preferences/preferable_class_methods.rb +12 -4
- data/lib/spree/preferences/preference_differentiator.rb +29 -0
- data/lib/spree/preferences/static_model_preferences.rb +25 -10
- data/lib/spree/preferences/store.rb +2 -2
- data/lib/spree/testing_support/blacklist_urls.rb +1 -1
- data/lib/spree/testing_support/bus_helpers.rb +101 -0
- data/lib/spree/testing_support/capybara_ext.rb +11 -1
- data/lib/spree/testing_support/common_rake.rb +76 -23
- data/lib/spree/testing_support/dummy_ability.rb +7 -0
- data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/backend/all.js +1 -1
- data/lib/spree/testing_support/dummy_app/assets/stylesheets/solidus_admin/tailwind.css +1 -0
- data/lib/spree/testing_support/dummy_app/database.yml +39 -28
- data/lib/spree/testing_support/dummy_app/migrations.rb +8 -15
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +3 -10
- data/lib/spree/testing_support/dummy_app.rb +71 -42
- data/lib/spree/testing_support/extension_rake.rb +2 -2
- data/lib/spree/testing_support/factories/address_factory.rb +9 -13
- data/lib/spree/testing_support/factories/adjustment_factory.rb +1 -13
- data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/calculator_factory.rb +4 -10
- data/lib/spree/testing_support/factories/carton_factory.rb +2 -10
- data/lib/spree/testing_support/factories/country_factory.rb +1 -7
- data/lib/spree/testing_support/factories/credit_card_factory.rb +0 -5
- data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -11
- data/lib/spree/testing_support/factories/image_factory.rb +0 -5
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +4 -14
- data/lib/spree/testing_support/factories/line_item_factory.rb +0 -8
- data/lib/spree/testing_support/factories/option_type_factory.rb +0 -8
- data/lib/spree/testing_support/factories/option_value_factory.rb +0 -5
- data/lib/spree/testing_support/factories/order_factory.rb +19 -38
- data/lib/spree/testing_support/factories/payment_factory.rb +0 -10
- data/lib/spree/testing_support/factories/payment_method_factory.rb +0 -5
- data/lib/spree/testing_support/factories/price_factory.rb +0 -7
- data/lib/spree/testing_support/factories/product_factory.rb +5 -13
- data/lib/spree/testing_support/factories/product_option_type_factory.rb +0 -8
- data/lib/spree/testing_support/factories/product_property_factory.rb +0 -8
- data/lib/spree/testing_support/factories/property_factory.rb +0 -5
- data/lib/spree/testing_support/factories/refund_factory.rb +0 -8
- data/lib/spree/testing_support/factories/refund_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +0 -7
- data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +0 -5
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +0 -9
- data/lib/spree/testing_support/factories/return_item_factory.rb +0 -9
- data/lib/spree/testing_support/factories/return_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/role_factory.rb +0 -5
- data/lib/spree/testing_support/factories/shipment_factory.rb +1 -11
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +0 -5
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +0 -9
- data/lib/spree/testing_support/factories/shipping_rate_factory.rb +0 -8
- data/lib/spree/testing_support/factories/state_factory.rb +8 -10
- data/lib/spree/testing_support/factories/stock_item_factory.rb +5 -9
- data/lib/spree/testing_support/factories/stock_location_factory.rb +0 -9
- data/lib/spree/testing_support/factories/stock_movement_factory.rb +0 -7
- data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -9
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +0 -8
- data/lib/spree/testing_support/factories/store_credit_factory.rb +4 -13
- data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +0 -5
- data/lib/spree/testing_support/factories/store_factory.rb +0 -5
- data/lib/spree/testing_support/factories/tax_category_factory.rb +0 -8
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +0 -9
- data/lib/spree/testing_support/factories/taxon_factory.rb +5 -10
- data/lib/spree/testing_support/factories/taxonomy_factory.rb +3 -6
- data/lib/spree/testing_support/factories/user_factory.rb +6 -9
- data/lib/spree/testing_support/factories/variant_factory.rb +0 -10
- data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +0 -8
- data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +0 -9
- data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +0 -8
- data/lib/spree/testing_support/factories/zone_factory.rb +1 -9
- data/lib/spree/testing_support/factory_bot.rb +6 -29
- data/lib/spree/testing_support/flaky.rb +22 -0
- data/lib/spree/testing_support/order_walkthrough.rb +7 -6
- data/lib/spree/testing_support/sequences.rb +0 -5
- 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/spree/testing_support/silence_deprecations.rb +9 -0
- data/lib/spree/user_class_handle.rb +2 -2
- data/lib/tasks/colorado_delivery_fee.rake +28 -0
- data/lib/tasks/payment_method.rake +29 -0
- data/lib/tasks/solidus/delete_prices_with_nil_amount.rake +8 -0
- data/solidus_core.gemspec +18 -8
- metadata +233 -117
- 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 -77
- data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -99
- data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -139
- data/app/models/spree/promotion/actions/free_shipping.rb +0 -58
- 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 -53
- 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 -74
- data/app/models/spree/promotion/rules/store.rb +0 -22
- data/app/models/spree/promotion/rules/taxon.rb +0 -87
- data/app/models/spree/promotion/rules/user.rb +0 -30
- 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 -284
- data/app/models/spree/promotion_action.rb +0 -43
- 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 -50
- data/app/models/spree/promotion_code_batch.rb +0 -27
- data/app/models/spree/promotion_handler/cart.rb +0 -55
- 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/models/spree/tax/shipping_rate_taxer.rb +0 -24
- data/app/subscribers/spree/mailer_subscriber.rb +0 -25
- 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/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/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -10
- data/lib/generators/solidus/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -9
- 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/event/adapters/active_support_notifications.rb +0 -67
- data/lib/spree/event/configuration.rb +0 -25
- data/lib/spree/event/subscriber.rb +0 -86
- data/lib/spree/event/subscriber_registry.rb +0 -94
- data/lib/spree/event.rb +0 -119
- data/lib/spree/permission_sets/promotion_display.rb +0 -15
- data/lib/spree/permission_sets/promotion_management.rb +0 -15
- data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/frontend/all.js +0 -10
- data/lib/spree/testing_support/dummy_app/assets/stylesheets/spree/frontend/all.css +0 -9
- data/lib/spree/testing_support/dummy_app/views/layouts/application.html.erb +0 -1
- data/lib/spree/testing_support/factories/order_promotion_factory.rb +0 -16
- data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -12
- data/lib/spree/testing_support/factories/promotion_code_factory.rb +0 -16
- data/lib/spree/testing_support/factories/promotion_factory.rb +0 -92
- data/lib/spree/testing_support/factories.rb +0 -11
- data/lib/spree/testing_support.rb +0 -31
- data/lib/tasks/upgrade.rake +0 -15
@@ -13,6 +13,7 @@ module Spree
|
|
13
13
|
#
|
14
14
|
class PaymentMethod < Spree::Base
|
15
15
|
include Spree::Preferences::Persistable
|
16
|
+
class UnsupportedPaymentMethod < StandardError; end
|
16
17
|
|
17
18
|
preference :server, :string, default: 'test'
|
18
19
|
preference :test_mode, :boolean, default: true
|
@@ -41,6 +42,8 @@ module Spree
|
|
41
42
|
|
42
43
|
include Spree::Preferences::StaticallyConfigurable
|
43
44
|
|
45
|
+
self.allowed_ransackable_attributes = %w[name description]
|
46
|
+
|
44
47
|
# Custom ModelName#human implementation to ensure we don't refer to
|
45
48
|
# subclasses as just "PaymentMethod"
|
46
49
|
class ModelName < ActiveModel::Name
|
@@ -60,6 +63,16 @@ module Spree
|
|
60
63
|
def model_name
|
61
64
|
ModelName.new(self, Spree)
|
62
65
|
end
|
66
|
+
|
67
|
+
def find_sti_class(type_name)
|
68
|
+
super(type_name)
|
69
|
+
rescue ActiveRecord::SubclassNotFound
|
70
|
+
raise UnsupportedPaymentMethod, "Found invalid payment type '#{type_name}'.\n"\
|
71
|
+
"This may happen after switching payment service provider, when payment methods "\
|
72
|
+
"reference old types that are not supported any more.\n"\
|
73
|
+
"If that is the case, consider running 'rake payment_method:deactivate_unsupported_payment_methods' "\
|
74
|
+
"to fix the issue."
|
75
|
+
end
|
63
76
|
end
|
64
77
|
|
65
78
|
# Represents the gateway of this payment method
|
@@ -162,16 +175,22 @@ module Spree
|
|
162
175
|
# Return +false+ or +nil+ if the void is not possible anymore - because it was already processed by the bank.
|
163
176
|
# Solidus will refund the amount of the payment in this case.
|
164
177
|
#
|
165
|
-
#
|
166
|
-
#
|
167
|
-
#
|
168
|
-
#
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
178
|
+
# This default implementation will void the payment if void succeeds,
|
179
|
+
# otherwise it returns false.
|
180
|
+
#
|
181
|
+
# @api public
|
182
|
+
# @param payment [Spree::Payment] the payment to void
|
183
|
+
# @return [ActiveMerchant::Billing::Response|FalseClass]
|
184
|
+
def try_void(payment)
|
185
|
+
void_attempt = if payment.payment_method.payment_profiles_supported?
|
186
|
+
void(payment.transaction_id, payment.source, { originator: payment })
|
187
|
+
else
|
188
|
+
void(payment.transaction_id, { originator: payment })
|
189
|
+
end
|
190
|
+
|
191
|
+
return void_attempt if void_attempt.success?
|
192
|
+
|
193
|
+
false
|
175
194
|
end
|
176
195
|
|
177
196
|
def store_credit?
|
@@ -7,7 +7,11 @@ module Spree
|
|
7
7
|
belongs_to :payment_method, optional: true
|
8
8
|
|
9
9
|
has_many :payments, as: :source
|
10
|
-
has_many :wallet_payment_sources,
|
10
|
+
has_many :wallet_payment_sources,
|
11
|
+
class_name: 'Spree::WalletPaymentSource',
|
12
|
+
as: :payment_source,
|
13
|
+
inverse_of: :payment_source,
|
14
|
+
dependent: :destroy
|
11
15
|
|
12
16
|
attr_accessor :imported
|
13
17
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
class PermissionSet < Spree::Base
|
5
|
+
has_many :role_permissions
|
6
|
+
has_many :roles, through: :role_permissions
|
7
|
+
validates :name, :set, :privilege, :category, presence: true
|
8
|
+
scope :display_permissions, -> { where(privilege: "display") }
|
9
|
+
scope :management_permissions, -> { where(privilege: "management") }
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module PermissionSets
|
5
|
+
# This is the base class used for crafting permission sets.
|
6
|
+
#
|
7
|
+
# This is used by {Spree::RoleConfiguration} when adding custom behavior to {Spree::Ability}.
|
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 overridden by subclasses
|
22
|
+
def activate!
|
23
|
+
raise NotImplementedError.new
|
24
|
+
end
|
25
|
+
|
26
|
+
# Provide the permission set privilege in the form of a :symbol.
|
27
|
+
# Must be overridden by subclasses.
|
28
|
+
def self.privilege
|
29
|
+
raise NotImplementedError, "Subclass #{name} must define a privilege using `self.privilege :symbol`"
|
30
|
+
end
|
31
|
+
|
32
|
+
# Provide the permission set category in the form of a :symbol.
|
33
|
+
# Must be overridden by subclasses.
|
34
|
+
def self.category
|
35
|
+
raise NotImplementedError, "Subclass #{name} must define a category using `self.category :symbol`"
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
attr_reader :ability
|
41
|
+
|
42
|
+
delegate :can, :cannot, :user, to: :ability
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module PermissionSets
|
5
|
+
# Read-only permissions for e-commerce settings.
|
6
|
+
#
|
7
|
+
# Roles with this permission will be able to view information, also from the admin
|
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
|
+
class << self
|
26
|
+
def privilege
|
27
|
+
:display
|
28
|
+
end
|
29
|
+
|
30
|
+
def category
|
31
|
+
:configuration
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def activate!
|
36
|
+
can [:read, :admin], Spree::TaxCategory
|
37
|
+
can [:read, :admin], Spree::TaxRate
|
38
|
+
can [:read, :admin], Spree::Zone
|
39
|
+
can [:read, :admin], Spree::Country
|
40
|
+
can [:read, :admin], Spree::State
|
41
|
+
can [:read, :admin], Spree::PaymentMethod
|
42
|
+
can [:read, :admin], Spree::Taxonomy
|
43
|
+
can [:read, :admin], Spree::ShippingMethod
|
44
|
+
can [:read, :admin], Spree::ShippingCategory
|
45
|
+
can [:read, :admin], Spree::StockLocation
|
46
|
+
can [:read, :admin], Spree::StockMovement
|
47
|
+
can [:read, :admin], Spree::RefundReason
|
48
|
+
can [:read, :admin], Spree::ReimbursementType
|
49
|
+
can [:read, :admin], Spree::ReturnReason
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module PermissionSets
|
5
|
+
# Read and write permissions for e-commerce settings.
|
6
|
+
#
|
7
|
+
# Roles with this permission set will have full control over:
|
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
|
+
class << self
|
25
|
+
def privilege
|
26
|
+
:management
|
27
|
+
end
|
28
|
+
|
29
|
+
def category
|
30
|
+
:configuration
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def activate!
|
35
|
+
can :manage, Spree::TaxCategory
|
36
|
+
can :manage, Spree::TaxRate
|
37
|
+
can :manage, Spree::Zone
|
38
|
+
can :manage, Spree::Country
|
39
|
+
can :manage, Spree::State
|
40
|
+
can :manage, Spree::PaymentMethod
|
41
|
+
can :manage, Spree::Taxonomy
|
42
|
+
can :manage, Spree::ShippingMethod
|
43
|
+
can :manage, Spree::ShippingCategory
|
44
|
+
can :manage, Spree::StockLocation
|
45
|
+
can :manage, Spree::StockMovement
|
46
|
+
can :manage, Spree::RefundReason
|
47
|
+
can :manage, Spree::ReimbursementType
|
48
|
+
can :manage, Spree::ReturnReason
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module PermissionSets
|
5
|
+
# Permissions for viewing the admin dashboard.
|
6
|
+
#
|
7
|
+
# Roles with this permission set will be able to view the admin dashboard,
|
8
|
+
# which may or not contain sensitive information depending on
|
9
|
+
# customizations.
|
10
|
+
class DashboardDisplay < PermissionSets::Base
|
11
|
+
class << self
|
12
|
+
def privilege
|
13
|
+
:other
|
14
|
+
end
|
15
|
+
|
16
|
+
def category
|
17
|
+
:dashboard_display
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def activate!
|
22
|
+
Spree.deprecator.warn "The #{self.class.name} module is deprecated. " \
|
23
|
+
"If you still use dashboards, please copy all controllers and views from #{self.class.name} to your application."
|
24
|
+
can [:admin, :home], :dashboards
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module PermissionSets
|
5
|
+
# Permissions for e-commerce customers.
|
6
|
+
#
|
7
|
+
# This permission set is always added to the `:default` role, which in turn
|
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
|
+
class << self
|
36
|
+
def privilege
|
37
|
+
:other
|
38
|
+
end
|
39
|
+
|
40
|
+
def category
|
41
|
+
:default_customer
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def activate!
|
46
|
+
can :read, Country
|
47
|
+
can :read, OptionType
|
48
|
+
can :read, OptionValue
|
49
|
+
can :create, Order do |order, token|
|
50
|
+
# same user, or both nil
|
51
|
+
order.user == user ||
|
52
|
+
# guest checkout order
|
53
|
+
order.email.present? ||
|
54
|
+
# via API, just like with show and update
|
55
|
+
(order.guest_token.present? && token == order.guest_token)
|
56
|
+
end
|
57
|
+
can [:show, :update], Order, Order.where(user:) do |order, token|
|
58
|
+
order.user == user || (order.guest_token.present? && token == order.guest_token)
|
59
|
+
end
|
60
|
+
cannot :update, Order do |order|
|
61
|
+
order.completed?
|
62
|
+
end
|
63
|
+
can :create, ReturnAuthorization do |return_authorization|
|
64
|
+
return_authorization.order.user == user
|
65
|
+
end
|
66
|
+
can [:read, :update], CreditCard, user_id: user.id
|
67
|
+
can :read, Product
|
68
|
+
can :read, ProductProperty
|
69
|
+
can :read, Property
|
70
|
+
can :create, Spree.user_class
|
71
|
+
can [:show, :update, :update_email], Spree.user_class, id: user.id
|
72
|
+
can :read, State
|
73
|
+
can :read, StockItem, stock_location: { active: true }
|
74
|
+
can :read, StockLocation, active: true
|
75
|
+
can :read, Taxon
|
76
|
+
can :read, Taxonomy
|
77
|
+
can [:save_in_address_book, :remove_from_address_book], Spree.user_class, id: user.id
|
78
|
+
can [:read, :view_out_of_stock], Variant
|
79
|
+
can :read, Zone
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module PermissionSets
|
5
|
+
# Read permissions for orders.
|
6
|
+
#
|
7
|
+
# This permission set allows users to view all related information about
|
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
|
+
class << self
|
26
|
+
def privilege
|
27
|
+
:display
|
28
|
+
end
|
29
|
+
|
30
|
+
def category
|
31
|
+
:order
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def activate!
|
36
|
+
can [:read, :admin, :edit, :cart], Spree::Order
|
37
|
+
can [:read, :admin], Spree::Payment
|
38
|
+
can [:read, :admin], Spree::Shipment
|
39
|
+
can [:read, :admin], Spree::Adjustment
|
40
|
+
can [:read, :admin], Spree::LineItem
|
41
|
+
can [:read, :admin], Spree::ReturnAuthorization
|
42
|
+
can [:read, :admin], Spree::CustomerReturn
|
43
|
+
can [:read, :admin], Spree::OrderCancellations
|
44
|
+
can [:read, :admin], Spree::Reimbursement
|
45
|
+
can [:read, :admin], Spree::ReturnItem
|
46
|
+
can [:read, :admin], Spree::Refund
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module PermissionSets
|
5
|
+
# Full permissions for order management.
|
6
|
+
#
|
7
|
+
# This permission set grants full control over all order and related resources,
|
8
|
+
# 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
|
+
# It also allows reading reimbursement types, but not modifying them.
|
23
|
+
class OrderManagement < PermissionSets::Base
|
24
|
+
class << self
|
25
|
+
def privilege
|
26
|
+
:management
|
27
|
+
end
|
28
|
+
|
29
|
+
def category
|
30
|
+
:order
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def activate!
|
35
|
+
can :read, Spree::ReimbursementType
|
36
|
+
can :manage, Spree::Order
|
37
|
+
can :manage, Spree::Payment
|
38
|
+
can :manage, Spree::Shipment
|
39
|
+
can :manage, Spree::Adjustment
|
40
|
+
can :manage, Spree::LineItem
|
41
|
+
can :manage, Spree::ReturnAuthorization
|
42
|
+
can :manage, Spree::CustomerReturn
|
43
|
+
can :manage, Spree::OrderCancellations
|
44
|
+
can :manage, Spree::Reimbursement
|
45
|
+
can :manage, Spree::ReturnItem
|
46
|
+
can :manage, Spree::Refund
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module PermissionSets
|
5
|
+
# Read-only permissions for products.
|
6
|
+
#
|
7
|
+
# This permission set allows users to view all related information about
|
8
|
+
# products, also from the admin panel, including:
|
9
|
+
#
|
10
|
+
# - Products
|
11
|
+
# - Images
|
12
|
+
# - Variants
|
13
|
+
# - Option values
|
14
|
+
# - Product properties
|
15
|
+
# - Option types
|
16
|
+
# - Properties
|
17
|
+
# - Taxonomies
|
18
|
+
# - Taxons
|
19
|
+
class ProductDisplay < PermissionSets::Base
|
20
|
+
class << self
|
21
|
+
def privilege
|
22
|
+
:display
|
23
|
+
end
|
24
|
+
|
25
|
+
def category
|
26
|
+
:product
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def activate!
|
31
|
+
can [:read, :admin, :edit], Spree::Product
|
32
|
+
can [:read, :admin], Spree::Image
|
33
|
+
can [:read, :admin], Spree::Variant
|
34
|
+
can [:read, :admin], Spree::OptionValue
|
35
|
+
can [:read, :admin], Spree::ProductProperty
|
36
|
+
can [:read, :admin], Spree::OptionType
|
37
|
+
can [:read, :admin], Spree::Property
|
38
|
+
can [:read, :admin], Spree::Taxonomy
|
39
|
+
can [:read, :admin], Spree::Taxon
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module PermissionSets
|
5
|
+
# Full permissions for product management.
|
6
|
+
#
|
7
|
+
# This permission set grants full control over all product and related resources,
|
8
|
+
# including:
|
9
|
+
#
|
10
|
+
# - Products
|
11
|
+
# - Images
|
12
|
+
# - Variants
|
13
|
+
# - Option values
|
14
|
+
# - Product properties
|
15
|
+
# - Option types
|
16
|
+
# - Properties
|
17
|
+
# - Taxonomies
|
18
|
+
# - Taxons
|
19
|
+
# - Classifications
|
20
|
+
# - Prices
|
21
|
+
class ProductManagement < PermissionSets::Base
|
22
|
+
class << self
|
23
|
+
def privilege
|
24
|
+
:management
|
25
|
+
end
|
26
|
+
|
27
|
+
def category
|
28
|
+
:product
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def activate!
|
33
|
+
can :manage, Spree::Classification
|
34
|
+
can :manage, Spree::Image
|
35
|
+
can :manage, Spree::OptionType
|
36
|
+
can :manage, Spree::OptionValue
|
37
|
+
can :manage, Spree::Price
|
38
|
+
can :manage, Spree::Product
|
39
|
+
can :manage, Spree::ProductProperty
|
40
|
+
can :manage, Spree::Property
|
41
|
+
can :manage, Spree::Taxon
|
42
|
+
can :manage, Spree::Taxonomy
|
43
|
+
can :manage, Spree::Variant
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module PermissionSets
|
5
|
+
# Read permissions for stock limited to allowed locations.
|
6
|
+
#
|
7
|
+
# This permission set allows users to view information about stock items and
|
8
|
+
# locations, both of them limited to locations they have access to.
|
9
|
+
# Permissions are also granted for the admin panel for items.
|
10
|
+
class RestrictedStockDisplay < PermissionSets::Base
|
11
|
+
class << self
|
12
|
+
def privilege
|
13
|
+
:display
|
14
|
+
end
|
15
|
+
|
16
|
+
def category
|
17
|
+
:restricted_stock
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def activate!
|
22
|
+
can [:read, :admin], Spree::StockItem, stock_location_id: location_ids
|
23
|
+
can :read, Spree::StockLocation, id: location_ids
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def location_ids
|
29
|
+
@ids ||= user.stock_locations.pluck(:id)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module PermissionSets
|
5
|
+
# Full permissions for stock management limited to allowed locations.
|
6
|
+
#
|
7
|
+
# This permission set grants full control over all stock items a user has
|
8
|
+
# access to their locations. Those locations are also readable by the
|
9
|
+
# corresponding ability.
|
10
|
+
class RestrictedStockManagement < PermissionSets::Base
|
11
|
+
class << self
|
12
|
+
def privilege
|
13
|
+
:management
|
14
|
+
end
|
15
|
+
|
16
|
+
def category
|
17
|
+
:restricted_stock
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def activate!
|
22
|
+
can :manage, Spree::StockItem, stock_location_id: location_ids
|
23
|
+
can :read, Spree::StockLocation, id: location_ids
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def location_ids
|
29
|
+
@ids ||= user.stock_locations.pluck(:id)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module PermissionSets
|
5
|
+
# Read-only permissions for stock.
|
6
|
+
#
|
7
|
+
# This permission set allows users to view information about stock items
|
8
|
+
# (also from the admin panel) and stock locations.
|
9
|
+
class StockDisplay < PermissionSets::Base
|
10
|
+
class << self
|
11
|
+
def privilege
|
12
|
+
:display
|
13
|
+
end
|
14
|
+
|
15
|
+
def category
|
16
|
+
:stock
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def activate!
|
21
|
+
can [:read, :admin], Spree::StockItem
|
22
|
+
can :read, Spree::StockLocation
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module PermissionSets
|
5
|
+
# Full permissions for stock management.
|
6
|
+
#
|
7
|
+
# This permission set grants full control over all stock items and read
|
8
|
+
# access to locations.
|
9
|
+
class StockManagement < PermissionSets::Base
|
10
|
+
class << self
|
11
|
+
def privilege
|
12
|
+
:management
|
13
|
+
end
|
14
|
+
|
15
|
+
def category
|
16
|
+
:stock
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def activate!
|
21
|
+
can :manage, Spree::StockItem
|
22
|
+
can :read, Spree::StockLocation
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|