Class: Financial::BalanceCalculation

Inherits:
Object
  • Object
show all
Defined in:
lib/financial/balance_calculation.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(account_instance) ⇒ BalanceCalculation

Returns a new instance of BalanceCalculation.



5
6
7
8
9
10
11
12
# File 'lib/financial/balance_calculation.rb', line 5

def initialize()
  @balances = []
  @account = 
  @costs = @account.all_costs
  @revenues = @account.revenues
  @unique_events_dates = .unique_events_dates
  @total = .total
end

Instance Attribute Details

#accountObject

Returns the value of attribute account.



3
4
5
# File 'lib/financial/balance_calculation.rb', line 3

def 
  @account
end

#balancesObject

Returns the value of attribute balances.



3
4
5
# File 'lib/financial/balance_calculation.rb', line 3

def balances
  @balances
end

#costsObject

Returns the value of attribute costs.



3
4
5
# File 'lib/financial/balance_calculation.rb', line 3

def costs
  @costs
end

#revenuesObject

Returns the value of attribute revenues.



3
4
5
# File 'lib/financial/balance_calculation.rb', line 3

def revenues
  @revenues
end

#unique_events_datesObject

Returns the value of attribute unique_events_dates.



3
4
5
# File 'lib/financial/balance_calculation.rb', line 3

def unique_events_dates
  @unique_events_dates
end

Instance Method Details

#calculate!Object



14
15
16
17
18
19
20
21
# File 'lib/financial/balance_calculation.rb', line 14

def calculate!
  unique_events_dates.collect do |date|
    @date = date
    @total -= calculate_costs
    @total += calculate_revenues
    Balance.new(@total, date)
  end
end

#calculate_costsObject



23
24
25
26
27
# File 'lib/financial/balance_calculation.rb', line 23

def calculate_costs
  costs_in_date = .costs_in_date(@date)
  return 0 if costs_in_date.empty?
  costs_in_date.collect { |cost| cost.value }.inject(:+)
end

#calculate_revenuesObject



29
30
31
32
33
# File 'lib/financial/balance_calculation.rb', line 29

def calculate_revenues
  revenues_in_date = .revenues_in_date(@date)
  return 0 if revenues_in_date.empty?
  revenues_in_date.collect {|event| event.value }.inject(:+)
end