Date: Thu, 9 Jun 2016 09:53:00 +0200
Subject: [PATCH 4/9] Anmerkung/Prio wird bei Aliqoute Reduktion mit angezeigt
---
include/prestudent.class.php | 8 ++++++--
vilesci/personen/aliquote_reduktion.php | 4 ++++
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/include/prestudent.class.php b/include/prestudent.class.php
index 17f84fd32..0656aa110 100755
--- a/include/prestudent.class.php
+++ b/include/prestudent.class.php
@@ -1761,7 +1761,9 @@ class prestudent extends person
if($stg_obj->typ=='m')
{
- $qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus
+ $qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus,
+ (Select anmerkung from public.tbl_prestudentstatus where prestudent_id=tbl_prestudent.prestudent_id AND studiensemester_kurzbz=". $this->db_add_param($studiensemester_kurzbz)."
+ AND status_kurzbz='Bewerber') as anmerkung
FROM
public.tbl_prestudent
JOIN public.tbl_person USING(person_id)
@@ -1787,7 +1789,9 @@ class prestudent extends person
}
else
{
- $qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus
+ $qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus,
+ (Select anmerkung from public.tbl_prestudentstatus where prestudent_id=tbl_prestudent.prestudent_id AND studiensemester_kurzbz=". $this->db_add_param($studiensemester_kurzbz)."
+ AND status_kurzbz='Bewerber') as anmerkung
FROM
public.tbl_prestudent
JOIN public.tbl_person USING(person_id)
diff --git a/vilesci/personen/aliquote_reduktion.php b/vilesci/personen/aliquote_reduktion.php
index be9094b7d..6cc58cce1 100644
--- a/vilesci/personen/aliquote_reduktion.php
+++ b/vilesci/personen/aliquote_reduktion.php
@@ -403,6 +403,7 @@
| Reihung |
RT Gesamt |
Interviewbogen |
+ Anmerkung/Prio |
Status |
{{aqr.choosenStuds}}/{{aqr.selectedStudienplatz.apz}} |
{{aqr.choosenStuds}}/Keine APZ |
@@ -418,6 +419,7 @@
{{stud.seqPlace}} |
{{stud.rt_gesamtpunkte}} |
{{stud.interviewbogen?'vorhanden':'nicht vorhanden'}} |
+ {{stud.anmerkung}} |
{{stud.laststatus}} |
@@ -441,6 +443,7 @@
| Reihung |
RT Gesamt |
Interviewbogen |
+ Anmerkung/Prio |
Status |
|
@@ -455,6 +458,7 @@
{{stud.seqPlace}} |
{{stud.rt_gesamtpunkte}} |
{{stud.interviewbogen?'vorhanden':'nicht vorhanden'}} |
+ {{stud.anmerkung}} |
{{stud.laststatus}} |
From c8e743d7cd9d1eeff4d10c3489460abbafbfd210 Mon Sep 17 00:00:00 2001
From: Stefan Puraner
Date: Fri, 10 Jun 2016 14:49:34 +0200
Subject: [PATCH 5/9] added stg bezeichnung
---
rdf/lehrveranstaltungszeugnis_ktu.rdf.php | 2 ++
1 file changed, 2 insertions(+)
diff --git a/rdf/lehrveranstaltungszeugnis_ktu.rdf.php b/rdf/lehrveranstaltungszeugnis_ktu.rdf.php
index e632a92e6..28b3036c6 100755
--- a/rdf/lehrveranstaltungszeugnis_ktu.rdf.php
+++ b/rdf/lehrveranstaltungszeugnis_ktu.rdf.php
@@ -300,6 +300,8 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$stg = new studiengang();
$stg->load($lvstg);
+
+ $xml .= " ".$stg_oe_obj->bezeichnung."";
$xml .= " ".$stg->bezeichnung."";
$xml .= " ".$stg->typ."";
$xml .= " ".sprintf('%04s',$lvstg)."";
From c57b84d10cb8c69f60a21bf2243a23221a5566b6 Mon Sep 17 00:00:00 2001
From: Andreas Moik
Date: Tue, 14 Jun 2016 10:11:16 +0200
Subject: [PATCH 6/9] implemented the aliquote reduction
---
vilesci/personen/aliquote_reduktion.php | 87 ++++++++++++++++++++++---
1 file changed, 77 insertions(+), 10 deletions(-)
diff --git a/vilesci/personen/aliquote_reduktion.php b/vilesci/personen/aliquote_reduktion.php
index 6cc58cce1..b46ee84a1 100644
--- a/vilesci/personen/aliquote_reduktion.php
+++ b/vilesci/personen/aliquote_reduktion.php
@@ -74,6 +74,7 @@
aqr.studiengaenge = [];
aqr.studiensemester = [];
aqr.studienplaetze = [];
+ aqr.zgvElems = [];
aqr.actualSequence = 1;
SERVICE_TARGET = "aliquote_reduktion.json.php";
@@ -112,6 +113,12 @@
if(!confirm("Es wurden zu viel Studenten gewählt!"))
return;
}
+ else
+ {
+ if(!confirm("Sind Sie sicher, dass Sie die ausgewählten Personen aufnehmen wollen?"))
+ return;
+ }
+
var prestudent_ids = [];
aqr.studenten.forEach(function(i)
@@ -190,7 +197,7 @@
aqr.studenten=res;
aqr.studenten.forEach(function(i)
{
- if(i.laststatus=='Wartender'||i.laststatus=='Bewerber')
+ if((i.laststatus=='Wartender'||i.laststatus=='Bewerber') && i.rt_gesamtpunkte !== null)
i.applicant = true;
else if(i.laststatus=='Student'||i.laststatus=='Aufgenommener')
i.selected=true;
@@ -212,12 +219,12 @@
return ret;
}
- aqr.getAcceptedCount = function()
+ aqr.getAcceptedCount = function(zgvGruppe)
{
var ret = 0;
aqr.studenten.forEach(function(i)
{
- if(i.laststatus=='Student'||i.laststatus=='Aufgenommener')
+ if((i.laststatus=='Student'||i.laststatus=='Aufgenommener') && (zgvGruppe === undefined || zgvGruppe === i.bezeichnung))
ret++;
});
return ret;
@@ -225,24 +232,55 @@
aqr.doPreselection = function()
{
- if(parseInt(aqr.selectedStudienplatz.apz) >= 0)
+ aqr.zgvElems = [];
+ if(parseInt(aqr.selectedStudienplatz.apz) >= 0) // we only preselect, if we have an APZ
{
aqr.studenten.sort(sortStudentenRTP);
var zgvs = aqr.getZGVArray();
var neededStudentsCount = aqr.selectedStudienplatz.apz - aqr.getAcceptedCount();
- var perZGV = parseInt(neededStudentsCount / zgvs.length);
+ var perZGV = aqr.studenten.length;
var zgvElems = [];
+ var allApplicants = [];
+
+ aqr.studenten.forEach(function(j)
+ {
+ if(j.applicant)
+ allApplicants.push(j);
+ });
zgvs.forEach(function(i)
{
- zgvElems.push({name:i,needed:perZGV});
+ var applicantsFromZGV = [];
+ aqr.studenten.forEach(function(j)
+ {
+ if(j.applicant && j.bezeichnung === i)
+ applicantsFromZGV.push(j);
+ });
+
+ // calculate the aliquote reduction for every ZGV
+ var percent = applicantsFromZGV.length / allApplicants.length * 100;
+ var neededFromZGV = (aqr.selectedStudienplatz.apz / 100 * percent) - aqr.getAcceptedCount(i);
+
+ if(neededFromZGV < 0)
+ neededFromZGV = 0;
+
+ zgvElems.push({name:i, needed:neededFromZGV, percent:percent, accepted: aqr.getAcceptedCount(i), neededSum: (aqr.selectedStudienplatz.apz / 100 * percent)});
});
- var residual = perZGV * zgvs.length;
+ aqr.zgvElems = JSON.parse(JSON.stringify(zgvElems));
+
+ // calculate the already distributed students
+ var residual = 0;
+ zgvElems.forEach(function(i)
+ {
+ residual += i.needed;
+ });
+
+ // calculate the difference from needed to already distributed
var resDiff = neededStudentsCount - residual;
// distribute the remaining places on the present ZGVs
- while(resDiff > 0)
+ while(resDiff > 0 && zgvElems.length > 0/*if there are no zgvs(to prevent a deadlock)*/)
{
zgvElems.forEach(function(i)
{
@@ -284,9 +322,10 @@
if(
aqr.studenten[j].laststatus!='Abgewiesener'
&& aqr.studenten[j].laststatus!='Abbrecher'
- && zgvElems[i].needed > 0
+ && parseInt(zgvElems[i].needed) > 0
&& aqr.studenten[j].bezeichnung == zgvElems[i].name
- && !aqr.studenten[j].seqPlace)
+ && !aqr.studenten[j].seqPlace
+ && !aqr.studenten[j].selected)
{
aqr.setSequence(aqr.studenten[j]);
zgvElems[i].needed --;
@@ -431,6 +470,34 @@
+ ZGV Informationen
+
+
+
+ | Name |
+ Prozent |
+ Insgesamt benötigt |
+ Bereits aufgenommen |
+ Noch benötigte Personen |
+
+
+
+
+ | {{zgv.name}} |
+ {{zgv.percent | number: 2}}% |
+ {{zgv.neededSum | parseInt}} |
+ {{zgv.accepted}} |
+ {{zgv.needed | parseInt}} |
+
+
+ | Summe |
+ |
+ {{aqr.selectedStudienplatz.apz}} |
+ {{aqr.getAcceptedCount()}} |
+ {{aqr.selectedStudienplatz.apz - aqr.getAcceptedCount()}} |
+
+
+
Bereits aufgenommene
From 7ba5026436eb969c3a7a408876eab93c3553a5dc Mon Sep 17 00:00:00 2001
From: oesi
Date: Tue, 14 Jun 2016 17:09:49 +0200
Subject: [PATCH 7/9] =?UTF-8?q?Personen=20ohne=20RTGesamtpunkte=20werden?=
=?UTF-8?q?=20nicht=20ber=C3=BCcksichtigt=20Wenn=20zu=20weniger=20Bewerber?=
=?UTF-8?q?=20als=20APZ=20vorhanden=20sind=20wird=20die=20Anzahl=20der=20P?=
=?UTF-8?q?ersonen=20aufgrund=20der=20Gesamtzahl=20der=20Bewerber=20berech?=
=?UTF-8?q?net=20anstatt=20anhand=20der=20APZ?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vilesci/personen/aliquote_reduktion.php | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/vilesci/personen/aliquote_reduktion.php b/vilesci/personen/aliquote_reduktion.php
index b46ee84a1..dd2f86df2 100644
--- a/vilesci/personen/aliquote_reduktion.php
+++ b/vilesci/personen/aliquote_reduktion.php
@@ -197,7 +197,7 @@
aqr.studenten=res;
aqr.studenten.forEach(function(i)
{
- if((i.laststatus=='Wartender'||i.laststatus=='Bewerber') && i.rt_gesamtpunkte !== null)
+ if((i.laststatus=='Wartender'||i.laststatus=='Bewerber') && i.rt_gesamtpunkte !== null && i.rt_gesamtpunkte > 0)
i.applicant = true;
else if(i.laststatus=='Student'||i.laststatus=='Aufgenommener')
i.selected=true;
@@ -249,6 +249,11 @@
allApplicants.push(j);
});
+ var applicantCount = aqr.selectedStudienplatz.apz;
+ if(applicantCount > allApplicants.length)
+ applicantCount = allApplicants.length;
+
+
zgvs.forEach(function(i)
{
var applicantsFromZGV = [];
@@ -260,12 +265,12 @@
// calculate the aliquote reduction for every ZGV
var percent = applicantsFromZGV.length / allApplicants.length * 100;
- var neededFromZGV = (aqr.selectedStudienplatz.apz / 100 * percent) - aqr.getAcceptedCount(i);
+ var neededFromZGV = (applicantCount / 100 * percent) - aqr.getAcceptedCount(i);
if(neededFromZGV < 0)
neededFromZGV = 0;
- zgvElems.push({name:i, needed:neededFromZGV, percent:percent, accepted: aqr.getAcceptedCount(i), neededSum: (aqr.selectedStudienplatz.apz / 100 * percent)});
+ zgvElems.push({name:i, needed:neededFromZGV, percent:percent, accepted: aqr.getAcceptedCount(i), neededSum: (applicantCount / 100 * percent)});
});
aqr.zgvElems = JSON.parse(JSON.stringify(zgvElems));
@@ -314,7 +319,7 @@
{
var beginNeeded = needed;
- //distribute the remainig applicants to the present ZGVs
+ //distribute the applicants to the present ZGVs
for(var i=0; i < zgvElems.length; i++)
{
for(var j in aqr.studenten)
@@ -325,7 +330,8 @@
&& parseInt(zgvElems[i].needed) > 0
&& aqr.studenten[j].bezeichnung == zgvElems[i].name
&& !aqr.studenten[j].seqPlace
- && !aqr.studenten[j].selected)
+ && !aqr.studenten[j].selected
+ && aqr.studenten[j].applicant)
{
aqr.setSequence(aqr.studenten[j]);
zgvElems[i].needed --;
@@ -342,7 +348,7 @@
//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)
+ if(!aqr.studenten[j].selected && aqr.studenten[j].bezeichnung && aqr.studenten[j].applicant)
{
aqr.setSequence(aqr.studenten[j]);
if(needed > 0 && (aqr.studenten[j].laststatus=='Wartender'||aqr.studenten[j].laststatus=='Bewerber'))
@@ -355,7 +361,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)
+ if(!aqr.studenten[j].selected && !aqr.studenten[j].bezeichnung && aqr.studenten[j].applicant)
{
aqr.setSequence(aqr.studenten[j]);
if(needed > 0 && (aqr.studenten[j].laststatus=='Wartender'||aqr.studenten[j].laststatus=='Bewerber'))
@@ -490,7 +496,7 @@
| {{zgv.needed | parseInt}} |
- | Summe |
+ Gesamt |
|
{{aqr.selectedStudienplatz.apz}} |
{{aqr.getAcceptedCount()}} |
@@ -499,7 +505,7 @@
- Bereits aufgenommene
+ Restliche Studenten
From a09a892b0b7f3003e64d129608a83df160ec8032 Mon Sep 17 00:00:00 2001
From: oesi
Date: Tue, 14 Jun 2016 17:12:41 +0200
Subject: [PATCH 8/9] =?UTF-8?q?Automatische=20Gruppe=20f=C3=BCr=20alle=20L?=
=?UTF-8?q?eitungen=20hinzugef=C3=BCgt?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
system/mlists/mlists_generate.php | 36 +++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/system/mlists/mlists_generate.php b/system/mlists/mlists_generate.php
index 56465f353..211431324 100644
--- a/system/mlists/mlists_generate.php
+++ b/system/mlists/mlists_generate.php
@@ -1702,6 +1702,42 @@ $error_msg='';
$error_msg.=$db->db_last_error().' '.$sql_querys;
}
+ $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')";
+ if(!($result_oe = $db->db_query($sql_query)))
+ $error_msg.=$db->db_last_error().' '.$sql_query;
+ // Personen holen die nicht im Verteiler sind
+ while($row_oe = $db->db_fetch_object($result_oe))
+ {
+ $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')";
+ if(!$db->db_query($sql_query))
+ {
+ $error_msg.=$db->db_last_error().$sql_query;
+ }
+ }
+
+ // **************************************************************
+ // Alle MA mit Funktion Leitung oder stvLeitung oder gfLtg
+ $mlist_name='TW_LEITUNG';
+
+ $grp = new gruppe();
+ setGeneriert($mlist_name);
+
+ // Personen holen die nicht mehr in den Verteiler gehoeren
+ echo ' '.$mlist_name.' wird abgeglichen!';
+ flush();
+
+ $sql_query = "SELECT DISTINCT uid FROM tbl_person JOIN tbl_benutzer
+ USING (person_id) JOIN tbl_benutzerfunktion USING (uid)
+ WHERE funktion_kurzbz in('Leitung','stvLtg','gLtg')
+ AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
+ AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
+
+ $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)";
+ if(!$db->db_query($sql_querys))
+ {
+ $error_msg.=$db->db_last_error().' '.$sql_querys;
+ }
+
$sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')";
if(!($result_oe = $db->db_query($sql_query)))
$error_msg.=$db->db_last_error().' '.$sql_query;
From a4fbebbf305b1f066173813371e1bdaa20655db5 Mon Sep 17 00:00:00 2001
From: Gerald Raab
Date: Wed, 15 Jun 2016 00:38:19 +0200
Subject: [PATCH 9/9] layout pruefungsanmeldeliste, ital phrases
---
cis/private/lehre/pruefung/pruefungsanmeldung.json.php | 10 ++++++----
.../lehre/pruefung/pruefungsanmeldungen_liste.php | 4 ++--
locale/it-IT/pruefung.php | 4 ++--
3 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php
index 90b13f5bc..805fb2409 100755
--- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php
+++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php
@@ -486,8 +486,8 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
{
if($termin->teilnehmer_max > $termin->getNumberOfParticipants() || $termin->teilnehmer_max == NULL)
{
- $pruefung = new pruefungCis();
- $reihung = $pruefung->getLastOfReihung($_REQUEST["termin_id"]);
+ $pruefung = new pruefungCis();
+ $reihung = $pruefung->getLastOfReihung($_REQUEST["termin_id"]);
$anmeldung = new pruefungsanmeldung();
$anmeldung->lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"];
$anmeldung->pruefungstermin_id = $_REQUEST["termin_id"];
@@ -500,7 +500,7 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
$konto = new konto();
$creditpoints = $konto->getCreditPoints($uid, $aktStudiensemester);
-
+
if($creditpoints !== false)
{
if($creditpoints < $lehrveranstaltung->ects)
@@ -550,6 +550,8 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
$prestudent->getPrestudenten($person->person_id);
$studiensemester = new studiensemester();
$stdsem = $studiensemester->getaktorNext();
+ if ($aktStudiensemester)
+ $stdsem = $aktStudiensemester;
if(count($prestudent->result) > 0)
{
@@ -588,7 +590,7 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
{
$anrechungSaveResult = true;
}
-
+
if($anrechungSaveResult)
{
if($anrechnung->anrechnung_id == "")
diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php
index 85126e44a..bcb256b9b 100755
--- a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php
+++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php
@@ -66,7 +66,7 @@ $rechte->getBerechtigungen($uid);
min-height: 297mm;
padding: 20mm;
margin: 10mm auto;
- border: 1px #D3D3D3 solid;
+ border: 1px #ffffff solid;
border-radius: 5px;
background: white;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
@@ -75,7 +75,7 @@ $rechte->getBerechtigungen($uid);
#subpage {
padding: 10mm;
- border: 1px black solid;
+ border: 1px white solid;
height: 256mm;
outline: 20mm
}
diff --git a/locale/it-IT/pruefung.php b/locale/it-IT/pruefung.php
index e61d6c8f4..f3839a96d 100755
--- a/locale/it-IT/pruefung.php
+++ b/locale/it-IT/pruefung.php
@@ -46,7 +46,7 @@ $this->phrasen['pruefung/anmeldenMoeglichBis'] = 'Possibilità di iscrizione ent
$this->phrasen['pruefung/stornoNichtMehrMoeglich'] = 'Non è più possibile annullare l’iscrizione.';
$this->phrasen['pruefung/zurLvAnmeldung'] = 'iscriversi al corso';
$this->phrasen['pruefung/zuerstPruefungAuswaehlen'] = 'Scegliere prima l’esame.';
-$this->phrasen['pruefung/bemerkungVonLektorHinzugefuegt'] = 'inserito da docente';
+$this->phrasen['pruefung/bemerkungVonLektorHinzugefuegt'] = 'iscrizione da segreteria';
$this->phrasen['pruefung/bestaetigen'] = 'Confermare';
$this->phrasen['pruefung/anmerkungDesStudenten'] = 'Osservazioni dello studente:';
$this->phrasen['pruefung/bestaetigt'] = 'confermato';
@@ -102,7 +102,7 @@ $this->phrasen['pruefung/keineLvAngegeben'] = 'Nessun corso definito.';
$this->phrasen['pruefung/kollisionMitAnderemTermin'] = 'Date sovrapposte.';
$this->phrasen['pruefung/terminNichtInDerVergangenheit'] = 'La data dell’appello non è nel passato.';
$this->phrasen['pruefung/keineLehreinheitenVorhanden'] = 'Nessun corso disponibile.';
-$this->phrasen['pruefung/keineAnmeldungenVorhanden'] = 'Nessuna registrazione disponibile.';
+$this->phrasen['pruefung/keineAnmeldungenVorhanden'] = 'Nessuna studente iscritto.';
// anmeldungen Verwalten
$this->phrasen['pruefung/anmeldungenVerwaltenTitle'] = 'Gestione delle prenotazioni degli appelli';
|