taxger 0.2.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +12 -2
- data/lib/taxger/einkommensteuer.rb +13 -3
- data/lib/taxger/lohnsteuer.rb +2 -0
- data/lib/taxger/lohnsteuer/bigdecimal.rb +3 -1
- data/lib/taxger/lohnsteuer/lohnsteuer2017.rb +1144 -0
- data/lib/taxger/lohnsteuer/lohnsteuer2018.rb +1144 -0
- data/lib/taxger/version.rb +1 -1
- data/src/converter.rb +2 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4bbecae25883119882c5394c6f611e43b7465036871f43c178c8545de49ab3ce
|
4
|
+
data.tar.gz: 9a5e0060bbceaa14345127cffa0d3bd175ac4a9b495218e7d7a0a451af8736b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4fa34cb2ee3439b6cc5fa0ed856833efc319341b7c250a4f68d3ed074834e2b2eb22f8d36fe006d933536008648f453fa979df3948df4db28839397b50e67c5d
|
7
|
+
data.tar.gz: 34004366519a419737acf8182ef6152855a3ac334841363ccf53e6bfa29b36af62115d4722cdb82fc541fb3b3eb290176c30fe0339da0f99e117ac8c92d0a45a
|
data/README.md
CHANGED
@@ -83,7 +83,17 @@ Finance.
|
|
83
83
|
|
84
84
|
To regenerate or update these files, have a look into `src/README.md`.
|
85
85
|
|
86
|
-
##
|
86
|
+
## Contributors
|
87
87
|
|
88
|
-
|
88
|
+
Original author (2015):
|
89
|
+
|
90
|
+
* [Malte Münchert](https://github.com/mpm)
|
91
|
+
|
92
|
+
Contributions from [Wundertax GmbH](https://www.wundertax.de/)
|
89
93
|
|
94
|
+
* [@jalyna](https://github.com/jalyna)
|
95
|
+
* [@bryszard](https://github.com/bryszard)
|
96
|
+
|
97
|
+
# Submitting contributions
|
98
|
+
|
99
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/mpm/taxger. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
|
@@ -17,7 +17,7 @@ module Taxger
|
|
17
17
|
ZONES = {
|
18
18
|
# Values are taken from this table:
|
19
19
|
# https://de.wikipedia.org/wiki/Einkommensteuer_(Deutschland)#Entwicklung_der_Parameter
|
20
|
-
# Non-existent parameters for E(i) with i > 3 have to be replaced with nil
|
20
|
+
# Non-existent parameters for E(i) with i > 3 have to be replaced with nil
|
21
21
|
# Non-existent parameters for a(i) with i > 2 have to be 0.
|
22
22
|
'2010' => [
|
23
23
|
# E(0), a(1) * F, b(1), 0
|
@@ -76,19 +76,29 @@ module Taxger
|
|
76
76
|
[ 53_665, 0, 0.42, -8394.14 + 0.42 * 53_665],
|
77
77
|
[254_447, 0, 0.45, -16027.52 + 0.45 * 254_447]
|
78
78
|
],
|
79
|
+
|
80
|
+
'2017' => [
|
81
|
+
[ 8_820, 1_007.27 * F, 0.14, 0],
|
82
|
+
[ 13_769, 223.76 * F, 0.2397, 939.57],
|
83
|
+
[ 54_057, 0, 0.42, 14_228.5],
|
84
|
+
[256_303, 0, 0.45, 99_171.82]
|
85
|
+
]
|
79
86
|
}
|
80
87
|
|
81
|
-
def calculate(year, income)
|
88
|
+
def calculate(year, income, pay_taxes_on = nil)
|
82
89
|
if !ZONES[year.to_s]
|
83
90
|
raise Einkommensteuer::Error.new("No data available for year #{year}")
|
84
91
|
end
|
85
92
|
|
93
|
+
pay_taxes_on ||= income
|
94
|
+
pay_taxes_on = pay_taxes_on * 0.01
|
86
95
|
income = income * 0.01
|
87
96
|
ZONES[year.to_s].reverse.each do |zone|
|
88
97
|
(zone_start, a, b, c) = zone
|
89
98
|
if income >= zone_start + 1
|
90
99
|
taxable = income - zone_start
|
91
|
-
tax = (a * (taxable ** 2) + b * taxable + c)
|
100
|
+
tax = (a * (taxable ** 2) + b * taxable + c)#.to_i * 100
|
101
|
+
tax = (((tax/income)*pay_taxes_on)).to_i * 100
|
92
102
|
|
93
103
|
# Vereinfachte Berechnung des Solidaritätszuschlagsfreibetrags:
|
94
104
|
# Nicht gültig für Steuerklasse III (162 EUR statt 81 EUR) und abweichend,
|
data/lib/taxger/lohnsteuer.rb
CHANGED
@@ -12,6 +12,8 @@ require 'taxger/lohnsteuer/lohnsteuer2014'
|
|
12
12
|
require 'taxger/lohnsteuer/lohnsteuer2015'
|
13
13
|
require 'taxger/lohnsteuer/lohnsteuer2015dezember'
|
14
14
|
require 'taxger/lohnsteuer/lohnsteuer2016'
|
15
|
+
require 'taxger/lohnsteuer/lohnsteuer2017'
|
16
|
+
require 'taxger/lohnsteuer/lohnsteuer2018'
|
15
17
|
|
16
18
|
module Taxger
|
17
19
|
module Lohnsteuer
|
@@ -0,0 +1,1144 @@
|
|
1
|
+
module Taxger
|
2
|
+
module Lohnsteuer
|
3
|
+
class Lohnsteuer2017
|
4
|
+
# CONSTANTS
|
5
|
+
|
6
|
+
# Tabelle fuer die Vomhundertsaetze des Versorgungsfreibetrags
|
7
|
+
TAB1 = [BigDecimal.value_of(0.0), BigDecimal.value_of(0.4), BigDecimal.value_of(0.384), BigDecimal.value_of(0.368),
|
8
|
+
BigDecimal.value_of(0.352), BigDecimal.value_of(0.336), BigDecimal.value_of(0.32), BigDecimal.value_of(0.304),
|
9
|
+
BigDecimal.value_of(0.288), BigDecimal.value_of(0.272), BigDecimal.value_of(0.256), BigDecimal.value_of(0.24),
|
10
|
+
BigDecimal.value_of(0.224), BigDecimal.value_of(0.208), BigDecimal.value_of(0.192), BigDecimal.value_of(0.176),
|
11
|
+
BigDecimal.value_of(0.16), BigDecimal.value_of(0.152), BigDecimal.value_of(0.144), BigDecimal.value_of(0.136),
|
12
|
+
BigDecimal.value_of(0.128), BigDecimal.value_of(0.12), BigDecimal.value_of(0.112), BigDecimal.value_of(0.104),
|
13
|
+
BigDecimal.value_of(0.096), BigDecimal.value_of(0.088), BigDecimal.value_of(0.08), BigDecimal.value_of(0.072),
|
14
|
+
BigDecimal.value_of(0.064), BigDecimal.value_of(0.056), BigDecimal.value_of(0.048), BigDecimal.value_of(0.04),
|
15
|
+
BigDecimal.value_of(0.032), BigDecimal.value_of(0.024), BigDecimal.value_of(0.016), BigDecimal.value_of(0.008),
|
16
|
+
BigDecimal.value_of(0.0)]
|
17
|
+
|
18
|
+
# Tabelle fuer die Hoechstbetrage des Versorgungsfreibetrags
|
19
|
+
TAB2 = [BigDecimal.value_of(0), BigDecimal.value_of(3000), BigDecimal.value_of(2880), BigDecimal.value_of(2760),
|
20
|
+
BigDecimal.value_of(2640), BigDecimal.value_of(2520), BigDecimal.value_of(2400), BigDecimal.value_of(2280),
|
21
|
+
BigDecimal.value_of(2160), BigDecimal.value_of(2040), BigDecimal.value_of(1920), BigDecimal.value_of(1800),
|
22
|
+
BigDecimal.value_of(1680), BigDecimal.value_of(1560), BigDecimal.value_of(1440), BigDecimal.value_of(1320),
|
23
|
+
BigDecimal.value_of(1200), BigDecimal.value_of(1140), BigDecimal.value_of(1080), BigDecimal.value_of(1020),
|
24
|
+
BigDecimal.value_of(960), BigDecimal.value_of(900), BigDecimal.value_of(840), BigDecimal.value_of(780),
|
25
|
+
BigDecimal.value_of(720), BigDecimal.value_of(660), BigDecimal.value_of(600), BigDecimal.value_of(540),
|
26
|
+
BigDecimal.value_of(480), BigDecimal.value_of(420), BigDecimal.value_of(360), BigDecimal.value_of(300),
|
27
|
+
BigDecimal.value_of(240), BigDecimal.value_of(180), BigDecimal.value_of(120), BigDecimal.value_of(60),
|
28
|
+
BigDecimal.value_of(0)]
|
29
|
+
|
30
|
+
# Tabelle fuer die Zuschlaege zum Versorgungsfreibetrag
|
31
|
+
TAB3 = [BigDecimal.value_of(0), BigDecimal.value_of(900), BigDecimal.value_of(864), BigDecimal.value_of(828),
|
32
|
+
BigDecimal.value_of(792), BigDecimal.value_of(756), BigDecimal.value_of(720), BigDecimal.value_of(684),
|
33
|
+
BigDecimal.value_of(648), BigDecimal.value_of(612), BigDecimal.value_of(576), BigDecimal.value_of(540),
|
34
|
+
BigDecimal.value_of(504), BigDecimal.value_of(468), BigDecimal.value_of(432), BigDecimal.value_of(396),
|
35
|
+
BigDecimal.value_of(360), BigDecimal.value_of(342), BigDecimal.value_of(324), BigDecimal.value_of(306),
|
36
|
+
BigDecimal.value_of(288), BigDecimal.value_of(270), BigDecimal.value_of(252), BigDecimal.value_of(234),
|
37
|
+
BigDecimal.value_of(216), BigDecimal.value_of(198), BigDecimal.value_of(180), BigDecimal.value_of(162),
|
38
|
+
BigDecimal.value_of(144), BigDecimal.value_of(126), BigDecimal.value_of(108), BigDecimal.value_of(90),
|
39
|
+
BigDecimal.value_of(72), BigDecimal.value_of(54), BigDecimal.value_of(36), BigDecimal.value_of(18),
|
40
|
+
BigDecimal.value_of(0)]
|
41
|
+
|
42
|
+
# Tabelle fuer die Vomhundertsaetze des Altersentlastungsbetrags
|
43
|
+
TAB4 = [BigDecimal.value_of(0.0), BigDecimal.value_of(0.4), BigDecimal.value_of(0.384), BigDecimal.value_of(0.368),
|
44
|
+
BigDecimal.value_of(0.352), BigDecimal.value_of(0.336), BigDecimal.value_of(0.32), BigDecimal.value_of(0.304),
|
45
|
+
BigDecimal.value_of(0.288), BigDecimal.value_of(0.272), BigDecimal.value_of(0.256), BigDecimal.value_of(0.24),
|
46
|
+
BigDecimal.value_of(0.224), BigDecimal.value_of(0.208), BigDecimal.value_of(0.192), BigDecimal.value_of(0.176),
|
47
|
+
BigDecimal.value_of(0.16), BigDecimal.value_of(0.152), BigDecimal.value_of(0.144), BigDecimal.value_of(0.136),
|
48
|
+
BigDecimal.value_of(0.128), BigDecimal.value_of(0.12), BigDecimal.value_of(0.112), BigDecimal.value_of(0.104),
|
49
|
+
BigDecimal.value_of(0.096), BigDecimal.value_of(0.088), BigDecimal.value_of(0.08), BigDecimal.value_of(0.072),
|
50
|
+
BigDecimal.value_of(0.064), BigDecimal.value_of(0.056), BigDecimal.value_of(0.048), BigDecimal.value_of(0.04),
|
51
|
+
BigDecimal.value_of(0.032), BigDecimal.value_of(0.024), BigDecimal.value_of(0.016), BigDecimal.value_of(0.008),
|
52
|
+
BigDecimal.value_of(0.0)]
|
53
|
+
|
54
|
+
# Tabelle fuer die Hoechstbetraege des Altersentlastungsbetrags
|
55
|
+
TAB5 = [BigDecimal.value_of(0), BigDecimal.value_of(1900), BigDecimal.value_of(1824), BigDecimal.value_of(1748),
|
56
|
+
BigDecimal.value_of(1672), BigDecimal.value_of(1596), BigDecimal.value_of(1520), BigDecimal.value_of(1444),
|
57
|
+
BigDecimal.value_of(1368), BigDecimal.value_of(1292), BigDecimal.value_of(1216), BigDecimal.value_of(1140),
|
58
|
+
BigDecimal.value_of(1064), BigDecimal.value_of(988), BigDecimal.value_of(912), BigDecimal.value_of(836),
|
59
|
+
BigDecimal.value_of(760), BigDecimal.value_of(722), BigDecimal.value_of(684), BigDecimal.value_of(646),
|
60
|
+
BigDecimal.value_of(608), BigDecimal.value_of(570), BigDecimal.value_of(532), BigDecimal.value_of(494),
|
61
|
+
BigDecimal.value_of(456), BigDecimal.value_of(418), BigDecimal.value_of(380), BigDecimal.value_of(342),
|
62
|
+
BigDecimal.value_of(304), BigDecimal.value_of(266), BigDecimal.value_of(228), BigDecimal.value_of(190),
|
63
|
+
BigDecimal.value_of(152), BigDecimal.value_of(114), BigDecimal.value_of(76), BigDecimal.value_of(38),
|
64
|
+
BigDecimal.value_of(0)]
|
65
|
+
|
66
|
+
# Zahlenkonstanten fuer im Plan oft genutzte BigDecimal Werte
|
67
|
+
ZAHL1 = BigDecimal.ONE
|
68
|
+
ZAHL2 = BigDecimal.new(2)
|
69
|
+
ZAHL5 = BigDecimal.new(5)
|
70
|
+
ZAHL7 = BigDecimal.new(7)
|
71
|
+
ZAHL12 = BigDecimal.new(12)
|
72
|
+
ZAHL100 = BigDecimal.new(100)
|
73
|
+
ZAHL360 = BigDecimal.new(360)
|
74
|
+
ZAHL500 = BigDecimal.new(500)
|
75
|
+
ZAHL700 = BigDecimal.new(700)
|
76
|
+
ZAHL1000 = BigDecimal.new(1000)
|
77
|
+
ZAHL10000 = BigDecimal.new(10000)
|
78
|
+
|
79
|
+
attr_accessor :bk
|
80
|
+
attr_accessor :bks
|
81
|
+
attr_accessor :bkv
|
82
|
+
attr_accessor :lstlzz
|
83
|
+
attr_accessor :solzlzz
|
84
|
+
attr_accessor :solzs
|
85
|
+
attr_accessor :solzv
|
86
|
+
attr_accessor :sts
|
87
|
+
attr_accessor :stv
|
88
|
+
attr_accessor :vkvlzz
|
89
|
+
attr_accessor :vkvsonst
|
90
|
+
attr_accessor :vfrb
|
91
|
+
attr_accessor :vfrbs1
|
92
|
+
attr_accessor :vfrbs2
|
93
|
+
attr_accessor :wvfrb
|
94
|
+
attr_accessor :wvfrbo
|
95
|
+
attr_accessor :wvfrbm
|
96
|
+
|
97
|
+
INPUT_VARS = [:af, :ajahr, :alter1, :entsch, :f, :jfreib, :jhinzu, :jre4, :jvbez, :krv, :kvz, :lzz, :lzzfreib, :lzzhinzu, :pkpv, :pkv, :pvs, :pvz, :r, :re4, :sonstb, :sterbe, :stkl, :vbez, :vbezm, :vbezs, :vbs, :vjahr, :vkapa, :vmt, :zkf, :zmvb, :jre4ent, :sonstent]
|
98
|
+
OUTPUT_VARS = [:bk, :bks, :bkv, :lstlzz, :solzlzz, :solzs, :solzv, :sts, :stv, :vkvlzz, :vkvsonst, :vfrb, :vfrbs1, :vfrbs2, :wvfrb, :wvfrbo, :wvfrbm]
|
99
|
+
def initialize(params)
|
100
|
+
raise "Unknown parameters: #{params.keys - INPUT_VARS}" if params.keys - INPUT_VARS != []
|
101
|
+
# INPUTS
|
102
|
+
|
103
|
+
# 1, wenn die Anwendung des Faktorverfahrens gewählt wurden (nur in Steuerklasse IV)
|
104
|
+
@af = 1 # int
|
105
|
+
|
106
|
+
# Auf die Vollendung des 64. Lebensjahres folgende
|
107
|
+
# Kalenderjahr (erforderlich, wenn ALTER1=1)
|
108
|
+
@ajahr = 0 # int
|
109
|
+
|
110
|
+
# 1, wenn das 64. Lebensjahr zu Beginn des Kalenderjahres vollendet wurde, in dem
|
111
|
+
# der Lohnzahlungszeitraum endet (§ 24 a EStG), sonst = 0
|
112
|
+
@alter1 = 0 # int
|
113
|
+
|
114
|
+
# in VKAPA und VMT enthaltene Entschädigungen nach §24 Nummer 1 EStG in Cent
|
115
|
+
@entsch = BigDecimal.new(0) # BigDecimal
|
116
|
+
|
117
|
+
# eingetragener Faktor mit drei Nachkommastellen
|
118
|
+
@f = 1.0 # double
|
119
|
+
|
120
|
+
# Jahresfreibetrag nach Maßgabe der Eintragungen auf der
|
121
|
+
# Lohnsteuerkarte in Cents (ggf. 0)
|
122
|
+
@jfreib = BigDecimal.new(0) # BigDecimal
|
123
|
+
|
124
|
+
# Jahreshinzurechnungsbetrag in Cents (ggf. 0)
|
125
|
+
@jhinzu = BigDecimal.new(0) # BigDecimal
|
126
|
+
|
127
|
+
# Voraussichtlicher Jahresarbeitslohn ohne sonstige Bezüge und ohne Vergütung für mehrjährige Tätigkeit in Cent.
|
128
|
+
# Anmerkung: Die Eingabe dieses Feldes (ggf. 0) ist erforderlich bei Eingabe „sonsti-ger Bezüge“ (Feld SONSTB)
|
129
|
+
# oder bei Eingabe der „Vergütung für mehrjährige Tätigkeit“ (Feld VMT).
|
130
|
+
# Sind in einem vorangegangenen Abrechnungszeitraum bereits sonstige Bezüge gezahlt worden, so sind sie dem
|
131
|
+
# voraussichtlichen Jahresarbeitslohn hinzuzurechnen. Vergütungen für mehrere Jahres aus einem vorangegangenen
|
132
|
+
# Abrechnungszeitraum sind in voller Höhe hinzuzurechnen.
|
133
|
+
@jre4 = BigDecimal.new(0) # BigDecimal
|
134
|
+
|
135
|
+
# In JRE4 enthaltene Versorgungsbezuege in Cents (ggf. 0)
|
136
|
+
@jvbez = BigDecimal.new(0) # BigDecimal
|
137
|
+
|
138
|
+
# Merker für die Vorsorgepauschale
|
139
|
+
# 2 = der Arbeitnehmer ist NICHT in der gesetzlichen Rentenversicherung versichert.
|
140
|
+
#
|
141
|
+
# 1 = der Arbeitnehmer ist in der gesetzlichen Rentenversicherung versichert, es gilt die
|
142
|
+
# Beitragsbemessungsgrenze OST.
|
143
|
+
#
|
144
|
+
# 0 = der Arbeitnehmer ist in der gesetzlichen Rentenversicherung versichert, es gilt die
|
145
|
+
# Beitragsbemessungsgrenze WEST.
|
146
|
+
@krv = 0 # int
|
147
|
+
|
148
|
+
# Einkommensbezogener Zusatzbeitragssatz eines gesetzlich krankenversicherten Arbeitnehmers,
|
149
|
+
# auf dessen Basis der an die Krankenkasse zu zahlende Zusatzbeitrag berechnet wird,
|
150
|
+
# in Prozent (bspw. 0,90 für 0,90 %) mit 2 Dezimalstellen.
|
151
|
+
# Der von der Kranken-kasse festgesetzte Zusatzbeitragssatz ist bei Abweichungen unmaßgeblich.
|
152
|
+
@kvz = BigDecimal.new(0) # BigDecimal
|
153
|
+
|
154
|
+
# Lohnzahlungszeitraum:
|
155
|
+
# 1 = Jahr
|
156
|
+
# 2 = Monat
|
157
|
+
# 3 = Woche
|
158
|
+
# 4 = Tag
|
159
|
+
@lzz = 0 # int
|
160
|
+
|
161
|
+
# In der Lohnsteuerkarte des Arbeitnehmers eingetragener Freibetrag für
|
162
|
+
# den Lohnzahlungszeitraum in Cent
|
163
|
+
@lzzfreib = BigDecimal.new(0) # BigDecimal
|
164
|
+
|
165
|
+
# In der Lohnsteuerkarte des Arbeitnehmers eingetragener Hinzurechnungsbetrag
|
166
|
+
# für den Lohnzahlungszeitraum in Cent
|
167
|
+
@lzzhinzu = BigDecimal.new(0) # BigDecimal
|
168
|
+
|
169
|
+
# Dem Arbeitgeber mitgeteilte Zahlungen des Arbeitnehmers zur privaten
|
170
|
+
# Kranken- bzw. Pflegeversicherung im Sinne des §10 Abs. 1 Nr. 3 EStG 2010
|
171
|
+
# als Monatsbetrag in Cent (der Wert ist inabhängig vom Lohnzahlungszeitraum immer
|
172
|
+
# als Monatsbetrag anzugeben).
|
173
|
+
@pkpv = BigDecimal.new(0) # BigDecimal
|
174
|
+
|
175
|
+
# Krankenversicherung:
|
176
|
+
# 0 = gesetzlich krankenversicherte Arbeitnehmer
|
177
|
+
# 1 = ausschließlich privat krankenversicherte Arbeitnehmer OHNE Arbeitgeberzuschuss
|
178
|
+
# 2 = ausschließlich privat krankenversicherte Arbeitnehmer MIT Arbeitgeberzuschuss
|
179
|
+
@pkv = 0 # int
|
180
|
+
|
181
|
+
# 1, wenn bei der sozialen Pflegeversicherung die Besonderheiten in Sachsen zu berücksichtigen sind bzw.
|
182
|
+
# zu berücksichtigen wären, sonst 0.
|
183
|
+
@pvs = 0 # int
|
184
|
+
|
185
|
+
# 1, wenn er der Arbeitnehmer den Zuschlag zur sozialen Pflegeversicherung
|
186
|
+
# zu zahlen hat, sonst 0.
|
187
|
+
@pvz = 0 # int
|
188
|
+
|
189
|
+
# Religionsgemeinschaft des Arbeitnehmers lt. Lohnsteuerkarte (bei
|
190
|
+
# keiner Religionszugehoerigkeit = 0)
|
191
|
+
@r = 0 # int
|
192
|
+
|
193
|
+
# Steuerpflichtiger Arbeitslohn vor Beruecksichtigung der Freibetraege
|
194
|
+
# fuer Versorgungsbezuege, des Altersentlastungsbetrags und des auf
|
195
|
+
# der Lohnsteuerkarte fuer den Lohnzahlungszeitraum eingetragenen
|
196
|
+
# Freibetrags in Cents.
|
197
|
+
@re4 = BigDecimal.new(0) # BigDecimal
|
198
|
+
|
199
|
+
# Sonstige Bezuege (ohne Verguetung aus mehrjaehriger Taetigkeit) einschliesslich
|
200
|
+
# Sterbegeld bei Versorgungsbezuegen sowie Kapitalauszahlungen/Abfindungen,
|
201
|
+
# soweit es sich nicht um Bezuege fuer mehrere Jahre handelt in Cents (ggf. 0)
|
202
|
+
@sonstb = BigDecimal.new(0) # BigDecimal
|
203
|
+
|
204
|
+
# Sterbegeld bei Versorgungsbezuegen sowie Kapitalauszahlungen/Abfindungen,
|
205
|
+
# soweit es sich nicht um Bezuege fuer mehrere Jahre handelt
|
206
|
+
# (in SONSTB enthalten) in Cents
|
207
|
+
@sterbe = BigDecimal.new(0) # BigDecimal
|
208
|
+
|
209
|
+
# Steuerklasse:
|
210
|
+
# 1 = I
|
211
|
+
# 2 = II
|
212
|
+
# 3 = III
|
213
|
+
# 4 = IV
|
214
|
+
# 5 = V
|
215
|
+
# 6 = VI
|
216
|
+
@stkl = 0 # int
|
217
|
+
|
218
|
+
# In RE4 enthaltene Versorgungsbezuege in Cents (ggf. 0)
|
219
|
+
@vbez = BigDecimal.new(0) # BigDecimal
|
220
|
+
|
221
|
+
# Vorsorgungsbezug im Januar 2005 bzw. fuer den ersten vollen Monat
|
222
|
+
# in Cents
|
223
|
+
@vbezm = BigDecimal.new(0) # BigDecimal
|
224
|
+
|
225
|
+
# Voraussichtliche Sonderzahlungen im Kalenderjahr des Versorgungsbeginns
|
226
|
+
# bei Versorgungsempfaengern ohne Sterbegeld, Kapitalauszahlungen/Abfindungen
|
227
|
+
# bei Versorgungsbezuegen in Cents
|
228
|
+
@vbezs = BigDecimal.new(0) # BigDecimal
|
229
|
+
|
230
|
+
# In SONSTB enthaltene Versorgungsbezuege einschliesslich Sterbegeld
|
231
|
+
# in Cents (ggf. 0)
|
232
|
+
@vbs = BigDecimal.new(0) # BigDecimal
|
233
|
+
|
234
|
+
# Jahr, in dem der Versorgungsbezug erstmalig gewaehrt wurde; werden
|
235
|
+
# mehrere Versorgungsbezuege gezahlt, so gilt der aelteste erstmalige Bezug
|
236
|
+
@vjahr = 0 # int
|
237
|
+
|
238
|
+
# Kapitalauszahlungen / Abfindungen / Nachzahlungen bei Versorgungsbezügen
|
239
|
+
# für mehrere Jahre in Cent (ggf. 0)
|
240
|
+
@vkapa = BigDecimal.new(0) # BigDecimal
|
241
|
+
|
242
|
+
# Vergütung für mehrjährige Tätigkeit ohne Kapitalauszahlungen und ohne Abfindungen
|
243
|
+
# bei Versorgungsbezügen in Cent (ggf. 0)
|
244
|
+
@vmt = BigDecimal.new(0) # BigDecimal
|
245
|
+
|
246
|
+
# Zahl der Freibetraege fuer Kinder (eine Dezimalstelle, nur bei Steuerklassen
|
247
|
+
# I, II, III und IV)
|
248
|
+
@zkf = BigDecimal.new(0) # BigDecimal
|
249
|
+
|
250
|
+
# Zahl der Monate, fuer die Versorgungsbezuege gezahlt werden (nur
|
251
|
+
# erforderlich bei Jahresberechnung (LZZ = 1)
|
252
|
+
@zmvb = 0 # int
|
253
|
+
|
254
|
+
# In JRE4 enthaltene Entschädigungen nach § 24 Nummer 1 EStG in Cent
|
255
|
+
@jre4ent = BigDecimal.ZERO # BigDecimal
|
256
|
+
|
257
|
+
# In SONSTB enthaltene Entschädigungen nach § 24 Nummer 1 EStG in Cent
|
258
|
+
@sonstent = BigDecimal.ZERO # BigDecimal
|
259
|
+
|
260
|
+
# OUTPUTS
|
261
|
+
|
262
|
+
# Bemessungsgrundlage fuer die Kirchenlohnsteuer in Cents
|
263
|
+
@bk = BigDecimal.new(0) # BigDecimal
|
264
|
+
|
265
|
+
# Bemessungsgrundlage der sonstigen Einkuenfte (ohne Verguetung
|
266
|
+
# fuer mehrjaehrige Taetigkeit) fuer die Kirchenlohnsteuer in Cents
|
267
|
+
@bks = BigDecimal.new(0) # BigDecimal
|
268
|
+
@bkv = BigDecimal.new(0) # BigDecimal
|
269
|
+
|
270
|
+
# Fuer den Lohnzahlungszeitraum einzubehaltende Lohnsteuer in Cents
|
271
|
+
@lstlzz = BigDecimal.new(0) # BigDecimal
|
272
|
+
|
273
|
+
# Fuer den Lohnzahlungszeitraum einzubehaltender Solidaritaetszuschlag
|
274
|
+
# in Cents
|
275
|
+
@solzlzz = BigDecimal.new(0) # BigDecimal
|
276
|
+
|
277
|
+
# Solidaritaetszuschlag fuer sonstige Bezuege (ohne Verguetung fuer mehrjaehrige
|
278
|
+
# Taetigkeit) in Cents
|
279
|
+
@solzs = BigDecimal.new(0) # BigDecimal
|
280
|
+
|
281
|
+
# Solidaritaetszuschlag fuer die Verguetung fuer mehrjaehrige Taetigkeit in
|
282
|
+
# Cents
|
283
|
+
@solzv = BigDecimal.new(0) # BigDecimal
|
284
|
+
|
285
|
+
# Lohnsteuer fuer sonstige Einkuenfte (ohne Verguetung fuer mehrjaehrige
|
286
|
+
# Taetigkeit) in Cents
|
287
|
+
@sts = BigDecimal.new(0) # BigDecimal
|
288
|
+
|
289
|
+
# Lohnsteuer fuer Verguetung fuer mehrjaehrige Taetigkeit in Cents
|
290
|
+
@stv = BigDecimal.new(0) # BigDecimal
|
291
|
+
|
292
|
+
# Für den Lohnzahlungszeitraum berücksichtigte Beiträge des Arbeitnehmers zur
|
293
|
+
# privaten Basis-Krankenversicherung und privaten Pflege-Pflichtversicherung (ggf. auch
|
294
|
+
# die Mindestvorsorgepauschale) in Cent beim laufenden Arbeitslohn. Für Zwecke der Lohn-
|
295
|
+
# steuerbescheinigung sind die einzelnen Ausgabewerte außerhalb des eigentlichen Lohn-
|
296
|
+
# steuerbescheinigungsprogramms zu addieren; hinzuzurechnen sind auch die Ausgabewerte
|
297
|
+
# VKVSONST
|
298
|
+
@vkvlzz = BigDecimal.new(0) # BigDecimal
|
299
|
+
|
300
|
+
# Für den Lohnzahlungszeitraum berücksichtigte Beiträge des Arbeitnehmers
|
301
|
+
# zur privaten Basis-Krankenversicherung und privaten Pflege-Pflichtversicherung (ggf.
|
302
|
+
# auch die Mindestvorsorgepauschale) in Cent bei sonstigen Bezügen. Der Ausgabewert kann
|
303
|
+
# auch negativ sein. Für tarifermäßigt zu besteuernde Vergütungen für mehrjährige
|
304
|
+
# Tätigkeiten enthält der PAP keinen entsprechenden Ausgabewert.
|
305
|
+
@vkvsonst = BigDecimal.new(0) # BigDecimal
|
306
|
+
|
307
|
+
# INTERNALS
|
308
|
+
|
309
|
+
# Altersentlastungsbetrag nach Alterseinkünftegesetz in €,
|
310
|
+
# Cent (2 Dezimalstellen)
|
311
|
+
@alte = BigDecimal.new(0)
|
312
|
+
|
313
|
+
# Arbeitnehmer-Pauschbetrag in EURO
|
314
|
+
@anp = BigDecimal.new(0)
|
315
|
+
|
316
|
+
# Auf den Lohnzahlungszeitraum entfallender Anteil von Jahreswerten
|
317
|
+
# auf ganze Cents abgerundet
|
318
|
+
@anteil1 = BigDecimal.new(0)
|
319
|
+
|
320
|
+
# Bemessungsgrundlage für Altersentlastungsbetrag in €, Cent
|
321
|
+
# (2 Dezimalstellen)
|
322
|
+
@bmg = BigDecimal.new(0)
|
323
|
+
|
324
|
+
# Beitragsbemessungsgrenze in der gesetzlichen Krankenversicherung
|
325
|
+
# und der sozialen Pflegeversicherung in Euro
|
326
|
+
@bbgkvpv = BigDecimal.new(0)
|
327
|
+
|
328
|
+
# allgemeine Beitragsbemessungsgrenze in der allgemeinen Renten-versicherung in Euro
|
329
|
+
@bbgrv = BigDecimal.new(0)
|
330
|
+
|
331
|
+
# Differenz zwischen ST1 und ST2 in EURO
|
332
|
+
@diff = BigDecimal.new(0)
|
333
|
+
|
334
|
+
# Entlastungsbetrag fuer Alleinerziehende in EURO
|
335
|
+
@efa = BigDecimal.new(0)
|
336
|
+
|
337
|
+
# Versorgungsfreibetrag in €, Cent (2 Dezimalstellen)
|
338
|
+
@fvb = BigDecimal.new(0)
|
339
|
+
|
340
|
+
# Versorgungsfreibetrag in €, Cent (2 Dezimalstellen) für die Berechnung
|
341
|
+
# der Lohnsteuer für den sonstigen Bezug
|
342
|
+
@fvbso = BigDecimal.new(0)
|
343
|
+
|
344
|
+
# Zuschlag zum Versorgungsfreibetrag in EURO
|
345
|
+
@fvbz = BigDecimal.new(0)
|
346
|
+
|
347
|
+
# Zuschlag zum Versorgungsfreibetrag in EURO fuer die Berechnung
|
348
|
+
# der Lohnsteuer beim sonstigen Bezug
|
349
|
+
@fvbzso = BigDecimal.new(0)
|
350
|
+
|
351
|
+
# Grundfreibetrag in Euro
|
352
|
+
@gfb = BigDecimal.new(0)
|
353
|
+
|
354
|
+
# Maximaler Altersentlastungsbetrag in €
|
355
|
+
@hbalte = BigDecimal.new(0)
|
356
|
+
|
357
|
+
# Massgeblicher maximaler Versorgungsfreibetrag in €
|
358
|
+
@hfvb = BigDecimal.new(0)
|
359
|
+
|
360
|
+
# Massgeblicher maximaler Zuschlag zum Versorgungsfreibetrag in €,Cent
|
361
|
+
# (2 Dezimalstellen)
|
362
|
+
@hfvbz = BigDecimal.new(0)
|
363
|
+
|
364
|
+
# Massgeblicher maximaler Zuschlag zum Versorgungsfreibetrag in €, Cent
|
365
|
+
# (2 Dezimalstellen) für die Berechnung der Lohnsteuer für den
|
366
|
+
# sonstigen Bezug
|
367
|
+
@hfvbzso = BigDecimal.new(0)
|
368
|
+
|
369
|
+
# Nummer der Tabellenwerte fuer Versorgungsparameter
|
370
|
+
@j = 0
|
371
|
+
|
372
|
+
# Jahressteuer nach § 51a EStG, aus der Solidaritaetszuschlag und
|
373
|
+
# Bemessungsgrundlage fuer die Kirchenlohnsteuer ermittelt werden in EURO
|
374
|
+
@jbmg = BigDecimal.new(0)
|
375
|
+
|
376
|
+
# Auf einen Jahreslohn hochgerechneter LZZFREIB in €, Cent
|
377
|
+
# (2 Dezimalstellen)
|
378
|
+
@jlfreib = BigDecimal.new(0)
|
379
|
+
|
380
|
+
# Auf einen Jahreslohn hochgerechnete LZZHINZU in €, Cent
|
381
|
+
# (2 Dezimalstellen)
|
382
|
+
@jlhinzu = BigDecimal.new(0)
|
383
|
+
|
384
|
+
# Jahreswert, dessen Anteil fuer einen Lohnzahlungszeitraum in
|
385
|
+
# UPANTEIL errechnet werden soll in Cents
|
386
|
+
@jw = BigDecimal.new(0)
|
387
|
+
|
388
|
+
# Nummer der Tabellenwerte fuer Parameter bei Altersentlastungsbetrag
|
389
|
+
@k = 0
|
390
|
+
|
391
|
+
# Merker für Berechnung Lohnsteuer für mehrjährige Tätigkeit.
|
392
|
+
# 0 = normale Steuerberechnung
|
393
|
+
# 1 = Steuerberechnung für mehrjährige Tätigkeit
|
394
|
+
# 2 = entfällt
|
395
|
+
@kennvmt = 0
|
396
|
+
|
397
|
+
# Summe der Freibetraege fuer Kinder in EURO
|
398
|
+
@kfb = BigDecimal.new(0)
|
399
|
+
|
400
|
+
# Beitragssatz des Arbeitgebers zur Krankenversicherung
|
401
|
+
@kvsatzag = BigDecimal.new(0)
|
402
|
+
|
403
|
+
# Beitragssatz des Arbeitnehmers zur Krankenversicherung
|
404
|
+
@kvsatzan = BigDecimal.new(0)
|
405
|
+
|
406
|
+
# Kennzahl fuer die Einkommensteuer-Tabellenart:
|
407
|
+
# 1 = Grundtabelle
|
408
|
+
# 2 = Splittingtabelle
|
409
|
+
@kztab = 0
|
410
|
+
|
411
|
+
# Jahreslohnsteuer in EURO
|
412
|
+
@lstjahr = BigDecimal.new(0)
|
413
|
+
|
414
|
+
# Zwischenfelder der Jahreslohnsteuer in Cent
|
415
|
+
@lst1 = BigDecimal.new(0)
|
416
|
+
@lst2 = BigDecimal.new(0)
|
417
|
+
@lst3 = BigDecimal.new(0)
|
418
|
+
@lstoso = BigDecimal.new(0)
|
419
|
+
@lstso = BigDecimal.new(0)
|
420
|
+
|
421
|
+
# Mindeststeuer fuer die Steuerklassen V und VI in EURO
|
422
|
+
@mist = BigDecimal.new(0)
|
423
|
+
|
424
|
+
# Beitragssatz des Arbeitgebers zur Pflegeversicherung
|
425
|
+
@pvsatzag = BigDecimal.new(0)
|
426
|
+
|
427
|
+
# Beitragssatz des Arbeitnehmers zur Pflegeversicherung
|
428
|
+
@pvsatzan = BigDecimal.new(0)
|
429
|
+
|
430
|
+
# Beitragssatz des Arbeitnehmers in der allgemeinen gesetzlichen Rentenversicherung (4 Dezimalstellen)
|
431
|
+
@rvsatzan = BigDecimal.new(0)
|
432
|
+
|
433
|
+
# Rechenwert in Gleitkommadarstellung
|
434
|
+
@rw = BigDecimal.new(0)
|
435
|
+
|
436
|
+
# Sonderausgaben-Pauschbetrag in EURO
|
437
|
+
@sap = BigDecimal.new(0)
|
438
|
+
|
439
|
+
# Freigrenze fuer den Solidaritaetszuschlag in EURO
|
440
|
+
@solzfrei = BigDecimal.new(0)
|
441
|
+
|
442
|
+
# Solidaritaetszuschlag auf die Jahreslohnsteuer in EURO, C (2 Dezimalstellen)
|
443
|
+
@solzj = BigDecimal.new(0)
|
444
|
+
|
445
|
+
# Zwischenwert fuer den Solidaritaetszuschlag auf die Jahreslohnsteuer
|
446
|
+
# in EURO, C (2 Dezimalstellen)
|
447
|
+
@solzmin = BigDecimal.new(0)
|
448
|
+
|
449
|
+
# Tarifliche Einkommensteuer in EURO
|
450
|
+
@st = BigDecimal.new(0)
|
451
|
+
|
452
|
+
# Tarifliche Einkommensteuer auf das 1,25-fache ZX in EURO
|
453
|
+
@st1 = BigDecimal.new(0)
|
454
|
+
|
455
|
+
# Tarifliche Einkommensteuer auf das 0,75-fache ZX in EURO
|
456
|
+
@st2 = BigDecimal.new(0)
|
457
|
+
|
458
|
+
# Zwischenfeld zur Ermittlung der Steuer auf Vergütungen für mehrjährige Tätigkeit
|
459
|
+
@stovmt = BigDecimal.new(0)
|
460
|
+
|
461
|
+
# Teilbetragssatz der Vorsorgepauschale für die Rentenversicherung (2 Dezimalstellen)
|
462
|
+
@tbsvorv = BigDecimal.new(0)
|
463
|
+
|
464
|
+
# Bemessungsgrundlage fuer den Versorgungsfreibetrag in Cents
|
465
|
+
@vbezb = BigDecimal.new(0)
|
466
|
+
|
467
|
+
# Bemessungsgrundlage für den Versorgungsfreibetrag in Cent für
|
468
|
+
# den sonstigen Bezug
|
469
|
+
@vbezbso = BigDecimal.new(0)
|
470
|
+
|
471
|
+
# Hoechstbetrag der Vorsorgepauschale nach Alterseinkuenftegesetz in EURO, C
|
472
|
+
@vhb = BigDecimal.new(0)
|
473
|
+
|
474
|
+
# Vorsorgepauschale in EURO, C (2 Dezimalstellen)
|
475
|
+
@vsp = BigDecimal.new(0)
|
476
|
+
|
477
|
+
# Vorsorgepauschale nach Alterseinkuenftegesetz in EURO, C
|
478
|
+
@vspn = BigDecimal.new(0)
|
479
|
+
|
480
|
+
# Zwischenwert 1 bei der Berechnung der Vorsorgepauschale nach
|
481
|
+
# dem Alterseinkuenftegesetz in EURO, C (2 Dezimalstellen)
|
482
|
+
@vsp1 = BigDecimal.new(0)
|
483
|
+
|
484
|
+
# Zwischenwert 2 bei der Berechnung der Vorsorgepauschale nach
|
485
|
+
# dem Alterseinkuenftegesetz in EURO, C (2 Dezimalstellen)
|
486
|
+
@vsp2 = BigDecimal.new(0)
|
487
|
+
|
488
|
+
# Vorsorgepauschale mit Teilbeträgen für die gesetzliche Kranken- und
|
489
|
+
# soziale Pflegeversicherung nach fiktiven Beträgen oder ggf. für die
|
490
|
+
# private Basiskrankenversicherung und private Pflege-Pflichtversicherung
|
491
|
+
# in Euro, Cent (2 Dezimalstellen)
|
492
|
+
@vsp3 = BigDecimal.new(0)
|
493
|
+
|
494
|
+
# Erster Grenzwert in Steuerklasse V/VI in Euro
|
495
|
+
@w1stkl5 = BigDecimal.new(0)
|
496
|
+
|
497
|
+
# Zweiter Grenzwert in Steuerklasse V/VI in Euro
|
498
|
+
@w2stkl5 = BigDecimal.new(0)
|
499
|
+
|
500
|
+
# Dritter Grenzwert in Steuerklasse V/VI in Euro
|
501
|
+
@w3stkl5 = BigDecimal.new(0)
|
502
|
+
|
503
|
+
# Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 2 Nr. 2 EStG in EURO
|
504
|
+
@vspmax1 = BigDecimal.new(0)
|
505
|
+
|
506
|
+
# Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 2 Nr. 3 EStG in EURO
|
507
|
+
@vspmax2 = BigDecimal.new(0)
|
508
|
+
|
509
|
+
# Vorsorgepauschale nach § 10c Abs. 2 Satz 2 EStG vor der Hoechstbetragsberechnung
|
510
|
+
# in EURO, C (2 Dezimalstellen)
|
511
|
+
@vspo = BigDecimal.new(0)
|
512
|
+
|
513
|
+
# Fuer den Abzug nach § 10c Abs. 2 Nrn. 2 und 3 EStG verbleibender
|
514
|
+
# Rest von VSPO in EURO, C (2 Dezimalstellen)
|
515
|
+
@vsprest = BigDecimal.new(0)
|
516
|
+
|
517
|
+
# Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 2 Nr. 1 EStG
|
518
|
+
# in EURO, C (2 Dezimalstellen)
|
519
|
+
@vspvor = BigDecimal.new(0)
|
520
|
+
|
521
|
+
# Zu versteuerndes Einkommen gem. § 32a Abs. 1 und 2 EStG €, C
|
522
|
+
# (2 Dezimalstellen)
|
523
|
+
@x = BigDecimal.new(0)
|
524
|
+
|
525
|
+
# gem. § 32a Abs. 1 EStG (6 Dezimalstellen)
|
526
|
+
@y = BigDecimal.new(0)
|
527
|
+
|
528
|
+
# Auf einen Jahreslohn hochgerechnetes RE4 in €, C (2 Dezimalstellen)
|
529
|
+
# nach Abzug der Freibeträge nach § 39 b Abs. 2 Satz 3 und 4.
|
530
|
+
@zre4 = BigDecimal.new(0)
|
531
|
+
|
532
|
+
# Auf einen Jahreslohn hochgerechnetes RE4 in €, C (2 Dezimalstellen)
|
533
|
+
@zre4j = BigDecimal.new(0)
|
534
|
+
|
535
|
+
# Auf einen Jahreslohn hochgerechnetes RE4 in €, C (2 Dezimalstellen)
|
536
|
+
# nach Abzug des Versorgungsfreibetrags und des Alterentlastungsbetrags
|
537
|
+
# zur Berechnung der Vorsorgepauschale in €, Cent (2 Dezimalstellen)
|
538
|
+
@zre4vp = BigDecimal.new(0)
|
539
|
+
|
540
|
+
# Feste Tabellenfreibeträge (ohne Vorsorgepauschale) in €, Cent
|
541
|
+
# (2 Dezimalstellen)
|
542
|
+
@ztabfb = BigDecimal.new(0)
|
543
|
+
|
544
|
+
# Auf einen Jahreslohn hochgerechnetes (VBEZ abzueglich FVB) in
|
545
|
+
# EURO, C (2 Dezimalstellen)
|
546
|
+
@zvbez = BigDecimal.new(0)
|
547
|
+
|
548
|
+
# Auf einen Jahreslohn hochgerechnetes VBEZ in €, C (2 Dezimalstellen)
|
549
|
+
@zvbezj = BigDecimal.new(0)
|
550
|
+
|
551
|
+
# Zu versteuerndes Einkommen in €, C (2 Dezimalstellen)
|
552
|
+
@zve = BigDecimal.new(0)
|
553
|
+
|
554
|
+
# Zwischenfelder zu X fuer die Berechnung der Steuer nach § 39b
|
555
|
+
# Abs. 2 Satz 7 EStG in €
|
556
|
+
@zx = BigDecimal.new(0)
|
557
|
+
@zzx = BigDecimal.new(0)
|
558
|
+
@hoch = BigDecimal.new(0)
|
559
|
+
@vergl = BigDecimal.new(0)
|
560
|
+
|
561
|
+
# Jahreswert der berücksichtigten Beiträge zur privaten Basis-Krankenversicherung und
|
562
|
+
# privaten Pflege-Pflichtversicherung (ggf. auch die Mindestvorsorgepauschale) in Cent.
|
563
|
+
@vkv = BigDecimal.new(0)
|
564
|
+
|
565
|
+
params.each do |key, value|
|
566
|
+
instance_variable_set("@#{key}", value)
|
567
|
+
end
|
568
|
+
|
569
|
+
mpara
|
570
|
+
mre4jl
|
571
|
+
@vbezbso = BigDecimal.ZERO
|
572
|
+
@kennvmt = 0
|
573
|
+
mre4
|
574
|
+
mre4abz
|
575
|
+
mberech
|
576
|
+
msonst
|
577
|
+
mvmt
|
578
|
+
end
|
579
|
+
|
580
|
+
private
|
581
|
+
|
582
|
+
def mpara
|
583
|
+
if @krv < 2
|
584
|
+
if @krv == 0
|
585
|
+
@bbgrv = BigDecimal.new(76200)
|
586
|
+
else
|
587
|
+
@bbgrv = BigDecimal.new(68400)
|
588
|
+
end
|
589
|
+
@rvsatzan = BigDecimal.value_of(0.0935)
|
590
|
+
@tbsvorv = BigDecimal.value_of(0.68)
|
591
|
+
end
|
592
|
+
@bbgkvpv = BigDecimal.new(52200)
|
593
|
+
@kvsatzan = (@kvz.divide(ZAHL100)).add(BigDecimal.value_of(0.07))
|
594
|
+
@kvsatzag = BigDecimal.value_of(0.07)
|
595
|
+
if @pvs == 1
|
596
|
+
@pvsatzan = BigDecimal.value_of(0.01775)
|
597
|
+
@pvsatzag = BigDecimal.value_of(0.00775)
|
598
|
+
else
|
599
|
+
@pvsatzan = BigDecimal.value_of(0.01275)
|
600
|
+
@pvsatzag = BigDecimal.value_of(0.01275)
|
601
|
+
end
|
602
|
+
if @pvz == 1
|
603
|
+
@pvsatzan = @pvsatzan.add(BigDecimal.value_of(0.0025))
|
604
|
+
end
|
605
|
+
@w1stkl5 = BigDecimal.new(10240)
|
606
|
+
@w2stkl5 = BigDecimal.new(27029)
|
607
|
+
@w3stkl5 = BigDecimal.new(205043)
|
608
|
+
@gfb = BigDecimal.new(8820)
|
609
|
+
@solzfrei = BigDecimal.new(972)
|
610
|
+
end
|
611
|
+
|
612
|
+
def mre4jl
|
613
|
+
if @lzz == 1
|
614
|
+
@zre4j = @re4.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
|
615
|
+
@zvbezj = @vbez.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
|
616
|
+
@jlfreib = @lzzfreib.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
|
617
|
+
@jlhinzu = @lzzhinzu.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
|
618
|
+
else
|
619
|
+
if @lzz == 2
|
620
|
+
@zre4j = (@re4.multiply(ZAHL12)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
|
621
|
+
@zvbezj = (@vbez.multiply(ZAHL12)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
|
622
|
+
@jlfreib = (@lzzfreib.multiply(ZAHL12)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
|
623
|
+
@jlhinzu = (@lzzhinzu.multiply(ZAHL12)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
|
624
|
+
else
|
625
|
+
if @lzz == 3
|
626
|
+
@zre4j = (@re4.multiply(ZAHL360)).divide(ZAHL700, 2, BigDecimal.ROUND_DOWN)
|
627
|
+
@zvbezj = (@vbez.multiply(ZAHL360)).divide(ZAHL700, 2, BigDecimal.ROUND_DOWN)
|
628
|
+
@jlfreib = (@lzzfreib.multiply(ZAHL360)).divide(ZAHL700, 2, BigDecimal.ROUND_DOWN)
|
629
|
+
@jlhinzu = (@lzzhinzu.multiply(ZAHL360)).divide(ZAHL700, 2, BigDecimal.ROUND_DOWN)
|
630
|
+
else
|
631
|
+
@zre4j = (@re4.multiply(ZAHL360)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
|
632
|
+
@zvbezj = (@vbez.multiply(ZAHL360)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
|
633
|
+
@jlfreib = (@lzzfreib.multiply(ZAHL360)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
|
634
|
+
@jlhinzu = (@lzzhinzu.multiply(ZAHL360)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
|
635
|
+
end
|
636
|
+
end
|
637
|
+
end
|
638
|
+
if @af == 0
|
639
|
+
@f = 1
|
640
|
+
end
|
641
|
+
end
|
642
|
+
|
643
|
+
def mre4
|
644
|
+
if @zvbezj.compare_to(BigDecimal.ZERO) == 0
|
645
|
+
@fvbz = BigDecimal.ZERO
|
646
|
+
@fvb = BigDecimal.ZERO
|
647
|
+
@fvbzso = BigDecimal.ZERO
|
648
|
+
@fvbso = BigDecimal.ZERO
|
649
|
+
else
|
650
|
+
if @vjahr < 2006
|
651
|
+
@j = 1
|
652
|
+
else
|
653
|
+
if @vjahr < 2040
|
654
|
+
@j = @vjahr - 2004
|
655
|
+
else
|
656
|
+
@j = 36
|
657
|
+
end
|
658
|
+
end
|
659
|
+
if @lzz == 1
|
660
|
+
@vbezb = (@vbezm.multiply(BigDecimal.value_of(@zmvb))).add(@vbezs)
|
661
|
+
@hfvb = TAB2[@j].divide(ZAHL12).multiply(BigDecimal.value_of(@zmvb))
|
662
|
+
@fvbz = TAB3[@j].divide(ZAHL12).multiply(BigDecimal.value_of(@zmvb)).set_scale(0, BigDecimal.ROUND_UP)
|
663
|
+
else
|
664
|
+
@vbezb = ((@vbezm.multiply(ZAHL12)).add(@vbezs)).set_scale(2, BigDecimal.ROUND_DOWN)
|
665
|
+
@hfvb = TAB2[@j]
|
666
|
+
@fvbz = TAB3[@j]
|
667
|
+
end
|
668
|
+
@fvb = ((@vbezb.multiply(TAB1[@j]))).divide(ZAHL100).set_scale(2, BigDecimal.ROUND_UP)
|
669
|
+
if @fvb.compare_to(@hfvb) == 1
|
670
|
+
@fvb = @hfvb
|
671
|
+
end
|
672
|
+
if @fvb.compare_to(@zvbezj) == 1
|
673
|
+
@fvb = @zvbezj
|
674
|
+
end
|
675
|
+
@fvbso = (@fvb.add((@vbezbso.multiply(TAB1[@j])).divide(ZAHL100))).set_scale(2, BigDecimal.ROUND_UP)
|
676
|
+
if @fvbso.compare_to(TAB2[@j]) == 1
|
677
|
+
@fvbso = TAB2[@j]
|
678
|
+
end
|
679
|
+
@hfvbzso = (((@vbezb.add(@vbezbso)).divide(ZAHL100)).subtract(@fvbso)).set_scale(2, BigDecimal.ROUND_DOWN)
|
680
|
+
@fvbzso = (@fvbz.add((@vbezbso).divide(ZAHL100))).set_scale(0, BigDecimal.ROUND_UP)
|
681
|
+
if @fvbzso.compare_to(@hfvbzso) == 1
|
682
|
+
@fvbzso = @hfvbzso.set_scale(0, BigDecimal.ROUND_UP)
|
683
|
+
end
|
684
|
+
if @fvbzso.compare_to(TAB3[@j]) == 1
|
685
|
+
@fvbzso = TAB3[@j]
|
686
|
+
end
|
687
|
+
@hfvbz = ((@vbezb.divide(ZAHL100)).subtract(@fvb)).set_scale(2, BigDecimal.ROUND_DOWN)
|
688
|
+
if @fvbz.compare_to(@hfvbz) == 1
|
689
|
+
@fvbz = @hfvbz.set_scale(0, BigDecimal.ROUND_UP)
|
690
|
+
end
|
691
|
+
end
|
692
|
+
mre4alte
|
693
|
+
end
|
694
|
+
|
695
|
+
def mre4alte
|
696
|
+
if @alter1 == 0
|
697
|
+
@alte = BigDecimal.ZERO
|
698
|
+
else
|
699
|
+
if @ajahr < 2006
|
700
|
+
@k = 1
|
701
|
+
else
|
702
|
+
if @ajahr < 2040
|
703
|
+
@k = @ajahr - 2004
|
704
|
+
else
|
705
|
+
@k = 36
|
706
|
+
end
|
707
|
+
end
|
708
|
+
@bmg = @zre4j.subtract(@zvbezj)
|
709
|
+
@alte = (@bmg.multiply(TAB4[@k])).set_scale(0, BigDecimal.ROUND_UP)
|
710
|
+
@hbalte = TAB5[@k]
|
711
|
+
if @alte.compare_to(@hbalte) == 1
|
712
|
+
@alte = @hbalte
|
713
|
+
end
|
714
|
+
end
|
715
|
+
end
|
716
|
+
|
717
|
+
def mre4abz
|
718
|
+
@zre4 = (@zre4j.subtract(@fvb).subtract(@alte).subtract(@jlfreib).add(@jlhinzu)).set_scale(2, BigDecimal.ROUND_DOWN)
|
719
|
+
if @zre4.compare_to(BigDecimal.ZERO) == -1
|
720
|
+
@zre4 = BigDecimal.ZERO
|
721
|
+
end
|
722
|
+
@zre4vp = @zre4j
|
723
|
+
if @kennvmt == 2
|
724
|
+
@zre4vp = @zre4vp.subtract(@entsch.divide(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
|
725
|
+
end
|
726
|
+
@zvbez = @zvbezj.subtract(@fvb).set_scale(2, BigDecimal.ROUND_DOWN)
|
727
|
+
if @zvbez.compare_to(BigDecimal.ZERO) == -1
|
728
|
+
@zvbez = BigDecimal.ZERO
|
729
|
+
end
|
730
|
+
end
|
731
|
+
|
732
|
+
def mberech
|
733
|
+
mztabfb
|
734
|
+
@vfrb = ((@anp.add(@fvb.add(@fvbz))).multiply(ZAHL100)).set_scale(0, BigDecimal.ROUND_DOWN)
|
735
|
+
mlstjahr
|
736
|
+
@wvfrb = ((@zve.subtract(@gfb)).multiply(ZAHL100)).set_scale(0, BigDecimal.ROUND_DOWN)
|
737
|
+
if @wvfrb.compare_to(BigDecimal.ZERO) == -1
|
738
|
+
@wvfrb = BigDecimal.value_of(0)
|
739
|
+
end
|
740
|
+
@lstjahr = (@st.multiply(BigDecimal.value_of(@f))).set_scale(0, BigDecimal.ROUND_DOWN)
|
741
|
+
uplstlzz
|
742
|
+
upvkvlzz
|
743
|
+
if @zkf.compare_to(BigDecimal.ZERO) == 1
|
744
|
+
@ztabfb = @ztabfb.add(@kfb)
|
745
|
+
mre4abz
|
746
|
+
mlstjahr
|
747
|
+
@jbmg = (@st.multiply(BigDecimal.value_of(@f))).set_scale(0, BigDecimal.ROUND_DOWN)
|
748
|
+
else
|
749
|
+
@jbmg = @lstjahr
|
750
|
+
end
|
751
|
+
msolz
|
752
|
+
end
|
753
|
+
|
754
|
+
def mztabfb
|
755
|
+
@anp = BigDecimal.ZERO
|
756
|
+
if @zvbez.compare_to(BigDecimal.ZERO) >= 0 && @zvbez.compare_to(@fvbz) == -1
|
757
|
+
@fvbz = BigDecimal.value_of(@zvbez.longValue())
|
758
|
+
end
|
759
|
+
if @stkl < 6
|
760
|
+
if @zvbez.compare_to(BigDecimal.ZERO) == 1
|
761
|
+
if (@zvbez.subtract(@fvbz)).compare_to(BigDecimal.value_of(102)) == -1
|
762
|
+
@anp = (@zvbez.subtract(@fvbz)).set_scale(0, BigDecimal.ROUND_UP)
|
763
|
+
else
|
764
|
+
@anp = BigDecimal.value_of(102)
|
765
|
+
end
|
766
|
+
end
|
767
|
+
else
|
768
|
+
@fvbz = BigDecimal.value_of(0)
|
769
|
+
@fvbzso = BigDecimal.value_of(0)
|
770
|
+
end
|
771
|
+
if @stkl < 6
|
772
|
+
if @zre4.compare_to(@zvbez) == 1
|
773
|
+
if @zre4.subtract(@zvbez).compare_to(ZAHL1000) == -1
|
774
|
+
@anp = @anp.add(@zre4).subtract(@zvbez).set_scale(0, BigDecimal.ROUND_UP)
|
775
|
+
else
|
776
|
+
@anp = @anp.add(ZAHL1000)
|
777
|
+
end
|
778
|
+
end
|
779
|
+
end
|
780
|
+
@kztab = 1
|
781
|
+
if @stkl == 1
|
782
|
+
@sap = BigDecimal.value_of(36)
|
783
|
+
@kfb = (@zkf.multiply(BigDecimal.value_of(7356))).set_scale(0, BigDecimal.ROUND_DOWN)
|
784
|
+
else
|
785
|
+
if @stkl == 2
|
786
|
+
@efa = BigDecimal.value_of(1908)
|
787
|
+
@sap = BigDecimal.value_of(36)
|
788
|
+
@kfb = (@zkf.multiply(BigDecimal.value_of(7356))).set_scale(0, BigDecimal.ROUND_DOWN)
|
789
|
+
else
|
790
|
+
if @stkl == 3
|
791
|
+
@kztab = 2
|
792
|
+
@sap = BigDecimal.value_of(36)
|
793
|
+
@kfb = (@zkf.multiply(BigDecimal.value_of(7356))).set_scale(0, BigDecimal.ROUND_DOWN)
|
794
|
+
else
|
795
|
+
if @stkl == 4
|
796
|
+
@sap = BigDecimal.value_of(36)
|
797
|
+
@kfb = (@zkf.multiply(BigDecimal.value_of(3678))).set_scale(0, BigDecimal.ROUND_DOWN)
|
798
|
+
else
|
799
|
+
if @stkl == 5
|
800
|
+
@sap = BigDecimal.value_of(36)
|
801
|
+
@kfb = BigDecimal.ZERO
|
802
|
+
else
|
803
|
+
@kfb = BigDecimal.ZERO
|
804
|
+
end
|
805
|
+
end
|
806
|
+
end
|
807
|
+
end
|
808
|
+
end
|
809
|
+
@ztabfb = (@efa.add(@anp).add(@sap).add(@fvbz)).set_scale(2, BigDecimal.ROUND_DOWN)
|
810
|
+
end
|
811
|
+
|
812
|
+
def mlstjahr
|
813
|
+
upevp
|
814
|
+
if @kennvmt != 1
|
815
|
+
@zve = (@zre4.subtract(@ztabfb).subtract(@vsp)).set_scale(2, BigDecimal.ROUND_DOWN)
|
816
|
+
upmlst
|
817
|
+
else
|
818
|
+
@zve = (@zre4.subtract(@ztabfb).subtract(@vsp).subtract((@vmt).divide(ZAHL100)).subtract((@vkapa).divide(ZAHL100))).set_scale(2, BigDecimal.ROUND_DOWN)
|
819
|
+
if @zve.compare_to(BigDecimal.ZERO) == -1
|
820
|
+
@zve = @zve.add(@vmt.divide(ZAHL100)).add(@vkapa.divide(ZAHL100)).divide(ZAHL5).set_scale(2, BigDecimal.ROUND_DOWN)
|
821
|
+
upmlst
|
822
|
+
@st = (@st.multiply(ZAHL5)).set_scale(0, BigDecimal.ROUND_DOWN)
|
823
|
+
else
|
824
|
+
upmlst
|
825
|
+
@stovmt = @st
|
826
|
+
@zve = (@zve.add(((@vmt.add(@vkapa)).divide(ZAHL500)))).set_scale(2, BigDecimal.ROUND_DOWN)
|
827
|
+
upmlst
|
828
|
+
@st = (((@st.subtract(@stovmt)).multiply(ZAHL5)).add(@stovmt)).set_scale(0, BigDecimal.ROUND_DOWN)
|
829
|
+
end
|
830
|
+
end
|
831
|
+
end
|
832
|
+
|
833
|
+
def upvkvlzz
|
834
|
+
upvkv
|
835
|
+
@jw = @vkv
|
836
|
+
upanteil
|
837
|
+
@vkvlzz = @anteil1
|
838
|
+
end
|
839
|
+
|
840
|
+
def upvkv
|
841
|
+
if @pkv > 0
|
842
|
+
if @vsp2.compare_to(@vsp3) == 1
|
843
|
+
@vkv = @vsp2.multiply(ZAHL100)
|
844
|
+
else
|
845
|
+
@vkv = @vsp3.multiply(ZAHL100)
|
846
|
+
end
|
847
|
+
else
|
848
|
+
@vkv = BigDecimal.ZERO
|
849
|
+
end
|
850
|
+
end
|
851
|
+
|
852
|
+
def uplstlzz
|
853
|
+
@jw = @lstjahr.multiply(ZAHL100)
|
854
|
+
upanteil
|
855
|
+
@lstlzz = @anteil1
|
856
|
+
end
|
857
|
+
|
858
|
+
def upmlst
|
859
|
+
if @zve.compare_to(ZAHL1) == -1
|
860
|
+
@zve = BigDecimal.ZERO
|
861
|
+
@x = BigDecimal.ZERO
|
862
|
+
else
|
863
|
+
@x = (@zve.divide(BigDecimal.value_of(@kztab))).set_scale(0, BigDecimal.ROUND_DOWN)
|
864
|
+
end
|
865
|
+
if @stkl < 5
|
866
|
+
uptab17
|
867
|
+
else
|
868
|
+
mst5_6
|
869
|
+
end
|
870
|
+
end
|
871
|
+
|
872
|
+
def upevp
|
873
|
+
if @krv > 1
|
874
|
+
@vsp1 = BigDecimal.ZERO
|
875
|
+
else
|
876
|
+
if @zre4vp.compare_to(@bbgrv) == 1
|
877
|
+
@zre4vp = @bbgrv
|
878
|
+
end
|
879
|
+
@vsp1 = (@tbsvorv.multiply(@zre4vp)).set_scale(2, BigDecimal.ROUND_DOWN)
|
880
|
+
@vsp1 = (@vsp1.multiply(@rvsatzan)).set_scale(2, BigDecimal.ROUND_DOWN)
|
881
|
+
end
|
882
|
+
@vsp2 = (@zre4vp.multiply(BigDecimal.value_of(0.12))).set_scale(2, BigDecimal.ROUND_DOWN)
|
883
|
+
if @stkl == 3
|
884
|
+
@vhb = BigDecimal.value_of(3000)
|
885
|
+
else
|
886
|
+
@vhb = BigDecimal.value_of(1900)
|
887
|
+
end
|
888
|
+
if @vsp2.compare_to(@vhb) == 1
|
889
|
+
@vsp2 = @vhb
|
890
|
+
end
|
891
|
+
@vspn = (@vsp1.add(@vsp2)).set_scale(0, BigDecimal.ROUND_UP)
|
892
|
+
mvsp
|
893
|
+
if @vspn.compare_to(@vsp) == 1
|
894
|
+
@vsp = @vspn.set_scale(2, BigDecimal.ROUND_DOWN)
|
895
|
+
end
|
896
|
+
end
|
897
|
+
|
898
|
+
def mvsp
|
899
|
+
if @zre4vp.compare_to(@bbgkvpv) == 1
|
900
|
+
@zre4vp = @bbgkvpv
|
901
|
+
end
|
902
|
+
if @pkv > 0
|
903
|
+
if @stkl == 6
|
904
|
+
@vsp3 = BigDecimal.ZERO
|
905
|
+
else
|
906
|
+
@vsp3 = @pkpv.multiply(ZAHL12).divide(ZAHL100)
|
907
|
+
if @pkv == 2
|
908
|
+
@vsp3 = @vsp3.subtract(@zre4vp.multiply(@kvsatzag.add(@pvsatzag))).set_scale(2, BigDecimal.ROUND_DOWN)
|
909
|
+
end
|
910
|
+
end
|
911
|
+
else
|
912
|
+
@vsp3 = @zre4vp.multiply(@kvsatzan.add(@pvsatzan)).set_scale(2, BigDecimal.ROUND_DOWN)
|
913
|
+
end
|
914
|
+
@vsp = @vsp3.add(@vsp1).set_scale(0, BigDecimal.ROUND_UP)
|
915
|
+
end
|
916
|
+
|
917
|
+
def mst5_6
|
918
|
+
@zzx = @x
|
919
|
+
if @zzx.compare_to(@w2stkl5) == 1
|
920
|
+
@zx = @w2stkl5
|
921
|
+
up5_6
|
922
|
+
if @zzx.compare_to(@w3stkl5) == 1
|
923
|
+
@st = (@st.add((@w3stkl5.subtract(@w2stkl5)).multiply(BigDecimal.value_of(0.42)))).set_scale(0, BigDecimal.ROUND_DOWN)
|
924
|
+
@st = (@st.add((@zzx.subtract(@w3stkl5)).multiply(BigDecimal.value_of(0.45)))).set_scale(0, BigDecimal.ROUND_DOWN)
|
925
|
+
else
|
926
|
+
@st = (@st.add((@zzx.subtract(@w2stkl5)).multiply(BigDecimal.value_of(0.42)))).set_scale(0, BigDecimal.ROUND_DOWN)
|
927
|
+
end
|
928
|
+
else
|
929
|
+
@zx = @zzx
|
930
|
+
up5_6
|
931
|
+
if @zzx.compare_to(@w1stkl5) == 1
|
932
|
+
@vergl = @st
|
933
|
+
@zx = @w1stkl5
|
934
|
+
up5_6
|
935
|
+
@hoch = (@st.add((@zzx.subtract(@w1stkl5)).multiply(BigDecimal.value_of(0.42)))).set_scale(0, BigDecimal.ROUND_DOWN)
|
936
|
+
if @hoch.compare_to(@vergl) == -1
|
937
|
+
@st = @hoch
|
938
|
+
else
|
939
|
+
@st = @vergl
|
940
|
+
end
|
941
|
+
end
|
942
|
+
end
|
943
|
+
end
|
944
|
+
|
945
|
+
def up5_6
|
946
|
+
@x = (@zx.multiply(BigDecimal.value_of(1.25))).set_scale(2, BigDecimal.ROUND_DOWN)
|
947
|
+
uptab17
|
948
|
+
@st1 = @st
|
949
|
+
@x = (@zx.multiply(BigDecimal.value_of(0.75))).set_scale(2, BigDecimal.ROUND_DOWN)
|
950
|
+
uptab17
|
951
|
+
@st2 = @st
|
952
|
+
@diff = (@st1.subtract(@st2)).multiply(ZAHL2)
|
953
|
+
@mist = (@zx.multiply(BigDecimal.value_of(0.14))).set_scale(0, BigDecimal.ROUND_DOWN)
|
954
|
+
if @mist.compare_to(@diff) == 1
|
955
|
+
@st = @mist
|
956
|
+
else
|
957
|
+
@st = @diff
|
958
|
+
end
|
959
|
+
end
|
960
|
+
|
961
|
+
def msolz
|
962
|
+
@solzfrei = (@solzfrei.multiply(BigDecimal.value_of(@kztab)))
|
963
|
+
if @jbmg.compare_to(@solzfrei) == 1
|
964
|
+
@solzj = (@jbmg.multiply(BigDecimal.value_of(5.5))).divide(ZAHL100).set_scale(2, BigDecimal.ROUND_DOWN)
|
965
|
+
@solzmin = (@jbmg.subtract(@solzfrei)).multiply(BigDecimal.value_of(20)).divide(ZAHL100).set_scale(2, BigDecimal.ROUND_DOWN)
|
966
|
+
if @solzmin.compare_to(@solzj) == -1
|
967
|
+
@solzj = @solzmin
|
968
|
+
end
|
969
|
+
@jw = @solzj.multiply(ZAHL100).set_scale(0, BigDecimal.ROUND_DOWN)
|
970
|
+
upanteil
|
971
|
+
@solzlzz = @anteil1
|
972
|
+
else
|
973
|
+
@solzlzz = BigDecimal.ZERO
|
974
|
+
end
|
975
|
+
if @r > 0
|
976
|
+
@jw = @jbmg.multiply(ZAHL100)
|
977
|
+
upanteil
|
978
|
+
@bk = @anteil1
|
979
|
+
else
|
980
|
+
@bk = BigDecimal.ZERO
|
981
|
+
end
|
982
|
+
end
|
983
|
+
|
984
|
+
def upanteil
|
985
|
+
if @lzz == 1
|
986
|
+
@anteil1 = @jw
|
987
|
+
else
|
988
|
+
if @lzz == 2
|
989
|
+
@anteil1 = @jw.divide(ZAHL12, 0, BigDecimal.ROUND_DOWN)
|
990
|
+
else
|
991
|
+
if @lzz == 3
|
992
|
+
@anteil1 = (@jw.multiply(ZAHL7)).divide(ZAHL360, 0, BigDecimal.ROUND_DOWN)
|
993
|
+
else
|
994
|
+
@anteil1 = @jw.divide(ZAHL360, 0, BigDecimal.ROUND_DOWN)
|
995
|
+
end
|
996
|
+
end
|
997
|
+
end
|
998
|
+
end
|
999
|
+
|
1000
|
+
def msonst
|
1001
|
+
@lzz = 1
|
1002
|
+
if @zmvb == 0
|
1003
|
+
@zmvb = 12
|
1004
|
+
end
|
1005
|
+
if @sonstb.compare_to(BigDecimal.ZERO) == 0
|
1006
|
+
@vkvsonst = BigDecimal.ZERO
|
1007
|
+
@lstso = BigDecimal.ZERO
|
1008
|
+
@sts = BigDecimal.ZERO
|
1009
|
+
@solzs = BigDecimal.ZERO
|
1010
|
+
@bks = BigDecimal.ZERO
|
1011
|
+
else
|
1012
|
+
mosonst
|
1013
|
+
upvkv
|
1014
|
+
@vkvsonst = @vkv
|
1015
|
+
@zre4j = ((@jre4.add(@sonstb)).divide(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
|
1016
|
+
@zvbezj = ((@jvbez.add(@vbs)).divide(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
|
1017
|
+
@vbezbso = @sterbe
|
1018
|
+
mre4sonst
|
1019
|
+
mlstjahr
|
1020
|
+
@wvfrbm = (@zve.subtract(@gfb)).multiply(ZAHL100).set_scale(2, BigDecimal.ROUND_DOWN)
|
1021
|
+
if @wvfrbm.compare_to(BigDecimal.ZERO) == -1
|
1022
|
+
@wvfrbm = BigDecimal.ZERO
|
1023
|
+
end
|
1024
|
+
upvkv
|
1025
|
+
@vkvsonst = @vkv.subtract(@vkvsonst)
|
1026
|
+
@lstso = @st.multiply(ZAHL100)
|
1027
|
+
@sts = @lstso.subtract(@lstoso).multiply(BigDecimal.value_of(@f)).divide(ZAHL100, 0, BigDecimal.ROUND_DOWN).multiply(ZAHL100)
|
1028
|
+
if @sts.compare_to(BigDecimal.ZERO) == -1
|
1029
|
+
@sts = BigDecimal.ZERO
|
1030
|
+
end
|
1031
|
+
@solzs = @sts.multiply(BigDecimal.value_of(5.5)).divide(ZAHL100, 0, BigDecimal.ROUND_DOWN)
|
1032
|
+
if @r > 0
|
1033
|
+
@bks = @sts
|
1034
|
+
else
|
1035
|
+
@bks = BigDecimal.ZERO
|
1036
|
+
end
|
1037
|
+
end
|
1038
|
+
end
|
1039
|
+
|
1040
|
+
def mvmt
|
1041
|
+
if @vkapa.compare_to(BigDecimal.ZERO) == -1
|
1042
|
+
@vkapa = BigDecimal.ZERO
|
1043
|
+
end
|
1044
|
+
if (@vmt.add(@vkapa)).compare_to(BigDecimal.ZERO) == 1
|
1045
|
+
if @lstso.compare_to(BigDecimal.ZERO) == 0
|
1046
|
+
mosonst
|
1047
|
+
@lst1 = @lstoso
|
1048
|
+
else
|
1049
|
+
@lst1 = @lstso
|
1050
|
+
end
|
1051
|
+
@vbezbso = @sterbe.add(@vkapa)
|
1052
|
+
@zre4j = ((@jre4.add(@sonstb).add(@vmt).add(@vkapa)).divide(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
|
1053
|
+
@zvbezj = ((@jvbez.add(@vbs).add(@vkapa)).divide(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
|
1054
|
+
@kennvmt = 2
|
1055
|
+
mre4sonst
|
1056
|
+
mlstjahr
|
1057
|
+
@lst3 = @st.multiply(ZAHL100)
|
1058
|
+
mre4abz
|
1059
|
+
@zre4vp = @zre4vp.subtract(@jre4ent.divide(ZAHL100)).subtract(@sonstent.divide(ZAHL100))
|
1060
|
+
@kennvmt = 1
|
1061
|
+
mlstjahr
|
1062
|
+
@lst2 = @st.multiply(ZAHL100)
|
1063
|
+
@stv = @lst2.subtract(@lst1)
|
1064
|
+
@lst3 = @lst3.subtract(@lst1)
|
1065
|
+
if @lst3.compare_to(@stv) == -1
|
1066
|
+
@stv = @lst3
|
1067
|
+
end
|
1068
|
+
if @stv.compare_to(BigDecimal.ZERO) == -1
|
1069
|
+
@stv = BigDecimal.ZERO
|
1070
|
+
else
|
1071
|
+
@stv = @stv.multiply(BigDecimal.value_of(@f)).divide(ZAHL100, 0, BigDecimal.ROUND_DOWN).multiply(ZAHL100)
|
1072
|
+
end
|
1073
|
+
@solzv = ((@stv.multiply(BigDecimal.value_of(5.5))).divide(ZAHL100)).set_scale(0, BigDecimal.ROUND_DOWN)
|
1074
|
+
if @r > 0
|
1075
|
+
@bkv = @stv
|
1076
|
+
else
|
1077
|
+
@bkv = BigDecimal.ZERO
|
1078
|
+
end
|
1079
|
+
else
|
1080
|
+
@stv = BigDecimal.ZERO
|
1081
|
+
@solzv = BigDecimal.ZERO
|
1082
|
+
@bkv = BigDecimal.ZERO
|
1083
|
+
end
|
1084
|
+
end
|
1085
|
+
|
1086
|
+
def mosonst
|
1087
|
+
@zre4j = (@jre4.divide(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
|
1088
|
+
@zvbezj = (@jvbez.divide(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
|
1089
|
+
@jlfreib = @jfreib.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
|
1090
|
+
@jlhinzu = @jhinzu.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
|
1091
|
+
mre4
|
1092
|
+
mre4abz
|
1093
|
+
@zre4vp = @zre4vp.subtract(@jre4ent.divide(ZAHL100))
|
1094
|
+
mztabfb
|
1095
|
+
@vfrbs1 = ((@anp.add(@fvb.add(@fvbz))).multiply(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
|
1096
|
+
mlstjahr
|
1097
|
+
@wvfrbo = ((@zve.subtract(@gfb)).multiply(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
|
1098
|
+
if @wvfrbo.compare_to(BigDecimal.ZERO) == -1
|
1099
|
+
@wvfrbo = BigDecimal.ZERO
|
1100
|
+
end
|
1101
|
+
@lstoso = @st.multiply(ZAHL100)
|
1102
|
+
end
|
1103
|
+
|
1104
|
+
def mre4sonst
|
1105
|
+
mre4
|
1106
|
+
@fvb = @fvbso
|
1107
|
+
mre4abz
|
1108
|
+
@zre4vp = @zre4vp.subtract(@jre4ent.divide(ZAHL100)).subtract(@sonstent.divide(ZAHL100))
|
1109
|
+
@fvbz = @fvbzso
|
1110
|
+
mztabfb
|
1111
|
+
@vfrbs2 = ((((@anp.add(@fvb).add(@fvbz))).multiply(ZAHL100))).subtract(@vfrbs1)
|
1112
|
+
end
|
1113
|
+
|
1114
|
+
def uptab17
|
1115
|
+
if @x.compare_to(@gfb.add(ZAHL1)) == -1
|
1116
|
+
@st = BigDecimal.ZERO
|
1117
|
+
else
|
1118
|
+
if @x.compare_to(BigDecimal.value_of(13770)) == -1
|
1119
|
+
@y = (@x.subtract(@gfb)).divide(ZAHL10000, 6, BigDecimal.ROUND_DOWN)
|
1120
|
+
@rw = @y.multiply(BigDecimal.value_of(1007.27))
|
1121
|
+
@rw = @rw.add(BigDecimal.value_of(1400))
|
1122
|
+
@st = (@rw.multiply(@y)).set_scale(0, BigDecimal.ROUND_DOWN)
|
1123
|
+
else
|
1124
|
+
if @x.compare_to(BigDecimal.value_of(54058)) == -1
|
1125
|
+
@y = (@x.subtract(BigDecimal.value_of(13769))).divide(ZAHL10000, 6, BigDecimal.ROUND_DOWN)
|
1126
|
+
@rw = @y.multiply(BigDecimal.value_of(223.76))
|
1127
|
+
@rw = @rw.add(BigDecimal.value_of(2397))
|
1128
|
+
@rw = @rw.multiply(@y)
|
1129
|
+
@st = (@rw.add(BigDecimal.value_of(939.57))).set_scale(0, BigDecimal.ROUND_DOWN)
|
1130
|
+
else
|
1131
|
+
if @x.compare_to(BigDecimal.value_of(256304)) == -1
|
1132
|
+
@st = ((@x.multiply(BigDecimal.value_of(0.42))).subtract(BigDecimal.value_of(8475.44))).set_scale(0, BigDecimal.ROUND_DOWN)
|
1133
|
+
else
|
1134
|
+
@st = ((@x.multiply(BigDecimal.value_of(0.45))).subtract(BigDecimal.value_of(16164.53))).set_scale(0, BigDecimal.ROUND_DOWN)
|
1135
|
+
end
|
1136
|
+
end
|
1137
|
+
end
|
1138
|
+
end
|
1139
|
+
@st = @st.multiply(BigDecimal.value_of(@kztab))
|
1140
|
+
end
|
1141
|
+
|
1142
|
+
end
|
1143
|
+
end
|
1144
|
+
end
|