diff --git a/include/zeitaufzeichnung_import.class.php b/include/zeitaufzeichnung_import.class.php index e8e6a8b15..fa11922aa 100644 --- a/include/zeitaufzeichnung_import.class.php +++ b/include/zeitaufzeichnung_import.class.php @@ -21,7 +21,7 @@ class zeitaufzeichnung_import { protected $project; protected $phase; protected $limitdate; - + protected $zeit; @@ -42,7 +42,7 @@ class zeitaufzeichnung_import { $this->zeit = new zeitaufzeichnung(); } - + /** * @return boolean @@ -64,7 +64,7 @@ class zeitaufzeichnung_import { public function hasInfos() { return !empty($this->infos); } - + /** * @return string */ @@ -96,15 +96,15 @@ class zeitaufzeichnung_import { $html .= '' . $msg . '
' . "\n"; } return $html; - } - + } + /** * @return string */ public function OutputToHTML() { return $this->InfosToHTML() . $this->WarningsToHTML() . $this->ErrorsToHTML(); - } - + } + /** * @param string $msg * @return void @@ -112,7 +112,7 @@ class zeitaufzeichnung_import { protected function addError($msg) { $this->errors[] = $msg; } - + /** * @param string $msg * @return void @@ -120,7 +120,7 @@ class zeitaufzeichnung_import { protected function addWarning($msg) { $this->warnings[] = $msg; } - + /** * @param string $msg * @return void @@ -134,7 +134,7 @@ class zeitaufzeichnung_import { * @param string $uid The user id * @param string $day "Y-m-d" formatted datestring * @return void - * + * * @throws Exception */ protected function checkZeitsperren($uid, $day) { @@ -150,25 +150,25 @@ class zeitaufzeichnung_import { throw new Exception($this->p->t("global/fehlerBeimSpeichernDerDaten") . ": " . $this->p->t("zeitaufzeichnung/zeitsperreVorhanden", [$zsdate, $zs->result[0]->zeitsperretyp_kurzbz])); } } - + /** * @param string $date datetimestring * @return void - * + * * @throws Exception */ protected function checkLimitdatum($date) { if ($this->datum->formatDatum($date, 'Y-m-d H:i:s') > $this->limitdate) { throw new Exception($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': Eingabe nicht möglich da (' . $date . ') zu weit in der Zukunft liegt.'); - } + } } - + /** * @param string $start datestring * @param string $end datestring * @param string $aktivitaet_kurzbz * @return void - * + * * @throws Exception */ protected function checkDienstreise($start, $end, $aktivitaet_kurzbz) { @@ -179,11 +179,11 @@ class zeitaufzeichnung_import { .': Eingabe nicht möglich, da keine Zeitaufzeichnung über mehrere Tage erlaubt ist (ausgenommen Dienstreisen).'); } } - + /** * @param string $end timestring * @return void - * + * * @throws Exception */ protected function checkTagesgenau($end) { @@ -193,13 +193,13 @@ class zeitaufzeichnung_import { .': Bitte Arbeitszeiten gemäß Arbeitsaufzeichnung Leitfaden tagesgenau abgrenzen: Nur Eingaben von 00:00 bis 23:59 erlaubt!'); } } - + /** * @param string $projekt_kurzbz * @param string $start datestring * @param string $end datestring * @return void - * + * * @throws Exception */ protected function checkProjectInterval($projekt_kurzbz, $start, $end) { @@ -207,13 +207,13 @@ class zeitaufzeichnung_import { throw new Exception($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt: (' . $start . ') (' . $end . ')'); } } - + /** * @param string $phase The Projektphase ID * @param string $start datestring * @param string $end datestring * @return void - * + * * @throws Exception */ protected function checkPhaseInterval($phase, $start, $end) { @@ -222,4 +222,84 @@ class zeitaufzeichnung_import { } } + /** + * @param string $start datetime + * @param string $end datetime + * @return void + */ + protected function processPause($start, $end) { + if (isset($_POST['genPause'])) { + $p_start = $this->datum->formatDatum($start, 'Y-m-d H:i:s'); + $p_end = $this->datum->formatDatum($end, 'Y-m-d H:i:s'); + $this->checkPauseInArbeitszeit($p_start, $p_end); + $this->checkPauseValid($p_start, $p_end); + $this->savePauseGeneric($start, $end); + } + } + + /** + * @param string $start "Y-m-d H:i:s" formatted datetime + * @param string $end "Y-m-d H:i:s" formatted datetime + * @return void + * + * @throws Exception + */ + protected function checkPauseInArbeitszeit($start, $end) { + if ($this->zeit->start > $start || $this->zeit->ende < $end) { + throw new Exception($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': Pause außerhalb der Arbeitszeit'); + } + } + + /** + * @param string $start "Y-m-d H:i:s" formatted datetime + * @param string $end "Y-m-d H:i:s" formatted datetime + * @return void + * + * @throws Exception + */ + protected function checkPauseValid($start, $end) { + if ($start > $end) { + throw new Exception($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': Fehlerhafte Pausenzeiten'); + } + } + + /** + * @param string $start datetime + * @param string $end datetime + * @return void + */ + protected function savePauseGeneric($start, $end) { + //Eintrag Arbeit bis zur Pause + $ende = $this->zeit->ende; + $this->zeit->ende = $this->datum->formatDatum($start, 'Y-m-d H:i:s'); + if (!$this->zeit->save()) { + $this->addError($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': ' . $this->zeit->errormsg); + } + //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 = $this->user; + $pause->insertvon = $this->user; + $pause->uid = $this->user; + $pause->aktivitaet_kurzbz = 'Pause'; + $pause->homeoffice = $this->zeit->homeoffice; + $pause->start = $this->datum->formatDatum($start, 'Y-m-d H:i:s'); + $pause->ende = $this->datum->formatDatum($end, 'Y-m-d H:i:s'); + $pause->beschreibung = ''; + if (!$pause->save()) { + $this->addError($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': ' . $pause->errormsg); + } + // Eintrag Arbeit ab der Pause + if ($this->zeit->new == false) { + $this->zeit->new = true; + $this->zeit->insertamum = date('Y-m-d H:i:s'); + $this->zeit->insertvon = $this->user; + } + + $this->zeit->start = $this->datum->formatDatum($end, 'Y-m-d H:i:s'); + $this->zeit->ende = $ende; + } + } diff --git a/include/zeitaufzeichnung_import_csv.class.php b/include/zeitaufzeichnung_import_csv.class.php index 27a240e45..c5473e884 100644 --- a/include/zeitaufzeichnung_import_csv.class.php +++ b/include/zeitaufzeichnung_import_csv.class.php @@ -176,6 +176,8 @@ class zeitaufzeichnung_import_csv extends zeitaufzeichnung_import { $this->mapLehreIntern($data); $this->prepareZeitaufzeichnung($data); $this->checkImporttage($data[self::STARTDT]); + $this->checkPauseInArbeitszeit($data[self::STARTDT], $data[self::ENDEDT]); + $this->checkPauseValid($data[self::STARTDT], $data[self::ENDEDT]); $this->saveZeit($data[self::STARTDT], $data[self::ENDEDT]); } catch (Exception $ex) { $this->addError($ex->getMessage(), true); @@ -383,6 +385,8 @@ class zeitaufzeichnung_import_csv extends zeitaufzeichnung_import { /** * @return void + * + * @throws Exception */ protected function savePause() { $pause = new zeitaufzeichnung(); @@ -399,7 +403,7 @@ class zeitaufzeichnung_import_csv extends zeitaufzeichnung_import { $pause->homeoffice = $this->zeit->homeoffice; if(!$pause->save()) { - $this->addError($this->p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg, true); + throw new Exception($this->p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg, true); } } @@ -407,6 +411,7 @@ class zeitaufzeichnung_import_csv extends zeitaufzeichnung_import { * @param string $start datetimestring * @param string $end datetimestring * @return void + */ protected function saveZeit($start, $end) { if ($start != $end) { @@ -418,6 +423,7 @@ class zeitaufzeichnung_import_csv extends zeitaufzeichnung_import { } else { $this->anzahl++; } + } /** diff --git a/include/zeitaufzeichnung_import_post.class.php b/include/zeitaufzeichnung_import_post.class.php index a6a59376e..6808ae9e7 100644 --- a/include/zeitaufzeichnung_import_post.class.php +++ b/include/zeitaufzeichnung_import_post.class.php @@ -126,86 +126,6 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import { $this->zeit->kunde_uid = $kunde_uid; } - /** - * @param string $start datetime - * @param string $end datetime - * @return void - */ - protected function processPause($start, $end) { - if (isset($_POST['genPause'])) { - $p_start = $this->datum->formatDatum($start, 'Y-m-d H:i:s'); - $p_end = $this->datum->formatDatum($end, 'Y-m-d H:i:s'); - $this->checkPauseInArbeitszeit($p_start, $p_end); - $this->checkPauseValid($p_start, $p_end); - $this->savePause($start, $end); - } - } - - /** - * @param string $start "Y-m-d H:i:s" formatted datetime - * @param string $end "Y-m-d H:i:s" formatted datetime - * @return void - * - * @throws Exception - */ - protected function checkPauseInArbeitszeit($start, $end) { - if ($this->zeit->start > $start || $this->zeit->ende < $end) { - throw new Exception($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': Pause außerhalb der Arbeitszeit'); - } - } - - /** - * @param string $start "Y-m-d H:i:s" formatted datetime - * @param string $end "Y-m-d H:i:s" formatted datetime - * @return void - * - * @throws Exception - */ - protected function checkPauseValid($start, $end) { - if ($start > $end) { - throw new Exception($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': Fehlerhafte Pausenzeiten'); - } - } - - /** - * @param string $start datetime - * @param string $end datetime - * @return void - */ - protected function savePause($start, $end) { - //Eintrag Arbeit bis zur Pause - $ende = $this->zeit->ende; - $this->zeit->ende = $this->datum->formatDatum($start, 'Y-m-d H:i:s'); - if (!$this->zeit->save()) { - $this->addError($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': ' . $this->zeit->errormsg); - } - //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 = $this->user; - $pause->insertvon = $this->user; - $pause->uid = $this->user; - $pause->aktivitaet_kurzbz = 'Pause'; - $pause->homeoffice = $this->zeit->homeoffice; - $pause->start = $this->datum->formatDatum($start, 'Y-m-d H:i:s'); - $pause->ende = $this->datum->formatDatum($end, 'Y-m-d H:i:s'); - $pause->beschreibung = ''; - if (!$pause->save()) { - $this->addError($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': ' . $pause->errormsg); - } - // Eintrag Arbeit ab der Pause - if ($this->zeit->new == false) { - $this->zeit->new = true; - $this->zeit->insertamum = date('Y-m-d H:i:s'); - $this->zeit->insertvon = $this->user; - } - - $this->zeit->start = $this->datum->formatDatum($end, 'Y-m-d H:i:s'); - $this->zeit->ende = $ende; - } - /** * @return void *