All Downloads are FREE. Search and download functionalities are using the official Maven repository.

.bmf.taxapi.taxxmls.2022.0.0.source-code.Lohnsteuer2006Big.xml Maven / Gradle / Ivy

<PAP name="Lohnsteuer2006Big" version="1.0" versionNummer="1.0">
    <VARIABLES>

    <!--  EINGABEPARAMETER  -->
 <INPUTS>
        <!-- Auf die Vollendung des 64. Lebensjahres folgende 
             Kalenderjahr (erforderlich, wenn ALTER1=1) -->
        <INPUT name="AJAHR" type="int">
        </INPUT>
                
        <!-- 1, wenn das 64. Lebensjahr zu Beginn des Kalenderjahres vollendet wurde, in dem 
             der Lohnzahlungszeitraum endet (§ 24 a EStG), sonst = 0 -->
        <INPUT name="ALTER1" type="int">
        </INPUT>

        <!-- In der Lohnsteuerkarte des Arbeitnehmers eingetragener Hinzurechnungsbetrag
             fuer den Lohnzahlungszeitraum in Cents -->
        <INPUT name="HINZUR" type="BigDecimal">
        </INPUT>

        <!-- Jahresfreibetrag nach Ma&szlig;gabe der Eintragungen auf der
             Lohnsteuerkarte in Cents (ggf. 0) -->
        <INPUT name="JFREIB" type="BigDecimal">
        </INPUT>

        <!-- Jahreshinzurechnungsbetrag in Cents (ggf. 0) -->
        <INPUT name="JHINZU" type="BigDecimal">
        </INPUT>

        <!-- Voraussichtlicher Jahresarbeitslohn ohne sonstige Bezuege und
             ohne Verguetung fuer mehrjaehrige Taetigkeit in Cents (ggf. 0)
             Anmerkung: Die Eingabe dieses Feldes ist erforderlich bei Eingabe
             „sonstiger Bezuege“ (Feld SONSTB) oder bei Eingabe der „Verguetung
             fuer mehrjaehrige Taetigkeit“ (Feld VMT). -->
        <INPUT name="JRE4" type="BigDecimal">
        </INPUT>

        <!-- In JRE4 enthaltene Versorgungsbezuege in Cents (ggf. 0) -->
        <INPUT name="JVBEZ" type="BigDecimal">
        </INPUT>

        <!-- 1 = der Arbeitnehmer ist im Lohnzahlungszeitraum in der gesetzlichen
             Rentenversicherung versicherungsfrei und gehoert zu den in
             § 10 c Abs. 3 EStG genannten Personen.
             Bei anderen Arbeitnehmern ist „0“ einzusetzen.
             Fuer die Zuordnung sind allein die dem Arbeitgeber ohnehin bekannten
             Tatsachen ma&szlig;gebend; zusaetzliche Ermittlungen braucht
             der Arbeitgeber nicht anzustellen. -->
        <INPUT name="KRV" type="int">
        </INPUT>

        <!-- Lohnzahlungszeitraum:
             1 = Jahr
             2 = Monat
             3 = Woche
             4 = Tag -->
        <INPUT name="LZZ" type="int">
        </INPUT>

        <!-- Religionsgemeinschaft des Arbeitnehmers lt. Lohnsteuerkarte (bei
             keiner Religionszugehoerigkeit = 0) -->
        <INPUT name="R" type="int">
        </INPUT>

        <!-- Steuerpflichtiger Arbeitslohn vor Beruecksichtigung der Freibetraege
             fuer Versorgungsbezuege, des Altersentlastungsbetrags und des auf
             der Lohnsteuerkarte fuer den Lohnzahlungszeitraum eingetragenen
             Freibetrags in Cents. -->
        <INPUT name="RE4" type="BigDecimal">
        </INPUT>

        <!-- Sonstige Bezuege (ohne Verguetung aus mehrjaehriger Taetigkeit) einschliesslich 
             Sterbegeld bei Versorgungsbezuegen sowie Kapitalauszahlungen/Abfindungen, 
             soweit es sich nicht um Bezuege fuer mehrere Jahre handelt in Cents (ggf. 0) -->
        <INPUT name="SONSTB" type="BigDecimal">
        </INPUT>

        <!-- Sterbegeld bei Versorgungsbezuegen sowie Kapitalauszahlungen/Abfindungen, 
             soweit es sich nicht um Bezuege fuer mehrere Jahre handelt 
             (in SONSTB enthalten) in Cents -->
        <INPUT name="STERBE" type="BigDecimal" regex_test="" regex_transform="">
        </INPUT>

        <!-- Steuerklasse:
             1 = I
             2 = II
             3 = III
             4 = IV
             5 = V
             6 = VI -->
        <INPUT name="STKL" type="int">
        </INPUT>

        <!-- In RE4 enthaltene Versorgungsbezuege in Cents (ggf. 0) -->
        <INPUT name="VBEZ" type="BigDecimal">
        </INPUT>

        <!-- Vorsorgungsbezug im Januar 2005 bzw. fuer den ersten vollen Monat
             in Cents-->
        <INPUT name="VBEZM" type="BigDecimal">
        </INPUT>

        <!-- Voraussichtliche Sonderzahlungen im Kalenderjahr des Versorgungsbeginns 
             bei Versorgungsempfaengern ohne Sterbegeld, Kapitalauszahlungen/Abfindungen 
             bei Versorgungsbezuegen in Cents-->
        <INPUT name="VBEZS" type="BigDecimal">
        </INPUT>

        <!-- In SONSTB enthaltene Versorgungsbezuege einschliesslich Sterbegeld 
            in Cents (ggf. 0) -->
        <INPUT name="VBS" type="BigDecimal">
        </INPUT>

        <!-- Jahr, in dem der Versorgungsbezug erstmalig gewaehrt wurde; werden 
             mehrere Versorgungsbezuege gezahlt, so gilt der aelteste erstmalige Bezug -->
        <INPUT name="VJAHR" type="int" regex_test="" regex_transform="">
        </INPUT>

        <!-- Kapitalauszahlungen/Abfindungen bei Versorgungsbezuegen fuer mehrere Jahre in Cents (ggf. 0) -->
        <INPUT name="VKAPA" type="BigDecimal" regex_test="" regex_transform="">
        </INPUT>

        <!-- Verguetung fuer mehrjaehrige Taetigkeit ohne Kapitalauszahlungen/Abfindungen bei 
             Versorgungsbezuegen in Cents (ggf. 0) -->
        <INPUT name="VMT" type="BigDecimal" regex_test="" regex_transform="">
        </INPUT>

        <!-- In der Lohnsteuerkarte des Arbeitnehmers eingetragener Freibetrag
             fuer den Lohnzahlungszeitraum in Cents -->
        <INPUT name="WFUNDF" type="BigDecimal" regex_test="" regex_transform="">
        </INPUT>

        <!-- Zahl der Freibetraege fuer Kinder (eine Dezimalstelle, nur bei Steuerklassen
             I, II, III und IV) -->
        <INPUT name="ZKF" type="BigDecimal" regex_test="" regex_transform="">
        </INPUT>

        <!-- Zahl der Monate, fuer die Versorgungsbezuege gezahlt werden (nur
             erforderlich bei Jahresberechnung (LZZ = 1) -->
        <INPUT name="ZMVB" type="int" regex_test="" regex_transform="">
        </INPUT>

    	</INPUTS>

    	<!--  AUSGABEPARAMETER  -->
		<OUTPUTS type="STANDARD">

        <!-- Bemessungsgrundlage fuer die Kirchenlohnsteuer in Cents -->
        <OUTPUT name="BK" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Bemessungsgrundlage der sonstigen Einkuenfte (ohne Verguetung
             fuer mehrjaehrige Taetigkeit) fuer die Kirchenlohnsteuer in Cents -->
        <OUTPUT name="BKS" type="BigDecimal" default="new BigDecimal(0)" />

        <OUTPUT name="BKV" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Fuer den Lohnzahlungszeitraum einzubehaltende Lohnsteuer in Cents -->
        <OUTPUT name="LSTLZZ" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Fuer den Lohnzahlungszeitraum einzubehaltender Solidaritaetszuschlag
             in Cents -->
        <OUTPUT name="SOLZLZZ" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Solidaritaetszuschlag fuer sonstige Bezuege (ohne Verguetung fuer mehrjaehrige
             Taetigkeit) in Cents -->
        <OUTPUT name="SOLZS" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Solidaritaetszuschlag fuer die Verguetung fuer mehrjaehrige Taetigkeit in
             Cents -->
        <OUTPUT name="SOLZV" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Lohnsteuer fuer sonstige Einkuenfte (ohne Verguetung fuer mehrjaehrige
             Taetigkeit) in Cents -->
        <OUTPUT name="STS" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Lohnsteuer fuer Verguetung fuer mehrjaehrige Taetigkeit in Cents -->
        <OUTPUT name="STV" type="BigDecimal" default="new BigDecimal(0)" />


   		</OUTPUTS>

	    <!--  INTERNE FELDER  -->
		<INTERNALS>

        <!-- Altersentlastungsbetrag nach Alterseinkuenftegesetz in Cents -->
        <INTERNAL name="ALTE" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Arbeitnehmer-Pauschbetrag in EURO -->
        <INTERNAL name="ANP" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Auf den Lohnzahlungszeitraum entfallender Anteil von Jahreswerten
             auf ganze Cents abgerundet -->
        <INTERNAL name="ANTEIL1" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Auf den Lohnzahlungszeitraum entfallender Anteil von Jahreswerten
             auf ganze Cents aufgerundet -->
        <INTERNAL name="ANTEIL2" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Bemessungsgrundlage fuer Altersentlastungsbetrag in Cents -->
        <INTERNAL name="BMG" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Differenz zwischen ST1 und ST2 in EURO -->
        <INTERNAL name="DIFF" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Entlastungsbetrag fuer Alleinerziehende in EURO -->
        <INTERNAL name="EFA" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Versorgungsfreibetrag in Cents -->
        <INTERNAL name="FVB" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Zuschlag zum Versorgungsfreibetrag in EURO -->
        <INTERNAL name="FVBZ" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Massgeblich maximaler Versorgungsfreibetrag in Cents -->
        <INTERNAL name="HFVB" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Nummer der Tabellenwerte fuer Versorgungsparameter -->
        <INTERNAL name="J" type="int" default="0" />

        <!-- Jahressteuer nach § 51a EStG, aus der Solidaritaetszuschlag und
             Bemessungsgrundlage fuer die Kirchenlohnsteuer ermittelt werden in EURO -->
        <INTERNAL name="JBMG" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Jahreswert, dessen Anteil fuer einen Lohnzahlungszeitraum in
             UPANTEIL errechnet werden soll in Cents -->
        <INTERNAL name="JW" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Nummer der Tabellenwerte fuer Parameter bei Altersentlastungsbetrag -->
        <INTERNAL name="K" type="int" default="0" />

        <!-- Kennzeichen bei Verguetung fuer mehrjaehrige Taetigkeit
             0 = beim Vorwegabzug ist ZRE4VP zu beruecksichtigen
             1 = beim Vorwegabzug ist ZRE4VP1 zu beruecksichtigen -->
        <INTERNAL name="KENNZ" type="int" default="0" />

        <!-- Summe der Freibetraege fuer Kinder in EURO -->
        <INTERNAL name="KFB" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Kennzahl fuer die Einkommensteuer-Tabellenart:
             1 = Grundtabelle
             2 = Splittingtabelle -->
        <INTERNAL name="KZTAB" type="int" default="0" />

        <!-- Jahreslohnsteuer in EURO -->
        <INTERNAL name="LSTJAHR" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Zwischenfelder der Jahreslohnsteuer in Cents -->
        <INTERNAL name="LST1" type="BigDecimal" default="new BigDecimal(0)" />
        <INTERNAL name="LST2" type="BigDecimal" default="new BigDecimal(0)" />
        <INTERNAL name="LST3" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Mindeststeuer fuer die Steuerklassen V und VI in EURO -->
        <INTERNAL name="MIST" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Arbeitslohn des Lohnzahlungszeitraums nach Abzug der Freibetraege
             fuer Versorgungsbezuege, des Altersentlastungsbetrags und des
             in der Lohnsteuerkarte eingetragenen Freibetrags und Hinzurechnung
             eines Hinzurechnungsbetrags in Cents. Entspricht dem Arbeitslohn,
             fuer den die Lohnsteuer im personellen Verfahren aus der
             zum Lohnzahlungszeitraum gehoerenden Tabelle abgelesen wuerde -->
        <INTERNAL name="RE4LZZ" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Arbeitslohn des Lohnzahlungszeitraums nach Abzug der Freibetraege
             fuer Versorgungsbezuege und des Altersentlastungsbetrags in
             Cents zur Berechnung der Vorsorgepauschale -->
        <INTERNAL name="RE4LZZV" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Rechenwert in Gleitkommadarstellung -->
        <INTERNAL name="RW" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Sonderausgaben-Pauschbetrag in EURO -->
        <INTERNAL name="SAP" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Freigrenze fuer den Solidaritaetszuschlag in EURO -->
        <INTERNAL name="SOLZFREI" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Solidaritaetszuschlag auf die Jahreslohnsteuer in EURO, C (2 Dezimalstellen) -->
        <INTERNAL name="SOLZJ" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Zwischenwert fuer den Solidaritaetszuschlag auf die Jahreslohnsteuer
             in EURO, C (2 Dezimalstellen) -->
        <INTERNAL name="SOLZMIN" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Tarifliche Einkommensteuer in EURO -->
        <INTERNAL name="ST" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Tarifliche Einkommensteuer auf das 1,25-fache ZX in EURO -->
        <INTERNAL name="ST1" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Tarifliche Einkommensteuer auf das 0,75-fache ZX in EURO -->
        <INTERNAL name="ST2" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Bemessungsgrundlage fuer den Versorgungsfreibetrag in Cents -->
        <INTERNAL name="VBEZB" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Hoechstbetrag der Vorsorgepauschale nach Alterseinkuenftegesetz in EURO, C -->
        <INTERNAL name="VHB" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Vorsorgepauschale in EURO, C (2 Dezimalstellen) -->
        <INTERNAL name="VSP" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Vorsorgepauschale nach Alterseinkuenftegesetz in EURO, C -->
        <INTERNAL name="VSPN" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Zwischenwert 1 bei der Berechnung der Vorsorgepauschale nach
             dem Alterseinkuenftegesetz in EURO, C (2 Dezimalstellen) -->
        <INTERNAL name="VSP1" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Zwischenwert 2 bei der Berechnung der Vorsorgepauschale nach
             dem Alterseinkuenftegesetz in EURO, C (2 Dezimalstellen) -->
        <INTERNAL name="VSP2" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 3 EStG in EURO -->
        <INTERNAL name="VSPKURZ" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 2 Nr. 2 EStG in EURO -->
        <INTERNAL name="VSPMAX1" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 2 Nr. 3 EStG in EURO -->
        <INTERNAL name="VSPMAX2" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Vorsorgepauschale nach § 10c Abs. 2 Satz 2 EStG vor der Hoechstbetragsberechnung
             in EURO, C (2 Dezimalstellen) -->
        <INTERNAL name="VSPO" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Fuer den Abzug nach § 10c Abs. 2 Nrn. 2 und 3 EStG verbleibender
             Rest von VSPO in EURO, C (2 Dezimalstellen) -->
        <INTERNAL name="VSPREST" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Hoechstbetrag der Vorsorgepauschale nach § 10c Abs. 2 Nr. 1 EStG
             in EURO, C (2 Dezimalstellen) -->
        <INTERNAL name="VSPVOR" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Zu versteuerndes Einkommen gem. § 32a Abs. 1 und 2 EStG
             (2 Dezimalstellen) -->
        <INTERNAL name="X" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- gem. § 32a Abs. 1 EStG (6 Dezimalstellen) -->
        <INTERNAL name="Y" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Auf einen Jahreslohn hochgerechnetes RE4LZZ in EURO, C (2 Dezimalstellen) -->
        <INTERNAL name="ZRE4" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Auf einen Jahreslohn hochgerechnetes RE4LZZV zur Berechnung
             der Vorsorgepauschale in EURO, C (2 Dezimalstellen) -->
        <INTERNAL name="ZRE4VP" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Sicherungsfeld von ZRE4VP in EURO,C bei der Berechnung des Vorwegabzugs
             fuer die Verguetung fuer mehrjaehrige Taetigkeit -->
        <INTERNAL name="ZRE4VP1" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Feste Tabellenfreibetraege (ohne Vorsorgepauschale) in EURO -->
        <INTERNAL name="ZTABFB" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Auf einen Jahreslohn hochgerechnetes (VBEZ abzueglich FVB) in
             EURO, C (2 Dezimalstellen) -->
        <INTERNAL name="ZVBEZ" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Zu versteuerndes Einkommen in EURO -->
        <INTERNAL name="ZVE" type="BigDecimal" default="new BigDecimal(0)" />

        <!-- Zwischenfelder zu X fuer die Berechnung der Steuer nach § 39b
             Abs. 2 Satz 8 EStG in EURO.-->
        <INTERNAL name="ZX" type="BigDecimal" default="new BigDecimal(0)" />
        <INTERNAL name="ZZX" type="BigDecimal" default="new BigDecimal(0)" />
        <INTERNAL name="HOCH" type="BigDecimal" default="new BigDecimal(0)" />
        <INTERNAL name="VERGL" type="BigDecimal" default="new BigDecimal(0)" />
		</INTERNALS>
    </VARIABLES>

    <CONSTANTS>
        <!-- Tabelle fuer die Vomhundertsaetze des Versorgungsfreibetrags -->
        <CONSTANT name="TAB1" type="double[]" value="{0.0, 0.400, 0.384, 0.368, 0.352, 0.336, 0.320, 0.304, 0.288, 0.272, 0.256, 0.240, 0.224, 0.208, 0.192, 0.176, 0.160, 0.152, 0.144, 0.136, 0.128, 0.120, 0.112, 0.104, 0.096, 0.088, 0.080, 0.072, 0.064, 0.056, 0.048, 0.040, 0.032, 0.024, 0.016, 0.008, 0.000}" />

        <!-- Tabelle fuer die Hoechstbetrage des Versorgungsfreibetrags -->
        <CONSTANT name="TAB2" type="long[]" value="{0, 3000, 2880, 2760, 2640, 2520, 2400, 2280, 2160, 2040, 1920, 1800, 1680, 1560, 1440, 1320, 1200, 1140, 1080, 1020, 960, 900, 840, 780, 720, 660, 600, 540, 480, 420, 360, 300, 240, 180, 120, 60, 0}" />

        <!-- Tabelle fuer die Zuschlaege zum Versorgungsfreibetrag -->
        <CONSTANT name="TAB3" type="long[]" value="{0, 900, 864, 828, 792, 756, 720, 684, 648, 612, 576, 540, 504, 468, 432, 396, 360, 342, 324, 306, 288, 270, 252, 234, 216, 198, 180, 162, 144, 126, 108, 90, 72, 54, 36, 18, 0}" />

        <!-- Tabelle fuer die Vomhundertsaetze des Altersentlastungsbetrags -->
        <CONSTANT name="TAB4" type="double[]" value="{0.0, 0.400, 0.384, 0.368, 0.352, 0.336, 0.320, 0.304, 0.288, 0.272, 0.256, 0.240, 0.224, 0.208, 0.192, 0.176, 0.160, 0.152, 0.144, 0.136, 0.128, 0.120, 0.112, 0.104, 0.096, 0.088, 0.080, 0.072, 0.064, 0.056, 0.048, 0.040, 0.032, 0.024, 0.016, 0.008, 0.000}" />

        <!-- Tabelle fuer die Hoechstbetraege des Altersentlastungsbetrags -->
        <CONSTANT name="TAB5" type="long[]" value="{0, 1900, 1824, 1748, 1672, 1596, 1520, 1444, 1368, 1292, 1216, 1140, 1064, 988, 912, 836, 760, 722, 684, 646, 608, 570, 532, 494, 456, 418, 380, 342, 304, 266, 228, 190, 152, 114, 76, 38, 0}" />

        <!-- Zahlenkonstanten fuer im Plan oft genutzte BigDecimal Werte -->
        <CONSTANT name="ZAHL0" type="BigDecimal" value="new BigDecimal(0)" />
        <CONSTANT name="ZAHL1" type="BigDecimal" value="new BigDecimal(1)" />
        <CONSTANT name="ZAHL2" type="BigDecimal" value="new BigDecimal(2)" />
        <CONSTANT name="ZAHL3" type="BigDecimal" value="new BigDecimal(3)" />
        <CONSTANT name="ZAHL4" type="BigDecimal" value="new BigDecimal(4)" />
        <CONSTANT name="ZAHL5" type="BigDecimal" value="new BigDecimal(5)" />
        <CONSTANT name="ZAHL6" type="BigDecimal" value="new BigDecimal(6)" />
        <CONSTANT name="ZAHL7" type="BigDecimal" value="new BigDecimal(7)" />
        <CONSTANT name="ZAHL8" type="BigDecimal" value="new BigDecimal(8)" />
        <CONSTANT name="ZAHL9" type="BigDecimal" value="new BigDecimal(9)" />
        <CONSTANT name="ZAHL10" type="BigDecimal" value="new BigDecimal(10)" />
        <CONSTANT name="ZAHL11" type="BigDecimal" value="new BigDecimal(11)" />
        <CONSTANT name="ZAHL12" type="BigDecimal" value="new BigDecimal(12)" />

        <CONSTANT name="ZAHL100" type="BigDecimal" value="new BigDecimal(100)" />
        <CONSTANT name="ZAHL360" type="BigDecimal" value="new BigDecimal(360)" />

    </CONSTANTS>

    <METHODS>

    <!-- PROGRAMMABLAUFPLAN 2006 -->

    <MAIN>
        <EXECUTE method="MRE4LZZ" />
        <EVAL exec="KENNZ = 0" />
        <EVAL exec="RE4LZZ = RE4.subtract(FVB).subtract(ALTE).subtract(WFUNDF).add(HINZUR)" />
        <EVAL exec="RE4LZZV = RE4.subtract(FVB).subtract(ALTE)" />
        <EXECUTE method="MRE4" />
        <EXECUTE method="MZTABFB" />
        <EXECUTE method="MLSTJAHR" />
        <EVAL exec="LSTJAHR = ST" />
        <EVAL exec="JW = LSTJAHR.multiply(ZAHL100)" />
        <EXECUTE method="UPANTEIL" />
        <EVAL exec="LSTLZZ = ANTEIL1" />

        <IF expr="ZKF.compareTo(ZAHL0) == 1">
        <THEN>
            <EVAL exec="ZTABFB = ZTABFB.add(KFB)" />
            <EXECUTE method="MLSTJAHR" />
            <EVAL exec="JBMG = ST" />
        </THEN>
        <ELSE>
            <EVAL exec="JBMG = LSTJAHR" />
        </ELSE>
        </IF>

        <EXECUTE method="MSOLZ" />
        <EXECUTE method="MSONST" />
        <EXECUTE method="MVMT" />
    </MAIN>




    <!-- Freibetraege fuer Versorgungsbezuege, Altersentlastungsbetrag (§39b Abs. 2 Satz 2 EStG) 
         PAP Seite 10 -->

    <METHOD name="MRE4LZZ">
        <IF expr="VBEZ.compareTo(ZAHL0) == 0" >			
        <THEN>
            <EVAL exec="FVBZ = ZAHL0" />
            <EVAL exec="FVB = ZAHL0" />
        </THEN>
        <ELSE>
            <IF expr="VJAHR &lt; 2006">
            <THEN>
                <EVAL exec="J = 1" />
            </THEN>
            <ELSE>
                <IF expr="VJAHR &lt; 2040">
                <THEN>
                    <EVAL exec="J = VJAHR - 2004" />
                </THEN>
                <ELSE>
                    <EVAL exec="J = 36" />
                </ELSE>
                </IF>
            </ELSE>
            </IF>

            <IF expr="LZZ == 1" >
            <THEN>
                <IF expr="((STERBE.add(VKAPA)).compareTo(ZAHL0)) == 1">
                <THEN>
                    <EVAL exec="VBEZB = (VBEZM.multiply(BigDecimal.valueOf(ZMVB))).add(VBEZS)" />	
                    <EVAL exec="HFVB = BigDecimal.valueOf(TAB2[J] * 100)" />
                    <EVAL exec="FVBZ = BigDecimal.valueOf(TAB3[J])" />
                </THEN>
                <ELSE>
                     <EVAL exec="VBEZB = (VBEZM.multiply(BigDecimal.valueOf(ZMVB))).add(VBEZS)" />	
                     <EVAL exec="HFVB = BigDecimal.valueOf(TAB2[J] / 12 * ZMVB * 100)" />
                     <EVAL exec="FVBZ = (BigDecimal.valueOf(TAB3[J] / 12 * ZMVB)).setScale(0, BigDecimal.ROUND_UP)" />
                </ELSE>
                </IF>
            </THEN>
            <ELSE>
                <EVAL exec="VBEZB = ((VBEZM.multiply(ZAHL12)).add(VBEZS)).setScale(2, BigDecimal.ROUND_DOWN)" />
                <EVAL exec="HFVB = BigDecimal.valueOf(TAB2[J] * 100)" />
                <EVAL exec="FVBZ = BigDecimal.valueOf(TAB3[J])" />
            </ELSE>
            </IF>

            <EVAL exec="FVB = (VBEZB.multiply(BigDecimal.valueOf(TAB1[J]))).setScale(0, BigDecimal.ROUND_UP)" />

            <IF expr="FVB.compareTo(HFVB) == 1" >
            <THEN>
                <EVAL exec="FVB = HFVB" />
            </THEN>
            <ELSE>
            </ELSE>
            </IF>

            <EVAL exec="JW = FVB" />
            <EXECUTE method="UPANTEIL" />
            <EVAL exec="FVB = ANTEIL2" />
        </ELSE>
        </IF>

        <IF expr="ALTER1 == 0">
        <THEN>
            <EVAL exec="ALTE = ZAHL0" />
        </THEN>
        <ELSE>
            <IF expr="AJAHR &lt; 2006">
            <THEN>
                <EVAL exec="K = 1" />
            </THEN>
            <ELSE>
                <IF expr="AJAHR &lt; 2040">
                <THEN>
                    <EVAL exec="K = AJAHR - 2004" />
                </THEN>
                <ELSE>
                    <EVAL exec="K = 36" />
                </ELSE>
                </IF>
            </ELSE>
            </IF>

            <EVAL exec="BMG = RE4.subtract(VBEZ)" />
            <EVAL exec="ALTE = (BMG.multiply(BigDecimal.valueOf(TAB4[K]))).setScale(0, BigDecimal.ROUND_UP)" />
            <EVAL exec="JW = BigDecimal.valueOf(TAB5[K] * 100)" />
            <EXECUTE method="UPANTEIL" />

            <IF expr="ALTE.compareTo(ANTEIL2) == 1">
            <THEN>
                <EVAL exec="ALTE = ANTEIL2" />
            </THEN>
            <ELSE>
            </ELSE>
            </IF>
        </ELSE>
        </IF>
    </METHOD>


    <!-- Massgeblicher Arbeitslohn fuer die Jahreslohnsteuer 
         PAP Seite 12 -->

    <METHOD name="MRE4">

        <IF expr="LZZ == 1">
        <THEN>
            <EVAL exec="ZRE4 = RE4LZZ.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)" />
            <EVAL exec="ZRE4VP = RE4LZZV.divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)" />
            <EVAL exec="ZVBEZ = (VBEZ.subtract(FVB)).divide(ZAHL100, 2, BigDecimal.ROUND_DOWN)" />
        </THEN>

        <ELSE>
            <IF expr="LZZ == 2">
            <THEN>
                <EVAL exec="ZRE4 = ((RE4LZZ.add(BigDecimal.valueOf(0.67))).multiply(BigDecimal.valueOf(0.12))).setScale(2, BigDecimal.ROUND_DOWN)" />
                <EVAL exec="ZRE4VP = ((RE4LZZV.add(BigDecimal.valueOf(0.67))).multiply(BigDecimal.valueOf(0.12))).setScale(2, BigDecimal.ROUND_DOWN)" />
                <EVAL exec="ZVBEZ = ((VBEZ.subtract(FVB).add(BigDecimal.valueOf(0.67))).multiply(BigDecimal.valueOf(0.12))).setScale(2, BigDecimal.ROUND_DOWN)" />
            </THEN>

            <ELSE>
                <IF expr="LZZ == 3">
                <THEN>
                    <EVAL exec="ZRE4 = ((RE4LZZ.add(BigDecimal.valueOf(0.89))).multiply(BigDecimal.valueOf(3.6/7.0))).setScale(2, BigDecimal.ROUND_DOWN)" />
                    <EVAL exec="ZRE4VP = ((RE4LZZV.add(BigDecimal.valueOf(0.89))).multiply(BigDecimal.valueOf(3.6/7.0))).setScale(2, BigDecimal.ROUND_DOWN)" />
                    <EVAL exec="ZVBEZ = ((VBEZ.subtract(FVB).add(BigDecimal.valueOf(0.89))).multiply(BigDecimal.valueOf(3.6/7.0))).setScale(2, BigDecimal.ROUND_DOWN)" />
                </THEN>
                <ELSE>
                    <EVAL exec="ZRE4 = ((RE4LZZ.add(BigDecimal.valueOf(0.56))).multiply(BigDecimal.valueOf(3.6))).setScale(2, BigDecimal.ROUND_DOWN)" />
                    <EVAL exec="ZRE4VP = ((RE4LZZV.add(BigDecimal.valueOf(0.56))).multiply(BigDecimal.valueOf(3.6))).setScale(2, BigDecimal.ROUND_DOWN)" />
                    <EVAL exec="ZVBEZ = ((VBEZ.subtract(FVB).add(BigDecimal.valueOf(0.56))).multiply(BigDecimal.valueOf(3.6))).setScale(2, BigDecimal.ROUND_DOWN)" />
                </ELSE>
                </IF>
            </ELSE>
            </IF>
        </ELSE>
        </IF>

        <IF expr="ZRE4.compareTo(ZAHL0) == -1">
        <THEN>
            <EVAL exec="ZRE4 = ZAHL0" />
        </THEN>
        <ELSE>
        </ELSE>
        </IF>

        <IF expr="ZVBEZ.compareTo(ZAHL0) == -1">
        <THEN>
            <EVAL exec="ZVBEZ = ZAHL0" />
        </THEN>
        <ELSE>
        </ELSE>
        </IF>

    </METHOD>


    <!-- Ermittlung der festen Tabellenfreibetraege (ohne Vorsorgepauschale)
         PAP Seite 13 -->

    <METHOD name="MZTABFB">

        <EVAL exec="ANP = ZAHL0" />

        <IF expr="ZVBEZ.compareTo(ZAHL0) == 1">
        <THEN>
            <IF expr="ZVBEZ.compareTo(FVBZ) == -1">
            <THEN>
                <!-- Fehler im PAP? double -> int, Nachkommastellen abschneiden -->
                <EVAL exec="FVBZ = ZVBEZ.setScale(0, BigDecimal.ROUND_DOWN)" />
            </THEN>
            <ELSE>
            </ELSE>
            </IF>
        </THEN>
        <ELSE>
        </ELSE>
        </IF>

        <IF expr="STKL &lt; 6">
        <THEN>
            <IF expr="ZVBEZ.compareTo(ZAHL0) == 1">
            <THEN>
                <IF expr="(ZVBEZ.subtract(FVBZ)).compareTo(BigDecimal.valueOf(102)) == -1">
                <THEN>
                   <!-- Fehler im PAP? double -> int, Nachkommastellen abschneiden -->
                   <EVAL exec="ANP = (ZVBEZ.subtract(FVBZ)).setScale(0, BigDecimal.ROUND_DOWN)" />
                </THEN>
                <ELSE>
                    <EVAL exec="ANP = BigDecimal.valueOf(102)" />
                </ELSE>
                </IF>
            </THEN>
            <ELSE>
            </ELSE>
            </IF>
        </THEN>
        <ELSE>
        </ELSE>
        </IF>

        <IF expr="STKL &lt; 6">
        <THEN>
            <IF expr="ZRE4.compareTo(ZVBEZ) == 1">
            <THEN>
                <IF expr="(ZRE4.subtract(ZVBEZ)).compareTo(BigDecimal.valueOf(920)) == -1">
                <THEN>
                    <!-- Fehler im PAP? double -> int, Nachkommastellen abschneiden -->
                    <EVAL exec="ANP = (ANP.add(ZRE4).subtract(ZVBEZ)).setScale(0, BigDecimal.ROUND_DOWN)" />
                </THEN>
                <ELSE>
                    <EVAL exec="ANP = ANP.add(BigDecimal.valueOf(920))" />
                </ELSE>
                </IF>
            </THEN>
            <ELSE>
            </ELSE>
            </IF>
        </THEN>
        <ELSE>
        </ELSE>
        </IF>

        <EVAL exec="KZTAB = 1" />

        <IF expr="STKL == 1">
        <!-- ZKF ist double und KFB ist integer. Nachkommastellen abschneiden! 4x!!! -->
        <THEN>
            <EVAL exec="SAP = BigDecimal.valueOf(36)" />
            <EVAL exec="KFB = (ZKF.multiply(BigDecimal.valueOf(5808))).setScale(0, BigDecimal.ROUND_DOWN)" />
        </THEN>
        <ELSE>
            <IF expr="STKL == 2">
            <THEN>
                <EVAL exec="EFA = BigDecimal.valueOf(1308)" />
                <EVAL exec="SAP = BigDecimal.valueOf(36)" />
                <EVAL exec="KFB = (ZKF.multiply(BigDecimal.valueOf(5808))).setScale(0, BigDecimal.ROUND_DOWN)" />
            </THEN>
            <ELSE>
                <IF expr="STKL == 3">
                <THEN>
                    <EVAL exec="KZTAB = 2" />
                    <EVAL exec="SAP = BigDecimal.valueOf(72)" />
                    <EVAL exec="KFB = (ZKF.multiply(BigDecimal.valueOf(5808))).setScale(0, BigDecimal.ROUND_DOWN)" />
                </THEN>
                <ELSE>
                    <IF expr="STKL == 4">
                    <THEN>
                        <EVAL exec="SAP = BigDecimal.valueOf(36)" />
                        <EVAL exec="KFB = (ZKF.multiply(BigDecimal.valueOf(2904))).setScale(0, BigDecimal.ROUND_DOWN)" />
                    </THEN>
                    <ELSE>
                        <EVAL exec="KFB = ZAHL0" />
                    </ELSE>
                    </IF>
                </ELSE>
                </IF>
            </ELSE>
            </IF>
            </ELSE>
        </IF>
        <EVAL exec="ZTABFB = EFA.add(ANP).add(SAP).add(FVBZ)" />
    </METHOD>


    <!-- Ermittlung Jahreslohnsteuer
         PAP Seite 14 -->

    <METHOD name="MLSTJAHR">

        <IF expr="STKL &lt; 5">
        <THEN>
            <EXECUTE method="UPEVP" />
        </THEN>
        <ELSE>
            <EVAL exec="VSP = ZAHL0" />
        </ELSE>
        </IF>

        <!-- ZVE ist in EURO, ZRE4 in EURO,Cent -->
        <EVAL exec="ZVE = (ZRE4.subtract(ZTABFB).subtract(VSP)).setScale(0, BigDecimal.ROUND_DOWN)" />

        <IF expr="ZVE.compareTo(ZAHL1) == -1">
        <THEN>
            <EVAL exec="ZVE = ZAHL0" />
            <EVAL exec="X = ZAHL0" />
        </THEN>
        <ELSE>
            <EVAL exec="X = ZVE.divide(BigDecimal.valueOf(KZTAB), 0, BigDecimal.ROUND_DOWN)" />
        </ELSE>
        </IF>

        <IF expr="STKL &lt; 5">
        <THEN>
            <EXECUTE method="UPTAB05" />
        </THEN>
        <ELSE>
            <EXECUTE method="MST5_6" />
        </ELSE>
        </IF>

    </METHOD>


    <!-- Vorsorgepauschale (§39b Abs. 2 Satz 6 Nr 3 EStG) 
         PAP Seite 15 -->

    <METHOD name="UPEVP">

        <IF expr="KRV == 1">
        <THEN>
            <EVAL exec="VSP1 = ZAHL0" />
        </THEN>
        <ELSE>

            <IF expr="ZRE4VP.compareTo(BigDecimal.valueOf(63000)) == 1">
            <THEN>
                <EVAL exec="ZRE4VP = BigDecimal.valueOf(63000)" />
            </THEN>
            <ELSE>
            </ELSE>
            </IF>

        <EVAL exec="VSP1 = (ZRE4VP.multiply(BigDecimal.valueOf(0.24))).setScale(2, BigDecimal.ROUND_DOWN)" />
        <EVAL exec="VSP1 = (VSP1.multiply(BigDecimal.valueOf(0.0975))).setScale(2, BigDecimal.ROUND_DOWN)" />

        </ELSE>
        </IF>

        <EVAL exec="VSP2 = ZRE4VP.multiply(BigDecimal.valueOf(0.11))" />
        <EVAL exec="VHB = BigDecimal.valueOf(1500 * KZTAB)" />

        <IF expr="VSP2.compareTo(VHB) == 1">
        <THEN>
            <EVAL exec="VSP2 = VHB" />
        </THEN>
        <ELSE>
        </ELSE>
        </IF>
        <!-- Erst auf 2 nachkommastellen kuerzen, dann aufrunden, sonst 
             wird die Jahreslohnsteuer ggf. um 1 EUR zu hoch angesetzt.
             Hinweis: wieder aufgehoben, da bei VSP1 eine Rundung fehlte. -->
        <EVAL exec="VSPN = (VSP1.add(VSP2)).setScale(0, BigDecimal.ROUND_UP)" />
        <EXECUTE method="MVSP" />

        <IF expr="VSPN.compareTo(VSP) == 1">		
        <THEN>
            <EVAL exec="VSP = VSPN.setScale(2, BigDecimal.ROUND_DOWN)" />
        </THEN>
        <ELSE>
        </ELSE>
        </IF>

    </METHOD>


    <!-- Vorsorgepauschale (§39b Abs. 2 Satz 6 Nr 3 EStG) Vergleichsberechnung 
         fuer Guenstigerpruefung
         PAP Seite 16 -->

    <METHOD name="MVSP">

        <IF expr="KENNZ == 1">
        <THEN>
           <EVAL exec="VSPO = ZRE4VP1.multiply(BigDecimal.valueOf(0.2))" />
        </THEN>
        <ELSE>
           <EVAL exec="VSPO = ZRE4VP.multiply(BigDecimal.valueOf(0.2))" />
        </ELSE>
        </IF>

        <EVAL exec="VSPVOR = BigDecimal.valueOf(KZTAB * 3068)" />
        <EVAL exec="VSPMAX1 = BigDecimal.valueOf(KZTAB * 1334)" />
        <EVAL exec="VSPMAX2 = BigDecimal.valueOf(KZTAB * 667)" />
        <EVAL exec="VSPKURZ = BigDecimal.valueOf(KZTAB * 1134)" />

        <IF expr="KRV == 1">
        <THEN>
            <IF expr="VSPO.compareTo(VSPKURZ) == 1">
            <THEN>
                <EVAL exec="VSP = VSPKURZ" />
            </THEN>
            <ELSE>
                <EVAL exec="VSP = VSPO.setScale(2, BigDecimal.ROUND_UP)" />
            </ELSE>
            </IF>
        </THEN>
        <ELSE>
            <EXECUTE method="UMVSP" />
        </ELSE>
        </IF>

    </METHOD>


    <!-- Vorsorgepauschale
         PAP Seite 17 -->

    <METHOD name="UMVSP">

        <IF expr="KENNZ == 1">
        <THEN>
            <EVAL exec="VSPVOR = VSPVOR.subtract(ZRE4VP1.multiply(BigDecimal.valueOf(0.16)))" />
        </THEN>
        <ELSE>
            <EVAL exec="VSPVOR = VSPVOR.subtract(ZRE4VP.multiply(BigDecimal.valueOf(0.16)))" />
        </ELSE>
        </IF>

        <IF expr="VSPVOR.compareTo(ZAHL0) == -1">
        <THEN>
            <EVAL exec="VSPVOR = ZAHL0" />
        </THEN>
        <ELSE>
        </ELSE>
        </IF>

        <IF expr="VSPO.compareTo(VSPVOR) == 1">
        <THEN>
            <EVAL exec="VSP = VSPVOR" />
            <EVAL exec="VSPREST = VSPO.subtract(VSPVOR)" />

            <IF expr="VSPREST.compareTo(VSPMAX1) == 1">
            <THEN>
                <EVAL exec="VSP = VSP.add(VSPMAX1)" />
                <EVAL exec="VSPREST = (VSPREST.subtract(VSPMAX1)).divide(ZAHL2, 2, BigDecimal.ROUND_UP)" />

                <IF expr="VSPREST.compareTo(VSPMAX2) == 1">
                <THEN>
                    <EVAL exec="VSP = (VSP.add(VSPMAX2)).setScale(0, BigDecimal.ROUND_UP)" />
                </THEN>
                <ELSE>
                    <EVAL exec="VSP = (VSP.add(VSPREST)).setScale(0, BigDecimal.ROUND_UP)" />
                </ELSE>
                </IF>
            </THEN>
            <ELSE>
                <EVAL exec="VSP = (VSP.add(VSPREST)).setScale(0, BigDecimal.ROUND_UP)" />
            </ELSE>
            </IF>
        </THEN>
        <ELSE>
            <EVAL exec="VSP = VSPO.setScale(0, BigDecimal.ROUND_UP)" />
        </ELSE>
        </IF>

    </METHOD>


    <!-- Lohnsteuer fuer die Steuerklassen V und VI (§ 39b Abs. 2 Satz 8 EStG)
         PAP Seite 18 -->

    <METHOD name="MST5_6">

        <EVAL exec="ZZX = X" />

        <IF expr="ZZX.compareTo(BigDecimal.valueOf(25812)) == 1">
        <THEN>
            <EVAL exec="ZX = BigDecimal.valueOf(25812)" />
            <EXECUTE method="UP5_6" />
            <EVAL exec="ST = (ST.add((ZZX.subtract(BigDecimal.valueOf(25812))).multiply(BigDecimal.valueOf(0.42)))).setScale(0, BigDecimal.ROUND_DOWN)" />
        </THEN>
        <ELSE>
            <EVAL exec="ZX = ZZX" />
            <EXECUTE method="UP5_6" />

            <IF expr="ZZX.compareTo(BigDecimal.valueOf(9144)) == 1">
            <THEN>
                <EVAL exec="VERGL = ST" />
                <EVAL exec="ZX = BigDecimal.valueOf(9144)" />
                <EXECUTE method="UP5_6" />
                <EVAL exec="HOCH = (ST.add((ZZX.subtract(BigDecimal.valueOf(9144))).multiply(BigDecimal.valueOf(0.42)))).setScale(0, BigDecimal.ROUND_DOWN)" />

                <IF expr="HOCH.compareTo(VERGL) == -1">
                <THEN>
                    <EVAL exec="ST = HOCH" />
                </THEN>
                <ELSE>
                    <EVAL exec="ST = VERGL" />
                </ELSE>
                </IF>
            </THEN>
            <ELSE>
            </ELSE>
            </IF>
        </ELSE>
        </IF>

    </METHOD>


    <!-- Lohnsteuer fuer die Steuerklassen V und VI (§ 39b Abs. 2 Satz 8 EStG)
         PAP Seite 18 -->

    <METHOD name="UP5_6">

        <EVAL exec="X = ZX.multiply(BigDecimal.valueOf(1.25))" />
        <EXECUTE method="UPTAB05" />
        <EVAL exec="ST1 = ST" />
        <EVAL exec="X = ZX.multiply(BigDecimal.valueOf(0.75))" />
        <EXECUTE method="UPTAB05" />
        <EVAL exec="ST2 = ST" />
        <EVAL exec="DIFF = (ST1.subtract(ST2)).multiply(ZAHL2)" />
        <EVAL exec="MIST = (ZX.multiply(BigDecimal.valueOf(0.15))).setScale(0, BigDecimal.ROUND_DOWN)" />

        <IF expr="MIST.compareTo(DIFF) == 1">
        <THEN>
            <EVAL exec="ST = MIST" />
        </THEN>
        <ELSE>
            <EVAL exec="ST = DIFF" />
        </ELSE>
        </IF>

    </METHOD>


    <!-- Solidaritaetszuschlag
         PAP Seite 19 -->

    <METHOD name="MSOLZ">

        <EVAL exec="SOLZFREI = BigDecimal.valueOf(972 * KZTAB)" />

        <IF expr="JBMG.compareTo(SOLZFREI) == 1">
        <THEN>
            <EVAL exec="SOLZJ = (JBMG.multiply(BigDecimal.valueOf(5.5/100))).setScale(2, BigDecimal.ROUND_DOWN)" />
            <EVAL exec="SOLZMIN = (JBMG.subtract(SOLZFREI)).multiply(BigDecimal.valueOf(20.0/100.0))" />

            <IF expr="SOLZMIN.compareTo(SOLZJ) == -1">
            <THEN>
                <EVAL exec="SOLZJ = SOLZMIN" />
            </THEN>
            <ELSE>
            </ELSE>
            </IF>

            <EVAL exec="JW = SOLZJ.multiply(ZAHL100).setScale(0, BigDecimal.ROUND_DOWN)" />
            <EXECUTE method="UPANTEIL" />
            <EVAL exec="SOLZLZZ = ANTEIL1" />
        </THEN>
        <ELSE>
            <EVAL exec="SOLZLZZ = ZAHL0" />
        </ELSE>
        </IF>

        <IF expr="R &gt; 0">
        <THEN>
            <EVAL exec="JW = JBMG.multiply(ZAHL100)" />
            <EXECUTE method="UPANTEIL" />
            <EVAL exec="BK = ANTEIL1" />
        </THEN>
        <ELSE>
            <EVAL exec="BK = ZAHL0" />
        </ELSE>
        </IF>

    </METHOD>



    <!-- Anteil von Jahresbetraegen fuer einen LZZ (§ 39b Abs. 2 Satz 10 EStG)
         PAP Seite 20 -->

    <METHOD name="UPANTEIL">

        <IF expr="LZZ == 1">
        <THEN>
            <EVAL exec="ANTEIL1 = JW" />
            <EVAL exec="ANTEIL2 = JW" />
        </THEN>
        <ELSE>

            <IF expr="LZZ == 2">
            <THEN>
                <EVAL exec="ANTEIL1 = JW.divide(ZAHL12, 0, BigDecimal.ROUND_DOWN)" />
                <EVAL exec="ANTEIL2 = JW.divide(ZAHL12, 0, BigDecimal.ROUND_UP)" />
            </THEN>
            <ELSE>

                <IF expr="LZZ == 3">
                <THEN>
                    <EVAL exec="ANTEIL1 = (JW.multiply(ZAHL7)).divide(ZAHL360, 0, BigDecimal.ROUND_DOWN)" />
                    <EVAL exec="ANTEIL2 = (JW.multiply(ZAHL7)).divide(ZAHL360, 0, BigDecimal.ROUND_UP)" />
                </THEN>
                <ELSE>
                    <EVAL exec="ANTEIL1 = JW.divide(ZAHL360, 0, BigDecimal.ROUND_DOWN)" />
                    <EVAL exec="ANTEIL2 = JW.divide(ZAHL360, 0, BigDecimal.ROUND_UP)" />
                </ELSE>
                </IF>
            </ELSE>
            </IF>
        </ELSE>
        </IF>

    </METHOD>



    <!-- Berechnung sonstiger Bezuege nach § 39b Abs. 3 Saetze 1 bis 7 EStG)
         PAP Seite 21 -->

    <METHOD name="MSONST">

        <IF expr="SONSTB.compareTo(ZAHL0) == 1">
        <THEN>
            <EVAL exec="LZZ = 1" />
            <EVAL exec="VBEZ = JVBEZ" />
            <EVAL exec="RE4 = JRE4" />
            <EXECUTE method="MRE4LZZ" />
            <EXECUTE method="MRE4LZZ2" />
            <EXECUTE method="MLSTJAHR" />
            <EVAL exec="LST1 = ST.multiply(ZAHL100)" />
            <EVAL exec="VBEZ = JVBEZ.add(VBS)" />
            <EVAL exec="RE4 = JRE4.add(SONSTB)" />
            <EVAL exec="VBEZS = VBEZS.add(STERBE)" />
            <EXECUTE method="MRE4LZZ" />
            <EXECUTE method="MRE4LZZ2" />
            <EXECUTE method="MLSTJAHR" />
            <EVAL exec="LST2 = ST.multiply(ZAHL100)" />
            <EVAL exec="STS = LST2.subtract(LST1)" />
            <EVAL exec="SOLZS = STS.multiply(BigDecimal.valueOf(5.5)).divide(ZAHL100, 0, BigDecimal.ROUND_DOWN)" />

            <IF expr="R &gt; 0">
            <THEN>
                <EVAL exec="BKS = STS" />
            </THEN>
            <ELSE>
                <EVAL exec="BKS = ZAHL0" />
            </ELSE>
            </IF>
        </THEN>
        <ELSE>
            <EVAL exec="STS = ZAHL0" />
            <EVAL exec="SOLZS = ZAHL0" />
            <EVAL exec="BKS = ZAHL0" />
        </ELSE>
        </IF>

    </METHOD>



    <!-- Berechnung sonstiger Bezuege nach § 39b Abs. 3 Saetze 1 bis 7 EStG)
         PAP Seite 21 -->

    <METHOD name="MRE4LZZ2">

        <EVAL exec="RE4LZZ = RE4.subtract(FVB).subtract(ALTE).subtract(JFREIB).add(JHINZU)" />
        <EVAL exec="RE4LZZV = RE4.subtract(FVB).subtract(ALTE)" />
        <EXECUTE method="MRE4" />
        <EXECUTE method="MZTABFB" />

    </METHOD>



    <!-- Berechnung der Verguetung fuer mehrjaehrige Taetigkeit nach § 39b Abs. 3 Satz 9 EStG)
         PAP Seite 22 -->

    <METHOD name="MVMT">

        <IF expr="(VMT.add(VKAPA)).compareTo(ZAHL0) == 1">
        <THEN>
            <EVAL exec="LZZ = 1" />
            <EVAL exec="VBEZ = JVBEZ.add(VBS)" />
            <EVAL exec="RE4 = JRE4.add(SONSTB)" />
            <EXECUTE method="MRE4LZZ" />
            <EXECUTE method="MRE4LZZ2" />
            <EXECUTE method="MLSTJAHR" />
            <EVAL exec="LST1 = ST.multiply(ZAHL100)" />
            <EVAL exec="VMT = VMT.add(VKAPA)" />
            <EVAL exec="VBEZS = VBEZS.add(VKAPA)" />
            <EVAL exec="VBEZ = VBEZ.add(VKAPA)" />
            <EVAL exec="RE4 = JRE4.add(SONSTB).add(VMT)" />
            <EXECUTE method="MRE4LZZ" />
            <EXECUTE method="MRE4LZZ2" />
            <EVAL exec="KENNZ = 1" />
            <EVAL exec="ZRE4VP1 = ZRE4VP" />
            <EXECUTE method="MLSTJAHR" />
            <EVAL exec="LST3 = ST.multiply(ZAHL100)" />
            <EVAL exec="VBEZ = VBEZ.subtract(VKAPA)" />
            <EVAL exec="RE4 = JRE4.add(SONSTB)" />
            <EXECUTE method="MRE4LZZ" />

            <IF expr="(RE4.subtract(JFREIB).add(JHINZU)).compareTo(ZAHL0) == -1">
            <THEN>
                <EVAL exec="RE4 = RE4.subtract(JFREIB).add(JHINZU)" />
                <EVAL exec="JFREIB = ZAHL0" />
                <EVAL exec="JHINZU = ZAHL0" />
                <EVAL exec="RE4 = (RE4.add(VMT)).divide(ZAHL5, 0, BigDecimal.ROUND_DOWN)" />
                <EXECUTE method="MRE4LZZ2" />
                <EXECUTE method="MLSTJAHR" />
                <EVAL exec="LST2 = ST.multiply(ZAHL100)" />
                <EVAL exec="STV = LST2.multiply(ZAHL5)" />
            </THEN>
            <ELSE>
                <EVAL exec="RE4 = RE4.add(VMT.divide(ZAHL5, 0, BigDecimal.ROUND_DOWN))" />
                <EXECUTE method="MRE4LZZ2" />
                <EXECUTE method="MLSTJAHR" />
                <EVAL exec="LST2 = ST.multiply(ZAHL100)" />
                <EVAL exec="STV = (LST2.subtract(LST1)).multiply(ZAHL5)" />
            </ELSE>
            </IF>

            <EVAL exec="LST3 = LST3.subtract(LST1)" />

            <IF expr="LST3.compareTo(STV) == -1">
            <THEN>
                <EVAL exec="STV = LST3" />
            </THEN>
            <ELSE>
            </ELSE>
            </IF>

            <EVAL exec="SOLZV = (STV.multiply(BigDecimal.valueOf(5.5))).divide(ZAHL100, 0, BigDecimal.ROUND_DOWN)" />

            <IF expr="R &gt; 0">
            <THEN>
                <EVAL exec="BKV = STV" />
            </THEN>
            <ELSE>
                <EVAL exec="BKV = ZAHL0" />
            </ELSE>
            </IF>
        </THEN>
        <ELSE>
            <EVAL exec="STV = ZAHL0" />
            <EVAL exec="SOLZV = ZAHL0" />
            <EVAL exec="BKV = ZAHL0" />
        </ELSE>
        </IF>

    </METHOD>


    <!-- Berechnung der Verguetung fuer mehrjaehrige Taetigkeit nach § 39b Abs. 3 Satz 9 EStG)
         PAP Seite 23 -->

    <METHOD name="UPTAB05">

        <IF expr="X.compareTo(BigDecimal.valueOf(7665)) == -1">
        <THEN>
            <EVAL exec="ST = ZAHL0" /> 
        </THEN>
        <ELSE>

            <IF expr="X.compareTo(BigDecimal.valueOf(12740)) == -1">
            <THEN>
                <EVAL exec="Y = (X.subtract(BigDecimal.valueOf(7664))).divide(BigDecimal.valueOf(10000), 6, BigDecimal.ROUND_DOWN)" />
                <EVAL exec="RW = Y.multiply(BigDecimal.valueOf(883.74))" />
                <EVAL exec="RW = RW.add(BigDecimal.valueOf(1500))" />
                <EVAL exec="ST = (RW.multiply(Y)).setScale(0, BigDecimal.ROUND_DOWN)" />
            </THEN>
            <ELSE>

            <IF expr="X.compareTo(BigDecimal.valueOf(52152)) == -1">
            <THEN>
                <EVAL exec="Y = (X.subtract(BigDecimal.valueOf(12739))).divide(BigDecimal.valueOf(10000), 6, BigDecimal.ROUND_DOWN)" />
                <EVAL exec="RW = Y.multiply(BigDecimal.valueOf(228.74))" />
                <EVAL exec="RW = RW.add(BigDecimal.valueOf(2397))" />
                <EVAL exec="RW = RW.multiply(Y)" />
                <EVAL exec="ST = (RW.add(BigDecimal.valueOf(989))).setScale(0, BigDecimal.ROUND_DOWN)" />
            </THEN>
            <ELSE>
                <EVAL exec="ST = ((X.multiply(BigDecimal.valueOf(0.42))).subtract(BigDecimal.valueOf(7914))).setScale(0, BigDecimal.ROUND_DOWN)" />
            </ELSE>
            </IF>
            </ELSE>
        </IF>
        </ELSE>
        </IF>

        <EVAL exec="ST = ST.multiply(BigDecimal.valueOf(KZTAB))" />

    </METHOD>

    </METHODS>

</PAP>




© 2015 - 2024 Weber Informatics LLC | Privacy Policy