deputat/jahresabschluss.php
2023-04-25 13:25:59 +02:00

540 lines
23 KiB
PHP
Executable File

<?php
session_start();
$jahrgang = $_SESSION["jahrgang"];
include_once 'classes/TestProjektSmarty.class.php';
require_once("config.inc.php");
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
$smarty = new Smarty();
require_once "functions.php";
require_once "language/german.inc.php";
require_once "func_lvs_exk_mehrtaegig.php";
require_once "func_lvs_exk_eintaegig.php";
#require_once "func_lvs_teilzeit.php";
#Berechnung der Ermäßigungen
require_once "func_jahresabschluss_erm.php";
#Berechnung des Jahresabschlusses
require_once "func_jahresabschlussberechnung.php";
if (isset($_GET['action'])) {
$action = $_GET['action'];
} else {
$action = '';
}
if ($action == '') {
if ($jahrgang == "") {
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> w&auml;hlen!";
exit;
}
$jahrgang_next = $jahrgang + 1;
$studjahr = "$jahrgang/$jahrgang_next";
$smarty->assign('jaabschl_jahrgang', $studjahr);
#Ermäßigungen berechnen
jahresabschluss_erm($uid, $jahrgang);
# Startwert: 594
$query_startlvs = $db->query("SELECT lvs
FROM dep_kat_lvs
WHERE jahr <= '$jahrgang'
ORDER BY jahr DESC
LIMIT 1
");
$row_startlvs = $query_startlvs->fetch_array();
$startlvs = number_format($row_startlvs['lvs'], 2, ',', '.');
$cur_lvs = $row_startlvs['lvs'];
$smarty->assign('erf_value_soll_lvs', $startlvs);
#$lvs_form = number_format(lvs_teilzeit($uid,$jahrgang), 2, ',', '.');
# $lvs = lvs_teilzeit($uid,$jahrgang);
$query0 = "SELECT deid, art, funktion, date_format(beginn, '%d.%m.%Y') beginn_form, date_format(ende, '%d.%m.%Y') ende_form, sws, lvs, beantragung, prozent, sort_order, monate, beginn
FROM dep_deputat_ermaessigung
WHERE imtuid=$uid
AND jahr=$jahrgang
AND (lvs > 0 OR beantragung > 0)
ORDER BY sort_order ASC, beginn ASC";
$result0 = $db->query($query0) or die("Cannot execute query 1a");
while ($row0 = $result0->fetch_array()) {
$erg_lvs = $cur_lvs - $row0['lvs'];
if ($row0['beginn_form'] == '00.00.0000') {
$beginn_form = '';
} else {
$beginn_form = $row0['beginn_form'];
}
if ($row0['ende_form'] == '00.00.0000') {
$ende_form = '';
} else {
$ende_form = $row0['ende_form'];
}
if ($row0['art'] == 'Schwerbehinderung' AND $row0['prozent'] == 0) {
$hinweis = '0%';
} elseif ($row0['art'] == 'Schwerbehinderung' AND $row0['prozent'] != 0) {
$prc = $row0['prozent'] * 100;
$hinweis = $prc . "%";
# Ende einer Schwerbehinderung/wird nicht mehr gewährt. Wenn lvs auf 0 gesetzt wurde kommt es nicht in der Schleife vor. daher das nächste Anfangsdatum mit 0 als Ende nehmen
$query_endnext = $db->query("SELECT date_sub(beginn, INTERVAL 1 DAY) ende
FROM dep_deputat_ermaessigung
WHERE jahr = '$jahrgang'
AND imtuid = $uid
AND art = 'Schwerbehinderung'
AND beginn > '$row0[beginn]'
ORDER BY beginn ASC
LIMIT 1
");
$row_endnext = $query_endnext->fetch_array();
if ($row_endnext['ende'] == '') {
# keine weitere Schwerbehinderung im aktuellen Jahr, dann 31.8 Jahr2
$ende = $jahrgang_next . '-08-31';
} elseif ($row_endnext['ende'] >= $jahrgang_next . '-08-31') {
# Wenn das nächste Datum höher als der 31.8 im Folgejahr ist, dann 31.8 Jahr2 als Enddatum setzen
$ende = $jahrgang_next . '-08-31';
} else {
# Ende ist der Tag vor der nächsten beginnenden Schwerbehinderung
$ende = $row_endnext['ende'];
}
$L = new DateTime($ende);
$ende_form = $L->format('d.m.Y');
}
if ($row0['art'] == 'Teilzeit' AND $row0['prozent'] == 0) {
$hinweis = '0 %';
} elseif ($row0['art'] == 'Teilzeit' AND $row0['prozent'] != 0) {
$prc = $row0['prozent'] * 100;
$hinweis = $prc . " %";
$query_endnext = $db->query("SELECT date_sub(beginn, INTERVAL 1 DAY) ende
FROM dep_deputat_ermaessigung
WHERE jahr = '$jahrgang'
AND imtuid = $uid
AND art = 'Teilzeit'
and beginn > '$row0[beginn]'
ORDER BY beginn ASC
LIMIT 1
");
$row_endnext = $query_endnext->fetch_array();
if ($row_endnext['ende'] == '') {
# keine weitere Teilzeit im aktuellen Jahr, dann 31.8 jahrgang_next
$ende = $jahrgang_next . '-08-31';
} elseif ($row_endnext['ende'] >= $jahrgang_next . '-08-31') {
# Wenn das nächste Datum höher als der 31.8 im Folgejahr ist, dann 31.8 jahrgang_next als Enddatum setzen
$ende = $jahrgang_next . '-08-31';
} else {
# Ende ist der Tag vor der nächsten beginnenden Teilzeit
$ende = $row_endnext['ende'];
}
$L = new DateTime($ende);
$ende_form = $L->format('d.m.Y');
}
if ((strpos($row0['art'], "Deputat") !== false OR strpos($row0['art'], "Freistellung") !== false) AND $row0['prozent'] == 0 AND $row0['funktion'] > 0) {
$query_funktion = $db->query("SELECT bezeichnung
FROM dep_kat_ermaessigung
WHERE dkeid = '$row0[funktion]'");
$row_funktion = $query_funktion->fetch_array();
$hinweis = $row_funktion['bezeichnung'];
} elseif (strpos($row0['art'], "Deputat") !== false AND $row0['prozent'] == 0 AND $row0['funktion'] == 0) {
$hinweis = '';
}
if (strpos($row0['art'], "Mutterschutz") !== false AND $row0['lvs'] != 0) {
$hinweis = '';
}
if (strpos($row0['art'], "Abweichender Lehrbedarf") !== false AND $row0['beantragung'] != 0) {
$lvs = number_format($row0['beantragung'], 2, ',', '.');
$hinweis = "Beantragt: $lvs LVS";
}
if ($row0['lvs'] == 0) {
$anz_lvs = '';
} else {
$anz_lvs = number_format($row0['lvs'], 2, ',', '.');
}
if ($row0['sws'] == 0) {
$sws = '';
} else {
$sws = number_format($row0['sws'], 2, ',', '.');
}
#echo number_format($row0['lvs'], 2, ',', '.')."<br>";
$row0['erg_lvs'] = number_format($erg_lvs, 2, ',', '.');
$row0['hinweis'] = $hinweis;
$row0['cur_lvs'] = number_format($cur_lvs, 2, ',', '.');
$cur_lvs = $cur_lvs - $row0['lvs'];
$row0['sws'] = $sws;
$row0['anz_lvs'] = $anz_lvs;
$row0['ber_lvs'] = number_format($row0['lvs'], 2, ',', '.');
$row0['beginn_form'] = $beginn_form;
$row0['ende_form'] = $ende_form;
$table_data0[] = $row0;
}
$smarty->assign('table_data0', $table_data0);
# Jahressumme Ermäßigungen
$query_jahrsum0 = $db->query("SELECT sum(lvs) summe_jahr
FROM dep_deputat_ermaessigung
WHERE imtuid=$uid
AND jahr=$jahrgang");
$row_jahrsum0 = $query_jahrsum0->fetch_array();
$summe_jahr0 = number_format($row_jahrsum0['summe_jahr'], 2, ',', '.');
$smarty->assign('erf_value_summe_jahr_erm', $summe_jahr0);
$zu_leisten = $row_startlvs['lvs'] - $row_jahrsum0['summe_jahr'];
$zu_leisten_form = number_format($row_startlvs['lvs'] - $row_jahrsum0['summe_jahr'], 2, ',', '.');
$smarty->assign('erf_value_zu_leisten', $zu_leisten_form);
# Gespeicherte Werte
$query2 = "SELECT did, titel, module, schwerpunkt, dsgid, verid, anz_ag, krankheitsmerkmal, gemlv, fachlv, anzgemlv, namegemlv, basislvsgemlv, teamteaching, exk_tage, exk_datumvon, exk_datumbis, exk_beschreibung, exk_stdanreise, exk_stdabreise, std, std_default, hinweise
FROM dep_deputat
WHERE imtuid=$uid
AND jahr=$jahrgang
ORDER BY created DESC";
$result2 = $db->query($query2) or die("Cannot execute query 1");
while ($row1 = $result2->fetch_array()) {
$query_verid = $db->query("SELECT bezeichnung
FROM dep_kat_veranstaltungsart
WHERE verid='$row1[verid]'");
$row_verid = $query_verid->fetch_array();
# Wird aktuell nicht mehr im Frontend eingeblendet
$query_tid = $db->query("SELECT bezeichnung
FROM dep_kat_teamteaching
WHERE tid='$row1[teamteaching]'");
$row_tid = $query_tid->fetch_array();
if ($row1['gemlv'] == 'J') {
$gemlv_form = 'Ja';
}
if ($row1['gemlv'] == 'N') {
$gemlv_form = 'Nein';
}
# Krankheitsbedingte Merkmale
# 0=Keine; 1=LV übernommen; 2=LV nachgeholt
if ($row1['krankheitsmerkmal'] == 0) {
$krankheitsmerkmal = "keine";
}
if ($row1['krankheitsmerkmal'] == 1) {
$krankheitsmerkmal = "LV&nbsp;&uuml;bernommen";
}
if ($row1['krankheitsmerkmal'] == 2) {
$krankheitsmerkmal = "LV&nbsp;nachgeholt";
}
/* Marix, wann $modul $schwerpunkt oder $titel verwendet wird
findet sind in Excel "erfassen_eingabe_felder.xlsx" Tab "Matrix Titel"
$titel = $_POST['titel'];
$module = $_POST['module'];
$schwerpunkt = $_POST['schwerpunkt'];
*/
if ($row1['verid'] == "1" AND ($row1['dsgid'] == "1" or $row1['dsgid'] == "2" or $row1['dsgid'] == "3" or $row1['dsgid'] == "4")) {
# In Kombination Vorlesung mit Public Management, Steuer, Rente und Finanz gilt $modul und $titel und $schwerpunkt sind leer
$query_vorl = $db->query("SELECT bezeichnung
FROM dep_kat_studienmodul
WHERE dsmid='$row1[module]'");
$row_vorl = $query_vorl->fetch_array();
$titel = $row_vorl['bezeichnung'];
} elseif ($row1['verid'] == 11) {
# Bei Schwerpunkt gilt immer $schwerpunkt
$query_spt = $db->query("SELECT bezeichnung
FROM dep_kat_schwerpunkt
WHERE dspid='$row1[schwerpunkt]'");
$row_spt = $query_spt->fetch_array();
$titel = $row_spt['bezeichnung'];
} else {
# Bei anderen konstellationen gibt es immer $titel
$titel = $row1['titel'];
}
$std = number_format($row1['std'], 2, ',', '.');
$row1['std'] = $std;
$row1['titel'] = $titel;
$row1['gemlv_form'] = $gemlv_form;
$row1['krankheitsmerkmal'] = $krankheitsmerkmal;
$row1['veranstaltung'] = $row_verid['bezeichnung'];
$row1['teamteaching_form'] = $row_tid['bezeichnung'];
$table_data1[] = $row1;
}
$smarty->assign('table_data1', $table_data1);
# Jahressumme
$query_jahrsum = $db->query("SELECT sum(std) summe_jahr
FROM dep_deputat
WHERE imtuid=$uid
AND jahr=$jahrgang");
$row_jahrsum = $query_jahrsum->fetch_array();
$summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.');
$smarty->assign('erf_value_summe_jahr', $summe_jahr);
## Sonstige Deputate
# Gespeicherte Werte
$query2 = "SELECT dsid, titel, verid, lvs, hinweise
FROM dep_deputat_sonstige
WHERE imtuid=$uid
AND jahr=$jahrgang
ORDER BY verid ASC";
$result2 = $db->query($query2) or die("Cannot execute query2");
while ($row2 = $result2->fetch_array()) {
$query_verid = $db->query("SELECT bezeichnung
FROM dep_kat_veranstaltungsart
WHERE verid='$row2[verid]'");
$row_verid = $query_verid->fetch_array();
# Wird aktuell nicht mehr im Frontend eingeblendet
$query_tid = $db->query("SELECT bezeichnung
FROM dep_kat_teamteaching
WHERE tid='$row2[teamteaching]'");
$row_tid = $query_tid->fetch_array();
if ($row2['gemlv'] == 'J') {
$gemlv_form = 'Ja';
}
if ($row2['gemlv'] == 'N') {
$gemlv_form = 'Nein';
}
# Krankheitsbedingte Merkmale
# 0=Keine; 1=LV übernommen; 2=LV nachgeholt
if ($row2['krankheitsmerkmal'] == 0) {
$krankheitsmerkmal = "keine";
}
if ($row2['krankheitsmerkmal'] == 1) {
$krankheitsmerkmal = "LV&nbsp;&uuml;bernommen";
}
if ($row2['krankheitsmerkmal'] == 2) {
$krankheitsmerkmal = "LV&nbsp;nachgeholt";
}
$lvs = number_format($row2['lvs'], 2, ',', '.');
$row2['lvs'] = $lvs;
$row2['gemlv_form'] = $gemlv_form;
$row2['krankheitsmerkmal'] = $krankheitsmerkmal;
$row2['veranstaltung'] = $row_verid['bezeichnung'];
$row2['teamteaching_form'] = $row_tid['bezeichnung'];
$table_data2[] = $row2;
}
$smarty->assign('table_data2', $table_data2);
# Jahressumme
$query_jahrsum = $db->query("SELECT sum(lvs) summe_jahr
FROM dep_deputat_sonstige
WHERE imtuid=$uid
AND jahr=$jahrgang");
$row_jahrsum_sonst = $query_jahrsum->fetch_array();
$summe_jahr_sonst = number_format($row_jahrsum_sonst['summe_jahr'], 2, ',', '.');
$smarty->assign('erfs_value_summe_jahr', $summe_jahr_sonst);
# Gespeicherte Werte Abschlussarbeiten
$query2 = "SELECT daid, name, kaid, semester, lvs
FROM dep_deputat_abschlussarbeiten
WHERE imtuid=$uid
AND jahr=$jahrgang
ORDER BY semester DESC";
$result2 = $db->query($query2) or die("Cannot execute query 3");
while ($row3 = $result2->fetch_array()) {
if ($row3['semester'] == 'SS') {
$semester = "Sommersemester";
}
if ($row3['semester'] == 'WS') {
$semester = "Wintersemester";
}
$query_bez_sem = $db->query("SELECT bezeichnung
FROM dep_kat_abschlussarbeiten
WHERE kaid =$row3[kaid]");
$row_bez_sem = $query_bez_sem->fetch_array();
$lvs = number_format($row3['lvs'], 2, ',', '.');
$row3['lvs'] = $lvs;
$row3['abschlussarbeit'] = $row_bez_sem['bezeichnung'];
$row3['semesterbez'] = $semester;
$table_data3[] = $row3;
}
$smarty->assign('table_data3', $table_data3);
# Summe LVS im WS
$query_sumlvs_ws = $db->query("SELECT sum(lvs) lvs
FROM dep_deputat_abschlussarbeiten
WHERE imtuid=$uid
AND jahr=$jahrgang");
$row_sumlvs = $query_sumlvs_ws->fetch_array();
$summe_jahrlvs = number_format($row_sumlvs['lvs'], 2, ',', '.');
$smarty->assign('abschluss_value_summe_lvs', $summe_jahrlvs);
$ist = $row_sumlvs['lvs'] + $row_jahrsum_sonst['summe_jahr'] + $row_jahrsum['summe_jahr'];
#Berechnung durchführen für Tabelle
# auskommentiert am 02.06.2022. $zu_leisten gibt es noch nicht, es wird mal mit 594 gerechnet
# jahresabschlussberechnung($uid, $jahrgang, $zu_leisten, $ist);
jahresabschlussberechnung($uid, $jahrgang, $zu_leisten, $ist);
$ist_format = number_format($ist, 2, ',', '.');
$smarty->assign('abschluss_gesamt', $ist_format);
########SYNOPSE############################
#Aktuelles Jahr
$vorjahr = $jahrgang - 1;
$query_syn_pre = $db->query("SELECT endwert
FROM dep_jahresabschluss_restdeputate
WHERE imtuid=$uid
AND jahr=$vorjahr");
$row_syn_pre = $query_syn_pre->fetch_array();
$jaabschl_endwert_vorjahr = number_format($row_syn_pre[endwert], 2, ',', '.');
$smarty->assign('jaabschl_endwert_vorjahr', $jaabschl_endwert_vorjahr);
$query_syn_cur = $db->query("SELECT soll, ist, dep_gesamt, dep_verfall_jahr, dep_verfall, dep_gesamt_nach_verfall, deperg_aktjahr
FROM dep_jahresabschluss
WHERE imtuid=$uid
AND jahr=$jahrgang");
$row_syn_cur = $query_syn_cur->fetch_array();
$jaabschl_soll = number_format($row_syn_cur[soll], 2, ',', '.');
$smarty->assign('jaabschl_soll', $jaabschl_soll);
$jaabschl_ist = number_format($row_syn_cur[ist], 2, ',', '.');
$smarty->assign('jaabschl_ist', $jaabschl_ist);
$uber_unter_jahr = $row_syn_cur[ist] - $row_syn_cur[soll];
$jaabschl_uber_unter_jahr = number_format($uber_unter_jahr, 2, ',', '.');
$smarty->assign('jaabschl_uber_unter_jahr', $jaabschl_uber_unter_jahr);
$smarty->assign('jaabschl_verfall_jahr', $row_syn_cur[dep_verfall_jahr]);
$jaabschl_dep_verfall = number_format($row_syn_cur[dep_verfall], 2, ',', '.');
$smarty->assign('jaabschl_dep_verfall', $jaabschl_dep_verfall);
$jaabschl_dep_gesamt = number_format($row_syn_cur[dep_gesamt], 2, ',', '.');
$smarty->assign('jaabschl_dep_gesamt', $jaabschl_dep_gesamt);
$jaabschl_dep_gesamt_nach_verfall = number_format($row_syn_cur[dep_gesamt_nach_verfall], 2, ',', '.');
$smarty->assign('jaabschl_dep_gesamt_nach_verfall', $jaabschl_dep_gesamt_nach_verfall);
# Wie viel Unterdeputat konnte abgebaut werden
$query_syn_abb = $db->query("SELECT sum(differenz)*-1 abbau_jahr
FROM dep_jahresabschluss_restdeputate
WHERE imtuid=$uid
AND jahr=$jahrgang
GROUP BY jahr");
$row_syn_abb = $query_syn_abb->fetch_array();
$jaabschl_abbau_jahr = number_format($row_syn_abb[abbau_jahr], 2, ',', '.');
$smarty->assign('jaabschl_abbau_jahr', $jaabschl_abbau_jahr);
# Vergangene Jahre
$query4 = "SELECT vorjahr, startwert, differenz, differenzjahr, endwert, soll, ist, dep_gesamt, dep_verfall_jahr, dep_verfall, dep_gesamt_nach_verfall, deperg_aktjahr
FROM dep_jahresabschluss_restdeputate a, dep_jahresabschluss b
WHERE a.vorjahr=b.jahr
AND a.jahr = $jahrgang
AND a.imtuid = $uid
ORDER BY vorjahr DESC";
#echo $query4;
$result4 = $db->query($query4) or die("Cannot execute query 4");
while ($row4 = $result4->fetch_array()) {
$vorjahr_next = $row4[vorjahr] + 1;
$vorjahre = $row4[vorjahr] . "/" . $vorjahr_next;
$verfall_next = $row4[dep_verfall_jahr] + 1;
$dep_verfall_jahr = $row4[dep_verfall_jahr] . "/" . $verfall_next;
$uber_unter_jahr = $row4[ist] - $row4[soll];
$row4['vorjahr'] = $vorjahre;
$row4['dep_verfall_jahr'] = $dep_verfall_jahr;
$row4['uber_unter_jahr'] = number_format($uber_unter_jahr, 2, ',', '.');
$row4['differenz'] = number_format($row4['differenz'], 2, ',', '.');
$row4['dep_verfall'] = number_format($row4['dep_verfall'], 2, ',', '.');
$row4['dep_gesamt_nach_verfall'] = number_format($row4['dep_gesamt_nach_verfall'], 2, ',', '.');
$row4['dep_gesamt'] = number_format($row4['dep_gesamt'], 2, ',', '.');
$row4['endwert'] = number_format($row4['endwert'], 2, ',', '.');
$row4['soll'] = number_format($row4['soll'], 2, ',', '.');
$row4['ist'] = number_format($row4['ist'], 2, ',', '.');
$table_data4[] = $row4;
}
$smarty->assign('table_data4', $table_data4);
# Prüfen ob der Jahrgang schon abgeschlossen wurde, dann soll der Button "Abschließen und absenden" ausgeblendet werden
$query_closed = $db->query("SELECT count(*) Anz
FROM dep_doz_abschluss
WHERE imtuid=$uid
AND jahr=$jahrgang");
$row_closed = $query_closed->fetch_array();
if ($row_closed['Anz'] > 0) {
$smarty->assign('jaabschl_closed', 1);
$smarty->assign('jaabschl_error', 1);
$smarty->assign('jaabschl_error_text', 'Der aktuelle Jahrgang ist bereits abgeschlossen!');
} else {
$smarty->assign('jaabschl_closed', 0);
}
}
if ($action == 'abschluss') {
$jahrgang_next = $jahrgang + 1;
$studjahr = "$jahrgang/$jahrgang_next";
$smarty->assign('jaabschl_jahrgang', $studjahr);
}
if ($action == 'abschluss2') {
$datum = date("Y-m-d H:i:s");
$jahrgang_next = $jahrgang + 1;
$studjahr = "$jahrgang/$jahrgang_next";
$smarty->assign('jaabschl_jahrgang', $studjahr);
$sql1 = $db->query("INSERT INTO dep_doz_abschluss ( imtuid
, jahr
, abschluss
)
VALUES
( '$uid'
, '$jahrgang'
, '$datum'
)
");
echo "<meta http-equiv=\"refresh\" content=\"2; URL=" . $_SERVER['PHP_SELF'] . "\">";
}
$smarty->assign('action', "$action");
$smarty->display("$template/$templatename");
?>