mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
CSV Import: pausen außerhalb der Arbeitszeit werden gleich nach import wieder
gelöscht
This commit is contained in:
@@ -415,76 +415,89 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
||||
{
|
||||
if (mb_detect_encoding(fgets($handle), 'UTF-8', true))
|
||||
{
|
||||
set_time_limit(0);
|
||||
$anzahl = 0;
|
||||
$importtage_array = array();
|
||||
$ende_vorher = date('Y-m-d H:i:s');
|
||||
while(($data = fgetcsv($handle, 1000, ';', '"')) !== FALSE)
|
||||
{
|
||||
if($data[0] == $user)
|
||||
set_time_limit(0);
|
||||
$anzahl = 0;
|
||||
$importtage_array = array();
|
||||
$ende_vorher = date('Y-m-d H:i:s');
|
||||
while(($data = fgetcsv($handle, 1000, ';', '"')) !== FALSE)
|
||||
{
|
||||
if ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum)
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')</b></span><br>';
|
||||
else
|
||||
{
|
||||
$zeit->new = true;
|
||||
$zeit->insertamum = date('Y-m-d H:i:s');
|
||||
$zeit->updateamum = date('Y-m-d H:i:s');
|
||||
$zeit->updatevon = $user;
|
||||
$zeit->insertvon = $user;
|
||||
$zeit->uid = $data[0];
|
||||
$zeit->aktivitaet_kurzbz = $data[1];
|
||||
$zeit->start = $datum->formatDatum($data[2], $format='Y-m-d H:i:s');
|
||||
$zeit->ende = $datum->formatDatum($data[3], $format='Y-m-d H:i:s');
|
||||
$zeit->beschreibung = $data[4];
|
||||
$tag = $datum->formatDatum($data[2], $format='Y-m-d');
|
||||
|
||||
|
||||
if(!in_array($tag, $importtage_array))
|
||||
{
|
||||
$importtage_array[] = $tag;
|
||||
$zeit->deleteEntriesForUser($user, $tag);
|
||||
$tag_aktuell = $tag;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($ende_vorher < $zeit->start)
|
||||
if($data[0] == $user)
|
||||
{
|
||||
if ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum)
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')</b></span><br>';
|
||||
else
|
||||
{
|
||||
$zeit->new = true;
|
||||
$zeit->insertamum = date('Y-m-d H:i:s');
|
||||
$zeit->updateamum = date('Y-m-d H:i:s');
|
||||
$zeit->updatevon = $user;
|
||||
$zeit->insertvon = $user;
|
||||
$zeit->uid = $data[0];
|
||||
$zeit->aktivitaet_kurzbz = $data[1];
|
||||
$zeit->start = $datum->formatDatum($data[2], $format='Y-m-d H:i:s');
|
||||
$zeit->ende = $datum->formatDatum($data[3], $format='Y-m-d H:i:s');
|
||||
$zeit->beschreibung = $data[4];
|
||||
$tag = $datum->formatDatum($data[2], $format='Y-m-d');
|
||||
|
||||
|
||||
|
||||
if(!in_array($tag, $importtage_array))
|
||||
{
|
||||
$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 = $ende_vorher;
|
||||
$pause->ende = $zeit->start;
|
||||
$zeit->beschreibung = '';
|
||||
if(!$pause->save())
|
||||
$importtage_array[] = $tag;
|
||||
$zeit->deleteEntriesForUser($user, $tag);
|
||||
$tag_aktuell = $tag;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($ende_vorher < $zeit->start)
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'</b></span>';
|
||||
$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 = $ende_vorher;
|
||||
$pause->ende = $zeit->start;
|
||||
$zeit->beschreibung = '';
|
||||
if(!$pause->save())
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'</b></span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($data[2] != $data[3])
|
||||
{
|
||||
if(!$zeit->save())
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'</b>('.$zeit->start.')</span>';
|
||||
|
||||
$ende_vorher = $zeit->ende;
|
||||
if($data[2] != $data[3])
|
||||
{
|
||||
if ($data[1] == 'LehreExtern')
|
||||
{
|
||||
$zeit->start = date('Y-m-d H:i:s', strtotime('+2 seconds', strtotime($data[2])));
|
||||
$zeit->ende = date('Y-m-d H:i:s', strtotime('-2 seconds', strtotime($data[3])));
|
||||
}
|
||||
if(!$zeit->save())
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'</b>('.$zeit->start.')</span>';
|
||||
}
|
||||
else
|
||||
$anzahl++;
|
||||
}
|
||||
else
|
||||
$anzahl++;
|
||||
$anzahl++;
|
||||
|
||||
}
|
||||
else
|
||||
$anzahl++;
|
||||
$ende_vorher = $zeit->ende;
|
||||
}
|
||||
}
|
||||
}
|
||||
if($anzahl>0)
|
||||
echo '<span style="color:green"><b>'.$p->t("global/datenWurdenGespeichert").' ('.$anzahl.')</b></span>';
|
||||
if($anzahl>0)
|
||||
{
|
||||
echo '<span style="color:green"><b>'.$p->t("global/datenWurdenGespeichert").' ('.$anzahl.')</b></span>';
|
||||
foreach ($importtage_array as $ptag)
|
||||
{
|
||||
$zeit->cleanPausenForUser($user, $ptag);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
echo '<span style="color:red"><b>Datei konnte nicht importiert werden. Encoding ist nicht UTF-8!</b></span>';
|
||||
|
||||
@@ -439,6 +439,40 @@ class zeitaufzeichnung extends basis_db
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Löscht Pauseneinträge eines Users für einen Tag, die außerhalb der Arbeitszeit liegen
|
||||
* Löscht Pauseneinträge an Tagen ohne Arbeitszeit
|
||||
* @param string $user
|
||||
* @param string $tag Y-m-d
|
||||
*/
|
||||
public function cleanPausenForUser($user, $tag)
|
||||
{
|
||||
$where = "uid=".$this->db_add_param($user);
|
||||
|
||||
$qry = "
|
||||
delete from campus.tbl_zeitaufzeichnung where aktivitaet_kurzbz = 'Pause' and start::date = '$tag' and $where and
|
||||
(
|
||||
start::time >=
|
||||
(SELECT max(ende::time) as endzeit from campus.tbl_zeitaufzeichnung where $where and start::date = '$tag' AND (aktivitaet_kurzbz != 'LehreExtern' or aktivitaet_kurzbz is null ) and aktivitaet_kurzbz != 'Pause')
|
||||
or
|
||||
ende::time<=
|
||||
(SELECT min(start::time) as startzeit from campus.tbl_zeitaufzeichnung where $where and start::date = '$tag' AND (aktivitaet_kurzbz != 'LehreExtern' or aktivitaet_kurzbz is null ) and aktivitaet_kurzbz != 'Pause')
|
||||
or not exists
|
||||
(select 1 from campus.tbl_zeitaufzeichnung where aktivitaet_kurzbz != 'LehreExtern' and aktivitaet_kurzbz != 'Pause' and start::date = '$tag' and $where )
|
||||
)
|
||||
";
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle ZA-Einträge Typ LehreIntern und LehreExtern eines Users
|
||||
* für das laufende Studienjahr und gibt die Summen in einem Array zurück
|
||||
@@ -470,7 +504,7 @@ class zeitaufzeichnung extends basis_db
|
||||
$where = "mitarbeiter_uid=".$this->db_add_param($user);
|
||||
$where_sem = "l.studiensemester_kurzbz=".$this->db_add_param($sem);
|
||||
$qry = "
|
||||
select sum(m.semesterstunden) from lehre.tbl_lehreinheitmitarbeiter m, lehre.tbl_lehreinheit l where $where and $where_sem and l.lehreinheit_id = m.lehreinheit_id
|
||||
select sum(m.semesterstunden) from lehre.tbl_lehreinheitmitarbeiter m, lehre.tbl_lehreinheit l where $where and $where_sem and l.lehreinheit_id = m.lehreinheit_id and m.stundensatz*m.semesterstunden > 0
|
||||
";
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
|
||||
Reference in New Issue
Block a user