drei_schichten_modell 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|