taxger 0.2.0

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.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/CODE_OF_CONDUCT.md +13 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE +8 -0
  8. data/README.md +89 -0
  9. data/Rakefile +22 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +7 -0
  12. data/lib/taxger/einkommensteuer.rb +104 -0
  13. data/lib/taxger/lohnsteuer/bigdecimal.rb +70 -0
  14. data/lib/taxger/lohnsteuer/lohnsteuer2006.rb +891 -0
  15. data/lib/taxger/lohnsteuer/lohnsteuer2007.rb +917 -0
  16. data/lib/taxger/lohnsteuer/lohnsteuer2008.rb +983 -0
  17. data/lib/taxger/lohnsteuer/lohnsteuer2009.rb +975 -0
  18. data/lib/taxger/lohnsteuer/lohnsteuer2010.rb +1026 -0
  19. data/lib/taxger/lohnsteuer/lohnsteuer2011.rb +1070 -0
  20. data/lib/taxger/lohnsteuer/lohnsteuer2011dezember.rb +1082 -0
  21. data/lib/taxger/lohnsteuer/lohnsteuer2012.rb +1118 -0
  22. data/lib/taxger/lohnsteuer/lohnsteuer2013.rb +1120 -0
  23. data/lib/taxger/lohnsteuer/lohnsteuer2014.rb +1123 -0
  24. data/lib/taxger/lohnsteuer/lohnsteuer2015.rb +1144 -0
  25. data/lib/taxger/lohnsteuer/lohnsteuer2015dezember.rb +1339 -0
  26. data/lib/taxger/lohnsteuer/lohnsteuer2016.rb +1144 -0
  27. data/lib/taxger/lohnsteuer.rb +28 -0
  28. data/lib/taxger/version.rb +3 -0
  29. data/lib/taxger.rb +9 -0
  30. data/src/README.md +141 -0
  31. data/src/code_tree.rb +122 -0
  32. data/src/converter.rb +61 -0
  33. data/src/generated/.keep +0 -0
  34. data/src/node/class_node.rb +30 -0
  35. data/src/node/comment_node.rb +19 -0
  36. data/src/node/conditional_node.rb +32 -0
  37. data/src/node/expr_node.rb +13 -0
  38. data/src/node/initializer_node.rb +37 -0
  39. data/src/node/method_call_node.rb +12 -0
  40. data/src/node/method_node.rb +21 -0
  41. data/src/node/node.rb +47 -0
  42. data/src/node/pseudo_code_parser.rb +88 -0
  43. data/src/node/source_node.rb +43 -0
  44. data/src/node/var_block_node.rb +39 -0
  45. data/taxger.gemspec +34 -0
  46. metadata +146 -0
