drei_schichten_modell 0.0.1
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/.gitignore +6 -0
- data/.rspec +2 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/README.markdown +42 -0
- data/Rakefile +1 -0
- data/drei_schichten_modell.gemspec +28 -0
- data/lib/.DS_Store +0 -0
- data/lib/basis.rb +76 -0
- data/lib/betriebliche_altersvorsorge.rb +81 -0
- data/lib/drei_schichten_modell/version.rb +3 -0
- data/lib/drei_schichten_modell.rb +16 -0
- data/lib/riester.rb +46 -0
- data/spec/abgabenrechner_spec.rb +11 -0
- data/spec/altersvorsorgemix_spec.rb +28 -0
- data/spec/spec_helper.rb +8 -0
- metadata +88 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/.rvmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
rvm --create ruby-1.9.2-p290@drei_schichten_modell
|
data/Gemfile
ADDED
data/README.markdown
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# abgabenrechner
|
|
2
|
+
|
|
3
|
+
drei_schichten_modell.gem ist ein programm zu berechnung der zulagen.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Installation
|
|
7
|
+
Add this line to your Gemfile:
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
gem 'drei_schichten_modell'
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
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
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
Copyright (c) 2011 Felix Faerber. See LICENSE for details.
|
data/Rakefile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
|
3
|
+
require "drei_schichten_modell/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |s|
|
|
6
|
+
s.name = "drei_schichten_modell"
|
|
7
|
+
s.version = DreiSchichtenModell::VERSION
|
|
8
|
+
s.authors = ["Felix Faerber"]
|
|
9
|
+
s.email = ["mail@ffaerber.com"]
|
|
10
|
+
s.homepage = "https://github.com/ffaerber/drei_schichten_modell"
|
|
11
|
+
s.summary = %q{drei schichten model altersforsorge rechner infos dazu hier:http://www.3-schichten-modell.de oder einfach googlen}
|
|
12
|
+
s.description = %q{dieses rubygem berechnet den perfekten altersvorsorge mix aus allen drei schichten. und gibt angaben ueber die zulagenhoehe}
|
|
13
|
+
|
|
14
|
+
s.rubyforge_project = "drei_schichten_modell"
|
|
15
|
+
|
|
16
|
+
s.files = `git ls-files`.split("\n")
|
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
19
|
+
s.require_paths = ["lib"]
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# tests
|
|
23
|
+
s.add_development_dependency 'rspec'
|
|
24
|
+
|
|
25
|
+
# benchmarks
|
|
26
|
+
s.add_development_dependency 'abgabenrechner'
|
|
27
|
+
|
|
28
|
+
end
|
data/lib/.DS_Store
ADDED
|
Binary file
|
data/lib/basis.rb
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'abgabenrechner'
|
|
3
|
+
|
|
4
|
+
class Basis
|
|
5
|
+
|
|
6
|
+
attr_reader :anlage, :zulage, :eigenbeitrag, :rendite
|
|
7
|
+
attr_writer :debug, :steuerklasse, :basis_pa
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def initialize(bruttojahresgehalt)
|
|
12
|
+
@debug = false
|
|
13
|
+
@brutto_pa = bruttojahresgehalt
|
|
14
|
+
@basis_pa = 20000
|
|
15
|
+
@steuerklasse = 1
|
|
16
|
+
@plusdings = 50 # damit das ergebis besser stimmt
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def run
|
|
24
|
+
|
|
25
|
+
@lzzfreib = (@basis_pa/100)*72
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
p1 = {
|
|
29
|
+
:lzz => 1,
|
|
30
|
+
:re4 => @brutto_pa*100,
|
|
31
|
+
:stkl => @steuerklasse,
|
|
32
|
+
:r => 0,
|
|
33
|
+
:lzzfreib => @lzzfreib*100,
|
|
34
|
+
:krv => 0
|
|
35
|
+
}
|
|
36
|
+
p1e = BMF::Abgabenrechner.new(p1).ausgaben
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
p2 = {
|
|
40
|
+
:lzz => 1,
|
|
41
|
+
:re4 => @brutto_pa*100,
|
|
42
|
+
:stkl => @steuerklasse,
|
|
43
|
+
:r => 0,
|
|
44
|
+
:lzzfreib => 0,
|
|
45
|
+
:krv => 0
|
|
46
|
+
}
|
|
47
|
+
p2e = BMF::Abgabenrechner.new(p2).ausgaben
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@zulage = ((p2e[:lstlzz]-p1e[:lstlzz])/100)+@plusdings
|
|
51
|
+
@anlage = @basis_pa
|
|
52
|
+
@rendite = (@zulage*100)/@basis_pa
|
|
53
|
+
@eigenbeitrag= @anlage-@zulage
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
if @debug
|
|
58
|
+
puts "#{((p2e[:lstlzz]-p1e[:lstlzz])/100)+@plusdings} euro forderung"
|
|
59
|
+
puts "#{@basis_pa} euro gehen in die anlage"
|
|
60
|
+
puts "#{(p2e[:lstlzz]-p1e[:lstlzz])/@basis_pa}% Rendite"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
require 'abgabenrechner'
|
|
2
|
+
|
|
3
|
+
class BetrieblicheAltersvorsorge
|
|
4
|
+
attr_reader :anlage, :zulage, :rendite, :eigenbeitrag
|
|
5
|
+
attr_accessor :steuerklasse, :kinder, :kosten, :anlage, :debug
|
|
6
|
+
|
|
7
|
+
def initialize(bruttojahresgehalt)
|
|
8
|
+
@debug = false
|
|
9
|
+
@kinder = false
|
|
10
|
+
@brutto_pa = bruttojahresgehalt
|
|
11
|
+
@bav_pa = 185*12
|
|
12
|
+
@steuerklasse = 1
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def abgaben(bav_pa)
|
|
19
|
+
|
|
20
|
+
p = {
|
|
21
|
+
:lzz => 1,
|
|
22
|
+
:re4 => @brutto_pa*100,
|
|
23
|
+
:stkl => @steuerklasse,
|
|
24
|
+
:pvz => 1, # ohne kinder weil PKZ=1
|
|
25
|
+
:krv => 0,
|
|
26
|
+
:lzzfreib => bav_pa
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
pe = BMF::Abgabenrechner.new(p).ausgaben
|
|
30
|
+
|
|
31
|
+
@lohnsteuer = pe[:lstlzz]
|
|
32
|
+
@soli = pe[:solzlzz]
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
#maximal 7573.50 in west | 6540.75 in Ost
|
|
36
|
+
@alv = (@brutto_pa/100)*1.5
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
#maximal 7573.50 in west | 6540.75 in Ost
|
|
40
|
+
@grv = (@brutto_pa/100)*9.95
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@gkv = (@brutto_pa/100)*8.2
|
|
44
|
+
@pfv = @kinder ? (@brutto_pa/100)*0.975 : (@brutto_pa/100)*1.225
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
if @debug
|
|
48
|
+
puts "jahresgehalt: #{@brutto_pa}"
|
|
49
|
+
puts "BAV jahresbeitrag: #{bav_pa}"
|
|
50
|
+
puts "lohnsteuer: #{@lohnsteuer}"
|
|
51
|
+
puts "soli: #{@soli}"
|
|
52
|
+
puts "alv: #{@alv.to_f}"
|
|
53
|
+
puts "grv: #{@grv.to_f}"
|
|
54
|
+
puts "gkv: #{@gkv.to_f}"
|
|
55
|
+
puts "pfv: #{@pfv.to_f}"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
return (@lohnsteuer+@soli+@alv+@grv+@gkv+@pfv)/100
|
|
60
|
+
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def run
|
|
67
|
+
@ohnebav = @brutto_pa - abgaben(0).to_i
|
|
68
|
+
@mitbav = @brutto_pa - abgaben(@bav_pa*100).to_i
|
|
69
|
+
|
|
70
|
+
@zulage = (@mitbav - @ohnebav)
|
|
71
|
+
@anlage = @bav_pa
|
|
72
|
+
@eigenbeitrag = @anlage-@zulage
|
|
73
|
+
|
|
74
|
+
@rendite = @zulage*100/@anlage
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
end
|
data/lib/riester.rb
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
class Riester
|
|
2
|
+
|
|
3
|
+
attr_reader :anlage, :zulage, :rendite, :eigenbeitrag
|
|
4
|
+
attr_writer :partner, :partner, :partner_rentenversicherungspflichtig, :kinderzulage
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def initialize(bruttojahreseinkommen)
|
|
8
|
+
@bruttojahreseinkommen = bruttojahreseinkommen
|
|
9
|
+
@anlagebetrag = bruttojahreseinkommen/100*4 < 2100 ? bruttojahreseinkommen/100*4 : 2100
|
|
10
|
+
@grundzulage = 154
|
|
11
|
+
@partner = false
|
|
12
|
+
@partner_rentenversicherungspflichtig = false
|
|
13
|
+
@kinderzulage = 0
|
|
14
|
+
@zulage = 0
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def kinder(geburtsjahre)
|
|
19
|
+
geburtsjahre.each do |geburtsjahr|
|
|
20
|
+
@kinderzulage += geburtsjahr < 2008 ? 185 : 300
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def eigenbeitrag
|
|
26
|
+
eigenbeitrag = @anlagebetrag - @grundzulage - @kinderzulage
|
|
27
|
+
|
|
28
|
+
return eigenbeitrag > 60 ? eigenbeitrag : 60
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
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
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
describe DreiSchichtenModell do
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
it "get perfect dsm mix" do
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
avatar_info = {
|
|
9
|
+
:name => 'ich',
|
|
10
|
+
:income => 48000,
|
|
11
|
+
:age => 30,
|
|
12
|
+
:taxclass => 1,
|
|
13
|
+
: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
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
DreiSchichtenModell::AltersvorsorgeMix.new(avatar_info)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: drei_schichten_modell
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Felix Faerber
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2011-08-31 00:00:00.000000000Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: rspec
|
|
16
|
+
requirement: &70101403838000 !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '0'
|
|
22
|
+
type: :development
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: *70101403838000
|
|
25
|
+
- !ruby/object:Gem::Dependency
|
|
26
|
+
name: abgabenrechner
|
|
27
|
+
requirement: &70101403837580 !ruby/object:Gem::Requirement
|
|
28
|
+
none: false
|
|
29
|
+
requirements:
|
|
30
|
+
- - ! '>='
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '0'
|
|
33
|
+
type: :development
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: *70101403837580
|
|
36
|
+
description: dieses rubygem berechnet den perfekten altersvorsorge mix aus allen drei
|
|
37
|
+
schichten. und gibt angaben ueber die zulagenhoehe
|
|
38
|
+
email:
|
|
39
|
+
- mail@ffaerber.com
|
|
40
|
+
executables: []
|
|
41
|
+
extensions: []
|
|
42
|
+
extra_rdoc_files: []
|
|
43
|
+
files:
|
|
44
|
+
- .gitignore
|
|
45
|
+
- .rspec
|
|
46
|
+
- .rvmrc
|
|
47
|
+
- Gemfile
|
|
48
|
+
- README.markdown
|
|
49
|
+
- Rakefile
|
|
50
|
+
- drei_schichten_modell.gemspec
|
|
51
|
+
- lib/.DS_Store
|
|
52
|
+
- lib/basis.rb
|
|
53
|
+
- lib/betriebliche_altersvorsorge.rb
|
|
54
|
+
- lib/drei_schichten_modell.rb
|
|
55
|
+
- lib/drei_schichten_modell/version.rb
|
|
56
|
+
- lib/riester.rb
|
|
57
|
+
- spec/abgabenrechner_spec.rb
|
|
58
|
+
- spec/altersvorsorgemix_spec.rb
|
|
59
|
+
- spec/spec_helper.rb
|
|
60
|
+
homepage: https://github.com/ffaerber/drei_schichten_modell
|
|
61
|
+
licenses: []
|
|
62
|
+
post_install_message:
|
|
63
|
+
rdoc_options: []
|
|
64
|
+
require_paths:
|
|
65
|
+
- lib
|
|
66
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
67
|
+
none: false
|
|
68
|
+
requirements:
|
|
69
|
+
- - ! '>='
|
|
70
|
+
- !ruby/object:Gem::Version
|
|
71
|
+
version: '0'
|
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
|
+
none: false
|
|
74
|
+
requirements:
|
|
75
|
+
- - ! '>='
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: '0'
|
|
78
|
+
requirements: []
|
|
79
|
+
rubyforge_project: drei_schichten_modell
|
|
80
|
+
rubygems_version: 1.8.6
|
|
81
|
+
signing_key:
|
|
82
|
+
specification_version: 3
|
|
83
|
+
summary: drei schichten model altersforsorge rechner infos dazu hier:http://www.3-schichten-modell.de
|
|
84
|
+
oder einfach googlen
|
|
85
|
+
test_files:
|
|
86
|
+
- spec/abgabenrechner_spec.rb
|
|
87
|
+
- spec/altersvorsorgemix_spec.rb
|
|
88
|
+
- spec/spec_helper.rb
|