Sha256: e1ed057ccee6e3d7f7dff5f05e945d646a5e1ebc3eb58fe73e0e70a84e756730

Contents?: true

Size: 805 Bytes

Versions: 7

Compression:

Stored size: 805 Bytes

Contents

# frozen_string_literal: true

require_dependency "spree/calculator"

module SolidusFriendlyPromotions
  module Calculators
    class FlexiRate < Spree::Calculator
      include PromotionCalculator

      preference :first_item, :decimal, default: 0
      preference :additional_item, :decimal, default: 0
      preference :max_items, :integer, default: 0
      preference :currency, :string, default: -> { Spree::Config[:currency] }

      def compute(object)
        items_count = object.quantity
        items_count = [items_count, preferred_max_items].min unless preferred_max_items.zero?

        return BigDecimal("0") if items_count == 0

        additional_items_count = items_count - 1
        preferred_first_item + preferred_additional_item * additional_items_count
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
solidus_friendly_promotions-1.9.3 app/models/solidus_friendly_promotions/calculators/flexi_rate.rb
solidus_friendly_promotions-1.9.2 app/models/solidus_friendly_promotions/calculators/flexi_rate.rb
solidus_friendly_promotions-1.9.1 app/models/solidus_friendly_promotions/calculators/flexi_rate.rb
solidus_friendly_promotions-1.9.0 app/models/solidus_friendly_promotions/calculators/flexi_rate.rb
solidus_friendly_promotions-1.0.0 app/models/solidus_friendly_promotions/calculators/flexi_rate.rb
solidus_friendly_promotions-1.0.0.rc.3 app/models/solidus_friendly_promotions/calculators/flexi_rate.rb
solidus_friendly_promotions-1.0.0.rc.2 app/models/solidus_friendly_promotions/calculators/flexi_rate.rb