Class: BillingLogic::ProrationCalculator
- Inherits:
-
Object
- Object
- BillingLogic::ProrationCalculator
- Defined in:
- lib/billing_logic/proration_calculator.rb
Instance Attribute Summary collapse
-
#billing_cycle ⇒ Object
Returns the value of attribute billing_cycle.
-
#date ⇒ Object
Returns the value of attribute date.
-
#price ⇒ Object
Returns the value of attribute price.
Instance Method Summary collapse
- #average_daily_price_for_billing_cycle(date = self.date) ⇒ Object
- #distance_from_date_in_days(date = self.date) ⇒ Object
-
#initialize(opts = {}) ⇒ ProrationCalculator
constructor
A new instance of ProrationCalculator.
- #prorate_from(date = self.date) ⇒ Object (also: #prorate)
Constructor Details
#initialize(opts = {}) ⇒ ProrationCalculator
Returns a new instance of ProrationCalculator.
4 5 6 7 8 |
# File 'lib/billing_logic/proration_calculator.rb', line 4 def initialize(opts = {}) self.billing_cycle = opts[:billing_cycle] self.price = opts[:price] self.date = opts[:date] end |
Instance Attribute Details
#billing_cycle ⇒ Object
Returns the value of attribute billing_cycle.
3 4 5 |
# File 'lib/billing_logic/proration_calculator.rb', line 3 def billing_cycle @billing_cycle end |
#date ⇒ Object
Returns the value of attribute date.
3 4 5 |
# File 'lib/billing_logic/proration_calculator.rb', line 3 def date @date end |
#price ⇒ Object
Returns the value of attribute price.
3 4 5 |
# File 'lib/billing_logic/proration_calculator.rb', line 3 def price @price end |
Instance Method Details
#average_daily_price_for_billing_cycle(date = self.date) ⇒ Object
20 21 22 |
# File 'lib/billing_logic/proration_calculator.rb', line 20 def average_daily_price_for_billing_cycle(date = self.date) (self.price / (self.billing_cycle.days_in_billing_cycle_including(date))) end |
#distance_from_date_in_days(date = self.date) ⇒ Object
16 17 18 |
# File 'lib/billing_logic/proration_calculator.rb', line 16 def distance_from_date_in_days(date = self.date) (date - self.billing_cycle.anniversary).abs end |
#prorate_from(date = self.date) ⇒ Object Also known as: prorate
10 11 12 13 |
# File 'lib/billing_logic/proration_calculator.rb', line 10 def prorate_from(date = self.date) return price if date == self.billing_cycle.anniversary average_daily_price_for_billing_cycle(date) * distance_from_date_in_days(date) end |