From c0e2cec5568bfa01bee49a39bbb7a610483c5869 Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Wed, 14 Aug 2024 15:51:27 +0200 Subject: [PATCH 01/31] s&d --- application/libraries/AntragLib.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/application/libraries/AntragLib.php b/application/libraries/AntragLib.php index c1649587d..1a8b28ed3 100644 --- a/application/libraries/AntragLib.php +++ b/application/libraries/AntragLib.php @@ -77,7 +77,9 @@ class AntragLib 'studiensemester_kurzbz'=>$prestudentstatus->studiensemester_kurzbz, 'ausbildungssemester'=>$prestudentstatus->ausbildungssemester ], [ - 'statusgrund_id' => null + 'statusgrund_id' => null, + 'updateamum' => date('c'), + 'updatevon' => $insertvon ]); } } @@ -335,7 +337,10 @@ class AntragLib 'status_kurzbz'=>$prestudentstatus->status_kurzbz, 'studiensemester_kurzbz'=>$prestudentstatus->studiensemester_kurzbz, 'ausbildungssemester'=>$prestudentstatus->ausbildungssemester - ], []); + ], [ + 'updateamum' => $insertam, + 'updatevon' => $insertvon + ]); if (isError($result)) { $errors[] = getError($result); From fb2f8d5c530b38f63d0b16dbb6fe61272373571a Mon Sep 17 00:00:00 2001 From: Alexei Karpenko Date: Thu, 20 Mar 2025 14:41:28 +0100 Subject: [PATCH 02/31] added function for getting UHSTAT1 person data (centralizing...) --- .../models/codex/Uhstat1daten_model.php | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/application/models/codex/Uhstat1daten_model.php b/application/models/codex/Uhstat1daten_model.php index 9bca44b58..5bffb5c06 100644 --- a/application/models/codex/Uhstat1daten_model.php +++ b/application/models/codex/Uhstat1daten_model.php @@ -11,4 +11,42 @@ class Uhstat1daten_model extends DB_Model $this->dbTable = 'bis.tbl_uhstat1daten'; $this->pk = 'uhstat1daten_id'; } + + /** + * Gets person data needed for sending as UHSTAT1 data. + * @param array $person_id_arr + * @param string $studiensemester + * @param array $status_kurzbz + * @return object success with prestudents or error + */ + public function getUHSTAT1PersonData($person_id_arr) + { + $params = array($person_id_arr); + + $prstQry = "SELECT + DISTINCT ON (pers.person_id) + pers.person_id, uhstat_daten.uhstat1daten_id, pers.svnr, pers.ersatzkennzeichen, pers.geburtsnation, + uhstat_daten.mutter_geburtsstaat, uhstat_daten.mutter_bildungsstaat, uhstat_daten.mutter_geburtsjahr, + uhstat_daten.mutter_bildungmax, uhstat_daten.vater_geburtsstaat, uhstat_daten.vater_bildungsstaat, + uhstat_daten.vater_geburtsjahr, uhstat_daten.vater_bildungmax, + kzVbpkAs.inhalt AS \"vbpkAs\", kzVbpkBf.inhalt AS \"vbpkBf\" + FROM + public.tbl_person pers + JOIN public.tbl_prestudent ps USING (person_id) + JOIN public.tbl_studiengang stg USING (studiengang_kz) + JOIN bis.tbl_uhstat1daten uhstat_daten USING (person_id) + LEFT JOIN public.tbl_kennzeichen kzVbpkAs ON kzVbpkAs.kennzeichentyp_kurzbz = 'vbpkAs'AND kzVbpkAs.person_id = pers.person_id AND kzVbpkAs.aktiv + LEFT JOIN public.tbl_kennzeichen kzVbpkBf ON kzVbpkBf.kennzeichentyp_kurzbz = 'vbpkBf'AND kzVbpkBf.person_id = pers.person_id AND kzVbpkBf.aktiv + WHERE + ps.bismelden + AND stg.melderelevant + AND pers.person_id IN ? + ORDER BY + pers.person_id"; + + return $this->execReadOnlyQuery( + $prstQry, + $params + ); + } } From a3e22da63319e7a9e0dbf49d6b559d128162c78a Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Thu, 20 Mar 2025 17:21:42 +0100 Subject: [PATCH 03/31] calcEntschuldigungen minDate as workdays in config; updatevon/um anwCheckIn; Orgform dual in sancho mail; zusatz (d.d.i)/(d.d.o) & (o) auch wenn bis datum leer ist aber von bereits eingetragen --- include/lehrelisthelper.class.php | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/include/lehrelisthelper.class.php b/include/lehrelisthelper.class.php index d6ceaf918..b1821391f 100644 --- a/include/lehrelisthelper.class.php +++ b/include/lehrelisthelper.class.php @@ -200,7 +200,7 @@ class LehreListHelper //Studierende der LV laden und in ein Array schreiben $qry = 'SELECT - distinct on(nachname, vorname, person_id) vorname, nachname, wahlname, matrikelnr, public.tbl_student.student_uid, + distinct on(nachname, vorname, public.tbl_benutzer.person_id) vorname, nachname, wahlname, matrikelnr, public.tbl_student.student_uid, tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, (SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id @@ -209,7 +209,8 @@ class LehreListHelper tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_person.geschlecht, tbl_studiengang.kurzbzlang, tbl_mobilitaet.mobilitaetstyp_kurzbz, tbl_zeugnisnote.note, (CASE WHEN bis.tbl_mobilitaet.studiensemester_kurzbz = vw_student_lehrveranstaltung.studiensemester_kurzbz THEN 1 ELSE 0 END) as doubledegree, - (tbl_bisio.bis::timestamp - tbl_bisio.von::timestamp) as daysout + (tbl_bisio.bis::timestamp - tbl_bisio.von::timestamp) as daysout, + public.tbl_prestudent.gsstudientyp_kurzbz as ddtype FROM campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) @@ -223,6 +224,7 @@ class LehreListHelper LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid) LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz) LEFT JOIN bis.tbl_mobilitaet USING(prestudent_id) + LEFT JOIN public.tbl_prestudent USING(prestudent_id) WHERE vw_student_lehrveranstaltung.lehrveranstaltung_id='.$this->db->db_add_param($this->lvid, FHC_INTEGER).' AND vw_student_lehrveranstaltung.studiensemester_kurzbz='.$this->db->db_add_param($this->studiensemester); @@ -231,7 +233,7 @@ class LehreListHelper if($this->lehreinheit!='') $qry.=' AND vw_student_lehrveranstaltung.lehreinheit_id='.$this->db->db_add_param($this->lehreinheit, FHC_INTEGER); - $qry.=' ORDER BY nachname, vorname, person_id, daysout DESC, doubledegree DESC'; + $qry.=' ORDER BY nachname, vorname, public.tbl_benutzer.person_id, daysout DESC, doubledegree DESC'; $stsem_obj = new studiensemester(); $stsem_obj->load($this->studiensemester); @@ -263,8 +265,13 @@ class LehreListHelper //Outgoing if($row->bisio_id != '' && $row->status != 'Incoming' && ($row->bis > $stsemdatumvon || $row->bis == '') - && $row->von < $stsemdatumbis && (anzahlTage($row->von, $row->bis) >= 30)) + && $row->von < $stsemdatumbis && (anzahlTage($row->von, $row->bis) >= 30)) { $zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')'; + } else if ($row->bisio_id != '' && $row->status != 'Incoming' && ($row->von > $stsemdatumvon || $row->von == '')) { + // if bis datum is not yet known but von is available already + $zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')'; + } + if($row->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen $zusatz.= '('. $row->anmerkung. ')'; @@ -275,8 +282,13 @@ class LehreListHelper if($row->stg_kz_student==$a_o_kz) //Außerordentliche Studierende $zusatz.='(a.o.)'; - if(($row->mobilitaetstyp_kurzbz != '') && ($row->doubledegree == 1)) //Double Degree Student - $zusatz .= '(d.d.)'; + if(($row->mobilitaetstyp_kurzbz != '') && ($row->doubledegree == 1)) { + //Double Degree Student + $zusatz .= '(d.d.'; + if($row->ddtype == 'Intern') $zusatz .= 'i.)'; + else if ($row->ddtype == 'Extern') $zusatz .='o.)'; + else $zusatz .= ')'; + } if(($row->wahlname != '')) { From 45b7a56c3a4ac53f556b7d8760b5eb8b6f321127 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Mon, 24 Mar 2025 14:00:14 +0100 Subject: [PATCH 04/31] - zeugnis vorlage fuer micro degree --- rdf/zeugnis.rdf.php | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/rdf/zeugnis.rdf.php b/rdf/zeugnis.rdf.php index 2021c8335..038aba842 100644 --- a/rdf/zeugnis.rdf.php +++ b/rdf/zeugnis.rdf.php @@ -35,6 +35,7 @@ require_once('../include/studiengang.class.php'); require_once('../include/mitarbeiter.class.php'); require_once('../include/anrechnung.class.php'); require_once('../include/prestudent.class.php'); +require_once('../include/nation.class.php'); $datum = new datum(); $db = new basis_db(); @@ -107,7 +108,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") tbl_studiengang.bezeichnung, tbl_studiengang.english, tbl_studentlehrverband.semester, tbl_person.vorname, tbl_person.vornamen, tbl_person.nachname,tbl_person.gebdatum,tbl_person.titelpre, tbl_person.titelpost, tbl_person.anrede, tbl_studiensemester.bezeichnung as sembezeichnung, - tbl_studiensemester.studiensemester_kurzbz as stsem, tbl_student.prestudent_id, tbl_studiengang.max_semester + tbl_studiensemester.studiensemester_kurzbz as stsem, tbl_student.prestudent_id, tbl_studiengang.max_semester, tbl_person.gebort, tbl_person.geburtsnation, tbl_person.geschlecht FROM tbl_person, tbl_student, tbl_studiengang, tbl_benutzer, tbl_studentlehrverband, tbl_studiensemester WHERE tbl_student.studiengang_kz = tbl_studiengang.studiengang_kz AND tbl_student.student_uid = tbl_benutzer.uid AND tbl_benutzer.person_id = tbl_person.person_id @@ -187,6 +188,10 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") else $studiengang_kz = sprintf("%04s", abs($row->studiengang_kz)); + + $nation = new nation($row->geburtsnation); + $geburtsnation = $nation->kurztext; + $xml .= " "; $xml .= " "; $xml .= "\n anrede."]]>"; @@ -195,6 +200,9 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $xml .= " titelpre.' '.trim($row->vorname.' '.$row->vornamen).' '.$row->nachname.($row->titelpost!=''?', '.$row->titelpost:''))."]]>"; $gebdatum = date('d.m.Y',strtotime($row->gebdatum)); $xml .= " "; + $xml .= " gebort."]]>"; + $xml .= " "; + $xml .= " geschlecht."]]>"; $xml .= " matrikelnr)."]]>"; $xml .= " "; $datum_aktuell = date('d.m.Y'); @@ -267,6 +275,15 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") if ($lastPrestudentStatus) $showAllNoten = $prestudent->status_kurzbz === 'Incoming'; + $lastBenotungsdatum = ''; + + $dates = array_column($obj->result, 'benotungsdatum'); + if (!empty($dates)) + { + $lastBenotungsdatum = max($dates); + $xml .= ""; + } + foreach ($obj->result as $row) { if($showAllNoten || $row->zeugnis) @@ -390,6 +407,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") } } $xml .= "\n "; + $xml .= " benotungsdatum))."]]>"; $xml .= " "; $xml .= " "; $xml .= " note_positiv."]]>"; From ba806c13fb046f9cfd76f115606279b38d203898 Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Thu, 27 Mar 2025 17:15:37 +0100 Subject: [PATCH 05/31] assistenz edit entschuldigung modal for editing von/bis date (on open excuse notes) & textarea for notiz - which is still limited to 255 characters; added student semester column to assistenz table; removed column width constraints & layout changed to fitData, persistence option is TRUE now; WIP von/bis/uplaoddate headerfilter; automatically send email to students on entschuldigungn status changed; added minimum time range for Kontrolle to be at least the length of 1 teaching unit(per config) - currently 45minutes; start new kontrolle modal more clearly shows when time & date values have been read from stundenplan; increased qr degeneration timer from 200 to 5000ms to avoid "missed" checkins due to network time; lektor can retrieve all entschuldigungen ranges & statuses of students when hovering their row; lektor can show anw qr window seperately now; into externalzuordnung admin/person_id fix in deleteEntschuldigung; moved fetch semesterinfo into global setup; fixed some vue template warnings; --- public/js/components/Bootstrap/Modal.js | 1 + system/phrasesupdate.php | 106 +++++++++++++++++++++++- 2 files changed, 104 insertions(+), 3 deletions(-) diff --git a/public/js/components/Bootstrap/Modal.js b/public/js/components/Bootstrap/Modal.js index e390319e8..e94579d89 100644 --- a/public/js/components/Bootstrap/Modal.js +++ b/public/js/components/Bootstrap/Modal.js @@ -114,6 +114,7 @@ export default {