Module: Workarea::Pricing
- Defined in:
- app/models/workarea/pricing.rb,
app/models/workarea/pricing/sku.rb,
app/models/workarea/pricing/price.rb,
app/models/workarea/pricing/request.rb,
app/models/workarea/pricing/discount.rb,
app/models/workarea/pricing/override.rb,
app/models/workarea/pricing/cache_key.rb,
app/models/workarea/pricing/calculator.rb,
app/models/workarea/pricing/collection.rb,
app/models/workarea/pricing/tax_applier.rb,
app/models/workarea/pricing/order_totals.rb,
app/models/workarea/pricing/discount/order.rb,
app/models/workarea/pricing/shipping_totals.rb,
app/models/workarea/pricing/tax_application.rb,
app/models/workarea/pricing/discount/product.rb,
app/models/workarea/pricing/item_tax_applier.rb,
app/models/workarea/pricing/discount/category.rb,
app/models/workarea/pricing/discount/shipping.rb,
app/models/workarea/pricing/price_distributor.rb,
app/models/workarea/pricing/discount/code_list.rb,
app/models/workarea/pricing/discount/free_gift.rb,
app/models/workarea/pricing/discount/collection.rb,
app/models/workarea/pricing/discount/redemption.rb,
app/models/workarea/pricing/discount/order_total.rb,
app/models/workarea/pricing/discount/reconcile_total.rb,
app/models/workarea/pricing/unsupported_segmentation.rb,
app/models/workarea/pricing/calculators/tax_calculator.rb,
app/models/workarea/pricing/discount/amount_calculator.rb,
app/models/workarea/pricing/discount/application_group.rb,
app/models/workarea/pricing/discount/buy_some_get_some.rb,
app/models/workarea/pricing/discount/product_attribute.rb,
app/models/workarea/pricing/calculators/item_calculator.rb,
app/models/workarea/pricing/discount/flat_or_percent_off.rb,
app/models/workarea/pricing/discount/conditions/user_tags.rb,
app/models/workarea/pricing/discount/generated_promo_code.rb,
app/models/workarea/pricing/discount/quantity_fixed_price.rb,
app/models/workarea/pricing/calculators/discount_calculator.rb,
app/models/workarea/pricing/discount/conditions/order_total.rb,
app/models/workarea/pricing/discount/conditions/promo_codes.rb,
app/models/workarea/pricing/calculators/overrides_calculator.rb,
app/models/workarea/pricing/discount/conditions/item_quantity.rb,
app/models/workarea/pricing/calculators/customizations_calculator.rb,
app/models/workarea/pricing/discount/product_attribute/item_qualifier.rb,
app/models/workarea/pricing/discount/quantity_fixed_price/item_shares.rb,
app/models/workarea/pricing/discount/buy_some_get_some/item_application.rb,
app/models/workarea/pricing/discount/buy_some_get_some/product_application.rb,
app/models/workarea/pricing/discount/buy_some_get_some/order_items_by_product.rb,
app/models/workarea/pricing/discount/quantity_fixed_price/application_calculator.rb
Defined Under Namespace
Modules: Calculator, Calculators, TaxApplication, UnsupportedSegmentation Classes: CacheKey, Collection, Discount, ItemTaxApplier, OrderTotals, Override, Price, PriceDistributor, Request, ShippingTotals, Sku, TaxApplier
Class Method Summary collapse
-
.find_shipping_discounts(order, shipping) ⇒ Array<PriceAdjustment>
Find the price adjustments for shipping discounts that would apply to a given order.
-
.perform(order, shippings = nil) ⇒ self
Build price adjustments and set order total prices.
-
.valid_promo_code?(promo_code, email = nil) ⇒ Boolean
Find whether a promo code is valid to apply.
Class Method Details
.find_shipping_discounts(order, shipping) ⇒ Array<PriceAdjustment>
Find the price adjustments for shipping discounts that would apply to a given order.
Used in Checkout::ShippingOptions to determine the prices post-discounting for available shipping methods.
30 31 32 33 34 |
# File 'app/models/workarea/pricing.rb', line 30 def self.find_shipping_discounts(order, shipping) request = Request.new(order, shipping) request.run request.shippings.first.price_adjustments.adjusting('shipping').discounts end |
.perform(order, shippings = nil) ⇒ self
Build price adjustments and set order total prices. Does nothing if the order isn’t valid.
9 10 11 12 13 14 15 16 17 18 |
# File 'app/models/workarea/pricing.rb', line 9 def self.perform(order, shippings = nil) shippings = Array(shippings) return self unless order.save && shippings.all?(&:save) request = Request.new(order, shippings) request.run request.save! self end |
.valid_promo_code?(promo_code, email = nil) ⇒ Boolean
Find whether a promo code is valid to apply
41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'app/models/workarea/pricing.rb', line 41 def self.valid_promo_code?(promo_code, email = nil) discounts = Discount .where(:promo_codes.in => [promo_code.downcase]) .to_a return true if discounts.any? do |discount| discount.active? && (email.blank? || !discount.single_use? || !discount.has_been_redeemed?(email)) end Discount::GeneratedPromoCode.valid_code?(promo_code) end |