neue Validierung bei Zeitsperre Kranken, ob bestehender KS verlängert werden soll

This commit is contained in:
ma0068
2023-01-09 12:30:21 +01:00
parent 603abd5458
commit 2ef3d696e6
2 changed files with 323 additions and 156 deletions
+243 -126
View File
@@ -46,6 +46,7 @@ $uid = get_uid();
$PHP_SELF = $_SERVER['PHP_SELF'];
$typen_arr = array("Urlaub", "PflegeU", "ZA", "Krank", "DienstF", "DienstV", "CovidSB", "CovidKS");
$dataKS = array();
if(isset($_GET['type']))
$type=$_GET['type'];
@@ -72,7 +73,7 @@ $ma= new mitarbeiter();
$zaufzeichnung = new zeitaufzeichnung();
if ($sperrdat = $zaufzeichnung->getEintragungGesperrtBisForUser($uid))
$gesperrt_bis = $sperrdat;
else if (defined('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS') && CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS != '')
elseif (defined('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS') && CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS != '')
$gesperrt_bis = CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS;
else
$gesperrt_bis = '2015-08-31';
@@ -158,6 +159,8 @@ $( document ).ready(function()
}
return [true, ""];
}
</script>';
?>
@@ -259,6 +262,7 @@ function checkdatum()
return true;
}
function showHideBezeichnungDropDown()
{
var dd = document.zeitsperre_form.zeitsperretyp_kurzbz;
@@ -347,6 +351,7 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_
$error_msg='';
//von-datum pruefen
if(isset($_POST['vondatum']) && !$datum_obj->checkDatum($_POST['vondatum']))
{
@@ -394,59 +399,126 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_
}
}
//Prüfen auf angrenzenden Krankenstand //Manu
if (isset($_POST['bisdatum']) && isset($_POST['vondatum'])
&& $_GET['type']=='new_sperre'
&& $error!=true
&& ($_POST['zeitsperretyp_kurzbz'] == 'Krank' ))
{
$vonDay = $_POST['vondatum'];
$von2 = new DateTime($von);
$von2 = $von2->format('Y-m-d');
$bisDay = $_POST['bisdatum'];
//grenzt Tag an einen anderen Krankenstand an?
$zs = new Zeitsperre();
if ($zs->getAngrenzendenKrankenstand($uid, $von2))
{
$krankenstand = $zs->result;
foreach ($krankenstand as $ks)
{
$text = "Es gibt einen <b>bestehenden Krankenstand von " . date('d.m.Y', $datum_obj->mktime_fromdate($ks->vondatum)) .
" bis " . date('d.m.Y', $datum_obj->mktime_fromdate($ks->bisdatum)) . "</b>.<br>";
$link = "<button><a href = '$PHP_SELF?type=edit&id=$ks->zeitsperre_id&editKS=1' style='text-decoration: none;color:black;'>
Bestehenden Krankenstand verlängern</a></button>";
echo $text;
echo $link;
echo "<br>";
$bezeichnung = $_POST['bezeichnung'];
$von = $_POST['vondatum'];
$von2 = new DateTime($von);
$von2 = $von2->format('Y-m-d');
$bis = $_POST['bisdatum'];
$bis2 = new DateTime($bis);
$bis2 = $bis2->format('Y-m-d');
$vertretung = $_POST['vertretung_uid'];
$erreichbarkeit = $_POST['erreichbarkeit'];
$readonly = 'readonly';
echo "<br><b>Neuer Krankenstand: von " . $von . " bis " . $bis . ": " .
$_POST['bezeichnung'] . "</b>";
if ($_POST['vertretung_uid'])
{
echo ", vertreten von ". $_POST['vertretung_uid'] . " (" . $erreichbarkeit .")";
}
echo "
<form method='POST' name='zeitsperre_form' action='$PHP_SELF?type=new_sperre&newKS=1' onsubmit='return checkdatum()'>
<input type='hidden' name='zeitsperretyp_kurzbz' value='Krank' readonly= $readonly>
<input type='hidden' name='bezeichnung' value = '$bezeichnung' readonly= $readonly>
<input type='hidden' name='vonDatum' value ='$von2' readonly= $readonly >
<input type='hidden' name='bisDatum' value ='$bis2' readonly= $readonly >
<input type='hidden' name='vertretung' value ='$vertretung' readonly= $readonly >
<input type='hidden' name='erreichbarkeit' value ='$erreichbarkeit' readonly= $readonly>
<input type='submit' value='Als neuen Krankenstand eintragen'>
</form>
";
exit();
}
}
}
//von - bis-datum pruefen von darf nicht groesser als bis sein
// 09.02.2009 simane
$vondatum=0;
if(isset($_POST['vondatum']))
if(!isset($_GET['newKS']))
{
$date=explode('.',$_POST['vondatum']);
if (@checkdate($date[1], $date[0], $date[2]))
$vondatum=0;
if(isset($_POST['vondatum']))
{
$vondatum=$date[2].$date[1].$date[0];
$vondatum_iso = $date[2].'-'.$date[1].'-'.$date[0];
$date=explode('.', $_POST['vondatum']);
if (@checkdate($date[1], $date[0], $date[2]))
{
$vondatum=$date[2].$date[1].$date[0];
$vondatum_iso = $date[2].'-'.$date[1].'-'.$date[0];
}
else
{
$error=true;
$error_msg .= $p->t('zeitsperre/vonDatumUngueltig').' ';
}
}
else
{
$error=true;
$error_msg .= $p->t('zeitsperre/vonDatumUngueltig').' ';
}
}
else
{
$error=true;
}
$bisdatum=0;
if(isset($_POST['bisdatum']))
{
$date=explode('.',$_POST['bisdatum']);
if (@checkdate($date[1], $date[0], $date[2]))
$bisdatum=0;
if(isset($_POST['bisdatum']))
{
$bisdatum=$date[2].$date[1].$date[0];
$date=explode('.', $_POST['bisdatum']);
if (@checkdate($date[1], $date[0], $date[2]))
{
$bisdatum=$date[2].$date[1].$date[0];
}
else
{
$error=true;
$error_msg .= $p->t('zeitsperre/bisDatumUngueltig').' ';
}
}
else
{
$error=true;
$error_msg .= $p->t('zeitsperre/bisDatumUngueltig').' ';
}
if($vondatum > $bisdatum)
{
$error=true;
$error_msg .= $p->t('zeitsperre/vonDatumGroesserAlsBisDatum').'! ';
}
//von-datum pruefen TODO
if($vondatum_iso < $gesperrt_bis && in_array($_POST['zeitsperretyp_kurzbz'], $typen_arr)
&& (!isset($_GET['editKS']) ))
{
$error=true;
$error_msg .= $p->t('zeitsperre/vorSperrdatum');
}
}
else
{
$error=true;
}
if($vondatum > $bisdatum)
{
$error=true;
$error_msg .= $p->t('zeitsperre/vonDatumGroesserAlsBisDatum').'! ';
}
//von-datum pruefen TODO
if($vondatum_iso < $gesperrt_bis && in_array($_POST['zeitsperretyp_kurzbz'],$typen_arr))
{
$error=true;
$error_msg .= $p->t('zeitsperre/vorSperrdatum');
}
$zeitsperre = new zeitsperre();
@@ -476,94 +548,118 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_
$zeitsperre->insertvon = $uid;
}
if(!$error && $_POST['zeitsperretyp_kurzbz']=='Urlaub')
if(!isset($_GET['newKS']))
{
if($zeitsperre->zeitsperre_id!='')
$id = $zeitsperre->zeitsperre_id;
else
$id = null;
if($zeitsperre->UrlaubEingetragen($uid, $datum_obj->formatDatum($_POST['vondatum']),$datum_obj->formatDatum($_POST['bisdatum']), $id))
if(!$error && $_POST['zeitsperretyp_kurzbz']=='Urlaub')
{
$error = true;
$error_msg.=$p->t('zeitsperre/urlaubBereitsEingetragen');
}
}
if(!$error)
{
$zeitsperre->zeitsperretyp_kurzbz = $_POST['zeitsperretyp_kurzbz'];
$zeitsperre->mitarbeiter_uid = $uid;
$zeitsperre->bezeichnung = $_POST['bezeichnung'];
$zeitsperre->vondatum = $datum_obj->formatDatum($_POST['vondatum']);
$zeitsperre->vonstunde = $_POST['vonstunde'];
$zeitsperre->bisdatum = $datum_obj->formatDatum($_POST['bisdatum']);
$zeitsperre->bisstunde = $_POST['bisstunde'];
$zeitsperre->erreichbarkeit_kurzbz = $_POST['erreichbarkeit'];
$zeitsperre->vertretung_uid = $_POST['vertretung_uid'];
$zeitsperre->updateamum = date('Y-m-d H:i:s');
$zeitsperre->updatevon = $uid;
if($zeitsperre->save())
{
echo "<h3>".$p->t('global/erfolgreichgespeichert')."</h3>";
if(URLAUB_TOOLS)
if($zeitsperre->zeitsperre_id!='')
$id = $zeitsperre->zeitsperre_id;
else
$id = null;
if($zeitsperre->UrlaubEingetragen($uid, $datum_obj->formatDatum($_POST['vondatum']), $datum_obj->formatDatum($_POST['bisdatum']), $id))
{
if($zeitsperre->new && $zeitsperre->zeitsperretyp_kurzbz=='Urlaub')
$error = true;
$error_msg.=$p->t('zeitsperre/urlaubBereitsEingetragen');
}
}
if(!$error)
{
$zeitsperre->zeitsperretyp_kurzbz = $_POST['zeitsperretyp_kurzbz'];
$zeitsperre->mitarbeiter_uid = $uid;
$zeitsperre->bezeichnung = $_POST['bezeichnung'];
$zeitsperre->vondatum = $datum_obj->formatDatum($_POST['vondatum']);
$zeitsperre->vonstunde = $_POST['vonstunde'];
$zeitsperre->bisdatum = $datum_obj->formatDatum($_POST['bisdatum']);
$zeitsperre->bisstunde = $_POST['bisstunde'];
$zeitsperre->erreichbarkeit_kurzbz = $_POST['erreichbarkeit'];
$zeitsperre->vertretung_uid = $_POST['vertretung_uid'];
$zeitsperre->updateamum = date('Y-m-d H:i:s');
$zeitsperre->updatevon = $uid;
if($zeitsperre->save())
{
echo "<h3>".$p->t('global/erfolgreichgespeichert')."</h3>";
if(URLAUB_TOOLS)
{
//Beim Anlegen von neuen Urlauben wird ein Mail an den Vorgesetzten versendet um diesen Freizugeben
$prsn = new person();
$vorgesetzter = $ma->getVorgesetzte($uid);
if($vorgesetzter)
if($zeitsperre->new && $zeitsperre->zeitsperretyp_kurzbz=='Urlaub')
{
$to='';
$fullName='';
foreach($ma->vorgesetzte as $vg)
{
if (!empty($to))
{
$to.=',';
$fullName.=',';
}
$to.=trim($vg.'@'.DOMAIN);
$name = $prsn->getFullNameFromBenutzer($vg);
$fullName.=$name;
}
//Beim Anlegen von neuen Urlauben wird ein Mail an den Vorgesetzten versendet um diesen Freizugeben
$prsn = new person();
$benutzer = new benutzer();
$benutzer->load($uid);
if($datum_obj->formatDatum($zeitsperre->vondatum, 'm')>=9)
$jahr = $datum_obj->formatDatum($zeitsperre->vondatum, 'Y')+1;
else
$jahr = $datum_obj->formatDatum($zeitsperre->vondatum, 'Y');
$message = "Dies ist eine automatische Mail! \n".
"$benutzer->nachname $benutzer->vorname hat einen neuen Urlaub eingetragen:\n".
"$zeitsperre->bezeichnung von ".$datum_obj->formatDatum($zeitsperre->vondatum,'d.m.Y')." bis ".$datum_obj->formatDatum($zeitsperre->bisdatum,'d.m.Y')."\n\n".
"Sie können diesen unter folgender Adresse freigeben:\n".
APP_ROOT."cis/private/profile/urlaubsfreigabe.php?uid=$uid&year=".$jahr;
$from='vilesci@'.DOMAIN;
$mail = new mail($to, $from, 'Freigabeansuchen', $message);
if($mail->send())
$vorgesetzter = $ma->getVorgesetzte($uid);
if($vorgesetzter)
{
echo "<br><b>".$p->t('urlaubstool/freigabemailWurdeVersandt',array($fullName))."</b>";
$to='';
$fullName='';
foreach($ma->vorgesetzte as $vg)
{
if (!empty($to))
{
$to.=',';
$fullName.=',';
}
$to.=trim($vg.'@'.DOMAIN);
$name = $prsn->getFullNameFromBenutzer($vg);
$fullName.=$name;
}
$benutzer = new benutzer();
$benutzer->load($uid);
if($datum_obj->formatDatum($zeitsperre->vondatum, 'm')>=9)
$jahr = $datum_obj->formatDatum($zeitsperre->vondatum, 'Y')+1;
else
$jahr = $datum_obj->formatDatum($zeitsperre->vondatum, 'Y');
$message = "Dies ist eine automatische Mail! \n".
"$benutzer->nachname $benutzer->vorname hat einen neuen Urlaub eingetragen:\n".
"$zeitsperre->bezeichnung von ".$datum_obj->formatDatum($zeitsperre->vondatum, 'd.m.Y')." bis ".$datum_obj->formatDatum($zeitsperre->bisdatum, 'd.m.Y')."\n\n".
"Sie können diesen unter folgender Adresse freigeben:\n".
APP_ROOT."cis/private/profile/urlaubsfreigabe.php?uid=$uid&year=".$jahr;
$from='vilesci@'.DOMAIN;
$mail = new mail($to, $from, 'Freigabeansuchen', $message);
if($mail->send())
{
echo "<br><b>".$p->t('urlaubstool/freigabemailWurdeVersandt', array($fullName))."</b>";
}
else
{
echo "<br><span class='error'>".$p->t('urlaubstool/fehlerBeimSendenAufgetreten', array($fullName))."</span>";
}
}
else
{
echo "<br><span class='error'>".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($fullName))."</span>";
echo "<br><span class='error'>".$p->t('urlaubstool/konnteKeinFreigabemailVersendetWerden')."</span>";
}
}
else
{
echo "<br><span class='error'>".$p->t('urlaubstool/konnteKeinFreigabemailVersendetWerden')."</span>";
}
}
}
else
echo "<span class='error'>".$p->t('global/fehleraufgetreten')."</span>";
}
else
echo "<span class='error'>".$p->t('global/fehleraufgetreten')."</span>";
echo "<span class='error'>$error_msg</span>";
}
//Krankenstand neu
else
echo "<span class='error'>$error_msg</span>";
{
if(!$error)
{
$zeitsperre->zeitsperretyp_kurzbz = $_POST['zeitsperretyp_kurzbz'];
$zeitsperre->mitarbeiter_uid = $uid;
$zeitsperre->bezeichnung = $_POST['bezeichnung'];
$zeitsperre->vondatum = $_POST['vonDatum'];
$zeitsperre->bisdatum = $datum_obj->formatDatum($_POST['bisDatum']);
$zeitsperre->erreichbarkeit_kurzbz = $_POST['erreichbarkeit'];
$zeitsperre->vertretung_uid = $_POST['vertretung'];
$zeitsperre->updateamum = date('Y-m-d H:i:s');
$zeitsperre->updatevon = $uid;
}
if($zeitsperre->save())
echo "<h3>".$p->t('global/erfolgreichgespeichert')."</h3>";
}
}
//loeschen eines bereits freigegebenen Urlaubs
@@ -605,20 +701,20 @@ if((isset($_GET['type']) && $_GET['type']=='delete_sperre' && isset($_GET['infor
$benutzer = new benutzer();
$benutzer->load($uid);
$message = $p->t('urlaubstool/diesIstEineAutomatischeMail')."\n".
$p->t('urlaubstool/xHatUrlaubGeloescht',array($benutzer->nachname,$benutzer->vorname)).":\n";
$p->t('urlaubstool/xHatUrlaubGeloescht', array($benutzer->nachname,$benutzer->vorname)).":\n";
$message.= $p->t('urlaubstool/von')." ".date("d.m.Y", strtotime($vondatum))." ".$p->t('urlaubstool/bis')." ".date("d.m.Y", strtotime($bisdatum))."\n";
$mail = new mail($to, 'vilesci@'.DOMAIN,$p->t('urlaubstool/freigegebenerUrlaubGeloescht'), $message);
$mail = new mail($to, 'vilesci@'.DOMAIN, $p->t('urlaubstool/freigegebenerUrlaubGeloescht'), $message);
if($mail->send())
{
echo "<br><b>".$p->t('urlaubstool/VorgesetzteInformiert',array($fullName))."</b>";
echo "<br><b>".$p->t('urlaubstool/VorgesetzteInformiert', array($fullName))."</b>";
}
else
{
echo "<br><span class='error'>".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($fullName))."!</span>";
echo "<br><span class='error'>".$p->t('urlaubstool/fehlerBeimSendenAufgetreten', array($fullName))."!</span>";
}
}
else
@@ -628,7 +724,7 @@ if((isset($_GET['type']) && $_GET['type']=='delete_sperre' && isset($_GET['infor
}
//loeschen einer zeitsperre
if(isset($_GET['type']) && $_GET['type']=='delete_sperre' && !isset($_GET['informSupervisor']) )
if(isset($_GET['type']) && $_GET['type']=='delete_sperre' && !isset($_GET['informSupervisor']))
{
$zeit = new zeitsperre();
$zeit->load($_GET['id']);
@@ -636,11 +732,11 @@ if(isset($_GET['type']) && $_GET['type']=='delete_sperre' && !isset($_GET['infor
//besitzer dieses datensatzes ist
if($zeit->mitarbeiter_uid==$uid)
{
if ($zeit->vondatum < $gesperrt_bis && in_array($zeit->zeitsperretyp_kurzbz,$typen_arr))
if ($zeit->vondatum < $gesperrt_bis && in_array($zeit->zeitsperretyp_kurzbz, $typen_arr))
{
echo "<span class='error'>".$p->t('zeitsperre/vorSperrdatum')."</span>";
}
else if($zeit->delete($_GET['id']))
elseif($zeit->delete($_GET['id']))
{
echo $p->t('global/erfolgreichgelöscht');
}
@@ -692,13 +788,13 @@ if(count($zeit->result)>0)
<td align='center'>".($row->freigabeamum!=''?'Ja':'')."</td>";
if ($row->zeitsperretyp_kurzbz == 'DienstV' || $row->zeitsperretyp_kurzbz == 'ZVerfueg')
$content_table .= '<td>&nbsp;</td>';
else if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr))
elseif ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz, $typen_arr))
$content_table .= '<td>&nbsp;</td>';
else
$content_table.="<td><a href='$PHP_SELF?type=edit&id=$row->zeitsperre_id' class='Item'>".$p->t('zeitsperre/edit')."</a></td>";
if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr))
if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz, $typen_arr))
$content_table .= '<td>&nbsp;</td>';
else if($row->vondatum>=date("Y-m-d",time()) && $row->zeitsperretyp_kurzbz=='Urlaub')
elseif($row->vondatum>=date("Y-m-d", time()) && $row->zeitsperretyp_kurzbz=='Urlaub')
{
$content_table.="\n<td><a href='$PHP_SELF?type=delete_sperre&id=$row->zeitsperre_id&informSupervisor=True' onclick='return conf_del()' class='Item'>".$p->t('zeitsperre/loeschen')."</a></td>";
}
@@ -717,6 +813,13 @@ else
$zeitsperre = new zeitsperre();
$action = "$PHP_SELF?type=new_sperre";
//standardvalues
$readonlyKS='';
$disabledKS='';
$styleKS='';
$classKS = ' class="datepicker_datum"';
//wenn ein datensatz editiert werden soll, dann diesen laden
if(isset($_GET['type']) && $_GET['type']=='edit')
{
@@ -734,6 +837,17 @@ if(isset($_GET['type']) && $_GET['type']=='edit')
{
die("<span class='error'>".$p->t('global/fehlerBeiDerParameteruebergabe')."</span>");
}
//manu
if(isset($_GET['editKS']) && $_GET['editKS'] == 1)
{
//alle Parameter außer bis als readonly definieren");
$readonlyKS=' readonly="readonly"'; //für Textfelder
$disabledKS=' disabled'; //für select-options
$styleKS=' style="border: 1px solid #999; color: #999;"'; //disabled-Optik
$classKS = '';
$action.='&editKS=1';
}
}
if($zeitsperre->freigabeamum!='' && $zeitsperre->zeitsperretyp_kurzbz=='Urlaub')
@@ -770,12 +884,12 @@ if($result = $db->db_query($qry))
if($zeitsperre->zeitsperretyp_kurzbz == $row->zeitsperretyp_kurzbz)
$content_form.= "<OPTION value='$row->zeitsperretyp_kurzbz' selected>$row->beschreibung</OPTION>";
else
$content_form.= "<OPTION value='$row->zeitsperretyp_kurzbz'$disabled>$row->beschreibung</OPTION>";
$content_form.= "<OPTION value='$row->zeitsperretyp_kurzbz'$disabled $disabledKS>$row->beschreibung</OPTION>";
}
}
$content_form.= '</SELECT></td></tr>';
$content_form.= '<tr><td>'.$p->t('global/bezeichnung').'</td><td colspan="2"><span id="dienstv_span"><input'.$style.' type="text" size="32" name="bezeichnung" maxlength="32" value="'.$zeitsperre->bezeichnung.'"'.$readonly.'></span></td></tr>';
$content_form.= '<tr><td>'.$p->t('global/von').'</td><td><input'.$style.' type="text" '.$class.' size="10" maxlength="10" name="vondatum" id="vondatum" value="'.($zeitsperre->vondatum!=''?date('d.m.Y',$datum_obj->mktime_fromdate($zeitsperre->vondatum)):(!isset($_POST['vondatum'])?date('d.m.Y'):$_POST['vondatum'])).'"'.$readonly.'> <a href="javascript:void(0);" onClick="setBisDatum()">&dArr;</a></td><td id="vonStd" style="text-align:right;"> ';
$content_form.= '<tr><td>'.$p->t('global/von').'</td><td><input'.$style. $styleKS . ' type="text" '.$class. $classKS .' size="10" maxlength="10" name="vondatum" id="vondatum" value="'.($zeitsperre->vondatum!=''?date('d.m.Y', $datum_obj->mktime_fromdate($zeitsperre->vondatum)):(!isset($_POST['vondatum'])?date('d.m.Y'):$_POST['vondatum'])).'"'.$readonly . $readonlyKS .'> <a href="javascript:void(0);" onClick="setBisDatum()">&dArr;</a></td><td id="vonStd" style="text-align:right;"> ';
//dropdown fuer vonstunde
$content_form.= $p->t('zeitsperre/stundeInklusive');
@@ -785,19 +899,19 @@ if($zeitsperre->vonstunde=='')
else
$content_form.= "<OPTION value=''$disabled>*</OPTION>\n";
for($i=0;$i<$num_rows_stunde;$i++)
for($i=0; $i<$num_rows_stunde; $i++)
{
$row = $db->db_fetch_object($result_stunde, $i);
if($zeitsperre->vonstunde==$row->stunde)
$content_form.= "<OPTION value='$row->stunde' selected>$row->stunde (".date('H:i',strtotime($row->beginn)).' - '.date('H:i',strtotime($row->ende))." Uhr)</OPTION>\n";
$content_form.= "<OPTION value='$row->stunde' selected>$row->stunde (".date('H:i', strtotime($row->beginn)).' - '.date('H:i', strtotime($row->ende))." Uhr)</OPTION>\n";
else
$content_form.= "<OPTION value='$row->stunde'$disabled>$row->stunde (".date('H:i',strtotime($row->beginn)).' - '.date('H:i',strtotime($row->ende))." Uhr)</OPTION>\n";
$content_form.= "<OPTION value='$row->stunde'$disabled>$row->stunde (".date('H:i', strtotime($row->beginn)).' - '.date('H:i', strtotime($row->ende))." Uhr)</OPTION>\n";
}
$content_form.= "</SELECT></td></tr>";
$content_form.= '<tr><td>'.$p->t('global/bis').'</td><td><input'.$style.' type="text" '.$class.' size="10" maxlength="10" name="bisdatum" id="bisdatum" value="'.($zeitsperre->bisdatum!=''?date('d.m.Y',$datum_obj->mktime_fromdate($zeitsperre->bisdatum)):(!isset($_POST['bisdatum'])?date('d.m.Y'):$_POST['bisdatum'])).'"'.$readonly.'></td><td id="bisStd" style="text-align:right;"> ';
$content_form.= '<tr><td>'.$p->t('global/bis').'</td><td><input'.$style.' type="text" '.$class.' size="10" maxlength="10" name="bisdatum" id="bisdatum" value="'.($zeitsperre->bisdatum!=''?date('d.m.Y', $datum_obj->mktime_fromdate($zeitsperre->bisdatum)):(!isset($_POST['bisdatum'])?date('d.m.Y'):$_POST['bisdatum'])).'"'.$readonly.'></td><td id="bisStd" style="text-align:right;"> ';
//dropdown fuer bisstunde
$content_form.= $p->t('zeitsperre/stundeInklusive');
$content_form.= " <SELECT name='bisstunde'$style>\n";
@@ -807,13 +921,13 @@ if($zeitsperre->bisstunde=='')
else
$content_form.= "<OPTION value=''$disabled>*</OPTION>\n";
for($i=0;$i<$num_rows_stunde;$i++)
for($i=0; $i<$num_rows_stunde; $i++)
{
$row = $db->db_fetch_object($result_stunde, $i);
if($zeitsperre->bisstunde==$row->stunde)
$content_form.= "<OPTION value='$row->stunde' selected>$row->stunde (".date('H:i',strtotime($row->beginn)).' - '.date('H:i',strtotime($row->ende))." Uhr)</OPTION>\n";
$content_form.= "<OPTION value='$row->stunde' selected>$row->stunde (".date('H:i', strtotime($row->beginn)).' - '.date('H:i', strtotime($row->ende))." Uhr)</OPTION>\n";
else
$content_form.= "<OPTION value='$row->stunde'$disabled>$row->stunde (".date('H:i',strtotime($row->beginn)).' - '.date('H:i',strtotime($row->ende))." Uhr)</OPTION>\n";
$content_form.= "<OPTION value='$row->stunde'$disabled>$row->stunde (".date('H:i', strtotime($row->beginn)).' - '.date('H:i', strtotime($row->ende))." Uhr)</OPTION>\n";
}
$content_form.= "</SELECT></td></tr>";
@@ -837,7 +951,7 @@ if($result = $db->db_query($qry))
$content_form.= '</SELECT></td></tr>';
$content_form.= "<tr><td>".$p->t('urlaubstool/erreichbarkeit')."</td><td><SELECT name='erreichbarkeit'>";
foreach ($erreichbarkeit_arr as $erreichbarkeit_key=>$erreichbarkeit_beschreibung)
foreach ($erreichbarkeit_arr as $erreichbarkeit_key => $erreichbarkeit_beschreibung)
{
if($zeitsperre->erreichbarkeit_kurzbz == $erreichbarkeit_key)
$content_form.= "<OPTION value='$erreichbarkeit_key' selected>$erreichbarkeit_beschreibung</OPTION>\n";
@@ -850,7 +964,10 @@ $content_form.= '</SELECT></td>';
$content_form.= '<td style="text-align:right;">';
if(isset($_GET['type']) && $_GET['type']=='edit')
{
$content_form.= "<input type='submit' name='submit_zeitsperre' value='".$p->t('global/speichern')."'>";
}
else
$content_form.= "<input type='submit' name='submit_zeitsperre' value='".$p->t('global/hinzufuegen')."'>";
+80 -30
View File
@@ -52,7 +52,7 @@ class zeitsperre extends basis_db
* Konstruktor
* @param $zeitsperre_id ID der zu ladenden Funktion
*/
public function __construct($zeitsperre_id=null)
public function __construct($zeitsperre_id = null)
{
parent::__construct();
@@ -62,7 +62,7 @@ class zeitsperre extends basis_db
public static function getBlockierendeZeitsperren()
{
return explode("','",trim(self::BLOCKIERENDE_ZEITSPERREN, '\''));
return explode("','", trim(self::BLOCKIERENDE_ZEITSPERREN, '\''));
}
/**
@@ -72,7 +72,7 @@ class zeitsperre extends basis_db
* aktuellen Geschaeftsjahres geholt (1.9.-31.8.)
* @return true wenn ok, false im Fehlerfall
*/
public function getzeitsperren($uid, $bisgrenze=true)
public function getzeitsperren($uid, $bisgrenze = true)
{
unset($this->result);
$this->result=array();
@@ -94,10 +94,8 @@ class zeitsperre extends basis_db
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new zeitsperre();
$obj->zeitsperre_id = $row->zeitsperre_id;
@@ -123,7 +121,6 @@ class zeitsperre extends basis_db
$obj->freigabevon = $row->freigabevon;
$this->result[] = $obj;
}
return true;
}
@@ -380,7 +377,7 @@ class zeitsperre extends basis_db
* @param $nurblockierend boolean default false
* @return true wenn ok, false im Fehlerfall
*/
public function getSperreByDate($user, $datum, $stunde=null, $nurblockierend=false)
public function getSperreByDate($user, $datum, $stunde = null, $nurblockierend = false)
{
$this->result = array();
$qry = "
@@ -392,16 +389,17 @@ class zeitsperre extends basis_db
vondatum<=".$this->db_add_param($datum)."
AND bisdatum>=".$this->db_add_param($datum);
if( $nurblockierend ) {
$qry .= " AND zeitsperretyp_kurzbz in (" . self::BLOCKIERENDE_ZEITSPERREN . ")";
}
if($nurblockierend)
{
$qry .= " AND zeitsperretyp_kurzbz in (" . self::BLOCKIERENDE_ZEITSPERREN . ")";
}
if(!is_null($stunde))
$qry.=" AND
((vondatum=".$this->db_add_param($datum)." AND vonstunde<=".$this->db_add_param($stunde).") OR vonstunde is null OR vondatum<>".$this->db_add_param($datum).") AND
((bisdatum=".$this->db_add_param($datum)." AND bisstunde>=".$this->db_add_param($stunde).") OR bisstunde is null OR bisdatum<>".$this->db_add_param($datum).")";
if(!is_null($stunde))
$qry.=" AND
((vondatum=".$this->db_add_param($datum)." AND vonstunde<=".$this->db_add_param($stunde).") OR vonstunde is null OR vondatum<>".$this->db_add_param($datum).") AND
((bisdatum=".$this->db_add_param($datum)." AND bisstunde>=".$this->db_add_param($stunde).") OR bisstunde is null OR bisdatum<>".$this->db_add_param($datum).")";
$qry .= "AND mitarbeiter_uid=".$this->db_add_param($user);
$qry .= "AND mitarbeiter_uid=".$this->db_add_param($user);
if($result = $this->db_query($qry))
{
@@ -427,7 +425,6 @@ class zeitsperre extends basis_db
$obj->freigabevon = $row->freigabevon;
$this->result[] = $obj;
}
return true;
}
@@ -446,7 +443,7 @@ class zeitsperre extends basis_db
* @param $bis
* @param $id Eintrag mit dieser ID wird nicht beruecksichtigt (zB bei Editieren von Eintraegen)
*/
function UrlaubEingetragen($uid, $von, $bis, $id=null)
public function UrlaubEingetragen($uid, $von, $bis, $id = null)
{
$qry = "SELECT
@@ -485,14 +482,14 @@ class zeitsperre extends basis_db
}
}
/**
/**
* Liefert die Zeitsperren eines Users für die Zeitaufzeichnung
*
* @param $uid
* @param $anz_tage
* @return array 'datum'->'zeitsperre_kurzbz'
*/
public function getZeitsperrenForZeitaufzeichnung($uid, $anz_tage=50)
public function getZeitsperrenForZeitaufzeichnung($uid, $anz_tage = 50)
{
unset($this->result);
$this->result=array();
@@ -501,22 +498,16 @@ class zeitsperre extends basis_db
from (SELECT generate_series(vondatum::timestamp, bisdatum::timestamp, '1 day') as datum, freigabevon, mitarbeiter_uid, zeitsperretyp_kurzbz FROM campus.tbl_zeitsperre where vonstunde is null and bisstunde is null) a
where a.mitarbeiter_uid = ".$this->db_add_param($uid)." and datum>(now() - interval '".$anz_tage." Days') and zeitsperretyp_kurzbz in (" . self::BLOCKIERENDE_ZEITSPERREN . ")";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
if ($row->zeitsperretyp_kurzbz == 'Urlaub' && $row->freigabevon == NULL)
if ($row->zeitsperretyp_kurzbz == 'Urlaub' && $row->freigabevon == null)
$result[$row->datum] = "Urlaubsantrag (Freigabe fehlt)";
else
$result[$row->datum] = $row->zeitsperretyp_kurzbz;
$this->result = $result;
}
return true;
}
@@ -551,13 +542,13 @@ class zeitsperre extends basis_db
public function getVonBis($uid, $von, $bis, $zeitsperretyp_kurzbz = null)
{
$qry = '
SELECT
SELECT
zeitsperre_id, zeitsperretyp_kurzbz, vondatum, vonstunde, bisdatum, bisstunde
FROM
FROM
campus.tbl_zeitsperre
LEFT JOIN campus.tbl_zeitsperretyp USING (zeitsperretyp_kurzbz)
WHERE
mitarbeiter_uid = '. $this->db_add_param($uid). '
WHERE
mitarbeiter_uid = '. $this->db_add_param($uid). '
AND (
(vondatum BETWEEN '.$this->db_add_param($von).' AND '.$this->db_add_param($bis).')
OR
@@ -592,5 +583,64 @@ class zeitsperre extends basis_db
return true;
}
}
/**
* Liefert zurück, ob es einen angrenzenden Krankenstand gibt
* Einschränkung nach Zeitsperrentyp möglich.
*
* @param $uid
* @param $day string Datum im Format YYYY-MM-DD
* @param null $zeitsperretyp_kurzbz
* @return bool
*/
public function getAngrenzendenKrankenstand($uid, $vonDay)
{
//gibt es einen Tag davor einen Krankenstand?
//echo $vonDay;
$DayBefore = strtotime("-1 day", strtotime($vonDay));
$woTag = date("w", $DayBefore);
//wenn vonTag Montag: gibt es einen Krankenstand bis Freitag davor?
if($woTag == 0)
{
$DayBefore = strtotime("-3 day", strtotime($vonDay));
}
$DateToCheck = date("Y-m-d", $DayBefore);
$qry = '
SELECT
zeitsperre_id, zeitsperretyp_kurzbz, vondatum, bisdatum
FROM
campus.tbl_zeitsperre
WHERE
mitarbeiter_uid = '. $this->db_add_param($uid). '
AND
zeitsperretyp_kurzbz = \'Krank\'
AND
bisdatum < '.$this->db_add_param($vonDay) . '
AND
bisdatum >= '.$this->db_add_param($DateToCheck) .';';
if (!$this->db_query($qry))
{
$this->errormsg=$this->db_last_error();
return false;
}
else
{
while($row = $this->db_fetch_object())
{
$obj = new stdClass();
$obj->zeitsperre_id = $row->zeitsperre_id;
$obj->zeitsperretyp_kurzbz = $row->zeitsperretyp_kurzbz;
$obj->vondatum = $row->vondatum;
$obj->bisdatum = $row->bisdatum;
$this->result[]= $obj;
}
return true;
}
}
}
?>