drei_schichten_modell 0.0.1 → 0.0.2

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.
@@ -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