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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 995355f29d96abe41d7beb6b28cbe8bd8198d8c4ebee544dedc223f15b856548
|
4
|
+
data.tar.gz: 07b683686244717fc86fe1a83777e29845365dbed70c2117d1aacddf8c729717
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0963f51448492bca5190edb6641ea96206670f8ce17bea75e67c429838b5b98c041a936d64f57b994ca731df036995ef402eb24e723840a3b00efb109bf4e5c0'
|
7
|
+
data.tar.gz: 0fc6248571ff6027d618e4840d9c154bba8674fdbfd96805a58fbbc051b7c36d9c31d6e1d20b042bce38b8c5fc2b48d8b3201acb2ec264be2466c29704612c02
|
@@ -1 +1,18 @@
|
|
1
|
-
<svg width="
|
1
|
+
<svg width="800" height="154" viewBox="0 0 800 154" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<g clip-path="url(#clip0_1325_2710)">
|
3
|
+
<path d="M47.8141 51.0973V102.195L0 54.3805C9.53862 22.9134 38.7766 0 73.3714 0C107.966 0 135.13 21.3237 145.654 51.0973H47.8141Z" fill="#EF3023"/>
|
4
|
+
<path d="M146.725 98.9286C137.187 130.413 107.949 153.309 73.3541 153.309C38.7593 153.309 11.595 131.968 1.07137 102.212H98.9114V51.0973L146.725 98.9114V98.9286Z" fill="#EF3023"/>
|
5
|
+
<path d="M282.53 99.9481C282.53 79.765 265.734 73.9934 251.028 69.9499C236.478 65.9063 225.972 64.3165 225.972 53.6547C225.972 45.8614 233.109 40.0898 243.615 40.0898C254.121 40.0898 261.811 46.4316 263.072 56.0912H281.13C278.469 36.0463 263.919 23.6392 243.615 23.6392C223.311 23.6392 207.776 36.772 207.776 53.9312C207.776 74.4081 224.434 80.1797 239.278 84.2232C253.828 88.1113 264.61 89.8565 264.61 100.518C264.61 108.156 256.627 113.928 245.568 113.928C232.556 113.928 224.849 107.724 223.173 96.4748H204.7C206.515 117.246 222.62 130.361 245.568 130.361C267.271 130.361 282.513 118.11 282.513 99.9309L282.53 99.9481Z" fill="#222222"/>
|
6
|
+
<path d="M345.637 130.378C375.739 130.378 396.44 106.878 396.44 77.0175C396.44 47.1574 375.721 23.6565 345.637 23.6565C315.552 23.6565 294.833 47.1574 294.833 77.0175C294.833 106.878 315.552 130.378 345.637 130.378ZM345.637 112.787C326.888 112.787 313.029 97.3562 313.029 77.0175C313.029 56.6788 326.888 41.2477 345.637 41.2477C364.385 41.2477 378.244 56.9725 378.244 77.0175C378.244 97.0624 362.848 112.787 345.637 112.787Z" fill="#222222"/>
|
7
|
+
<path d="M474.961 111.629H428.063V25.0906H410.42V128.927H474.944V111.612L474.961 111.629Z" fill="#222222"/>
|
8
|
+
<path d="M493.399 25.0906V128.927H511.042V25.0906H493.399Z" fill="#222222"/>
|
9
|
+
<path d="M566.753 25.0908H531.208V128.927H566.753C594.609 128.927 615.189 108.156 615.189 77.0002C615.189 45.8442 594.609 25.0735 566.753 25.0735V25.0908ZM566.338 111.63H548.834V42.4054H566.338C584.811 42.4054 596.993 56.2468 596.993 77.0175C596.993 97.7882 584.811 111.63 566.338 111.63Z" fill="#222222"/>
|
10
|
+
<path d="M708.156 25.0906H690.513V89.7009C690.513 103.11 683.238 112.77 668.671 112.77C655.797 112.77 646.829 104.977 646.829 89.7009V25.0906H629.186V90.1329C629.186 114.221 645.274 130.378 668.654 130.378C692.034 130.378 708.122 114.221 708.122 90.1329V25.0906H708.156Z" fill="#222222"/>
|
11
|
+
<path d="M800 99.9481C800 79.765 783.204 73.9934 768.498 69.9499C753.949 65.9063 743.442 64.3165 743.442 53.6547C743.442 45.8614 750.579 40.0898 761.085 40.0898C771.592 40.0898 779.281 46.4316 780.543 56.0912H798.6C795.939 36.0463 781.389 23.6392 761.085 23.6392C740.781 23.6392 725.246 36.772 725.246 53.9312C725.246 74.4081 741.904 80.1797 756.748 84.2232C771.298 88.1113 782.081 89.8565 782.081 100.518C782.081 108.156 774.097 113.928 763.038 113.928C750.026 113.928 742.319 107.724 740.643 96.4748H722.17C723.985 117.246 740.09 130.361 763.038 130.361C784.724 130.361 799.983 118.11 799.983 99.9309L800 99.9481Z" fill="#222222"/>
|
12
|
+
</g>
|
13
|
+
<defs>
|
14
|
+
<clipPath id="clip0_1325_2710">
|
15
|
+
<rect width="800" height="153.309" fill="white"/>
|
16
|
+
</clipPath>
|
17
|
+
</defs>
|
18
|
+
</svg>
|
Binary file
|
@@ -48,7 +48,7 @@ module Spree
|
|
48
48
|
|
49
49
|
def meta_data_tags
|
50
50
|
meta_data.map do |name, content|
|
51
|
-
tag('meta', name
|
51
|
+
tag('meta', name:, content:)
|
52
52
|
end.join("\n")
|
53
53
|
end
|
54
54
|
|
@@ -111,7 +111,7 @@ module Spree
|
|
111
111
|
end
|
112
112
|
|
113
113
|
def available_countries(restrict_to_zone: Spree::Config[:checkout_zone])
|
114
|
-
countries = Spree::Country.available(restrict_to_zone:
|
114
|
+
countries = Spree::Country.available(restrict_to_zone:)
|
115
115
|
|
116
116
|
country_names = Carmen::Country.all.map do |country|
|
117
117
|
[country.code, country.name]
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cancan'
|
4
|
+
|
5
|
+
module Spree
|
6
|
+
module Core
|
7
|
+
module ControllerHelpers
|
8
|
+
module Auth
|
9
|
+
extend ActiveSupport::Concern
|
10
|
+
|
11
|
+
# @!attribute [rw] unauthorized_redirect
|
12
|
+
# @!scope class
|
13
|
+
# Extension point for overriding behaviour of access denied errors.
|
14
|
+
# Default behaviour is to redirect back or to "/unauthorized" with a flash
|
15
|
+
# message.
|
16
|
+
# @return [Proc] action to take when access denied error is raised.
|
17
|
+
|
18
|
+
included do
|
19
|
+
before_action :set_guest_token
|
20
|
+
helper_method :spree_current_user
|
21
|
+
|
22
|
+
class_attribute :unauthorized_redirect
|
23
|
+
deprecate :unauthorized_redirect= => "Use a custom Spree::Config.unauthorized_redirect_handler_class instead", :deprecator => Spree.deprecator
|
24
|
+
|
25
|
+
rescue_from CanCan::AccessDenied, with: :handle_unauthorized_access
|
26
|
+
end
|
27
|
+
|
28
|
+
# Needs to be overriden so that we use Spree's Ability rather than anyone else's.
|
29
|
+
def current_ability
|
30
|
+
@current_ability ||= Spree::Ability.new(spree_current_user)
|
31
|
+
end
|
32
|
+
|
33
|
+
def redirect_back_or_default(default)
|
34
|
+
redirect_to(session["spree_user_return_to"] || default)
|
35
|
+
session["spree_user_return_to"] = nil
|
36
|
+
end
|
37
|
+
|
38
|
+
def set_guest_token
|
39
|
+
if cookies.signed[:guest_token].blank?
|
40
|
+
cookies.permanent.signed[:guest_token] = Spree::Config[:guest_token_cookie_options].merge(
|
41
|
+
value: SecureRandom.urlsafe_base64(nil, false),
|
42
|
+
httponly: true
|
43
|
+
)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def store_location
|
48
|
+
Spree::UserLastUrlStorer.new(self).store_location
|
49
|
+
end
|
50
|
+
|
51
|
+
# Auth extensions are expected to define it, otherwise it's a no-op
|
52
|
+
def spree_current_user
|
53
|
+
defined?(super) ? super : nil
|
54
|
+
end
|
55
|
+
|
56
|
+
def handle_unauthorized_access
|
57
|
+
if unauthorized_redirect
|
58
|
+
instance_exec(&unauthorized_redirect)
|
59
|
+
else
|
60
|
+
Spree::Config.unauthorized_redirect_handler_class.new(self).call
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'carmen'
|
4
|
+
|
5
|
+
module Spree
|
6
|
+
module Core
|
7
|
+
module ControllerHelpers
|
8
|
+
module Common
|
9
|
+
extend ActiveSupport::Concern
|
10
|
+
included do
|
11
|
+
helper_method :title
|
12
|
+
helper_method :title=
|
13
|
+
helper_method :accurate_title
|
14
|
+
|
15
|
+
layout :get_layout
|
16
|
+
|
17
|
+
before_action :set_user_language
|
18
|
+
end
|
19
|
+
|
20
|
+
protected
|
21
|
+
|
22
|
+
# can be used in views as well as controllers.
|
23
|
+
# e.g. <% self.title = 'This is a custom title for this view' %>
|
24
|
+
attr_writer :title
|
25
|
+
|
26
|
+
def title
|
27
|
+
title_string = @title.presence || accurate_title
|
28
|
+
if title_string.present?
|
29
|
+
if Spree::Config[:always_put_site_name_in_title]
|
30
|
+
[title_string, default_title].join(' - ')
|
31
|
+
else
|
32
|
+
title_string
|
33
|
+
end
|
34
|
+
else
|
35
|
+
default_title
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def default_title
|
40
|
+
current_store.name
|
41
|
+
end
|
42
|
+
|
43
|
+
# this is a hook for subclasses to provide title
|
44
|
+
def accurate_title
|
45
|
+
current_store.seo_title
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def set_user_language_locale_key
|
51
|
+
:locale
|
52
|
+
end
|
53
|
+
|
54
|
+
def set_user_language
|
55
|
+
available_locales = Spree.i18n_available_locales
|
56
|
+
locale = [
|
57
|
+
params[:locale],
|
58
|
+
session[set_user_language_locale_key],
|
59
|
+
(config_locale if respond_to?(:config_locale, true)),
|
60
|
+
I18n.default_locale
|
61
|
+
].detect do |candidate|
|
62
|
+
candidate &&
|
63
|
+
available_locales.include?(candidate.to_sym)
|
64
|
+
end
|
65
|
+
session[set_user_language_locale_key] = locale
|
66
|
+
I18n.locale = locale
|
67
|
+
Carmen.i18n_backend.locale = locale
|
68
|
+
end
|
69
|
+
|
70
|
+
# Returns which layout to render.
|
71
|
+
#
|
72
|
+
# You can set the layout you want to render inside your Spree configuration with the +:layout+ option.
|
73
|
+
#
|
74
|
+
# Default layout is: +app/views/spree/layouts/spree_application+
|
75
|
+
#
|
76
|
+
def get_layout
|
77
|
+
Spree::Config[:layout]
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module Core
|
5
|
+
module ControllerHelpers
|
6
|
+
module Order
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
include ControllerHelpers::Pricing
|
9
|
+
|
10
|
+
included do
|
11
|
+
helper_method :current_order
|
12
|
+
end
|
13
|
+
|
14
|
+
# The current incomplete order from the guest_token for use in cart and during checkout
|
15
|
+
def current_order(options = {})
|
16
|
+
should_create = options[:create_order_if_necessary] || false
|
17
|
+
should_build = options[:build_order_if_necessary] || should_create
|
18
|
+
|
19
|
+
return @current_order if @current_order
|
20
|
+
|
21
|
+
@current_order = find_order_by_token_or_user(lock: options[:lock])
|
22
|
+
|
23
|
+
if should_build && (@current_order.nil? || @current_order.completed?)
|
24
|
+
@current_order = Spree::Order.new(new_order_params)
|
25
|
+
@current_order.user ||= spree_current_user
|
26
|
+
# See issue https://github.com/spree/spree/issues/3346 for reasons why this line is here
|
27
|
+
@current_order.created_by ||= spree_current_user
|
28
|
+
@current_order.save! if should_create
|
29
|
+
end
|
30
|
+
|
31
|
+
if @current_order
|
32
|
+
@current_order.record_ip_address(ip_address)
|
33
|
+
@current_order
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def associate_user
|
38
|
+
@order ||= current_order
|
39
|
+
if spree_current_user && @order && (@order.user.blank? || @order.email.blank?)
|
40
|
+
@order.associate_user!(spree_current_user)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def set_current_order
|
45
|
+
if spree_current_user && current_order
|
46
|
+
spree_current_user.orders.by_store(current_store).incomplete.where('id != ?', current_order.id).find_each do |order|
|
47
|
+
current_order.merge!(order, spree_current_user)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def ip_address
|
53
|
+
request.remote_ip
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def last_incomplete_order
|
59
|
+
@last_incomplete_order ||= spree_current_user.last_incomplete_spree_order(store: current_store)
|
60
|
+
end
|
61
|
+
|
62
|
+
def current_order_params
|
63
|
+
{ currency: current_pricing_options.currency, guest_token: cookies.signed[:guest_token], store_id: current_store.id, user_id: spree_current_user.try(:id) }
|
64
|
+
end
|
65
|
+
|
66
|
+
def new_order_params
|
67
|
+
current_order_params.merge(last_ip_address: ip_address)
|
68
|
+
end
|
69
|
+
|
70
|
+
def find_order_by_token_or_user(options = {})
|
71
|
+
should_lock = options[:lock] || false
|
72
|
+
|
73
|
+
# Find any incomplete orders for the guest_token
|
74
|
+
order = Spree::Order.incomplete.lock(should_lock).find_by(current_order_params)
|
75
|
+
|
76
|
+
# Find any incomplete orders for the current user
|
77
|
+
if order.nil? && spree_current_user
|
78
|
+
order = last_incomplete_order
|
79
|
+
end
|
80
|
+
|
81
|
+
order
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,165 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module Core::ControllerHelpers::PaymentParameters
|
5
|
+
# This method handles the awkwardness of how the html forms are currently
|
6
|
+
# set up for frontend.
|
7
|
+
#
|
8
|
+
# This method expects a params hash in the format of:
|
9
|
+
#
|
10
|
+
# {
|
11
|
+
# payment_source: {
|
12
|
+
# # The keys here are spree_payment_method.id's
|
13
|
+
# '1' => {...source attributes for payment method 1...},
|
14
|
+
# '2' => {...source attributes for payment method 2...},
|
15
|
+
# },
|
16
|
+
# order: {
|
17
|
+
# # Note that only a single entry is expected/handled in this array
|
18
|
+
# payments_attributes: [
|
19
|
+
# {
|
20
|
+
# payment_method_id: '1',
|
21
|
+
# },
|
22
|
+
# ],
|
23
|
+
# ...other params...
|
24
|
+
# },
|
25
|
+
# ...other params...
|
26
|
+
# }
|
27
|
+
#
|
28
|
+
# And this method modifies the params into the format of:
|
29
|
+
#
|
30
|
+
# {
|
31
|
+
# order: {
|
32
|
+
# payments_attributes: [
|
33
|
+
# {
|
34
|
+
# payment_method_id: '1',
|
35
|
+
# source_attributes: {...source attributes for payment method 1...}
|
36
|
+
# },
|
37
|
+
# ],
|
38
|
+
# ...other params...
|
39
|
+
# },
|
40
|
+
# ...other params...
|
41
|
+
# }
|
42
|
+
#
|
43
|
+
def move_payment_source_into_payments_attributes(params)
|
44
|
+
# Step 1: Gather all the information and ensure all the pieces are there.
|
45
|
+
|
46
|
+
return params if params[:payment_source].blank?
|
47
|
+
|
48
|
+
payment_params = params[:order] &&
|
49
|
+
params[:order][:payments_attributes] &&
|
50
|
+
params[:order][:payments_attributes].first
|
51
|
+
return params if payment_params.blank?
|
52
|
+
|
53
|
+
payment_method_id = payment_params[:payment_method_id]
|
54
|
+
return params if payment_method_id.blank?
|
55
|
+
|
56
|
+
source_params = params[:payment_source][payment_method_id]
|
57
|
+
return params if source_params.blank?
|
58
|
+
|
59
|
+
# Step 2: Perform the modifications.
|
60
|
+
|
61
|
+
payment_params[:source_attributes] = source_params
|
62
|
+
params.delete(:payment_source)
|
63
|
+
|
64
|
+
params
|
65
|
+
end
|
66
|
+
|
67
|
+
# This method handles the awkwardness of how the html forms are currently
|
68
|
+
# set up for frontend.
|
69
|
+
#
|
70
|
+
# This method expects a params hash in the format of:
|
71
|
+
#
|
72
|
+
# {
|
73
|
+
# order: {
|
74
|
+
# wallet_payment_source_id: '123',
|
75
|
+
# ...other params...
|
76
|
+
# },
|
77
|
+
# cvc_confirm: '456', # optional
|
78
|
+
# ...other params...
|
79
|
+
# }
|
80
|
+
#
|
81
|
+
# And this method modifies the params into the format of:
|
82
|
+
#
|
83
|
+
# {
|
84
|
+
# order: {
|
85
|
+
# payments_attributes: [
|
86
|
+
# {
|
87
|
+
# source_attributes: {
|
88
|
+
# wallet_payment_source_id: '123',
|
89
|
+
# verification_value: '456',
|
90
|
+
# },
|
91
|
+
# },
|
92
|
+
# ]
|
93
|
+
# ...other params...
|
94
|
+
# },
|
95
|
+
# ...other params...
|
96
|
+
# }
|
97
|
+
#
|
98
|
+
def move_wallet_payment_source_id_into_payments_attributes(params)
|
99
|
+
return params if params[:order].blank?
|
100
|
+
|
101
|
+
wallet_payment_source_id = params[:order][:wallet_payment_source_id].presence
|
102
|
+
cvc_confirm = params[:cvc_confirm].presence
|
103
|
+
|
104
|
+
return params if wallet_payment_source_id.nil?
|
105
|
+
|
106
|
+
params[:order][:payments_attributes] = [
|
107
|
+
{
|
108
|
+
source_attributes: {
|
109
|
+
wallet_payment_source_id:,
|
110
|
+
verification_value: cvc_confirm
|
111
|
+
}
|
112
|
+
}
|
113
|
+
]
|
114
|
+
|
115
|
+
params[:order].delete(:wallet_payment_source_id)
|
116
|
+
params.delete(:cvc_confirm)
|
117
|
+
|
118
|
+
params
|
119
|
+
end
|
120
|
+
|
121
|
+
# This is a strange thing to do since an order can have multiple payments
|
122
|
+
# but we always assume that it only has a single payment and that its
|
123
|
+
# amount should be the current order total after store credit is applied.
|
124
|
+
# We should reconsider this method and its usage at some point.
|
125
|
+
#
|
126
|
+
# This method expects a params hash in the format of:
|
127
|
+
#
|
128
|
+
# {
|
129
|
+
# order: {
|
130
|
+
# # Note that only a single entry is expected/handled in this array
|
131
|
+
# payments_attributes: [
|
132
|
+
# {
|
133
|
+
# ...params...
|
134
|
+
# },
|
135
|
+
# ],
|
136
|
+
# ...other params...
|
137
|
+
# },
|
138
|
+
# ...other params...
|
139
|
+
# }
|
140
|
+
#
|
141
|
+
# And this method modifies the params into the format of:
|
142
|
+
#
|
143
|
+
# {
|
144
|
+
# order: {
|
145
|
+
# payments_attributes: [
|
146
|
+
# {
|
147
|
+
# ...params...
|
148
|
+
# amount: <the order total after store credit>,
|
149
|
+
# },
|
150
|
+
# ],
|
151
|
+
# ...other params...
|
152
|
+
# },
|
153
|
+
# ...other params...
|
154
|
+
# }
|
155
|
+
#
|
156
|
+
def set_payment_parameters_amount(params, order)
|
157
|
+
return params if params[:order].blank?
|
158
|
+
return params if params[:order][:payments_attributes].blank?
|
159
|
+
|
160
|
+
params[:order][:payments_attributes].first[:amount] = order.order_total_after_store_credit
|
161
|
+
|
162
|
+
params
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module Core
|
5
|
+
module ControllerHelpers
|
6
|
+
module Pricing
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
included do
|
10
|
+
helper_method :current_pricing_options
|
11
|
+
end
|
12
|
+
|
13
|
+
def current_pricing_options
|
14
|
+
Spree::Config.pricing_options_class.from_context(self)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module Core
|
5
|
+
module ControllerHelpers
|
6
|
+
module Search
|
7
|
+
def build_searcher(params)
|
8
|
+
Spree::Config.searcher_class.new(params).tap do |searcher|
|
9
|
+
searcher.current_user = spree_current_user
|
10
|
+
searcher.pricing_options = current_pricing_options
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module Core
|
5
|
+
module ControllerHelpers
|
6
|
+
module Store
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
included do
|
10
|
+
helper_method :current_store
|
11
|
+
end
|
12
|
+
|
13
|
+
def current_store
|
14
|
+
@current_store ||= Spree::Config.current_store_selector_class.new(request).store
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Spree
|
4
|
+
module Core
|
5
|
+
module ControllerHelpers
|
6
|
+
module StrongParameters
|
7
|
+
def permitted_attributes
|
8
|
+
Spree::PermittedAttributes
|
9
|
+
end
|
10
|
+
|
11
|
+
delegate(*Spree::PermittedAttributes::ATTRIBUTES,
|
12
|
+
to: :permitted_attributes,
|
13
|
+
prefix: :permitted)
|
14
|
+
|
15
|
+
def permitted_credit_card_update_attributes
|
16
|
+
permitted_attributes.credit_card_update_attributes + [
|
17
|
+
address_attributes: permitted_address_attributes
|
18
|
+
]
|
19
|
+
end
|
20
|
+
|
21
|
+
def permitted_payment_attributes
|
22
|
+
permitted_attributes.payment_attributes + [
|
23
|
+
source_attributes: permitted_source_attributes
|
24
|
+
]
|
25
|
+
end
|
26
|
+
|
27
|
+
def permitted_source_attributes
|
28
|
+
permitted_attributes.source_attributes + [
|
29
|
+
address_attributes: permitted_address_attributes
|
30
|
+
]
|
31
|
+
end
|
32
|
+
|
33
|
+
def permitted_checkout_address_attributes
|
34
|
+
permitted_attributes.checkout_address_attributes
|
35
|
+
end
|
36
|
+
|
37
|
+
def permitted_checkout_delivery_attributes
|
38
|
+
permitted_attributes.checkout_delivery_attributes
|
39
|
+
end
|
40
|
+
|
41
|
+
def permitted_checkout_payment_attributes
|
42
|
+
permitted_attributes.checkout_payment_attributes
|
43
|
+
end
|
44
|
+
|
45
|
+
def permitted_checkout_confirm_attributes
|
46
|
+
permitted_attributes.checkout_confirm_attributes
|
47
|
+
end
|
48
|
+
|
49
|
+
def permitted_order_attributes
|
50
|
+
permitted_checkout_address_attributes +
|
51
|
+
permitted_checkout_delivery_attributes +
|
52
|
+
permitted_checkout_payment_attributes +
|
53
|
+
permitted_attributes.customer_metadata_attributes +
|
54
|
+
permitted_checkout_confirm_attributes + [
|
55
|
+
line_items_attributes: permitted_line_item_attributes
|
56
|
+
]
|
57
|
+
end
|
58
|
+
|
59
|
+
def permitted_product_attributes
|
60
|
+
permitted_attributes.product_attributes + [
|
61
|
+
product_properties_attributes: permitted_product_properties_attributes
|
62
|
+
]
|
63
|
+
end
|
64
|
+
|
65
|
+
def permitted_user_attributes
|
66
|
+
permitted_attributes.user_attributes + [
|
67
|
+
bill_address_attributes: permitted_address_attributes,
|
68
|
+
ship_address_attributes: permitted_address_attributes
|
69
|
+
]
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -19,7 +19,7 @@ module Spree
|
|
19
19
|
@store = @order.store
|
20
20
|
subject = (options[:resend] ? "[#{t('spree.resend').upcase}] " : '')
|
21
21
|
subject += "#{@store.name} #{t('spree.shipment_mailer.shipped_email.subject')} ##{@order.number}"
|
22
|
-
mail(to: @order.email, from: from_address(@store), subject:
|
22
|
+
mail(to: @order.email, from: from_address(@store), subject:)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -7,7 +7,7 @@ module Spree
|
|
7
7
|
@store = @order.store
|
8
8
|
subject = build_subject(t('.subject'), resend)
|
9
9
|
|
10
|
-
mail(to: @order.email, bcc: bcc_address(@store), from: from_address(@store), subject:
|
10
|
+
mail(to: @order.email, bcc: bcc_address(@store), from: from_address(@store), subject:)
|
11
11
|
end
|
12
12
|
|
13
13
|
def cancel_email(order, resend = false)
|
@@ -15,7 +15,7 @@ module Spree
|
|
15
15
|
@store = @order.store
|
16
16
|
subject = build_subject(t('.subject'), resend)
|
17
17
|
|
18
|
-
mail(to: @order.email, from: from_address(@store), subject:
|
18
|
+
mail(to: @order.email, from: from_address(@store), subject:)
|
19
19
|
end
|
20
20
|
|
21
21
|
def inventory_cancellation_email(order, inventory_units, resend = false)
|
@@ -23,7 +23,7 @@ module Spree
|
|
23
23
|
@store = @order.store
|
24
24
|
subject = build_subject(t('spree.order_mailer.inventory_cancellation.subject'), resend)
|
25
25
|
|
26
|
-
mail(to: @order.email, from: from_address(@store), subject:
|
26
|
+
mail(to: @order.email, from: from_address(@store), subject:)
|
27
27
|
end
|
28
28
|
|
29
29
|
private
|
@@ -7,7 +7,7 @@ module Spree
|
|
7
7
|
store = @reimbursement.order.store
|
8
8
|
subject = (resend ? "[#{t('spree.resend').upcase}] " : '')
|
9
9
|
subject += "#{store.name} #{t('.subject')} ##{@reimbursement.order.number}"
|
10
|
-
mail(to: @reimbursement.order.email, from: from_address(store), subject:
|
10
|
+
mail(to: @reimbursement.order.email, from: from_address(store), subject:)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|