import leistungsstipendien:

* abbruch, wenn bereits vorhanden fuer stsem
* insertamum, insertvon, beschreibungstext
This commit is contained in:
Gerald Raab
2016-10-28 14:58:00 +02:00
parent 2c5232ca34
commit c5c728d495
2 changed files with 106 additions and 57 deletions
Regular → Executable
+42 -18
View File
@@ -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;
}
}
}
?>
+64 -39
View File
@@ -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)
<link href="../../skin/vilesci.css" rel="stylesheet" type="text/css">
</head>
<body>
<form name="saveLeistungsstipendium" method="post" enctype="multipart/form-data" action="">
<table border=0>
<tr>
@@ -382,7 +407,7 @@ if (!$errorOccurred && $dataPosted)
</tr>
<tr>
<td>
CSV file:
CSV file:
</td>
<td>&nbsp;</td>
<td>
@@ -399,10 +424,10 @@ if (!$errorOccurred && $dataPosted)
</tr>
</table>
</form>
<br/>
<br/>
<table border=0>
<tr>
<th width="25%" align="left">Status</th>
@@ -423,7 +448,7 @@ if (!$errorOccurred && $dataPosted)
%s
</td>
</tr>";
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);
}
?>
</table>
</body>
</html>
</html>