solidus_friendly_promotions 1.0.0 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +4 -4
- data/CHANGELOG.md +31 -0
- data/Gemfile +2 -7
- data/MIGRATING.md +1 -1
- data/README.md +22 -16
- data/app/assets/config/solidus_friendly_promotions/manifest.js +7 -1
- data/app/controllers/solidus_friendly_promotions/admin/benefits_controller.rb +85 -0
- data/app/controllers/solidus_friendly_promotions/admin/conditions_controller.rb +69 -0
- data/app/controllers/solidus_friendly_promotions/admin/promotions_controller.rb +4 -3
- data/app/decorators/models/solidus_friendly_promotions/adjustment_decorator.rb +4 -4
- data/app/decorators/models/solidus_friendly_promotions/line_item_decorator.rb +2 -2
- data/app/decorators/models/solidus_friendly_promotions/order_decorator.rb +6 -6
- data/app/helpers/solidus_friendly_promotions/admin/benefits_helper.rb +19 -0
- data/app/helpers/solidus_friendly_promotions/admin/conditions_helper.rb +12 -0
- data/app/helpers/solidus_friendly_promotions/admin/promotions_helper.rb +15 -0
- data/app/javascript/solidus_friendly_promotions/controllers/product_option_values_controller.js +1 -1
- data/app/javascript/solidus_friendly_promotions/web_components/number_with_currency.js +35 -0
- data/app/javascript/solidus_friendly_promotions/{jquery → web_components}/option_value_picker.js +8 -0
- data/app/javascript/solidus_friendly_promotions/web_components/product_picker.js +7 -0
- data/app/javascript/solidus_friendly_promotions/web_components/select_two.js +11 -0
- data/app/javascript/solidus_friendly_promotions/web_components/taxon_picker.js +7 -0
- data/app/javascript/solidus_friendly_promotions/web_components/user_picker.js +7 -0
- data/app/javascript/solidus_friendly_promotions/web_components/variant_picker.js +7 -0
- data/app/javascript/solidus_friendly_promotions.js +7 -11
- data/app/models/concerns/solidus_friendly_promotions/{actions/order_level_action.rb → benefits/order_benefit.rb} +2 -2
- data/app/models/concerns/solidus_friendly_promotions/{rules/line_item_applicable_order_rule.rb → conditions/line_item_applicable_order_condition.rb} +2 -2
- data/app/models/concerns/solidus_friendly_promotions/{rules/line_item_level_rule.rb → conditions/line_item_level_condition.rb} +2 -2
- data/app/models/concerns/solidus_friendly_promotions/{rules/order_level_rule.rb → conditions/order_level_condition.rb} +2 -2
- data/app/models/concerns/solidus_friendly_promotions/{rules/shipment_level_rule.rb → conditions/shipment_level_condition.rb} +2 -2
- data/app/models/solidus_friendly_promotions/{promotion_action.rb → benefit.rb} +48 -10
- data/app/models/solidus_friendly_promotions/{actions → benefits}/adjust_line_item.rb +6 -2
- data/app/models/solidus_friendly_promotions/{actions → benefits}/adjust_line_item_quantity_groups.rb +3 -3
- data/app/models/solidus_friendly_promotions/{actions → benefits}/adjust_shipment.rb +6 -2
- data/app/models/solidus_friendly_promotions/{actions → benefits}/create_discounted_item.rb +6 -7
- data/app/models/solidus_friendly_promotions/calculators/distributed_amount.rb +1 -1
- data/app/models/solidus_friendly_promotions/calculators/tiered_flat_rate.rb +1 -1
- data/app/models/solidus_friendly_promotions/calculators/tiered_percent.rb +1 -1
- data/app/models/solidus_friendly_promotions/calculators/tiered_percent_on_eligible_item_quantity.rb +4 -2
- data/app/models/solidus_friendly_promotions/{promotion_rule.rb → condition.rb} +13 -7
- data/app/models/solidus_friendly_promotions/condition_product.rb +8 -0
- data/app/models/solidus_friendly_promotions/condition_store.rb +8 -0
- data/app/models/solidus_friendly_promotions/condition_taxon.rb +8 -0
- data/app/models/solidus_friendly_promotions/{promotion_rules_user.rb → condition_user.rb} +2 -2
- data/app/models/solidus_friendly_promotions/{rules → conditions}/discounted_item_total.rb +3 -3
- data/app/models/solidus_friendly_promotions/{rules → conditions}/first_order.rb +3 -3
- data/app/models/solidus_friendly_promotions/{rules → conditions}/first_repeat_purchase_since.rb +3 -3
- data/app/models/solidus_friendly_promotions/{rules → conditions}/item_total.rb +5 -5
- data/app/models/solidus_friendly_promotions/{rules → conditions}/line_item_option_value.rb +3 -3
- data/app/models/solidus_friendly_promotions/{rules → conditions}/line_item_product.rb +8 -8
- data/app/models/solidus_friendly_promotions/{rules → conditions}/line_item_taxon.rb +8 -8
- data/app/models/solidus_friendly_promotions/{rules → conditions}/minimum_quantity.rb +8 -8
- data/app/models/solidus_friendly_promotions/{rules → conditions}/nth_order.rb +5 -5
- data/app/models/solidus_friendly_promotions/{rules → conditions}/one_use_per_user.rb +3 -3
- data/app/models/solidus_friendly_promotions/{rules → conditions}/option_value.rb +3 -3
- data/app/models/solidus_friendly_promotions/{rules → conditions}/product.rb +9 -9
- data/app/models/solidus_friendly_promotions/{rules → conditions}/shipping_method.rb +3 -3
- data/app/models/solidus_friendly_promotions/{rules → conditions}/store.rb +6 -6
- data/app/models/solidus_friendly_promotions/{rules → conditions}/taxon.rb +12 -12
- data/app/models/solidus_friendly_promotions/{rules → conditions}/user.rb +7 -7
- data/app/models/solidus_friendly_promotions/{rules → conditions}/user_logged_in.rb +3 -3
- data/app/models/solidus_friendly_promotions/{rules → conditions}/user_role.rb +3 -3
- data/app/models/solidus_friendly_promotions/eligibility_result.rb +1 -1
- data/app/models/solidus_friendly_promotions/eligibility_results.rb +7 -7
- data/app/models/solidus_friendly_promotions/friendly_promotion_adjuster/discount_order.rb +28 -29
- data/app/models/solidus_friendly_promotions/friendly_promotion_adjuster/load_promotions.rb +10 -11
- data/app/models/solidus_friendly_promotions/friendly_promotion_adjuster/persist_discounted_order.rb +2 -2
- data/app/models/solidus_friendly_promotions/order_promotion.rb +1 -1
- data/app/models/solidus_friendly_promotions/permission_sets/friendly_promotion_management.rb +1 -1
- data/app/models/solidus_friendly_promotions/promotion.rb +26 -42
- data/app/models/solidus_friendly_promotions/promotion_advertiser.rb +10 -0
- data/app/models/solidus_friendly_promotions/promotion_code.rb +1 -1
- data/app/models/solidus_friendly_promotions/shipping_rate_discount.rb +1 -1
- data/app/views/solidus_friendly_promotions/admin/benefit_fields/_adjust_line_item.html.erb +6 -0
- data/app/views/solidus_friendly_promotions/admin/{promotion_actions/actions → benefit_fields}/_adjust_line_item_quantity_groups.html.erb +4 -4
- data/app/views/solidus_friendly_promotions/admin/benefit_fields/_adjust_shipment.html.erb +6 -0
- data/app/views/solidus_friendly_promotions/admin/benefit_fields/_calculator_fields.erb +11 -0
- data/app/views/solidus_friendly_promotions/admin/{promotion_actions/actions → benefit_fields}/_create_discounted_item.html.erb +8 -6
- data/app/views/solidus_friendly_promotions/admin/benefits/_benefit.html.erb +50 -0
- data/app/views/solidus_friendly_promotions/admin/benefits/_calculator_select.html.erb +16 -0
- data/app/views/solidus_friendly_promotions/admin/benefits/_form.html.erb +3 -0
- data/app/views/solidus_friendly_promotions/admin/benefits/_new_benefit.html.erb +33 -0
- data/app/views/solidus_friendly_promotions/admin/benefits/_type_select.html.erb +16 -0
- data/app/views/solidus_friendly_promotions/admin/benefits/edit.html.erb +19 -0
- data/app/views/solidus_friendly_promotions/admin/benefits/new.html.erb +1 -0
- data/app/views/solidus_friendly_promotions/admin/{promotion_actions/calculators → calculator_fields}/_default_fields.html.erb +1 -1
- data/app/views/solidus_friendly_promotions/admin/{promotion_actions/calculators → calculator_fields}/distributed_amount/_fields.html.erb +3 -3
- data/app/views/solidus_friendly_promotions/admin/calculator_fields/flat_rate/_fields.html.erb +6 -0
- data/app/views/solidus_friendly_promotions/admin/calculator_fields/flexi_rate/_fields.html.erb +24 -0
- data/app/views/solidus_friendly_promotions/admin/calculator_fields/percent/_fields.html.erb +6 -0
- data/app/views/solidus_friendly_promotions/admin/calculator_fields/tiered_flat_rate/_fields.html.erb +32 -0
- data/app/views/solidus_friendly_promotions/admin/{promotion_actions/calculators → calculator_fields}/tiered_flat_rate/_tier_fields.html.erb +7 -8
- data/app/views/solidus_friendly_promotions/admin/calculator_fields/tiered_percent/_fields.html.erb +47 -0
- data/app/views/solidus_friendly_promotions/admin/{promotion_actions/calculators → calculator_fields}/tiered_percent/_tier_fields.html.erb +8 -7
- data/app/views/solidus_friendly_promotions/admin/{promotion_actions/calculators → calculator_fields}/tiered_percent_on_eligible_item_quantity/_fields.html.erb +11 -9
- data/app/views/solidus_friendly_promotions/admin/calculator_fields/tiered_percent_on_eligible_item_quantity/_tier_fields.html.erb +35 -0
- data/app/views/solidus_friendly_promotions/admin/condition_fields/_first_order.html.erb +3 -0
- data/app/views/solidus_friendly_promotions/admin/condition_fields/_first_repeat_purchase_since.html.erb +7 -0
- data/app/views/solidus_friendly_promotions/admin/condition_fields/_item_total.html.erb +15 -0
- data/app/views/solidus_friendly_promotions/admin/condition_fields/_line_item_option_value.html.erb +25 -0
- data/app/views/solidus_friendly_promotions/admin/{promotion_rules/rules → condition_fields}/_line_item_product.html.erb +7 -7
- data/app/views/solidus_friendly_promotions/admin/condition_fields/_line_item_taxon.html.erb +17 -0
- data/app/views/solidus_friendly_promotions/admin/condition_fields/_minimum_quantity.html.erb +5 -0
- data/app/views/solidus_friendly_promotions/admin/condition_fields/_nth_order.html.erb +15 -0
- data/app/views/solidus_friendly_promotions/admin/condition_fields/_one_use_per_user.html.erb +3 -0
- data/app/views/solidus_friendly_promotions/admin/{promotion_rules/rules → condition_fields}/_option_value.html.erb +10 -10
- data/app/views/solidus_friendly_promotions/admin/condition_fields/_product.html.erb +28 -0
- data/app/views/solidus_friendly_promotions/admin/{promotion_rules/rules → condition_fields}/_shipping_method.html.erb +3 -3
- data/app/views/solidus_friendly_promotions/admin/condition_fields/_store.html.erb +9 -0
- data/app/views/solidus_friendly_promotions/admin/condition_fields/_taxon.html.erb +28 -0
- data/app/views/solidus_friendly_promotions/admin/condition_fields/_user.html.erb +7 -0
- data/app/views/solidus_friendly_promotions/admin/condition_fields/_user_logged_in.html.erb +3 -0
- data/app/views/solidus_friendly_promotions/admin/condition_fields/_user_role.html.erb +15 -0
- data/app/views/solidus_friendly_promotions/admin/condition_fields/line_item_option_value/_option_value_fields.html.erb +21 -0
- data/app/views/solidus_friendly_promotions/admin/conditions/_condition.html.erb +26 -0
- data/app/views/solidus_friendly_promotions/admin/conditions/_new_condition.html.erb +26 -0
- data/app/views/solidus_friendly_promotions/admin/conditions/_type_select.html.erb +20 -0
- data/app/views/solidus_friendly_promotions/admin/conditions/new.html.erb +1 -0
- data/app/views/solidus_friendly_promotions/admin/promotion_code_batches/_form_fields.html.erb +5 -5
- data/app/views/solidus_friendly_promotions/admin/promotion_code_batches/new.html.erb +3 -3
- data/app/views/solidus_friendly_promotions/admin/promotions/_form.html.erb +36 -8
- data/app/views/solidus_friendly_promotions/admin/promotions/_table_filter.html.erb +6 -6
- data/app/views/solidus_friendly_promotions/admin/promotions/edit.html.erb +7 -41
- data/app/views/solidus_friendly_promotions/admin/shared/_number_with_currency.html.erb +20 -0
- data/app/views/solidus_friendly_promotions/admin/shared/preference_fields/_boolean.html.erb +14 -0
- data/app/views/solidus_friendly_promotions/admin/shared/preference_fields/_decimal.html.erb +12 -0
- data/app/views/solidus_friendly_promotions/admin/shared/preference_fields/_encrypted_string.html.erb +12 -0
- data/app/views/solidus_friendly_promotions/admin/shared/preference_fields/_integer.html.erb +12 -0
- data/app/views/solidus_friendly_promotions/admin/shared/preference_fields/_password.html.erb +12 -0
- data/app/views/solidus_friendly_promotions/admin/shared/preference_fields/_string.html.erb +12 -0
- data/app/views/solidus_friendly_promotions/admin/shared/preference_fields/_text.html.erb +12 -0
- data/bin/sandbox +3 -3
- data/config/importmap.rb +2 -0
- data/config/locales/en.yml +139 -91
- data/config/routes.rb +3 -2
- data/db/migrate/20231011120928_add_db_comments_to_friendly_promotion_rules_taxons.rb +2 -2
- data/db/migrate/20231011142040_add_db_comments_to_friendly_promotion_rules_users.rb +1 -1
- data/db/migrate/20231011190222_add_db_comments_to_friendly_promotion_actions.rb +1 -1
- data/db/migrate/20240409093831_add_action_reference_to_rules.rb +34 -0
- data/db/migrate/20240506142650_remove_promotion_rules_promotion_id.rb +5 -0
- data/db/migrate/20240508080834_rename_promotion_rules_to_conditions.rb +19 -0
- data/db/migrate/20240508131514_rename_friendly_promotion_actions_to_friendly_benefits.rb +19 -0
- data/db/migrate/20240612113608_update_column_comments_for_benefits.rb +31 -0
- data/db/migrate/20240612114132_update_column_comments_for_conditions.rb +30 -0
- data/db/migrate/20240612115209_update_column_comments_for_condition_stores.rb +23 -0
- data/db/migrate/20240612115749_update_column_comments_for_condition_products.rb +22 -0
- data/db/migrate/20240612120411_update_column_comments_for_condition_taxons.rb +24 -0
- data/db/migrate/20240612121049_update_column_comments_for_condition_users.rb +23 -0
- data/lib/generators/solidus_friendly_promotions/install/templates/initializer.rb +30 -30
- data/lib/solidus_friendly_promotions/configuration.rb +11 -3
- data/lib/solidus_friendly_promotions/migrate_adjustments.rb +11 -11
- data/lib/solidus_friendly_promotions/promotion_map.rb +17 -17
- data/lib/solidus_friendly_promotions/promotion_migrator.rb +16 -16
- data/lib/solidus_friendly_promotions/testing_support/factories/friendly_promotion_factory.rb +8 -34
- data/lib/solidus_friendly_promotions/testing_support/factories/friendly_shipping_rate_discount_factory.rb +2 -2
- data/lib/solidus_friendly_promotions/version.rb +1 -1
- data/lib/tasks/solidus_friendly_promotions/migrate_adjustments.rake +2 -2
- data/solidus_friendly_promotions.gemspec +2 -2
- metadata +115 -88
- data/.rubocop_todo.yml +0 -157
- data/app/controllers/solidus_friendly_promotions/admin/promotion_actions_controller.rb +0 -103
- data/app/controllers/solidus_friendly_promotions/admin/promotion_rules_controller.rb +0 -105
- data/app/helpers/solidus_friendly_promotions/admin/promotion_actions_helper.rb +0 -23
- data/app/helpers/solidus_friendly_promotions/admin/promotion_rules_helper.rb +0 -25
- data/app/models/solidus_friendly_promotions/products_promotion_rule.rb +0 -8
- data/app/models/solidus_friendly_promotions/promotion_rules_store.rb +0 -8
- data/app/models/solidus_friendly_promotions/promotion_rules_taxon.rb +0 -8
- data/app/views/solidus_friendly_promotions/admin/promotion_actions/_calculator_select.html.erb +0 -16
- data/app/views/solidus_friendly_promotions/admin/promotion_actions/_form.html.erb +0 -3
- data/app/views/solidus_friendly_promotions/admin/promotion_actions/_promotion_action.html.erb +0 -29
- data/app/views/solidus_friendly_promotions/admin/promotion_actions/_type_select.html.erb +0 -14
- data/app/views/solidus_friendly_promotions/admin/promotion_actions/actions/_adjust_line_item.html.erb +0 -6
- data/app/views/solidus_friendly_promotions/admin/promotion_actions/actions/_adjust_shipment.html.erb +0 -6
- data/app/views/solidus_friendly_promotions/admin/promotion_actions/actions/_calculator_fields.erb +0 -9
- data/app/views/solidus_friendly_promotions/admin/promotion_actions/calculators/flat_rate/_fields.html.erb +0 -6
- data/app/views/solidus_friendly_promotions/admin/promotion_actions/calculators/tiered_flat_rate/_fields.html.erb +0 -34
- data/app/views/solidus_friendly_promotions/admin/promotion_actions/calculators/tiered_percent/_fields.html.erb +0 -34
- data/app/views/solidus_friendly_promotions/admin/promotion_actions/calculators/tiered_percent_on_eligible_item_quantity/_tier_fields.html.erb +0 -27
- data/app/views/solidus_friendly_promotions/admin/promotion_actions/edit.html.erb +0 -23
- data/app/views/solidus_friendly_promotions/admin/promotion_actions/new.html.erb +0 -26
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/_promotion_rule.html.erb +0 -22
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/_type_select.html.erb +0 -20
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/new.html.erb +0 -24
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/_first_order.html.erb +0 -3
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/_first_repeat_purchase_since.html.erb +0 -6
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/_item_total.html.erb +0 -17
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/_line_item_option_value.html.erb +0 -25
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/_line_item_taxon.html.erb +0 -17
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/_minimum_quantity.html.erb +0 -5
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/_nth_order.html.erb +0 -15
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/_one_use_per_user.html.erb +0 -3
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/_product.html.erb +0 -44
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/_store.html.erb +0 -9
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/_taxon.html.erb +0 -44
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/_user.html.erb +0 -7
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/_user_logged_in.html.erb +0 -3
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/_user_role.html.erb +0 -15
- data/app/views/solidus_friendly_promotions/admin/promotion_rules/rules/line_item_option_value/_option_value_fields.html.erb +0 -17
- data/app/views/solidus_friendly_promotions/admin/promotions/_activations_edit.html.erb +0 -22
- data/app/views/solidus_friendly_promotions/admin/promotions/_activations_new.html.erb +0 -43
data/bin/sandbox
CHANGED
@@ -43,12 +43,13 @@ if [ ! -d "sandbox" ]; then
|
|
43
43
|
exit 1
|
44
44
|
fi
|
45
45
|
|
46
|
-
echo "~~~> Adding solidus (with i18n
|
46
|
+
echo "~~~> Adding solidus (with i18n) to the Gemfile"
|
47
47
|
cd ./sandbox
|
48
48
|
cat <<RUBY >> Gemfile
|
49
49
|
gem 'solidus', github: 'solidusio/solidus', branch: '$SOLIDUS_BRANCH'
|
50
50
|
gem 'rails-i18n'
|
51
51
|
gem 'solidus_i18n'
|
52
|
+
gem 'solidus_auth_devise'
|
52
53
|
|
53
54
|
gem '$extension_name', path: '..'
|
54
55
|
|
@@ -63,9 +64,8 @@ unbundled bundle install --gemfile Gemfile
|
|
63
64
|
|
64
65
|
unbundled bundle exec rake db:drop db:create
|
65
66
|
|
66
|
-
unbundled
|
67
|
+
unbundled bundle exec rails generate solidus:install \
|
67
68
|
--auto-accept \
|
68
|
-
--admin_preview=false \
|
69
69
|
$@
|
70
70
|
|
71
71
|
unbundled bundle exec rails generate solidus:auth:install --auto-run-migrations
|
data/config/importmap.rb
CHANGED
@@ -8,5 +8,7 @@ pin_all_from SolidusFriendlyPromotions::Engine.root.join("app/javascript/solidus
|
|
8
8
|
under: "solidus_friendly_promotions/controllers"
|
9
9
|
pin_all_from SolidusFriendlyPromotions::Engine.root.join("app/javascript/solidus_friendly_promotions/jquery"),
|
10
10
|
under: "solidus_friendly_promotions/jquery"
|
11
|
+
pin_all_from SolidusFriendlyPromotions::Engine.root.join("app/javascript/solidus_friendly_promotions/web_components"),
|
12
|
+
under: "solidus_friendly_promotions/web_components"
|
11
13
|
|
12
14
|
pin "solidus_friendly_promotions", to: "solidus_friendly_promotions.js", preload: true
|
data/config/locales/en.yml
CHANGED
@@ -9,41 +9,50 @@ en:
|
|
9
9
|
promotion_categories: Promotion Categories
|
10
10
|
legacy_promotions: Legacy Promotions
|
11
11
|
legacy_promotion_categories: Legacy Promotion Categories
|
12
|
+
hints:
|
13
|
+
solidus_friendly_promotions/promotion:
|
14
|
+
expires_at: This determines when the promotion expires. <br> If no value is specified, the promotion will never expire.
|
15
|
+
promo_code_will_be_disabled: Selecting this option, promo codes will be disabled for this promotion because all its conditions / benefits will be applied automatically to all orders.
|
16
|
+
starts_at: This determines when the promotion can be applied to orders. <br> If no value is specified, the promotion will be immediately available.
|
12
17
|
solidus_friendly_promotions:
|
13
|
-
|
18
|
+
hints:
|
19
|
+
solidus_friendly_promotions/benefit:
|
20
|
+
conditions: This is used to determine if the benefit should be applied.
|
21
|
+
type: This is the type of benefit that will be applied.
|
22
|
+
calculator: This is used to determine the promotional discount to be applied to an order, an item, or shipping charges.
|
23
|
+
benefits: Benefits
|
14
24
|
adjustment_labels:
|
15
25
|
line_item: "%{promotion} (%{promotion_customer_label})"
|
16
26
|
shipment: "%{promotion} (%{promotion_customer_label})"
|
17
27
|
shipping_rate: "%{promotion} (%{promotion_customer_label})"
|
18
28
|
adjustment_type: Adjustment type
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
invalid_promotion_rule: Invalid promotion rule.
|
29
|
+
add_benefit: Add Benefit
|
30
|
+
add_condition: Add Condition
|
31
|
+
order_conditions: Order Conditions
|
32
|
+
line_item_conditions: Line Item Conditions
|
33
|
+
shipment_conditions: Shipment Conditions
|
34
|
+
line_item_benefits: Line Item Benefits
|
35
|
+
shipment_benefits: Shipment Benefits
|
36
|
+
order_benefits: Order Benefits
|
37
|
+
invalid_benefit: Invalid promotion benefit.
|
38
|
+
invalid_condition: Invalid promotion condition.
|
30
39
|
create_promotion_code: Create promotion code
|
31
40
|
current_promotion_usage: 'Current Usage: %{count}'
|
32
|
-
|
41
|
+
discount_conditions: Promotion Conditions
|
33
42
|
download_promotion_codes_list: Download codes list
|
34
43
|
new_promotion: New Promotion
|
35
44
|
new_promotion_category: New Promotion Category
|
36
45
|
new_promotion_code_batch: New Promotion Code Batch
|
37
46
|
number_of_codes: "%{count} codes"
|
38
47
|
legacy_promotions: Legacy Promotions
|
39
|
-
|
48
|
+
no_conditions_added: No Conditions Added
|
40
49
|
promotion_successfully_created: Promotion has been successfully created!
|
41
50
|
promotion_total_changed_before_complete: One or more of the promotions on your order have become ineligible and were removed. Please check the new order amounts and try again.
|
42
51
|
promotion_code_batches:
|
43
52
|
finished: Finished
|
44
53
|
errored: Errored
|
45
54
|
view_promotion_codes_list: View codes list
|
46
|
-
|
55
|
+
conditions:
|
47
56
|
line_item_product:
|
48
57
|
match_policies:
|
49
58
|
include: Line item's product is one of the chosen products
|
@@ -52,9 +61,17 @@ en:
|
|
52
61
|
match_policies:
|
53
62
|
include: Line item's product has one of the chosen taxons
|
54
63
|
exclude: Line item's product does not have one of the chosen taxons
|
55
|
-
|
56
|
-
|
57
|
-
|
64
|
+
item_total_condition:
|
65
|
+
operators:
|
66
|
+
gt: greater than
|
67
|
+
gte: greater than or equal to
|
68
|
+
user_condition:
|
69
|
+
choose_users: Choose Users
|
70
|
+
user_role_condition:
|
71
|
+
choose_roles: Choose Roles
|
72
|
+
label: User must contain %{select} of these roles
|
73
|
+
match_all: all
|
74
|
+
match_any: at least one
|
58
75
|
coupon_code: Coupon code
|
59
76
|
eligibility_results:
|
60
77
|
coupon_code_applied: The coupon code was successfully applied to your order.
|
@@ -67,50 +84,50 @@ en:
|
|
67
84
|
coupon_code_not_found: The coupon code you entered doesn't exist. Please try again.
|
68
85
|
coupon_code_not_present: The coupon code you are trying to remove is not present on this order.
|
69
86
|
coupon_code_unknown_error: This coupon code could not be applied to the cart at this time.
|
70
|
-
solidus_friendly_promotions/
|
87
|
+
solidus_friendly_promotions/conditions/first_order:
|
71
88
|
not_first_order: This coupon code can only be applied to your first order.
|
72
|
-
solidus_friendly_promotions/
|
73
|
-
solidus_friendly_promotions/
|
89
|
+
solidus_friendly_promotions/conditions/first_repeat_purchase_since:
|
90
|
+
solidus_friendly_promotions/conditions/item_total:
|
74
91
|
item_total_doesnt_match_with_operator: This coupon code can't be applied to orders %{operator} %{amount}.
|
75
92
|
item_total_less_than: This coupon code can't be applied to orders less than %{amount}.
|
76
93
|
item_total_less_than_or_equal: This coupon code can't be applied to orders less than or equal to %{amount}.
|
77
|
-
solidus_friendly_promotions/
|
94
|
+
solidus_friendly_promotions/conditions/discounted_item_total:
|
78
95
|
item_total_doesnt_match_with_operator: This coupon code can't be applied to orders %{operator} %{amount}.
|
79
96
|
item_total_less_than: This coupon code can't be applied to orders less than %{amount}.
|
80
97
|
item_total_less_than_or_equal: This coupon code can't be applied to orders less than or equal to %{amount}.
|
81
|
-
solidus_friendly_promotions/
|
82
|
-
solidus_friendly_promotions/
|
83
|
-
solidus_friendly_promotions/
|
98
|
+
solidus_friendly_promotions/conditions/landing_page:
|
99
|
+
solidus_friendly_promotions/conditions/nth_order:
|
100
|
+
solidus_friendly_promotions/conditions/one_use_per_user:
|
84
101
|
no_user_specified: You need to login before applying this coupon code.
|
85
102
|
limit_once_per_user: This coupon code can only be used once per user.
|
86
|
-
solidus_friendly_promotions/
|
87
|
-
solidus_friendly_promotions/
|
88
|
-
solidus_friendly_promotions/
|
103
|
+
solidus_friendly_promotions/conditions/option_value:
|
104
|
+
solidus_friendly_promotions/conditions/line_item_option_value:
|
105
|
+
solidus_friendly_promotions/conditions/product:
|
89
106
|
has_excluded_product: Your cart contains a product that prevents this coupon code from being applied.
|
90
107
|
missing_product: This coupon code can't be applied because you don't have all of the necessary products in your cart.
|
91
108
|
no_applicable_products: You need to add an applicable product before applying this coupon code.
|
92
|
-
solidus_friendly_promotions/
|
109
|
+
solidus_friendly_promotions/conditions/line_item_product:
|
93
110
|
has_excluded_product: Your cart contains a product that prevents this coupon code from being applied.
|
94
111
|
missing_product: This coupon code can't be applied because you don't have all of the necessary products in your cart.
|
95
112
|
no_applicable_products: You need to add an applicable product before applying this coupon code.
|
96
|
-
solidus_friendly_promotions/
|
113
|
+
solidus_friendly_promotions/conditions/taxon:
|
97
114
|
has_excluded_taxon: Your cart contains a product from an excluded category that prevents this coupon code from being applied.
|
98
115
|
missing_taxon: You need to add a product from all applicable categories before applying this coupon code.
|
99
116
|
no_matching_taxons: You need to add a product from an applicable category before applying this coupon code.
|
100
|
-
solidus_friendly_promotions/
|
117
|
+
solidus_friendly_promotions/conditions/line_item_taxon:
|
101
118
|
has_excluded_taxon: Your cart contains a product from an excluded category that prevents this coupon code from being applied.
|
102
119
|
missing_taxon: You need to add a product from all applicable categories before applying this coupon code.
|
103
120
|
no_matching_taxons: You need to add a product from an applicable category before applying this coupon code.
|
104
|
-
solidus_friendly_promotions/
|
121
|
+
solidus_friendly_promotions/conditions/user:
|
105
122
|
no_user_specified: You need to login before applying this coupon code.
|
106
|
-
solidus_friendly_promotions/
|
123
|
+
solidus_friendly_promotions/conditions/user_logged_in:
|
107
124
|
no_user_specified: You need to login before applying this coupon code.
|
108
|
-
solidus_friendly_promotions/
|
109
|
-
solidus_friendly_promotions/
|
125
|
+
solidus_friendly_promotions/conditions/user_role:
|
126
|
+
solidus_friendly_promotions/conditions/minimum_quantity:
|
110
127
|
quantity_less_than_minimum:
|
111
128
|
one: "You need to add a least 1 applicable item to your order."
|
112
129
|
other: "You need to add a least %{count} applicable items to your order."
|
113
|
-
|
130
|
+
product_condition:
|
114
131
|
choose_products: Choose products
|
115
132
|
label: Order must contain %{select} these products
|
116
133
|
match_all: all of
|
@@ -120,19 +137,23 @@ en:
|
|
120
137
|
product_source:
|
121
138
|
group: From product group
|
122
139
|
manual: Manually choose
|
123
|
-
|
140
|
+
taxon_condition:
|
124
141
|
choose_taxons: Choose taxons
|
125
142
|
label: Order must contain %{select} of these taxons
|
126
143
|
match_all: all
|
127
144
|
match_any: at least one
|
128
145
|
match_none: none
|
146
|
+
line_item_option_value_condition:
|
147
|
+
add_product: Add product
|
148
|
+
option_value_condition:
|
149
|
+
add_product: Add product
|
129
150
|
crud:
|
130
151
|
add: Add
|
131
152
|
destroy: Delete
|
132
153
|
update: Update
|
133
154
|
admin:
|
134
155
|
promotions:
|
135
|
-
|
156
|
+
benefits:
|
136
157
|
calculator_label: Calculated by
|
137
158
|
activations_edit:
|
138
159
|
auto: All orders will attempt to use this promotion
|
@@ -147,8 +168,9 @@ en:
|
|
147
168
|
expires_at_placeholder: Never
|
148
169
|
general: General
|
149
170
|
starts_at_placeholder: Immediately
|
171
|
+
codes_present: This promotion has promotion codes defined. You cannot select the apply automatically option.
|
150
172
|
edit:
|
151
|
-
|
173
|
+
order_conditions: Order Conditions
|
152
174
|
calculator:
|
153
175
|
add_tier: Add tier
|
154
176
|
promotion_status:
|
@@ -165,34 +187,34 @@ en:
|
|
165
187
|
subject: Promotion code batch finished
|
166
188
|
activerecord:
|
167
189
|
models:
|
168
|
-
solidus_friendly_promotions/
|
169
|
-
solidus_friendly_promotions/
|
170
|
-
solidus_friendly_promotions/
|
171
|
-
solidus_friendly_promotions/
|
190
|
+
solidus_friendly_promotions/benefits/adjust_shipment: Discount matching shipments
|
191
|
+
solidus_friendly_promotions/benefits/adjust_line_item: Discount matching line items
|
192
|
+
solidus_friendly_promotions/benefits/create_discounted_item: Create discounted line item
|
193
|
+
solidus_friendly_promotions/benefits/adjust_line_item_quantity_groups: Discount matching line items based on quantity groups
|
172
194
|
solidus_friendly_promotions/calculators/distributed_amount: Distributed Amount
|
173
|
-
solidus_friendly_promotions/calculators/percent:
|
195
|
+
solidus_friendly_promotions/calculators/percent: Percent
|
174
196
|
solidus_friendly_promotions/calculators/flat_rate: Flat Rate
|
175
197
|
solidus_friendly_promotions/calculators/flexi_rate: Flexible Rate
|
176
198
|
solidus_friendly_promotions/calculators/tiered_flat_rate: Tiered Flat Rate
|
177
199
|
solidus_friendly_promotions/calculators/tiered_percent: Tiered Percent
|
178
200
|
solidus_friendly_promotions/calculators/tiered_percent_on_eligible_item_quantity: Tiered Percent based on eligible item quantity
|
179
|
-
solidus_friendly_promotions/
|
180
|
-
solidus_friendly_promotions/
|
181
|
-
solidus_friendly_promotions/
|
182
|
-
solidus_friendly_promotions/
|
183
|
-
solidus_friendly_promotions/
|
184
|
-
solidus_friendly_promotions/
|
185
|
-
solidus_friendly_promotions/
|
186
|
-
solidus_friendly_promotions/
|
187
|
-
solidus_friendly_promotions/
|
188
|
-
solidus_friendly_promotions/
|
189
|
-
solidus_friendly_promotions/
|
190
|
-
solidus_friendly_promotions/
|
191
|
-
solidus_friendly_promotions/
|
192
|
-
solidus_friendly_promotions/
|
193
|
-
solidus_friendly_promotions/
|
194
|
-
solidus_friendly_promotions/
|
195
|
-
solidus_friendly_promotions/
|
201
|
+
solidus_friendly_promotions/conditions/first_order: First Order
|
202
|
+
solidus_friendly_promotions/conditions/first_repeat_purchase_since: First Repeat Purchase Since
|
203
|
+
solidus_friendly_promotions/conditions/item_total: Item Total
|
204
|
+
solidus_friendly_promotions/conditions/discounted_item_total: Item Total after previous lanes
|
205
|
+
solidus_friendly_promotions/conditions/landing_page: Landing Page
|
206
|
+
solidus_friendly_promotions/conditions/minimum_quantity: Minimum Quantity
|
207
|
+
solidus_friendly_promotions/conditions/nth_order: Nth Order
|
208
|
+
solidus_friendly_promotions/conditions/one_use_per_user: One Use Per User
|
209
|
+
solidus_friendly_promotions/conditions/option_value: Option Value(s)
|
210
|
+
solidus_friendly_promotions/conditions/line_item_option_value: Line Item Option Value(s)
|
211
|
+
solidus_friendly_promotions/conditions/product: Order Product(s)
|
212
|
+
solidus_friendly_promotions/conditions/line_item_product: Line Item Product(s)
|
213
|
+
solidus_friendly_promotions/conditions/taxon: Order Taxon(s)
|
214
|
+
solidus_friendly_promotions/conditions/line_item_taxon: Line Item Taxon(s)
|
215
|
+
solidus_friendly_promotions/conditions/user: User
|
216
|
+
solidus_friendly_promotions/conditions/user_logged_in: User Logged In
|
217
|
+
solidus_friendly_promotions/conditions/user_role: User Role(s)
|
196
218
|
solidus_friendly_promotions/promotion_code_batch:
|
197
219
|
one: Code batch
|
198
220
|
other: Code batches
|
@@ -205,57 +227,61 @@ en:
|
|
205
227
|
pre: Pre
|
206
228
|
default: Default
|
207
229
|
post: Post
|
208
|
-
solidus_friendly_promotions/
|
209
|
-
type:
|
210
|
-
solidus_friendly_promotions/
|
230
|
+
solidus_friendly_promotions/benefit:
|
231
|
+
type: Benefit Type
|
232
|
+
solidus_friendly_promotions/condition:
|
233
|
+
type: Condition Type
|
234
|
+
solidus_friendly_promotions/benefits/adjust_line_item:
|
211
235
|
description: Creates a promotion credit on matching line items
|
212
|
-
solidus_friendly_promotions/
|
236
|
+
solidus_friendly_promotions/benefits/adjust_shipment:
|
213
237
|
description: Creates a promotion credit on matching shipments
|
214
|
-
solidus_friendly_promotions/
|
238
|
+
solidus_friendly_promotions/benefits/create_discounted_item:
|
215
239
|
description: Creates a discounted item with the quantity the applicable line items.
|
216
240
|
preferred_quantity: Quantity per applicable line item quantity
|
217
241
|
preferred_necessary_quantity: Number of items needed for a discounted item
|
218
|
-
solidus_friendly_promotions/
|
242
|
+
solidus_friendly_promotions/conditions/first_order:
|
219
243
|
description: Must be the customer's first order
|
220
|
-
solidus_friendly_promotions/
|
221
|
-
description: Available only to
|
222
|
-
|
223
|
-
solidus_friendly_promotions/
|
224
|
-
description: Order total
|
225
|
-
|
244
|
+
solidus_friendly_promotions/conditions/first_repeat_purchase_since:
|
245
|
+
description: Available only to users who have not purchased in a while
|
246
|
+
preferred_days_ago: Last purchase was at least this many days ago
|
247
|
+
solidus_friendly_promotions/conditions/item_total:
|
248
|
+
description: Order total must be greater than or equal to the specified amount
|
249
|
+
preferred_operator: Operator
|
250
|
+
preferred_amount: Amount
|
251
|
+
solidus_friendly_promotions/conditions/landing_page:
|
226
252
|
description: Customer must have visited the specified page
|
227
|
-
solidus_friendly_promotions/
|
228
|
-
description: Apply a promotion to
|
253
|
+
solidus_friendly_promotions/conditions/nth_order:
|
254
|
+
description: Apply a promotion to the nth order a user has completed.
|
229
255
|
form_text: 'Apply this promotion on the users Nth order: '
|
230
|
-
solidus_friendly_promotions/
|
256
|
+
solidus_friendly_promotions/conditions/one_use_per_user:
|
231
257
|
description: Only one use per user
|
232
|
-
solidus_friendly_promotions/
|
258
|
+
solidus_friendly_promotions/conditions/option_value:
|
233
259
|
description: Order includes specified product(s) with matching option value(s)
|
234
260
|
preferred_line_item_applicable: Should also apply to line items
|
235
|
-
solidus_friendly_promotions/
|
261
|
+
solidus_friendly_promotions/conditions/line_item_option_value:
|
236
262
|
description: Line Item has specified product with matching option value
|
237
|
-
solidus_friendly_promotions/
|
263
|
+
solidus_friendly_promotions/conditions/minimum_quantity:
|
238
264
|
description: Order contains minimum quantity of applicable items
|
239
|
-
solidus_friendly_promotions/
|
265
|
+
solidus_friendly_promotions/conditions/product:
|
240
266
|
description: Order includes specified product(s)
|
241
267
|
line_item_level_description: 'Line item matches the specified products:'
|
242
268
|
preferred_line_item_applicable: Should also apply to line items
|
243
|
-
solidus_friendly_promotions/
|
269
|
+
solidus_friendly_promotions/conditions/line_item_product:
|
244
270
|
description: Line item matches specified product(s)
|
245
271
|
preferred_match_policy: Match Policy
|
246
|
-
solidus_friendly_promotions/
|
272
|
+
solidus_friendly_promotions/conditions/store:
|
247
273
|
description: Available only to the specified stores
|
248
|
-
solidus_friendly_promotions/
|
274
|
+
solidus_friendly_promotions/conditions/taxon:
|
249
275
|
description: Order includes products with specified taxon(s)
|
250
276
|
preferred_line_item_applicable: Should also apply to line items
|
251
|
-
solidus_friendly_promotions/
|
277
|
+
solidus_friendly_promotions/conditions/line_item_taxon:
|
252
278
|
description: Line Item has product with specified taxon(s)
|
253
279
|
preferred_match_policy: Match Policy
|
254
|
-
solidus_friendly_promotions/
|
280
|
+
solidus_friendly_promotions/conditions/user:
|
255
281
|
description: Available only to the specified users
|
256
|
-
solidus_friendly_promotions/
|
282
|
+
solidus_friendly_promotions/conditions/user_logged_in:
|
257
283
|
description: Available only to logged in users
|
258
|
-
solidus_friendly_promotions/
|
284
|
+
solidus_friendly_promotions/conditions/user_role:
|
259
285
|
description: Order includes User with specified Role(s)
|
260
286
|
solidus_friendly_promotions/calculators/tiered_flat_rate:
|
261
287
|
description: Flat Rate in tiers based on item amount
|
@@ -265,16 +291,26 @@ en:
|
|
265
291
|
description: Tiered percentage based on order's item total
|
266
292
|
preferred_base_percent: Base Percent
|
267
293
|
tiers: Tiers
|
294
|
+
order_item_total: Order Item Total
|
295
|
+
percent: Percent
|
268
296
|
solidus_friendly_promotions/calculators/tiered_percent_on_eligible_item_quantity:
|
269
297
|
description: Tiered percentage based on eligible item quantity
|
270
298
|
preferred_base_percent: Base Percent
|
271
299
|
tiers: Tiers
|
300
|
+
order_item_total: Order Item Total
|
301
|
+
discount: Discount
|
272
302
|
solidus_friendly_promotions/calculators/flat_rate:
|
273
303
|
description: Provides a flat rate discount
|
304
|
+
solidus_friendly_promotions/calculators/flexi_rate:
|
305
|
+
description: Calculates a discount for the first item and (separately) any additional items, with a maximum number of items that can be specified.
|
306
|
+
preferred_first_item: Discount for the first item
|
307
|
+
preferred_additional_item: Discount for additional items
|
308
|
+
preferred_max_items: Maximum number of items
|
309
|
+
preferred_currency: Currency
|
274
310
|
solidus_friendly_promotions/calculators/percent:
|
275
311
|
description: Provides a discount calculated by percent of the discountable amount of the item being discounted
|
276
312
|
solidus_friendly_promotions/calculators/distributed_amount:
|
277
|
-
description:
|
313
|
+
description: Distributes the configured amount among all eligible line items of the order.
|
278
314
|
explanation: |
|
279
315
|
<p>
|
280
316
|
This amount will be distributed to line items weighted relative to
|
@@ -311,13 +347,20 @@ en:
|
|
311
347
|
</tr>
|
312
348
|
</tbody>
|
313
349
|
</table>
|
350
|
+
preferred_amount: Amount
|
314
351
|
|
315
352
|
errors:
|
316
353
|
models:
|
317
|
-
solidus_friendly_promotions/
|
354
|
+
solidus_friendly_promotions/benefit:
|
318
355
|
attributes:
|
319
356
|
base:
|
320
|
-
cannot_destroy_if_order_completed:
|
357
|
+
cannot_destroy_if_order_completed: Benefit has been applied to complete orders. It cannot be destroyed.
|
358
|
+
solidus_friendly_promotions/condition:
|
359
|
+
attributes:
|
360
|
+
benefit:
|
361
|
+
already_contains_condition_type: already contains this condition type
|
362
|
+
type:
|
363
|
+
invalid_condition_type: is not a valid condition type
|
321
364
|
solidus_friendly_promotions/promotion_code:
|
322
365
|
attributes:
|
323
366
|
base:
|
@@ -325,4 +368,9 @@ en:
|
|
325
368
|
spree/line_item:
|
326
369
|
attributes:
|
327
370
|
quantity:
|
328
|
-
cannot_be_changed_for_automated_items: cannot be changed on a line item managed by a promotion
|
371
|
+
cannot_be_changed_for_automated_items: cannot be changed on a line item managed by a promotion benefit
|
372
|
+
solidus_friendly_promotions/promotion:
|
373
|
+
attributes:
|
374
|
+
apply_automatically:
|
375
|
+
disallowed_with_path: cannot be set to true when path is present
|
376
|
+
disallowed_with_promotion_codes: cannot be set to true when promotion code is present
|
data/config/routes.rb
CHANGED
@@ -6,8 +6,9 @@ SolidusFriendlyPromotions::Engine.routes.draw do
|
|
6
6
|
resources :promotion_categories, except: [:show]
|
7
7
|
|
8
8
|
resources :promotions do
|
9
|
-
resources :
|
10
|
-
|
9
|
+
resources :benefits do
|
10
|
+
resources :conditions
|
11
|
+
end
|
11
12
|
resources :promotion_codes, only: [:index, :new, :create]
|
12
13
|
resources :promotion_code_batches, only: [:index, :new, :create] do
|
13
14
|
get "/download", to: "promotion_code_batches#download", defaults: {format: "csv"}
|
@@ -16,8 +16,8 @@ class AddDbCommentsToFriendlyPromotionRulesTaxons < ActiveRecord::Migration[6.1]
|
|
16
16
|
|
17
17
|
def friendly_promotion_rules_taxons_table_comment
|
18
18
|
<<~COMMENT
|
19
|
-
Join table between promotion rules and taxons. Only used if the promotion rule's type is SolidusFriendlyPromotion::
|
20
|
-
SolidusFriendlyPromotion::
|
19
|
+
Join table between promotion rules and taxons. Only used if the promotion rule's type is SolidusFriendlyPromotion::Conditions::Taxon or
|
20
|
+
SolidusFriendlyPromotion::Conditions::LineItemTaxon. Represents those taxons that the promotion rule matches on using its any/all/none
|
21
21
|
or include/exclude match policy.
|
22
22
|
COMMENT
|
23
23
|
end
|
@@ -16,7 +16,7 @@ class AddDbCommentsToFriendlyPromotionRulesUsers < ActiveRecord::Migration[6.1]
|
|
16
16
|
|
17
17
|
def friendly_promotion_rules_users_table_comment
|
18
18
|
<<~COMMENT
|
19
|
-
Join table between promotion rules and users. Used with promotion rules of type "SolidusFriendlyPromotions::
|
19
|
+
Join table between promotion rules and users. Used with promotion rules of type "SolidusFriendlyPromotions::Conditions::User".
|
20
20
|
An entry here indicates that a promotion is eligible for the user ID specified here.
|
21
21
|
COMMENT
|
22
22
|
end
|
@@ -38,7 +38,7 @@ class AddDbCommentsToFriendlyPromotionActions < ActiveRecord::Migration[6.1]
|
|
38
38
|
def type_comment
|
39
39
|
<<~COMMENT
|
40
40
|
A class name representing which promotion action this represents.
|
41
|
-
Usually SolidusFriendlyPromotions::
|
41
|
+
Usually SolidusFriendlyPromotions::PromotionAction::Adjust{LineItem,Shipment}.
|
42
42
|
COMMENT
|
43
43
|
end
|
44
44
|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class AddActionReferenceToRules < ActiveRecord::Migration[7.0]
|
2
|
+
class LocalBenefit < ApplicationRecord
|
3
|
+
self.table_name = "friendly_promotion_actions"
|
4
|
+
has_many :actions, class_name: "SolidusFriendlyPromotions::Condition", foreign_key: :action_id
|
5
|
+
end
|
6
|
+
|
7
|
+
def up
|
8
|
+
remove_foreign_key :friendly_promotion_rules, :friendly_promotions
|
9
|
+
change_column :friendly_promotion_rules, :promotion_id, :integer, null: true
|
10
|
+
|
11
|
+
add_reference :friendly_promotion_rules, :action, index: {name: :rule}, null: true, foreign_key: {to_table: :friendly_promotion_actions}
|
12
|
+
|
13
|
+
SolidusFriendlyPromotions::Condition.reset_column_information
|
14
|
+
|
15
|
+
LocalBenefit.find_each do |action|
|
16
|
+
SolidusFriendlyPromotions::Condition.where(promotion_id: action.promotion_id).each do |rule|
|
17
|
+
rule.dup.tap do |new_rule|
|
18
|
+
new_rule.preload_relations.each do |relation|
|
19
|
+
new_rule.send(:"#{relation}=", rule.send(relation).dup)
|
20
|
+
end
|
21
|
+
new_rule.action = action
|
22
|
+
new_rule.save!
|
23
|
+
end
|
24
|
+
rule.destroy!
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def down
|
30
|
+
SolidusFriendlyPromotions::Condition.where.not(action_id: nil).delete_all
|
31
|
+
change_column :friendly_promotion_rules, :promotion_id, :integer, null: true
|
32
|
+
add_foreign_key :friendly_promotion_rules, :friendly_promotions, column: :promotion_id
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class RenamePromotionRulesToConditions < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
rename_table :friendly_promotion_rules, :friendly_conditions
|
4
|
+
rename_table :friendly_promotion_rules_stores, :friendly_condition_stores
|
5
|
+
rename_table :friendly_promotion_rules_taxons, :friendly_condition_taxons
|
6
|
+
rename_table :friendly_promotion_rules_users, :friendly_condition_users
|
7
|
+
rename_table :friendly_products_promotion_rules, :friendly_condition_products
|
8
|
+
rename_column :friendly_condition_stores, :promotion_rule_id, :condition_id
|
9
|
+
rename_column :friendly_condition_taxons, :promotion_rule_id, :condition_id
|
10
|
+
rename_column :friendly_condition_users, :promotion_rule_id, :condition_id
|
11
|
+
rename_column :friendly_condition_products, :promotion_rule_id, :condition_id
|
12
|
+
sql = <<~SQL
|
13
|
+
UPDATE friendly_conditions
|
14
|
+
SET type = REPLACE(type, 'SolidusFriendlyPromotions::Rules', 'SolidusFriendlyPromotions::Conditions')
|
15
|
+
SQL
|
16
|
+
|
17
|
+
execute(sql)
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class RenameFriendlyPromotionActionsToFriendlyBenefits < ActiveRecord::Migration[7.1]
|
2
|
+
def change
|
3
|
+
rename_table :friendly_promotion_actions, :friendly_benefits
|
4
|
+
rename_column :friendly_conditions, :action_id, :benefit_id
|
5
|
+
rename_column :spree_line_items, :managed_by_order_action_id, :managed_by_order_benefit_id
|
6
|
+
rename_column :friendly_shipping_rate_discounts, :promotion_action_id, :benefit_id
|
7
|
+
update_benefit_type_sql = <<~SQL
|
8
|
+
UPDATE friendly_benefits
|
9
|
+
SET type = REPLACE(type, 'SolidusFriendlyPromotions::Actions', 'SolidusFriendlyPromotions::Benefits')
|
10
|
+
SQL
|
11
|
+
execute(update_benefit_type_sql)
|
12
|
+
update_adjustment_source_type_sql = <<~SQL
|
13
|
+
UPDATE spree_adjustments
|
14
|
+
SET source_type = REPLACE(source_type, 'SolidusFriendlyPromotions::Actions', 'SolidusFriendlyPromotions::Benefits')
|
15
|
+
WHERE source_type LIKE 'SolidusFriendlyPromotions::Actions%'
|
16
|
+
SQL
|
17
|
+
execute(update_adjustment_source_type_sql)
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class UpdateColumnCommentsForBenefits < ActiveRecord::Migration[6.1]
|
2
|
+
def up
|
3
|
+
if connection.supports_comments?
|
4
|
+
change_table_comment(:friendly_benefits, friendly_benefits_table_comment)
|
5
|
+
change_column_comment(:friendly_benefits, :type, type_comment)
|
6
|
+
change_column_comment(:friendly_benefits, :preferences, preferences_comment)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def friendly_benefits_table_comment
|
13
|
+
<<~COMMENT
|
14
|
+
Single Table inheritance table. Represents what to do to an order when the linked promotion is eligible.
|
15
|
+
Promotions can have many benefits.
|
16
|
+
COMMENT
|
17
|
+
end
|
18
|
+
|
19
|
+
def type_comment
|
20
|
+
<<~COMMENT
|
21
|
+
A class name representing which benefit this represents.
|
22
|
+
Usually SolidusFriendlyPromotions::Benefits::Adjust{LineItem,Shipment}.
|
23
|
+
COMMENT
|
24
|
+
end
|
25
|
+
|
26
|
+
def preferences_comment
|
27
|
+
<<~COMMENT
|
28
|
+
Preferences for this benefit. Serialized YAML.
|
29
|
+
COMMENT
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class UpdateColumnCommentsForConditions < ActiveRecord::Migration[7.1]
|
2
|
+
def up
|
3
|
+
if connection.supports_comments?
|
4
|
+
change_table_comment(:friendly_conditions, friendly_conditions_table_comment)
|
5
|
+
change_column_comment(:friendly_conditions, :benefit_id, benefit_id_comment)
|
6
|
+
change_column_comment(:friendly_conditions, :preferences, preferences_comment)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def friendly_conditions_table_comment
|
13
|
+
<<~COMMENT
|
14
|
+
Represents a promotion benefit condition. A promotion benefit may have many conditions, which determine whether the benefit is eligible.
|
15
|
+
All conditions must be eligible for the benefit to be eligible. If there are no conditions, the benefit is always eligible.
|
16
|
+
COMMENT
|
17
|
+
end
|
18
|
+
|
19
|
+
def benefit_id_comment
|
20
|
+
<<~COMMENT
|
21
|
+
Foreign key to the friendly_benefits table.
|
22
|
+
COMMENT
|
23
|
+
end
|
24
|
+
|
25
|
+
def preferences_comment
|
26
|
+
<<~COMMENT
|
27
|
+
Preferences for this promotion condition. Serialized YAML column with preferences for this promotion condition.
|
28
|
+
COMMENT
|
29
|
+
end
|
30
|
+
end
|