Sha256: 13b53515690632f55d2bf1ec90341650dc739ea8e69b87c3d938696bd2e34508
Contents?: true
Size: 1.01 KB
Versions: 7
Compression:
Stored size: 1.01 KB
Contents
module Spree 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| current_quantity = order.quantity_of(item.variant) if current_quantity < item.quantity order.add_variant(item.variant, item.quantity - current_quantity) end 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 end
Version data entries
7 entries across 7 versions & 1 rubygems