From 5ca09b8ddc0b37adeaa8decb1d271368822e245d Mon Sep 17 00:00:00 2001 From: Gerald Raab Date: Mon, 17 Sep 2018 16:54:26 +0200 Subject: [PATCH] Sperrdatum bei Zeitsperren, Erweiterte Zeiteintragungsfeatures wenn Projekte zugeordnet sind --- cis/private/profile/zeitsperre_resturlaub.php | 37 +++++++++++++++++-- cis/private/tools/zeitaufzeichnung.php | 2 +- include/zeitaufzeichnung.class.php | 4 +- locale/de-AT/zeitsperre.php | 1 + locale/en-US/zeitsperre.php | 1 + 5 files changed, 39 insertions(+), 6 deletions(-) mode change 100644 => 100755 locale/de-AT/zeitsperre.php mode change 100644 => 100755 locale/en-US/zeitsperre.php diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php index 5ccffac99..b7654310e 100755 --- a/cis/private/profile/zeitsperre_resturlaub.php +++ b/cis/private/profile/zeitsperre_resturlaub.php @@ -33,6 +33,7 @@ require_once('../../../include/mitarbeiter.class.php'); require_once('../../../include/mail.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); require_once('../../../include/phrasen.class.php'); +require_once('../../../include/zeitaufzeichnung.class.php'); $sprache = getSprache(); $p = new phrasen($sprache); @@ -44,6 +45,8 @@ $uid = get_uid(); $PHP_SELF = $_SERVER['PHP_SELF']; +$typen_arr = array("Urlaub", "PflegeU", "ZA", "Krank", "DienstF", "DienstV"); + if(isset($_GET['type'])) $type=$_GET['type']; @@ -65,6 +68,17 @@ if(isset($_GET['uid'])) $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)) + $gesperrt_bis = $sperrdat; +else if (defined('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS') && CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS != '') + $gesperrt_bis = CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS; +else + $gesperrt_bis = '2015-08-31'; + +//echo $gesperrt_bis; + //Stundentabelleholen if(! $result_stunde=$db->db_query("SELECT * FROM lehre.tbl_stunde ORDER BY stunde")) die($db->db_last_error()); @@ -268,6 +282,8 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_ { $error=false; $error_msg=''; + + //von-datum pruefen if(isset($_POST['vondatum']) && !$datum_obj->checkDatum($_POST['vondatum'])) { @@ -290,6 +306,7 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_ if (@checkdate($date[1], $date[0], $date[2])) { $vondatum=$date[2].$date[1].$date[0]; + $vondatum_iso = $date[2].'-'.$date[1].'-'.$date[0]; } else { @@ -327,7 +344,12 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_ $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(); @@ -448,7 +470,11 @@ if(isset($_GET['type']) && $_GET['type']=='delete_sperre') //besitzer dieses datensatzes ist if($zeit->mitarbeiter_uid==$uid) { - if($zeit->delete($_GET['id'])) + if ($zeit->vondatum < $gesperrt_bis && in_array($zeit->zeitsperretyp_kurzbz,$typen_arr)) + { + echo "".$p->t('zeitsperre/vorSperrdatum').""; + } + else if($zeit->delete($_GET['id'])) { echo $p->t('global/erfolgreichgelöscht'); } @@ -473,6 +499,7 @@ if($result = $db->db_query($qry)) $erreichbarkeit_arr[$row->erreichbarkeit_kurzbz]=$row->beschreibung; } } + //liste aller zeitsperren ausgeben if(count($zeit->result)>0) { @@ -499,9 +526,13 @@ if(count($zeit->result)>0) ".($row->freigabeamum!=''?'Ja':'').""; if ($row->zeitsperretyp_kurzbz == 'DienstV') $content_table .= ' '; + else if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr)) + $content_table .= ' '; else $content_table.="".$p->t('zeitsperre/edit').""; - if($row->freigabeamum=='' || $row->zeitsperretyp_kurzbz!='Urlaub') + if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr)) + $content_table .= ' '; + else if($row->freigabeamum=='' || $row->zeitsperretyp_kurzbz!='Urlaub') { $content_table.="\n".$p->t('zeitsperre/loeschen').""; } diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 1f7788270..59715d4fa 100755 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -987,7 +987,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) '; - if ($za_simple == 0) + if ($za_simple == 0 || $anzprojekte > 0) { echo ' diff --git a/include/zeitaufzeichnung.class.php b/include/zeitaufzeichnung.class.php index a713db0f0..6a58a23cf 100755 --- a/include/zeitaufzeichnung.class.php +++ b/include/zeitaufzeichnung.class.php @@ -754,7 +754,7 @@ or not exists //check if addon casetime is installed $qrytable = " SELECT EXISTS( - SELECT * + SELECT 1 FROM information_schema.tables WHERE table_schema = 'addon' AND @@ -763,7 +763,7 @@ or not exists "; $res = $this->db_query($qrytable); - if ($this->db_fetch_row($res)[0]===true) + if ($this->db_fetch_row($res)[0] == 't') { //check if sent timesheets for the UID exist $where = "uid=".$this->db_add_param($user); diff --git a/locale/de-AT/zeitsperre.php b/locale/de-AT/zeitsperre.php old mode 100644 new mode 100755 index 48727cc1b..4801f10ec --- a/locale/de-AT/zeitsperre.php +++ b/locale/de-AT/zeitsperre.php @@ -42,4 +42,5 @@ $this->phrasen['zeitsperre/legendeErreichbarkeit']='E...Erreichbarkeit (n=nicht $this->phrasen['zeitsperre/legendeVertretung']='V...Vertretung'; $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'; ?> diff --git a/locale/en-US/zeitsperre.php b/locale/en-US/zeitsperre.php old mode 100644 new mode 100755 index 024865d0e..d6adad2ac --- a/locale/en-US/zeitsperre.php +++ b/locale/en-US/zeitsperre.php @@ -42,4 +42,5 @@ $this->phrasen['zeitsperre/legendeErreichbarkeit']='A...Availability (n=not avai $this->phrasen['zeitsperre/legendeVertretung']='S...Substitute'; $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'; ?>