Class: Riester

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(bruttojahreseinkommen) ⇒ Riester

Returns a new instance of Riester.



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/riester.rb', line 8

def initialize(bruttojahreseinkommen)
  @bruttojahreseinkommen = bruttojahreseinkommen
  @maximalbeitrag = bruttojahreseinkommen/100*4 < 2100 ? bruttojahreseinkommen/100*4 : 2100
  @grundzulage = 154
  @kinder = []
  @kinderzulage = 0
  @zulage = 0
  @verzinsung   = 2.0
  @aufschubzeit = 1
  @rentengarantiefaktor = 36.51
  @eigenbeitrag = ideal_beitrag
end

Instance Attribute Details

#ablaufleistungObject (readonly)

Returns the value of attribute ablaufleistung.



4
5
6
# File 'lib/riester.rb', line 4

def ablaufleistung
  @ablaufleistung
end

#anlageObject (readonly)

Returns the value of attribute anlage.



4
5
6
# File 'lib/riester.rb', line 4

def anlage
  @anlage
end

#aufschubzeit=(value) ⇒ Object (writeonly)

Sets the attribute aufschubzeit

Parameters:

  • value

    the value to set the attribute aufschubzeit to.



5
6
7
# File 'lib/riester.rb', line 5

def aufschubzeit=(value)
  @aufschubzeit = value
end

#beitrag_pa=(value) ⇒ Object (writeonly)

Sets the attribute beitrag_pa

Parameters:

  • value

    the value to set the attribute beitrag_pa to.



5
6
7
# File 'lib/riester.rb', line 5

def beitrag_pa=(value)
  @beitrag_pa = value
end

#eigenbeitragObject (readonly)

Returns the value of attribute eigenbeitrag.



4
5
6
# File 'lib/riester.rb', line 4

def eigenbeitrag
  @eigenbeitrag
end

#gesamt_eigenbeitragObject (readonly)

Returns the value of attribute gesamt_eigenbeitrag.



4
5
6
# File 'lib/riester.rb', line 4

def gesamt_eigenbeitrag
  @gesamt_eigenbeitrag
end

#job_status=(value) ⇒ Object (writeonly)

Sets the attribute job_status

Parameters:

  • value

    the value to set the attribute job_status to.



5
6
7
# File 'lib/riester.rb', line 5

def job_status=(value)
  @job_status = value
end

#kinder=(value) ⇒ Object (writeonly)

Sets the attribute kinder

Parameters:

  • value

    the value to set the attribute kinder to.



5
6
7
# File 'lib/riester.rb', line 5

def kinder=(value)
  @kinder = value
end

#renditeObject (readonly)

Returns the value of attribute rendite.



4
5
6
# File 'lib/riester.rb', line 4

def rendite
  @rendite
end

#renteObject (readonly)

Returns the value of attribute rente.



4
5
6
# File 'lib/riester.rb', line 4

def rente
  @rente
end

#rentengarantiefaktor=(value) ⇒ Object (writeonly)

Sets the attribute rentengarantiefaktor

Parameters:

  • value

    the value to set the attribute rentengarantiefaktor to.



5
6
7
# File 'lib/riester.rb', line 5

def rentengarantiefaktor=(value)
  @rentengarantiefaktor = value
end

#verzinsung=(value) ⇒ Object (writeonly)

Sets the attribute verzinsung

Parameters:

  • value

    the value to set the attribute verzinsung to.



5
6
7
# File 'lib/riester.rb', line 5

def verzinsung=(value)
  @verzinsung = value
end

#zulageObject (readonly)

Returns the value of attribute zulage.



4
5
6
# File 'lib/riester.rb', line 4

def zulage
  @zulage
end

Instance Method Details

#ideal_beitragObject



22
23
24
25
# File 'lib/riester.rb', line 22

def ideal_beitrag
  eigenbeitrag = @maximalbeitrag - @grundzulage - @kinderzulage
  return eigenbeitrag > 60 ? eigenbeitrag : 60
end

#runObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/riester.rb', line 38

def run
  # brechnung der kinder zulage.
  @kinder.each do |geburtsjahr|
    @kinderzulage += geburtsjahr < 2008 ? 185 : 300
  end

  # die gesamte zulage p.a.
  @zulage       =  @grundzulage + @kinderzulage
  
  # welche summe geht in die anlage p.a.
  @anlage       =  @maximalbeitrag + @zulage
  
  # berechnung der redite
  @rendite      =  (@zulage * 100 / @maximalbeitrag) + @verzinsung
  
  # was kostet mich das produkt efektiv. mit berucksichtigung der zulagen
  @gesamt_eigenbeitrag = @eigenbeitrag * @aufschubzeit
  
  # berechnung der ablaufleistung
  invest = Investment.new
  invest.p = @verzinsung
  invest.r = @anlage
  invest.n = @aufschubzeit
  @ablaufleistung = (invest.rn - versicherungskosten(invest.rn.to_i)).to_i 

  
  # fiktive berechnung der rente p.a.
  prozehntausend = @ablaufleistung/10000
  @rente = (prozehntausend*@rentengarantiefaktor)*12
end

#versicherungskosten(ablaufleistung) ⇒ Object



28
29
30
31
32
33
34
35
# File 'lib/riester.rb', line 28

def versicherungskosten(ablaufleistung)
  @ablaufleistung = ablaufleistung
  kosten = Investment.new
  kosten.k0 = @ablaufleistung
  kosten.p = 12.0 # 12% kosten
  kosten.n = 1
  return kosten.kn_einfach - @ablaufleistung
end