Merge branch 'master' into feature-5920/Personalmeldung_Berechnung_VZAE_JVZAE

This commit is contained in:
Andreas Österreicher
2020-03-16 11:13:13 +01:00
115 changed files with 13755 additions and 10976 deletions
+31 -18
View File
@@ -16,8 +16,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
/**
* Klasse bankverbindung
@@ -47,6 +47,7 @@ class bankverbindung extends basis_db
public $updateamum; // timestamp
public $updatevon; // bigint
public $oe_kurzbz; // string
public $orgform_kurzbz; // string
/**
* Konstruktor
@@ -95,6 +96,7 @@ class bankverbindung extends basis_db
$this->insertvon = $row->insertvon;
$this->ext_id = $row->ext_id;
$this->oe_kurzbz = $row->oe_kurzbz;
$this->orgform_kurzbz = $row->orgform_kurzbz;
return true;
}
else
@@ -176,19 +178,20 @@ class bankverbindung extends basis_db
//Neuen Datensatz einfuegen
$qry = 'BEGIN;INSERT INTO public.tbl_bankverbindung (person_id, name, anschrift, blz, bic,
kontonr, iban, typ, oe_kurzbz, verrechnung, insertamum, insertvon, updateamum, updatevon) VALUES('.
$this->db_add_param($this->person_id, FHC_INTEGER).', '.
$this->db_add_param($this->name).', '.
$this->db_add_param($this->anschrift).', '.
$this->db_add_param($this->blz).', '.
$this->db_add_param($this->bic).', '.
$this->db_add_param($this->kontonr).', '.
$this->db_add_param($this->iban).', '.
$this->db_add_param($this->typ).', '.
$this->db_add_param($this->oe_kurzbz).', '.
$this->db_add_param($this->verrechnung, FHC_BOOLEAN).', now(), '.
$this->db_add_param($this->insertvon).', now(), '.
$this->db_add_param($this->updatevon).');';
kontonr, iban, typ, oe_kurzbz, orgform_kurzbz, verrechnung, insertamum, insertvon, updateamum, updatevon) VALUES('.
$this->db_add_param($this->person_id, FHC_INTEGER).', '.
$this->db_add_param($this->name).', '.
$this->db_add_param($this->anschrift).', '.
$this->db_add_param($this->blz).', '.
$this->db_add_param($this->bic).', '.
$this->db_add_param($this->kontonr).', '.
$this->db_add_param($this->iban).', '.
$this->db_add_param($this->typ).', '.
$this->db_add_param($this->oe_kurzbz).', '.
$this->db_add_param($this->orgform_kurzbz).', '.
$this->db_add_param($this->verrechnung, FHC_BOOLEAN).', now(), '.
$this->db_add_param($this->insertvon).', now(), '.
$this->db_add_param($this->updatevon).');';
}
else
{
@@ -212,6 +215,7 @@ class bankverbindung extends basis_db
'typ='.$this->db_add_param($this->typ).', '.
'verrechnung='.$this->db_add_param($this->verrechnung,FHC_BOOLEAN).', '.
'oe_kurzbz='.$this->db_add_param($this->oe_kurzbz).', '.
'orgform_kurzbz='.$this->db_add_param($this->orgform_kurzbz).', '.
'updateamum='.$this->db_add_param($this->updateamum).','.
'updatevon='.$this->db_add_param($this->updatevon).' '.
'WHERE bankverbindung_id='.$this->db_add_param($this->bankverbindung_id).';';
@@ -315,6 +319,7 @@ class bankverbindung extends basis_db
$obj->insertvon = $row->insertvon;
$obj->ext_id = $row->ext_id;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->orgform_kurzbz = $row->orgform_kurzbz;
$this->result[] = $obj;
}
@@ -328,11 +333,12 @@ class bankverbindung extends basis_db
}
/**
* Laedt die Bankverbindung einer Organisationseinheit
* @param $person_id
* Laedt die Bankverbindung einer Organisationseinheit und optional einer OrgForm
* @param string $oe_kurzbz
* @param string $orgform_kurzbz
* @return true wenn ok, false im Fehlerfall
*/
public function load_oe($oe_kurzbz)
public function load_oe($oe_kurzbz, $orgform_kurzbz = null)
{
if($oe_kurzbz==null || $oe_kurzbz=='')
{
@@ -342,6 +348,11 @@ class bankverbindung extends basis_db
$qry = "SELECT * FROM public.tbl_bankverbindung WHERE oe_kurzbz=".$this->db_add_param($oe_kurzbz);
if($orgform_kurzbz != '')
{
$qry .= " AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz);
}
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
@@ -364,6 +375,7 @@ class bankverbindung extends basis_db
$obj->insertvon = $row->insertvon;
$obj->ext_id = $row->ext_id;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->orgform_kurzbz = $row->orgform_kurzbz;
$this->result[] = $obj;
}
@@ -412,6 +424,7 @@ class bankverbindung extends basis_db
$this->insertvon = $row->insertvon;
$this->ext_id = $row->ext_id;
$this->oe_kurzbz = $row->oe_kurzbz;
$this->orgform_kurzbz = $row->orgform_kurzbz;
return true;
}
+1096 -889
View File
File diff suppressed because it is too large Load Diff
+71 -2
View File
@@ -420,6 +420,69 @@ class prestudent extends person
return true;
}
/**
* Laden aller Prestudenten, die an $datum zum Reihungstest geladen sind.
* Wenn es mehrere Bewerbungen für ein Person gibt, wird nur die höchste Prestudent_id zurückgeliefert
* @param string $datum Datum in der Form YYYY-MM-DD an dem der Reihungstest stattfindet
* @return true wenn erfolgreich, false im Fehlerfall
*/
public function getFirstPrioPrestudentRT($datum)
{
$sql_query='SELECT DISTINCT
ps.prestudent_id,
pers.vorname, pers.nachname, pers.person_id, pers.titelpre,
pers.titelpost, pers.gebdatum,
tbl_reihungstest.*,
ps.studiengang_kz as studiengang_kz,
tbl_studiengang.typ
FROM
public.tbl_prestudent ps
JOIN public.tbl_person pers USING (person_id)
JOIN public.tbl_rt_person USING (person_id)
JOIN public.tbl_reihungstest ON (tbl_reihungstest.reihungstest_id=tbl_rt_person.rt_id)
JOIN public.tbl_studiengang ON (ps.studiengang_kz=tbl_studiengang.studiengang_kz)
JOIN public.tbl_prestudentstatus ON (tbl_prestudentstatus.prestudent_id=ps.prestudent_id
AND status_kurzbz=\'Interessent\'
AND tbl_prestudentstatus.studiensemester_kurzbz=tbl_reihungstest.studiensemester_kurzbz)
WHERE
tbl_reihungstest.datum='.$this->db_add_param($datum).'
/*AND tbl_rt_person.studienplan_id IN (SELECT studienplan_id FROM public.tbl_prestudentstatus WHERE prestudent_id=ps.prestudent_id)*/
AND tbl_prestudentstatus.studienplan_id IN (SELECT studienplan_id FROM public.tbl_rt_studienplan WHERE reihungstest_id=tbl_rt_person.rt_id)
AND EXISTS(SELECT * FROM public.tbl_prestudentstatus JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE prestudent_id=ps.prestudent_id AND tbl_studiensemester.ende > '.$this->db_add_param($datum).')
AND priorisierung = (SELECT priorisierung FROM public.tbl_prestudent
WHERE person_id = pers.person_id
AND get_rolle_prestudent (ps.prestudent_id,NULL) IN (\'Interessent\',\'Bewerber\',\'Wartender\',\'Aufgenommener\')
--AND tbl_prestudent.studiengang_kz=ps.studiengang_kz
ORDER BY priorisierung ASC LIMIT 1)
ORDER BY nachname,vorname';
if(!$this->db_query($sql_query))
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
$this->num_rows=0;
while($row = $this->db_fetch_object())
{
$ps=new prestudent();
$ps->prestudent_id = $row->prestudent_id;
$ps->person_id = $row->person_id;
$ps->reihungstest_id = $row->reihungstest_id;
$ps->titelpost = $row->titelpost;
$ps->titelpre = $row->titelpre;
$ps->nachname = $row->nachname;
$ps->vorname = $row->vorname;
$ps->gebdatum = $row->gebdatum;
$ps->studiengang_kz = $row->studiengang_kz;
$this->result[]=$ps;
$this->num_rows++;
}
return true;
}
/**
* Laedt über einen Prestudenten alle anderen Prestudenten einer Person, die aktuell an STG interessiert sind.
* @integer $prestudent_id Prestudent ID, über die alle weiteren Prestudenten ermittelt werden sollen.
@@ -436,11 +499,12 @@ class prestudent extends person
SELECT DISTINCT ON (priorisierung, prestudent_id)
priorisierung,
prestudent_id,
studienplan_id,
tbl_prestudentstatus.studienplan_id,
studiengang_kz,
typ,
tbl_studiengangstyp.bezeichnung AS typ_bz,
ausbildungssemester
ausbildungssemester,
tbl_orgform.bezeichnung_mehrsprachig
FROM
public.tbl_prestudentstatus
JOIN
@@ -449,6 +513,10 @@ class prestudent extends person
public.tbl_studiengang USING (studiengang_kz)
JOIN
public.tbl_studiengangstyp USING (typ)
JOIN
lehre.tbl_studienplan ON (tbl_prestudentstatus.studienplan_id = tbl_studienplan.studienplan_id)
JOIN
bis.tbl_orgform ON (tbl_studienplan.orgform_kurzbz = tbl_orgform.orgform_kurzbz)
WHERE
tbl_prestudent.person_id = (
SELECT
@@ -516,6 +584,7 @@ class prestudent extends person
$obj->typ = $row->typ;
$obj->typ_bz = $row->typ_bz;
$obj->ausbildungssemester = $row->ausbildungssemester;
$obj->orgform_bezeichnung = $this->db_parse_lang_array($row->bezeichnung_mehrsprachig);
$this->result[] = $obj;
}
+53 -31
View File
@@ -350,9 +350,10 @@ class pruefling extends basis_db
* definiert sind, bei der Berechnung der Endpunkte nicht berücksichtigt.
* @param $studiengang_kz Wenn eine Studiengangskennzahl übergeben wird, dann werden nur die Punkte der
* Basis-Fragengebiete (ohne Quereinsteiger) bei der Berechnung der Endpunkte berücksichtigt.
* @param $gewichtung_studiengang_kz Wenn diese studiengang_kz übergeben wird, wird das Ergebnis entsprechend des Gewichtungsschemas des Studienganges gewichtet
* @return Endpunkte des Reihungstests oder False wenn keine Punkte vorhanden
*/
public function getReihungstestErgebnisPerson($person_id, $punkte=false, $reihungstest_id, $has_excluded_gebiete = false, $studiengang_kz = null)
public function getReihungstestErgebnisPerson($person_id, $punkte=false, $reihungstest_id, $has_excluded_gebiete = false, $studiengang_kz = null, $gewichtung_studiengang_kz = null)
{
if(is_numeric($reihungstest_id))
{
@@ -415,39 +416,57 @@ class pruefling extends basis_db
* Ergebniss der beiden Tests summiert bekommen
* Im Zweifelsfall wird der neuere Reihungstest genommen */
$qry .= "
AND prestudent_id = (
SELECT
prestudent_id
FROM
public.tbl_rt_person
JOIN
public.tbl_prestudent USING(person_id)
JOIN
public.tbl_prestudentstatus USING (prestudent_id, studienplan_id)
JOIN
tbl_reihungstest ON (
tbl_rt_person.rt_id = tbl_reihungstest.reihungstest_id
)
WHERE
tbl_rt_person.person_id = ".$this->db_add_param($person_id, FHC_INTEGER)."
AND
tbl_rt_person.rt_id = ".$this->db_add_param($reihungstest_id, FHC_INTEGER)."
AND
tbl_prestudentstatus.status_kurzbz='Interessent'
AND
tbl_prestudentstatus.studiensemester_kurzbz = tbl_reihungstest.studiensemester_kurzbz
ORDER BY
tbl_reihungstest.datum DESC, tbl_prestudent.priorisierung ASC LIMIT 1
)
";
AND prestudent_id = (
SELECT
prestudent_id
FROM
public.tbl_rt_person
JOIN
public.tbl_prestudent USING(person_id)
JOIN
public.tbl_prestudentstatus USING (prestudent_id, studienplan_id)
JOIN
tbl_reihungstest ON (
tbl_rt_person.rt_id = tbl_reihungstest.reihungstest_id
)
WHERE
tbl_rt_person.person_id = ".$this->db_add_param($person_id, FHC_INTEGER)."
AND
tbl_rt_person.rt_id = ".$this->db_add_param($reihungstest_id, FHC_INTEGER)."
AND
tbl_prestudentstatus.status_kurzbz='Interessent'
AND
tbl_prestudentstatus.studiensemester_kurzbz = tbl_reihungstest.studiensemester_kurzbz
ORDER BY tbl_reihungstest.datum DESC, tbl_prestudent.priorisierung ASC LIMIT 1
)
";
//calculate Gewichte for Studiengang if set
$gewichte = array();
if (isset($gewichtung_studiengang_kz))
{
$ablauf = new ablauf();
$ablauf->getAblaufGebiete($gewichtung_studiengang_kz);
foreach ($ablauf->result as $abl)
{
$gewichte[$abl->gebiet_id] = $abl->gewicht;
}
}
if($result = $this->db_query($qry))
{
// Wenn keine Eintraege vorhanden dann false
if($this->db_num_rows($result)==0)
return false;
$summeGewicht = 0;
while($row = $this->db_fetch_object($result))
{
if (!isset($row->punkte))
continue;
//wenn maxpunkte ueberschritten wurde -> 100%
if($row->punkte>=$row->maxpunkte)
{
@@ -455,17 +474,20 @@ class pruefling extends basis_db
$row->punkte = $row->maxpunkte;
}
else
$prozent = ($row->punkte/$row->maxpunkte)*100;
$prozent = (($row->punkte + $row->offsetpunkte)/($row->maxpunkte + $row->offsetpunkte))*100;
if($punkte)
{
$ergebnis +=$row->punkte;
$ergebnis += $row->punkte;
}
else
$ergebnis+=$prozent*$row->gewicht;
{
$gew = isset($gewichte[$row->gebiet_id]) ? $gewichte[$row->gebiet_id] : 1;
$ergebnis += $prozent * $gew;
$summeGewicht += $gew;
}
}
return $ergebnis;
return $summeGewicht > 0 ? $ergebnis/$summeGewicht : $ergebnis;
}
else
{