From ad415ad665b197019c9d1a8ca6b08b1807d4f422 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Mon, 25 Mar 2024 14:04:21 +0100 Subject: [PATCH] deactivateDienstverhaeltnis: only set user to inactive if no other dv is active --- .../VertragsbestandteilLib.php | 48 +++++++++++++------ 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/application/libraries/vertragsbestandteil/VertragsbestandteilLib.php b/application/libraries/vertragsbestandteil/VertragsbestandteilLib.php index 0bcede083..6abbd81f9 100644 --- a/application/libraries/vertragsbestandteil/VertragsbestandteilLib.php +++ b/application/libraries/vertragsbestandteil/VertragsbestandteilLib.php @@ -388,26 +388,46 @@ class VertragsbestandteilLib ); } + protected function hasOtherActiveDV(Dienstverhaeltnis $dv, $duedate) + { + $hasotheractivedv = false; + $result = $this->DienstverhaeltnisModel->getDVByPersonUID($dv->getMitarbeiter_uid(), null, $duedate); + $dvs = getData($result); + foreach ($dvs as $tmpdv) + { + if(intval($tmpdv->dienstverhaeltnis_id) !== intval($dv->getDienstverhaeltnis_id())) + { + $hasotheractivedv = true; + break; + } + } + return $hasotheractivedv; + } + /** * like endDienstverhaeltnis, but also sets aktiv flag to false */ public function deactivateDienstverhaeltnis(Dienstverhaeltnis $dv, $enddate, $deactivate) { - $result = $this->endDienstverhaeltnis($dv, $enddate); - if ( $result === true) - { - if (!$deactivate) return $result; - $result = $this->BenutzerModel->update( - array('uid' => $dv->getMitarbeiter_uid()), - array( - 'aktiv' => false, - 'updateaktivam' => date('Y-m-d'), - 'updateaktivvon' => $this->loggedInUser - ) - ); - } + $result = $this->endDienstverhaeltnis($dv, $enddate); + if ( $result === true) + { + if (!$deactivate) return $result; - return $result; + if(!$this->hasOtherActiveDV($dv, $enddate)) + { + $result = $this->BenutzerModel->update( + array('uid' => $dv->getMitarbeiter_uid()), + array( + 'aktiv' => false, + 'updateaktivam' => date('Y-m-d'), + 'updateaktivvon' => $this->loggedInUser + ) + ); + } + } + + return $result; } public function endDienstverhaeltnis(Dienstverhaeltnis $dv, $enddate)