drei_schichten_modell 0.0.3 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/.rvmrc +1 -1
- data/README.markdown +1 -24
- data/drei_schichten_modell.gemspec +1 -1
- data/lib/basis.rb +31 -18
- data/lib/beitragsbemessungsgrenze.rb +25 -0
- data/lib/betriebliche_altersvorsorge.rb +44 -33
- data/lib/drei_schichten_modell.rb +167 -31
- data/lib/drei_schichten_modell/version.rb +1 -1
- data/lib/flex.rb +28 -30
- data/lib/gesetzlichen_rentenversicherung.rb +38 -0
- data/lib/investment.rb +164 -12
- data/lib/renteneintrittsalter.rb +14 -0
- data/lib/riester.rb +55 -15
- data/spec/altersvorsorgemix_spec.rb +20 -108
- data/spec/spec_helper.rb +1 -0
- metadata +10 -7
data/.rvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rvm --create ruby-1.9.
|
1
|
+
rvm --create ruby-1.9.3@drei_schichten_modell
|
data/README.markdown
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# abgabenrechner
|
2
2
|
|
3
3
|
drei_schichten_modell.gem ist ein programm zu berechnung der zulagen.
|
4
|
+
http://www.vergleichsrechner-altersvorsorge-vergleich.de/3-schichtenmodell.php
|
4
5
|
|
5
6
|
|
6
7
|
## Installation
|
@@ -12,30 +13,6 @@ gem 'drei_schichten_modell'
|
|
12
13
|
|
13
14
|
|
14
15
|
|
15
|
-
```ruby
|
16
|
-
require 'rubygems'
|
17
|
-
require 'drei_schichten_modell'
|
18
|
-
|
19
|
-
parameter = {
|
20
|
-
:lzz => 1,
|
21
|
-
:re4 => 2600000,
|
22
|
-
:stkl => 1,
|
23
|
-
:r => 1
|
24
|
-
}
|
25
|
-
|
26
|
-
abgabenrechner = BMF::Abgabenrechner.new(parameter)
|
27
|
-
puts abgabenrechner.ausgaben.inspect # => {:solzs=>0, :bk=>313700, :solzv=>0, :bks=>0, :sts=>0, :bkv=>0, :stv=>0, :lstlzz=>313700, :solzlzz=>17253}
|
28
|
-
puts abgabenrechner.ausgaben[:lstlzz] # => 313700
|
29
|
-
|
30
|
-
puts abgabenrechner.xml =>
|
31
|
-
```
|
32
|
-
|
33
|
-
|
34
|
-
## Komplette API Dokumentation:
|
35
|
-
http://goo.gl/phFdj
|
36
|
-
|
37
|
-
|
38
|
-
|
39
16
|
|
40
17
|
|
41
18
|
|
data/lib/basis.rb
CHANGED
@@ -3,17 +3,22 @@ require 'abgabenrechner'
|
|
3
3
|
|
4
4
|
class Basis
|
5
5
|
|
6
|
-
attr_reader :anlage, :zulage, :eigenbeitrag, :rendite
|
7
|
-
attr_writer :debug, :steuerklasse, :basis_pa
|
8
|
-
|
6
|
+
attr_reader :anlage, :zulage, :eigenbeitrag, :rendite, :ablaufleistung, :gesamt_eigenbeitrag, :rente
|
7
|
+
attr_writer :debug, :steuerklasse, :basis_pa, :verzinsung, :aufschubzeit, :rentengarantiefaktor
|
9
8
|
|
10
9
|
|
11
10
|
def initialize(bruttojahresgehalt)
|
12
|
-
@debug
|
13
|
-
@brutto_pa
|
14
|
-
@basis_pa
|
15
|
-
@steuerklasse
|
16
|
-
@plusdings
|
11
|
+
@debug = false
|
12
|
+
@brutto_pa = bruttojahresgehalt
|
13
|
+
@basis_pa = 20000
|
14
|
+
@steuerklasse = 1
|
15
|
+
@plusdings = 50 # damit das ergebis besser stimmt
|
16
|
+
@verzinsung = 2
|
17
|
+
@aufschubzeit = 1
|
18
|
+
@gesamt_eigenbeitrag = 0
|
19
|
+
@rentengarantiefaktor = 36.51
|
20
|
+
@versicherungskosten = 10000
|
21
|
+
|
17
22
|
end
|
18
23
|
|
19
24
|
|
@@ -26,23 +31,23 @@ class Basis
|
|
26
31
|
|
27
32
|
|
28
33
|
p1 = {
|
29
|
-
:lzz
|
30
|
-
:re4
|
31
|
-
:stkl
|
32
|
-
:r
|
34
|
+
:lzz => 1,
|
35
|
+
:re4 => @brutto_pa*100,
|
36
|
+
:stkl => @steuerklasse,
|
37
|
+
:r => 0,
|
33
38
|
:lzzfreib => @lzzfreib*100,
|
34
|
-
:krv
|
39
|
+
:krv => 0
|
35
40
|
}
|
36
41
|
p1e = BMF::Abgabenrechner.new(p1).ausgaben
|
37
42
|
|
38
43
|
|
39
44
|
p2 = {
|
40
|
-
:lzz
|
41
|
-
:re4
|
42
|
-
:stkl
|
43
|
-
:r
|
45
|
+
:lzz => 1,
|
46
|
+
:re4 => @brutto_pa*100,
|
47
|
+
:stkl => @steuerklasse,
|
48
|
+
:r => 0,
|
44
49
|
:lzzfreib => 0,
|
45
|
-
:krv
|
50
|
+
:krv => 0
|
46
51
|
}
|
47
52
|
p2e = BMF::Abgabenrechner.new(p2).ausgaben
|
48
53
|
|
@@ -52,7 +57,15 @@ class Basis
|
|
52
57
|
@rendite = (@zulage*100)/@basis_pa
|
53
58
|
@eigenbeitrag= @anlage-@zulage
|
54
59
|
|
60
|
+
invest = Investment.new
|
61
|
+
invest.p = @verzinsung.to_f
|
62
|
+
invest.r = @anlage
|
63
|
+
invest.n = @aufschubzeit
|
64
|
+
@ablaufleistung = invest.rn.to_i-@versicherungskosten
|
65
|
+
@gesamt_eigenbeitrag = @anlage*@aufschubzeit
|
55
66
|
|
67
|
+
prozehntausend = @ablaufleistung/10000
|
68
|
+
@rente = (prozehntausend*@rentengarantiefaktor)*12
|
56
69
|
|
57
70
|
if @debug
|
58
71
|
puts "#{((p2e[:lstlzz]-p1e[:lstlzz])/100)+@plusdings} euro forderung"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class Beitragsbemessungsgrenze
|
2
|
+
|
3
|
+
def initialize(ostwest)
|
4
|
+
|
5
|
+
@grenzen = {
|
6
|
+
2011 => { 'west' => 66000, 'ost' => 57600 },
|
7
|
+
2012 => { 'west' => 67200, 'ost' => 57600 }
|
8
|
+
}
|
9
|
+
|
10
|
+
@ostwest = ostwest
|
11
|
+
@jahr = Time.now.year
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
def grv(bruttojahresgehalt)
|
16
|
+
return bruttojahresgehalt > @grenzen[@jahr][@ostwest] ? @grenzen[@jahr][@ostwest] : bruttojahresgehalt
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
def bav_maximal_beitrag
|
21
|
+
return @grenzen[@jahr][@ostwest]/100*4
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
end
|
@@ -1,15 +1,20 @@
|
|
1
1
|
require 'abgabenrechner'
|
2
2
|
|
3
3
|
class BetrieblicheAltersvorsorge
|
4
|
-
attr_reader :anlage, :zulage, :rendite, :eigenbeitrag
|
5
|
-
attr_accessor :steuerklasse, :
|
4
|
+
attr_reader :anlage, :zulage, :rendite, :eigenbeitrag, :ablaufleistung, :gesamt_eigenbeitrag, :rente
|
5
|
+
attr_accessor :steuerklasse, :kosten, :anlage, :bav_pa, :debug, :verzinsung, :aufschubzeit, :rentengarantiefaktor
|
6
6
|
|
7
7
|
def initialize(bruttojahresgehalt)
|
8
|
-
@debug
|
9
|
-
@kinder
|
10
|
-
@brutto_pa
|
11
|
-
@bav_pa
|
12
|
-
@steuerklasse
|
8
|
+
@debug = false
|
9
|
+
@kinder = false
|
10
|
+
@brutto_pa = bruttojahresgehalt
|
11
|
+
@bav_pa = Beitragsbemessungsgrenze.new('west').bav_maximal_beitrag
|
12
|
+
@steuerklasse = 1
|
13
|
+
@verzinsung = 2
|
14
|
+
@aufschubzeit = 1
|
15
|
+
@gesamt_eigenbeitrag = 0
|
16
|
+
@rentengarantiefaktor = 36.51
|
17
|
+
@versicherungskosten = 10000
|
13
18
|
end
|
14
19
|
|
15
20
|
|
@@ -17,46 +22,45 @@ class BetrieblicheAltersvorsorge
|
|
17
22
|
|
18
23
|
def abgaben(bav_pa)
|
19
24
|
|
25
|
+
rechen_brutto_pa = @brutto_pa - bav_pa
|
26
|
+
|
20
27
|
p = {
|
21
|
-
:lzz
|
22
|
-
:re4
|
23
|
-
:stkl
|
24
|
-
:pvz
|
28
|
+
:lzz => 1,
|
29
|
+
:re4 => rechen_brutto_pa*100,
|
30
|
+
:stkl => @steuerklasse,
|
31
|
+
:pvz => 1, # ohne kinder weil PKZ=1
|
25
32
|
:krv => 0,
|
26
33
|
:lzzfreib => bav_pa
|
27
34
|
}
|
28
35
|
|
29
36
|
pe = BMF::Abgabenrechner.new(p).ausgaben
|
30
|
-
|
31
|
-
@lohnsteuer = pe[:lstlzz]
|
32
|
-
@soli = pe[:solzlzz]
|
37
|
+
|
38
|
+
@lohnsteuer = (pe[:lstlzz].to_i)/100
|
39
|
+
@soli = (pe[:solzlzz].to_i)/100
|
33
40
|
|
34
41
|
|
35
42
|
#maximal 7573.50 in west | 6540.75 in Ost
|
36
|
-
@alv = (
|
37
|
-
|
43
|
+
@alv = (rechen_brutto_pa/100)*1.5
|
38
44
|
|
39
45
|
#maximal 7573.50 in west | 6540.75 in Ost
|
40
|
-
@grv = (
|
41
|
-
|
46
|
+
@grv = (rechen_brutto_pa/100)*9.95
|
42
47
|
|
43
|
-
@gkv = (
|
44
|
-
@pfv = @kinder ? (
|
48
|
+
@gkv = (rechen_brutto_pa/100)*8.2
|
49
|
+
@pfv = @kinder ? (rechen_brutto_pa/100)*0.975 : (rechen_brutto_pa/100)*1.225
|
45
50
|
|
46
51
|
|
47
52
|
if @debug
|
48
|
-
puts "jahresgehalt: #{
|
53
|
+
puts "jahresgehalt: #{rechen_brutto_pa}"
|
49
54
|
puts "BAV jahresbeitrag: #{bav_pa}"
|
50
55
|
puts "lohnsteuer: #{@lohnsteuer}"
|
51
56
|
puts "soli: #{@soli}"
|
52
|
-
puts "alv: #{@alv.
|
53
|
-
puts "grv: #{@grv.
|
54
|
-
puts "gkv: #{@gkv.
|
55
|
-
puts "pfv: #{@pfv.
|
57
|
+
puts "alv: #{@alv.to_i}"
|
58
|
+
puts "grv: #{@grv.to_i}"
|
59
|
+
puts "gkv: #{@gkv.to_i}"
|
60
|
+
puts "pfv: #{@pfv.to_i}"
|
56
61
|
end
|
57
62
|
|
58
|
-
|
59
|
-
return (@lohnsteuer+@soli+@alv+@grv+@gkv+@pfv)/100
|
63
|
+
return @lohnsteuer+@soli+@alv+@grv+@gkv+@pfv
|
60
64
|
|
61
65
|
end
|
62
66
|
|
@@ -64,15 +68,22 @@ class BetrieblicheAltersvorsorge
|
|
64
68
|
|
65
69
|
|
66
70
|
def run
|
67
|
-
@ohnebav =
|
68
|
-
@mitbav =
|
69
|
-
|
70
|
-
@zulage = (@mitbav - @ohnebav)
|
71
|
+
@ohnebav = abgaben(0).to_i
|
72
|
+
@mitbav = abgaben(@bav_pa).to_i
|
73
|
+
@zulage = (@ohnebav - @mitbav)
|
71
74
|
@anlage = @bav_pa
|
72
75
|
@eigenbeitrag = @anlage-@zulage
|
76
|
+
@rendite = (@zulage*100/@anlage)+@verzinsung
|
73
77
|
|
74
|
-
|
75
|
-
|
78
|
+
invest = Investment.new
|
79
|
+
invest.p = @verzinsung.to_f
|
80
|
+
invest.r = @anlage
|
81
|
+
invest.n = @aufschubzeit
|
82
|
+
@ablaufleistung = invest.rn.to_i - @versicherungskosten
|
83
|
+
@gesamt_eigenbeitrag = @anlage*@aufschubzeit
|
84
|
+
|
85
|
+
prozehntausend = @ablaufleistung/10000
|
86
|
+
@rente = (prozehntausend*@rentengarantiefaktor)*12
|
76
87
|
end
|
77
88
|
|
78
89
|
|
@@ -1,68 +1,204 @@
|
|
1
1
|
require "drei_schichten_modell/version"
|
2
|
-
|
2
|
+
|
3
|
+
require "flex"
|
3
4
|
require "riester"
|
5
|
+
require "betriebliche_altersvorsorge"
|
4
6
|
require "basis"
|
7
|
+
require "gesetzlichen_rentenversicherung"
|
8
|
+
|
9
|
+
require "beitragsbemessungsgrenze"
|
10
|
+
require "investment"
|
11
|
+
|
5
12
|
|
6
13
|
module DreiSchichtenModell
|
7
14
|
|
15
|
+
|
16
|
+
|
8
17
|
class AltersvorsorgeMix
|
9
18
|
|
10
19
|
def initialize(avatar_info)
|
11
20
|
@avatar_info = avatar_info
|
12
|
-
@riester = false
|
13
|
-
@bav = false
|
14
|
-
@basis = false
|
15
21
|
end
|
16
22
|
|
17
23
|
|
18
|
-
def riester
|
19
|
-
riester = Riester.new(@avatar_info[:income])
|
20
|
-
riester.kinder = @avatar_info[:children]
|
21
|
-
riester.run
|
22
|
-
return riester
|
23
|
-
end
|
24
|
-
|
25
24
|
|
26
25
|
|
27
|
-
def
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
26
|
+
def flex
|
27
|
+
if @avatar_info.verzinsung &&
|
28
|
+
@avatar_info.aufschubzeit
|
29
|
+
|
30
|
+
flex = Flex.new
|
31
|
+
flex.flex_pa = @avatar_info.flex_beitrag_pa
|
32
|
+
flex.verzinsung = @avatar_info.verzinsung
|
33
|
+
flex.aufschubzeit = @avatar_info.aufschubzeit
|
34
|
+
flex.rentengarantiefaktor = @avatar_info.rentengarantiefaktor
|
35
|
+
flex.run
|
36
|
+
|
37
|
+
|
38
|
+
if @avatar_info.flex_wunsch == nil
|
39
|
+
@empfehlung = false
|
40
|
+
else
|
41
|
+
@empfehlung = @avatar_info.flex_wunsch
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
return to_hash("flex", flex, @empfehlung)
|
46
|
+
else
|
47
|
+
puts 'es fehlen daten zur berechnung der Flexiblen Altersvorsorge'
|
48
|
+
end
|
33
49
|
end
|
34
50
|
|
35
51
|
|
36
|
-
def basis
|
37
|
-
basis = Basis.new(@avatar_info[:income])
|
38
|
-
basis.run
|
39
|
-
return basis
|
40
|
-
end
|
41
52
|
|
42
53
|
|
54
|
+
def riester
|
55
|
+
if @avatar_info.kinder &&
|
56
|
+
@avatar_info.verzinsung &&
|
57
|
+
@avatar_info.aufschubzeit &&
|
58
|
+
@avatar_info.job_status
|
59
|
+
|
60
|
+
riester = Riester.new(@avatar_info.einkommen)
|
61
|
+
riester.kinder = @avatar_info.kinder
|
62
|
+
riester.beitrag_pa = @avatar_info.riester_beitrag_pa if @avatar_info.riester_beitrag_pa
|
63
|
+
riester.job_status = @avatar_info.job_status
|
64
|
+
riester.verzinsung = @avatar_info.verzinsung
|
65
|
+
riester.aufschubzeit = @avatar_info.aufschubzeit
|
66
|
+
riester.rentengarantiefaktor = @avatar_info.rentengarantiefaktor
|
67
|
+
riester.run
|
68
|
+
|
69
|
+
|
70
|
+
if @avatar_info.riester_wunsch == nil
|
71
|
+
@empfehlung = @avatar_info.grv ? true : false
|
72
|
+
else
|
73
|
+
@empfehlung = @avatar_info.riester_wunsch
|
74
|
+
end
|
75
|
+
|
76
|
+
return to_hash("riester", riester, @empfehlung)
|
77
|
+
else
|
78
|
+
puts 'es fehlen daten zur berechnung der Riester Rente'
|
79
|
+
end
|
80
|
+
end
|
43
81
|
|
44
|
-
def bestmix
|
45
|
-
@riester = @avatar_info[:state_pension] ? riester : false
|
46
|
-
@bav = @avatar_info[:compulsory_insurance] ? bav : false
|
47
|
-
@basis = @avatar_info[:state_pension] ? false : basis
|
48
82
|
|
49
|
-
return @riester, @bav, @basis
|
50
|
-
end
|
51
83
|
|
52
84
|
|
53
85
|
|
54
86
|
|
55
87
|
|
56
|
-
|
88
|
+
def bav
|
89
|
+
if @avatar_info.steuerklasse &&
|
90
|
+
@avatar_info.bav_beitrag_pa &&
|
91
|
+
@avatar_info.verzinsung &&
|
92
|
+
@avatar_info.aufschubzeit
|
93
|
+
|
94
|
+
|
95
|
+
bav = BetrieblicheAltersvorsorge.new(@avatar_info.einkommen)
|
96
|
+
bav.steuerklasse = @avatar_info.steuerklasse
|
97
|
+
bav.bav_pa = @avatar_info.bav_beitrag_pa
|
98
|
+
bav.verzinsung = @avatar_info.verzinsung
|
99
|
+
bav.aufschubzeit = @avatar_info.aufschubzeit
|
100
|
+
bav.rentengarantiefaktor = @avatar_info.rentengarantiefaktor
|
101
|
+
bav.run
|
102
|
+
|
103
|
+
|
104
|
+
if @avatar_info.bav_wunsch == nil
|
105
|
+
@empfehlung = @avatar_info.pflichtversichert ? true : false
|
106
|
+
else
|
107
|
+
@empfehlung = @avatar_info.bav_wunsch
|
108
|
+
end
|
109
|
+
|
110
|
+
|
111
|
+
return to_hash("bav", bav, @empfehlung )
|
112
|
+
else
|
113
|
+
puts 'es fehlen daten zur berechnung der Betriebliche Altersvorsorge'
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
57
117
|
|
58
|
-
|
59
|
-
|
60
118
|
|
61
119
|
|
62
120
|
|
121
|
+
def basis
|
122
|
+
if @avatar_info.basis_beitrag_pa &&
|
123
|
+
@avatar_info.steuerklasse &&
|
124
|
+
@avatar_info.verzinsung &&
|
125
|
+
@avatar_info.aufschubzeit
|
126
|
+
|
127
|
+
basis = Basis.new(@avatar_info.einkommen)
|
128
|
+
basis.basis_pa = @avatar_info.basis_beitrag_pa
|
129
|
+
basis.steuerklasse = @avatar_info.steuerklasse
|
130
|
+
basis.verzinsung = @avatar_info.verzinsung
|
131
|
+
basis.aufschubzeit = @avatar_info.aufschubzeit
|
132
|
+
basis.rentengarantiefaktor = @avatar_info.rentengarantiefaktor
|
133
|
+
basis.run
|
134
|
+
|
135
|
+
if @avatar_info.basis_wunsch == nil
|
136
|
+
@empfehlung = @avatar_info.grv ? false : true
|
137
|
+
else
|
138
|
+
@empfehlung = @avatar_info.basis_wunsch
|
139
|
+
end
|
140
|
+
|
141
|
+
return to_hash("basis", basis, @empfehlung)
|
142
|
+
else
|
143
|
+
puts 'es fehlen daten zur berechnung der Ruerup-Rente'
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
|
150
|
+
def grv
|
151
|
+
if @avatar_info.renteneintrittsalter &&
|
152
|
+
@avatar_info.geburtsjahr &&
|
153
|
+
@avatar_info.berufseinstieg &&
|
154
|
+
@avatar_info.bundesland
|
155
|
+
|
156
|
+
grv = GesetzlichenRentenversicherung.new(@avatar_info.einkommen)
|
157
|
+
grv.renteneintrittsalter = @avatar_info.renteneintrittsalter
|
158
|
+
grv.geburtsjahr = @avatar_info.geburtsjahr
|
159
|
+
grv.bundesland = @avatar_info.bundesland
|
160
|
+
grv.berufseinstieg = @avatar_info.berufseinstieg
|
161
|
+
grv.grv_pa = @avatar_info.grv_rente_pa ? @avatar_info.grv_rente_pa : 0
|
162
|
+
grv.run
|
163
|
+
|
164
|
+
@empfehlung = @avatar_info.grv ? true : false
|
165
|
+
|
166
|
+
return to_hash("grv", grv, @empfehlung)
|
167
|
+
else
|
168
|
+
puts 'es fehlen daten zur berechnung der gesetzlichen Rentenversicherung'
|
169
|
+
end
|
170
|
+
end
|
63
171
|
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
|
176
|
+
def to_hash(name, produkt, empfehlung)
|
177
|
+
|
178
|
+
{
|
179
|
+
empfehlung: empfehlung,
|
180
|
+
typ: name,
|
181
|
+
anlage: produkt.anlage,
|
182
|
+
rendite: produkt.rendite,
|
183
|
+
zulage: produkt.zulage,
|
184
|
+
eigenbeitrag: produkt.eigenbeitrag,
|
185
|
+
gesamt_eigenbeitrag: produkt.gesamt_eigenbeitrag,
|
186
|
+
ablaufleistung: produkt.ablaufleistung,
|
187
|
+
rente: produkt.rente.to_i
|
188
|
+
}
|
189
|
+
end
|
64
190
|
|
65
191
|
|
66
192
|
|
193
|
+
def produkte
|
194
|
+
return flex, riester, bav, basis, grv
|
195
|
+
end
|
196
|
+
|
197
|
+
|
198
|
+
end
|
199
|
+
|
67
200
|
|
201
|
+
|
202
|
+
|
203
|
+
|
68
204
|
end
|
data/lib/flex.rb
CHANGED
@@ -1,42 +1,40 @@
|
|
1
1
|
class Flex
|
2
2
|
|
3
|
-
attr_reader :anlage, :rendite, :eigenbeitrag, :zulage
|
4
|
-
attr_writer :
|
5
|
-
|
6
|
-
def initialize
|
7
|
-
@
|
8
|
-
@
|
9
|
-
@
|
10
|
-
@partner = false
|
11
|
-
@kinder = false
|
12
|
-
@kinderzulage = 0
|
3
|
+
attr_reader :anlage, :rendite, :eigenbeitrag, :ablaufleistung, :zulage, :gesamt_eigenbeitrag, :rente
|
4
|
+
attr_writer :verzinsung, :flex_pa, :aufschubzeit, :rentengarantiefaktor
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@verzinsung = 2.0
|
8
|
+
@aufschubzeit = 1
|
9
|
+
@ablaufleistung = 0
|
13
10
|
@zulage = 0
|
11
|
+
@flex_pa = 0
|
12
|
+
@gesamt_eigenbeitrag = 0
|
13
|
+
@rentengarantiefaktor = 36.51
|
14
|
+
@versicherungskosten = 10000
|
14
15
|
end
|
15
|
-
|
16
|
-
|
17
16
|
|
18
|
-
def eigenbeitrag
|
19
|
-
eigenbeitrag = @anlagebetrag - @grundzulage - @kinderzulage
|
20
|
-
return eigenbeitrag > 60 ? eigenbeitrag : 60
|
21
|
-
end
|
22
17
|
|
23
18
|
|
24
|
-
|
19
|
+
|
25
20
|
def run
|
21
|
+
invest = Investment.new
|
22
|
+
invest.p = @verzinsung
|
23
|
+
invest.r = @flex_pa
|
24
|
+
invest.n = @aufschubzeit
|
26
25
|
|
27
|
-
@
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
@
|
32
|
-
|
33
|
-
|
34
|
-
@
|
35
|
-
|
26
|
+
@ablaufleistung = invest.rn.to_i-@versicherungskosten
|
27
|
+
@anlage = @flex_pa
|
28
|
+
@eigenbeitrag = @flex_pa
|
29
|
+
@rendite = @verzinsung
|
30
|
+
@gesamt_eigenbeitrag = @anlage*@aufschubzeit
|
31
|
+
|
32
|
+
prozehntausend = @ablaufleistung/10000
|
33
|
+
@rente = (prozehntausend*@rentengarantiefaktor)*12
|
36
34
|
end
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
|
41
39
|
|
42
40
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# http://www.focus.de/finanzen/altersvorsorge/rente/tid-8425/rentenrechner_aid_231122.html
|
2
|
+
|
3
|
+
class GesetzlichenRentenversicherung
|
4
|
+
|
5
|
+
attr_reader :anlage, :rendite, :eigenbeitrag, :ablaufleistung, :zulage, :gesamt_eigenbeitrag, :rente
|
6
|
+
attr_writer :grv_pa, :aufschubzeit, :berufseinstieg, :geburtsjahr, :renteneintrittsalter, :bundesland
|
7
|
+
|
8
|
+
def initialize(bruttojahresgehalt)
|
9
|
+
@renteneintrittsalter = 67
|
10
|
+
@geburtsjahr = 0
|
11
|
+
@brutto_pa = bruttojahresgehalt
|
12
|
+
@verzinsung = 2.0
|
13
|
+
@grv_pa = 0
|
14
|
+
@zulage = 0
|
15
|
+
@ablaufleistung = 0
|
16
|
+
@anlage = 0
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
def run
|
21
|
+
@rentenanwartschaftszeit = (@geburtsjahr + @renteneintrittsalter) - @berufseinstieg
|
22
|
+
@entgeltpunkte = 1.0*@rentenanwartschaftszeit
|
23
|
+
@zugangsfaktor = 1
|
24
|
+
@rentenartfaktor = 1
|
25
|
+
@rentenwert = 26.56
|
26
|
+
|
27
|
+
@rendite = @verzinsung
|
28
|
+
@eigenbeitrag = (@brutto_pa/100)*9.95
|
29
|
+
@gesamt_eigenbeitrag = ((@brutto_pa/100)*9.95)*@rentenanwartschaftszeit
|
30
|
+
if @grv_pa == 0
|
31
|
+
@rente = (@entgeltpunkte*@zugangsfaktor*@rentenartfaktor*@rentenwert)*12
|
32
|
+
else
|
33
|
+
@rente = @grv_pa
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
data/lib/investment.rb
CHANGED
@@ -1,20 +1,172 @@
|
|
1
1
|
class Investment
|
2
|
-
attr_accessor :
|
2
|
+
attr_accessor :p, :r, :n, :k0, :inflation
|
3
|
+
attr_reader :i
|
4
|
+
|
5
|
+
# http://page.math.tu-berlin.de/~mrenesse/agromath/fima.pdf
|
6
|
+
|
7
|
+
# TODO
|
8
|
+
# S0 - Darlehen, Schuldsumme
|
9
|
+
# Sn - Restschuld
|
10
|
+
# T - Tildungsrate
|
11
|
+
# Z - Zinsbetrag
|
12
|
+
# A - Annuität
|
3
13
|
|
4
14
|
|
5
|
-
def initialize
|
6
|
-
|
7
|
-
@
|
8
|
-
@verzinsung = verzinsung
|
9
|
-
@kapitelanwuchs = []
|
15
|
+
def initialize
|
16
|
+
# p - Zinssatz in Prozent
|
17
|
+
@p = 0.0
|
10
18
|
|
11
|
-
|
12
|
-
jahre.times do
|
13
|
-
kapital += kapital/100*verzinsung
|
14
|
-
kapital += jahresbeitrag + jahresbeitrag/100*verzinsung
|
15
|
-
kapitelanwuchs << sprintf("%0.2f", kapital)
|
16
|
-
end
|
19
|
+
@inflation = 0.0
|
17
20
|
|
21
|
+
# K0 - Anfangskapital
|
22
|
+
@k0 = 0
|
23
|
+
|
24
|
+
# n - Laufzeit (Jahre, Monate, Tage
|
25
|
+
# n - Anzahl der Rückzahlungsperioden
|
26
|
+
@n = 0
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
# r - Rente / Rate
|
32
|
+
def r(*rate)
|
33
|
+
if @r
|
34
|
+
return @r
|
35
|
+
else
|
36
|
+
return k0*((q-1)/(qn-1))
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
# q - Aufzinsungsfaktor ( q = 1 + i )
|
42
|
+
def q
|
43
|
+
1+i
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
def qn
|
48
|
+
q**n
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
# v - Abzinsungsfaktor (v = 1 / q )
|
53
|
+
def v
|
54
|
+
1/q
|
18
55
|
end
|
56
|
+
|
57
|
+
|
58
|
+
# i - Zinssatz ( i = p / 100 )
|
59
|
+
def i
|
60
|
+
(@p-@inflation)/100
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
# Kn - Endkapital zinseszinslicher Verzinsung
|
65
|
+
def kn
|
66
|
+
k0*qn
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
# Kn - Endkapital einfacher Verzinsung
|
71
|
+
def kn_einfach
|
72
|
+
k0*(1+(i*n))
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
# Rn - Endwert der nachschüssigen Rente
|
77
|
+
def rn
|
78
|
+
r*((qn-1)/(q-1))
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
# Die nachschüssige Rentenbarwertformel (RBF) lautet
|
83
|
+
def rbf
|
84
|
+
rn*(1/qn)
|
85
|
+
end
|
86
|
+
|
19
87
|
|
88
|
+
# Barwert der nachschussigen ewigen Rente
|
89
|
+
def r0
|
90
|
+
r/i
|
91
|
+
end
|
92
|
+
|
93
|
+
|
20
94
|
end
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
# Ein Betrag von 100 € wird bei einer einfachen Verzinsung von 2% genau drei Jahre
|
100
|
+
# lang ausgeliehen. Die Zinszahlung soll am Ende der Laufzeit erfolgen. Wie groß ist die
|
101
|
+
# am Ende der Laufzeit angesammelte Summe aus Kapital und Zinsen?
|
102
|
+
#invest = Investment.new
|
103
|
+
#invest.k0 = 100
|
104
|
+
#invest.p = 2.0
|
105
|
+
#invest.n = 3
|
106
|
+
#puts invest.kn_einfach.to_i
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
# Eine Spareinlage von 100 € wird für 4 Jahre angelegt und mit 6% verzinst. Welche
|
111
|
+
# Höhe hat das Kapital bei zinseszinslicher Verzinsung nach 4 Jahren?
|
112
|
+
# invest = Investment.new
|
113
|
+
# invest.k0 = 100
|
114
|
+
# invest.p = 6.0
|
115
|
+
# invest.n = 4
|
116
|
+
# puts "mit zinseszinslicher Verzinsung #{invest.kn.to_i} euro "
|
117
|
+
# puts "mit einfacher Verzinsung #{invest.kn_einfach.to_i} euro "
|
118
|
+
# Bei einfacher Verzinsung ist die Kapitalsumme am Ende des mehrjährigen
|
119
|
+
# Anlagezeitraums kleiner als bei der Zinseszinsrechnung.
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
|
124
|
+
# Theo Knapp bringt 5 Jahre lang einmal jährlich am Jahresende 100 €
|
125
|
+
# zur Bank, die diese Einzahlungen bei 5% Zinseszinsen ansammelt.
|
126
|
+
# Welcher Betrag wird Theo nach Ablauf von 5 Jahren zur Verfügung
|
127
|
+
# stehen (Rentenendwert)?
|
128
|
+
# invest = Investment.new
|
129
|
+
# invest.p = 5.0
|
130
|
+
# invest.r = 100
|
131
|
+
# invest.n = 5
|
132
|
+
# puts "der Rentenendwert von Theo Knapp betaegt nach 5 Jahren #{invest.rn.to_i} euro "
|
133
|
+
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
|
138
|
+
# Aus einem Lottogewinn stehen Berta Gierig für die nächsten 10 Jahre
|
139
|
+
# jährliche Zahlungen in Höhe von je 10.000 € zu. Welchen Wert hat dieser
|
140
|
+
# Lottogewinn heute, wenn von 6% Zinseszinsen ausgegangen wird, d.h.
|
141
|
+
# mit welchem Betrag könnte Berta heute ihre Rente kapitalisieren lassen
|
142
|
+
# (Rentenbarwert)?
|
143
|
+
# invest = Investment.new
|
144
|
+
# invest.p = 6.0
|
145
|
+
# invest.r = 10000
|
146
|
+
# invest.n = 10
|
147
|
+
# puts "Sie könnte sich also #{invest.rbf.to_i} € sofort auszahlen lassen."
|
148
|
+
# puts "Der Endwert von Berta Gierigs Lottogewinn beträgt #{invest.rn.to_i} euro."
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
# In 18 Jahren sollen dem neugeborenen Kind Benjamin der Familie
|
156
|
+
# Ver’Wöhn 25.000 € zur Verfügung stehen. Wie hoch müssen die
|
157
|
+
# jährlichen Raten sein, die die Ver’Wöhns während der nächsten 18 Jahre
|
158
|
+
# bei 5% Zinsen einzahlen müssen, damit nach 18 Jahren exakt der
|
159
|
+
# gewünschte Betrag für Benjamin zur Verfügung steht?
|
160
|
+
# invest = Investment.new
|
161
|
+
# invest.k0 = 25000
|
162
|
+
# invest.p = 5.0
|
163
|
+
# invest.n = 18
|
164
|
+
# puts "Familie Verwöhn müsste jährlich #{invest.r.to_i} € einzahlen, damit Benjamin nach 18 Jahren über 25.000 € verfügen kann"
|
165
|
+
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
|
172
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Renteneintrittsalter
|
2
|
+
|
3
|
+
def renteneintrittsalter
|
4
|
+
@regelaltersrente = 67
|
5
|
+
case @geburtsjahr
|
6
|
+
when 1946..1957 then @regelaltersrente = 65
|
7
|
+
when 1958..1963 then @regelaltersrente = 66
|
8
|
+
when 1964..Time.now.year then @regelaltersrente = 67
|
9
|
+
end
|
10
|
+
return @regelaltersrente
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
data/lib/riester.rb
CHANGED
@@ -1,42 +1,82 @@
|
|
1
|
+
require 'investment'
|
1
2
|
class Riester
|
2
3
|
|
3
|
-
attr_reader :anlage, :rendite, :eigenbeitrag, :
|
4
|
-
attr_writer :
|
4
|
+
attr_reader :anlage, :rendite, :zulage, :ablaufleistung, :eigenbeitrag, :gesamt_eigenbeitrag, :rente
|
5
|
+
attr_writer :kinder, :verzinsung, :aufschubzeit, :rentengarantiefaktor, :beitrag_pa, :job_status
|
6
|
+
|
5
7
|
|
6
8
|
def initialize(bruttojahreseinkommen)
|
7
9
|
@bruttojahreseinkommen = bruttojahreseinkommen
|
8
|
-
@
|
10
|
+
@maximalbeitrag = bruttojahreseinkommen/100*4 < 2100 ? bruttojahreseinkommen/100*4 : 2100
|
9
11
|
@grundzulage = 154
|
10
|
-
@
|
11
|
-
@kinder = false
|
12
|
+
@kinder = []
|
12
13
|
@kinderzulage = 0
|
13
14
|
@zulage = 0
|
15
|
+
@verzinsung = 2.0
|
16
|
+
@aufschubzeit = 1
|
17
|
+
@rentengarantiefaktor = 36.51
|
18
|
+
@eigenbeitrag = ideal_beitrag
|
14
19
|
end
|
15
20
|
|
16
21
|
|
17
|
-
|
18
|
-
|
19
|
-
eigenbeitrag = @anlagebetrag - @grundzulage - @kinderzulage
|
22
|
+
def ideal_beitrag
|
23
|
+
eigenbeitrag = @maximalbeitrag - @grundzulage - @kinderzulage
|
20
24
|
return eigenbeitrag > 60 ? eigenbeitrag : 60
|
21
25
|
end
|
22
26
|
|
23
27
|
|
28
|
+
def versicherungskosten(ablaufleistung)
|
29
|
+
@ablaufleistung = ablaufleistung
|
30
|
+
kosten = Investment.new
|
31
|
+
kosten.k0 = @ablaufleistung
|
32
|
+
kosten.p = 12.0 # 12% kosten
|
33
|
+
kosten.n = 1
|
34
|
+
return kosten.kn_einfach - @ablaufleistung
|
35
|
+
end
|
36
|
+
|
24
37
|
|
25
38
|
def run
|
26
|
-
|
39
|
+
# brechnung der kinder zulage.
|
27
40
|
@kinder.each do |geburtsjahr|
|
28
|
-
@kinderzulage += geburtsjahr < 2008 ? 185 : 300
|
41
|
+
@kinderzulage += geburtsjahr < 2008 ? 185 : 300
|
29
42
|
end
|
30
43
|
|
44
|
+
# die gesamte zulage p.a.
|
31
45
|
@zulage = @grundzulage + @kinderzulage
|
32
|
-
|
33
|
-
|
34
|
-
@
|
46
|
+
|
47
|
+
# welche summe geht in die anlage p.a.
|
48
|
+
@anlage = @maximalbeitrag + @zulage
|
49
|
+
|
50
|
+
# berechnung der redite
|
51
|
+
@rendite = (@zulage * 100 / @maximalbeitrag) + @verzinsung
|
52
|
+
|
53
|
+
# was kostet mich das produkt efektiv. mit berucksichtigung der zulagen
|
54
|
+
@gesamt_eigenbeitrag = @eigenbeitrag * @aufschubzeit
|
55
|
+
|
56
|
+
# berechnung der ablaufleistung
|
57
|
+
invest = Investment.new
|
58
|
+
invest.p = @verzinsung
|
59
|
+
invest.r = @anlage
|
60
|
+
invest.n = @aufschubzeit
|
61
|
+
@ablaufleistung = (invest.rn - versicherungskosten(invest.rn.to_i)).to_i
|
35
62
|
|
63
|
+
|
64
|
+
# fiktive berechnung der rente p.a.
|
65
|
+
prozehntausend = @ablaufleistung/10000
|
66
|
+
@rente = (prozehntausend*@rentengarantiefaktor)*12
|
36
67
|
end
|
68
|
+
end
|
37
69
|
|
38
70
|
|
39
71
|
|
40
72
|
|
41
|
-
|
42
|
-
|
73
|
+
#riester = Riester.new(32000)
|
74
|
+
#riester.verzinsung = 6.0
|
75
|
+
#riester.beitrag_pa = 60
|
76
|
+
#riester.kinder = [1999,1980]#
|
77
|
+
#riester.aufschubzeit = 30
|
78
|
+
#riester.run
|
79
|
+
#puts riester.inspect
|
80
|
+
|
81
|
+
|
82
|
+
|
@@ -4,126 +4,38 @@ describe DreiSchichtenModell do
|
|
4
4
|
|
5
5
|
it "get perfect dsm mix" do
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
:
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:
|
21
|
-
:
|
7
|
+
avatar = {
|
8
|
+
einkommen: 27600,
|
9
|
+
geburtsjahr: 1980,
|
10
|
+
steuerklasse: 1,
|
11
|
+
kirchensteuer: false,
|
12
|
+
grv: true,
|
13
|
+
grv_rente_pa: 600*12,
|
14
|
+
wunschrente_pa: 2000*12,
|
15
|
+
pflichtversichert: true,
|
16
|
+
krankenversicherung: 'g',
|
17
|
+
kinder: [1999,2002],
|
18
|
+
bundesland: 'hh',
|
19
|
+
verzinsung: 5.0,
|
20
|
+
renteneintrittsalter: 67,
|
21
|
+
aufschubzeit: 30,
|
22
|
+
bav_beitrag_pa: 600
|
22
23
|
}
|
23
24
|
|
24
25
|
|
25
|
-
|
26
|
-
# freiberufler ohne kinder
|
27
|
-
avatar2 = {
|
28
|
-
:income => 72000,
|
29
|
-
:age => 27,
|
30
|
-
:taxclass => 1,
|
31
|
-
:churchtax => false,
|
32
|
-
:sozi_obligation => false,
|
33
|
-
:health_insurance => 'p',
|
34
|
-
:state_pension => false,
|
35
|
-
:children => [],
|
36
|
-
:federal_state => 'be',
|
37
|
-
:pension_height => 3000,
|
38
|
-
:pensionable_age => 67
|
39
|
-
|
40
|
-
}
|
41
|
-
|
42
|
-
|
43
|
-
# Lehrer(Beamte) verheiratet mit einem kind
|
44
|
-
avatar3 = {
|
45
|
-
:income => 36000,
|
46
|
-
:age => 35,
|
47
|
-
:taxclass => 1,
|
48
|
-
:churchtax => true,
|
49
|
-
:sozi_obligation => false,
|
50
|
-
:health_insurance => 'g',
|
51
|
-
:state_pension => true,
|
52
|
-
:children => [1998],
|
53
|
-
:federal_state => 'be',
|
54
|
-
:pension_height => 1500,
|
55
|
-
:pensionable_age => 67
|
56
|
-
|
57
|
-
}
|
58
|
-
|
59
|
-
|
60
|
-
# Student
|
61
|
-
avatar4 = {
|
62
|
-
:income => 5000,
|
63
|
-
:age => 23,
|
64
|
-
:taxclass => 1,
|
65
|
-
:churchtax => false,
|
66
|
-
:sozi_obligation => false,
|
67
|
-
:health_insurance => 'p',
|
68
|
-
:state_pension => true,
|
69
|
-
:children => [],
|
70
|
-
:federal_state => 'hh',
|
71
|
-
:pension_height => 1500,
|
72
|
-
:pensionable_age => 67
|
73
|
-
|
74
|
-
}
|
75
|
-
|
76
|
-
|
77
|
-
# Angelstelter mit zwei kindern
|
78
|
-
avatar5 = {
|
79
|
-
:income => 28600,
|
80
|
-
:age => 23,
|
81
|
-
:taxclass => 1,
|
82
|
-
:churchtax => true,
|
83
|
-
:sozi_obligation => true,
|
84
|
-
:health_insurance => 'g',
|
85
|
-
:state_pension => true,
|
86
|
-
:children => [],
|
87
|
-
:federal_state => 'hh',
|
88
|
-
:pension_height => 1500,
|
89
|
-
:pensionable_age => 67
|
90
|
-
}
|
91
|
-
|
92
|
-
|
93
|
-
avatar = avatar2
|
94
|
-
|
95
|
-
|
96
|
-
|
97
26
|
altersvorsorge = DreiSchichtenModell::AltersvorsorgeMix.new( avatar )
|
98
|
-
riester, bav, basis = altersvorsorge.bestmix
|
99
|
-
|
100
|
-
@gesamt_anlage = 0
|
101
|
-
@gesamt_zulage = 0
|
102
|
-
@gesamt_eigenbeitrag = 0
|
103
27
|
|
104
|
-
|
105
|
-
|
106
|
-
puts item.inspect
|
107
|
-
@gesamt_anlage += item.anlage
|
108
|
-
@gesamt_zulage += item.zulage
|
109
|
-
@gesamt_eigenbeitrag += item.eigenbeitrag
|
110
|
-
end
|
28
|
+
altersvorsorge.produkte.each do |product|
|
29
|
+
puts product.inspect if product
|
111
30
|
end
|
112
31
|
|
113
|
-
puts @gesamt_anlage
|
114
|
-
puts @gesamt_zulage
|
115
|
-
puts @gesamt_eigenbeitrag
|
116
32
|
|
117
|
-
puts '-- -- --'
|
118
33
|
|
119
|
-
# jahresbeitrag, zeitraum, verzinsung
|
120
|
-
invest = Investment.new(@gesamt_anlage, avatar[:pensionable_age]-avatar[:age], 8)
|
121
|
-
endsumme = invest.kapitelanwuchs.last
|
122
|
-
puts "endkapital mit #{avatar[:pensionable_age]} nach #{avatar[:pensionable_age]-avatar[:age]} jahren: #{endsumme} euro"
|
123
|
-
|
124
34
|
end
|
125
35
|
|
126
36
|
|
127
37
|
|
128
38
|
|
129
39
|
end
|
40
|
+
|
41
|
+
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drei_schichten_modell
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-03-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70328374313140 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,18 +21,18 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70328374313140
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: abgabenrechner
|
27
|
-
requirement: &
|
27
|
+
requirement: &70328374312540 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - =
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.3.
|
32
|
+
version: 0.3.3
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70328374312540
|
36
36
|
description: dieses rubygem berechnet den perfekten altersvorsorge mix aus allen drei
|
37
37
|
schichten. und gibt angaben ueber die zulagenhoehe
|
38
38
|
email:
|
@@ -50,11 +50,14 @@ files:
|
|
50
50
|
- drei_schichten_modell.gemspec
|
51
51
|
- lib/.DS_Store
|
52
52
|
- lib/basis.rb
|
53
|
+
- lib/beitragsbemessungsgrenze.rb
|
53
54
|
- lib/betriebliche_altersvorsorge.rb
|
54
55
|
- lib/drei_schichten_modell.rb
|
55
56
|
- lib/drei_schichten_modell/version.rb
|
56
57
|
- lib/flex.rb
|
58
|
+
- lib/gesetzlichen_rentenversicherung.rb
|
57
59
|
- lib/investment.rb
|
60
|
+
- lib/renteneintrittsalter.rb
|
58
61
|
- lib/riester.rb
|
59
62
|
- spec/altersvorsorgemix_spec.rb
|
60
63
|
- spec/spec_helper.rb
|