Class: Calculator

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/calculator.rb

Defined Under Namespace

Classes: FlatPercentItemTotal, FlatRate, FlexiRate, PerItem, PriceSack, SalesTax, Vat

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.calculatorsObject

Returns all calculators applicable for kind of work If passed nil, will return only general calculators



29
30
31
# File 'app/models/calculator.rb', line 29

def self.calculators
  Rails.application.config.spree.calculators.all
end

.descriptionObject

overwrite to provide description for your calculators



12
13
14
# File 'app/models/calculator.rb', line 12

def self.description
  "Base Caclulator"
end

.register(*klasses) ⇒ Object



18
19
20
21
22
23
24
25
# File 'app/models/calculator.rb', line 18

def self.register(*klasses)
  # @@calculators.add(self)
  # klasses.each do |klass|
  #   klass = klass.constantize if klass.is_a?(String)
  #   klass.register_calculator(self)
  # end
  # self
end

Instance Method Details

#available?(object) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
# File 'app/models/calculator.rb', line 41

def available?(object)
  return true #should be overridden if needed
end

#compute(something = nil) ⇒ Object

This method must be overriden in concrete calculator.

It should return amount computed based on #calculable and/or optional parameter

Raises:

  • (NotImplementedError)


7
8
9
# File 'app/models/calculator.rb', line 7

def compute(something=nil)
  raise(NotImplementedError, "please use concrete calculator")
end

#descriptionObject



37
38
39
# File 'app/models/calculator.rb', line 37

def description
  self.class.description
end

#to_sObject



33
34
35
# File 'app/models/calculator.rb', line 33

def to_s
  self.class.name.titleize.gsub("Calculator\/", "")
end