mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-25 07:59:28 +00:00
Merge branch 'feature-5920/Personalmeldung_Berechnung_VZAE_JVZAE'
This commit is contained in:
@@ -587,5 +587,97 @@ class bisverwendung extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft, ob Mitarbeiter habilitiert ist
|
||||
* @param $uid UID des Mitarbeiters
|
||||
* @return bool
|
||||
*/
|
||||
public function isHabilitiert($uid)
|
||||
{
|
||||
$qry = '
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
bis.tbl_bisverwendung
|
||||
WHERE
|
||||
mitarbeiter_uid = '. $this->db_add_param($uid). '
|
||||
AND
|
||||
habilitation = true;
|
||||
';
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
return $this->db_num_rows() > 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle Verwendungen eines Mitarbeiters innerhalb des BIS Meldungszeitraums
|
||||
* @param $uid UID des Mitarbeiters
|
||||
* @param $stichtag
|
||||
* @return bool
|
||||
*/
|
||||
public function getVerwendungenBISMeldung($uid, $stichtag)
|
||||
{
|
||||
$datetime = new DateTime($stichtag);
|
||||
$stichtag = $datetime->format('Y-m-d');
|
||||
$bismeldung_jahr = $datetime->format('Y');
|
||||
|
||||
$qry = '
|
||||
SELECT
|
||||
*,
|
||||
CASE
|
||||
WHEN (beginn is null OR beginn < make_date('. $this->db_add_param($bismeldung_jahr). '::INTEGER, 1, 1))
|
||||
THEN make_date('. $this->db_add_param($bismeldung_jahr). '::INTEGER, 1, 1)
|
||||
ELSE beginn
|
||||
END as beginn_imBISMeldungsJahr,
|
||||
CASE
|
||||
WHEN (ende is null OR ende > make_date('. $this->db_add_param($bismeldung_jahr). '::INTEGER, 12, 31))
|
||||
THEN make_date('. $this->db_add_param($bismeldung_jahr). '::INTEGER, 12, 31)
|
||||
ELSE ende
|
||||
END as ende_imBISMeldungsJahr
|
||||
FROM
|
||||
bis.tbl_bisverwendung
|
||||
JOIN bis.tbl_beschaeftigungsart1 USING (ba1code)
|
||||
WHERE
|
||||
mitarbeiter_uid = '. $this->db_add_param($uid).'
|
||||
AND (beginn <= '. $this->db_add_param($stichtag).' OR beginn is null)
|
||||
AND (ende >= make_date('. $this->db_add_param($bismeldung_jahr). '::INTEGER, 1, 1) OR ende is null)
|
||||
ORDER BY ende
|
||||
';
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new StdClass();
|
||||
|
||||
$obj->bisverwendung_id = $row->bisverwendung_id;
|
||||
$obj->mitarbeiter_uid = $row->mitarbeiter_uid;
|
||||
$obj->vertragsstunden = $row->vertragsstunden;
|
||||
$obj->ba1code = $row->ba1code_bis;
|
||||
$obj->ba2code = $row->ba2code;
|
||||
$obj->verwendung_code = $row->verwendung_code;
|
||||
$obj->beschausmasscode = $row->beschausmasscode;
|
||||
$obj->hauptberufcode = $row->hauptberufcode;
|
||||
$obj->hauptberuflich = $this->db_parse_bool($row->hauptberuflich);
|
||||
$obj->beginn = $row->beginn;
|
||||
$obj->ende = $row->ende;
|
||||
$obj->beginn_imBISMeldungsJahr = $row->beginn_imbismeldungsjahr;
|
||||
$obj->ende_imBISMeldungsJahr = $row->ende_imbismeldungsjahr;
|
||||
|
||||
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei der Datenbankabfrage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -44,6 +44,8 @@ class lehreinheitmitarbeiter extends basis_db
|
||||
public $ext_id; // bigint
|
||||
public $vertrag_id;
|
||||
|
||||
public $result = array();
|
||||
|
||||
/**
|
||||
* Konstruktor - Laedt optional einee LEMitarbeiterzuordnung
|
||||
* @param $lehreinheit_id
|
||||
@@ -495,6 +497,116 @@ class lehreinheitmitarbeiter extends basis_db
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ladet Semesterwochenstunden-Summe eines Mitarbeiters eines Semesters.
|
||||
* Nur bisrelevante SWS.
|
||||
* @param String $uid
|
||||
* @param String $studiensemester
|
||||
* @return bool
|
||||
*/
|
||||
public function getLehreinheiten_SWS_BISMeldung($uid, $studiensemester)
|
||||
{
|
||||
$qry = '
|
||||
SELECT
|
||||
round(sum(semesterstunden) / 15) AS sws
|
||||
FROM (
|
||||
SELECT DISTINCT lehreinheit_id, studiensemester_kurzbz, mitarbeiter_uid, semesterstunden
|
||||
FROM lehre.tbl_lehreinheitmitarbeiter lema
|
||||
JOIN public.tbl_mitarbeiter ma USING (mitarbeiter_uid)
|
||||
JOIN public.tbl_benutzer ON (mitarbeiter_uid = uid)
|
||||
JOIN public.tbl_person USING (person_id)
|
||||
JOIN bis.tbl_bisverwendung USING (mitarbeiter_uid)
|
||||
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
JOIN public.tbl_studiensemester ss USING (studiensemester_kurzbz)
|
||||
WHERE mitarbeiter_uid = '. $this->db_add_param($uid).'
|
||||
AND lema.bismelden
|
||||
AND studiensemester_kurzbz = '. $this->db_add_param($studiensemester).'
|
||||
) tbl_semesterstunden
|
||||
';
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->result[] = $row->sws;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei der Datenbankabfrage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ladet Semesterwochenstunden-Summe gruppiert nach Studiengang und Studiensemester.
|
||||
* Es werden die Studiensemester herangezogen, die im Zeitraum zwischen beginn und ende beginnen.
|
||||
* @param String $uid
|
||||
* @param String $beginn
|
||||
* @param String $ende
|
||||
* @return bool
|
||||
*/
|
||||
public function get_SWS_groupByStg($uid, $beginn, $ende)
|
||||
{
|
||||
$beginn = new DateTime($beginn);
|
||||
$ende = new DateTime($ende);
|
||||
|
||||
$qry = '
|
||||
WITH semester_sws_tbl AS (
|
||||
SELECT DISTINCT lehreinheit_id, studiensemester_kurzbz, lema.semesterstunden, stg.studiengang_kz
|
||||
FROM lehre.tbl_lehreinheitmitarbeiter lema
|
||||
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
|
||||
JOIN lehre.tbl_studienplan_lehrveranstaltung USING (lehrveranstaltung_id)
|
||||
JOIN lehre.tbl_studienplan USING (studienplan_id)
|
||||
JOIN lehre.tbl_studienordnung sto USING (studienordnung_id)
|
||||
JOIN public.tbl_studiengang stg ON stg.studiengang_kz = sto.studiengang_kz
|
||||
JOIN public.tbl_studiensemester ss USING (studiensemester_kurzbz)
|
||||
WHERE mitarbeiter_uid = '. $this->db_add_param($uid). '
|
||||
AND (
|
||||
ss.start BETWEEN
|
||||
'. $this->db_add_param($beginn->format('Y-m-d')). ' AND
|
||||
'. $this->db_add_param($ende->format('Y-m-d')). ')
|
||||
-- nur lehre, die bisgemeldet wird
|
||||
AND lema.bismelden
|
||||
-- keine lehreinheiten ohne semesterstunden
|
||||
AND lema.semesterstunden != 0
|
||||
)
|
||||
|
||||
SELECT
|
||||
studiengang_kz,
|
||||
studiensemester_kurzbz,
|
||||
sum(semesterstunden) AS summe,
|
||||
round(sum(semesterstunden) / 15, 2) AS sws
|
||||
FROM
|
||||
semester_sws_tbl
|
||||
GROUP BY
|
||||
studiengang_kz,
|
||||
studiensemester_kurzbz
|
||||
ORDER BY
|
||||
studiengang_kz;
|
||||
';
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new StdClass();
|
||||
$obj->studiengang_kz = $row->studiengang_kz;
|
||||
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
|
||||
$obj->sws = $row->sws;
|
||||
$this->result []= $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei der Datenbankabfrage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die Lektoren einer Lehrveranstaltung in einem Studiensemester
|
||||
* @param lehrveranstaltung_id
|
||||
|
||||
@@ -1539,5 +1539,56 @@ class mitarbeiter extends benutzer
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt alle Mitarbeiter zurück, die im BIS Meldungszeitraum bisgemeldet sind
|
||||
* @param String $stichtag BIS Meldung Stichtag
|
||||
* @return boolean
|
||||
*/
|
||||
public function getMitarbeiterBISMeldung($stichtag)
|
||||
{
|
||||
$datetime = new DateTime($stichtag);
|
||||
$bismeldung_jahr = $datetime->format('Y');
|
||||
|
||||
$qry = '
|
||||
SELECT DISTINCT ON (UID) *,
|
||||
transform_geschlecht(tbl_person.geschlecht, tbl_person.gebdatum) as geschlecht_imputiert
|
||||
FROM
|
||||
public.tbl_mitarbeiter
|
||||
JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid)
|
||||
JOIN public.tbl_person USING(person_id)
|
||||
JOIN bis.tbl_bisverwendung USING(mitarbeiter_uid)
|
||||
JOIN bis.tbl_beschaeftigungsausmass USING(beschausmasscode)
|
||||
WHERE
|
||||
bismelden
|
||||
AND personalnummer > 0
|
||||
AND (beginn <= make_date('. $this->db_add_param($bismeldung_jahr). '::INTEGER, 12, 31) OR beginn is null)
|
||||
AND (tbl_bisverwendung.ende is NULL OR tbl_bisverwendung.ende >= make_date('. $this->db_add_param($bismeldung_jahr). '::INTEGER, 1, 1))
|
||||
ORDER BY uid, nachname, vorname
|
||||
';
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new StdClass();
|
||||
|
||||
$obj->uid = $row->uid;
|
||||
$obj->vorname = $row->vorname;
|
||||
$obj->vornamen = $row->vornamen;
|
||||
$obj->nachname = $row->nachname;
|
||||
$obj->gebdatum = $row->gebdatum;
|
||||
$obj->geschlecht = $row->geschlecht;
|
||||
$obj->geschlechtX = $row->geschlecht_imputiert;
|
||||
$obj->staatsbuergerschaft = $row->staatsbuergerschaft;
|
||||
$obj->personalnummer = $row->personalnummer;
|
||||
$obj->ausbildungcode = $row->ausbildungcode;
|
||||
|
||||
$this->result []= $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user