From fc47391392dd344294df207b0f5ca459370a98ea Mon Sep 17 00:00:00 2001 From: ma0068 Date: Mon, 7 Feb 2022 17:09:05 +0100 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20Fehlermeldung,=20Erg=C3=A4nzung=20Z?= =?UTF-8?q?eittypen=20Covid,=20Erg=C3=A4nzung=20Dropdown=20um=20OE-Auswahl?= =?UTF-8?q?=20Leitung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/profile/zeitsperre_resturlaub.php | 47 ++++++++++++-- cis/private/tools/zeitaufzeichnung.php | 55 +--------------- .../tools/zeitaufzeichnung_zeitsperren.php | 9 --- include/zeitaufzeichnung.class.php | 62 ++++++++++++++++--- locale/de-AT/zeitsperre.php | 3 + locale/en-US/zeitsperre.php | 3 + 6 files changed, 107 insertions(+), 72 deletions(-) diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index 6ceaff350..079d4a62f 100644 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -45,7 +45,7 @@ $uid = get_uid(); $PHP_SELF = $_SERVER['PHP_SELF']; -$typen_arr = array("Urlaub", "PflegeU", "ZA", "Krank", "DienstF", "DienstV"); +$typen_arr = array("Urlaub", "PflegeU", "ZA", "Krank", "DienstF", "DienstV", "CovidSB", "CovidKS"); if(isset($_GET['type'])) $type=$_GET['type']; @@ -69,8 +69,8 @@ $datum_obj = new datum(); $ma= new mitarbeiter(); // definiert bis zu welchem Datum die Eintragung nicht mehr möglich ist -$zasperre = new zeitaufzeichnung(); -if ($sperrdat = $zasperre->getEintragungGesperrtBisForUser($uid)) +$zaufzeichnung = new zeitaufzeichnung(); +if ($sperrdat = $zaufzeichnung->getEintragungGesperrtBisForUser($uid)) $gesperrt_bis = $sperrdat; else if (defined('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS') && CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS != '') $gesperrt_bis = CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS; @@ -138,7 +138,15 @@ $( document ).ready(function() rows: 4, }); + $("#vondatum").change( + function() + { + $(".error").text(""); + } + ) + }); + // set holidays function which is configured in beforeShowDay function setHoliDays(date) { for (i = 0; i < holiDays.length; i++) { @@ -302,7 +310,9 @@ function showHideStudeDropDown() || dd.options[dd.selectedIndex].value == 'Urlaub' || dd.options[dd.selectedIndex].value == 'Krank' || dd.options[dd.selectedIndex].value == 'DienstF' - || dd.options[dd.selectedIndex].value == 'DienstV') + || dd.options[dd.selectedIndex].value == 'DienstV' + || dd.options[dd.selectedIndex].value == 'CovidSB' + || dd.options[dd.selectedIndex].value == 'CovidKS') { document.getElementById('vonStd').style.visibility = 'hidden'; document.getElementById('bisStd').style.visibility = 'hidden'; @@ -350,6 +360,35 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_ $error_msg .= $p->t('zeitsperre/bisDatumUngueltig').' '; } + //Prüfen auf vorhandene Zeitaufzeichnung + if (isset($_POST['bisdatum']) && isset($_POST['vondatum']) && $zaufzeichnung->existsZeitaufzeichnung($uid, $_POST['vondatum'], $_POST['bisdatum'])) + { + $error = true; + $error_msg .= $p->t('zeitsperre/zeitaufzeichnungVorhanden'); + } + + //Prüfen auf vorhandene Zeitsperre + if (isset($_POST['bisdatum']) && isset($_POST['vondatum'])) + { + $von = $_POST['vondatum']; + $von2 = new DateTime($von); + $von2 = $von2->format('Y-m-d'); + $zeitsperre = new zeitsperre(); + + if ($zeitsperre->getSperreByDate($uid, $von2, null)) + { + foreach ($zeitsperre->result as $z) + { + if ($z->zeitsperretyp_kurzbz) + { + $typ = $z->zeitsperretyp_kurzbz; + } + $error = true; + $error_msg .= $p->t('zeitsperre/zeitsperreEingetragen', [$von, $typ]); + } + } + } + //von - bis-datum pruefen von darf nicht groesser als bis sein // 09.02.2009 simane $vondatum=0; diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 1a830ea99..a61d43acd 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -299,6 +299,7 @@ echo ' { var uid = $("#uidpass").val(); var Datum = $(this).val(); + $("#triggerPhasenReset").text(""); Tag=Datum.substring(0,2); Monat=Datum.substring(3,5); Jahr=Datum.substring(6,10); @@ -802,17 +803,14 @@ echo ' output = "Für den Tag " + json[i].day + " ist bereits eine Zeitsperre vom Typ " + json[i].typ + " eingetragen!"; alert("'.$p->t("zeitaufzeichnung/zeitsperreVorhanden1").'"); $("#buttonSave").attr("disabled","disabled"); - $("#triggerPhasenReset").hide(); } } else { $("#buttonSave").prop("disabled",false); - output = ""; + output = ""; } $("#outputZeitsperren").html(output); - - } }); } @@ -1494,7 +1492,7 @@ if ($projekt->getProjekteMitarbeiter($user, true)) echo ''.$p->t("zeitaufzeichnung/organisationseinheiten").' '; else echo ''; - //echo ''; - - // $test = '2022-02-01'; - // echo "hello " . $test . "
"; - // - // $zs = new zeitsperre(); - // $sperreVorhanden = false; - // $stunde = '09'; - // $zs->getSperreByDate($user, $test, $stunde); - - //var_dump($zs->result); - - // foreach ($zs->result as $z) - // { - // if ($z->zeitsperretyp_kurzbz) - // { - // $sperreVorhanden = true; - // echo "zeitsperre vorhanden: ". $z->zeitsperretyp_kurzbz . " am: " . $test; - // } - // else { - // echo "zeitsperre nicht vorhanden"; - // } - // } - //Testausgaben - // echo ' - // - //   - // - // - // TESTAUSGABEN - // - // - // - // - // '; - // - // echo ' - // - //   - // - // - // TESTAUSGABEN - // - // - // - // '; - diff --git a/cis/private/tools/zeitaufzeichnung_zeitsperren.php b/cis/private/tools/zeitaufzeichnung_zeitsperren.php index eb52bb84e..b073303e4 100644 --- a/cis/private/tools/zeitaufzeichnung_zeitsperren.php +++ b/cis/private/tools/zeitaufzeichnung_zeitsperren.php @@ -28,14 +28,6 @@ require_once('../../../include/globals.inc.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); require_once('../../../include/zeitsperre.class.php'); -//require_once('../../../include/datum.class.php'); -// require_once('../../../include/Excel/excel.php'); -//require_once('../../../include/benutzer.class.php'); - -// require_once('../../../include/mitarbeiter.class.php'); -//require_once('../../../include/zeitaufzeichnung.class.php'); -// require_once('../../../include/projekt.class.php'); - $sprache = getSprache(); @@ -82,6 +74,5 @@ if ((isset($_GET['uid'])) && (isset($_GET['day']))) $result_obj[] = $item; } } - //var_dump($result_obj); echo json_encode($result_obj); } diff --git a/include/zeitaufzeichnung.class.php b/include/zeitaufzeichnung.class.php index 48e189c32..f3e8ffff3 100644 --- a/include/zeitaufzeichnung.class.php +++ b/include/zeitaufzeichnung.class.php @@ -812,15 +812,63 @@ or not exists $qry = "select max(datum) from addon.tbl_casetime_timesheet where ".$where." and abgeschicktamum is not null"; - if($result = $this->db_query($qry)) - { + if ($result = $this->db_query($qry)) + { $datum = $this->db_fetch_object($result); return $datum->max; - } - else - { - return false; - } + } + else + { + return false; + } + } + else + { + return false; + } + } + + /** + * Prüft, ob es für einen bestimmten User für einen bestimmten Tag eine Zeitaufzeichnung gibt + * @param string $user Uid des zu prüfenden Users. + * @param date $vonDay Startdatum des zu prüfenden Zeitraumes im Format d.m.Y. + * @param date $bisDay Enddatum des zu prüfenden Zeitraumes im Format d.m.Y. + * @return boolean true, wenn vorhanden, sonst false + */ + public function existsZeitaufzeichnung($user, $vonDay, $bisDay) + { + $datum = date($vonDay); + $year = substr($datum, 6, 4); + $month = substr($datum, 3, 2); + $day = substr($datum, 0, 2); + + $datumbisDay = date($bisDay); + $yearbisDay = substr($datumbisDay, 6, 4); + $monthbisDay = substr($datumbisDay, 3, 2); + $daybisDay = substr($datumbisDay, 0, 2); + + $bisDay = date("Y-m-d", (mktime(0, 0, 0, $monthbisDay, $daybisDay + 1, $yearbisDay))); + $datum = date("Y-m-d", (mktime(0, 0, 0, $month, $day, $year))); + + $qry = " + SELECT * + FROM campus.tbl_zeitaufzeichnung + WHERE uid = ". $this->db_add_param($user). " + AND start >= ". $this->db_add_param($datum). " + AND ende < ". $this->db_add_param($bisDay). "; + "; + + if ($this->db_query($qry)) + { + $num_rows = $this->db_num_rows(); + if ($num_rows >= 1) + { + return true; + } + else + { + return false; + } } else { diff --git a/locale/de-AT/zeitsperre.php b/locale/de-AT/zeitsperre.php index 06476e33d..463c092cf 100644 --- a/locale/de-AT/zeitsperre.php +++ b/locale/de-AT/zeitsperre.php @@ -44,4 +44,7 @@ $this->phrasen['zeitsperre/legendeDurchwahl']='(123)...Durchwahl'; $this->phrasen['zeitsperre/vertretungNichtKorrekt']='Die angegebene Vertretung kann nicht gefunden werden. Bitte prüfen Sie die Vertretung und versuchen Sie es erneut.'; $this->phrasen['zeitsperre/vorSperrdatum']='Datum liegt vor dem Sperrdatum der Zeitliste'; $this->phrasen['zeitsperre/abwesend']='Abwesend'; +$this->phrasen['zeitsperre/zeitaufzeichnungVorhanden']='Es existiert mindestens eine Zeitaufzeichnung im angegebenen Zeitraum.'; +$this->phrasen['zeitsperre/zeitsperreEingetragen']='Für den %s existiert bereits eine Zeitsperre vom Typ %s. + Bitte löschen Sie diese bevor Sie eine neue für diesen Tag eintragen!'; ?> diff --git a/locale/en-US/zeitsperre.php b/locale/en-US/zeitsperre.php index 43909358e..44123529f 100644 --- a/locale/en-US/zeitsperre.php +++ b/locale/en-US/zeitsperre.php @@ -44,4 +44,7 @@ $this->phrasen['zeitsperre/legendeDurchwahl']='(123)...Extension'; $this->phrasen['zeitsperre/vertretungNichtKorrekt']='The selected substitute is invalid. Please check the substitute an try again.'; $this->phrasen['zeitsperre/vorSperrdatum']='Date is before last open timesheet date'; $this->phrasen['zeitsperre/abwesend']='absent'; +$this->phrasen['zeitsperre/zeitaufzeichnungVorhanden']='It exists at least one time record in the specified period.'; +$this->phrasen['zeitsperre/zeitsperreEingetragen']='There already exists an unavailability on the %s of the type %s. + Please delete the existing before creating a new one for this date!'; ?>