Module: SolidusPromotions
- Defined in:
- app/models/solidus_promotions/calculators/distributed_amount.rb,
lib/solidus_promotions.rb,
lib/solidus_promotions/engine.rb,
lib/solidus_promotions/configuration.rb,
lib/solidus_promotions/promotion_map.rb,
app/models/solidus_promotions/benefit.rb,
app/models/solidus_promotions/condition.rb,
app/models/solidus_promotions/promotion.rb,
lib/solidus_promotions/promotion_migrator.rb,
lib/solidus_promotions/migrate_adjustments.rb,
app/models/solidus_promotions/item_discount.rb,
app/models/solidus_promotions/condition_user.rb,
app/models/solidus_promotions/order_adjuster.rb,
app/models/solidus_promotions/promotion_code.rb,
app/models/solidus_promotions/condition_store.rb,
app/models/solidus_promotions/condition_taxon.rb,
app/models/solidus_promotions/conditions/user.rb,
app/models/solidus_promotions/order_promotion.rb,
app/models/solidus_promotions/conditions/store.rb,
app/models/solidus_promotions/conditions/taxon.rb,
app/models/solidus_promotions/promotion_finder.rb,
app/models/solidus_promotions/condition_product.rb,
lib/solidus_promotions/migrate_order_promotions.rb,
app/models/solidus_promotions/conditions/product.rb,
app/models/solidus_promotions/eligibility_result.rb,
app/models/solidus_promotions/promotion_category.rb,
app/models/solidus_promotions/calculators/percent.rb,
app/models/solidus_promotions/eligibility_results.rb,
app/patches/models/solidus_promotions/order_patch.rb,
app/models/solidus_promotions/conditions/nth_order.rb,
app/models/solidus_promotions/conditions/user_role.rb,
app/models/solidus_promotions/promotion_advertiser.rb,
app/models/solidus_promotions/promotion_code_batch.rb,
lib/solidus_promotions/testing_support/factory_bot.rb,
app/models/solidus_promotions/calculators/flat_rate.rb,
app/models/solidus_promotions/conditions/item_total.rb,
app/helpers/solidus_promotions/admin/benefits_helper.rb,
app/jobs/solidus_promotions/promotion_code_batch_job.rb,
app/models/solidus_promotions/calculators/flexi_rate.rb,
app/models/solidus_promotions/conditions/first_order.rb,
app/models/solidus_promotions/promotion_handler/page.rb,
app/models/solidus_promotions/shipping_rate_discount.rb,
app/patches/models/solidus_promotions/shipment_patch.rb,
app/models/solidus_promotions/conditions/option_value.rb,
app/patches/models/solidus_promotions/line_item_patch.rb,
app/helpers/solidus_promotions/admin/conditions_helper.rb,
app/helpers/solidus_promotions/admin/promotions_helper.rb,
app/models/solidus_promotions/benefits/adjust_shipment.rb,
app/models/solidus_promotions/promotion_handler/coupon.rb,
app/patches/models/solidus_promotions/adjustment_patch.rb,
app/models/solidus_promotions/benefits/adjust_line_item.rb,
app/models/solidus_promotions/conditions/user_logged_in.rb,
app/models/solidus_promotions/calculators/tiered_percent.rb,
app/models/solidus_promotions/conditions/line_item_taxon.rb,
app/models/solidus_promotions/conditions/shipping_method.rb,
app/models/solidus_promotions/conditions/minimum_quantity.rb,
app/models/solidus_promotions/conditions/one_use_per_user.rb,
app/models/solidus_promotions/distributed_amounts_handler.rb,
app/patches/models/solidus_promotions/shipping_rate_patch.rb,
app/mailers/solidus_promotions/promotion_code_batch_mailer.rb,
app/models/concerns/solidus_promotions/discountable_amount.rb,
app/models/solidus_promotions/calculators/tiered_flat_rate.rb,
app/models/solidus_promotions/conditions/line_item_product.rb,
app/models/solidus_promotions/promotion_code/batch_builder.rb,
app/models/solidus_promotions/order_adjuster/discount_order.rb,
lib/generators/solidus_promotions/install/install_generator.rb,
app/models/solidus_promotions/order_adjuster/load_promotions.rb,
app/models/concerns/solidus_promotions/benefits/order_benefit.rb,
app/models/solidus_promotions/benefits/create_discounted_item.rb,
app/models/solidus_promotions/order_adjuster/choose_discounts.rb,
app/subscribers/solidus_promotions/order_promotion_subscriber.rb,
app/models/solidus_promotions/conditions/discounted_item_total.rb,
app/patches/models/solidus_promotions/order_recalculator_patch.rb,
lib/controllers/admin/solidus_promotions/promotions_controller.rb,
app/models/solidus_promotions/conditions/line_item_option_value.rb,
app/models/concerns/solidus_promotions/benefits/shipment_benefit.rb,
lib/controllers/backend/solidus_promotions/admin/base_controller.rb,
app/models/concerns/solidus_promotions/benefits/line_item_benefit.rb,
app/models/solidus_promotions/conditions/first_repeat_purchase_since.rb,
lib/controllers/backend/solidus_promotions/admin/benefits_controller.rb,
app/models/solidus_promotions/order_adjuster/persist_discounted_order.rb,
app/models/solidus_promotions/migration_support/order_promotion_syncer.rb,
lib/controllers/backend/solidus_promotions/admin/conditions_controller.rb,
lib/controllers/backend/solidus_promotions/admin/promotions_controller.rb,
app/models/concerns/solidus_promotions/calculators/promotion_calculator.rb,
app/models/concerns/solidus_promotions/conditions/order_level_condition.rb,
app/models/solidus_promotions/benefits/adjust_line_item_quantity_groups.rb,
lib/controllers/admin/solidus_promotions/promotion_categories_controller.rb,
app/models/concerns/solidus_promotions/conditions/shipment_level_condition.rb,
app/models/solidus_promotions/permission_sets/solidus_promotion_management.rb,
app/models/concerns/solidus_promotions/conditions/line_item_level_condition.rb,
lib/controllers/backend/solidus_promotions/admin/promotion_codes_controller.rb,
lib/controllers/backend/solidus_promotions/admin/promotion_categories_controller.rb,
app/models/solidus_promotions/calculators/tiered_percent_on_eligible_item_quantity.rb,
lib/controllers/backend/solidus_promotions/admin/promotion_code_batches_controller.rb,
app/models/concerns/solidus_promotions/conditions/line_item_applicable_order_level_condition.rb
Overview
This is a calculator for line item adjustment benefits. It accepts a line item and calculates its weighted adjustment amount based on the value of the preferred amount and the price of the other line items. More expensive line items will receive a greater share of the preferred amount.
Defined Under Namespace
Modules: AdjustmentPatch, Admin, Benefits, Calculators, Conditions, DiscountableAmount, Generators, LineItemPatch, MigrationSupport, OrderPatch, OrderRecalculatorPatch, PermissionSets, PromotionHandler, ShipmentPatch, ShippingRatePatch, TestingSupport Classes: Benefit, Condition, ConditionProduct, ConditionStore, ConditionTaxon, ConditionUser, Configuration, DistributedAmountsHandler, EligibilityResult, EligibilityResults, Engine, ItemDiscount, MigrateAdjustments, MigrateOrderPromotions, OrderAdjuster, OrderPromotion, OrderPromotionSubscriber, Promotion, PromotionAdvertiser, PromotionCategoriesController, PromotionCategory, PromotionCode, PromotionCodeBatch, PromotionCodeBatchJob, PromotionCodeBatchMailer, PromotionFinder, PromotionMigrator, PromotionsController, ShippingRateDiscount
Constant Summary collapse
- PROMOTION_MAP =
Note that the key in both the conditions and actions hash should be the class of the rule or action you want to map, while the value can be either a class or a lambda that returns a class. If you use a lambda, it will be called with the old action or rule as an argument.
{ conditions: { Spree::Promotion::Rules::ItemTotal => SolidusPromotions::Conditions::ItemTotal, Spree::Promotion::Rules::Product => SolidusPromotions::Conditions::Product, Spree::Promotion::Rules::User => SolidusPromotions::Conditions::User, Spree::Promotion::Rules::FirstOrder => SolidusPromotions::Conditions::FirstOrder, Spree::Promotion::Rules::UserLoggedIn => SolidusPromotions::Conditions::UserLoggedIn, Spree::Promotion::Rules::OneUsePerUser => SolidusPromotions::Conditions::OneUsePerUser, Spree::Promotion::Rules::Taxon => SolidusPromotions::Conditions::Taxon, Spree::Promotion::Rules::NthOrder => SolidusPromotions::Conditions::NthOrder, Spree::Promotion::Rules::OptionValue => SolidusPromotions::Conditions::OptionValue, Spree::Promotion::Rules::FirstRepeatPurchaseSince => SolidusPromotions::Conditions::FirstRepeatPurchaseSince, Spree::Promotion::Rules::UserRole => SolidusPromotions::Conditions::UserRole, Spree::Promotion::Rules::Store => SolidusPromotions::Conditions::Store }, actions: { Spree::Promotion::Actions::CreateAdjustment => ->(old_action) { calculator = case old_action.calculator when Spree::Calculator::FlatRate SolidusPromotions::Calculators::DistributedAmount.new(preferences: old_action.calculator.preferences) when Spree::Calculator::FlatPercentItemTotal SolidusPromotions::Calculators::Percent.new(preferred_percent: old_action.calculator.preferred_flat_percent) end SolidusPromotions::Benefits::AdjustLineItem.new( calculator: calculator ) }, Spree::Promotion::Actions::CreateItemAdjustments => ->(old_action) { preferences = old_action.calculator.preferences calculator = case old_action.calculator when Spree::Calculator::FlatRate SolidusPromotions::Calculators::FlatRate.new(preferences: preferences) when Spree::Calculator::PercentOnLineItem SolidusPromotions::Calculators::Percent.new(preferences: preferences) when Spree::Calculator::FlexiRate SolidusPromotions::Calculators::FlexiRate.new(preferences: preferences) when Spree::Calculator::DistributedAmount SolidusPromotions::Calculators::DistributedAmount.new(preferences: preferences) when Spree::Calculator::TieredFlatRate SolidusPromotions::Calculators::TieredFlatRate.new(preferences: preferences) when Spree::Calculator::TieredPercent SolidusPromotions::Calculators::TieredPercent.new(preferences: preferences) end SolidusPromotions::Benefits::AdjustLineItem.new( calculator: calculator ) }, Spree::Promotion::Actions::CreateQuantityAdjustments => ->(old_action) { preferences = old_action.calculator.preferences calculator = case old_action.calculator when Spree::Calculator::FlatRate SolidusPromotions::Calculators::FlatRate.new(preferences: preferences) when Spree::Calculator::PercentOnLineItem SolidusPromotions::Calculators::Percent.new(preferences: preferences) when Spree::Calculator::FlexiRate SolidusPromotions::Calculators::FlexiRate.new(preferences: preferences) when Spree::Calculator::DistributedAmount SolidusPromotions::Calculators::DistributedAmount.new(preferences: preferences) when Spree::Calculator::TieredFlatRate SolidusPromotions::Calculators::TieredFlatRate.new(preferences: preferences) when Spree::Calculator::TieredPercent SolidusPromotions::Calculators::TieredPercent.new(preferences: preferences) end SolidusPromotions::Benefits::AdjustLineItemQuantityGroups.new( preferred_group_size: old_action.preferred_group_size, calculator: calculator ) }, Spree::Promotion::Actions::FreeShipping => ->(_old_action) { SolidusPromotions::Benefits::AdjustShipment.new( calculator: SolidusPromotions::Calculators::Percent.new( preferred_percent: 100 ) ) } } }
Instance Attribute Summary collapse
-
#importmap ⇒ Object
JS Importmap instance.
Class Method Summary collapse
- .configuration ⇒ Object (also: config)
- .configure {|configuration| ... } ⇒ Object
- .table_name_prefix ⇒ Object
Instance Attribute Details
#importmap ⇒ Object
JS Importmap instance
32 33 34 |
# File 'lib/solidus_promotions.rb', line 32 def importmap @importmap end |
Class Method Details
.configuration ⇒ Object Also known as: config
115 116 117 |
# File 'lib/solidus_promotions/configuration.rb', line 115 def configuration @configuration ||= Configuration.new end |
.configure {|configuration| ... } ⇒ Object
121 122 123 |
# File 'lib/solidus_promotions/configuration.rb', line 121 def configure yield configuration end |
.table_name_prefix ⇒ Object
27 28 29 |
# File 'lib/solidus_promotions.rb', line 27 def self.table_name_prefix "solidus_promotions_" end |