drei_schichten_modell 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,7 +22,6 @@ Gem::Specification.new do |s|
22
22
  # tests
23
23
  s.add_development_dependency 'rspec'
24
24
 
25
- # benchmarks
26
- s.add_development_dependency 'abgabenrechner'
27
-
25
+ s.add_runtime_dependency('abgabenrechner','0.3.1')
26
+
28
27
  end
@@ -1,15 +1,67 @@
1
1
  require "drei_schichten_modell/version"
2
+ require "betriebliche_altersvorsorge"
3
+ require "riester"
4
+ require "basis"
2
5
 
3
6
  module DreiSchichtenModell
4
7
 
5
-
6
8
  class AltersvorsorgeMix
9
+
7
10
  def initialize(avatar_info)
8
- puts avatar_info
11
+ @avatar_info = avatar_info
12
+ @riester = false
13
+ @bav = false
14
+ @basis = false
15
+ end
16
+
17
+
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
+
26
+
27
+ def bav
28
+ bav = BetrieblicheAltersvorsorge.new(@avatar_info[:income])
29
+ bav.kinder = @avatar_info[:children]
30
+ bav.steuerklasse = @avatar_info[:taxclass]
31
+ bav.run
32
+ return bav
33
+ end
34
+
35
+
36
+ def basis
37
+ basis = Basis.new(@avatar_info[:income])
38
+ basis.run
39
+ return basis
40
+ end
41
+
42
+
43
+
44
+ def bestmix
45
+ @riester = @avatar_info[:state_pension] ? riester : false
46
+ @bav = @avatar_info[:sozi_obligation] ? bav : false
47
+ @basis = @avatar_info[:state_pension] ? false : basis
48
+
49
+ return @riester, @bav, @basis
9
50
  end
10
51
 
52
+
53
+
54
+
55
+
11
56
  end
12
57
 
58
+
59
+
60
+
61
+
62
+
63
+
64
+
13
65
 
14
66
 
15
67
 
@@ -1,3 +1,3 @@
1
1
  module DreiSchichtenModell
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,42 @@
1
+ class Flex
2
+
3
+ attr_reader :anlage, :rendite, :eigenbeitrag, :zulage
4
+ attr_writer :partner, :kinder
5
+
6
+ def initialize(bruttojahreseinkommen)
7
+ @bruttojahreseinkommen = bruttojahreseinkommen
8
+ @anlagebetrag = bruttojahreseinkommen/100*4 < 2100 ? bruttojahreseinkommen/100*4 : 2100
9
+ @grundzulage = 154
10
+ @partner = false
11
+ @kinder = false
12
+ @kinderzulage = 0
13
+ @zulage = 0
14
+ end
15
+
16
+
17
+
18
+ def eigenbeitrag
19
+ eigenbeitrag = @anlagebetrag - @grundzulage - @kinderzulage
20
+ return eigenbeitrag > 60 ? eigenbeitrag : 60
21
+ end
22
+
23
+
24
+
25
+ def run
26
+
27
+ @kinder.each do |geburtsjahr|
28
+ @kinderzulage += geburtsjahr < 2008 ? 185 : 300
29
+ end
30
+
31
+ @zulage = @grundzulage + @kinderzulage
32
+ @anlage = @anlagebetrag + @zulage
33
+ @eigenbeitrag = eigenbeitrag
34
+ @rendite = @zulage*100/@anlagebetrag
35
+
36
+ end
37
+
38
+
39
+
40
+
41
+
42
+ end
@@ -0,0 +1,20 @@
1
+ class Investment
2
+ attr_accessor :jahresbeitrag, :jahre, :verzinsung, :kapitelanwuchs
3
+
4
+
5
+ def initialize(jahresbeitrag, jahre, verzinsung)
6
+ @jahresbeitrag = jahresbeitrag
7
+ @jahre = jahre + 1
8
+ @verzinsung = verzinsung
9
+ @kapitelanwuchs = []
10
+
11
+ kapital = 0
12
+ jahre.times do
13
+ kapital += kapital/100*verzinsung
14
+ kapital += jahresbeitrag + jahresbeitrag/100*verzinsung
15
+ kapitelanwuchs << sprintf("%0.2f", kapital)
16
+ end
17
+
18
+ end
19
+
20
+ end
@@ -1,46 +1,42 @@
1
1
  class Riester
2
2
 
3
- attr_reader :anlage, :zulage, :rendite, :eigenbeitrag
4
- attr_writer :partner, :partner, :partner_rentenversicherungspflichtig, :kinderzulage
5
-
3
+ attr_reader :anlage, :rendite, :eigenbeitrag, :zulage
4
+ attr_writer :partner, :kinder
6
5
 
7
6
  def initialize(bruttojahreseinkommen)
8
7
  @bruttojahreseinkommen = bruttojahreseinkommen
9
8
  @anlagebetrag = bruttojahreseinkommen/100*4 < 2100 ? bruttojahreseinkommen/100*4 : 2100
10
9
  @grundzulage = 154
11
10
  @partner = false
12
- @partner_rentenversicherungspflichtig = false
11
+ @kinder = false
13
12
  @kinderzulage = 0
14
13
  @zulage = 0
15
14
  end
16
15
 
17
16
 
18
- def kinder(geburtsjahre)
19
- geburtsjahre.each do |geburtsjahr|
20
- @kinderzulage += geburtsjahr < 2008 ? 185 : 300
21
- end
22
- end
23
-
24
17
 
