Sha256: 85850fcc14feedc77a5a893534cba8bab123cc1a95736eb6bb0b204fde7cebb5

Contents?: true

Size: 864 Bytes

Versions: 28

Compression:

Stored size: 864 Bytes

Contents

module Valuation

  #
  # Anything with a :lifetime_value column and has_many orders can use this module.
  #
  module LifetimeValue
    extend ActiveSupport::Concern
    
    #
    # Includers can define a method called lifetime_orders which
    # will override this method.
    #
    # lifetime_orders should return the orders that this model wants to include in the calculation
    #  
    def lifetime_orders
      orders
    end
    
    #
    # Calculate the lifetime value of this model by summing the price of all items 
    # attached to orders attached to this person.  Save the value in lifetime_value.
    # Return the value
    #
    def calculate_lifetime_value
      self.lifetime_value = Item.where(:order_id => self.lifetime_orders).sum(Item.total_price_sql_sum).to_i
      self.save(:validate => false)
      self.lifetime_value
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
artfully_ose-1.2.0.pre.7 app/models/valuation/lifetime_value.rb
artfully_ose-1.2.0.pre.6 app/models/valuation/lifetime_value.rb
artfully_ose-1.2.0.pre.5 app/models/valuation/lifetime_value.rb
artfully_ose-1.2.0.pre.4 app/models/valuation/lifetime_value.rb
artfully_ose-1.2.0.pre.3 app/models/valuation/lifetime_value.rb
artfully_ose-1.2.0.pre.2 app/models/valuation/lifetime_value.rb
artfully_ose-1.2.0.pre.1 app/models/valuation/lifetime_value.rb
artfully_ose-1.2.0.pre app/models/valuation/lifetime_value.rb