Sha256: 107f457b2d84b325b48e2f4479d58b8241578f0e699cc47906fd0cd53adf9003

Contents?: true

Size: 756 Bytes

Versions: 3

Compression:

Stored size: 756 Bytes

Contents

module Spree
  class Promotion
    module Actions
      class FreeShipping < Spree::PromotionAction
        include Spree::AdjustmentSource

        def perform(payload = {})
          order = payload[:order]

          create_unique_adjustments(order, order.shipments)
        end

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

        # we need to persist 0 amount adjustment
        def create_adjustment(order, adjustable, included = false)
          amount = compute_amount(adjustable)

          adjustments.new(
            adjustable: adjustable,
            amount: amount,
            included: included,
            label: label,
            order: order
          ).save
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
spree_core-4.10.1 app/models/spree/promotion/actions/free_shipping.rb
spree_core-4.10.0 app/models/spree/promotion/actions/free_shipping.rb
spree_core-4.9.0 app/models/spree/promotion/actions/free_shipping.rb