25
18
  def eigenbeitrag
26
19
  eigenbeitrag = @anlagebetrag - @grundzulage - @kinderzulage
27
-
28
20
  return eigenbeitrag > 60 ? eigenbeitrag : 60
29
-
30
21
  end
31
22
 
32
23
 
33
- def rendite
34
- zulage*100/@anlagebetrag
35
- end
36
-
37
- def zulage
38
- @grundzulage + @kinderzulage
39
- end
40
-
41
- def anlage
42
- @anlagebetrag+zulage
24
+
25
+ def run
26
+
27
+ @kinder.each do |geburtsjahr|
28
+ @kinderzulage += geburtsjahr < 2008 ? 185 : 300
29
+ end
30
+
31
+ @zulage = @grundzulage + @kinderzulage
32
+ @anlage = @anlagebetrag + @zulage
33
+ @eigenbeitrag = eigenbeitrag
34
+ @rendite = @zulage*100/@anlagebetrag
35
+
43
36
  end
44
37
 
38
+
39
+
40
+
45
41
 
46
42
  end
@@ -5,24 +5,125 @@ describe DreiSchichtenModell do
5
5
  it "get perfect dsm mix" do
6
6
 
7
7
 
8
- avatar_info = {
9
- :name => 'ich',
10
- :income => 48000,
11
- :age => 30,
8
+
9
+ # Angelstelter mit zwei kindern
10
+ avatar1 = {
11
+ :income => 48000,
12
+ :age => 30,
13
+ :taxclass => 1,
14
+ :churchtax => true,
15
+ :obligation_insured => true,
16
+ :health_insurance => 'g',
17
+ :state_pension => true,
18
+ :children => [1999,1980],
19
+ :federal_state => 'hh',
20
+ :pension_height => 1500,
21
+ :pensionable_age => 67
22
+ }
23
+
24
+
25
+
26
+ # freiberufler ohne kinder
27
+ avatar2 = {
28
+ :income => 72000,
29
+ :age => 27,
12
30
  :taxclass => 1,
13
31
  :churchtax => false,
14
- :sozi => true,
15
- :health_insurance => 'grv',
16
- :children => [1999,1980],
17
- :federal_state => 'hamburg',
18
- :pension => 1500,
19
- :pension_age => 67,
20
- :interest_charges => 8
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
+
21
74
  }
22
75
 
23
76
 
24
- DreiSchichtenModell::AltersvorsorgeMix.new(avatar_info)
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
+ 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
+
104
+ [riester, bav, basis].each do |item|
105
+ if item
106
+ puts item.inspect
107
+ @gesamt_anlage += item.anlage
108
+ @gesamt_zulage += item.zulage
109
+ @gesamt_eigenbeitrag += item.eigenbeitrag
110
+ end
111
+ end
112
+
113
+ puts @gesamt_anlage
114
+ puts @gesamt_zulage
115
+ puts @gesamt_eigenbeitrag
116
+
117
+ puts '-- -- --'
118
+
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
+
25
124
  end
26
125
 
27
-
126
+
127
+
128
+
28
129
  end
@@ -1,7 +1,8 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
3
  require 'abgabenrechner'
4
- require 'drei_schichten_model'
4
+ require 'drei_schichten_modell'
5
+ require "investment"
5
6
 
6
7
  RSpec.configure do |config|
7
8
  # some (optional) config here
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.1
4
+ version: 0.0.2
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: 2011-08-31 00:00:00.000000000Z
12
+ date: 2011-09-15 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70101403838000 !ruby/object:Gem::Requirement
16
+ requirement: &70178457085500 !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: *70101403838000
24
+ version_requirements: *70178457085500
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: abgabenrechner
27
- requirement: &70101403837580 !ruby/object:Gem::Requirement
27
+ requirement: &70178457085000 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
- - - ! '>='
30
+ - - =
31
31
  - !ruby/object:Gem::Version
32
- version: '0'
33
- type: :development
32
+ version: 0.3.1
33
+ type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70101403837580
35
+ version_requirements: *70178457085000
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:
@@ -53,8 +53,9 @@ files:
53
53
  - lib/betriebliche_altersvorsorge.rb
54
54
  - lib/drei_schichten_modell.rb
55
55
  - lib/drei_schichten_modell/version.rb
56
+ - lib/flex.rb
57
+ - lib/investment.rb
56
58
  - lib/riester.rb
57
- - spec/abgabenrechner_spec.rb
58
59
  - spec/altersvorsorgemix_spec.rb
59
60
  - spec/spec_helper.rb
60
61
  homepage: https://github.com/ffaerber/drei_schichten_modell
@@ -83,6 +84,5 @@ specification_version: 3
83
84
  summary: drei schichten model altersforsorge rechner infos dazu hier:http://www.3-schichten-modell.de
84
85
  oder einfach googlen
85
86
  test_files:
86
- - spec/abgabenrechner_spec.rb
87
87
  - spec/altersvorsorgemix_spec.rb
88
88
  - spec/spec_helper.rb
@@ -1,11 +0,0 @@
1
- require 'spec_helper'
2
- describe Abgabenrechner do
3
-
4
-
5
- it "Simple API call with HASH feedback" do
6
- parameter = { :lzz => 1, :re4 => 2600000, :stkl => 1 }
7
- BMF::Abgabenrechner.new(parameter).hash
8
- end
9
-
10
-
11
- end