@@ -0,0 +1,1339 @@
1
+ module Taxger
2
+ module Lohnsteuer
3
+ class Lohnsteuer2015Dezember
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
+ ZAHL0 = BigDecimal.ZERO
68
+ ZAHL1 = BigDecimal.ONE
69
+ ZAHL2 = BigDecimal.new(2)
70
+ ZAHL3 = BigDecimal.new(3)
71
+ ZAHL4 = BigDecimal.new(4)
72
+ ZAHL5 = BigDecimal.new(5)
73
+ ZAHL6 = BigDecimal.new(6)
74
+ ZAHL7 = BigDecimal.new(7)
75
+ ZAHL8 = BigDecimal.new(8)
76
+ ZAHL9 = BigDecimal.new(9)
77
+ ZAHL10 = BigDecimal.TEN
78
+ ZAHL11 = BigDecimal.new(11)
79
+ ZAHL12 = BigDecimal.new(12)
80
+ ZAHL100 = BigDecimal.new(100)
81
+ ZAHL360 = BigDecimal.new(360)
82
+ ZAHL500 = BigDecimal.new(500)
83
+ ZAHL700 = BigDecimal.new(700)
84
+ ZAHL1000 = BigDecimal.new(1000)
85
+
86
+ attr_accessor :bk
87
+ attr_accessor :bks
88
+ attr_accessor :bkv
89
+ attr_accessor :lstlzz
90
+ attr_accessor :solzlzz
91
+ attr_accessor :solzs
92
+ attr_accessor :solzv
93
+ attr_accessor :sts
94
+ attr_accessor :stv
95
+ attr_accessor :vkvlzz
96
+ attr_accessor :vkvsonst
97
+
98
+ 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]
99
+ OUTPUT_VARS = [:bk, :bks, :bkv, :lstlzz, :solzlzz, :solzs, :solzv, :sts, :stv, :vkvlzz, :vkvsonst]
100
+ def initialize(params)
101
+ raise "Unknown parameters: #{params.keys - INPUT_VARS}" if params.keys - INPUT_VARS != []
102
+ # INPUTS
103
+
104
+ # EINGABEPARAMETER
105
+ # 1, wenn die Anwendung des Faktorverfahrens gewählt wurden (nur in Steuerklasse IV)
106
+ @af = 1.0 # int
107
+
108
+ # Auf die Vollendung des 64. Lebensjahres folgende
109
+ # Kalenderjahr (erforderlich, wenn ALTER1=1)
110
+ @ajahr = 0 # int
111
+
112
+ # 1, wenn das 64. Lebensjahr zu Beginn des Kalenderjahres vollendet wurde, in dem
113
+ # der Lohnzahlungszeitraum endet (§ 24 a EStG), sonst = 0
114
+ @alter1 = 0 # int
115
+
116
+ # in VKAPA und VMT enthaltene Entschädigungen nach §24 Nummer 1 EStG in Cent
117
+ @entsch = BigDecimal.new(0) # BigDecimal
118
+
119
+ # eingetragener Faktor mit drei Nachkommastellen
120
+ @f = 1.0 # double
121
+
122
+ # Jahresfreibetrag nach Maßgabe der Eintragungen auf der
123
+ # Lohnsteuerkarte in Cents (ggf. 0)
124
+ @jfreib = BigDecimal.new(0) # BigDecimal
125
+
126
+ # Jahreshinzurechnungsbetrag in Cents (ggf. 0)
127
+ @jhinzu = BigDecimal.new(0) # BigDecimal
128
+
129
+ # Voraussichtlicher Jahresarbeitslohn ohne sonstige Bezüge und ohne Vergütung für mehrjährige Tätigkeit in Cent.
130
+ # Anmerkung: Die Eingabe dieses Feldes (ggf. 0) ist erforderlich bei Eingabe „sonsti-ger Bezüge“ (Feld SONSTB)
131
+ # oder bei Eingabe der „Vergütung für mehrjährige Tätigkeit“ (Feld VMT).
132
+ # Sind in einem vorangegangenen Abrechnungszeitraum bereits sonstige Bezüge gezahlt worden, so sind sie dem
133
+ # voraussichtlichen Jahresarbeitslohn hinzuzurechnen. Vergütungen für mehrere Jahres aus einem vorangegangenen
134
+ # Abrechnungszeitraum sind in voller Höhe hinzuzurechnen.
135
+ @jre4 = BigDecimal.new(0) # BigDecimal
136
+
137
+ # In JRE4 enthaltene Versorgungsbezuege in Cents (ggf. 0)
138
+ @jvbez = BigDecimal.new(0) # BigDecimal
139
+
140
+ # Merker für die Vorsorgepauschale
141
+ # 2 = der Arbeitnehmer ist NICCHT in der gesetzlichen Rentenversicherung versichert.
142
+ #
143
+ # 1 = der Arbeitnehmer ist in der gesetzlichen Rentenversicherung versichert, es gilt die
144
+ # Beitragsbemessungsgrenze OST.
145
+ #
146
+ # 0 = der Arbeitnehmer ist in der gesetzlichen Rentenversicherung versichert, es gilt die
147
+ # Beitragsbemessungsgrenze WEST.
148
+ @krv = 0 # int
149
+
150
+ # Einkommensbezogener Zusatzbeitragssatz eines gesetzlich krankenversicherten Arbeitnehmers,
151
+ # auf dessen Basis der an die Kran-kenkasse zu zahlende Zusatzbeitrag berechnet wird,
152
+ # in Prozent (bspw. 0,90 für 0,90 %) mit 2 Dezimalstellen.
153
+ # Der von der Kranken-kasse festgesetzte Zusatzbeitragssatz ist bei Abweichungen unmaßgeblich.
154
+ @kvz = BigDecimal.new(0) # BigDecimal
155
+
156
+ # Lohnzahlungszeitraum:
157
+ # 1 = Jahr
158
+ # 2 = Monat
159
+ # 3 = Woche
160
+ # 4 = Tag
161
+ @lzz = 0 # int
162
+
163
+ # In der Lohnsteuerkarte des Arbeitnehmers eingetragener Freibetrag für
164
+ # den Lohnzahlungszeitraum in Cent
165
+ @lzzfreib = BigDecimal.new(0) # BigDecimal
166
+
167
+ # In der Lohnsteuerkarte des Arbeitnehmers eingetragener Hinzurechnungsbetrag
168
+ # für den Lohnzahlungszeitraum in Cent
169
+ @lzzhinzu = BigDecimal.new(0) # BigDecimal
170
+
171
+ # Dem Arbeitgeber mitgeteilte Zahlungen des Arbeitnehmers zur privaten
172
+ # Kranken- bzw. Pflegeversicherung im Sinne des §10 Abs. 1 Nr. 3 EStG 2010
173
+ # als Monatsbetrag in Cent (der Wert ist inabhängig vom Lohnzahlungszeitraum immer
174
+ # als Monatsbetrag anzugeben).
175
+ @pkpv = BigDecimal.new(0) # BigDecimal
176
+
177
+ # Krankenversicherung:
178
+ # 0 = gesetzlich krankenversicherte Arbeitnehmer
179
+ # 1 = ausschließlich privat krankenversicherte Arbeitnehmer OHNE Arbeitgeberzuschuss
180
+ # 2 = ausschließlich privat krankenversicherte Arbeitnehmer MIT Arbeitgeberzuschuss
181
+ @pkv = 0 # int
182
+
183
+ # 1, wenn bei der sozialen Pflegeversicherung die Besonderheiten in Sachsen zu berücksichtigen sind bzw.
184
+ # zu berücksichtigen wären, sonst 0.
185
+ @pvs = 0 # int
186
+
187
+ # 1, wenn er der Arbeitnehmer den Zuschlag zur sozialen Pflegeversicherung
188
+ # zu zahlen hat, sonst 0.
189
+ @pvz = 0 # int
190
+
191
+ # Religionsgemeinschaft des Arbeitnehmers lt. Lohnsteuerkarte (bei
192
+ # keiner Religionszugehoerigkeit = 0)
193
+ @r = 0 # int
194
+
195
+ # Steuerpflichtiger Arbeitslohn vor Beruecksichtigung der Freibetraege
196
+ # fuer Versorgungsbezuege, des Altersentlastungsbetrags und des auf
197
+ # der Lohnsteuerkarte fuer den Lohnzahlungszeitraum eingetragenen
198
+ # Freibetrags in Cents.
199
+ @re4 = BigDecimal.new(0) # BigDecimal
200
+
201
+ # Sonstige Bezuege (ohne Verguetung aus mehrjaehriger Taetigkeit) einschliesslich
202
+ # Sterbegeld bei Versorgungsbezuegen sowie Kapitalauszahlungen/Abfindungen,
203
+ # soweit es sich nicht um Bezuege fuer mehrere Jahre handelt in Cents (ggf. 0)
204
+ @sonstb = BigDecimal.new(0) # BigDecimal
205
+
206
+ # Sterbegeld bei Versorgungsbezuegen sowie Kapitalauszahlungen/Abfindungen,
207
+ # soweit es sich nicht um Bezuege fuer mehrere Jahre handelt
208
+ # (in SONSTB enthalten) in Cents
209
+ @sterbe = BigDecimal.new(0) # BigDecimal
210
+
211
+ # Steuerklasse:
212
+ # 1 = I
213
+ # 2 = II
214
+ # 3 = III
215
+ # 4 = IV
216
+ # 5 = V
217
+ # 6 = VI
218
+ @stkl = 0 # int
219
+
220
+ # In RE4 enthaltene Versorgungsbezuege in Cents (ggf. 0)
221
+ @vbez = BigDecimal.new(0) # BigDecimal
222
+
223
+ # Vorsorgungsbezug im Januar 2005 bzw. fuer den ersten vollen Monat
224
+ # in Cents
225
+ @vbezm = BigDecimal.new(0) # BigDecimal
226
+
227
+ # Voraussichtliche Sonderzahlungen im Kalenderjahr des Versorgungsbeginns
228
+ # bei Versorgungsempfaengern ohne Sterbegeld, Kapitalauszahlungen/Abfindungen
229
+ # bei Versorgungsbezuegen in Cents
230
+ @vbezs = BigDecimal.new(0) # BigDecimal
231
+
232
+ # In SONSTB enthaltene Versorgungsbezuege einschliesslich Sterbegeld
233
+ # in Cents (ggf. 0)
234
+ @vbs = BigDecimal.new(0) # BigDecimal
235
+
236
+ # Jahr, in dem der Versorgungsbezug erstmalig gewaehrt wurde; werden
237
+ # mehrere Versorgungsbezuege gezahlt, so gilt der aelteste erstmalige Bezug
238
+ @vjahr = 0 # int
239
+
240
+ # Kapitalauszahlungen / Abfindungen / Nachzahlungen bei Versorgungsbezügen
241
+ # für mehrere Jahre in Cent (ggf. 0)
242
+ @vkapa = BigDecimal.new(0) # BigDecimal
243
+
244
+ # Vergütung für mehrjährige Tätigkeit ohne Kapitalauszahlungen und ohne Abfindungen
245
+ # bei Versorgungsbezügen in Cent (ggf. 0)
246
+ @vmt = BigDecimal.new(0) # BigDecimal
247
+
248
+ # Zahl der Freibetraege fuer Kinder (eine Dezimalstelle, nur bei Steuerklassen
249
+ # I, II, III und IV)
250
+ @zkf = BigDecimal.new(0) # BigDecimal
251
+
252
+ # Zahl der Monate, fuer die Versorgungsbezuege gezahlt werden (nur
253
+ # erforderlich bei Jahresberechnung (LZZ = 1)
254
+ @zmvb = 0 # int
255
+
256
+ # In JRE4 enthaltene Entschädigungen nach § 24 Nummer 1 EStG in Cent
257
+ @jre4ent = BigDecimal.ZERO # BigDecimal
258
+
259
+ # In SONSTB enthaltene Entschädigungen nach § 24 Nummer 1 EStG in Cent
260
+ @sonstent = BigDecimal.ZERO # BigDecimal
261
+
262
+ # OUTPUTS
263
+
264
+ # Bemessungsgrundlage fuer die Kirchenlohnsteuer in Cents
265
+ @bk = BigDecimal.new(0) # BigDecimal
266
+
267
+ # Bemessungsgrundlage der sonstigen Einkuenfte (ohne Verguetung
268
+ # fuer mehrjaehrige Taetigkeit) fuer die Kirchenlohnsteuer in Cents
269
+ @bks = BigDecimal.new(0) # BigDecimal
270
+ @bkv = BigDecimal.new(0) # BigDecimal
271
+
272
+ # Fuer den Lohnzahlungszeitraum einzubehaltende Lohnsteuer in Cents
273
+ @lstlzz = BigDecimal.new(0) # BigDecimal
274
+
275
+ # Fuer den Lohnzahlungszeitraum einzubehaltender Solidaritaetszuschlag
276
+ # in Cents
277
+ @solzlzz = BigDecimal.new(0) # BigDecimal
278
+
279
+ # Solidaritaetszuschlag fuer sonstige Bezuege (ohne Verguetung fuer mehrjaehrige
280
+ # Taetigkeit) in Cents
281
+ @solzs = BigDecimal.new(0) # BigDecimal
282
+
283
+ # Solidaritaetszuschlag fuer die Verguetung fuer mehrjaehrige Taetigkeit in
284
+ # Cents
285
+ @solzv = BigDecimal.new(0) # BigDecimal
286
+
287
+ # Lohnsteuer fuer sonstige Einkuenfte (ohne Verguetung fuer mehrjaehrige
288
+ # Taetigkeit) in Cents
289
+ @sts = BigDecimal.new(0) # BigDecimal
290
+
291
+ # Lohnsteuer fuer Verguetung fuer mehrjaehrige Taetigkeit in Cents
292
+ @stv = BigDecimal.new(0) # BigDecimal
293
+
294
+ # Für den Lohnzahlungszeitraum berücksichtigte Beiträge des Arbeitnehmers zur
295
+ # privaten Basis-Krankenversicherung und privaten Pflege-Pflichtversicherung (ggf. auch
296
+ # die Mindestvorsorgepauschale) in Cent beim laufenden Arbeitslohn. Für Zwecke der Lohn-
297
+ # steuerbescheinigung sind die einzelnen Ausgabewerte außerhalb des eigentlichen Lohn-
298
+ # steuerbescheinigungsprogramms zu addieren; hinzuzurechnen sind auch die Ausgabewerte
299
+ # VKVSONST
300
+ @vkvlzz = BigDecimal.new(0) # BigDecimal
301
+
302
+ # Für den Lohnzahlungszeitraum berücksichtigte Beiträge des Arbeitnehmers
303
+ # zur privaten Basis-Krankenversicherung und privaten Pflege-Pflichtversicherung (ggf.
304
+ # auch die Mindestvorsorgepauschale) in Cent bei sonstigen Bezügen. Der Ausgabewert kann
305
+ # auch negativ sein. Für tarifermäßigt zu besteuernde Vergütungen für mehrjährige
306
+ # Tätigkeiten enthält der PAP keinen entsprechenden Ausgabewert.
307
+ @vkvsonst = BigDecimal.new(0) # BigDecimal
308
+
309
+ # INTERNALS
310
+
311
+ # spezielles ZVE f. Einkommensteuer-Berechnung, dieses darf negativ werden.
312
+ @zveekst = BigDecimal.new(0)
313
+ @zvegemeinsam = BigDecimal.new(0)
314
+
315
+ # Altersentlastungsbetrag nach Alterseinkünftegesetz in €,
316
+ # Cent (2 Dezimalstellen)
317
+ @alte = BigDecimal.new(0)
318
+
319
+ # Arbeitnehmer-Pauschbetrag in EURO
320
+ @anp = BigDecimal.new(0)
321
+
322
+ # Auf den Lohnzahlungszeitraum entfallender Anteil von Jahreswerten
323
+ # auf ganze Cents abgerundet
324
+ @anteil1 = BigDecimal.new(0)
325
+
326
+ # Bemessungsgrundlage für Altersentlastungsbetrag in €, Cent
327
+ # (2 Dezimalstellen)
328
+ @bmg = BigDecimal.new(0)
329
+
330
+ # Beitragsbemessungsgrenze in der gesetzlichen Krankenversicherung
331
+ # und der sozialen Pflegeversicherung in Euro
332
+ @bbgkvpv = BigDecimal.new(0)
333
+
334
+ # allgemeine Beitragsbemessungsgrenze in der allgemeinen Renten-versicherung in Euro
335
+ @bbgrv = BigDecimal.new(0)
336
+
337
+ # Differenz zwischen ST1 und ST2 in EURO
338
+ @diff = BigDecimal.new(0)
339
+
340
+ # Entlastungsbetrag fuer Alleinerziehende in EURO
341
+ @efa = BigDecimal.new(0)
342
+
343
+ # Versorgungsfreibetrag in €, Cent (2 Dezimalstellen)
344
+ @fvb = BigDecimal.new(0)
345
+
346
+ # Versorgungsfreibetrag in €, Cent (2 Dezimalstellen) für die Berechnung
347
+ # der Lohnsteuer für den sonstigen Bezug
348
+ @fvbso = BigDecimal.new(0)
349
+
350
+ # Zuschlag zum Versorgungsfreibetrag in EURO
351
+ @fvbz = BigDecimal.new(0)
352
+
353
+ # Zuschlag zum Versorgungsfreibetrag in EURO fuer die Berechnung
354
+ # der Lohnsteuer beim sonstigen Bezug
355
+ @fvbzso = BigDecimal.new(0)
356
+
357
+ # Maximaler Altersentlastungsbetrag in €
358
+ @hbalte = BigDecimal.new(0)
359
+
360
+ # Massgeblicher maximaler Versorgungsfreibetrag in €
361
+ @hfvb = BigDecimal.new(0)
362
+
363
+ # Massgeblicher maximaler Zuschlag zum Versorgungsfreibetrag in €,Cent
364
+ # (2 Dezimalstellen)
365
+ @hfvbz = BigDecimal.new(0)
366
+
367
+ # Massgeblicher maximaler Zuschlag zum Versorgungsfreibetrag in €, Cent
368
+ # (2 Dezimalstellen) für die Berechnung der Lohnsteuer für den
369
+ # sonstigen Bezug
370
+ @hfvbzso = BigDecimal.new(0)
371
+
372
+ # Nummer der Tabellenwerte fuer Versorgungsparameter
373
+ @j = 0
374
+
375
+ # Jahressteuer nach § 51a EStG, aus der Solidaritaetszuschlag und
376
+ # Bemessungsgrundlage fuer die Kirchenlohnsteuer ermittelt werden in EURO
377
+ @jbmg = BigDecimal.new(0)
378
+
379
+ # Auf einen Jahreslohn hochgerechneter LZZFREIB in €, Cent
380
+ # (2 Dezimalstellen)
381
+ @jlfreib = BigDecimal.new(0)
382
+
383
+ # Auf einen Jahreslohn hochgerechnete LZZHINZU in €, Cent
384
+ # (2 Dezimalstellen)
385
+ @jlhinzu = BigDecimal.new(0)
386
+
387
+ # Jahreswert, dessen Anteil fuer einen Lohnzahlungszeitraum in
388
+ # UPANTEIL errechnet werden soll in Cents
389
+ @jw = BigDecimal.new(0)
390
+
391
+ # Jahreswert Lohnsteuer vor KiFBG in Cent
392
+ @jwlsta = BigDecimal.new(0)
393
+
394
+ # Neu 2015
395
+ # Jahreswert Lohnsteuer unter Berücksichtigung des KiFBG in Cent
396
+ @jwlstn = BigDecimal.new(0)
397
+
398
+ # Neu 2015
399
+ # Jahreswert Solidaritätszuschlag vor KiFBG in Cent
400
+ @jwsolza = BigDecimal.new(0)
401
+
402
+ # Neu 2015
403
+ # Jahreswert Solidaritätszuschlag unter Berücksichtigung des KiFBG in Cent
404
+ @jwsolzn = BigDecimal.new(0)
405
+
406
+ # Neu 2015
407
+ # Jahreswert Bemessungsgrundlage Kirchensteuer vor KiFBG in Cent
408
+ @jwbka = BigDecimal.new(0)
409
+
410
+ # Neu 2015
411
+ # Jahreswert Bemessungsgrundlage Kirchensteuer unter Berücksich-tigung des KiFBG in Cent
412
+ @jwbkn = BigDecimal.new(0)
413
+
414
+ # Neu 2015
415
+ # Nummer der Tabellenwerte fuer Parameter bei Altersentlastungsbetrag
416
+ @k = 0
417
+
418
+ # Merker für Berechnung Lohnsteuer für mehrjährige Tätigkeit.
419
+ # 0 = normale Steuerberechnung
420
+ # 1 = Steuerberechnung für mehrjährige Tätigkeit
421
+ # 2 = entfällt
422
+ @kennvmt = 0
423
+
424
+ # Summe der Freibetraege fuer Kinder in EURO
425
+ @kfb = BigDecimal.new(0)
426
+
427
+ # Beitragssatz des Arbeitgebers zur Krankenversicherung
428
+ @kvsatzag = BigDecimal.new(0)
429
+
430
+ # Beitragssatz des Arbeitnehmers zur Krankenversicherung
431
+ @kvsatzan = BigDecimal.new(0)
432
+
433
+ # Kennzahl fuer die Einkommensteuer-Tabellenart:
434
+ # 1 = Grundtabelle
435
+ # 2 = Splittingtabelle
436
+ @kztab = 0
437
+
438
+ # Jahreslohnsteuer in EURO
439
+ @lstjahr = BigDecimal.new(0)
440
+
441
+ # Zwischenfelder der Jahreslohnsteuer in Cent
442
+ @lst1 = BigDecimal.new(0)
443
+ @lst2 = BigDecimal.new(0)
444
+ @lst3 = BigDecimal.new(0)
445
+ @lstoso = BigDecimal.new(0)
446
+ @lstso = BigDecimal.new(0)
447
+
448
+ # Mindeststeuer fuer die Steuerklassen V und VI in EURO
449
+ @mist = BigDecimal.new(0)
450
+
451
+ # Beitragssatz des Arbeitgebers zur Pflegeversicherung
452
+ @pvsatzag = BigDecimal.new(0)
453
+
454
+ # Beitragssatz des Arbeitnehmers zur Pflegeversicherung
455
+ @pvsatzan = BigDecimal.new(0)
456
+
457
+ # Beitragssatz des Arbeitnehmers in der allgemeinen gesetzlichen Rentenversicherung (4 Dezimalstellen)
458
+ @rvsatzan = BigDecimal.new(0)
459
+
460
+ # Rechenwert in Gleitkommadarstellung
461
+ @rw = BigDecimal.new(0)
462
+
463
+ # Sonderausgaben-Pauschbetrag in EURO
464
+ @sap = BigDecimal.new(0)
465
+
466
+ # Schleifenzähler für Differenzberechnung
467
+ @schleifz = 0
468
+
469
+ # Neu 2015
470
+ # Freigrenze fuer den Solidaritaetszuschlag in EURO
471
+ @solzfrei = BigDecimal.new(0)
472
+
473
+ # Solidaritaetszuschlag auf die Jahreslohnsteuer in EURO, C (2 Dezimalstellen)
474
+ @solzj = BigDecimal.new(0)
475
+
476
+ # Zwischenwert fuer den Solidaritaetszuschlag auf die Jahreslohnsteuer
477
+ # in EURO, C (2 Dezimalstellen)
478
+ @solzmin = BigDecimal.new(0)
479
+
480
+ # Tarifliche Einkommensteuer in EURO
481
+ @st = BigDecimal.new(0)
482
+
483
+ # Tarifliche Einkommensteuer auf das 1,25-fache ZX in EURO
484
+ @st1 = BigDecimal.new(0)
485
+
486
+ # Tarifliche Einkommensteuer auf das 0,75-fache ZX in EURO
487
+ @st2 = BigDecimal.new(0)
488
+
489
+ # Zwischenfeld zur Ermittlung der Steuer auf Vergütungen für mehrjährige Tätigkeit
490
+ @stovmt = BigDecimal.new(0)
491
+
492
+ # Teilbetragssatz der Vorsorgepauschale für die Rentenversicherung (2 Dezimalstellen)
493
+ @tbsvorv = BigDecimal.new(0)
494
+
495
+ # Bemessungsgrundlage fuer den Versorgungsfreibetrag in Cents
496
+ @vbezb = BigDecimal.new(0)
497
+
498
+ # Bemessungsgrundlage für den Versorgungsfreibetrag in Cent für
499
+ # den sonstigen Bezug
500
+ @vbezbso = BigDecimal.new(0)
501
+
502
+ # Hoechstbetrag der Vorsorgepauschale nach Alterseinkuenftegesetz in EURO, C
503
+ @vhb = BigDecimal.new(0)
504
+
505
+ # Vorsorgepauschale in EURO, C (2 Dezimalstellen)
506
+ @vsp = BigDecimal.new(0)
507
+
508
+ # Vorsorgepauschale nach Alterseinkuenftegesetz in EURO, C
509
+ @vspn = BigDecimal.new(0)
510
+
511
+ # Zwischenwert 1 bei der Berechnung der Vorsorgepauschale nach
512
+ # dem Alterseinkuenftegesetz in EURO, C (2 Dezimalstellen)
513
+ @vsp1 = BigDecimal.new(0)
514
+
515
+ # Zwischenwert 2 bei der Berechnung der Vorsorgepauschale nach
516
+ # dem Alterseinkuenftegesetz in EURO, C (2 Dezimalstellen)
517
+ @vsp2 = BigDecimal.new(0)
518
+
519
+ # Vorsorgepauschale mit Teilbeträgen für die gesetzliche Kranken- und
520
+ # soziale Pflegeversicherung nach fiktiven Beträgen oder ggf. für die
521
+ # private Basiskrankenversicherung und private Pflege-Pflichtversicherung
522
+ # in Euro, Cent (2 Dezimalstellen)
523
+ @vsp3 = BigDecimal.new(0)
524
+
525
+ # Erster Grenzwert in Steuerklasse V/VI in Euro
526
+ @w1stkl5 = BigDecimal.new(0)
527
+
528
+ # Neu 2015
529
+ # Zweiter Grenzwert in Steuerklasse V/VI in Euro
530
+ @w2stkl5 = BigDecimal.new(0)
531
+
532
+ # Neu 2015
533
+ # Dritter Grenzwert in Steuerklasse V/VI in Euro
534
+ @w3stkl5 = BigDecimal.new(0)
535
+
536
+ # Neu 2015
537
+ # Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 3 EStG in EURO
538
+ @vspkurz = BigDecimal.new(0)
539
+
540
+ # Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 2 Nr. 2 EStG in EURO
541
+ @vspmax1 = BigDecimal.new(0)
542
+
543
+ # Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 2 Nr. 3 EStG in EURO
544
+ @vspmax2 = BigDecimal.new(0)
545
+
546
+ # Vorsorgepauschale nach § 10c Abs. 2 Satz 2 EStG vor der Hoechstbetragsberechnung
547
+ # in EURO, C (2 Dezimalstellen)
548
+ @vspo = BigDecimal.new(0)
549
+
550
+ # Fuer den Abzug nach § 10c Abs. 2 Nrn. 2 und 3 EStG verbleibender
551
+ # Rest von VSPO in EURO, C (2 Dezimalstellen)
552
+ @vsprest = BigDecimal.new(0)
553
+
554
+ # Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 2 Nr. 1 EStG
555
+ # in EURO, C (2 Dezimalstellen)
556
+ @vspvor = BigDecimal.new(0)
557
+
558
+ # Zu versteuerndes Einkommen gem. § 32a Abs. 1 und 2 EStG €, C
559
+ # (2 Dezimalstellen)
560
+ @x = BigDecimal.new(0)
561
+
562
+ # gem. § 32a Abs. 1 EStG (6 Dezimalstellen)
563
+ @y = BigDecimal.new(0)
564
+
565
+ # Auf einen Jahreslohn hochgerechnetes RE4 in €, C (2 Dezimalstellen)
566
+ # nach Abzug der Freibeträge nach § 39 b Abs. 2 Satz 3 und 4.
567
+ @zre4 = BigDecimal.new(0)
568
+
569
+ # Auf einen Jahreslohn hochgerechnetes RE4 in €, C (2 Dezimalstellen)
570
+ @zre4j = BigDecimal.new(0)
571
+
572
+ # Auf einen Jahreslohn hochgerechnetes RE4 in €, C (2 Dezimalstellen)
573
+ # nach Abzug des Versorgungsfreibetrags und des Alterentlastungsbetrags
574
+ # zur Berechnung der Vorsorgepauschale in €, Cent (2 Dezimalstellen)
575
+ @zre4vp = BigDecimal.new(0)
576
+
577
+ # Merkfeld ZRE4VP für Schleifenberechnung Dezember 2015 in Euro, Cent (2 Dezimalstellen)
578
+ @zre4vpm = BigDecimal.new(0)
579
+
580
+ # Neu 2015
581
+ # Feste Tabellenfreibeträge (ohne Vorsorgepauschale) in €, Cent
582
+ # (2 Dezimalstellen)
583
+ @ztabfb = BigDecimal.new(0)
584
+
585
+ # Auf einen Jahreslohn hochgerechnetes (VBEZ abzueglich FVB) in
586
+ # EURO, C (2 Dezimalstellen)
587
+ @zvbez = BigDecimal.new(0)
588
+
589
+ # Auf einen Jahreslohn hochgerechnetes VBEZ in €, C (2 Dezimalstellen)
590
+ @zvbezj = BigDecimal.new(0)
591
+
592
+ # Zu versteuerndes Einkommen in €, C (2 Dezimalstellen)
593
+ @zve = BigDecimal.new(0)
594
+
595
+ # Zwischenfelder zu X fuer die Berechnung der Steuer nach § 39b
596
+ # Abs. 2 Satz 7 EStG in €
597
+ @zx = BigDecimal.new(0)
598
+ @zzx = BigDecimal.new(0)
599
+ @hoch = BigDecimal.new(0)
600
+ @vergl = BigDecimal.new(0)
601
+
602
+ # Jahreswert der berücksichtigten Beiträge zur privaten Basis-Krankenversicherung und
603
+ # privaten Pflege-Pflichtversicherung (ggf. auch die Mindestvorsorgepauschale) in Cent.
604
+ @vkv = BigDecimal.new(0)
605
+
606
+ params.each do |key, value|
607
+ instance_variable_set("@#{key}", value)
608
+ end
609
+
610
+ mpara
611
+ mre4jl
612
+ @vbezbso = BigDecimal.ZERO
613
+ @kennvmt = 0
614
+ mre4
615
+ mre4abz
616
+ @zre4vpm = @zre4vp
617
+ @schleifz = 1
618
+ mberech
619
+ @schleifz = 2
620
+ @w1stkl5 = BigDecimal.value_of(9873)
621
+ @zre4vp = @zre4vpm
622
+ mberech
623
+ mlst1215
624
+ msonst
625
+ mvmt
626
+ end
627
+
628
+ private
629
+
630
+ def mpara
631
+ if @krv < 2
632
+ if @krv == 0
633
+ @bbgrv = BigDecimal.new(72600)
634
+ else
635
+ @bbgrv = BigDecimal.new(62400)
636
+ end
637
+ @rvsatzan = BigDecimal.value_of(0.0935)
638
+ @tbsvorv = BigDecimal.value_of(0.60)
639
+ end
640
+ @bbgkvpv = BigDecimal.new(49500)
641
+ @kvsatzan = (@kvz.divide(ZAHL100)).add(BigDecimal.value_of(0.07))
642
+ @kvsatzag = BigDecimal.value_of(0.07)
643
+ if @pvs == 1
644
+ @pvsatzan = BigDecimal.value_of(0.01675)
645
+ @pvsatzag = BigDecimal.value_of(0.00675)
646
+ else
647
+ @pvsatzan = BigDecimal.value_of(0.01175)
648
+ @pvsatzag = BigDecimal.value_of(0.01175)
649
+ end
650
+ if @pvz == 1
651
+ @pvsatzan = @pvsatzan.add(BigDecimal.value_of(0.0025))
652
+ end
653
+ @w1stkl5 = BigDecimal.new(9763)
654
+ @w2stkl5 = BigDecimal.new(26441)
655
+ @w3stkl5 = BigDecimal.new(200584)
656
+ end
657
+
658
+ def mre4jl
659
+ if @lzz == 1
660
+ @zre4j = @re4.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
661
+ @zvbezj = @vbez.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
662
+ @jlfreib = @lzzfreib.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
663
+ @jlhinzu = @lzzhinzu.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
664
+ else
665
+ if @lzz == 2
666
+ @zre4j = (@re4.multiply(ZAHL12)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
667
+ @zvbezj = (@vbez.multiply(ZAHL12)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
668
+ @jlfreib = (@lzzfreib.multiply(ZAHL12)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
669
+ @jlhinzu = (@lzzhinzu.multiply(ZAHL12)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
670
+ else
671
+ if @lzz == 3
672
+ @zre4j = (@re4.multiply(ZAHL360)).divide(ZAHL700, 2, BigDecimal.ROUND_DOWN)
673
+ @zvbezj = (@vbez.multiply(ZAHL360)).divide(ZAHL700, 2, BigDecimal.ROUND_DOWN)
674
+ @jlfreib = (@lzzfreib.multiply(ZAHL360)).divide(ZAHL700, 2, BigDecimal.ROUND_DOWN)
675
+ @jlhinzu = (@lzzhinzu.multiply(ZAHL360)).divide(ZAHL700, 2, BigDecimal.ROUND_DOWN)
676
+ else
677
+ @zre4j = (@re4.multiply(ZAHL360)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
678
+ @zvbezj = (@vbez.multiply(ZAHL360)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
679
+ @jlfreib = (@lzzfreib.multiply(ZAHL360)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
680
+ @jlhinzu = (@lzzhinzu.multiply(ZAHL360)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
681
+ end
682
+ end
683
+ end
684
+ if @af == 0
685
+ @f = 1
686
+ end
687
+ end
688
+
689
+ def mre4
690
+ if @zvbezj.compare_to(BigDecimal.ZERO) == 0
691
+ @fvbz = BigDecimal.ZERO
692
+ @fvb = BigDecimal.ZERO
693
+ @fvbzso = BigDecimal.ZERO
694
+ @fvbso = BigDecimal.ZERO
695
+ else
696
+ if @vjahr < 2006
697
+ @j = 1
698
+ else
699
+ if @vjahr < 2040
700
+ @j = @vjahr - 2004
701
+ else
702
+ @j = 36
703
+ end
704
+ end
705
+ if @lzz == 1
706
+ @vbezb = (@vbezm.multiply(BigDecimal.value_of(@zmvb))).add(@vbezs)
707
+ @hfvb = TAB2[@j].divide(ZAHL12).multiply(BigDecimal.value_of(@zmvb))
708
+ @fvbz = TAB3[@j].divide(ZAHL12).multiply(BigDecimal.value_of(@zmvb)).set_scale(0, BigDecimal.ROUND_UP)
709
+ else
710
+ @vbezb = ((@vbezm.multiply(ZAHL12)).add(@vbezs)).set_scale(2, BigDecimal.ROUND_DOWN)
711
+ @hfvb = TAB2[@j]
712
+ @fvbz = TAB3[@j]
713
+ end
714
+ @fvb = ((@vbezb.multiply(TAB1[@j]))).divide(ZAHL100).set_scale(2, BigDecimal.ROUND_UP)
715
+ if @fvb.compare_to(@hfvb) == 1
716
+ @fvb = @hfvb
717
+ end
718
+ @fvbso = (@fvb.add((@vbezbso.multiply(TAB1[@j])).divide(ZAHL100))).set_scale(2, BigDecimal.ROUND_UP)
719
+ if @fvbso.compare_to(TAB2[@j]) == 1
720
+ @fvbso = TAB2[@j]
721
+ end
722
+ @hfvbzso = (((@vbezb.add(@vbezbso)).divide(ZAHL100)).subtract(@fvbso)).set_scale(2, BigDecimal.ROUND_DOWN)
723
+ @fvbzso = (@fvbz.add((@vbezbso).divide(ZAHL100))).set_scale(0, BigDecimal.ROUND_UP)
724
+ if @fvbzso.compare_to(@hfvbzso) == 1
725
+ @fvbzso = @hfvbzso.set_scale(0, BigDecimal.ROUND_UP)
726
+ end
727
+ if @fvbzso.compare_to(TAB3[@j]) == 1
728
+ @fvbzso = TAB3[@j]
729
+ end
730
+ @hfvbz = ((@vbezb.divide(ZAHL100)).subtract(@fvb)).set_scale(2, BigDecimal.ROUND_DOWN)
731
+ if @fvbz.compare_to(@hfvbz) == 1
732
+ @fvbz = @hfvbz.set_scale(0, BigDecimal.ROUND_UP)
733
+ end
734
+ end
735
+ mre4alte
736
+ end
737
+
738
+ def mre4alte
739
+ if @alter1 == 0
740
+ @alte = BigDecimal.ZERO
741
+ else
742
+ if @ajahr < 2006
743
+ @k = 1
744
+ else
745
+ if @ajahr < 2040
746
+ @k = @ajahr - 2004
747
+ else
748
+ @k = 36
749
+ end
750
+ end
751
+ @bmg = @zre4j.subtract(@zvbezj)
752
+ @alte = (@bmg.multiply(TAB4[@k])).set_scale(0, BigDecimal.ROUND_UP)
753
+ @hbalte = TAB5[@k]
754
+ if @alte.compare_to(@hbalte) == 1
755
+ @alte = @hbalte
756
+ end
757
+ end
758
+ end
759
+
760
+ def mre4abz
761
+ @zre4 = (@zre4j.subtract(@fvb).subtract(@alte).subtract(@jlfreib).add(@jlhinzu)).set_scale(2, BigDecimal.ROUND_DOWN)
762
+ if @zre4.compare_to(BigDecimal.ZERO) == -1
763
+ @zre4 = BigDecimal.ZERO
764
+ end
765
+ @zre4vp = @zre4j
766
+ if @kennvmt == 2
767
+ @zre4vp = @zre4vp.subtract(@entsch.divide(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
768
+ end
769
+ @zvbez = @zvbezj.subtract(@fvb).set_scale(2, BigDecimal.ROUND_DOWN)
770
+ if @zvbez.compare_to(BigDecimal.ZERO) == -1
771
+ @zvbez = BigDecimal.ZERO
772
+ end
773
+ end
774
+
775
+ def mberech
776
+ if @schleifz == 1
777
+ mztabfba
778
+ else
779
+ mztabfbn
780
+ end
781
+ mlstjahr
782
+ @lstjahr = (@st.multiply(BigDecimal.value_of(@f))).set_scale(0, BigDecimal.ROUND_DOWN)
783
+ uplstlzz
784
+ upvkvlzz
785
+ if @zkf.compare_to(BigDecimal.ZERO) == 1
786
+ @ztabfb = @ztabfb.add(@kfb)
787
+ mre4abz
788
+ mlstjahr
789
+ @jbmg = (@st.multiply(BigDecimal.value_of(@f))).set_scale(0, BigDecimal.ROUND_DOWN)
790
+ else
791
+ @jbmg = @lstjahr
792
+ end
793
+ msolz
794
+ end
795
+
796
+ def mztabfba
797
+ @anp = BigDecimal.ZERO
798
+ if @zvbez.compare_to(BigDecimal.ZERO) >= 0 && @zvbez.compare_to(@fvbz) == -1
799
+ @fvbz = BigDecimal.value_of(@zvbez.longValue())
800
+ end
801
+ if @stkl < 6
802
+ if @zvbez.compare_to(BigDecimal.ZERO) == 1
803
+ if (@zvbez.subtract(@fvbz)).compare_to(BigDecimal.value_of(102)) == -1
804
+ @anp = (@zvbez.subtract(@fvbz)).set_scale(0, BigDecimal.ROUND_UP)
805
+ else
806
+ @anp = BigDecimal.value_of(102)
807
+ end
808
+ end
809
+ else
810
+ @fvbz = BigDecimal.value_of(0)
811
+ @fvbzso = BigDecimal.value_of(0)
812
+ end
813
+ if @stkl < 6
814
+ if @zre4.compare_to(@zvbez) == 1
815
+ if @zre4.subtract(@zvbez).compare_to(ZAHL1000) == -1
816
+ @anp = @anp.add(@zre4).subtract(@zvbez).set_scale(0, BigDecimal.ROUND_UP)
817
+ else
818
+ @anp = @anp.add(ZAHL1000)
819
+ end
820
+ end
821
+ end
822
+ @kztab = 1
823
+ if @stkl == 1
824
+ @sap = BigDecimal.value_of(36)
825
+ @kfb = (@zkf.multiply(BigDecimal.value_of(7008))).set_scale(0, BigDecimal.ROUND_DOWN)
826
+ else
827
+ if @stkl == 2
828
+ @efa = BigDecimal.value_of(1308)
829
+ @sap = BigDecimal.value_of(36)
830
+ @kfb = (@zkf.multiply(BigDecimal.value_of(7008))).set_scale(0, BigDecimal.ROUND_DOWN)
831
+ else
832
+ if @stkl == 3
833
+ @kztab = 2
834
+ @sap = BigDecimal.value_of(36)
835
+ @kfb = (@zkf.multiply(BigDecimal.value_of(7008))).set_scale(0, BigDecimal.ROUND_DOWN)
836
+ else
837
+ if @stkl == 4
838
+ @sap = BigDecimal.value_of(36)
839
+ @kfb = (@zkf.multiply(BigDecimal.value_of(3504))).set_scale(0, BigDecimal.ROUND_DOWN)
840
+ else
841
+ if @stkl == 5
842
+ @sap = BigDecimal.value_of(36)
843
+ @kfb = BigDecimal.ZERO
844
+ else
845
+ @kfb = BigDecimal.ZERO
846
+ end
847
+ end
848
+ end
849
+ end
850
+ end
851
+ @ztabfb = (@efa.add(@anp).add(@sap).add(@fvbz)).set_scale(2, BigDecimal.ROUND_DOWN)
852
+ end
853
+
854
+ def mztabfbn
855
+ @anp = BigDecimal.ZERO
856
+ if @zvbez.compare_to(BigDecimal.ZERO) >= 0 && @zvbez.compare_to(@fvbz) == -1
857
+ @fvbz = BigDecimal.value_of(@zvbez.longValue())
858
+ end
859
+ if @stkl < 6
860
+ if @zvbez.compare_to(BigDecimal.ZERO) == 1
861
+ if (@zvbez.subtract(@fvbz)).compare_to(BigDecimal.value_of(102)) == -1
862
+ @anp = (@zvbez.subtract(@fvbz)).set_scale(0, BigDecimal.ROUND_UP)
863
+ else
864
+ @anp = BigDecimal.value_of(102)
865
+ end
866
+ end
867
+ else
868
+ @fvbz = BigDecimal.value_of(0)
869
+ @fvbzso = BigDecimal.value_of(0)
870
+ end
871
+ if @stkl < 6
872
+ if @zre4.compare_to(@zvbez) == 1
873
+ if @zre4.subtract(@zvbez).compare_to(ZAHL1000) == -1
874
+ @anp = @anp.add(@zre4).subtract(@zvbez).set_scale(0, BigDecimal.ROUND_UP)
875
+ else
876
+ @anp = @anp.add(ZAHL1000)
877
+ end
878
+ end
879
+ end
880
+ @kztab = 1
881
+ if @stkl == 1
882
+ @sap = BigDecimal.value_of(36)
883
+ @kfb = (@zkf.multiply(BigDecimal.value_of(7152))).set_scale(0, BigDecimal.ROUND_DOWN)
884
+ else
885
+ if @stkl == 2
886
+ @efa = BigDecimal.value_of(1908)
887
+ @sap = BigDecimal.value_of(36)
888
+ @kfb = (@zkf.multiply(BigDecimal.value_of(7152))).set_scale(0, BigDecimal.ROUND_DOWN)
889
+ else
890
+ if @stkl == 3
891
+ @kztab = 2
892
+ @sap = BigDecimal.value_of(36)
893
+ @kfb = (@zkf.multiply(BigDecimal.value_of(7152))).set_scale(0, BigDecimal.ROUND_DOWN)
894
+ else
895
+ if @stkl == 4
896
+ @sap = BigDecimal.value_of(36)
897
+ @kfb = (@zkf.multiply(BigDecimal.value_of(3576))).set_scale(0, BigDecimal.ROUND_DOWN)
898
+ else
899
+ if @stkl == 5
900
+ @sap = BigDecimal.value_of(36)
901
+ @kfb = BigDecimal.ZERO
902
+ else
903
+ @kfb = BigDecimal.ZERO
904
+ end
905
+ end
906
+ end
907
+ end
908
+ end
909
+ @ztabfb = (@efa.add(@anp).add(@sap).add(@fvbz)).set_scale(2, BigDecimal.ROUND_DOWN)
910
+ end
911
+
912
+ def mlstjahr
913
+ upevp
914
+ if @kennvmt != 1
915
+ @zve = (@zre4.subtract(@ztabfb).subtract(@vsp)).set_scale(2, BigDecimal.ROUND_DOWN)
916
+ upmlst
917
+ else
918
+ @zve = (@zre4.subtract(@ztabfb).subtract(@vsp).subtract((@vmt).divide(ZAHL100)).subtract((@vkapa).divide(ZAHL100))).set_scale(2, BigDecimal.ROUND_DOWN)
919
+ if @zve.compare_to(BigDecimal.ZERO) == -1
920
+ @zve = @zve.add(@vmt.divide(ZAHL100)).add(@vkapa.divide(ZAHL100)).divide(ZAHL5).set_scale(2, BigDecimal.ROUND_DOWN)
921
+ upmlst
922
+ @st = (@st.multiply(ZAHL5)).set_scale(0, BigDecimal.ROUND_DOWN)
923
+ else
924
+ upmlst
925
+ @stovmt = @st
926
+ @zve = (@zve.add(((@vmt.add(@vkapa)).divide(ZAHL500)))).set_scale(2, BigDecimal.ROUND_DOWN)
927
+ upmlst
928
+ @st = (((@st.subtract(@stovmt)).multiply(ZAHL5)).add(@stovmt)).set_scale(0, BigDecimal.ROUND_DOWN)
929
+ end
930
+ end
931
+ end
932
+
933
+ def upvkvlzz
934
+ upvkv
935
+ @jw = @vkv
936
+ upanteil
937
+ @vkvlzz = @anteil1
938
+ end
939
+
940
+ def upvkv
941
+ if @pkv > 0
942
+ if @vsp2.compare_to(@vsp3) == 1
943
+ @vkv = @vsp2.multiply(ZAHL100)
944
+ else
945
+ @vkv = @vsp3.multiply(ZAHL100)
946
+ end
947
+ else
948
+ @vkv = BigDecimal.ZERO
949
+ end
950
+ end
951
+
952
+ def uplstlzz
953
+ @jw = @lstjahr.multiply(ZAHL100)
954
+ if @schleifz == 1
955
+ @jwlsta = @jw
956
+ else
957
+ @jwlstn = @jw
958
+ end
959
+ upanteil
960
+ @lstlzz = @anteil1
961
+ end
962
+
963
+ def upmlst
964
+ if @zve.compare_to(ZAHL1) == -1
965
+ @zve = BigDecimal.ZERO
966
+ @x = BigDecimal.ZERO
967
+ else
968
+ @x = (@zve.divide(BigDecimal.value_of(@kztab))).set_scale(0, BigDecimal.ROUND_DOWN)
969
+ end
970
+ if @stkl < 5
971
+ if @schleifz == 1
972
+ uptab14
973
+ else
974
+ uptab15
975
+ end
976
+ else
977
+ mst5_6
978
+ end
979
+ end
980
+
981
+ def upevp
982
+ if @krv > 1
983
+ @vsp1 = BigDecimal.ZERO
984
+ else
985
+ if @zre4vp.compare_to(@bbgrv) == 1
986
+ @zre4vp = @bbgrv
987
+ end
988
+ @vsp1 = (@tbsvorv.multiply(@zre4vp)).set_scale(2, BigDecimal.ROUND_DOWN)
989
+ @vsp1 = (@vsp1.multiply(@rvsatzan)).set_scale(2, BigDecimal.ROUND_DOWN)
990
+ end
991
+ @vsp2 = (@zre4vp.multiply(BigDecimal.value_of(0.12))).set_scale(2, BigDecimal.ROUND_DOWN)
992
+ if @stkl == 3
993
+ @vhb = BigDecimal.value_of(3000)
994
+ else
995
+ @vhb = BigDecimal.value_of(1900)
996
+ end
997
+ if @vsp2.compare_to(@vhb) == 1
998
+ @vsp2 = @vhb
999
+ end
1000
+ @vspn = (@vsp1.add(@vsp2)).set_scale(0, BigDecimal.ROUND_UP)
1001
+ mvsp
1002
+ if @vspn.compare_to(@vsp) == 1
1003
+ @vsp = @vspn.set_scale(2, BigDecimal.ROUND_DOWN)
1004
+ end
1005
+ end
1006
+
1007
+ def mvsp
1008
+ if @zre4vp.compare_to(@bbgkvpv) == 1
1009
+ @zre4vp = @bbgkvpv
1010
+ end
1011
+ if @pkv > 0
1012
+ if @stkl == 6
1013
+ @vsp3 = BigDecimal.ZERO
1014
+ else
1015
+ @vsp3 = @pkpv.multiply(ZAHL12).divide(ZAHL100)
1016
+ if @pkv == 2
1017
+ @vsp3 = @vsp3.subtract(@zre4vp.multiply(@kvsatzag.add(@pvsatzag))).set_scale(2, BigDecimal.ROUND_DOWN)
1018
+ end
1019
+ end
1020
+ else
1021
+ @vsp3 = @zre4vp.multiply(@kvsatzan.add(@pvsatzan)).set_scale(2, BigDecimal.ROUND_DOWN)
1022
+ end
1023
+ @vsp = @vsp3.add(@vsp1).set_scale(0, BigDecimal.ROUND_UP)
1024
+ end
1025
+
1026
+ def umvsp
1027
+ @vspvor = (@vspvor.subtract(@zre4vp.multiply(BigDecimal.value_of(0.16)))).set_scale(2, BigDecimal.ROUND_DOWN)
1028
+ if @vspvor.compare_to(BigDecimal.ZERO) == -1
1029
+ @vspvor = BigDecimal.ZERO
1030
+ end
1031
+ if @vspo.compare_to(@vspvor) == 1
1032
+ @vsp = @vspvor
1033
+ @vsprest = @vspo.subtract(@vspvor)
1034
+ if @vsprest.compare_to(@vspmax1) == 1
1035
+ @vsp = @vsp.add(@vspmax1)
1036
+ @vsprest = (@vsprest.subtract(@vspmax1)).divide(ZAHL2, 2, BigDecimal.ROUND_UP)
1037
+ if @vsprest.compare_to(@vspmax2) == 1
1038
+ @vsp = (@vsp.add(@vspmax2)).set_scale(0, BigDecimal.ROUND_DOWN)
1039
+ else
1040
+ @vsp = (@vsp.add(@vsprest)).set_scale(0, BigDecimal.ROUND_DOWN)
1041
+ end
1042
+ else
1043
+ @vsp = (@vsp.add(@vsprest)).set_scale(0, BigDecimal.ROUND_DOWN)
1044
+ end
1045
+ else
1046
+ @vsp = @vspo.set_scale(0, BigDecimal.ROUND_DOWN)
1047
+ end
1048
+ end
1049
+
1050
+ def mst5_6
1051
+ @zzx = @x
1052
+ if @zzx.compare_to(@w2stkl5) == 1
1053
+ @zx = @w2stkl5
1054
+ up5_6
1055
+ if @zzx.compare_to(@w3stkl5) == 1
1056
+ @st = (@st.add((@w3stkl5.subtract(@w2stkl5)).multiply(BigDecimal.value_of(0.42)))).set_scale(0, BigDecimal.ROUND_DOWN)
1057
+ @st = (@st.add((@zzx.subtract(@w3stkl5)).multiply(BigDecimal.value_of(0.45)))).set_scale(0, BigDecimal.ROUND_DOWN)
1058
+ else
1059
+ @st = (@st.add((@zzx.subtract(@w2stkl5)).multiply(BigDecimal.value_of(0.42)))).set_scale(0, BigDecimal.ROUND_DOWN)
1060
+ end
1061
+ else
1062
+ @zx = @zzx
1063
+ up5_6
1064
+ if @zzx.compare_to(@w1stkl5) == 1
1065
+ @vergl = @st
1066
+ @zx = @w1stkl5
1067
+ up5_6
1068
+ @hoch = (@st.add((@zzx.subtract(@w1stkl5)).multiply(BigDecimal.value_of(0.42)))).set_scale(0, BigDecimal.ROUND_DOWN)
1069
+ if @hoch.compare_to(@vergl) == -1
1070
+ @st = @hoch
1071
+ else
1072
+ @st = @vergl
1073
+ end
1074
+ end
1075
+ end
1076
+ end
1077
+
1078
+ def up5_6
1079
+ @x = (@zx.multiply(BigDecimal.value_of(1.25))).set_scale(2, BigDecimal.ROUND_DOWN)
1080
+ if @schleifz == 1
1081
+ uptab14
1082
+ else
1083
+ uptab15
1084
+ end
1085
+ @st1 = @st
1086
+ @x = (@zx.multiply(BigDecimal.value_of(0.75))).set_scale(2, BigDecimal.ROUND_DOWN)
1087
+ if @schleifz == 1
1088
+ uptab14
1089
+ else
1090
+ uptab15
1091
+ end
1092
+ @st2 = @st
1093
+ @diff = (@st1.subtract(@st2)).multiply(ZAHL2)
1094
+ @mist = (@zx.multiply(BigDecimal.value_of(0.14))).set_scale(0, BigDecimal.ROUND_DOWN)
1095
+ if @mist.compare_to(@diff) == 1
1096
+ @st = @mist
1097
+ else
1098
+ @st = @diff
1099
+ end
1100
+ end
1101
+
1102
+ def msolz
1103
+ @solzfrei = BigDecimal.value_of(972 * @kztab)
1104
+ if @jbmg.compare_to(@solzfrei) == 1
1105
+ @solzj = (@jbmg.multiply(BigDecimal.value_of(5.5))).divide(ZAHL100).set_scale(2, BigDecimal.ROUND_DOWN)
1106
+ @solzmin = (@jbmg.subtract(@solzfrei)).multiply(BigDecimal.value_of(20)).divide(ZAHL100).set_scale(2, BigDecimal.ROUND_DOWN)
1107
+ if @solzmin.compare_to(@solzj) == -1
1108
+ @solzj = @solzmin
1109
+ end
1110
+ @jw = @solzj.multiply(ZAHL100).set_scale(0, BigDecimal.ROUND_DOWN)
1111
+ if @schleifz == 1
1112
+ @jwsolza = @jw
1113
+ else
1114
+ @jwsolzn = @jw
1115
+ end
1116
+ upanteil
1117
+ @solzlzz = @anteil1
1118
+ else
1119
+ @solzlzz = BigDecimal.ZERO
1120
+ end
1121
+ if @r > 0
1122
+ @jw = @jbmg.multiply(ZAHL100)
1123
+ if @schleifz == 1
1124
+ @jwbka = @jw
1125
+ else
1126
+ @jwbkn = @jw
1127
+ end
1128
+ upanteil
1129
+ @bk = @anteil1
1130
+ else
1131
+ @bk = BigDecimal.ZERO
1132
+ end
1133
+ end
1134
+
1135
+ def mlst1215
1136
+ if @lzz > 1
1137
+ @jw = (@jwlstn.subtract(BigDecimal.value_of(11).multiply((@jwlsta.subtract(@jwlstn))))).set_scale(0, BigDecimal.ROUND_DOWN)
1138
+ if @jw.compare_to(BigDecimal.ZERO) == -1
1139
+ @anteil1 = BigDecimal.ZERO
1140
+ else
1141
+ upanteil
1142
+ end
1143
+ @lstlzz = @anteil1
1144
+ @jw = (@jwsolzn.subtract(BigDecimal.value_of(11).multiply(@jwsolza.subtract(@jwsolzn)))).set_scale(0, BigDecimal.ROUND_DOWN)
1145
+ if @jw.compare_to(BigDecimal.ZERO) == -1
1146
+ @anteil1 = BigDecimal.ZERO
1147
+ else
1148
+ upanteil
1149
+ end
1150
+ @solzlzz = @anteil1
1151
+ @jw = (@jwbkn.subtract(BigDecimal.value_of(11).multiply(@jwbka.subtract(@jwbkn)))).set_scale(0, BigDecimal.ROUND_DOWN)
1152
+ if @jw.compare_to(BigDecimal.ZERO) == -1
1153
+ @anteil1 = BigDecimal.ZERO
1154
+ else
1155
+ upanteil
1156
+ end
1157
+ @bk = @anteil1
1158
+ end
1159
+ end
1160
+
1161
+ def upanteil
1162
+ if @lzz == 1
1163
+ @anteil1 = @jw
1164
+ else
1165
+ if @lzz == 2
1166
+ @anteil1 = @jw.divide(ZAHL12, 0, BigDecimal.ROUND_DOWN)
1167
+ else
1168
+ if @lzz == 3
1169
+ @anteil1 = (@jw.multiply(ZAHL7)).divide(ZAHL360, 0, BigDecimal.ROUND_DOWN)
1170
+ else
1171
+ @anteil1 = @jw.divide(ZAHL360, 0, BigDecimal.ROUND_DOWN)
1172
+ end
1173
+ end
1174
+ end
1175
+ end
1176
+
1177
+ def msonst
1178
+ @lzz = 1
1179
+ if @zmvb == 0
1180
+ @zmvb = 12
1181
+ end
1182
+ if @sonstb.compare_to(BigDecimal.ZERO) == 0
1183
+ @vkvsonst = BigDecimal.ZERO
1184
+ @lstso = BigDecimal.ZERO
1185
+ @sts = BigDecimal.ZERO
1186
+ @solzs = BigDecimal.ZERO
1187
+ @bks = BigDecimal.ZERO
1188
+ else
1189
+ mosonst
1190
+ upvkv
1191
+ @vkvsonst = @vkv
1192
+ @zre4j = ((@jre4.add(@sonstb)).divide(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
1193
+ @zvbezj = ((@jvbez.add(@vbs)).divide(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
1194
+ @vbezbso = @sterbe
1195
+ mre4sonst
1196
+ mlstjahr
1197
+ upvkv
1198
+ @vkvsonst = @vkv.subtract(@vkvsonst)
1199
+ @lstso = @st.multiply(ZAHL100)
1200
+ @sts = @lstso.subtract(@lstoso).multiply(BigDecimal.value_of(@f)).divide(ZAHL100, 0, BigDecimal.ROUND_DOWN).multiply(ZAHL100)
1201
+ if @sts.compare_to(BigDecimal.ZERO) == -1
1202
+ @sts = BigDecimal.ZERO
1203
+ end
1204
+ @solzs = @sts.multiply(BigDecimal.value_of(5.5)).divide(ZAHL100, 0, BigDecimal.ROUND_DOWN)
1205
+ if @r > 0
1206
+ @bks = @sts
1207
+ else
1208
+ @bks = BigDecimal.ZERO
1209
+ end
1210
+ end
1211
+ end
1212
+
1213
+ def mvmt
1214
+ if @vkapa.compare_to(BigDecimal.ZERO) == -1
1215
+ @vkapa = BigDecimal.ZERO
1216
+ end
1217
+ if (@vmt.add(@vkapa)).compare_to(BigDecimal.ZERO) == 1
1218
+ if @lstso.compare_to(BigDecimal.ZERO) == 0
1219
+ mosonst
1220
+ @lst1 = @lstoso
1221
+ else
1222
+ @lst1 = @lstso
1223
+ end
1224
+ @vbezbso = @sterbe.add(@vkapa)
1225
+ @zre4j = ((@jre4.add(@sonstb).add(@vmt).add(@vkapa)).divide(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
1226
+ @zvbezj = ((@jvbez.add(@vbs).add(@vkapa)).divide(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
1227
+ @kennvmt = 2
1228
+ mre4sonst
1229
+ mlstjahr
1230
+ @lst3 = @st.multiply(ZAHL100)
1231
+ mre4abz
1232
+ @zre4vp = @zre4vp.subtract(@jre4ent.divide(ZAHL100)).subtract(@sonstent.divide(ZAHL100))
1233
+ @kennvmt = 1
1234
+ mlstjahr
1235
+ @lst2 = @st.multiply(ZAHL100)
1236
+ @stv = @lst2.subtract(@lst1)
1237
+ @lst3 = @lst3.subtract(@lst1)
1238
+ if @lst3.compare_to(@stv) == -1
1239
+ @stv = @lst3
1240
+ end
1241
+ if @stv.compare_to(BigDecimal.ZERO) == -1
1242
+ @stv = BigDecimal.ZERO
1243
+ else
1244
+ @stv = @stv.multiply(BigDecimal.value_of(@f)).divide(ZAHL100, 0, BigDecimal.ROUND_DOWN).multiply(ZAHL100)
1245
+ end
1246
+ @solzv = ((@stv.multiply(BigDecimal.value_of(5.5))).divide(ZAHL100)).set_scale(0, BigDecimal.ROUND_DOWN)
1247
+ if @r > 0
1248
+ @bkv = @stv
1249
+ else
1250
+ @bkv = BigDecimal.ZERO
1251
+ end
1252
+ else
1253
+ @stv = BigDecimal.ZERO
1254
+ @solzv = BigDecimal.ZERO
1255
+ @bkv = BigDecimal.ZERO
1256
+ end
1257
+ end
1258
+
1259
+ def mosonst
1260
+ @zre4j = (@jre4.divide(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
1261
+ @zvbezj = (@jvbez.divide(ZAHL100)).set_scale(2, BigDecimal.ROUND_DOWN)
1262
+ @jlfreib = @jfreib.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
1263
+ @jlhinzu = @jhinzu.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)
1264
+ mre4
1265
+ mre4abz
1266
+ @zre4vp = @zre4vp.subtract(@jre4ent.divide(ZAHL100))
1267
+ mztabfbn
1268
+ mlstjahr
1269
+ @lstoso = @st.multiply(ZAHL100)
1270
+ end
1271
+
1272
+ def mre4sonst
1273
+ mre4
1274
+ @fvb = @fvbso
1275
+ mre4abz
1276
+ @zre4vp = @zre4vp.subtract(@jre4ent.divide(ZAHL100)).subtract(@sonstent.divide(ZAHL100))
1277
+ @fvbz = @fvbzso
1278
+ mztabfbn
1279
+ end
1280
+
1281
+ def uptab14
1282
+ if @x.compare_to(BigDecimal.value_of(8355)) == -1
1283
+ @st = BigDecimal.ZERO
1284
+ else
1285
+ if @x.compare_to(BigDecimal.value_of(13470)) == -1
1286
+ @y = (@x.subtract(BigDecimal.value_of(8354))).divide(BigDecimal.value_of(10000), 6, BigDecimal.ROUND_DOWN)
1287
+ @rw = @y.multiply(BigDecimal.value_of(974.58))
1288
+ @rw = @rw.add(BigDecimal.value_of(1400))
1289
+ @st = (@rw.multiply(@y)).set_scale(0, BigDecimal.ROUND_DOWN)
1290
+ else
1291
+ if @x.compare_to(BigDecimal.value_of(52882)) == -1
1292
+ @y = (@x.subtract(BigDecimal.value_of(13469))).divide(BigDecimal.value_of(10000), 6, BigDecimal.ROUND_DOWN)
1293
+ @rw = @y.multiply(BigDecimal.value_of(228.74))
1294
+ @rw = @rw.add(BigDecimal.value_of(2397))
1295
+ @rw = @rw.multiply(@y)
1296
+ @st = (@rw.add(BigDecimal.value_of(971))).set_scale(0, BigDecimal.ROUND_DOWN)
1297
+ else
1298
+ if @x.compare_to(BigDecimal.value_of(250731)) == -1
1299
+ @st = ((@x.multiply(BigDecimal.value_of(0.42))).subtract(BigDecimal.value_of(8239))).set_scale(0, BigDecimal.ROUND_DOWN)
1300
+ else
1301
+ @st = ((@x.multiply(BigDecimal.value_of(0.45))).subtract(BigDecimal.value_of(15761))).set_scale(0, BigDecimal.ROUND_DOWN)
1302
+ end
1303
+ end
1304
+ end
1305
+ end
1306
+ @st = @st.multiply(BigDecimal.value_of(@kztab))
1307
+ end
1308
+
1309
+ def uptab15
1310
+ if @x.compare_to(BigDecimal.value_of(8473)) == -1
1311
+ @st = BigDecimal.ZERO
1312
+ else
1313
+ if @x.compare_to(BigDecimal.value_of(13470)) == -1
1314
+ @y = (@x.subtract(BigDecimal.value_of(8472))).divide(BigDecimal.value_of(10000), 6, BigDecimal.ROUND_DOWN)
1315
+ @rw = @y.multiply(BigDecimal.value_of(997.60))
1316
+ @rw = @rw.add(BigDecimal.value_of(1400))
1317
+ @st = (@rw.multiply(@y)).set_scale(0, BigDecimal.ROUND_DOWN)
1318
+ else
1319
+ if @x.compare_to(BigDecimal.value_of(52882)) == -1
1320
+ @y = (@x.subtract(BigDecimal.value_of(13469))).divide(BigDecimal.value_of(10000), 6, BigDecimal.ROUND_DOWN)
1321
+ @rw = @y.multiply(BigDecimal.value_of(228.74))
1322
+ @rw = @rw.add(BigDecimal.value_of(2397))
1323
+ @rw = @rw.multiply(@y)
1324
+ @st = (@rw.add(BigDecimal.value_of(948.68))).set_scale(0, BigDecimal.ROUND_DOWN)
1325
+ else
1326
+ if @x.compare_to(BigDecimal.value_of(250731)) == -1
1327
+ @st = ((@x.multiply(BigDecimal.value_of(0.42))).subtract(BigDecimal.value_of(8261.29))).set_scale(0, BigDecimal.ROUND_DOWN)
1328
+ else
1329
+ @st = ((@x.multiply(BigDecimal.value_of(0.45))).subtract(BigDecimal.value_of(15783.19))).set_scale(0, BigDecimal.ROUND_DOWN)
1330
+ end
1331
+ end
1332
+ end
1333
+ end
1334
+ @st = @st.multiply(BigDecimal.value_of(@kztab))
1335
+ end
1336
+
1337
+ end
1338
+ end
1339
+ end