Sha256: c067723a0cfda61794b4e067e106e45ca91e7a17980d1779a23c333fbdd7782e

Contents?: true

Size: 892 Bytes

Versions: 66

Compression:

Stored size: 892 Bytes

Contents

# frozen_string_literal: true

require_dependency 'spree/calculator'

module Spree
  class Calculator::FlexiRate < Calculator
    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 self.available?(_object)
      Spree::Deprecation.warn('Spree::Calculator::FlexiRate::available is DEPRECATED. Use the instance method instead.')
      true
    end

    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

Version data entries

66 entries across 66 versions & 2 rubygems

Version Path
solidus_core-2.11.17 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.16 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.15 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.14 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.13 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.12 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.11 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.10.5 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.10 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.9 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.8 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.7 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.6 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.5 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.4 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.3 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.2 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.1 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.10.3 app/models/spree/calculator/flexi_rate.rb
solidus_core-2.11.0 app/models/spree/calculator/flexi_rate.rb