Sha256: 9fa75776e2392e34c8a6a0c035f67c3f147c2595a6dd2133ff4e21d06f350f21
Contents?: true
Size: 864 Bytes
Versions: 7
Compression:
Stored size: 864 Bytes
Contents
module Spree class PromotionChooser def initialize(adjustments) @adjustments = adjustments end # Picks the best promotion from this set of adjustments, all others are # marked as ineligible. # # @return [BigDecimal] The amount of the best adjustment def update if best_promotion_adjustment @adjustments.select(&:eligible?).each do |adjustment| next if adjustment == best_promotion_adjustment adjustment.update_columns(eligible: false) end best_promotion_adjustment.amount else BigDecimal.new('0') end end private # @return The best promotion from this set of adjustments. def best_promotion_adjustment @best_promotion_adjustment ||= @adjustments.select(&:eligible?).min_by do |a| [a.amount, -a.id] end end end end
Version data entries
7 entries across 7 versions & 1 rubygems