diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php
index 3b69bba8f..2e306de94 100755
--- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php
+++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php
@@ -539,11 +539,20 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
$konto = new konto();
$creditPoints = $konto->getCreditPointsOfStudiensemester($uid, $pruefungsfenster->studiensemester_kurzbz);
- if(($creditPoints != false) && ($lehrveranstaltung->ects > ($creditPoints - $ects_verwendet)))
+ if(($creditPoints != false))
+ {
+ $cpVerbleibend = $creditPoints - $ects_verwendet;
+ if(($lehrveranstaltung->ects > $cpVerbleibend))
+ {
+ $data['error'] = 'true';
+ $data['errormsg'] = $p->t('pruefung/zuWenigeCreditPoints');
+ return $data;
+ }
+ }
+ else
{
$data['error'] = 'true';
- $data['errormsg'] = $p->t('pruefung/zuWenigeCreditPoints');
- return $data;
+ $data['errormsg'] = 'Fehler beim Laden der Credit Points.';
}
if(isset($data['error']) && $data['error'] = 'true')
diff --git a/cis/private/profile/studienplan.php b/cis/private/profile/studienplan.php
index 0045c6927..e8580448f 100755
--- a/cis/private/profile/studienplan.php
+++ b/cis/private/profile/studienplan.php
@@ -291,9 +291,9 @@ if($zeugnisnote->getZeugnisnoten('',$uid,''))
foreach($zeugnisnote->result as $row_note)
{
if($row_note->note!='')
- {
+ {
$noten_arr[$row_note->lehrveranstaltung_id][$row_note->studiensemester_kurzbz]=$row_note->note;
- }
+ }
}
}
@@ -447,14 +447,22 @@ function drawTree($tree, $depth)
if($note_pruef_arr[$note]->positiv)
$positiv=true;
}
-
+
if(!$positiv)
{
- echo ''.$p->t('studienplan/negativ').'';
+ //echo ''.$p->t('studienplan/negativ').'';
+ if(count($kompatibleLVs) > 0)
+ {
+ checkKompatibleLvs($kompatibleLVs, $student, $row_tree, $noten_arr, $note_pruef_arr, $p, $uid, true);
+ }
+ else
+ {
+ echo ''.$p->t('studienplan/negativ').'';
+ }
}
elseif($lvregelExists)
{
- if($abgeschlossen && $positiv)
+ if($abgeschlossen || $positiv)
{
echo ''.$p->t('studienplan/abgeschlossen').'';
}
@@ -475,66 +483,7 @@ function drawTree($tree, $depth)
//check if compatible course has grade
elseif(count($kompatibleLVs) > 0)
{
- $positiv = false;
- $found = false;
- $i = 0;
- while(!$found && $i < count($kompatibleLVs))
- {
- foreach($kompatibleLVs as $komp)
- {
-
- $anrechnung = new anrechnung();
- $anrechnung->getAnrechnungPrestudent($student->prestudent_id, $row_tree->lehrveranstaltung_id, $komp);
-
- if(count($anrechnung->result) == 1)
- {
- $lv = $anrechnung->result[0]->lehrveranstaltung_id_kompatibel;
- if(isset($noten_arr[$lv]))
- {
- $positiv=false;
- foreach($noten_arr[$lv] as $note)
- {
- if($note_pruef_arr[$note]->positiv)
- $positiv=true;
- }
-
- $found = true;
- }
- else
- {
- /* wenn zu mehreren kompatiblen lvs eine Anrechnung existiert
- * darf found nicht auf false gesetzt werden wenn es zuvor bereits auf true gesetzt wurde
- */
- if(!$found)
- $found = false;
- }
- }
- $i++;
- }
- }
-
- if($found)
- {
- if($positiv)
- {
- echo ''.$p->t('studienplan/abgeschlossen').'';
- }
- else
- {
- echo ''.$p->t('studienplan/negativ').'';
- }
- }
- elseif(!$found)
- {
- if(!$row_tree->stpllv_pflicht)
- {
- echo ''.$p->t('studienplan/optional').'';
- }
- else
- {
- echo ''.$p->t('studienplan/offen').'';
- }
- }
+ checkKompatibleLvs($kompatibleLVs, $student, $row_tree, $noten_arr, $note_pruef_arr, $p, $uid);
}
else
{
@@ -708,6 +657,79 @@ function drawTree($tree, $depth)
drawTree($row_tree->childs, $depth+1);
}
}
+
+function checkKompatibleLvs($kompatibleLVs, $student, $row_tree, $noten_arr, $note_pruef_arr, $p, $uid, $negativeNote= null)
+{
+ $positiv = false;
+ $found = false;
+ $i = 0;
+ while(!$found && $i < count($kompatibleLVs))
+ {
+ foreach($kompatibleLVs as $komp)
+ {
+
+ $anrechnung = new anrechnung();
+ $anrechnung->getAnrechnungPrestudent($student->prestudent_id, $row_tree->lehrveranstaltung_id, $komp);
+
+ if(count($anrechnung->result) == 1)
+ {
+ $lv = $anrechnung->result[0]->lehrveranstaltung_id_kompatibel;
+ if(isset($noten_arr[$lv]))
+ {
+ $positiv=false;
+ foreach($noten_arr[$lv] as $note)
+ {
+ if($note_pruef_arr[$note]->positiv)
+ $positiv=true;
+ }
+
+ $found = true;
+ }
+ else
+ {
+ /* wenn zu mehreren kompatiblen lvs eine Anrechnung existiert
+ * darf found nicht auf false gesetzt werden wenn es zuvor bereits auf true gesetzt wurde
+ */
+ if(!$found)
+ $found = false;
+ }
+ }
+ $i++;
+ }
+ }
+
+ if($found)
+ {
+ if($positiv)
+ {
+ echo ''.$p->t('studienplan/abgeschlossen').'';
+ }
+ else
+ {
+ echo ''.$p->t('studienplan/negativ').'';
+ }
+ }
+ elseif(!$found)
+ {
+ if(!$row_tree->stpllv_pflicht)
+ {
+ echo ''.$p->t('studienplan/optional').'';
+ }
+ else
+ {
+ if(($negativeNote!= null) && ($negativeNote == true))
+ {
+ echo ''.$p->t('studienplan/negativ').'';
+ }
+ else
+ {
+ echo ''.$p->t('studienplan/offen').'';
+ }
+ }
+ }
+}
+
+
echo '';
echo '
'.$p->t('studienplan/legende').':