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

239 lines
9.1 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";
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;
}
if (isset($_GET['edit'])) {
$_SESSION["ruhestand_status"] = 'edit';
$deid = $_GET['edit'];
$_SESSION["ruhestand_deid"] = $deid;
} else {
$_SESSION["ruhestand_status"] = 'neu';
}
# -- Fehlermeldungen -- #
if (isset($_GET[error])) {
$errorno = $_GET[error];
$smarty->assign('ruhestand_error', 1);
$smarty->assign('ruhestand_value_funktion', $_SESSION["ruhestand_value_funktion"]);
$smarty->assign('ruhestand_value_std', $_SESSION["ruhestand_value_sws"]);
$smarty->assign('ruhestand_value_datumvon', $_SESSION["ruhestand_value_beginn_lastday"]);
$smarty->assign('ruhestand_value_datumbis', $_SESSION["ruhestand_value_ende_funktion"]);
if ($errorno == 2) {
# mehrere Ruhestandsdaten
$smarty->assign('ruhestand_error_text', "Es kann nur ein Ruhestandsdatum eingegeben werden!");
}
if ($errorno == 3) {
# ungültiges Datum
$smarty->assign('ruhestand_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!");
}
$jahrgang2 = $jahrgang+1;
if ($errorno == 5) {
$smarty->assign('ruhestand_error_text', "Das Datum ist außerhalb des Jahrgangs!<br>Datum muss im Bereich 01.09.$jahrgang - 31.08.$jahrgang2 liegen.");
}
}
# --- Wenn Werte editiert werden ------------
if ($_SESSION["ruhestand_status"] == 'edit') {
$result_edit = $db->query("SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
FROM dep_deputat_ermaessigung
WHERE deid = $deid");
$row_edit = $result_edit->fetch_array();
$smarty->assign('ruhestand_status', $_SESSION["ruhestand_status"]);
$smarty->assign('ruhestand_value_funktion', "$row_edit[funktion]");
$smarty->assign('ruhestand_value_datumvon', "$row_edit[beginn]");
$smarty->assign('ruhestand_value_datumbis', "$row_edit[ende]");
$smarty->assign('ruhestand_value_std', "$row_edit[sws]");
$smarty->assign('ruhestand_value_hinweise', "$row_edit[lvs]");
}
# --- Wenn Werte editiert werden Ende -------
if ($_GET['editende'] == 1) {
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
$_SESSION["ruhestand_status"] = 'neu';
}
# Gespeicherte Werte
$query2 = "SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
FROM dep_deputat_ermaessigung
WHERE imtuid=$uid
AND jahr=$jahrgang
AND art LIKE '%Ruhestand%'
ORDER BY deid ASC";
$result2 = $db->query($query2) or die("Cannot execute query2");
while ($row2 = $result2->fetch_array()) {
$query_funktion = $db->query("SELECT bezeichnung
FROM dep_kat_ermaessigung
WHERE dkeid = '$row2[funktion]'");
$row_funktion = $query_funktion->fetch_array();
$lvs = number_format($row2['lvs'], 2, ',', '.');
$row2['lvs'] = $lvs;
$row2['funktion'] = $row_funktion['bezeichnung'];
$sws = number_format($row2['sws'], 2, ',', '.');
$row2['sws'] = $sws;
$table_data2[] = $row2;
}
$smarty->assign('table_data2', $table_data2);
# Jahressumme
$query_jahrsum = $db->query("SELECT sum(lvs) summe_jahr
FROM dep_deputat_ermaessigung
WHERE imtuid=$uid
AND art LIKE '%Ruhestand%'
AND jahr=$jahrgang");
$row_jahrsum = $query_jahrsum->fetch_array();
$summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.');
$smarty->assign('ruhestand_value_summe_jahr', $summe_jahr);
}
if ($action == 'save') {
$jahrgang2 = $jahrgang+1;
$lastday = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['beginn_lastday']);
if($lastday == ''){
$lastday = $jahrgang."-09-01";
}
$_SESSION["ruhestand_value_beginn_lastday"] = $_POST['beginn_lastday'];
$query_anz = $db->query("SELECT count(*) Anz
FROM dep_deputat_ermaessigung
WHERE imtuid=$uid
AND art LIKE '%Ruhestand%'
AND jahr=$jahrgang");
$row_anz = $query_anz->fetch_array();
if($row_anz['Anz' > 1] AND $_SESSION["ruhestand_status"] == 'neu'){
if($_SESSION["ruhestand_status"] == 'neu'){
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=2\">";
}else{
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=2&edit=$_SESSION[ruhestand_deid]\">";
}
exit;
}
function validateDate($date, $format = 'Y-m-d')
{
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date;
}
if(!validateDate($lastday)){
if($_SESSION["ruhestand_status"] == 'neu'){
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
}else{
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[ruhestand_deid]\">";
}
exit;
}
# Ende ist immer Monatsletzter des angegebenen Monats
$year_ende = substr($lastday,0,4);
$mon_ende = substr($lastday,5,2);
$day_ende = '01'; #substr($lastday,8,2); # Hier gibt man monatsersten an, die Funktion Y-m-t macht Monatsende draus
$save_ende = "$year_ende-$mon_ende-$day_ende";
$L = new DateTime( $save_ende);
$save_ende = $L->format( 'Y-m-t' );
# Datum außerhalb des Jahrgangs 01.09.-31.08
#echo strtotime($save_ende) ." > ". strtotime("$jahrgang2-08-31")."<br>";
#echo strtotime($save_ende) ." < ". strtotime("$jahrgang-09-01")."<br>";
#exit;
if(strtotime($save_ende) > strtotime("$jahrgang2-08-31") OR
strtotime($save_ende) < strtotime("$jahrgang-09-01")
){
if($_SESSION["ruhestand_status"] == 'neu'){
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5\">";
}else{
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5&edit=$_SESSION[ruhestand_deid]\">";
}
exit;
}
$lvs = $_POST['lvs'];
$datum = date("Y-m-d H:i:s");
if ($_SESSION["ruhestand_status"] == 'neu') {
$sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( imtuid
, jahr
, art
, beginn
, sort_order
, created
)
VALUES
( '$uid'
, '$jahrgang'
, 'Ermäßigung: Ruhestand während des Studienjahrs'
, '$save_ende'
, 1
, '$datum'
)
");
}
if ($_SESSION["ruhestand_status"] == 'edit') {
$deid = $_SESSION["ruhestand_deid"];
$result = $db->query("UPDATE dep_deputat_ermaessigung
SET beginn = '$save_ende'
, modify_date = '$datum'
WHERE deid = $deid
");
unset($_SESSION['ruhestand_deid']);
}
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
$editende = 1;
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
}
if ($action == 'del') {
$deid = $_GET['deid'];
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
$del1 = $db->query("DELETE FROM dep_deputat_ermaessigung WHERE deid = $deid AND imtuid=$uid");
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
}
$smarty->assign('action', "$action");
$smarty->display("$template/$templatename");
?>