diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index 01839e4b9..759769df7 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -6259,6 +6259,172 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
}
}
+// Neue Funktion get_ects_summe_schulisch
+if(!@$db->db_query("SELECT public.get_ects_summe_schulisch('', 0, 0)"))
+{
+ $qry = 'CREATE FUNCTION public.get_ects_summe_schulisch(character varying, integer, integer) RETURNS numeric
+ LANGUAGE plpgsql
+ AS $_$
+ DECLARE var_student_uid ALIAS FOR $1;
+ DECLARE var_prestudent_id ALIAS FOR $2;
+ DECLARE var_studiengang_kz ALIAS FOR $3;
+ DECLARE var_einstiegsausbildungssemester integer;
+ DECLARE var_einstiegsstudiensemester_kurzbz varchar(32);
+ DECLARE var_einstiegsorgform_kurzbz varchar(32);
+ DECLARE rec_quereinstiegs_studiensemester RECORD;
+ DECLARE sum_quereinstiegs_ects numeric(4, 1) := 0;
+ DECLARE sum_schulische_ects numeric(4, 1) := 0;
+
+
+ BEGIN
+
+ -- IF STUDENT IS QUEREINSTEIGER, GET ECTS SUMME OF ANGERECHNETE SEMESTER
+ -- Get Einstiegssemester
+ SELECT INTO var_einstiegsausbildungssemester , var_einstiegsstudiensemester_kurzbz, var_einstiegsorgform_kurzbz ausbildungssemester, studiensemester_kurzbz, orgform_kurzbz from public.tbl_prestudentstatus
+ WHERE prestudent_id = var_prestudent_id
+ AND status_kurzbz = \'Student\'
+ ORDER BY datum, insertamum, ext_id
+ LIMIT 1;
+
+ -- If Einstiegssemester > 1 (= Quereinsteiger)
+ IF (var_einstiegsausbildungssemester > 1) THEN
+ -- ...get all Quereinstiegssemester
+ FOR rec_quereinstiegs_studiensemester IN SELECT studiensemester_kurzbz FROM public.tbl_studiensemester
+ WHERE ende <= (select start from public.tbl_studiensemester WHERE studiensemester_kurzbz = var_einstiegsstudiensemester_kurzbz )
+ ORDER BY start DESC
+ LIMIT (var_einstiegsausbildungssemester -1)
+ -- ...loop the Quereinstiegssemester
+ LOOP
+ -- ...and sum up ECTS of each Quereinstiegssemester
+ sum_quereinstiegs_ects = sum_quereinstiegs_ects + (SELECT
+ SUM(tbl_lehrveranstaltung.ects)
+ FROM
+ lehre.tbl_studienplan
+ JOIN lehre.tbl_studienplan_lehrveranstaltung USING (studienplan_id)
+ JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
+ WHERE
+ tbl_studienplan.studienplan_id = (
+ SELECT
+ studienplan_id
+ FROM
+ lehre.tbl_studienordnung
+ JOIN lehre.tbl_studienplan USING (studienordnung_id)
+ JOIN lehre.tbl_studienplan_semester USING (studienplan_id)
+ WHERE tbl_studienordnung.studiengang_kz = var_studiengang_kz
+ AND tbl_studienplan_semester.semester = var_einstiegsausbildungssemester - 1
+ AND tbl_studienplan_semester.studiensemester_kurzbz = rec_quereinstiegs_studiensemester.studiensemester_kurzbz
+ AND tbl_studienplan.orgform_kurzbz = var_einstiegsorgform_kurzbz
+
+ LIMIT 1
+ )
+ AND tbl_studienplan_lehrveranstaltung.semester = var_einstiegsausbildungssemester
+ AND studienplan_lehrveranstaltung_id_parent IS NULL -- auf Modulebene
+ AND tbl_studienplan_lehrveranstaltung.export = TRUE);
+
+ var_einstiegsausbildungssemester = var_einstiegsausbildungssemester - 1;
+ END LOOP;
+ END IF;
+
+
+ -- GET ECTS SUMME OF ALLE BISHER ANGERECHNETEN LEHRVERANSTALTUNGEN. ANRECHNUNGSGRUND: SCHULISCH.
+ SELECT INTO sum_schulische_ects COALESCE(SUM(ects), 0) FROM (
+ SELECT
+ lehrveranstaltung_id, studiensemester_kurzbz, ects
+ FROM
+ lehre.tbl_zeugnisnote
+ LEFT JOIN lehre.tbl_anrechnung USING(lehrveranstaltung_id, studiensemester_kurzbz)
+ JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
+ JOIN public.tbl_student USING(student_uid)
+ WHERE
+ tbl_zeugnisnote.note = 6
+ AND student_uid = var_student_uid
+ AND lehre.tbl_anrechnung.prestudent_id IN (tbl_student.prestudent_id, NULL)
+ AND begruendung_id != 4 -- schulisch
+
+ UNION
+
+ SELECT
+ lehrveranstaltung_id, studiensemester_kurzbz, ects
+ FROM
+ lehre.tbl_anrechnung
+ JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
+ JOIN public.tbl_student USING(prestudent_id)
+ WHERE
+ genehmigt_von IS NOT NULL
+ AND student_uid = var_student_uid
+ AND begruendung_id != 4 -- schulisch
+ ) lvsangerechnet;
+
+ -- BUILD ECTS SUMME OF QUEREINSTIEGSSEMESTER- + ANGERECHNETEN LVs-ECTS
+ -- Summe aller bisher schulisch begründet angerechneten LVs + der Quereinstiegssemester
+ sum_schulische_ects = sum_schulische_ects + sum_quereinstiegs_ects;
+
+ RETURN sum_schulische_ects ;
+
+ END;
+ $_$;
+
+ ALTER FUNCTION public.get_ects_summe_schulisch(character varying, integer, integer) OWNER TO fhcomplete;';
+
+ if(!$db->db_query($qry))
+ echo 'public.get_ects_summe_schulisch(student_uid, prestudent_id, studiengang_kz): '.$db->db_last_error().'
';
+ else
+ echo '
Funktion public.get_ects_summe_schulisch(student_uid, prestudent_id, studiengang_kz) hinzugefügt';
+}
+
+// Neue Funktion get_ects_summe_beruflich
+if(!@$db->db_query("SELECT public.get_ects_summe_beruflich('')"))
+{
+ $qry = 'CREATE FUNCTION public.get_ects_summe_beruflich(character varying) RETURNS numeric
+ LANGUAGE plpgsql
+ AS $_$
+ DECLARE var_student_uid ALIAS FOR $1;
+ DECLARE sum_berufliche_ects numeric(4, 1) := 0;
+
+ BEGIN
+
+ SELECT INTO sum_berufliche_ects COALESCE(SUM(ects), 0) FROM (
+ SELECT
+ lehrveranstaltung_id, studiensemester_kurzbz, ects
+ FROM
+ lehre.tbl_zeugnisnote
+ LEFT JOIN lehre.tbl_anrechnung USING(lehrveranstaltung_id, studiensemester_kurzbz)
+ JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
+ JOIN public.tbl_student USING(student_uid)
+ WHERE
+ tbl_zeugnisnote.note = 6
+ AND student_uid = var_student_uid
+ AND lehre.tbl_anrechnung.prestudent_id IN (tbl_student.prestudent_id, NULL)
+ AND begruendung_id = 4 -- beruflich
+
+ UNION
+
+ SELECT
+ lehrveranstaltung_id, studiensemester_kurzbz, ects
+ FROM
+ lehre.tbl_anrechnung
+ JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
+ JOIN public.tbl_student USING(prestudent_id)
+ WHERE
+ genehmigt_von is not null
+ AND student_uid = var_student_uid
+ AND begruendung_id = 4 -- beruflich
+ ) lvsangerechnet;
+
+ RETURN sum_berufliche_ects;
+
+ END;
+ $_$;
+
+ ALTER FUNCTION public.get_ects_summe_beruflich(character varying) OWNER TO fhcomplete;';
+
+ if(!$db->db_query($qry))
+ echo 'public.get_ects_summe_beruflich(student_uid): '.$db->db_last_error().'
';
+ else
+ echo '
Funktion public.get_ects_summe_beruflich(student_uid) hinzugefügt';
+}
+
+
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '