Sha256: a1c7bf18bdd1ff270f02dc4c12a621a262adfc156745fdb5fe028b8d6fe8bc82

Contents?: true

Size: 1.01 KB

Versions: 42

Compression:

Stored size: 1.01 KB

Contents

module Spree
  class Promotion
    module Actions
      class FreeShipping < Spree::PromotionAction
        def perform(payload={})
          order = payload[:order]
          results = order.shipments.map do |shipment|
            return false if promotion_credit_exists?(shipment)
            shipment.adjustments.create!(
              order: shipment.order, 
              amount: compute_amount(shipment),
              source: self,
              label: label,
            )
            true
          end
          # Did we actually end up applying any adjustments?
          # If so, then this action should be classed as 'successful'
          results.any? { |r| r == true }
        end

        def label
          "#{Spree.t(:promotion)} (#{promotion.name})"
        end

        def compute_amount(shipment)
          shipment.cost * -1
        end

        private

        def promotion_credit_exists?(shipment)
          shipment.adjustments.where(:source_id => self.id).exists?
        end
      end
    end
  end
end

Version data entries

42 entries across 42 versions & 1 rubygems

Version Path
spree_core-2.4.10 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.3.13 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.2.14 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.4.9 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.3.12 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.2.13 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.4.8 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.3.11 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.2.12 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.4.7 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.3.10 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.4.6 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.3.9 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.2.11 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.2.10 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.3.8 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.4.5 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.4.4 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.3.7 app/models/spree/promotion/actions/free_shipping.rb
spree_core-2.4.3 app/models/spree/promotion/actions/free_shipping.rb