Compare commits

...

1 Commits

Author SHA1 Message Date
ma0068 c4683f71db ZeiterfassungCSVValidierungBeiNegativerPause 2022-11-08 14:49:05 +01:00
3 changed files with 108 additions and 102 deletions
+101 -21
View File
@@ -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 .= '<span style="color:green;"><b>' . $msg . '</b></span><br>' . "\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;
}
}
@@ -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++;
}
}
/**
@@ -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
*