diff --git a/include/konto.class.php b/include/konto.class.php index 719eca84e..3cb2bc235 100644 --- a/include/konto.class.php +++ b/include/konto.class.php @@ -514,6 +514,63 @@ class konto extends basis_db return false; } } + + + + /** + * ueberprueft, ob studiengebuehr gebucht ist fuer + * student_uid und studiensemester + * gibt true/false zurueck und setzt bei true das buchungsdatum $this->buchungsdatum + */ + public function getLastStudienbeitrag($uid) + { + $subqry = "SELECT tbl_konto.buchungsnr, tbl_konto.buchungsdatum, tbl_konto.buchungsnr_verweis, tbl_konto.studiensemester_kurzbz FROM public.tbl_konto, public.tbl_benutzer, public.tbl_student + WHERE + tbl_benutzer.uid = '".addslashes($uid)."' + AND tbl_benutzer.uid = tbl_student.student_uid + AND tbl_benutzer.person_id = tbl_konto.person_id + AND tbl_konto.studiengang_kz=tbl_student.studiengang_kz + AND tbl_konto.buchungstyp_kurzbz = 'Studiengebuehr' ORDER BY buchungsnr DESC"; + + if($result = $this->db_query($subqry)) + { + if ($this->db_num_rows($result)==0) + return false; + else + { + while ($subrow = $this->db_fetch_object($result)) + { + if($subrow->buchungsnr_verweis != '') + { + $qry = "SELECT sum(betrag) as differenz FROM public.tbl_konto + WHERE buchungsnr=".$this->db_add_param($subrow->buchungsnr_verweis, FHC_INTEGER)." OR buchungsnr_verweis=".$this->db_add_param($subrow->buchungsnr_verweis, FHC_INTEGER).";"; + + if($result_test = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result_test)) + { + if ($row->differenz == 0) + { + return $subrow->studiensemester_kurzbz; + } + } + + } + else + { + $this->errormsg = 'Fehler beim Ermitteln der Differenz'; + return false; + } + } + } + } + } + else + { + $this->errormsg = 'Fehler bei einer Abfrage'; + return false; + } + } /** * diff --git a/soap/kartenverlaengerung.soap.php b/soap/kartenverlaengerung.soap.php index 3e571dfc3..d193108d7 100755 --- a/soap/kartenverlaengerung.soap.php +++ b/soap/kartenverlaengerung.soap.php @@ -57,7 +57,7 @@ function getNumber($cardNr) $objArray = array('datum'=>'', 'errorMessage'=>'Die Person kann nicht geladen werden. Bitte wenden Sie sich an den Service Desk.'); return $objArray; } - + /* // lädt das aktuelle semester und nach 75 Tagen nach Anfang des Semesters das nächste $studSemester = new studiensemester(); if(!$aktSemester= $studSemester->getNextOrAktSemester('75')) @@ -65,15 +65,24 @@ function getNumber($cardNr) $objArray = array('datum'=>'', 'errorMessage'=>'Konnte Semester nicht laden. Bitte wenden Sie sich an den Service Desk.'); return $objArray; } - - // überprüft ob Studienbeitrag bezahlt wurde + */ + // hole Semester des letzten eingezahlten Studienbeitrages $konto = new konto(); + if(!$aktSemester= $konto->getLastStudienbeitrag($cardPerson->uid)) + { + $objArray = array('datum'=>'', 'errorMessage'=>'Fehler beim Auslesen des Studienganges. Bitte wenden Sie sich an den Service Desk.'); + return $objArray; + } + + /* + // überprüft ob Studienbeitrag bezahlt wurde if(!$konto->checkStudienbeitrag($cardPerson->uid, $aktSemester)) { $objArray = array('datum'=>'', 'errorMessage'=>'Studienbeitrag noch nicht gezahlt.'); return $objArray; } - + */ + $studSemester = new studiensemester(); $studSemester->load($aktSemester); $datum = new datum();