diff --git a/system/prestudentstatus_studienplan_id.php b/system/prestudentstatus_studienplan_id.php
new file mode 100644
index 000000000..20e8c4db0
--- /dev/null
+++ b/system/prestudentstatus_studienplan_id.php
@@ -0,0 +1,152 @@
+
+ */
+
+
+require_once('../config/system.config.inc.php');
+require_once('../include/basis_db.class.php');
+require_once('../version.php');
+require_once('../include/benutzerberechtigung.class.php');
+
+// Datenbank Verbindung
+$db = new basis_db();
+echo '
+
+ Studienplan_id prestudentstatus
+
+
+
+
+
+
Studienplan_id Update
';
+
+$uid = get_uid();
+$rechte = new benutzerberechtigung();
+$rechte->getBerechtigungen($uid);
+
+if(!$rechte->isBerechtigt('admin'))
+{
+ exit('Sie haben keine Berechtigung');
+}
+
+
+if(isset($_POST["start"]) && $_POST["start"] == "start")
+{
+ if($result = $db->db_query("SELECT prestudent_id, orgform_kurzbz, studiensemester_kurzbz, ausbildungssemester, status_kurzbz FROM public.tbl_prestudentstatus WHERE studienplan_id IS NULL"))
+ {
+ $all_count = $db->db_num_rows($result);
+ $entries_not_unique = 0;
+ $entries_not_found = 0;
+ $entries_with_error = 0;
+
+ echo "Es gibt " . $all_count . " zu bearbeitende Einträge ";
+
+ while($row = $db->db_fetch_object($result))
+ {
+ $qry_search="
+ SELECT
+ studienplan_id
+ FROM
+ lehre.tbl_studienplan
+ JOIN lehre.tbl_studienordnung USING(studienordnung_id)
+ WHERE tbl_studienordnung.studiengang_kz=
+ (
+ SELECT studiengang_kz
+ FROM public.tbl_prestudent
+ WHERE prestudent_id=".$db->db_add_param($row->prestudent_id,FHC_INTEGER)."
+ )
+ AND lehre.tbl_studienplan.orgform_kurzbz=
+ (
+ SELECT COALESCE
+ (
+ ".$db->db_add_param($row->orgform_kurzbz).",
+ (
+ SELECT orgform_kurzbz FROM public.tbl_studiengang
+ WHERE
+ studiengang_kz=(SELECT studiengang_kz FROM public.tbl_prestudent WHERE prestudent_id=".$db->db_add_param($row->prestudent_id,FHC_INTEGER).")
+ )
+ )
+ )
+ AND EXISTS
+ (
+ SELECT * FROM lehre.tbl_studienplan_semester
+ WHERE
+ studienplan_id=tbl_studienplan.studienplan_id
+ AND studiensemester_kurzbz=".$db->db_add_param($row->studiensemester_kurzbz)."
+ AND semester=".$db->db_add_param($row->ausbildungssemester,FHC_INTEGER)."
+ );
+ ";
+
+
+ $result_search = $db->db_query($qry_search);
+
+ $ct = $db->db_num_rows($result_search);
+ if($ct < 1)
+ {
+ $entries_not_found++;
+ }
+ else if($ct > 1)
+ {
+ $entries_not_unique++;
+ }
+ else
+ {
+ $sp = $db->db_fetch_object($result_search);
+ if(!$db->db_query("UPDATE public.tbl_prestudentstatus SET studienplan_id=".$db->db_add_param($sp->studienplan_id, FHC_INTEGER).
+ " WHERE prestudent_id=".$db->db_add_param($row->prestudent_id, FHC_INTEGER).
+ " AND status_kurzbz=".$db->db_add_param($row->status_kurzbz).
+ " AND studiensemester_kurzbz=".$db->db_add_param($row->studiensemester_kurzbz).
+ " AND ausbildungssemester=".$db->db_add_param($row->ausbildungssemester, FHC_INTEGER)
+ ))
+ $entries_with_error ++;
+ }
+ }
+
+ $rest_count = $all_count - $entries_not_found - $entries_not_unique - $entries_with_error;
+ $quote = 100/$all_count*$rest_count;
+
+ echo "Es wurden " . $rest_count . " Einträge eingetragen ";
+ echo $entries_not_found." nicht gefunden ";
+ echo $entries_not_unique." nicht eindeutig ";
+ echo $entries_with_error." konnten aufgrund eines Fehlers nicht eingetragen werden ";
+ echo "Es wurde eine quote von " . $quote . " erreicht ";
+ }
+}
+else
+{
+?>
+
Der folgende Vorgang kann unter Umständen mehrere Minuten dauern!
+
Es wird versucht anhand der orgform_kurzbz, der prestudent_id, der studiensemester_kurzbz und des ausbildungssemesters die studienplan_id des prestudentstatus zu ermitteln
+
Es werden nur Einträge mit studienplan_id IS NULL geändert
+
+
+';
+?>
diff --git a/vilesci/personen/aliquote_reduktion.php b/vilesci/personen/aliquote_reduktion.php
index e065f3119..3492f2c65 100644
--- a/vilesci/personen/aliquote_reduktion.php
+++ b/vilesci/personen/aliquote_reduktion.php
@@ -276,6 +276,7 @@
{
var beginNeeded = needed;
+ //distribute the remainig applicants to the present ZGVs
for(var i=0; i < zgvElems.length; i++)
{
for(var j in aqr.studenten)
@@ -296,8 +297,10 @@
}
}
+ //if we are finished or the ZGVs are full
if(needed < 1 || beginNeeded == needed)
{
+ //distribute the rest of the applicants, WITH a ZGV group
for(var j in aqr.studenten)
{
if(!aqr.studenten[j].selected && aqr.studenten[j].bezeichnung)
@@ -310,6 +313,7 @@
}
}
}
+ //distribute the rest of the applicants, WITHOUT a ZGV group
for(var j in aqr.studenten)
{
if(!aqr.studenten[j].selected && !aqr.studenten[j].bezeichnung)
@@ -323,7 +327,7 @@
}
}
if(needed > 0)
- alert("Es werden mehr Studenten benötigt, als es Bewerber gibt!");
+ alert("Es werden mehr Bewerber benötigt, als gibt!");
return;
}
else