Sha256: e94071fe0bf353af7463b91a1e8cb18a7756b931376ff31316cd1012b0e00d90

Contents?: true

Size: 836 Bytes

Versions: 33

Compression:

Stored size: 836 Bytes

Contents

module Spree
  module PromotionHandler
    # Used for activating promotions with shipping rules
    class FreeShipping
      attr_reader :order, :order_promo_ids, :store
      attr_accessor :error, :success

      def initialize(order)
        @order = order
        @store = order.store
        @order_promo_ids = order.promotions.ids
      end

      def activate
        promotions.each do |promotion|
          next if promotion.code.present? && !order_promo_ids.include?(promotion.id)

          promotion.activate(order: order) if promotion.eligible?(order)
        end
      end

      private

      def promotions
        store.promotions.active.joins(:promotion_actions).
          where(Spree::PromotionAction.table_name => { type: 'Spree::Promotion::Actions::FreeShipping' }, path: nil).distinct
      end
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
spree_core-4.10.1 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.10.0 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.9.0 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.8.3 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.8.2 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.7.3 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.6.6 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.5.5 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.3.3 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.4.1 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.5.4 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.6.5 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.7.2 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.7.1 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.6.4 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.7.0 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.6.3 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.6.2 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.6.1 app/models/spree/promotion_handler/free_shipping.rb
spree_core-4.6.0 app/models/spree/promotion_handler/free_shipping.rb