drei_schichten_modell 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|