KV.cgi
Berechnungen und Bewertung von KV-Varianten
Stand Dezember 2022
(#) Einleitung
KV.cgi soll bei den jährlichen KV-Verhandlungen zum Caritas-KV eine Bewertung der Verhandlungsvarianten bzw. des Verhandlungsabschlusses ermöglichen.
Es werden die Ergebnisse der jeweiligen KV-Verwendungsgruppen und Gehaltsstufen bewertet.
Wenn die Verteilung der einzelnen Vollzeitäquivalente pro KV-Verwendungsgruppe und Stufe bekannt sind und eine entspechende Berechtigung besteht (Passwort),
werden sowohl Diözesanergebnisse, wie ein Gesamtergebnis angezeigt.
Ebenfalls erfolgt eine vereinfachte, jedoch einheitliche Berechnung der Nettoergebnisse für verschiedene beispielhafte Wochenstundenverpflichtungen
die dem aktuellen Verbraucherpreisindex (VPI) gegenübergestellt werden.
(#) Die Programmoberfläche
Mit dem aufklappbaren Button Bruttobeträge links wird festgelegt, ob die Bruttotabelle oder Nettobeträge für verschiedene
Wochenstundenverpflichtungen dargestellt werden sollen. Oben rechts können Berechnungsmodelle hochgeladen bzw. lokal gespeichert werden.
Darunter wird in einem Textfeld in einer einfachen Formelsprache (siehe weiter unten unter "Aufbau der Berechnungsformeln") das Berechnungsmodell
der jeweiligen KV-Variante eingegeben. Sechs solcher Varianten können über die darüberliegenden Würfel-Buttons gespeichert
(👍 + 🎲) und wieder abgerufen werden
(🎲). Alle Vorjahresergebnisse können mit dem Button Historisch abgerufen und mittels
▶| in das aktuelle Jahr übernommen werden.
Darunter wird zusammenfassend das Ergebnis der gesamte KV-Tafel als
- brutto ohne IVa/Va,
- brutto incl. IVa/Va,
- netto je h/Wo, sowie
- netto vs. VPI dargestellt.
Dies erfolgt für die ungewichtete KV-Tafel, wie auch - je nach Berechtigung - für einzelne Diözesen, sowie österreichweit.
![Programmoberfläche](/KVcgi1.png)
Es folgt
- die detailierte Gehaltstabelle des Vorjahres,
- die detailierte Gehaltstabelle des aktuellen Jahres,
- die Gehaltsveränderung in Euro und
- die Gehaltsveränderung in Prozenten.
Im Grafikteil werden die Vorrückungskurven der einzelnen Verwendungsgruppen dargestellt.
In seltenen Fällen kann es vorkommen, dass nach einer Vorrückung der Nettobetrag geringer ist als vorher.
Dies lässt sich in dieser Darstellung erkennen (die Kurve fällt kurzfristig - dies ergiebt sich durch die
1%, 2%, 3% Stufen der Arbeitslosenversicherung, die aufgrund des gesamten Bruttoverdiensts berechnet wird).
Auch eine historische Entwicklung der Gehaltserhöhungen seit 2001 wird für die einzelnen Verwendungsgruppen dargestellt (hier wird zum Vergleich die
Gehaltsstufe 5 verwendet). Die punktierte Linie stellt die Entwickung des jeweiligen Vorjahres-VPI dar.
Je nach Berechtigung (Passwort) folgt die Bewertung der Aufwände der einzelnen Diözesen nach deren VZÄ je Verwendungsgruppe und Gehaltsstufe.
![Grafikteil](/KVcgi2.png)
(#) Aufbau der Berechnungsformeln
!!! Tip BEACHTE
Zahlen-Komma ist '.' und jeder Berechnugsschritt wird mit ';' abgeschlossen !!!
| Berechnungselement | Ziel | Quelle | Beschreibung |
|:-----------------------:|:----:|:------:|:----------------------------------------------------------------------------|
| 9.99 | | x | Zahlenwert |
| + - `*` / % | | x | Rechenoperationen ('%' = Divisionsrest)
z.B. "[2022]+175" bzw. "5%3" ergibt 2 |
| +9% bzw. =+9%
*9% bzw. =9% | | x | entspricht *1.09 bzw. =1.09
entspricht *0.09 bzw. =0.09 |
| < > <= >= == != | | x | Wertevergleiche
z.B. "[2022]*8%<175" |
| and or not | | x | logische Verknüpfungen |
| Ziel=Quelle; | | | Zuweisung
z.B. "[2023]=[2022]+175;" |
| Ziel=Quelle if(Bedingung);| | | bedingte Zuweisung
z.B. "[2023]=[2022]+175 if([2022]*8%<175);" |
| [20nn..20mm]; | | | Berechnung des Gehaltsunterschieds z.B. zw. den Jahren "20nn" und "20mm" |
| [20nn] | x | x | betrifft z.B. alle Stufen aller Verwendungsgruppen des Jahres "20nn" |
| [20nn/XX9] | x | x | betrifft z.B. die Verwendungsgruppe "XX" Stufe "9" des Jahres "20nn" |
| [20nn/XX] | x | x | betrifft z.B. alle Stufen der Verwendungsgruppe "XX" des Jahres "20nn" |
| [20nn/9] | x | x | betrifft z.B. die Stufe "9" aller Verwendungsgruppen des Jahres "20nn" |
| [20nn/NAZ] | x | x | "Normalarbeitszeit" des Jahres "20nn" |
| [20nn/TAK1]
[20nn/TAK2] | x | x | "TAK1" bzw. "TAK2" des Jahres "20nn" |
| [20nn/VPI] | x | x | "Verbraucherpreisindex 20nn" |
\pagebreak
| Berechnungselement | Ziel | Quelle | Beschreibung |
|:-----------------------:|:----:|:------:|:----------------------------------------------------------------------------|
| [A] bis [Z] | x | x | Variablen für Zwischenwerte |
| [%] | x | x | Spezialvariable für den Wert der Erhöhung der Zuschläge bzw. TAK |
| [COL] | | x | Spezialvariable: Verwendungsgruppe
"I" bis "IX" als Zahlen 1-11 |
| [ROW] | | x | Spezialvariable: KV-Stufe 1-16 bzw. 1-18 |
| kfm(...)
kfm(... ,0.05)| | x | kaufmännische Rundung auf 10¢ bzw. auf z.B. 5¢ |
| abr(...)
abr(... ,0.01)| | x | abrunden auf die nächst niedrigeren 10¢
oder auf z.B. die nächst niedrigeren 1¢ |
|aufr(...)
aufr(... ,1.00)| | x | aufrunden auf die nächsten 10¢
oder auf z.B den nächsten vollen Euro |
| min(... , ...) | | x | Minimalwert (der Kleinste der Werte) |
| max(... , ...) | | x | Maximalwert (der Größte der Werte) |
| sv(... , ...) | | x | Sozialversicherungsbeitrag=sv(Brutto)bzw. =sv(Brutto,Jahr) |
| svq(... , ...) | | x | Sozialversicherungsquote=svq(Brutto)
bzw. =svq(Brutto,Jahr) |
| lst(... , ...) | | x | Lohnsteuer=lst(Brutto) bzw. =lst(Brutto,Jahr) |
| lstk(... , ...) | | x | max. Lohnsteuerklasse=lstk(Brutto)
bzw. =lstk(Brutto,Jahr) |
| netto(... , ...) | | x | Nettobetrag=netto(Brutto)
bzw. =netto(Brutto,Jahr) |
|brutto(... , ...) | | x | Bruttobetrag=brutto(Netto)
bzw. =brutto(Netto,Jahr) |
| [0000] bis [9999] | x | x | Rechentabellen der fiktiven Jahre [0000], [1111], [2222], usw. bis [9999] |
| xy(... , ... , 'Name') | | x | zusätzliche xy-Grafik
(z.B. "xy([0000],[9999],'erste Grafik');") |
\pagebreak
(#) Beispiele
~~~~~~
[2001..2018] # vergleiche die Gehaltstabellen 2001 bis 2018
~~~~~~
~~~~~~
[2019]=[2018]+3%; # die Werte der Tabelle von 2019 sind
# um 3% höher als die von 2018
~~~~~~
~~~~~~
[2019]=kfm([2018]+3%,0.10); # w.o. jedoch mit kaufmännische Rundung auf 10¢
~~~~~~
~~~~~~
[2019]=max([2018]+3%,[2018]+100); # Werte von 2018 um 3% erhöhen, jedoch um
# mindestens 100,-- (größeren Wert nehmen)
~~~~~~
~~~~~~
[2019]=[2018]+3% if([2018]*3% >= 100);
[2019]=[2018]+100 if([2018]*3% < 100); # w.o. --> "[2018]*3%" ist der Prozentbetrag!
~~~~~~
~~~~~~
[2019]=min([2018]+3%,[2018]+200); # Werte von 2018 um 3% erhöhen, jedoch um
# höchstens 200,-- (kleineren Wert nehmen)
~~~~~~
~~~~~~
[2019]=[2018]+max(100,min([2018]*3%,200)); # w.o. --> Anderung: 100,- < 3% < 200,-
~~~~~~
~~~~~~
[0000]=50*[ROW]+500*[COL]-500; # fiktive Tabelle [0000] mit Werten
# in 50er-Schritten füllen (mit 50 beginnen)
[1111]=lstk([0000],2023)*100; # fiktive Tabelle [1111] mit den
# max. Lohnsteuerklassen aus [0000] füllen.
# Referenzjahr dafür ist 2023.
[2222]= svq([0000],2023)*100; # [2222] wie oben mit den SV-Quoten füllen.
~~~~~~
~~~~~~
[0000]=100*[ROW]+1000*[COL]-1100; # fiktive Tabelle [0000] mit Werten
# in 100er-Schritten füllen (mit 0 beginnen)
[1111]=([0000]-netto([0000]))/[0000]*100 if([0000]);
# in fiktiver Tabelle [1111] die jeweilige
# Abgabenquote (Brutto-Netto)/Brutto errechnen.
# "if([0000]);" verhindert Division durch Null!
[2222]=(sv([0000])+lst([0000]))/[0000]*100 if([0000]);
# [2222] wie oben jedoch (SV+LSt)/Brutto.
[3333]=[1111]-[2222]; # zur Kontrolle: Differenz muss Null sein
~~~~~~
**historisch interessante Beispiele:**
~~~~~~
[2010]=[2009]+aufr([2009/5]*1.50%,0.05); # Fixbeträge die auf 0.05 aufgerundet einer
# Erhöhung der Stufe 5 um 1,5% entsprechen
~~~~~~
~~~~~~
[2018] =kfm([2017] +2.50%, 0.10);
[2018/IVa]=kfm([2017/IV]+2.50% +max(90-5*[ROW],10),0.10);
[2018/Va] =kfm([2017/Va]+2.50% +10, 0.10);
# 2,5% Gehaltserhöhung, plus 85,- in IVa/1
# (jede IVa-Stufe um 5,- fallend, jedoch
# mindestens 10,-), sowie plus 10,- in Va
~~~~~~
\pagebreak
(#) schrittweise Entwicklung der Gehaltstabelle 2001-2025
~~~~~~
[2001..2025]; [2001/NAZ]=39;
[2002] = aufr( [2001] +2.00%, 0.10); [2002/NAZ]=38;
[2003] = aufr( [2001] +3.50%, 0.10); [2003/NAZ]=37.5;
[2004] = kfm( [2003] +1.75%, 0.10); [2004/NAZ]=37.5;
[2005] = kfm( [2004] +3.50%, 0.10); [2005/NAZ]=38;
[2006] = kfm( [2005] +2.70%, 0.10);
[2007] = kfm( [2006] +2.35%, 0.10);
[2008] = kfm( [2007] +3.00%, 0.10);
[2009] = kfm( [2008] +3.60%, 0.10);
[2010] = [2009]+aufr( [2009/5] * 1.50%, 0.05);
[2010/Va] = kfm( [2010/V] +20, 0.10);
[2011] = kfm( [2010] +2.00%, 0.10);
[2011/Va] = kfm( [2010/Va] +2.00% +15, 0.10);
[2012] = kfm( [2011] +3.40%, 0.10);
[2012/Va] = kfm( [2011/Va] +3.40% +15, 0.10);
[2013] = kfm( [2012] +2.75%, 0.10);
[2013/Va] = kfm( [2012/Va] +3.10%, 0.10);
[2014] = kfm( [2013] +2.45%, 0.10);
[2014/Va] = kfm(([2013/Va]+15)+2.45%, 0.10);
[2015] = kfm( [2014] +2.08%, 0.10);
[2015/Va] = kfm(([2014/Va]+10)+2.08%, 0.10);
[2016] = kfm( [2015] +1.40%, 0.10);
[2017] = [2016]+ kfm( [2016/5] * 1.32%, 0.10);
[2018] = kfm( [2017] +2.50%, 0.10);
[2018/IVa]= kfm( [2017/IV] +2.50% +max(90-5*[row],10),0.10);
[2018/Va] = kfm( [2017/Va] +2.50% +10, 0.10);
[2019] = kfm( [2018] +2.50% +12, 0.10);
[2020] = kfm( [2019] +2.70%, 0.10);
[2021] = kfm( [2020] +2.08%, 0.10);
[2022] = [2021]; [%]=+2.70%; [2022/NAZ]=37;
[2023] = kfm( max( [2022] +8.00%, [2022] +175), 0.10); [2023/NAZ]=37;
[%]=+9.20%;
[2024] = kfm( [2023] +9.20%, 0.10); [2024/NAZ]=37;
[%]=+4.00%;
[2025] = kfm( [2024] +4.00%, 0.10); [2025/NAZ]=37;
[2025/TAK1]= kfm( [2025/IX1] * 87%, 0.10);
[2025/TAK2]= kfm( [2025/IX1] * 90%, 0.10);
~~~~~~
\pagebreak
(#) Technische Umsetzung
KV.cgi ist eine Webanwendung und in der Programmiersprache "perl" geschrieben.
Diese Dokumentation wurde mit Markdeep 1.14 erstellt.
Die Formeln im Berechnungsfeld werden für jede Verwendungsgruppe und jede Gehaltsstufe durchlaufen und ausgeführt (I/1, II/1 bis VIII/18 IX/18).
Tritt dabei ein Fehler auf (fehlerhafte Anweisung oder Laufzeitfehler durch z.B. Division durch Null) wird dieser mit möglichst genauer Angabe
der Position (Zeile) und des Grundes angezeigt, u.U. jedoch in Englisch.
Für spezielle Fälle gibt es die zehn fiktive Jahre [0000] bis [9999], für die und mit denen ebenfalls Berechnungen durchgefürt werden können.
Die Ergebnisse finden sich vor der Gehaltstabelle des Vorjahres.
Zusätzlich wird auch der Minimalwert, das arithmetische Mittel und der Maximalwert aller Tabellenwerte angezeigt.
Mit der zusätzlichen Funktion "xy([0000],[9999]);" wird eine Grafik angezeigt bei der die x-Werte z.B. aus [0000] und die y-Werte aus [9999] genommen werden.
Die Gehaltstabellen der Vorjahre werden nicht jedesmal neu berechnet, sondern werden der Datei "KV" entnommen.
Der jeweilige VPI (standardmäßig VPI-2000) stammt aus der Datei "PREISINDEX" und die Berechtigungen (Passwörter) und jeweiligen VZÄ stammen aus der Datei "CARITAS".