";
*/
include_once 'classes/TestProjektSmarty.class.php';
$smarty = new Smarty();
require_once ("config.inc.php");
$template = "standard";
$templatename = substr(basename($_SERVER['PHP_SELF']) , 0, -3) . "html";
require_once "language/german.inc.php";
require_once ("func_rollenrechte.php");
// Rechteüberprüfung
// $db = dbconnect();
if ($user_admin == "") {
require ("index.php");
exit;
} //Wenn man nicht angemeldet ist, darf man nicht auf die Seite
if (!rore($user_admin, 'j_uber', 'RE')) {
echo "Keine Rechte";
exit;
}
// Rechteüberprüfung ende
session_start();
if (isset($_GET['action'])) {
$action = $_GET['action'];
}
else {
$action = '';
}
if ($action == '') {
$smarty->assign('ju_jahrgang', $jahrgang);
$result_data1 = $db->query("SELECT date_format(monat,'%Y') jahr
,round(sum(vergaberahmen_vj),2) vergaberahmen_vj
,round(sum(jahresrahmen),2) jahresrahmen
,round(sum(besausgaben),2) besausgaben
,round(sum(vergaberahmen),2) vergaberahmen
,round(sum(verg_uebertragvj),2) verg_uebertragvj
,round(sum(leistungsbez),2) leistungsbez
,round(sum(vergaberahmen_nj),2) vergaberahmen_nj
FROM `prog_tmp_synopse`
WHERE date_format(monat,'%Y') = '$jahrgang'
GROUP BY date_format(monat,'%Y')
ORDER BY jahr");
$row_data1 = $result_data1->fetch_array();
$smarty->assign('ju_jahr', "$row_data1[jahr]");
$smarty->assign('ju_vergaberahmen_vj', number_format($row_data1['vergaberahmen_vj'], 2, ',', '.'));
$smarty->assign('ju_jahresrahmen', number_format($row_data1['jahresrahmen'], 2, ',', '.'));
$smarty->assign('ju_vergaberahmen', number_format($row_data1['vergaberahmen'], 2, ',', '.'));
$smarty->assign('ju_verg_uebertragvj', number_format($row_data1['verg_uebertragvj'], 2, ',', '.'));
$smarty->assign('ju_vergaberahmen_nj', number_format($row_data1['vergaberahmen_nj'], 2, ',', '.'));
$result_data2 = $db->query("SELECT jahr, wert
FROM `prog_tmp_besschnitt`
WHERE jahr = '$jahrgang'");
$row_data2 = $result_data2->fetch_array();
$smarty->assign('ju_bes_durchschnitt', number_format($row_data2['wert'], 2, ',', '.'));
// VZA auslesen
# AB Stufe 3 kann nicht sein, dass es keine erfassten VZÄ mehr gibt. Das System berechnet diese bis der letzte in Ruhestand geht
# $result_vzavorh = $db->query("SELECT count(*) Anz
# FROM prog_vza
# WHERE ab_datum like '$jahrgang%'
# ORDER BY ab_datum ASC");
# $row_vza_vorh = $result_vzavorh->fetch_array();
# if ($row_vza_vorh['Anz'] > 0) {
$result_data2 = $db->query("SELECT REPLACE(TRUNCATE(sum(prozent)/12,4),'.',',') wert
FROM prog_tmp_professor_synopse
WHERE monat like '$jahrgang%'
AND betrag != 0.00");
$row_data2 = $result_data2->fetch_array();
$smarty->assign('ju_vza_schnitt', $row_data2['wert']);
$query2 = "SELECT REPLACE(TRUNCATE(sum(prozent),2),'.',',') wert
FROM prog_tmp_professor_synopse
WHERE monat like '$jahrgang%'
AND betrag != 0.00
GROUP BY date_format(monat,'%m')
ORDER BY date_format(monat,'%m') ASC";
$result2 = $db->query($query2) or die("Cannot execute query2");
while ($row2 = $result2->fetch_array()) {
$value_vza[] = $row2;
}
$smarty->assign('table_data2', $value_vza);
$smarty->assign('ju_vza_this', 1);
# } else {
#
# // Dieses Jahr ist kein VZA Eintrag vorhanden
#
# $result_vzalast = $db->query("SELECT date_format(ab_datum, '%d.%m.%Y') ab_datum_form
# , replace(round(wert,2),'.',',') wert
# FROM prog_vza
# WHERE date_format(ab_datum,'%Y') <= '$jahrgang'
# ORDER BY ab_datum DESC
# LIMIT 1");
# $row_vza_last = $result_vzalast->fetch_array();
# $smarty->assign('ju_last_vza_dat', $row_vza_last['ab_datum_form']);
# $smarty->assign('ju_last_vza_wert', $row_vza_last['wert']);
# $smarty->assign('ju_vza_this', 2);
# }
$result_besa = $db->query("SELECT sum(betrag) wert
FROM prog_tmp_professor_synopse
WHERE monat like '$jahrgang%'
");
$row_besa = $result_besa->fetch_array();
$query3 = "SELECT distinct besoldung, stufe, bzid
FROM `prog_tmp_professor_synopse`
WHERE date_format(monat, '%Y') = '$jahrgang'
ORDER BY `prog_tmp_professor_synopse`.`besoldung` ASC";
$result3 = $db->query($query3) or die("Cannot execute query3");
$zaehler = 0;
while ($row3 = $result3->fetch_array()) {
$result_zudesc = $db->query("SELECT beschreibung
FROM prog_kat_besoldungszuweisung
WHERE bzid = '$row3[bzid]'
");
$row_zudesc = $result_zudesc->fetch_array();
if($row3['bzid'] == 1){
$zuweisung = '';
}else{
$zuweisung = $row_zudesc['beschreibung'];
}
$result_besadet = $db->query("SELECT sum(betrag) betragdetail, sum(prozent)/12 vza
FROM prog_tmp_professor_synopse
WHERE monat like '$jahrgang%'
and besoldung = '$row3[besoldung]'
and stufe = '$row3[stufe]'
and bzid = $row3[bzid]
");
$row_besadet = $result_besadet->fetch_array();
// Wenn einer Besoldung kein Wert zugewiesen wurde A13/Stufe 0 gibt es in der LBV-Liste nicht.
// Die Profs mit Stufe 0 sind mit 0 erfasst, da sie nicht für das System relevant sind und das Ergebnis verfälschen würden
if($row_besadet['betragdetail'] != 0){
if($row3['stufe'] == 0){
$stufedetail = "";
}else{
$stufedetail = $row3['stufe'];
}
// Hintergrundsfarbe
if($zaehler == 0){
$hgfarbe = "#ffffff";
$zaehler = 1;
}else{
$hgfarbe = "#d5d5d5";
$zaehler = 0;
}
$row3['vza'] = number_format($row_besadet['vza'], 4, ',', '.');
$row3['betragdetail'] = number_format($row_besadet['betragdetail'], 2, ',', '.');
$row3['stufedetail'] = $stufedetail;
$row3['hgfarbe'] = $hgfarbe;
$row3['zuweisung'] = $zuweisung;
$value_zuw[] = $row3;
}
}
$smarty->assign('table_data3', $value_zuw);
$result_besa_zul = $db->query("SELECT zulage
FROM prog_besausg_zulage
WHERE jahr = '$jahrgang'
");
$row_besa_zul = $result_besa_zul->fetch_array();
$smarty->assign('ju_besa_wert', number_format($row_besa['wert'], 2, ',', '.'));
$smarty->assign('ju_besa_zulage', number_format($row_besa_zul['zulage'], 2, ',', '.'));
$summe_besa = $row_besa_zul['zulage'] + $row_besa['wert'];
$smarty->assign('ju_besa_summe', number_format($summe_besa, 2, ',', '.'));
// Leistungsbezüge
$result_lb_bz = $db->query("SELECT round(sum(wert),2) wert
FROM prog_tmp_lb_bz
WHERE date_format(monat,'%Y')= '$jahrgang'
LIMIT 1");
$row_lb_bz = $result_lb_bz->fetch_array();
$smarty->assign('ju_lb_bz', number_format($row_lb_bz['wert'], 2, ',', '.'));
$result_lb_lz = $db->query("SELECT round(sum(wert),2) wert
FROM prog_tmp_lb_lz
WHERE date_format(monat,'%Y') = '$jahrgang'
LIMIT 1");
$row_lb_lz = $result_lb_lz->fetch_array();
$smarty->assign('ju_lb_lz', number_format($row_lb_lz['wert'], 2, ',', '.'));
$result_lb_einmal = $db->query("SELECT round(wert,2) wert
FROM prog_tmp_lb_einmal
WHERE jahr= '$jahrgang'
LIMIT 1");
$row_lb_einmal = $result_lb_einmal->fetch_array();
$smarty->assign('ju_lb_einmal', number_format($row_lb_einmal['wert'], 2, ',', '.'));
$result_lb_fz = $db->query("SELECT round(sum(wert),2) wert
FROM prog_tmp_lb_fz
WHERE date_format(monat,'%Y') = '$jahrgang'
LIMIT 1");
$row_lb_fz = $result_lb_fz->fetch_array();
$smarty->assign('ju_lb_fz', number_format($row_lb_fz['wert'], 2, ',', '.'));
$smarty->assign('ju_lb_summe', number_format($row_data1['leistungsbez'], 2, ',', '.'));
// Auflistung des maximalen Leistungsbezugswert
$result_maxzul = $db->query("SELECT round(sum(w2),2) w2
,round(sum(c3),2) c3
,round(sum(max_zulage),2) max_zulage
FROM prog_tmp_lb_obergrenze
WHERE date_format(ab_datum,'%Y') = '$jahrgang'
LIMIT 1");
$row_maxzul = $result_maxzul->fetch_array();
$smarty->assign('ju_maxzul_w2', number_format($row_maxzul['w2'], 2, ',', '.'));
$smarty->assign('ju_maxzul_c3', number_format($row_maxzul['c3'], 2, ',', '.'));
$smarty->assign('ju_maxzul_ges', number_format($row_maxzul['max_zulage'], 2, ',', '.'));
# Ab 2018 sollen die maximalen Leistungsbezüge auf ein Fixbetrag geändert werden. Bspw. 1000€/Monat
$query_maxl = $db->query("SELECT wert1*12 wert1
FROM `prog_parameter`
WHERE pid =7
");
$row_maxl = $query_maxl->fetch_array();
if($jahrgang >= '2018' ){
$smarty->assign('ju_maxzul_ges', number_format($row_maxl['wert1'], 2, ',', '.'));
$smarty->assign('ju_maxzul_geandert', 1);
}else{
$smarty->assign('ju_maxzul_geandert', 0);
}
// Auflistung BZ
$query7 = "SELECT distinct a.did
FROM prog_tmp_lb_bz a, prog_tmp_professor b
WHERE a.did=b.did
AND date_format(monat,'%Y') = '$jahrgang'
AND wert > 0
GROUP BY a.did, lbbzid
ORDER BY b.art, doz_name asc, lbbzid asc";
$result7 = $db->query($query7) or die("Cannot execute query7a");
$ln_zaehler = 0;
while ($row7 = $result7->fetch_array()) {
unset($inner1);
$value_bz = '';
if ($ln_zaehler == 0) {
$last_did = $row7['did'];
$ln_zaehler = 1;
}
if ($row7['did'] == $last_did) {
$farbe = "#d8d8d8";
}
else {
$farbe = "#f4f4f4";
$ln_zaehler = 0;
}
$last_did = $row7['did'];
$query8 = "SELECT a.did, doz_titel, doz_vorname, doz_name, lbbzid, monat, sum(wert) wert, a.art, b.art fikt_prof
FROM prog_tmp_lb_bz a, prog_tmp_professor b
WHERE a.did=b.did
AND date_format(monat,'%Y') = '$jahrgang'
AND a.did = $row7[did]
AND wert > 0
GROUP BY a.did, lbbzid, art
ORDER BY b.art, doz_name asc, lbbzid asc";
$result8 = $db->query($query8) or die("Cannot execute query8");
$ln2 = 0;
# inner
$fikt_not_edit='';
while ($row8 = $result8->fetch_array()) {
if ($row8['art'] == 'F') {
// Darf der Button zum Löschen eines fiktiven Werts angezeigt werden bzw. ist der Eintrag schon vorhanden.
// Es muss nämlich erst eine Neuberechnung durchgeführt werden, damit es nicht mehr als fiktiven Wert angezeigt wird
$result_fikdel = $db->query("SELECT count(*) Anz
FROM prog_lb_lz
WHERE wert = 0
AND startdat= '$row8[monat]'
AND did = $row8[did]
");
$row_fikdel = $result_fikdel->fetch_array();
if($row_fikdel['Anz'] == 0){
$art = "Fiktiver Wert";
#fiktive BZ bei fiktiven Profs dürfen nicht gelöscht werden können, da es sonst in prog_lb_bz geschrieben werden müsste.
#Da darf es aber nicht rein, da dort nur physikalische Profs drinstehen dürfen. Wenn das Datum für fiktiven Prof verschwindet,
#würde es in prog_lb_bz noch stehen. Daher dürfen fiktive Profs nur in die tmp-Tabellen geschrieben werden.
if($row8['fikt_prof'] == 'B'){
$bz_del = "";
$fikt_not_edit = 0;
}else{
$bz_del = "";
$fikt_not_edit = 1;
}
}else{
$art = "Fiktiver Wert";
$bz_del = "";
$fikt_not_edit = 0;
}
$edit = "$row8[did]";
}
if ($row8['art'] == 'B') {
$bz_del = "";
$art = 'Erfasster Wert';
$edit = "$row8[did]";
}
if ($row8['art'] == 'O') {
$art = 'max. LBZ erreicht';
$edit = "$row8[did]";
}
// if($row8['lbbzid'] < 1000){
// Mindestdatum und Ende Laufzeit ermitteln
$result_laufz = $db->query("SELECT date_format(min(monat), '%d.%m.%Y') min_monat_form, date_format(max(monat), '%m.%Y') max_monat_form, date_format(max(monat), '%Y-%m-%d') max_mon
FROM prog_tmp_lb_bz
WHERE lbbzid='$row8[lbbzid]'
AND did= '$row8[did]'
LIMIT 1");
$row_laufz = $result_laufz->fetch_array();
$startdat = "$row_laufz[min_monat_form]";
#$enddat = "$row_laufz[max_monat_form]";
# In Windows 32 bit Systemen kommt es zu einem date/strtotime Fehler ab dem Jahr 2038. Dann haben alle Monate 31 Tage
$letzter_tag_mon = date("t", strtotime("$row_laufz[max_mon]")); // gives 31,28,31,30
$enddat = "$letzter_tag_mon.$row_laufz[max_monat_form]";
// }else{
// $startdat = "$row8[monat_form]";
// $enddat = "";
// }
$wert_neu = number_format($row8['wert'], 2, ',', '.');
$inner1[$ln2]['edit'] = $edit;
$inner1[$ln2]['fikt_not_edit'] = $fikt_not_edit;
$inner1[$ln2]['farbe'] = $farbe;
$inner1[$ln2]['delta_art'] = $art;
$inner1[$ln2]['bz_del'] = $bz_del;
$inner1[$ln2]['wert'] = $wert_neu;
$inner1[$ln2]['startdat'] = $startdat;
$inner1[$ln2]['enddat'] = $enddat;
$inner1[$ln2]['doz_name'] = $row8['doz_name'];
$inner1[$ln2]['doz_vorname'] = $row8['doz_vorname'];
$value_bz = $inner1;
$ln2++;
}
$row7['inner'] = $value_bz;
$row7['farbe'] = $farbe;
$value_7[] = $row7;
}
//echo "
"; //print_r($value_7); //echo ""; $smarty->assign('outer_loop_bz', $value_7); // Auflistung der LBZ mtl. (Deltas) $query3 = "SELECT distinct a.did FROM prog_tmp_lb_lz a, prog_tmp_professor b WHERE a.did=b.did AND date_format(monat,'%Y') = '$jahrgang' AND (wert > 0 or a.art ='O') GROUP BY a.did, lblzid ORDER BY b.art, doz_name asc, lblzid asc"; $result3 = $db->query($query3) or die("Cannot execute query3a"); $ln_zaehler = 0; while ($row3 = $result3->fetch_array()) { unset($inner2); $value_delta = ''; if ($ln_zaehler == 0) { $last_did = $row3['did']; $ln_zaehler = 1; } if ($row3['did'] == $last_did) { $farbe = "#d8d8d8"; } else { $farbe = "#f4f4f4"; $ln_zaehler = 0; } $last_did = $row3['did']; $query4 = "SELECT a.did, doz_titel, doz_vorname, doz_name, lblzid, monat, sum(wert) wert, a.art, date_format(monat, '%Y-01-01') start_aussetz_fiktiv, date_format(monat, '%Y-12-31') ende_aussetz_fiktiv, b.art fikt_prof FROM prog_tmp_lb_lz a, prog_tmp_professor b WHERE a.did=b.did AND date_format(monat,'%Y') = '$jahrgang' AND a.did = $row3[did] AND (wert > 0 or a.art ='O') GROUP BY a.did, lblzid, art ORDER BY b.art, doz_name asc, lblzid asc"; $result4 = $db->query($query4) or die("Cannot execute query4"); $ln3 = 0; # inner while ($row4 = $result4->fetch_array()) { if ($row4['art'] == 'F') { // Darf der Button zum Löschen eines fiktiven Werts angezeigt werden bzw. ist der Eintrag schon vorhanden. // Es muss nämlich erst eine Neuberechnung durchgeführt werden, damit es nicht mehr als fiktiven Wert angezeigt wird $result_fikdel = $db->query("SELECT count(*) Anz FROM prog_lb_lz WHERE wert = 0 AND startdat= '$row4[monat]' AND did = $row4[did] "); $row_fikdel = $result_fikdel->fetch_array(); if($row_fikdel['Anz'] == 0){ $art = "Fiktiver Wert"; #fiktive BZ bei fiktiven Profs dürfen nicht gelöscht werden können, da es sonst in prog_lb_bz geschrieben werden müsste. #Da darf es aber nicht rein, da dort nur physikalische Profs drinstehen dürfen. Wenn das Datum für fiktiven Prof verschwindet, #würde es in prog_lb_bz noch stehen. Daher dürfen fiktive Profs nur in die tmp-Tabellen geschrieben werden. if($row4['fikt_prof'] == 'B'){ $lz_del = "
"; // print_r($value_3); // echo ""; $smarty->assign('outer_loop', $value_3); // Auflistung der Funktionsbezüge $query5 = "SELECT distinct a.kfid FROM prog_tmp_lb_fz a, prog_kat_funktionen b WHERE a.kfid=b.kfid AND date_format(monat,'%Y') = '$jahrgang' AND wert > 0 GROUP BY a.lbfzid, b.kfid, a.did ORDER BY bezeichnung asc, monat asc "; $result5 = $db->query($query5) or die("Cannot execute query4"); $ln_zaehler1 = 0; while ($row5 = $result5->fetch_array()) { unset($inner4); $value_funktion = ''; if ($ln_zaehler1 == 0) { $last_kfid = $row5['kfid']; $ln_zaehler1 = 1; } if ($row5['kfid'] == $last_kfid) { $farbe = "#d8d8d8"; } else { $farbe = "#f4f4f4"; $ln_zaehler1 = 0; } $last_kfid = $row5['kfid']; $query6 = "SELECT lbfzid, b.kfid, a.did, sum(a.wert) wert, art, b.bezeichnung, monat FROM prog_tmp_lb_fz a, prog_kat_funktionen b WHERE a.kfid=b.kfid AND date_format(monat,'%Y') = '$jahrgang' AND a.kfid = $row5[kfid] AND wert > 0 GROUP BY a.lbfzid, b.kfid, a.did ORDER BY bezeichnung asc, monat asc"; $result6 = $db->query($query6) or die("Cannot execute query6"); $ln5 = 0; #inner while ($row6 = $result6->fetch_array()) { if ($row6['art'] == 'F') { $art = 'Fiktiver Wert'; $edit = "$row6[kfid]"; } else { $art = 'Erfasster Wert'; $edit = "$row6[kfid]"; } if ($row6['did'] != 0) { // Wenn kein fiktiver Wert zugeordneten Prof suchen $result_name = $db->query("SELECT doz_titel, doz_vorname, doz_name, date_format(startdat, '%d.%m.%Y') startdat, date_format(enddat, '%d.%m.%Y') enddat FROM prog_tmp_professor a, prog_lb_fz b WHERE a.did=b.did AND a.did= '$row6[did]' AND b.lbfzid=$row6[lbfzid] ORDER BY a.art, startdat DESC LIMIT 1"); $row_name = $result_name->fetch_array(); $name = trim("$row_name[doz_titel] $row_name[doz_name], $row_name[doz_vorname]"); $startdat = "$row_name[startdat]"; $enddat = "$row_name[enddat]"; } else { // Startdatum des fiktiven Werts herausfinden $result_startf = $db->query("SELECT date_format(min(monat), '%d.%m.%Y') monat_form FROM prog_tmp_lb_fz WHERE kfid= '$row6[kfid]' AND art='F' ORDER BY Monat DESC LIMIT 1"); $row_startf = $result_startf->fetch_array(); $name = "Fiktiver Wert"; $startdat = "$row_startf[monat_form]"; $enddat = ""; } $wert_neu = number_format($row6['wert'], 2, ',', '.'); $inner4[$ln5]['fz_art'] = $art; $inner4[$ln5]['edit'] = $edit; $inner4[$ln5]['wert'] = $wert_neu; $inner4[$ln5]['name'] = $name; $inner4[$ln5]['startdat'] = $startdat; $inner4[$ln5]['enddat'] = $enddat; $value_funktion = $inner4; $ln5++; } $row5['inner'] = $value_funktion; $row5['farbe'] = $farbe; $value_5[] = $row5; } // echo "
"; // print_r($value_5); // echo ""; $smarty->assign('outer_loop5', $value_5); // $smarty->assign('table_funktionen', $value_funktion); // --- Gespeicherte Bezüge Ende ----- // $heute_format = date("Y", mktime(0, 0, 0, 0, 0, date("Y"))); // ISO-8601 Format wie in der Datenbank: Formatierung für Vergleiche erforderlich // Der erste Wert wird vorgegeben $result_min = $db->query("SELECT min(date_format(monat, '%Y')) jahr FROM prog_tmp_synopse"); $row_min = $result_min->fetch_array(); // Wann geht der letzte Prof in Ruhestand $result_max = $db->query("SELECT max(date_format(weggang,'%Y')) weggang FROM prog_tmp_professor"); $row_max = $result_max->fetch_array(); // Vor zurückblättern $jahrgang_next = $jahrgang + 1; $jahrgang_prev = $jahrgang - 1; if ($row_min['jahr'] < $jahrgang) { $smarty->assign('ju_td_prev', "?jahrgang=$jahrgang_prev"); } else { $smarty->assign('ju_td_prev', ""); } if ($row_max['weggang'] > $jahrgang) { $smarty->assign('ju_td_next', "?jahrgang=$jahrgang_next"); } else { $smarty->assign('ju_td_next', ""); } } if ($action == 'lzfikdel') { $startdat=$_GET['startdatum']; $enddat=$_GET['enddatum']; $did=$_GET['did']; $modify_date = date("Y-m-d H:i:s"); $result = $db->query("INSERT INTO prog_lb_lz (startdat, enddat, wert, did, modify_date) VALUES ('$startdat', '$enddat', '0', '$did', '$modify_date')"); echo ""; } if ($action == 'lbfikdel') { $startdat=$_GET['datum']; $did=$_GET['did']; $modify_date = date("Y-m-d H:i:s"); $jahr = substr($startdat, 0, 4); // Jahr auslesen aus der SQL Abfrage $mon = substr($startdat, 5, 2); // Monat auslesen aus der SQL-Abfrage $tag = substr($startdat, 8, 2); // Tag auslesen aus der SQL-Abfrage $tstamp = mktime(0, 0, 0, $mon, $tag-1, $jahr); // Tag subtrahieren, der dann in der HTML auch ausgegeben wird $enddat = date("Y-m-d", $tstamp); // Datum formatieren # Offene aktive Zulagen beenden $result = $db->query("UPDATE prog_lb_bz SET enddat= '$enddat' ,modify_date = '$modify_date' WHERE enddat = '0000-00-00' AND did = '$did' "); # Zulagen auf 0 setzen $result = $db->query("INSERT INTO prog_lb_bz (startdat, wert, did, modify_date) VALUES ('$startdat', '0', '$did', '$modify_date')"); echo ""; } $smarty->assign('action', "$action"); $smarty->display("$template/$templatename"); ?>