diff --git a/include/konto.class.php b/include/konto.class.php old mode 100644 new mode 100755 index 5ddd244b3..1124df9c3 --- a/include/konto.class.php +++ b/include/konto.class.php @@ -60,7 +60,6 @@ class konto extends basis_db public $aktiv; public $credit_points; public $zahlungsreferenz; - public $anmerkung; /** * Konstruktor @@ -117,7 +116,6 @@ class konto extends basis_db $this->vornamen = $row->vornamen; $this->credit_points = $row->credit_points; $this->zahlungsreferenz = $row->zahlungsreferenz; - $this->anmerkung = $row->anmerkung; return true; } else @@ -193,7 +191,7 @@ class konto extends basis_db { //Neuen Datensatz einfuegen - $qry='BEGIN;INSERT INTO public.tbl_konto (person_id, studiengang_kz, studiensemester_kurzbz, buchungsnr_verweis, betrag, buchungsdatum, buchungstext, mahnspanne, buchungstyp_kurzbz, updateamum, updatevon, insertamum, insertvon, credit_points, zahlungsreferenz, anmerkung) VALUES('. + $qry='BEGIN;INSERT INTO public.tbl_konto (person_id, studiengang_kz, studiensemester_kurzbz, buchungsnr_verweis, betrag, buchungsdatum, buchungstext, mahnspanne, buchungstyp_kurzbz, updateamum, updatevon, insertamum, insertvon, credit_points) VALUES('. $this->db_add_param($this->person_id, FHC_INTEGER).', '. $this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '. $this->db_add_param($this->studiensemester_kurzbz).', '. @@ -207,9 +205,7 @@ class konto extends basis_db $this->db_add_param($this->updatevon).', '. $this->db_add_param($this->insertamum).', '. $this->db_add_param($this->insertvon).', '. - $this->db_add_param($this->credit_points).', '. - $this->db_add_param($this->zahlungsreferenz).', '. - $this->db_add_param($this->anmerkung).');'; + $this->db_add_param($this->credit_points).');'; } else { @@ -228,9 +224,7 @@ class konto extends basis_db ' updatevon='.$this->db_add_param($this->updatevon).','. ' insertamum='.$this->db_add_param($this->insertamum).','. ' insertvon='.$this->db_add_param($this->insertvon).','. - ' credit_points='.$this->db_add_param($this->credit_points).','. - ' zahlungsreferenz='.$this->db_add_param($this->zahlungsreferenz).','. - ' anmerkung='.$this->db_add_param($this->anmerkung). + ' credit_points='.$this->db_add_param($this->credit_points). " WHERE buchungsnr='".$this->db_add_param($this->buchungsnr, FHC_INTEGER)."';"; } @@ -391,9 +385,6 @@ class konto extends basis_db $buchung->nachname = $row->nachname; $buchung->vorname = $row->vorname; $buchung->vornamen = $row->vornamen; - $buchung->credit_points = $row->credit_points; - $buchung->zahlungsreferenz = $row->zahlungsreferenz; - $buchung->anmerkung = $row->anmerkung; if($buchung->buchungsnr_verweis!='') { @@ -462,11 +453,11 @@ class konto extends basis_db */ public function getDifferenz($buchungsnr) { - $qry = "SELECT + $qry = "SELECT sum(betrag) as differenz FROM public.tbl_konto - WHERE + WHERE (buchungsnr=".$this->db_add_param($buchungsnr, FHC_INTEGER)." OR buchungsnr_verweis=".$this->db_add_param($buchungsnr, FHC_INTEGER).") - OR + OR (buchungsnr=(SELECT buchungsnr_verweis FROM public.tbl_konto WHERE buchungsnr=".$this->db_add_param($buchungsnr, FHC_INTEGER).") OR buchungsnr_verweis=(SELECT buchungsnr_verweis FROM public.tbl_konto WHERE buchungsnr=".$this->db_add_param($buchungsnr, FHC_INTEGER)."))"; if($this->db_query($qry)) @@ -656,7 +647,7 @@ class konto extends basis_db AND tbl_konto.buchungstyp_kurzbz in(".$this->db_implode4SQL($buchungstyp_kurzbz_array).")"; if(!is_null($studiensemester_kurzbz)) $subqry.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - + $subqry.=" ORDER BY tbl_studiensemester.start DESC"; @@ -809,7 +800,7 @@ class konto extends basis_db return false; } } - + /** * Liefert die CreditPoints die ein Studierender für ein Studiensemester zur Verfügung hat * falls dieser einschraenkungen eingetragen hat. Wenn keine Einschraenkung vorhanden ist, @@ -908,7 +899,6 @@ class konto extends basis_db $this->insertvon = $row->insertvon; $this->credit_points = $row->credit_points; $this->zahlungsreferenz = $row->zahlungsreferenz; - $this->anmerkung = $row->anmerkung; return true; } else @@ -924,5 +914,39 @@ class konto extends basis_db } } + /** + * ueberprueft, ob leistungsstipendium gebucht ist fuer + * student_uid und studiensemester + * @param string $uid UserID + * @param string $stsem Studiensemester + * @return boolean + */ + public function checkLeistungsstipendium($uid, $stsem) + { + $subqry = "SELECT tbl_konto.buchungsnr, tbl_konto.buchungsdatum FROM public.tbl_konto, public.tbl_benutzer, public.tbl_student + WHERE + tbl_konto.studiensemester_kurzbz = ".$this->db_add_param($stsem)." + AND tbl_benutzer.uid = ".$this->db_add_param($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 = 'Leistungsstipendium' ORDER BY buchungsnr"; + + if($this->db_query($subqry)) + { + if ($this->db_num_rows()==0) + return false; + else + { + return true; + } + } + else + { + $this->errormsg = 'Fehler bei einer Abfrage'; + return false; + } + } } + ?> diff --git a/vilesci/personen/leistungsstipendium.php b/vilesci/personen/leistungsstipendium.php old mode 100644 new mode 100755 index 8f8577a8e..a63427ebb --- a/vilesci/personen/leistungsstipendium.php +++ b/vilesci/personen/leistungsstipendium.php @@ -15,7 +15,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * - * Authors: + * Authors: */ // Requirements here and there @@ -78,7 +78,7 @@ $L_LN_NOT_AVAILABLE = "N/A"; function lChkStudiengang($studiengang, $postStudiengang, $rowStudiengang, $studentStudiengang) { $chkStudiengang = false; - + foreach($studiengang->result as $val) { if ($val->studiengang_kz == $postStudiengang && $val->kurzbzlang == $rowStudiengang) @@ -87,7 +87,7 @@ function lChkStudiengang($studiengang, $postStudiengang, $rowStudiengang, $stude break; } } - + return $chkStudiengang && $studentStudiengang == $postStudiengang; } @@ -96,6 +96,7 @@ function lChkStudiengang($studiengang, $postStudiengang, $rowStudiengang, $stude */ function lCredit($student, $postStudiensemester, $rowAmount, $rowDate) { + $user = get_uid(); // To format a date $datum = new datum(); // To work on table tbl_konto @@ -108,7 +109,10 @@ function lCredit($student, $postStudiensemester, $rowAmount, $rowDate) $konto->buchungstyp_kurzbz = "Leistungsstipendium"; $konto->mahnspanne = 0; $konto->buchungsdatum = $datum->formatDatum($rowDate); - + $konto->buchungstext = "Leistungsstipendium STG ".$postStudiensemester; + $konto->insertamum = date('Y-m-d H:i:s'); + $konto->insertvon = $user; + return $konto; } @@ -133,25 +137,34 @@ function lDebit(&$konto) function lAddToLogArray($code, $lineNumber, $msg) { global $logArray, $errorOccurred, $L_ERROR; - + if ($code == $L_ERROR) { $errorOccurred = true; } - + $log = new stdClass(); $log->code = $code; $log->lineNumber = $lineNumber; $log->msg = $msg; - + array_push($logArray, $log); } +function checkStipExists($uid, $stsem) +{ + $checkkonto = new konto(); + if ($checkkonto->checkLeistungsstipendium($uid, $stsem)) + return true; + else + return false; +} + // If data has been posted if (isset($_POST["submit"])) { $dataPosted = true; - + // If studiensemester and/or studiengang have not been posted if (!$errorOccurred && (empty($_POST["studiensemester"]) || !is_numeric($_POST["studiengang"]))) { @@ -204,7 +217,7 @@ if (!$errorOccurred && $dataPosted) $student = new student(); // Object that represents a student $fileRow = false; // Contains a single file row $lineNumber = 0; // lines number counter - + // Loops on file rows do { @@ -226,12 +239,12 @@ if (!$errorOccurred && $dataPosted) $rowStudiengang = $fileRow[3]; $rowAmount = $fileRow[4]; $rowDate = $fileRow[5]; - + // If this row is not the header if (strtolower($rowName) != "nachname") { // If $rowCode is a matrikelnr gets the uid - if ($uid = $student->getUidFromMatrikelnummer($rowCode) === false) + if (($uid = $student->getUidFromMatrikelnummer($rowCode)) === false) { // Otherwise $rowCode is already a uid $uid = $rowCode; @@ -245,19 +258,38 @@ if (!$errorOccurred && $dataPosted) // the same which was choose in the interface if (lChkStudiengang($studiengang, $postStudiengang, $rowStudiengang, $student->studiengang_kz) === true) { - // Create an object of type konto and fill it with data - $konto = lCredit($student, $postStudiensemester, $rowAmount, $rowDate); - // Inserting positive amount - if ($konto->save(true) === true) + if (checkStipExists($uid, $postStudiensemester)) { - lDebit($konto); // Negative amount - if ($konto->save(true) === true) // Inserting negative amount + lAddToLogArray( + $L_WARNING, + $lineNumber, + "This file row has been discarted because an entry exists in DB" + ); + } + else + { + // Create an object of type konto and fill it with data + $konto = lCredit($student, $postStudiensemester, $rowAmount, $rowDate); + // Inserting positive amount + if ($konto->save(true) === true) { - lAddToLogArray( - $L_INFO, - $lineNumber, - "Added!!!" - ); + lDebit($konto); // Negative amount + if ($konto->save(true) === true) // Inserting negative amount + { + lAddToLogArray( + $L_INFO, + $lineNumber, + "Added!!!" + ); + } + else + { + lAddToLogArray( + $L_WARNING, + $lineNumber, + "This file row has been discarted because an error has occurred while inserting in DB" + ); + } } else { @@ -268,14 +300,7 @@ if (!$errorOccurred && $dataPosted) ); } } - else - { - lAddToLogArray( - $L_WARNING, - $lineNumber, - "This file row has been discarted because an error has occurred while inserting in DB" - ); - } + } else { @@ -324,7 +349,7 @@ if (!$errorOccurred && $dataPosted) } } while($fileRow); - + // Close the file handler fclose($fileHandle); } @@ -338,7 +363,7 @@ if (!$errorOccurred && $dataPosted) - +
@@ -382,7 +407,7 @@ if (!$errorOccurred && $dataPosted)
- CSV file: + CSV file:   @@ -399,10 +424,10 @@ if (!$errorOccurred && $dataPosted)
- +

- + @@ -423,7 +448,7 @@ if (!$errorOccurred && $dataPosted) %s "; - + foreach($logArray as $log) { $color = "green"; // great expectations @@ -435,11 +460,11 @@ if (!$errorOccurred && $dataPosted) { $color = "orange"; } - + echo sprintf($tableRow, $color, $log->code, $log->lineNumber, $log->msg); } ?>
Status
- + - \ No newline at end of file +