From 4101929cd51cb7a80749b60ac6fca98e7e0ccf83 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Fri, 15 Oct 2021 12:57:18 +0200 Subject: [PATCH 001/152] stammkostenstelle anzeigen bei fixangestellten / fallback falls keine eingetragen ist --- .../statistik/lehrauftragsliste_mail.xls.php | 84 +++++++++++++++++-- 1 file changed, 76 insertions(+), 8 deletions(-) diff --git a/content/statistik/lehrauftragsliste_mail.xls.php b/content/statistik/lehrauftragsliste_mail.xls.php index 853be72fe..1342e9e50 100644 --- a/content/statistik/lehrauftragsliste_mail.xls.php +++ b/content/statistik/lehrauftragsliste_mail.xls.php @@ -30,6 +30,8 @@ require_once('../../include/Excel/excel.php'); require_once('../../include/studiengang.class.php'); require_once('../../include/studiensemester.class.php'); require_once('../../include/mail.class.php'); +require_once('../../include/benutzerfunktion.class.php'); +require_once('../../include/organisationseinheit.class.php'); $stsem = new studiensemester(); @@ -124,6 +126,10 @@ $workbook->setCustomColor(10, 255, 186, 179); $format_colored =& $workbook->addFormat(); $format_colored->setFgColor(10); +$workbook->setCustomColor(10, 238, 238, 0); +$oe_colored =& $workbook->addFormat(); +$oe_colored->setFgColor(10); + $format_number_colored =& $workbook->addFormat(); $format_number_colored->setNumFormat('0,0.00'); //$format_number_colored->setNumFormat('0.00'); @@ -209,7 +215,7 @@ if ($result_stg = $db->db_query($qry_stg)) SELECT tbl_organisationseinheit.organisationseinheittyp_kurzbz || ' ' || tbl_organisationseinheit.bezeichnung FROM PUBLIC.tbl_benutzerfunktion JOIN PUBLIC.tbl_organisationseinheit USING (oe_kurzbz) - WHERE funktion_kurzbz = 'oezuordnung' + WHERE funktion_kurzbz = (CASE WHEN fixangestellt = true THEN 'kstzuordnung' ELSE 'oezuordnung' END) AND ( datum_von IS NULL OR datum_von <= now() @@ -229,7 +235,7 @@ if ($result_stg = $db->db_query($qry_stg)) WHERE oe_kurzbz IN ( SELECT oe_kurzbz FROM PUBLIC.tbl_benutzerfunktion - WHERE funktion_kurzbz = 'oezuordnung' + WHERE funktion_kurzbz = (CASE WHEN fixangestellt = true THEN 'kstzuordnung' ELSE 'oezuordnung' END) AND ( datum_von IS NULL OR datum_von <= now() @@ -356,8 +362,20 @@ if ($result_stg = $db->db_query($qry_stg)) $liste[$row->mitarbeiter_uid]['vorname'] = $row->vorname; $liste[$row->mitarbeiter_uid]['nachname'] = $row->nachname; $liste[$row->mitarbeiter_uid]['fixangestellt'] = $row->fixangestellt; - $liste[$row->mitarbeiter_uid]['oezuordnung'] = $row->oezuordnung; - $liste[$row->mitarbeiter_uid]['department'] = $row->department; + + if (is_null($row->oezuordnung)) + { + $oeInfos = getOe($row->mitarbeiter_uid, $row->fixangestellt); + $liste[$row->mitarbeiter_uid]['oezuordnung'] = $oeInfos['oezuordnung']; + $liste[$row->mitarbeiter_uid]['department'] = $oeInfos['department']; + $liste[$row->mitarbeiter_uid]['organisationgeaendert'] = $oeInfos['organisationgeaendert']; + } + else + { + $liste[$row->mitarbeiter_uid]['oezuordnung'] = $row->oezuordnung; + $liste[$row->mitarbeiter_uid]['department'] = $row->department; + } + $liste[$row->mitarbeiter_uid]['betreuergesamtstunden'] = 0; $liste[$row->mitarbeiter_uid]['betreuergesamtkosten'] = 0; if ($row->geaendert == 't') @@ -375,7 +393,7 @@ if ($result_stg = $db->db_query($qry_stg)) public.tbl_benutzerfunktion JOIN public.tbl_organisationseinheit USING (oe_kurzbz) WHERE - funktion_kurzbz='oezuordnung' + funktion_kurzbz = (CASE WHEN fixangestellt = true THEN 'kstzuordnung' ELSE 'oezuordnung' END) AND (datum_von IS NULL OR datum_von <= now()) AND (datum_bis IS NULL OR datum_bis >= now()) AND tbl_benutzerfunktion.uid = tbl_benutzer.uid @@ -390,7 +408,7 @@ if ($result_stg = $db->db_query($qry_stg)) WHERE oe_kurzbz IN ( SELECT oe_kurzbz FROM PUBLIC.tbl_benutzerfunktion - WHERE funktion_kurzbz = 'oezuordnung' + WHERE funktion_kurzbz = (CASE WHEN fixangestellt = true THEN 'kstzuordnung' ELSE 'oezuordnung' END) AND ( datum_von IS NULL OR datum_von <= now() @@ -461,8 +479,20 @@ if ($result_stg = $db->db_query($qry_stg)) $liste[$row->uid]['vorname'] = $row->vorname; $liste[$row->uid]['nachname'] = $row->nachname; $liste[$row->uid]['fixangestellt'] = $row->fixangestellt; - $liste[$row->uid]['oezuordnung'] = $row->oezuordnung; - $liste[$row->uid]['department'] = $row->department; + + if (is_null($row->oezuordnung)) + { + $oeInfos = getOe($row->uid, $row->fixangestellt); + $liste[$row->uid]['oezuordnung'] = $oeInfos['oezuordnung']; + $liste[$row->uid]['department'] = $oeInfos['department']; + $liste[$row->uid]['organisationgeaendert'] = $oeInfos['organisationgeaendert']; + } + else + { + $liste[$row->uid]['oezuordnung'] = $row->oezuordnung; + $liste[$row->uid]['department'] = $row->department; + } + $liste[$row->uid]['geaendert'] = false; $liste[$row->uid]['gesamtstunden'] = 0; $liste[$row->uid]['gesamtkosten'] = 0; @@ -560,6 +590,11 @@ if ($result_stg = $db->db_query($qry_stg)) $format = $format_colored; $formatnb = $format_number_colored; } + else if(isset($row['organisationgeaendert']) && $row['organisationgeaendert'] === true) + { + $format = $oe_colored; + $formatnb = $format_number; + } else { $format = $format_normal; @@ -745,3 +780,36 @@ if ($result_stg = $db->db_query($qry_stg)) else echo "Fehler beim Versenden der Lehrauftragsliste"; } + +function getOe($mitarbeiter_uid, $fixangestellt) +{ + $benutzerfunktion = new Benutzerfunktion(); + $oe = new Organisationseinheit(); + + $benutzerfunktion->getBenutzerFunktionByUid($mitarbeiter_uid, $fixangestellt === 'Ja' ? 'kstzuordnung' : 'oezuordnung', date('Y-m-d')); + + if (isset($benutzerfunktion->result[0])) + { + array_multisort(array_column($benutzerfunktion->result, 'datum_von'), SORT_ASC, $benutzerfunktion->result); + } + else + { + $benutzerfunktion->getBenutzerFunktionByUid($mitarbeiter_uid, $fixangestellt === 'Ja' ? 'kstzuordnung' : 'oezuordnung', null, date('Y-m-d')); + array_multisort(array_column($benutzerfunktion->result, 'datum_bis'), SORT_DESC, $benutzerfunktion->result); + } + + if (!isset($benutzerfunktion->result[0])) + return array('oezuordnung' => '', 'department' => '', 'organisationgeaendert' => false); + + $oe->load($benutzerfunktion->result[0]->oe_kurzbz); + $oezuordnung = $oe->organisationseinheittyp_kurzbz . ' ' . $oe->bezeichnung; + + $oe_parents = $oe->getParents_withOEType($oe->oe_kurzbz); + + if (is_array($oe_parents)) + $department = ($oe_parents[array_search('Department', array_column($oe_parents, 'oe_typ_bezeichnung'))]->oe_bezeichnung); + else + $department = ''; + + return array('oezuordnung' => $oezuordnung, 'department' => $department, 'organisationgeaendert' => true); +} \ No newline at end of file From a4378b4592cda4528c29d352286a3af95e6902e7 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Tue, 26 Apr 2022 09:48:22 +0200 Subject: [PATCH 002/152] Add Default Stundensatz --- content/student/studentDBDML.php | 153 ++++++++++++++++-- content/student/studentprojektarbeit.js.php | 6 + .../studentprojektarbeitoverlay.xul.php | 2 +- 3 files changed, 143 insertions(+), 18 deletions(-) diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index 4a4b64201..82a433ebe 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -74,6 +74,8 @@ require_once('../../include/reihungstest.class.php'); require_once('../../include/studienplan.class.php'); require_once('../../include/mobilitaet.class.php'); require_once('../../include/studienordnung.class.php'); +require_once('../../include/mitarbeiter.class.php'); +require_once('../../include/bisverwendung.class.php'); $user = get_uid(); $db = new basis_db(); @@ -403,7 +405,7 @@ if(!$error) $return = false; $errormsg = 'Geburtsdatum ist nicht korrekt.'; $error = true; - } + } if(!$error) { @@ -648,12 +650,12 @@ if(!$error) $prestudent->zgvort = $_POST['zgvort']; $prestudent->zgvdatum = $_POST['zgvdatum']; $prestudent->zgvnation = $_POST['zgvnation']; - $prestudent->zgv_erfuellt = $_POST['zgv_erfuellt']; + $prestudent->zgv_erfuellt = $_POST['zgv_erfuellt']; $prestudent->zgvmas_code = $_POST['zgvmas_code']; $prestudent->zgvmaort = $_POST['zgvmaort']; $prestudent->zgvmadatum = $_POST['zgvmadatum']; $prestudent->zgvmanation = $_POST['zgvmanation']; - $prestudent->zgvmas_erfuellt = $_POST['zgvmas_erfuellt']; + $prestudent->zgvmas_erfuellt = $_POST['zgvmas_erfuellt']; $prestudent->zgvdoktor_code = $_POST['zgvdoktor_code']; $prestudent->zgvdoktorort = $_POST['zgvdoktorort']; $prestudent->zgvdoktordatum = $_POST['zgvdoktordatum']; @@ -2361,7 +2363,7 @@ if(!$error) { if ($dokument_kurzbz === 'Sonst' && $sonst !== 0) continue; - + if($dokument_kurzbz!='') { $dok = new dokument(); @@ -2374,7 +2376,7 @@ if(!$error) $dok->new = true; if ($dokument_kurzbz === 'Sonst') $sonst++; - + if(!$dok->save()) { @@ -4369,32 +4371,149 @@ if(!$error) $errormsg = 'Fehlerhafte Parameteruebergabe'; } } + +// elseif(isset($_POST['type']) && $_POST['type']=='getstundensatz') +// { +// if(isset($_POST['person_id'])) +// { +// $qry = "SELECT mitarbeiter_uid, stundensatz FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid) +// WHERE person_id=".$db->db_add_param($_POST['person_id'], FHC_INTEGER); +// if($result = $db->db_query($qry)) +// { +// if($row = $db->db_fetch_object($result)) +// { +// $mitarbeiter_uid = $row->mitarbeiter_uid; +// $mitarbeiter = new mitarbeiter(); +// +// if($mitarbeiter->load($mitarbeiter_uid)) +// { +// if (defined('FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ') +// && !FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ) +// { +// $stsem = new studiensemester(); +// $stsem->load($semester_aktuell); +// $bisverwendung = new bisverwendung(); +// $data = $mitarbeiter->stundensatz; +// if(!$bisverwendung->getVerwendungRange($mitarbeiter->uid, $stsem->start, $stsem->ende)) +// { +// $bisverwendung->getLastAktVerwendung($mitarbeiter->uid); +// $bisverwendung->result[] = $bisverwendung; +// } +// +// foreach($bisverwendung->result as $row_verwendung) +// { +// // Bei echten Dienstvertraegen mit voller inkludierter Lehre wird kein Stundensatz +// // geliefert da dies im Vertrag inkludiert ist. +// if ($row_verwendung->ba1code == 103 && $row_verwendung->inkludierte_lehre == -1) +// { +// $data = ''; +// break; +// } +// // else +// // { +// // $data = $mitarbeiter->stundensatz; +// // // echo $data; +// // $return = true; +// // } +// } +// } +// else +// { +// $data = $mitarbeiter->stundensatz; +// //alert($data); +// $return = true; +// } +// +// } +// else +// { +// $errormsg = 'Fehler beim Laden Mitarbeiter*in'; +// $return = false; +// } +// +// } +// else +// { +// $errormsg = 'Mitarbeiter*in muss ausgewählt werden'; +// $return = false; +// } +// } +// else +// { +// $errormsg = 'DB Abfrage fehlgeschlagen'; +// $return = false; +// } +// } +// +// } + elseif(isset($_POST['type']) && $_POST['type']=='getstundensatz') { if(isset($_POST['person_id'])) { - $qry = "SELECT stundensatz FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid) + $qry = "SELECT mitarbeiter_uid, stundensatz FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid) WHERE person_id=".$db->db_add_param($_POST['person_id'], FHC_INTEGER); if($result = $db->db_query($qry)) { if($row = $db->db_fetch_object($result)) { - $data = $row->stundensatz; - $return = true; - } + $mitarbeiter_uid = $row->mitarbeiter_uid; + $mitarbeiter = new mitarbeiter(); + + if($mitarbeiter->load($mitarbeiter_uid)) + { + if (defined('FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ') + && !FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ) + { + $stsem = new studiensemester(); + $stsem->load($semester_aktuell); + $bisverwendung = new bisverwendung(); + $data = $mitarbeiter->stundensatz; + if(!$bisverwendung->getVerwendungRange($mitarbeiter->uid, $stsem->start, $stsem->ende)) + { + $bisverwendung->getLastAktVerwendung($mitarbeiter->uid); + $bisverwendung->result[] = $bisverwendung; + } + + foreach($bisverwendung->result as $row_verwendung) + { + // Bei echten Dienstvertraegen mit voller inkludierter Lehre wird kein Stundensatz + // geliefert da dies im Vertrag inkludiert ist. + if ($row_verwendung->ba1code == 103 && $row_verwendung->inkludierte_lehre == -1) + { + $data = ''; + break; + } + } + } + else + $data = $mitarbeiter->stundensatz; + $return = true; + } + + else { - $data = '80.00'; - $return = true; + $errormsg = 'Fehler beim Laden Mitarbeiter*in'; + $return = false; } - } - else - { - $return = false; - $errormsg = 'Unbekannter Fehler'; - } + + } + else + { + $errormsg = 'Mitarbeiter*in muss ausgewählt werden'; + $return = false; } } + else + { + $errormsg = 'Fehler bei Datenabfrage'; + $return = false; + } + } + +} + elseif(isset($_POST['type']) && $_POST['type']=='saveanrechnung') { $anrechnung = new anrechnung(); diff --git a/content/student/studentprojektarbeit.js.php b/content/student/studentprojektarbeit.js.php index 124516357..381399df0 100644 --- a/content/student/studentprojektarbeit.js.php +++ b/content/student/studentprojektarbeit.js.php @@ -1171,6 +1171,7 @@ function StudentProjektbetreuerDetailReset() document.getElementById('student-projektbetreuer-textbox-stunden').value='0.0'; document.getElementById('student-projektbetreuer-menulist-betreuerart').value='Begutachter'; } + document.getElementById('student-projektbetreuer-textbox-stundensatz').value='80.0'; document.getElementById('student-projektbetreuer-menulist-person').value=''; } @@ -1383,7 +1384,12 @@ function StudentProjektbetreuerLoadMitarbeiterDaten() { stundensatz = val.dbdml_data } + if (stundensatz != '') + default_stundensatz = 'Stundensatz (Default '+stundensatz+'):'; + else + default_stundensatz = 'Stundensatz'; + document.getElementById('student-projektbetreuer-label-stundensatz').value= default_stundensatz; document.getElementById('student-projektbetreuer-textbox-stundensatz').value=stundensatz; } diff --git a/content/student/studentprojektarbeitoverlay.xul.php b/content/student/studentprojektarbeitoverlay.xul.php index 4d8ab4835..6e2afe469 100644 --- a/content/student/studentprojektarbeitoverlay.xul.php +++ b/content/student/studentprojektarbeitoverlay.xul.php @@ -501,7 +501,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN') -