From 6a403a7fc35ea2fcf830be44f1b3ab240fc2dc69 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Mon, 11 Apr 2022 08:40:57 +0200 Subject: [PATCH 1/2] =?UTF-8?q?Logik=20Generierung=20MA-Nummer=20im=20Fas?= =?UTF-8?q?=20ge=C3=A4ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/mitarbeiter.class.php | 34 +++++++++++++++++++ include/tw/generateuid.inc.php | 14 ++++++++ system/dbupdate_3.3.php | 31 +++++++++++++++++ vilesci/personen/import/mitarbeiterimport.php | 14 ++++---- 4 files changed, 87 insertions(+), 6 deletions(-) diff --git a/include/mitarbeiter.class.php b/include/mitarbeiter.class.php index 5d63c9989..00c131f35 100644 --- a/include/mitarbeiter.class.php +++ b/include/mitarbeiter.class.php @@ -1655,5 +1655,39 @@ class mitarbeiter extends benutzer return false; } + + /** + * Generiert mitarbeiter_uid anhand sequence tbl_mitarbeiter_personalnummer_seq + * @return string $mitarbeiter_uid im Formate maXXXX (zum Bsp. ma0207) + */ + public function getMitarbeiterMaNr() + { + $qry = "SELECT last_value FROM tbl_mitarbeiter_personalnummer_seq"; + + if ($result = $this->db_query($qry)) + { + while ($row = $this->db_fetch_object()) + { + if ($row->last_value != '') + { + $maNr = $row->last_value; + $maNr = $maNr - 9999; + $maNr = 'ma'. $maNr; + return $maNr; + } + else + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage!'; + $return = false; + } + } + } + else + { + $this->errormsg = "Fehler bei der Abfrage aufgetreten"; + return false; + } + } + } ?> diff --git a/include/tw/generateuid.inc.php b/include/tw/generateuid.inc.php index 78e9eae69..9205633cc 100644 --- a/include/tw/generateuid.inc.php +++ b/include/tw/generateuid.inc.php @@ -23,6 +23,7 @@ * Funktionen zum Generieren der UIDs */ require_once(dirname(__FILE__).'/../addon.class.php'); +require_once(dirname(__FILE__).'/../mitarbeiter.class.php'); // die aktiven Addons werden durchsucht, ob eines davon eine eigene UID Generierung vorsieht // falls ja, wird die Version des Addons genommen, ansonsten die Default Generierung @@ -109,5 +110,18 @@ if(!$generateuid_addon_found) return $uid; } } + + /** + * Neue Logik Generierung Mitarbeiter UID + * fortlaufende ma_number a la ma0200; + * @return string $maNr maNr im Format maXXXX + **/ + function generateMaNumberUID() + { + $mitarbeiter = new mitarbeiter(); + $maNr = $mitarbeiter->getMitarbeiterMaNr(); + + return $maNr; + } } ?> diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index fa073bcba..fae594851 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -5979,6 +5979,37 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webservic } } +//ALTER Sequence tbl_mitarbeiter_personalnummer_seq +if ($result = @$db->db_query("SELECT last_value FROM tbl_mitarbeiter_personalnummer_seq")) +{ + $json = $db->db_getResultJSON($result); + $last = json_decode($json); + $last = $last[0]->{'last_value'}; + + if ($last <= 10000) + { + $count = @$db->db_query(" + SELECT personalnummer FROM public.tbl_mitarbeiter + order by personalnummer DESC + Limit 1 + "); + + $count = $db->db_getResultJSON($count); + $count = json_decode($count); + $count = $count[0]->{'personalnummer'} + 1; + $qry = 'ALTER SEQUENCE tbl_mitarbeiter_personalnummer_seq restart with '; + $qry .= $count; + if (!$db->db_query($qry)) + { + echo ' tbl_mitarbeiter_personalnummer_seq '.$db->db_last_error().'
'; + } + else + { + echo '
tbl_mitarbeiter_personalnummer_seq auf neuen Startwert '. $count . ' geändert.'; + } + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; diff --git a/vilesci/personen/import/mitarbeiterimport.php b/vilesci/personen/import/mitarbeiterimport.php index 14081986c..c589f8669 100644 --- a/vilesci/personen/import/mitarbeiterimport.php +++ b/vilesci/personen/import/mitarbeiterimport.php @@ -16,8 +16,9 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * Authors: Christian Paminger , - * Andreas Oesterreicher and - * Rudolf Hangl . + * Andreas Oesterreicher , + * Rudolf Hangl , + * Manuela Thamer . */ require_once('../../../config/vilesci.config.inc.php'); @@ -621,7 +622,7 @@ if(isset($_POST['save'])) $vorname_clean = mb_strtolower(convertProblemChars($vorname)); $uid=''; - $uid = generateMitarbeiterUID($vorname_clean, $nachname_clean, $lektor, $fixangestellt); + $uid = generateMaNumberUID(); if ($wunschUid != '') { @@ -872,10 +873,10 @@ if(isset($_POST['save'])) } } - if(!$error) + if (!$error) { $db->db_query('COMMIT'); - die("MitarbeiterIn $vorname $vornamen $nachname wurde erfolgreich angelegt

Neue Person anlegen
"); + die("MitarbeiterIn $vorname $vornamen $nachname ($uid) wurde erfolgreich angelegt

Neue Person anlegen
"); } else { @@ -925,7 +926,8 @@ echo 'Wunsch-UID'; if ($showagain) echo '
'; -echo ' (optional, max. 32) +echo ' (optional, max. 32) '; echo 'Anrede'; echo 'Titel(Pre)'; From c8b23dbe124cccb938c6b812c903fcfbbf5421fc Mon Sep 17 00:00:00 2001 From: ma0068 Date: Tue, 12 Apr 2022 12:15:17 +0200 Subject: [PATCH 2/2] Generierung UID in Addon FHTW ausgelagert --- include/mitarbeiter.class.php | 16 +++++----- include/tw/generateuid.inc.php | 17 ++--------- system/dbupdate_3.3.php | 30 ------------------- vilesci/personen/import/mitarbeiterimport.php | 10 ++++++- 4 files changed, 18 insertions(+), 55 deletions(-) diff --git a/include/mitarbeiter.class.php b/include/mitarbeiter.class.php index 00c131f35..ac67c1ce5 100644 --- a/include/mitarbeiter.class.php +++ b/include/mitarbeiter.class.php @@ -1657,23 +1657,21 @@ class mitarbeiter extends benutzer /** - * Generiert mitarbeiter_uid anhand sequence tbl_mitarbeiter_personalnummer_seq - * @return string $mitarbeiter_uid im Formate maXXXX (zum Bsp. ma0207) + * Generiert nächste freie Personalnummer anhand der sequence tbl_mitarbeiter_personalnummer_seq + * @return string $personalnummer */ - public function getMitarbeiterMaNr() + public function getNextPersonalnummer() { - $qry = "SELECT last_value FROM tbl_mitarbeiter_personalnummer_seq"; + $qry = "SELECT nextval('tbl_mitarbeiter_personalnummer_seq') "; if ($result = $this->db_query($qry)) { while ($row = $this->db_fetch_object()) { - if ($row->last_value != '') + if ($row->nextval != '') { - $maNr = $row->last_value; - $maNr = $maNr - 9999; - $maNr = 'ma'. $maNr; - return $maNr; + $personalnummer = $row->nextval; + return $personalnummer; } else { diff --git a/include/tw/generateuid.inc.php b/include/tw/generateuid.inc.php index 9205633cc..8c0a1ab80 100644 --- a/include/tw/generateuid.inc.php +++ b/include/tw/generateuid.inc.php @@ -23,7 +23,6 @@ * Funktionen zum Generieren der UIDs */ require_once(dirname(__FILE__).'/../addon.class.php'); -require_once(dirname(__FILE__).'/../mitarbeiter.class.php'); // die aktiven Addons werden durchsucht, ob eines davon eine eigene UID Generierung vorsieht // falls ja, wird die Version des Addons genommen, ansonsten die Default Generierung @@ -74,7 +73,7 @@ if(!$generateuid_addon_found) // **** // * Gerneriert die Mitarbeiter UID // **** - function generateMitarbeiterUID($vorname, $nachname, $lektor, $fixangestellt=true) + function generateMitarbeiterUID($vorname, $nachname, $lektor, $fixangestellt=true, $personalnummer=null) { $bn = new benutzer(); $reserviert = array(); @@ -110,18 +109,6 @@ if(!$generateuid_addon_found) return $uid; } } - - /** - * Neue Logik Generierung Mitarbeiter UID - * fortlaufende ma_number a la ma0200; - * @return string $maNr maNr im Format maXXXX - **/ - function generateMaNumberUID() - { - $mitarbeiter = new mitarbeiter(); - $maNr = $mitarbeiter->getMitarbeiterMaNr(); - - return $maNr; - } } + ?> diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index fae594851..0f28e544a 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -5979,36 +5979,6 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webservic } } -//ALTER Sequence tbl_mitarbeiter_personalnummer_seq -if ($result = @$db->db_query("SELECT last_value FROM tbl_mitarbeiter_personalnummer_seq")) -{ - $json = $db->db_getResultJSON($result); - $last = json_decode($json); - $last = $last[0]->{'last_value'}; - - if ($last <= 10000) - { - $count = @$db->db_query(" - SELECT personalnummer FROM public.tbl_mitarbeiter - order by personalnummer DESC - Limit 1 - "); - - $count = $db->db_getResultJSON($count); - $count = json_decode($count); - $count = $count[0]->{'personalnummer'} + 1; - $qry = 'ALTER SEQUENCE tbl_mitarbeiter_personalnummer_seq restart with '; - $qry .= $count; - if (!$db->db_query($qry)) - { - echo ' tbl_mitarbeiter_personalnummer_seq '.$db->db_last_error().'
'; - } - else - { - echo '
tbl_mitarbeiter_personalnummer_seq auf neuen Startwert '. $count . ' geändert.'; - } - } -} // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; diff --git a/vilesci/personen/import/mitarbeiterimport.php b/vilesci/personen/import/mitarbeiterimport.php index c589f8669..91d78d385 100644 --- a/vilesci/personen/import/mitarbeiterimport.php +++ b/vilesci/personen/import/mitarbeiterimport.php @@ -621,8 +621,16 @@ if(isset($_POST['save'])) $nachname_clean = mb_strtolower(convertProblemChars($nachname)); $vorname_clean = mb_strtolower(convertProblemChars($vorname)); $uid=''; + $mitarbeiter = new mitarbeiter(); - $uid = generateMaNumberUID(); + if ($_POST['personalnummer']) + { + $personalnummer = $_POST['personalnummer']; + } + else + $personalnummer = $mitarbeiter->getNextPersonalnummer(); + + $uid = generateMitarbeiterUID($vorname_clean, $nachname_clean, $lektor, $fixangestellt, $personalnummer); if ($wunschUid != '') {