mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-16 22:42:16 +00:00
Überlappungen nicht mehr möglich
feature Pause automatisch stempeln
This commit is contained in:
@@ -126,6 +126,12 @@ $von = $von_datum.' '.$von_uhrzeit;
|
||||
$bis_datum = (isset($_REQUEST['bis_datum'])?$_REQUEST['bis_datum']:date('d.m.Y'));
|
||||
$bis_uhrzeit = (isset($_POST['bis_uhrzeit'])?$_POST['bis_uhrzeit']:date('H:i',mktime(date('H'), date('i')+10)));
|
||||
$bis = $bis_datum.' '.$bis_uhrzeit;
|
||||
|
||||
$pause_von = (isset($_POST['pause_von'])?$_POST['pause_von']:date('H:i'));
|
||||
$pause_bis = (isset($_POST['pause_bis'])?$_POST['pause_bis']:date('H:i'));
|
||||
$von_pause = $von_datum.' '.$pause_von;
|
||||
$bis_pause = $bis_datum.' '.$pause_bis;
|
||||
|
||||
$beschreibung = (isset($_POST['beschreibung'])?$_POST['beschreibung']:'');
|
||||
$service_id = (isset($_POST['service_id'])?$_POST['service_id']:'');
|
||||
$kunde_uid = (isset($_POST['kunde_uid'])?$_POST['kunde_uid']:'');
|
||||
@@ -233,6 +239,8 @@ echo '
|
||||
return row[0] + " " + row[1] + " " + row[2];
|
||||
}
|
||||
|
||||
checkPausenblock();
|
||||
|
||||
$("#kunde_name").autocomplete({
|
||||
source: "zeitaufzeichnung_autocomplete.php?autocomplete=kunde",
|
||||
minLength:2,
|
||||
@@ -539,6 +547,86 @@ echo '
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
// Pausenblock
|
||||
|
||||
function checkPausenblock()
|
||||
{
|
||||
var sel = $("#aktivitaet").val();
|
||||
var activities = ["Admin", "Lehre", "FuE", "Operativ", "Betrieb", "Design"];
|
||||
if (activities.includes(sel))
|
||||
showPausenblock();
|
||||
else
|
||||
hidePausenblock();
|
||||
}
|
||||
|
||||
function hidePausenblock()
|
||||
{
|
||||
$("#pause_von").val("");
|
||||
$("#pause_bis").val("");
|
||||
$("#genPause").attr("checked", false);
|
||||
$("#pausenblock").hide();
|
||||
}
|
||||
function showPausenblock()
|
||||
{
|
||||
$("#pausenblock").show();
|
||||
}
|
||||
|
||||
function checkPausenzeit()
|
||||
{
|
||||
if ($("#genPause").is(":checked"))
|
||||
{
|
||||
setPausenzeit();
|
||||
}
|
||||
else
|
||||
{
|
||||
clearPausenzeit();
|
||||
}
|
||||
}
|
||||
|
||||
function setPausenzeit()
|
||||
{
|
||||
var von_stunden, bis_stunden, von_minuten, bis_minuten, Uhrzeit2, Uhrzeit1, spanne;
|
||||
Uhrzeit1 = $("#von_uhrzeit").val();
|
||||
von_stunden = Uhrzeit1.substring(0,2);
|
||||
von_minuten = Uhrzeit1.substring(3,5);
|
||||
Uhrzeit2 = $("#bis_uhrzeit").val();
|
||||
bis_stunden = Uhrzeit2.substring(0,2);
|
||||
bis_minuten = Uhrzeit2.substring(3,5);
|
||||
spanne = (bis_stunden*60+parseInt(bis_minuten))-(von_stunden*60+parseInt(von_minuten));
|
||||
|
||||
if (spanne <= 40)
|
||||
{
|
||||
alert("'.$p->t("zeitaufzeichnung/zeitraumZuKurz").'");
|
||||
$("#genPause").attr("checked", false);
|
||||
}
|
||||
else
|
||||
{
|
||||
var pausenstart = Math.floor((spanne/2-15)+(von_stunden*60+parseInt(von_minuten)));
|
||||
var pausenstart_stunde = Math.floor(pausenstart/60);
|
||||
var pausenstart_minute = pausenstart - pausenstart_stunde*60;
|
||||
pausenstart_stunde = (pausenstart_stunde < 10 ? "0"+pausenstart_stunde : pausenstart_stunde);
|
||||
pausenstart_minute = (pausenstart_minute < 10 ? "0"+pausenstart_minute : pausenstart_minute);
|
||||
var beginn_pause = pausenstart_stunde + ":" + pausenstart_minute;
|
||||
|
||||
var pausenende = pausenstart + parseInt(30);
|
||||
var pausenende_stunde = Math.floor(pausenende/60);
|
||||
var pausenende_minute = pausenende - pausenende_stunde*60;
|
||||
pausenende_stunde = (pausenende_stunde < 10 ? "0"+pausenende_stunde : pausenende_stunde);
|
||||
pausenende_minute = (pausenende_minute < 10 ? "0"+pausenende_minute : pausenende_minute);
|
||||
|
||||
var ende_pause = pausenende_stunde + ":" + pausenende_minute;
|
||||
|
||||
$("#pause_von").val(beginn_pause);
|
||||
$("#pause_bis").val(ende_pause);
|
||||
}
|
||||
}
|
||||
|
||||
function clearPausenzeit()
|
||||
{
|
||||
$("#pause_von").val("");
|
||||
$("#pause_bis").val("");
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
@@ -753,12 +841,78 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
||||
$zeit->projektphase_id = $projektphase_id;
|
||||
$zeit->service_id = $service_id;
|
||||
$zeit->kunde_uid = $kunde_uid;
|
||||
|
||||
if(!$zeit->save())
|
||||
$saveerror = 0;
|
||||
if (isset($_POST['genPause']) && (isset($_POST['save']) || isset($_POST['edit'])))
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'</b></span>';
|
||||
|
||||
$p_start = $datum->formatDatum($von_pause, $format='Y-m-d H:i:s');
|
||||
$p_end = $datum->formatDatum($bis_pause, $format='Y-m-d H:i:s');
|
||||
|
||||
// checken ob Pause innerhalb der Arbeitszeit ist
|
||||
if ($zeit->start > $p_start || $zeit->ende < $p_end)
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Pause außerhalb der Arbeitszeit</b></span><br>';
|
||||
$saveerror = 1;
|
||||
|
||||
}
|
||||
elseif ($p_start > $p_end)
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Fehlerhafte Pausenzeiten</b></span><br>';
|
||||
$saveerror = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Eintrag Arbeit bis zur Pause
|
||||
$zeit->ende = $datum->formatDatum($von_pause, $format='Y-m-d H:i:s');
|
||||
if(!$zeit->save())
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'</b></span><br>';
|
||||
$saveerror = 1;
|
||||
}
|
||||
//Eintrag für die Pause
|
||||
$pause = new zeitaufzeichnung();
|
||||
$pause->new = true;
|
||||
$pause->insertamum = date('Y-m-d H:i:s');
|
||||
$pause->updateamum = date('Y-m-d H:i:s');
|
||||
$pause->updatevon = $user;
|
||||
$pause->insertvon = $user;
|
||||
$pause->uid = $user;
|
||||
$pause->aktivitaet_kurzbz = 'Pause';
|
||||
$pause->start = $datum->formatDatum($von_pause, $format='Y-m-d H:i:s');
|
||||
$pause->ende = $datum->formatDatum($bis_pause, $format='Y-m-d H:i:s');
|
||||
$pause->beschreibung = '';
|
||||
if(!$pause->save())
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'</b></span><br>';
|
||||
$saveerror = 1;
|
||||
}
|
||||
// Eintrag Arbeit ab der Pause
|
||||
if ($zeit->new == false)
|
||||
{
|
||||
$zeit->new = true;
|
||||
$zeit->insertamum = date('Y-m-d H:i:s');
|
||||
$zeit->insertvon = $user;
|
||||
}
|
||||
|
||||
$zeit->start = $datum->formatDatum($bis_pause, $format='Y-m-d H:i:s');
|
||||
$zeit->ende = $datum->formatDatum($bis, $format='Y-m-d H:i:s');
|
||||
if(!$zeit->save())
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'</b></span><br>';
|
||||
$saveerror = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
elseif (!isset($_POST['genPause']))
|
||||
{
|
||||
if(!$zeit->save())
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'</b></span>';
|
||||
$saveerror = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ($saveerror == 0)
|
||||
{
|
||||
echo '<span style="color:green"><b>'.$p->t("global/datenWurdenGespeichert").'</b></span>';
|
||||
|
||||
@@ -780,6 +934,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Datensatz loeschen
|
||||
if(isset($_GET['type']) && $_GET['type']=='delete')
|
||||
{
|
||||
@@ -956,7 +1111,7 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
// $qry = "SELECT * FROM fue.tbl_aktivitaet where sort != 5 or sort is null ORDER by sort,beschreibung";
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
echo '<SELECT name="aktivitaet" id="aktivitaet">';
|
||||
echo '<SELECT name="aktivitaet" id="aktivitaet" onChange="checkPausenblock()">';
|
||||
if ($za_simple == 0)
|
||||
echo '<OPTION value="">-- '.$p->t('zeitaufzeichnung/keineAuswahl').' --</OPTION>';
|
||||
//else
|
||||
@@ -1173,6 +1328,16 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
<input onchange="checkZeiten()" type="text" class="timepicker" id="bis_uhrzeit" name="bis_uhrzeit" value="'.$db->convert_html_chars($datum->formatDatum($bis, $format='H:i')).'" size="4">
|
||||
</td>
|
||||
<tr>';
|
||||
echo '
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td colspan="3">
|
||||
<span id="pausenblock">
|
||||
<input type="checkbox" name="genPause" id="genPause" onChange="checkPausenzeit()"> '.$p->t("zeitaufzeichnung/pauseEinfuegen").' <input type="text" name="pause_von" class="timepicker" size="4" id="pause_von"> - <input type="text" name="pause_bis" class="timepicker" size="4" id="pause_bis">
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
';
|
||||
//Beschreibung
|
||||
echo '<tr><td>'.$p->t("global/beschreibung").'</td><td colspan="3"><textarea style="font-size: 13px" name="beschreibung" cols="60" maxlength="256">'.$db->convert_html_chars($beschreibung).'</textarea></td></tr>';
|
||||
echo '<tr><td></td><td></td><td></td><td align="right">';
|
||||
@@ -1327,11 +1492,13 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
$elsumme = $h2*3600+$m2*60;
|
||||
if ($tagessaldo > 18000 && $tagessaldo < 19800 && $pflichtpause==false && $elsumme == 0)
|
||||
{
|
||||
$pausesumme = $tagessaldo-18000;
|
||||
//$pausesumme = $tagessaldo-18000;
|
||||
$pausesumme = $pausesumme;
|
||||
}
|
||||
else if ($tagessaldo>18000 && $pflichtpause==false && $elsumme == 0)
|
||||
{
|
||||
$pausesumme = $pausesumme+1800;
|
||||
//$pausesumme = $pausesumme+1800;
|
||||
$pausesumme = $pausesumme;
|
||||
}
|
||||
if ($elsumme > 0){
|
||||
$pausesumme = $pausesumme + $elsumme;
|
||||
@@ -1339,6 +1506,13 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
}
|
||||
|
||||
$tagessaldo = $tagessaldo-$pausesumme;
|
||||
// fehlende Pausen berechnen
|
||||
$pausefehlt_str = '';
|
||||
if ($tagessaldo > 19800 && $pausesumme < 1800)
|
||||
$pausefehlt_str = '<span style="color:red; font-weight:bold;">-- Pause fehlt oder zu kurz --</span>';
|
||||
elseif ($tagessaldo > 18000 && $tagessaldo < 19800 && $pausesumme < $tagessaldo - 18000)
|
||||
$pausefehlt_str = '<span style="color:red; font-weight:bold;">-- Pause fehlt oder zu kurz --</span>';
|
||||
|
||||
$tagessaldo = date('H:i', ($tagessaldo));
|
||||
$colspan = ($za_simple)?6:8;
|
||||
echo '<tr id="tag_row_'.$datum->formatDatum($tag,'d_m_Y').'"><td '.$style.' colspan="'.$colspan.'")>';
|
||||
@@ -1350,7 +1524,7 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
$langindex = 1;
|
||||
else
|
||||
$langindex = 2;
|
||||
echo '<b>'.$tagbez[$langindex][$datum->formatDatum($tag,'N')].' '.$datum->formatDatum($tag,'d.m.Y').'</b> <span id="tag_'.$datum->formatDatum($tag,'d_m_Y').'">'.$zeitsperre_text.'</span>';
|
||||
echo '<b>'.$tagbez[$langindex][$datum->formatDatum($tag,'N')].' '.$datum->formatDatum($tag,'d.m.Y').'</b> <span id="tag_'.$datum->formatDatum($tag,'d_m_Y').'">'.$zeitsperre_text.'</span>'.$pausefehlt_str;
|
||||
if ($ersumme != '00:00')
|
||||
$erstr = ' (+ '.$ersumme.' ER)';
|
||||
else
|
||||
@@ -1359,8 +1533,8 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
}
|
||||
echo '</td>
|
||||
<td align="right" colspan="2" '.$style.'>
|
||||
<b>'.$p->t("zeitaufzeichnung/arbeitszeit").': '.$datum->formatDatum($tagesbeginn, $format='H:i').'-'.$datum->formatDatum($tagesende, $format='H:i').' '.$p->t("eventkalender/uhr").'</b><br>LehreExtern /
|
||||
'.$p->t("zeitaufzeichnung/pause").' '.($pflichtpause==false?$p->t("zeitaufzeichnung/inklusivePflichtpause"):'').':
|
||||
<b>'.$p->t("zeitaufzeichnung/arbeitszeit").': '.$datum->formatDatum($tagesbeginn, $format='H:i').'-'.$datum->formatDatum($tagesende, $format='H:i').' '.$p->t("eventkalender/uhr").'</b><br>
|
||||
'.$p->t("zeitaufzeichnung/pause").':
|
||||
</td>
|
||||
<td '.$style.' align="right"><b>'.$tagessaldo.$erstr.'</b><br>'.date('H:i', ($pausesumme-3600)).'</td>
|
||||
<td '.$style.' colspan="3" align="right">';
|
||||
|
||||
@@ -172,17 +172,28 @@ class zeitaufzeichnung extends basis_db
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($this->aktivitaet_kurzbz != 'Ersatzruhe')
|
||||
if ($this->aktivitaet_kurzbz != 'Ersatzruhe' && $this->aktivitaet_kurzbz != 'DienstreiseMT')
|
||||
{
|
||||
$check_qry = "SELECT count(*) from campus.tbl_zeitaufzeichnung where uid=".$this->db_add_param($this->uid)." and aktivitaet_kurzbz = 'Ersatzruhe' and (start < ".$this->db_add_param($this->ende)." and ende > ".$this->db_add_param($this->start).")";
|
||||
$check_qry = "SELECT count(*) from campus.tbl_zeitaufzeichnung where uid=".$this->db_add_param($this->uid)." and aktivitaet_kurzbz != 'DienstreiseMT' and (start < ".$this->db_add_param($this->ende)." and ende > ".$this->db_add_param($this->start).")";
|
||||
if($this->db_query($check_qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
{
|
||||
if ($row->count)
|
||||
if ($this->new)
|
||||
{
|
||||
$this->errormsg = 'Eintrag darf nicht mit Ersatzruhe Überlappen!';
|
||||
return false;
|
||||
if ($row->count)
|
||||
{
|
||||
$this->errormsg = 'Einträge dürfen nicht Überlappen!';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($row->count > 1)
|
||||
{
|
||||
$this->errormsg = 'Einträge dürfen nicht Überlappen!';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,3 +60,5 @@ $this->phrasen['zeitaufzeichnung/keineprojekte']='keine Projekte vorhanden';
|
||||
$this->phrasen['zeitaufzeichnung/summe']='Summe:';
|
||||
$this->phrasen['zeitaufzeichnung/dienstreise']='Dienstreise';
|
||||
$this->phrasen['zeitaufzeichnung/projektphase']='AP';
|
||||
$this->phrasen['zeitaufzeichnung/pauseEinfuegen']='Pause automatisch einfügen';
|
||||
$this->phrasen['zeitaufzeichnung/zeitraumZuKurz']='Zeitraum zu kurz für automatische Pause';
|
||||
|
||||
@@ -60,3 +60,5 @@ $this->phrasen['zeitaufzeichnung/keineprojekte']='no projects exist';
|
||||
$this->phrasen['zeitaufzeichnung/summe']='Sum:';
|
||||
$this->phrasen['zeitaufzeichnung/dienstreise']='Business Trip';
|
||||
$this->phrasen['zeitaufzeichnung/projektphase']='WP';
|
||||
$this->phrasen['zeitaufzeichnung/pauseEinfuegen']='insert break automatically';
|
||||
$this->phrasen['zeitaufzeichnung/zeitraumZuKurz']='Timeslot too short for automatic break.';
|
||||
|
||||
Reference in New Issue
Block a user