solidus_friendly_promotions 1.0.1 → 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/CHANGELOG.md +15 -0
- data/Gemfile +1 -1
- 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 +3 -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/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 -11
- 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 +14 -43
- 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/promotions/_form.html.erb +4 -4
- 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 +128 -94
- 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 +114 -86
- 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
@@ -0,0 +1,9 @@
|
|
1
|
+
<p>
|
2
|
+
<%= condition.class.human_attribute_name(:description) %>
|
3
|
+
</p>
|
4
|
+
<div class="form-group">
|
5
|
+
<%= label_tag "#{param_prefix}[store_ids][]", Spree::Store.model_name.human(count: :other) %>
|
6
|
+
<%= select_tag "#{param_prefix}[store_ids][]",
|
7
|
+
options_from_collection_for_select(Spree::Store.all, :id, :name, condition.store_ids),
|
8
|
+
multiple: true, is: "select-two", class: "fullwidth" %>
|
9
|
+
</div>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<p>
|
2
|
+
<%= condition.class.human_attribute_name(:description) %>
|
3
|
+
</p>
|
4
|
+
<%= fields_for param_prefix, condition do |form| %>
|
5
|
+
<div class="field taxons_condition_taxons">
|
6
|
+
<%= form.label :taxon_ids_string, t('solidus_friendly_promotions.taxon_condition.choose_taxons') %>
|
7
|
+
<%= form.hidden_field :taxon_ids_string, value: condition.taxon_ids.join(","), is: "taxon-picker", class: "fullwidth" %>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class="form-group">
|
11
|
+
<%
|
12
|
+
match_policy_options = options_for_select(
|
13
|
+
SolidusFriendlyPromotions::Conditions::Taxon::MATCH_POLICIES.map { |s| [t("solidus_friendly_promotions.taxon_condition.match_#{s}"),s] },
|
14
|
+
condition.preferred_match_policy
|
15
|
+
)
|
16
|
+
%>
|
17
|
+
<% select = form.select :preferred_match_policy, match_policy_options %>
|
18
|
+
<%= form.label :preferred_match_policy, t('solidus_friendly_promotions.taxon_condition.label', select: select).html_safe %>
|
19
|
+
</label>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div class="form-group">
|
23
|
+
<%= form.label :preferred_line_item_applicable do %>
|
24
|
+
<%= form.check_box :preferred_line_item_applicable %>
|
25
|
+
<%= condition.class.human_attribute_name(:preferred_line_item_applicable) %>
|
26
|
+
<% end %>
|
27
|
+
</div>
|
28
|
+
<% end %>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<p>
|
2
|
+
<%= condition.class.human_attribute_name(:description) %>
|
3
|
+
</p>
|
4
|
+
<div class="form-group">
|
5
|
+
<label><%= t('solidus_friendly_promotions.user_condition.choose_users') %></label><br>
|
6
|
+
<input type='hidden' name='<%= param_prefix %>[user_ids_string]' is="user-picker" class='fullwidth' value='<%= condition.user_ids.join(",") %>'>
|
7
|
+
</div>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<p>
|
2
|
+
<%= condition.class.human_attribute_name(:description) %>
|
3
|
+
</p>
|
4
|
+
<div class="form-group">
|
5
|
+
<%= label_tag "#{param_prefix}_preferred_role_ids", t('solidus_friendly_promotions.user_role_condition.choose_roles') %>
|
6
|
+
<%= select_tag "#{param_prefix}[preferred_role_ids]",
|
7
|
+
options_from_collection_for_select(
|
8
|
+
Spree::Role.all, :id, :name, condition.preferred_role_ids
|
9
|
+
), class: 'fullwidth', is: 'select-two', multiple: true %>
|
10
|
+
</div>
|
11
|
+
<div class="form-group">
|
12
|
+
<label>
|
13
|
+
<%= t('solidus_friendly_promotions.user_role_condition.label', select: select_tag("#{param_prefix}[preferred_match_policy]", options_for_select(SolidusFriendlyPromotions::Conditions::UserRole::MATCH_POLICIES.map{ |s| [t("solidus_friendly_promotions.user_role_condition.match_#{s}"),s] }, condition.preferred_match_policy), { class: 'custom-select'})).html_safe %>
|
14
|
+
</label>
|
15
|
+
</div>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<div class="fullwidth promo-condition-option-value d-flex align-content-stretch mb-3">
|
2
|
+
<div class="mr-2" style="flex-grow: 1;">
|
3
|
+
<input
|
4
|
+
is="product-picker"
|
5
|
+
class="w-100"
|
6
|
+
data-action="select2Change->product-option-values#propagate_product_id_to_value_input"
|
7
|
+
type="hidden"
|
8
|
+
value="<%= product_option_values[0] %>"
|
9
|
+
>
|
10
|
+
</div>
|
11
|
+
<div class="mr-2 ml-2" style="flex-grow: 1;">
|
12
|
+
<input
|
13
|
+
is="option-value-picker"
|
14
|
+
class="fullwidth"
|
15
|
+
name="<%= form.object_name %>[preferred_eligible_values][<%= product_option_values[0] %>]"
|
16
|
+
type="hidden"
|
17
|
+
value="<%= product_option_values[1].join(",") %>"
|
18
|
+
>
|
19
|
+
</div>
|
20
|
+
<a class="fa fa-trash remove p-2" data-action="click->product-option-values#remove_row"></a>
|
21
|
+
</div>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<div class="card bg-light mb-3 ">
|
2
|
+
<div class="card-header">
|
3
|
+
<%= condition.class.model_name.human %>
|
4
|
+
<span class="float-right">
|
5
|
+
<% if can?(:destroy, condition) %>
|
6
|
+
<%= link_to_with_icon 'trash', '', solidus_friendly_promotions.admin_promotion_benefit_condition_path(@promotion, condition.benefit, condition), method: :delete, class: 'delete' %>
|
7
|
+
<% end %>
|
8
|
+
</span>
|
9
|
+
</div>
|
10
|
+
<div class="card-body">
|
11
|
+
<%= form_with model: condition, scope: :condition, url: solidus_friendly_promotions.admin_promotion_benefit_condition_path(@promotion, condition.benefit, condition), method: :patch do |form| %>
|
12
|
+
<% param_prefix = "promotion[conditions_attributes][#{condition.id}]" %>
|
13
|
+
<%= hidden_field_tag "#{param_prefix}[id]", condition.id %>
|
14
|
+
<%= render partial: "spree/shared/error_messages", locals: { target: condition } %>
|
15
|
+
<%= render condition, condition: condition, param_prefix: "condition", form: form %>
|
16
|
+
|
17
|
+
<% if condition.updateable? %>
|
18
|
+
<div class="row">
|
19
|
+
<div class="col-12">
|
20
|
+
<%= form.submit(t(:update, scope: [:solidus_friendly_promotions, :crud]), class: "btn btn-secondary float-right") %>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
<% end %>
|
24
|
+
<% end %>
|
25
|
+
</div>
|
26
|
+
</div>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<%= turbo_frame_tag condition.benefit, "new_condition" do %>
|
2
|
+
<div class="card bg-light mb-3">
|
3
|
+
<div class="card-header">
|
4
|
+
<%= t(:add_condition, scope: :solidus_friendly_promotions) %>
|
5
|
+
</div>
|
6
|
+
<div class="card-body">
|
7
|
+
<%= render 'solidus_friendly_promotions/admin/conditions/type_select', benefit: condition.benefit %>
|
8
|
+
<% flash.each do |severity, message| %>
|
9
|
+
<%= content_tag(:div, "", data: { controller: :flash, severity: severity, message: message }) %>
|
10
|
+
<% end %>
|
11
|
+
<% if condition.valid? %>
|
12
|
+
<%= form_with model: condition, scope: "condition", url: solidus_friendly_promotions.admin_promotion_benefit_conditions_path(@promotion, condition.benefit), data: { turbo: false } do |form| %>
|
13
|
+
<%= hidden_field_tag "condition[type]", condition.class.name %>
|
14
|
+
<%= render condition, condition: condition, param_prefix: "condition", form: form %>
|
15
|
+
|
16
|
+
<div class="row">
|
17
|
+
<div class="col-12">
|
18
|
+
<%= form.submit(t(:add, scope: [:solidus_friendly_promotions, :crud]), class: "btn btn-secondary float-right") %>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<% end %>
|
23
|
+
<% end %>
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
<% end %>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<%= form_with(
|
2
|
+
model: @condition || benefit.conditions.build,
|
3
|
+
scope: :condition,
|
4
|
+
url: solidus_friendly_promotions.new_admin_promotion_benefit_condition_path(@promotion, benefit),
|
5
|
+
method: :get,
|
6
|
+
class: "mb-3"
|
7
|
+
) do |form| %>
|
8
|
+
<%= form.label :type %>
|
9
|
+
<%= admin_hint SolidusFriendlyPromotions::Condition.human_attribute_name(:type), t(:conditions, scope: [:solidus_friendly_promotions, :hints, "solidus_friendly_promotions/benefit"]) %>
|
10
|
+
<%=
|
11
|
+
form.select :type,
|
12
|
+
options_for_condition_types(benefit, @condition),
|
13
|
+
{
|
14
|
+
include_blank: t(:choose_condition, scope: 'solidus_friendly_promotions')
|
15
|
+
},
|
16
|
+
class: 'custom-select fullwidth',
|
17
|
+
onchange: 'this.form.requestSubmit()',
|
18
|
+
required: true
|
19
|
+
%>
|
20
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "new_condition", condition: @condition %>
|
data/app/views/solidus_friendly_promotions/admin/promotion_code_batches/_form_fields.html.erb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
<div class="
|
1
|
+
<div class="form-group">
|
2
2
|
<%= batch.label :base_code, class: "required" %>
|
3
3
|
<%= batch.text_field :base_code, class: "fullwidth", required: true %>
|
4
4
|
</div>
|
5
|
-
<div class="
|
5
|
+
<div class="form-group">
|
6
6
|
<%= batch.label :number_of_codes, class: "required" %>
|
7
7
|
<%= batch.number_field :number_of_codes, class: "fullwidth", min: 1, required: true %>
|
8
8
|
</div>
|
9
|
-
<div class="
|
9
|
+
<div class="form-group">
|
10
10
|
<%= batch.label :join_characters %>
|
11
11
|
<%= batch.text_field :join_characters, class: "fullwidth" %>
|
12
12
|
</div>
|
13
13
|
<% unless promotion_id %>
|
14
|
-
<div class="
|
14
|
+
<div class="form-group">
|
15
15
|
<%= f.label :per_code_usage_limit %>
|
16
16
|
<%= f.text_field :per_code_usage_limit, class: "fullwidth" %>
|
17
17
|
</div>
|
18
18
|
<% end %>
|
19
|
-
<div class="
|
19
|
+
<div class="form-group">
|
20
20
|
<%= batch.label :email %>
|
21
21
|
<%= batch.text_field :email, class: "fullwidth" %>
|
22
22
|
</div>
|
@@ -49,7 +49,7 @@
|
|
49
49
|
<% end %>
|
50
50
|
<% end %>
|
51
51
|
|
52
|
-
<div id="starts_at_field" class="
|
52
|
+
<div id="starts_at_field" class="form-group">
|
53
53
|
<%= f.label :starts_at %>
|
54
54
|
<%= f.field_hint :starts_at %>
|
55
55
|
<%=
|
@@ -61,7 +61,7 @@
|
|
61
61
|
%>
|
62
62
|
</div>
|
63
63
|
|
64
|
-
<div id="expires_at_field" class="
|
64
|
+
<div id="expires_at_field" class="form-group">
|
65
65
|
<%= f.label :expires_at %>
|
66
66
|
<%= f.field_hint :expires_at %>
|
67
67
|
<%=
|
@@ -73,7 +73,7 @@
|
|
73
73
|
data: { :'enable-time' => true, :'default-hour' => 0 }
|
74
74
|
%>
|
75
75
|
</div>
|
76
|
-
<div class="
|
76
|
+
<div class="form-group">
|
77
77
|
<%= f.field_container :lane do %>
|
78
78
|
<%= f.label :lane %><br>
|
79
79
|
<%=
|
@@ -109,7 +109,7 @@
|
|
109
109
|
|
110
110
|
<div class="col-4">
|
111
111
|
<% if f.object.new_record? %>
|
112
|
-
<div id="promotion_single_code" class="
|
112
|
+
<div id="promotion_single_code" class="form-group">
|
113
113
|
<%= label_tag :single_code, SolidusFriendlyPromotions::PromotionCode.model_name.human %>
|
114
114
|
<%= text_field_tag :single_code, @promotion.codes.first.try!(:value), class: "fullwidth", disabled: f.object.apply_automatically || f.object.path.present? %>
|
115
115
|
</div>
|
@@ -7,28 +7,28 @@
|
|
7
7
|
<%= search_form_for [:admin, search] do |f| %>
|
8
8
|
<div class="row">
|
9
9
|
<div class="col-4">
|
10
|
-
<div class="
|
10
|
+
<div class="form-group">
|
11
11
|
<%= label_tag :q_name_cont, SolidusFriendlyPromotions::Promotion.human_attribute_name(:name) %>
|
12
12
|
<%= f.text_field :name_cont, tabindex: 1 %>
|
13
13
|
</div>
|
14
14
|
</div>
|
15
15
|
|
16
16
|
<div class="col-4">
|
17
|
-
<div class="
|
17
|
+
<div class="form-group">
|
18
18
|
<%= label_tag :q_customer_label_cont, SolidusFriendlyPromotions::Promotion.human_attribute_name(:customer_label) %>
|
19
19
|
<%= f.text_field :customer_label_cont, tabindex: 1 %>
|
20
20
|
</div>
|
21
21
|
</div>
|
22
22
|
|
23
23
|
<div class="col-2">
|
24
|
-
<div class="
|
24
|
+
<div class="form-group">
|
25
25
|
<%= label_tag :q_codes_value_cont, SolidusFriendlyPromotions::Promotion.human_attribute_name(:code) %>
|
26
26
|
<%= f.text_field :codes_value_cont, tabindex: 1 %>
|
27
27
|
</div>
|
28
28
|
</div>
|
29
29
|
|
30
30
|
<div class="col-2">
|
31
|
-
<div class="
|
31
|
+
<div class="form-group">
|
32
32
|
<%= label_tag :q_path_cont, SolidusFriendlyPromotions::Promotion.human_attribute_name(:path) %>
|
33
33
|
<%= f.text_field :path_cont, tabindex: 1 %>
|
34
34
|
</div>
|
@@ -53,14 +53,14 @@
|
|
53
53
|
</div>
|
54
54
|
|
55
55
|
<div class="col-2">
|
56
|
-
<div class="
|
56
|
+
<div class="form-group">
|
57
57
|
<%= label_tag :q_promotion_category_id_eq, SolidusFriendlyPromotions::PromotionCategory.model_name.human %><br>
|
58
58
|
<%= f.collection_select(:promotion_category_id_eq, @promotion_categories, :id, :name, { include_blank: t(:all, scope: :spree) }, { class: 'custom-select fullwidth' }) %>
|
59
59
|
</div>
|
60
60
|
</div>
|
61
61
|
|
62
62
|
<div class="col-2">
|
63
|
-
<div class="
|
63
|
+
<div class="form-group">
|
64
64
|
<%= label_tag :q_lane_eq, SolidusFriendlyPromotions::Promotion.human_attribute_name(:lane) %><br>
|
65
65
|
<%= f.select(:lane_eq, SolidusFriendlyPromotions::Promotion.lane_options, { include_blank: t(:all, scope: :spree) }, { class: 'custom-select fullwidth' }) %>
|
66
66
|
</div>
|
@@ -5,6 +5,7 @@
|
|
5
5
|
|
6
6
|
<%= content_for :head do %>
|
7
7
|
<%= javascript_importmap_tags "solidus_friendly_promotions", importmap: SolidusFriendlyPromotions.importmap %>
|
8
|
+
<%#= stylesheet_link_tag 'solidus_friendly_promotions/promotions' %>
|
8
9
|
<% end %>
|
9
10
|
|
10
11
|
<% content_for :page_actions do %>
|
@@ -28,48 +29,13 @@
|
|
28
29
|
<% end %>
|
29
30
|
<% end %>
|
30
31
|
|
31
|
-
|
32
32
|
<fieldset>
|
33
|
-
<legend align="center"><%= t(
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
<%= turbo_frame_tag @promotion, "new_order_promotion_rule" do %>
|
38
|
-
<%= link_to t(:add_rule, scope: :solidus_friendly_promotions), solidus_friendly_promotions.new_admin_promotion_promotion_rule_path(@promotion, level: :order), class: 'btn btn-secondary' %>
|
39
|
-
<% end %>
|
40
|
-
</fieldset>
|
41
|
-
|
42
|
-
<div class="row">
|
43
|
-
<div class="col-12">
|
44
|
-
<%= turbo_frame_tag @promotion, "new_promotion_action" do %>
|
45
|
-
<%= link_to t(:add_action, scope: :solidus_friendly_promotions), solidus_friendly_promotions.new_admin_promotion_promotion_action_path(@promotion), class: 'btn btn-secondary' %>
|
33
|
+
<legend align="center"><%= t("benefits", scope: :solidus_friendly_promotions) %></legend>
|
34
|
+
<% if @promotion.benefits.any? %>
|
35
|
+
<%= render partial: 'solidus_friendly_promotions/admin/benefits/benefit', collection: @promotion.benefits %>
|
46
36
|
<% end %>
|
47
|
-
</div>
|
48
|
-
</div>
|
49
37
|
|
50
|
-
|
51
|
-
|
52
|
-
<% if promotion_actions_by_level(@promotion, level).any? %>
|
53
|
-
<div class="col-<%= level == :order ? 12 : 6 %>">
|
54
|
-
<fieldset>
|
55
|
-
<legend align="center"><%= t("#{level}_actions", scope: :solidus_friendly_promotions) %></legend>
|
56
|
-
|
57
|
-
<%= render partial: 'solidus_friendly_promotions/admin/promotion_actions/promotion_action', collection: promotion_actions_by_level(@promotion, level), locals: {} %>
|
58
|
-
</fieldset>
|
59
|
-
</div>
|
60
|
-
<% if level != :order %>
|
61
|
-
<div class="col-6">
|
62
|
-
<fieldset>
|
63
|
-
<legend align="center"><%= t("#{level}_rules", scope: :solidus_friendly_promotions) %></legend>
|
64
|
-
|
65
|
-
<%= render partial: 'solidus_friendly_promotions/admin/promotion_rules/promotion_rule', collection: promotion_rules_by_level(@promotion, level), locals: { level: level } %>
|
66
|
-
|
67
|
-
<%= turbo_frame_tag @promotion, "new_#{level}_promotion_rule" do %>
|
68
|
-
<%= link_to t(:add_rule, scope: :solidus_friendly_promotions), solidus_friendly_promotions.new_admin_promotion_promotion_rule_path(@promotion, level: level), class: 'btn btn-secondary' %>
|
69
|
-
<% end %>
|
70
|
-
</fieldset>
|
71
|
-
</div>
|
72
|
-
<% end %>
|
38
|
+
<%= turbo_frame_tag @promotion, "new_benefit" do %>
|
39
|
+
<%= link_to t(:add_benefit, scope: :solidus_friendly_promotions), solidus_friendly_promotions.new_admin_promotion_benefit_path(@promotion), class: 'btn btn-secondary' %>
|
73
40
|
<% end %>
|
74
|
-
|
75
|
-
</div>
|
41
|
+
</fieldset>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<% amount_attr ||= :amount %>
|
2
|
+
<% currency_attr ||= :currency %>
|
3
|
+
<% currency ||= nil %>
|
4
|
+
<% required ||= nil %>
|
5
|
+
|
6
|
+
<number-with-currency class="input-group number-with-currency <%= "number-with-currency-with-select" unless currency %>">
|
7
|
+
<div class="input-group-prepend">
|
8
|
+
<span class="input-group-text number-with-currency-symbol"></span>
|
9
|
+
</div>
|
10
|
+
<%= f.text_field amount_attr, value: number_to_currency(f.object.public_send(amount_attr), unit: '', delimiter: ''), class: 'form-control number-with-currency-amount', required: required %>
|
11
|
+
<% if currency %>
|
12
|
+
<div class="input-group-append">
|
13
|
+
<span class="input-group-text number-with-currency-addon" data-currency="<%= currency %>">
|
14
|
+
<%= ::Money::Currency.find(currency).iso_code %>
|
15
|
+
</span>
|
16
|
+
</div>
|
17
|
+
<% else %>
|
18
|
+
<%= f.select currency_attr, Spree::Config.available_currencies.map(&:iso_code), {selected: f.object.send(currency_attr) || Spree::Config.currency}, {required: required, class: 'number-with-currency-select'} %>
|
19
|
+
<% end %>
|
20
|
+
</number-with-currency>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<% label = local_assigns[:label].presence %>
|
2
|
+
<% html_options = local_assigns[:html_options] || {} %>
|
3
|
+
|
4
|
+
<div class="form-group">
|
5
|
+
<label>
|
6
|
+
<% if local_assigns[:form] %>
|
7
|
+
<%= form.check_box attribute, html_options %>
|
8
|
+
<% else %>
|
9
|
+
<%= hidden_field_tag name, 0 %>
|
10
|
+
<%= check_box_tag name, 1, value, html_options %>
|
11
|
+
<% end %>
|
12
|
+
<%= label || form.object.class.human_attribute_name(attribute) %>
|
13
|
+
</label>
|
14
|
+
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<% label = local_assigns[:label].presence %>
|
2
|
+
<% html_options = {class: 'input_decimal fullwidth'}.update(local_assigns[:html_options] || {}) %>
|
3
|
+
|
4
|
+
<div class="form-group">
|
5
|
+
<% if local_assigns[:form] %>
|
6
|
+
<%= form.label attribute, label %>
|
7
|
+
<%= form.text_field attribute, html_options %>
|
8
|
+
<% else %>
|
9
|
+
<%= label_tag name, label %>
|
10
|
+
<%= text_field_tag name, value, html_options %>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
data/app/views/solidus_friendly_promotions/admin/shared/preference_fields/_encrypted_string.html.erb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
<% label = local_assigns[:label].presence %>
|
2
|
+
<% html_options = {class: 'input_string fullwidth'}.merge(local_assigns[:html_options] || {}) %>
|
3
|
+
|
4
|
+
<div class="form-group">
|
5
|
+
<% if local_assigns[:form] %>
|
6
|
+
<%= form.label attribute, label %>
|
7
|
+
<%= form.text_field attribute, html_options %>
|
8
|
+
<% else %>
|
9
|
+
<%= label_tag name, label %>
|
10
|
+
<%= text_field_tag name, value, html_options %>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<% label = local_assigns[:label].presence %>
|
2
|
+
<% html_options = {class: 'input_integer fullwidth'}.update(local_assigns[:html_options] || {}) %>
|
3
|
+
|
4
|
+
<div class="form-group">
|
5
|
+
<% if local_assigns[:form] %>
|
6
|
+
<%= form.label attribute, label %>
|
7
|
+
<%= form.number_field attribute, html_options %>
|
8
|
+
<% else %>
|
9
|
+
<%= label_tag name, label %>
|
10
|
+
<%= number_field_tag name, value, html_options %>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<% label = local_assigns[:label].presence %>
|
2
|
+
<% html_options = {class: 'password_string fullwidth'}.update(local_assigns[:html_options] || {}) %>
|
3
|
+
|
4
|
+
<div class="form-group">
|
5
|
+
<% if local_assigns[:form] %>
|
6
|
+
<%= form.label attribute, label %>
|
7
|
+
<%= form.password_field attribute, html_options %>
|
8
|
+
<% else %>
|
9
|
+
<%= label_tag name, label %>
|
10
|
+
<%= password_field_tag name, value, html_options %>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<% label = local_assigns[:label].presence %>
|
2
|
+
<% html_options = {class: 'input_string fullwidth'}.update(local_assigns[:html_options] || {}) %>
|
3
|
+
|
4
|
+
<div class="form-group">
|
5
|
+
<% if local_assigns[:form] %>
|
6
|
+
<%= form.label attribute, label %>
|
7
|
+
<%= form.text_field attribute, html_options %>
|
8
|
+
<% else %>
|
9
|
+
<%= label_tag name, label %>
|
10
|
+
<%= text_field_tag name, value, html_options %>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<% label = local_assigns[:label].presence %>
|
2
|
+
<% html_options = {cols: 85, rows: 15}.update(local_assigns[:html_options] || {}) %>
|
3
|
+
|
4
|
+
<div class="form-group">
|
5
|
+
<% if local_assigns[:form] %>
|
6
|
+
<%= form.label attribute, label %>
|
7
|
+
<%= form.text_area attribute, html_options %>
|
8
|
+
<% else %>
|
9
|
+
<%= label_tag name, label %>
|
10
|
+
<%= text_area_tag name, value, html_options %>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
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
|