From ed39127f319421d8707e8d1170608ee761508f16 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Tue, 13 Aug 2024 16:00:03 +0200 Subject: [PATCH 01/42] add tags for berufliche Kompetenzen --- rdf/diplomasupplement.xml.php | 119 ++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) diff --git a/rdf/diplomasupplement.xml.php b/rdf/diplomasupplement.xml.php index 189aa0c05..d0b26ac40 100644 --- a/rdf/diplomasupplement.xml.php +++ b/rdf/diplomasupplement.xml.php @@ -653,7 +653,115 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") } echo ' '; + //Berufliche Kompetenzen + $studienplan = new studienplan(); + $studienplan->loadStudienplan($studienplan_id); + $regelstudiendauer = $studienplan->regelstudiendauer; + $ects_berufliche_kompetenzen = 0; + + //bei masterlehrgängen 120ECTS bzw regelstudienzeit >= 4 sem: Andruck der beruflichen Kompetenzen + + //Version notenunabhängig +/* if ($row->typ == 'l' && $regelstudiendauer >= 4) + { + echo ''; + //echo ''.$row->typ . ' '. $regelstudiendauer. ''; + echo 'Validierung beruflicher Kompetenzen'; + $qry_sem_0=" + SELECT + lehrveranstaltung_id, + lehrform_kurzbz, + sws, + bezeichnung, + bezeichnung_english, + ects + FROM + lehre.tbl_studienplan_lehrveranstaltung sp + JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id) + WHERE + studienplan_id = ".$db->db_add_param($studienplan_id)." + AND + sp.semester = '0' + "; + + if($result_sem_0 = $db->db_query($qry_sem_0)) + { + while ($row_sem_0 = $db->db_fetch_object($result_sem_0)) + { + echo ' + ' . $row_sem_0->lehrveranstaltung_id . ' + ' . $row_sem_0->lehrform_kurzbz .' + bezeichnung .']]> + bezeichnung_english . ']]> + '.$row_sem_0->sws.' + '.$row_sem_0->ects.' + 1 + - + - + '; + } + } + echo ''; + }*/ + + //Version mit Noten + if ($row->typ == 'l' && $regelstudiendauer >= 4) + { + $ects_berufliche_kompetenzen = 30; + echo ''; + //echo ''.$row->typ . ' '. $regelstudiendauer. ''; + echo 'Validierung beruflicher Kompetenzen'; + //TODO(Manu) check if information somewhere in DB + echo ''.$ects_berufliche_kompetenzen.''; + $qry_sem_0=" + SELECT + lehrveranstaltung_id, + lehrform_kurzbz, + sws, + lehre.tbl_lehrveranstaltung.bezeichnung, + bezeichnung_english, + ects, + benotungsdatum, + note, + positiv, + offiziell, + note.anmerkung + FROM + lehre.tbl_zeugnisnote zeugnis + JOIN lehre.tbl_note note USING(note) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN public.tbl_student student USING(student_uid) + WHERE + student_uid =".$db->db_add_param($uid_arr[$i])." + AND + lehre.tbl_lehrveranstaltung.semester = '0' + "; + + if($result_sem_0 = $db->db_query($qry_sem_0)) + { + while ($row_sem_0 = $db->db_fetch_object($result_sem_0)) + { + $benotungsdatum = $datum->formatDatum($row_sem_0->benotungsdatum, 'd/m/Y'); + $note = $db->db_parse_bool($row_sem_0->offiziell) ? $row_sem_0->anmerkung : $row_sem_0->note; + + echo ' + ' . $row_sem_0->lehrveranstaltung_id . ' + ' . $row_sem_0->lehrform_kurzbz . ' + bezeichnung . ']]> + bezeichnung_english . ']]> + '.$row_sem_0->sws.' + '.$row_sem_0->ects.' + '.$db->db_parse_bool($row_sem_0->positiv).' + '.$note.' + '.$benotungsdatum.' + '; + } + } + echo ''; + } + echo ""; + for($start = $semesterNumberStart; $start <= $semesterNumberEnd; $start++) { $semester_ects = 0; @@ -676,6 +784,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") AND zeugnis = true AND status.ausbildungssemester = ".$db->db_add_param($start)." AND status.status_kurzbz NOT IN('Unterbrecher', 'Interessent','Bewerber','Aufgenommener','Abgewiesener','Wartender') + --AND lehre.tbl_lehrveranstaltung.semester != '0' ORDER BY datum ASC"; $semester_kurzbz = array(); @@ -724,6 +833,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") WHERE student_uid = ".$db->db_add_param($uid_arr[$i])." AND zeugnis = true + AND lehre.tbl_lehrveranstaltung.semester != '0' AND studiensemester_kurzbz in (".$sqlStudent->implode4SQL($aktuellesSemester).")"; if (defined('ZEUGNISNOTE_NICHT_ANZEIGEN')) @@ -1082,10 +1192,19 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") } } } + echo ''.$semester_ects.''; echo ''.$semester_ects_positiv.''; echo ""; } + + //Korrektur ects_total um berufliche Kompetenzen + if ($row->typ == 'l' && $regelstudiendauer >= 4) + { + $ects_total += $ects_berufliche_kompetenzen; + $ects_total_positiv += $ects_berufliche_kompetenzen; + } + echo ""; echo " $ects_total"; echo " $ects_total_positiv"; From d542cf7720b9c0651d8510a18a73916e3200a6ae Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Wed, 14 Aug 2024 16:20:47 +0200 Subject: [PATCH 02/42] s&d --- application/libraries/AntragLib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/libraries/AntragLib.php b/application/libraries/AntragLib.php index c1649587d..1a96eadf1 100644 --- a/application/libraries/AntragLib.php +++ b/application/libraries/AntragLib.php @@ -126,7 +126,7 @@ class AntragLib return $this->_ci->StudierendenantragstatusModel->resumeAntraegeForAbmeldungStgl($antrag_id); } // NOTE(chris): get last status that is not pause - $this->_ci->StudierendenantragstatusModel->addOrder('insertamum'); + $this->_ci->StudierendenantragstatusModel->addOrder('insertamum', 'DESC'); $this->_ci->StudierendenantragstatusModel->addLimit(1); $result = $this->_ci->StudierendenantragstatusModel->loadWhere([ 'studierendenantrag_id' => $antrag_id, From 738c8192726efdd19feceb825d5e378bf8a68836 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Fri, 30 Aug 2024 13:32:00 +0200 Subject: [PATCH 03/42] remove comments --- rdf/diplomasupplement.xml.php | 52 +++-------------------------------- 1 file changed, 4 insertions(+), 48 deletions(-) diff --git a/rdf/diplomasupplement.xml.php b/rdf/diplomasupplement.xml.php index d0b26ac40..96636836d 100644 --- a/rdf/diplomasupplement.xml.php +++ b/rdf/diplomasupplement.xml.php @@ -657,61 +657,17 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $studienplan = new studienplan(); $studienplan->loadStudienplan($studienplan_id); $regelstudiendauer = $studienplan->regelstudiendauer; + $studienplan_ects = $studienplan->ects_stpl; $ects_berufliche_kompetenzen = 0; - //bei masterlehrgängen 120ECTS bzw regelstudienzeit >= 4 sem: Andruck der beruflichen Kompetenzen - - //Version notenunabhängig -/* if ($row->typ == 'l' && $regelstudiendauer >= 4) - { - echo ''; - //echo ''.$row->typ . ' '. $regelstudiendauer. ''; - echo 'Validierung beruflicher Kompetenzen'; - $qry_sem_0=" - SELECT - lehrveranstaltung_id, - lehrform_kurzbz, - sws, - bezeichnung, - bezeichnung_english, - ects - FROM - lehre.tbl_studienplan_lehrveranstaltung sp - JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id) - WHERE - studienplan_id = ".$db->db_add_param($studienplan_id)." - AND - sp.semester = '0' - "; - - if($result_sem_0 = $db->db_query($qry_sem_0)) - { - while ($row_sem_0 = $db->db_fetch_object($result_sem_0)) - { - echo ' - ' . $row_sem_0->lehrveranstaltung_id . ' - ' . $row_sem_0->lehrform_kurzbz .' - bezeichnung .']]> - bezeichnung_english . ']]> - '.$row_sem_0->sws.' - '.$row_sem_0->ects.' - 1 - - - - - '; - } - } - echo ''; - }*/ - - //Version mit Noten + //bei masterlehrgängen und $studienplan_ects >= 120 ECTS: Andruck der beruflichen Kompetenzen, wenn die Lv angerechnet wurde if ($row->typ == 'l' && $regelstudiendauer >= 4) { $ects_berufliche_kompetenzen = 30; echo ''; - //echo ''.$row->typ . ' '. $regelstudiendauer. ''; + echo ''.$row->typ . ' '. $studienplan_ects . ''; echo 'Validierung beruflicher Kompetenzen'; - //TODO(Manu) check if information somewhere in DB + echo ''.$ects_berufliche_kompetenzen.''; $qry_sem_0=" SELECT From ba6224bc788e83894627d8fc5770af3c3f97053f Mon Sep 17 00:00:00 2001 From: ma0048 Date: Tue, 2 Sep 2025 11:18:24 +0200 Subject: [PATCH 04/42] oeh betrag aus der eigener tabelle holen studentenverwaltung bei jedem studiensemester wechsel fas nur einmalig ueber die variable --- .../controllers/api/frontend/v1/stv/Konto.php | 45 ++++++++++++++++++- include/konto.class.php | 45 ++++++++++++++++++- public/js/api/factory/stv/konto.js | 10 +++-- .../Studentenverwaltung/Details/Konto/New.js | 18 +++++++- 4 files changed, 110 insertions(+), 8 deletions(-) diff --git a/application/controllers/api/frontend/v1/stv/Konto.php b/application/controllers/api/frontend/v1/stv/Konto.php index a33680ea0..c7c1aa1d5 100644 --- a/application/controllers/api/frontend/v1/stv/Konto.php +++ b/application/controllers/api/frontend/v1/stv/Konto.php @@ -48,7 +48,8 @@ class Konto extends FHCAPI_Controller // Load language phrases $this->loadPhrases([ - 'konto' + 'konto', + 'lehre' ]); } @@ -112,7 +113,7 @@ class Konto extends FHCAPI_Controller * * @return void */ - public function getBuchungstypen() + public function getBuchungstypen($studiensemester_kurzbz = null) { $this->load->model('crm/Buchungstyp_model', 'BuchungstypModel'); @@ -122,6 +123,7 @@ class Konto extends FHCAPI_Controller $data = $this->getDataOrTerminateWithError($result); + $this->_getOEHBeitrag($data, $studiensemester_kurzbz); $this->terminateWithSuccess($data); } @@ -494,4 +496,43 @@ class Konto extends FHCAPI_Controller $this->terminateWithSuccess(); } + + private function _getOEHBeitrag(&$data, $studiensemester_kurzbz = null) + { + if (is_null($studiensemester_kurzbz)) + { + $this->load->library('VariableLib', ['uid' => getAuthUID()]); + $studiensemester_akt = $this->variablelib->getVar('semester_aktuell'); + } + else + { + $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); + if ($this->StudiensemesterModel->isValidStudiensemester($studiensemester_kurzbz)) + $studiensemester_akt = $studiensemester_kurzbz; + else + $this->terminateWithError($this->p->t('lehre', 'error_noStudiensemester')); + } + + $this->load->model('codex/Oehbeitrag_model', 'OehbeitragModel'); + $oehBeitrag = $this->OehbeitragModel->getByStudiensemester($studiensemester_akt); + + $oehStandardbetrag = null; + if (hasData($oehBeitrag)) + { + $oeh = getData($oehBeitrag)[0]; + $summe = ($oeh->studierendenbeitrag + $oeh->versicherung) * -1; + $oehStandardbetrag = number_format((float)$summe, 2, '.', ''); + } + + if ($oehStandardbetrag !== null) + { + $data = array_map(function ($buchungstyp) use ($oehStandardbetrag) { + if (isset($buchungstyp->buchungstyp_kurzbz) && (strtolower($buchungstyp->buchungstyp_kurzbz) === 'oeh')) + { + $buchungstyp->standardbetrag = $oehStandardbetrag; + } + return $buchungstyp; + }, $data); + } + } } diff --git a/include/konto.class.php b/include/konto.class.php index 51f79200b..da76c147f 100644 --- a/include/konto.class.php +++ b/include/konto.class.php @@ -25,6 +25,7 @@ */ require_once(dirname(__FILE__).'/basis_db.class.php'); require_once(dirname(__FILE__).'/'.EXT_FKT_PATH.'/generateZahlungsreferenz.inc.php'); +require_once(dirname(__FILE__).'/variable.class.php'); class konto extends basis_db { @@ -432,6 +433,8 @@ class konto extends basis_db $qry.=" ORDER BY beschreibung"; + $oehBeitrag = $this->_getOEHBeitrag(); + if($this->db_query($qry)) { while($row = $this->db_fetch_object()) @@ -440,7 +443,15 @@ class konto extends basis_db $typ->buchungstyp_kurzbz = $row->buchungstyp_kurzbz; $typ->beschreibung = $row->beschreibung; - $typ->standardbetrag = $row->standardbetrag; + if (strtolower($typ->buchungstyp_kurzbz) === 'oeh' && $oehBeitrag) + { + $typ->standardbetrag = $oehBeitrag; + } + else + { + $typ->standardbetrag = $row->standardbetrag; + } + $typ->standardtext = $row->standardtext; $typ->credit_points = $row->credit_points; $typ->aktiv = $this->db_parse_bool($row->aktiv); @@ -990,6 +1001,38 @@ class konto extends basis_db return false; } } + + private function _getOEHBeitrag() + { + $variablen_obj = new variable(); + $variablen_obj->loadVariables(get_uid()); + + $qry = "WITH semstart AS ( + SELECT start FROM public.tbl_studiensemester + WHERE studiensemester_kurzbz = '". $this->db_escape($variablen_obj->variable->semester_aktuell) . "' + ) + SELECT * FROM bis.tbl_oehbeitrag oehb + JOIN public.tbl_studiensemester semvon ON oehb.von_studiensemester_kurzbz = semvon.studiensemester_kurzbz + LEFT JOIN public.tbl_studiensemester sembis ON oehb.bis_studiensemester_kurzbz = sembis.studiensemester_kurzbz + JOIN semstart ON semstart.start::date >= semvon.start::date AND (sembis.studiensemester_kurzbz IS NULL OR semstart.start::date <= sembis.start::date) + ORDER BY semvon.start + LIMIT 1"; + + if ($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $summe = ($row->studierendenbeitrag + $row->versicherung) * -1; + return number_format((float)$summe, 2, '.', ''); + } + return false; + } + else + { + $this->errormsg = 'Fehler bei der Abfrage aufgetreten'; + return false; + } + } } ?> diff --git a/public/js/api/factory/stv/konto.js b/public/js/api/factory/stv/konto.js index 6c17d460d..adfc0c44e 100644 --- a/public/js/api/factory/stv/konto.js +++ b/public/js/api/factory/stv/konto.js @@ -65,10 +65,14 @@ export default { params: { buchungsnr } }; }, - getBuchungstypen() { + getBuchungstypen(studiensemester_kurzbz) { + let url = 'api/frontend/v1/stv/konto/getBuchungstypen' + if (!!studiensemester_kurzbz) + url = url + '/' + encodeURIComponent(studiensemester_kurzbz); + return { method: 'get', - url: 'api/frontend/v1/stv/konto/getBuchungstypen' + url: url }; - } + }, }; \ No newline at end of file diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Konto/New.js b/public/js/components/Stv/Studentenverwaltung/Details/Konto/New.js index cdb32de99..4060b5961 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Konto/New.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Konto/New.js @@ -83,6 +83,8 @@ export default { }); }, open() { + + this.getBuchungstypen(this.currentSemester); this.data = { buchungstyp_kurzbz: '', betrag: '-0.00', @@ -105,7 +107,7 @@ export default { const text = typ.standardtext || ''; const creditpoints = typ.credit_points || ''; - if (!this.data.betrag || this.data.betrag == '-0.00') + if (!this.data.betrag || this.data.betrag == '-0.00' || this.data.betrag !== amount) this.data.betrag = amount; if (!this.data.buchungstext) @@ -113,7 +115,18 @@ export default { if (this.config.showCreditpoints && (this.data.credit_points == '0.00' || this.data.credit_points === null)) this.data.credit_points = creditpoints; - } + }, + getBuchungstypen(studiensemester_kurzbz) + { + this.$api + .call(ApiKonto.getBuchungstypen(studiensemester_kurzbz)) + .then(result => { + this.lists.buchungstypen = result.data; + if (this.data.buchungstyp_kurzbz) + this.checkDefaultBetrag(this.data.buchungstyp_kurzbz); + }) + .catch(this.$fhcAlert.handleSystemError); + }, }, template: ` @@ -166,6 +179,7 @@ export default { From 97126553f0a969d4ffd3c500f550c7409a3ce2f7 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Wed, 24 Sep 2025 11:33:16 +0200 Subject: [PATCH 05/42] get sum of ects for berufliche Kompetenzen dynamically --- rdf/diplomasupplement.xml.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rdf/diplomasupplement.xml.php b/rdf/diplomasupplement.xml.php index ffa49d88e..7ae733f99 100644 --- a/rdf/diplomasupplement.xml.php +++ b/rdf/diplomasupplement.xml.php @@ -715,9 +715,8 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") //bei masterlehrgängen und $studienplan_ects >= 120 ECTS: Andruck der beruflichen Kompetenzen, wenn die Lv angerechnet wurde if ($row->typ == 'l' && $regelstudiendauer >= 4) { - $ects_berufliche_kompetenzen = 30; + $ects_berufliche_kompetenzen = 0; echo ''; - echo ''.$row->typ . ' '. $studienplan_ects . ''; echo 'Validierung beruflicher Kompetenzen'; echo ''.$ects_berufliche_kompetenzen.''; @@ -751,6 +750,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") { $benotungsdatum = $datum->formatDatum($row_sem_0->benotungsdatum, 'd/m/Y'); $note = $db->db_parse_bool($row_sem_0->offiziell) ? $row_sem_0->anmerkung : $row_sem_0->note; + $ects_berufliche_kompetenzen += $row_sem_0->ects; echo ' ' . $row_sem_0->lehrveranstaltung_id . ' From c56d323cd36ce3715c4cc661eb4ec561e65b10c3 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Tue, 13 Jan 2026 09:15:30 +0100 Subject: [PATCH 06/42] build sum ects_berufliche_kompetenzen after sql --- rdf/diplomasupplement.xml.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rdf/diplomasupplement.xml.php b/rdf/diplomasupplement.xml.php index b86a23954..bf3dc1253 100644 --- a/rdf/diplomasupplement.xml.php +++ b/rdf/diplomasupplement.xml.php @@ -713,13 +713,13 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $ects_berufliche_kompetenzen = 0; //bei masterlehrgängen und $studienplan_ects >= 120 ECTS: Andruck der beruflichen Kompetenzen, wenn die Lv angerechnet wurde + //TODO(Manu) check if rule still valid if ($row->typ == 'l' && $regelstudiendauer >= 4) { $ects_berufliche_kompetenzen = 0; echo ''; echo 'Validierung beruflicher Kompetenzen'; - echo ''.$ects_berufliche_kompetenzen.''; $qry_sem_0=" SELECT lehrveranstaltung_id, @@ -765,6 +765,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") '; } } + echo ''.$ects_berufliche_kompetenzen.''; echo ''; } @@ -1206,7 +1207,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") echo ""; } - //Korrektur ects_total um berufliche Kompetenzen + //TODO(Manu) check if rule still valid if ($row->typ == 'l' && $regelstudiendauer >= 4) { $ects_total += $ects_berufliche_kompetenzen; From a4b1104abfbdd10e0f2fc48b7a60f9511bee4ba1 Mon Sep 17 00:00:00 2001 From: Paolo Date: Tue, 10 Mar 2026 12:12:30 +0100 Subject: [PATCH 07/42] Added a the new column "ECTS Summe" for the "Notenspiegel erweitert" XLS export --- content/statistik/notenspiegel_erweitert.php | 104 ++++++++++--------- 1 file changed, 56 insertions(+), 48 deletions(-) diff --git a/content/statistik/notenspiegel_erweitert.php b/content/statistik/notenspiegel_erweitert.php index 67097ed22..186d80c12 100644 --- a/content/statistik/notenspiegel_erweitert.php +++ b/content/statistik/notenspiegel_erweitert.php @@ -95,37 +95,37 @@ foreach ($result_student as $row) if ($uids == '') die('Es befinden sich keine Studierende in diesem Semester'); -$qry = "SELECT - lehrveranstaltung_id, bezeichnung, studiengang_kz, semester, ects - FROM - lehre.tbl_lehrveranstaltung - WHERE - lehrveranstaltung_id IN - ( - SELECT - distinct lehrveranstaltung_id - FROM - campus.vw_student_lehrveranstaltung, public.tbl_studentlehrverband - WHERE - tbl_studentlehrverband.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND - tbl_studentlehrverband.semester=".$db->db_add_param($semester, FHC_INTEGER)." AND - vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND - uid=student_uid AND - vw_student_lehrveranstaltung.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz +$qry = "SELECT + lehrveranstaltung_id, bezeichnung, studiengang_kz, semester, ects + FROM + lehre.tbl_lehrveranstaltung + WHERE + lehrveranstaltung_id IN ( + SELECT + DISTINCT lehrveranstaltung_id + FROM + campus.vw_student_lehrveranstaltung + JOIN public.tbl_studentlehrverband ON(student_uid = uid) + WHERE + tbl_studentlehrverband.studiengang_kz = ".$db->db_add_param($studiengang_kz, FHC_INTEGER)." + AND tbl_studentlehrverband.semester = ".$db->db_add_param($semester, FHC_INTEGER)." + AND vw_student_lehrveranstaltung.studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)." + AND vw_student_lehrveranstaltung.studiensemester_kurzbz = tbl_studentlehrverband.studiensemester_kurzbz ) - AND studiengang_kz<>0 + AND studiengang_kz != 0 AND zeugnis - UNION - SELECT - lehrveranstaltung_id, bezeichnung, studiengang_kz, semester, ects - FROM - lehre.tbl_lehrveranstaltung JOIN lehre.tbl_zeugnisnote USING(lehrveranstaltung_id) - WHERE - tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND - tbl_zeugnisnote.student_uid in($uids) AND - tbl_zeugnisnote.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND - zeugnis - ORDER BY bezeichnung"; + UNION + SELECT + lehrveranstaltung_id, bezeichnung, studiengang_kz, semester, ects + FROM + lehre.tbl_lehrveranstaltung + JOIN lehre.tbl_zeugnisnote USING(lehrveranstaltung_id) + WHERE + tbl_lehrveranstaltung.studiengang_kz = ".$db->db_add_param($studiengang_kz, FHC_INTEGER)." + AND tbl_zeugnisnote.student_uid IN ($uids) + AND tbl_zeugnisnote.studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)." + AND zeugnis + ORDER BY bezeichnung"; if (!$result_lva = $db->db_query($qry)) die('Fehler beim Ermitteln der Lehrveranstaltungen'); @@ -338,6 +338,8 @@ if ($typ == 'xls') } $anzahl_lvspalten = $spalte - 2; + $worksheet->write($zeile, ++$spalte, 'ECTS Summe', $format_bold); + $maxlength[$spalte] = 15; $worksheet->write($zeile, ++$spalte, 'Notendurchschnitt', $format_bold); $maxlength[$spalte] = 15; $worksheet->write($zeile, ++$spalte, "Gewichteter\nNotendurchschnitt", $format_bold_wrap); @@ -372,9 +374,12 @@ if ($typ == 'xls') $worksheet->write($zeile, ++$spalte, $row_student->gruppe, $format_bold_left); $worksheet->write($zeile, ++$spalte, $row_student->matrikelnr, $format_bold); - //Alle Zeugnisnoten des Studierenden holen + // Alle Zeugnisnoten des Studierenden holen $noten = array(); - $qry = "SELECT * FROM lehre.tbl_zeugnisnote WHERE student_uid=".$db->db_add_param($row_student->uid)." AND studiensemester_kurzbz=".$db->db_add_param($semester_aktuell); + $qry = "SELECT lehrveranstaltung_id, note + FROM lehre.tbl_zeugnisnote + WHERE student_uid = ".$db->db_add_param($row_student->uid)." + AND studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell); if ($result = $db->db_query($qry)) while ($row = $db->db_fetch_object($result)) $noten[$row->lehrveranstaltung_id] = $row->note; @@ -382,15 +387,16 @@ if ($typ == 'xls') //Zu jeder Lehrveranstaltungsnote Prüfungstyp (Anzahl der Antritte) holen $pruefungstypen = array(); $qry = "SELECT tbl_lehrveranstaltung.lehrveranstaltung_id, pruefungstyp_kurzbz, sort, datum - FROM - lehre.tbl_pruefung - JOIN - lehre.tbl_lehreinheit using(lehreinheit_id) - JOIN - lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id) - WHERE - student_uid=".$db->db_add_param($row_student->uid)." AND studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." - ORDER BY lehrveranstaltung_id, sort, datum"; + FROM + lehre.tbl_pruefung + JOIN + lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN + lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + WHERE + student_uid = ".$db->db_add_param($row_student->uid)." + AND studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell)." + ORDER BY lehrveranstaltung_id, sort, datum"; if ($result = $db->db_query($qry)) { while ($row = $db->db_fetch_object($result)) @@ -399,15 +405,14 @@ if ($typ == 'xls') } } - //Alle LVs holen zu denen der Studierende zugeteilt ist + // Alle LVs holen zu denen der Studierende zugeteilt ist $zugeteilte_lvs = array(); - $qry = "SELECT distinct lehrveranstaltung_id - FROM - campus.vw_student_lehrveranstaltung - WHERE - uid=".$db->db_add_param($row_student->uid)." AND - studiensemester_kurzbz=".$db->db_add_param($semester_aktuell); - + $qry = "SELECT DISTINCT lehrveranstaltung_id + FROM + campus.vw_student_lehrveranstaltung + WHERE + uid = ".$db->db_add_param($row_student->uid)." + AND studiensemester_kurzbz = ".$db->db_add_param($semester_aktuell); if ($result = $db->db_query($qry)) while ($row = $db->db_fetch_object($result)) $zugeteilte_lvs[] = $row->lehrveranstaltung_id; @@ -422,6 +427,7 @@ if ($typ == 'xls') { $row_lva = $db->db_fetch_object($result_lva, $rowcount); $rowcount++; + //wenn es eine Note gibt if (isset($noten[$row_lva->lehrveranstaltung_id])) { @@ -489,6 +495,7 @@ if ($typ == 'xls') if ($summeects != 0) $gewichtetenote /= $summeects; + $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $summeects), $format_number); $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $schnitt), $format_number); $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $gewichtetenote), $format_number); if ($gewichtetenote != 0) @@ -529,6 +536,7 @@ if ($typ == 'xls') $schnitt = $summe_schnitt / $anzahl_schnitt; else $schnitt = 0; + $worksheet->write($zeile, ++$spalte, '-', $format_bold_center); $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $schnitt), $format_number); if ($anzahlgewichtet != 0) $summegewichtet = $summegewichtet / $anzahlgewichtet; From c0b685c77bf7acd9675eccc99b56e3bb56d35452 Mon Sep 17 00:00:00 2001 From: Paolo Date: Tue, 10 Mar 2026 16:50:23 +0100 Subject: [PATCH 08/42] - ECTS Summe zugeteilt (Should be 30) only applied courses (not grey) - ECTS Summe gewichtet (current Sum) --- content/statistik/notenspiegel_erweitert.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/content/statistik/notenspiegel_erweitert.php b/content/statistik/notenspiegel_erweitert.php index 186d80c12..264324154 100644 --- a/content/statistik/notenspiegel_erweitert.php +++ b/content/statistik/notenspiegel_erweitert.php @@ -338,8 +338,10 @@ if ($typ == 'xls') } $anzahl_lvspalten = $spalte - 2; - $worksheet->write($zeile, ++$spalte, 'ECTS Summe', $format_bold); - $maxlength[$spalte] = 15; + $worksheet->write($zeile, ++$spalte, 'ECTS Summe zugeteilt', $format_bold); + $maxlength[$spalte] = 20; + $worksheet->write($zeile, ++$spalte, 'ECTS Summe gewichtet', $format_bold); + $maxlength[$spalte] = 20; $worksheet->write($zeile, ++$spalte, 'Notendurchschnitt', $format_bold); $maxlength[$spalte] = 15; $worksheet->write($zeile, ++$spalte, "Gewichteter\nNotendurchschnitt", $format_bold_wrap); @@ -421,6 +423,7 @@ if ($typ == 'xls') $summe = 0; $rowcount = 0; $summeects = 0; + $total_ects = 0; $gewichtetenote = 0; while ($rowcount < $db->db_num_rows($result_lva)) @@ -433,6 +436,7 @@ if ($typ == 'xls') { $note = $noten[$row_lva->lehrveranstaltung_id]; $format = 0; + $total_ects += $row_lva->ects; //wenn für die LV der Studierende eine Nachprüfung hat (z.B. 2 Termin, kommissionelle...) if (isset($pruefungstypen[$row_lva->lehrveranstaltung_id])) @@ -478,6 +482,7 @@ if ($typ == 'xls') //Keine Note fuer diese LV vorhanden if (in_array($row_lva->lehrveranstaltung_id, $zugeteilte_lvs)) { + $total_ects += $row_lva->ects; $worksheet->write($zeile, ++$spalte, '', $format_colored_nichteingetragen); } else @@ -495,6 +500,7 @@ if ($typ == 'xls') if ($summeects != 0) $gewichtetenote /= $summeects; + $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $total_ects), $format_number); $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $summeects), $format_number); $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $schnitt), $format_number); $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $gewichtetenote), $format_number); @@ -537,6 +543,7 @@ if ($typ == 'xls') else $schnitt = 0; $worksheet->write($zeile, ++$spalte, '-', $format_bold_center); + $worksheet->write($zeile, ++$spalte, '-', $format_bold_center); $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $schnitt), $format_number); if ($anzahlgewichtet != 0) $summegewichtet = $summegewichtet / $anzahlgewichtet; From ee41b2b68d2acdbde395b4f28dcb2fba5a575ee9 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Mon, 16 Mar 2026 09:40:40 +0100 Subject: [PATCH 09/42] alert und confirm auf dialog umgebaut --- cis/testtool/frage.php | 86 ++++++++++++++++++++++++++++++++++----- locale/de-AT/testtool.php | 2 + locale/en-US/testtool.php | 2 + 3 files changed, 79 insertions(+), 11 deletions(-) diff --git a/cis/testtool/frage.php b/cis/testtool/frage.php index a5f4100c9..5a5aaaa18 100644 --- a/cis/testtool/frage.php +++ b/cis/testtool/frage.php @@ -80,9 +80,17 @@ echo ' + + + - '; + include('../../../include/meta/jquery.php'); + include('../../../include/meta/jquery-tablesorter.php'); + const MOODLE_ADDON_KURZBZ = 'moodle'; // Load Addons to get Moodle_Path @@ -71,7 +72,7 @@ echo ' $("#myTable").tablesorter( { sortList: [[0,0],[1,0]], - widgets: [\'zebra\'] + widgets: [\'zebra\',\'filter\'] }); } ); @@ -151,8 +152,9 @@ foreach($service->result as $row) $person = new person(); $person->getPersonFromBenutzer($row->operativ_uid); $operativ = $person->nachname.' '.$person->vorname; + $oeBez = new organisationseinheit($row->oe_kurzbz); echo ''; - echo '',$row->oe_kurzbz,''; + echo '',$oeBez->bezeichnung,''; echo ''.$row->bezeichnung.''; echo '',$row->beschreibung,''; echo '',$design,''; diff --git a/vilesci/stammdaten/reihungstest_administration.php b/vilesci/stammdaten/reihungstest_administration.php index 3b59e1961..6fbf3e5c0 100644 --- a/vilesci/stammdaten/reihungstest_administration.php +++ b/vilesci/stammdaten/reihungstest_administration.php @@ -588,7 +588,9 @@ if(isset($_POST['testergebnisanzeigen']) && isset($_POST['prestudent_id'])) { if(is_numeric($_POST['prestudent_id']) && $_POST['prestudent_id']!='') { - $qry="SELECT nachname,vorname,person_id,prestudent_id,tbl_pruefling.pruefling_id,tbl_pruefling_frage.begintime,bezeichnung,kurzbz,tbl_frage.nummer,level, tbl_vorschlag.nummer as antwortnummer, tbl_vorschlag.punkte + $qry="SELECT nachname,vorname,person_id,prestudent_id,tbl_pruefling.pruefling_id, + tbl_pruefling_frage.begintime,bezeichnung,kurzbz,tbl_frage.nummer,level, + tbl_vorschlag.nummer as antwortnummer, tbl_vorschlag.punkte, tbl_frage.frage_id FROM testtool.tbl_antwort JOIN testtool.tbl_vorschlag USING(vorschlag_id) JOIN testtool.tbl_frage USING (frage_id) @@ -615,6 +617,7 @@ if(isset($_POST['testergebnisanzeigen']) && isset($_POST['prestudent_id'])) Level Antwort # Punkte + FrageID '; @@ -632,6 +635,7 @@ if(isset($_POST['testergebnisanzeigen']) && isset($_POST['prestudent_id'])) echo "$row->level"; echo "$row->antwortnummer"; echo "$row->punkte"; + echo "$row->frage_id"; echo ''; } echo ''; diff --git a/vilesci/stammdaten/reihungstestverwaltung.php b/vilesci/stammdaten/reihungstestverwaltung.php index 990b3e129..f415f33cd 100644 --- a/vilesci/stammdaten/reihungstestverwaltung.php +++ b/vilesci/stammdaten/reihungstestverwaltung.php @@ -837,6 +837,25 @@ if(isset($_GET['excel']))