CSV Import: pausen außerhalb der Arbeitszeit werden gleich nach import wieder

gelöscht
This commit is contained in:
Gerald Raab
2015-11-11 14:14:32 +01:00
parent bad13f27f9
commit deb2fe69c9
2 changed files with 108 additions and 61 deletions
+14 -1
View File
@@ -440,6 +440,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
$tag = $datum->formatDatum($data[2], $format='Y-m-d');
if(!in_array($tag, $importtage_array))
{
$importtage_array[] = $tag;
@@ -468,8 +469,14 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
}
}
$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>';
@@ -479,12 +486,18 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
}
else
$anzahl++;
$ende_vorher = $zeit->ende;
}
}
}
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>';
+35 -1
View File
@@ -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))