Sha256: b9bf67a5f5eea7d03486e317771a6cad6cd9d57abc480fe68553af935a737c9e

Contents?: true

Size: 840 Bytes

Versions: 10

Compression:

Stored size: 840 Bytes

Contents

class Promotion::Actions::CreateLineItems < PromotionAction

  has_many :promotion_action_line_items, :foreign_key => 'promotion_action_id'

  attr_accessor :line_items_string

  def perform(options = {})
    return unless order = options[:order]
    promotion_action_line_items.each do |item|
      order.add_variant(item.variant, item.quantity)
    end
  end

  def line_items_string
    promotion_action_line_items.map { |li| "#{li.variant_id}x#{li.quantity}" }.join(',')
  end

  def line_items_string=(value)
    promotion_action_line_items.destroy_all
    value.to_s.split(',').each do |str|
      variant_id, quantity = str.split('x')
      if variant_id && quantity && variant = Variant.find_by_id(variant_id)
        promotion_action_line_items.create(:variant => variant, :quantity => quantity.to_i)
      end
    end
  end

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
spree_promo-0.70.7 app/models/promotion/actions/create_line_items.rb
spree_promo-0.70.6 app/models/promotion/actions/create_line_items.rb
spree_promo-0.70.5 app/models/promotion/actions/create_line_items.rb
spree_promo-0.70.4 app/models/promotion/actions/create_line_items.rb
spree_promo-0.70.3 app/models/promotion/actions/create_line_items.rb
spree_promo-0.70.2 app/models/promotion/actions/create_line_items.rb
spree_promo-0.70.1 app/models/promotion/actions/create_line_items.rb
spree_promo-0.70.0 app/models/promotion/actions/create_line_items.rb
spree_promo-0.70.0.rc2 app/models/promotion/actions/create_line_items.rb
spree_promo-0.70.RC1 app/models/promotion/actions/create_line_items.rb