From 01032c63d3a04c40f32ff182d37269d5e38dd74f Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 4 Nov 2020 15:29:36 +0100 Subject: [PATCH 1/4] Update der Person in ALMA Tabelle, wenn Personen zusammengelegt werden MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Falls nur die zu löschende Person in ALMA vorhanden ist, mit der zu behaltenden Person ersetzen. Falls bereits die zu ersetzende UND zu löschende Person in ALMA vorhanden sind, muss erst direkt im ALMA Bibliothekssystem und in der tbl_alma gelöscht werden. Signed-off-by: Cris --- vilesci/stammdaten/personen_wartung.php | 47 +++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php index c143a1390..6f4e25cc4 100644 --- a/vilesci/stammdaten/personen_wartung.php +++ b/vilesci/stammdaten/personen_wartung.php @@ -135,6 +135,52 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p } else { + // Wenn Person in ALMA Bibliothek vorkommt, ggf. die Person dort übernehmen + $alma_has_personToKeep = false; + $alma_has_personToDelete = false; + $alma_update_obj = new StdClass(); + $alma_query_upd = ''; + + $alma_query = " + SELECT * + FROM sync.tbl_alma + WHERE ( + person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR + person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . " + )"; + + + if ($result = $db->db_query($alma_query)) + { + while ($row = $db->db_fetch_object($result)) + { + if ($row->person_id == $personToKeep) + { + $alma_has_personToKeep = true; + } + if ($row->person_id == $personToDelete) + { + $alma_has_personToDelete = true; + $alma_update_obj = $row; + } + } + } + + // Falls nur die zu löschende Person in ALMA vorhanden ist, mit der zu behaltenden Person ersetzen + if ($alma_has_personToDelete && !$alma_has_personToKeep) + { + $alma_query_upd = " + UPDATE sync.tbl_alma + SET person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " + WHERE alma_match_id = " . $alma_update_obj->alma_match_id . " + AND person_id = " . $alma_update_obj->person_id . ";"; + } + // Falls bereits doppelte Einträge in ALMA vorhanden sind, manuell lösen + elseif ($alma_has_personToDelete && $alma_has_personToKeep) + { + die('Es sind bereits beide Personen in ALMA vorhanden. Bitte zuerst direkt im ALMA Bibliotheksystem und in der tbl_alma lösen.'); + } + $personToDelete_obj = new person(); if ($personToDelete_obj->load($personToDelete)) { @@ -346,6 +392,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p $sql_query_upd1 .= "UPDATE system.tbl_person_lock SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE wawi.tbl_betriebsmittelperson SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE wawi.tbl_konto SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; + $sql_query_upd1 .= $alma_query_upd; $sql_query_upd1 .= "DELETE FROM public.tbl_person WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; From adb96ed33f0b7ca4f843d027f8e1a64e1fa98ad1 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 16 Nov 2020 15:11:08 +0100 Subject: [PATCH 2/4] Automatisch Personen in tbl_sap_students zusammenlegen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wenn doppelt angelegte Personen zusammengeführt werden, wird nun ggf auch in der Tabelle tbl_sap_students die hinterlegte Person upgedatet. Ausnahme: wenn in der tbl_sap_students die Person auch schon doppelt angelegt ist. In diesem Fall gibt es ein exit mit der Aufforderung, dies direkt (manuell) in der tbl_sap_students zu ändern. Signed-off-by: cris-technikum --- vilesci/stammdaten/personen_wartung.php | 48 +++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php index 6f4e25cc4..9cc0bba15 100644 --- a/vilesci/stammdaten/personen_wartung.php +++ b/vilesci/stammdaten/personen_wartung.php @@ -181,6 +181,53 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p die('Es sind bereits beide Personen in ALMA vorhanden. Bitte zuerst direkt im ALMA Bibliotheksystem und in der tbl_alma lösen.'); } + + // Wenn Person in SAP students vorkommt, ggf. die Person dort übernehmen + $sap_students_has_personToKeep = false; + $sap_students_has_personToDelete = false; + $sap_students_update_obj = new StdClass(); + $sap_students_query_upd = ''; + + $sap_students_query = " + SELECT * + FROM sync.tbl_sap_students + WHERE ( + person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR + person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . " + )"; + + if ($result = $db->db_query($sap_students_query)) + { + while ($row = $db->db_fetch_object($result)) + { + if ($row->person_id == $personToKeep) + { + $sap_students_has_personToKeep = true; + } + if ($row->person_id == $personToDelete) + { + $sap_students_has_personToDelete = true; + $sap_students_update_obj = $row; + } + } + } + + // Wenn die zu löschende Person in SAP students eingetragen ist, dann mit der zu behaltenden Person überschreiben + if ($sap_students_has_personToDelete && !$sap_students_has_personToKeep) + { + $sap_students_query_upd = " + UPDATE sync.tbl_sap_students + SET person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " + WHERE sap_user_id = " . $db->db_add_param($sap_students_update_obj->sap_user_id, FHC_STRING) . " + AND person_id = " . $sap_students_update_obj->person_id . ";"; + } + // Wenn doppelte Personeneinträge in SAP students vorhanden sind (zu löschende UND zu behaltende Person), + // dann manuell lösen + elseif ($sap_students_has_personToDelete && $sap_students_has_personToKeep) + { + die('Es sind bereits beide Personen in SAP vorhanden. Bitte zuerst direkt in der tbl_sap_students lösen.'); + } + $personToDelete_obj = new person(); if ($personToDelete_obj->load($personToDelete)) { @@ -393,6 +440,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p $sql_query_upd1 .= "UPDATE wawi.tbl_betriebsmittelperson SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE wawi.tbl_konto SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= $alma_query_upd; + $sql_query_upd1 .= $sap_students_query_upd; $sql_query_upd1 .= "DELETE FROM public.tbl_person WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; From 4cbbd662b6f34722845bed3c48453911419b6610 Mon Sep 17 00:00:00 2001 From: Cris Date: Mon, 16 Nov 2020 17:48:24 +0100 Subject: [PATCH 3/4] Automatisch Personen in tbl_sap_mitarbeiter zusammenlegen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wenn doppelt angelegte Personen zusammengeführt werden, wird nun ggf auch in der Tabelle tbl_sap_mitarbeiter die hinterlegte Person upgedatet. Ausnahme: wenn in der tbl_sap_mitarbeiter die Person auch schon doppelt angelegt ist. In diesem Fall gibt es ein exit mit der Aufforderung, dies direkt (manuell) in der tbl_sap_mitarbeiter zu ändern. Signed-off-by: cris-technikum --- vilesci/stammdaten/personen_wartung.php | 145 ++++++++++++++++++------ 1 file changed, 110 insertions(+), 35 deletions(-) diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php index 9cc0bba15..fdf3c0531 100644 --- a/vilesci/stammdaten/personen_wartung.php +++ b/vilesci/stammdaten/personen_wartung.php @@ -182,51 +182,117 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p } - // Wenn Person in SAP students vorkommt, ggf. die Person dort übernehmen - $sap_students_has_personToKeep = false; - $sap_students_has_personToDelete = false; - $sap_students_update_obj = new StdClass(); - $sap_students_query_upd = ''; + // Prüfen, ob Person Mitarbeiter oder Student ist + $uid_toDelete = new Benutzer(); + $uid_toDelete->getBenutzerFromPerson($personToDelete); + $uid_toDelete = $uid_toDelete->result[0]->uid; - $sap_students_query = " + $mitarbeiter = new Mitarbeiter(); + $is_Mitarbeiter = $mitarbeiter->load($uid_toDelete); + + // Wenn Person Mitarbeiter ist, gegebenenfalls die SAP Mitarbeiter Tabelle updaten + if($is_Mitarbeiter) + { + $uid_toKeep = new Benutzer(); + $uid_toKeep->getBenutzerFromPerson($personToKeep); + $uid_toKeep = $uid_toKeep->result[0]->uid; + + // Wenn Person in SAP students vorkommt, ggf. die Person dort übernehmen + $sap_mitarbeiter_has_uidToKeep = false; + $sap_mitarbeiter_has_uidToDelete = false; + $sap_mitarbeiter_update_obj = new StdClass(); + $sap_mitarbeiter_query_upd = ''; + + $sap_mitarbeiter_query = " + SELECT * + FROM sync.tbl_sap_mitarbeiter + WHERE ( + mitarbeiter_uid = " . $db->db_add_param($uid_toKeep) . " OR + mitarbeiter_uid = " . $db->db_add_param($uid_toDelete) . " + )"; + + if ($result = $db->db_query($sap_mitarbeiter_query)) + { + while ($row = $db->db_fetch_object($result)) + { + if ($row->mitarbeiter_uid == $uid_toKeep) + { + $sap_mitarbeiter_has_uidToKeep = true; + } + if ($row->mitarbeiter_uid == $uid_toDelete) + { + $sap_mitarbeiter_has_uidToDelete = true; + $sap_mitarbeiter_update_obj = $row; + } + } + } + + // Wenn die zu löschende Person in SAP students eingetragen ist, dann mit der zu behaltenden Person überschreiben + if ($sap_mitarbeiter_has_uidToDelete && !$sap_mitarbeiter_has_uidToKeep) + { + $sap_mitarbeiter_query_upd = " + UPDATE sync.tbl_sap_mitarbeiter + SET mitarbeiter_uid = " . $db->db_add_param($uid_toKeep) . " + WHERE sap_eeid = " . $db->db_add_param($sap_mitarbeiter_update_obj->sap_eeid) . " + AND mitarbeiter_uid = " . $db->db_add_param($sap_mitarbeiter_update_obj->mitarbeiter_uid) . ";"; + } + // Wenn doppelte Personeneinträge in SAP students vorhanden sind (zu löschende UND zu behaltende Person), + // dann manuell lösen + elseif ($sap_mitarbeiter_has_uidToDelete && $sap_mitarbeiter_has_uidToKeep) + { + die('Es sind bereits beide Personen in SAP vorhanden. Bitte zuerst direkt in der tbl_sap_mitarbeiter lösen.'); + } + + } + // Wenn Person Student ist, gegebenenfalls die SAP Studenten Tabelle updaten + else + { + $sap_students_has_personToKeep = false; + $sap_students_has_personToDelete = false; + $sap_students_update_obj = new StdClass(); + $sap_students_query_upd = ''; + + $sap_students_query = " SELECT * FROM sync.tbl_sap_students WHERE ( person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . " )"; - - if ($result = $db->db_query($sap_students_query)) - { - while ($row = $db->db_fetch_object($result)) - { - if ($row->person_id == $personToKeep) - { - $sap_students_has_personToKeep = true; - } - if ($row->person_id == $personToDelete) - { - $sap_students_has_personToDelete = true; - $sap_students_update_obj = $row; - } - } - } - - // Wenn die zu löschende Person in SAP students eingetragen ist, dann mit der zu behaltenden Person überschreiben - if ($sap_students_has_personToDelete && !$sap_students_has_personToKeep) - { - $sap_students_query_upd = " + + if ($result = $db->db_query($sap_students_query)) + { + while ($row = $db->db_fetch_object($result)) + { + if ($row->person_id == $personToKeep) + { + $sap_students_has_personToKeep = true; + } + if ($row->person_id == $personToDelete) + { + $sap_students_has_personToDelete = true; + $sap_students_update_obj = $row; + } + } + } + + // Wenn die zu löschende Person in SAP students eingetragen ist, dann mit der zu behaltenden Person überschreiben + if ($sap_students_has_personToDelete && !$sap_students_has_personToKeep) + { + $sap_students_query_upd = " UPDATE sync.tbl_sap_students SET person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE sap_user_id = " . $db->db_add_param($sap_students_update_obj->sap_user_id, FHC_STRING) . " AND person_id = " . $sap_students_update_obj->person_id . ";"; - } - // Wenn doppelte Personeneinträge in SAP students vorhanden sind (zu löschende UND zu behaltende Person), - // dann manuell lösen - elseif ($sap_students_has_personToDelete && $sap_students_has_personToKeep) - { - die('Es sind bereits beide Personen in SAP vorhanden. Bitte zuerst direkt in der tbl_sap_students lösen.'); - } + } + // Wenn doppelte Personeneinträge in SAP students vorhanden sind (zu löschende UND zu behaltende Person), + // dann manuell lösen + elseif ($sap_students_has_personToDelete && $sap_students_has_personToKeep) + { + die('Es sind bereits beide Personen in SAP vorhanden. Bitte zuerst direkt in der tbl_sap_students lösen.'); + } + } + $personToDelete_obj = new person(); if ($personToDelete_obj->load($personToDelete)) @@ -440,7 +506,16 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p $sql_query_upd1 .= "UPDATE wawi.tbl_betriebsmittelperson SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE wawi.tbl_konto SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= $alma_query_upd; - $sql_query_upd1 .= $sap_students_query_upd; + // Wenn Person Mitarbeiter ist, ggf. SAP Mitarbeiter updaten + if ($is_Mitarbeiter) + { + $sql_query_upd1 .= $sap_mitarbeiter_query_upd; + } + // Wenn Person Student ist, ggf. SAP Studententabelle updaten + if (!$is_Mitarbeiter) + { + $sql_query_upd1 .= $sap_students_query_upd; + } $sql_query_upd1 .= "DELETE FROM public.tbl_person WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; From 34e3756d744817dfbd7f4f2e909b88403989339e Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 18 Nov 2020 13:14:59 +0100 Subject: [PATCH 4/4] Mitarbeiter zusammenlegen entfernt / Extension-Tabellen auf Vorhandensein pruefen - Mitarbeiter zusammenlegen entfernt. - Bevor Personen auch in extenstions zusammengelegt werden: pruefen, ob die entsprechenden Tabellen existieren. (diese sind nur vorhanden, wenn extensions FHC-Core-ALMA, FHC-Core-SAP installiert sind) Signed-off-by: cris-technikum --- vilesci/stammdaten/personen_wartung.php | 146 ++++++++++++------------ 1 file changed, 73 insertions(+), 73 deletions(-) diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php index 9cc0bba15..2c4c4f0fa 100644 --- a/vilesci/stammdaten/personen_wartung.php +++ b/vilesci/stammdaten/personen_wartung.php @@ -135,97 +135,97 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p } else { - // Wenn Person in ALMA Bibliothek vorkommt, ggf. die Person dort übernehmen - $alma_has_personToKeep = false; - $alma_has_personToDelete = false; - $alma_update_obj = new StdClass(); - $alma_query_upd = ''; - - $alma_query = " - SELECT * - FROM sync.tbl_alma - WHERE ( - person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR - person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . " - )"; - - - if ($result = $db->db_query($alma_query)) + // Prüfen, ob tbl_alma existiert (also ob ALMA extension installiert ist) + if($result = @$db->db_query("SELECT 1 FROM sync.tbl_alma LIMIT 1")) { - while ($row = $db->db_fetch_object($result)) + // Wenn Person in ALMA Bibliothek vorkommt, ggf. die Person dort übernehmen + $alma_has_personToKeep = false; + $alma_has_personToDelete = false; + $alma_update_obj = new StdClass(); + $alma_query_upd = ''; + + $alma_query = " + SELECT * + FROM sync.tbl_alma + WHERE ( + person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR + person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . " + )"; + + if ($result = $db->db_query($alma_query)) { - if ($row->person_id == $personToKeep) + while ($row = $db->db_fetch_object($result)) { - $alma_has_personToKeep = true; - } - if ($row->person_id == $personToDelete) - { - $alma_has_personToDelete = true; - $alma_update_obj = $row; + if ($row->person_id == $personToKeep) + { + $alma_has_personToKeep = true; + } + if ($row->person_id == $personToDelete) + { + $alma_has_personToDelete = true; + $alma_update_obj = $row; + } } } - } - - // Falls nur die zu löschende Person in ALMA vorhanden ist, mit der zu behaltenden Person ersetzen - if ($alma_has_personToDelete && !$alma_has_personToKeep) + + // Falls nur die zu löschende Person in ALMA vorhanden ist, mit der zu behaltenden Person ersetzen + if ($alma_has_personToDelete && !$alma_has_personToKeep) + { + $alma_query_upd = " + UPDATE sync.tbl_alma + SET person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " + WHERE alma_match_id = " . $alma_update_obj->alma_match_id . " + AND person_id = " . $alma_update_obj->person_id . ";"; + } + // Falls bereits doppelte Einträge in ALMA vorhanden sind (zu löschende und zu behaltende), manuell lösen + elseif ($alma_has_personToDelete && $alma_has_personToKeep) + { + die('Es sind bereits beide Personen in ALMA vorhanden. Bitte zuerst direkt im ALMA Bibliotheksystem und in der tbl_alma lösen.'); + } + } + + // Prüfen, ob tbl_sap_students exisitiert + if($result = @$db->db_query("SELECT 1 FROM sync.tbl_sap_students LIMIT 1")) { - $alma_query_upd = " - UPDATE sync.tbl_alma - SET person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " - WHERE alma_match_id = " . $alma_update_obj->alma_match_id . " - AND person_id = " . $alma_update_obj->person_id . ";"; - } - // Falls bereits doppelte Einträge in ALMA vorhanden sind, manuell lösen - elseif ($alma_has_personToDelete && $alma_has_personToKeep) - { - die('Es sind bereits beide Personen in ALMA vorhanden. Bitte zuerst direkt im ALMA Bibliotheksystem und in der tbl_alma lösen.'); - } - - - // Wenn Person in SAP students vorkommt, ggf. die Person dort übernehmen - $sap_students_has_personToKeep = false; - $sap_students_has_personToDelete = false; - $sap_students_update_obj = new StdClass(); - $sap_students_query_upd = ''; - - $sap_students_query = " + // Wenn Person in SAP students vorkommt, ggf. die Person dort übernehmen + $sap_students_has_personToKeep = false; + $sap_students_has_personToDelete = false; + $sap_students_update_obj = new StdClass(); + $sap_students_query_upd = ''; + + $sap_students_query = " SELECT * FROM sync.tbl_sap_students WHERE ( person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . " )"; - - if ($result = $db->db_query($sap_students_query)) - { - while ($row = $db->db_fetch_object($result)) - { - if ($row->person_id == $personToKeep) - { - $sap_students_has_personToKeep = true; - } - if ($row->person_id == $personToDelete) - { - $sap_students_has_personToDelete = true; - $sap_students_update_obj = $row; + + if ($result = $db->db_query($sap_students_query)) { + while ($row = $db->db_fetch_object($result)) { + if ($row->person_id == $personToKeep) { + $sap_students_has_personToKeep = true; + } + if ($row->person_id == $personToDelete) { + $sap_students_has_personToDelete = true; + $sap_students_update_obj = $row; + } } } - } - - // Wenn die zu löschende Person in SAP students eingetragen ist, dann mit der zu behaltenden Person überschreiben - if ($sap_students_has_personToDelete && !$sap_students_has_personToKeep) - { - $sap_students_query_upd = " + + // Wenn die zu löschende Person in SAP students eingetragen ist, dann mit der zu behaltenden Person überschreiben + if ($sap_students_has_personToDelete && !$sap_students_has_personToKeep) { + $sap_students_query_upd = " UPDATE sync.tbl_sap_students SET person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE sap_user_id = " . $db->db_add_param($sap_students_update_obj->sap_user_id, FHC_STRING) . " AND person_id = " . $sap_students_update_obj->person_id . ";"; - } - // Wenn doppelte Personeneinträge in SAP students vorhanden sind (zu löschende UND zu behaltende Person), - // dann manuell lösen - elseif ($sap_students_has_personToDelete && $sap_students_has_personToKeep) - { - die('Es sind bereits beide Personen in SAP vorhanden. Bitte zuerst direkt in der tbl_sap_students lösen.'); + } + // Wenn doppelte Personeneinträge in SAP students vorhanden sind (zu löschende UND zu behaltende Person), + // dann manuell lösen + elseif ($sap_students_has_personToDelete && $sap_students_has_personToKeep) { + die('Es sind bereits beide Personen in SAP vorhanden. Bitte zuerst direkt in der tbl_sap_students lösen.'); + } } $personToDelete_obj = new person();