diff --git a/include/lehreinheitmitarbeiter.class.php b/include/lehreinheitmitarbeiter.class.php index 6be66bb77..80cdd0c8b 100644 --- a/include/lehreinheitmitarbeiter.class.php +++ b/include/lehreinheitmitarbeiter.class.php @@ -507,8 +507,8 @@ class lehreinheitmitarbeiter extends basis_db public function getLehreinheiten_SWS_BISMeldung($uid, $studiensemester) { $qry = ' - SELECT - round(sum(semesterstunden) / 15) AS sws + SELECT + round(sum(semesterstunden) / 15, 2) AS sws FROM ( SELECT DISTINCT lehreinheit_id, studiensemester_kurzbz, mitarbeiter_uid, semesterstunden FROM lehre.tbl_lehreinheitmitarbeiter lema @@ -565,8 +565,8 @@ class lehreinheitmitarbeiter extends basis_db 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 + 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 diff --git a/vilesci/bis/checkverwendung.php b/vilesci/bis/checkverwendung.php index c92204e31..9c474ee50 100644 --- a/vilesci/bis/checkverwendung.php +++ b/vilesci/bis/checkverwendung.php @@ -103,7 +103,7 @@ $stsem_obj = new studiensemester(); $lastss = $stsem_obj->getPrevious(); $lastws = $stsem_obj->getBeforePrevious(); -//1 - aktive mitarbeiter und bismelden mit keiner verwendung oder mehr als einer aktuellen verwendung +//**** aktive mitarbeiter und bismelden mit keiner verwendung $qryall=' SELECT uid, nachname, vorname, count(bisverwendung_id) @@ -116,13 +116,14 @@ $qryall=' AND (ende>now() OR ende IS NULL) GROUP BY uid, nachname, vorname - HAVING count(bisverwendung_id)!=1 + HAVING count(bisverwendung_id)=0 ORDER by nachname, vorname;'; if($resultall = $db->db_query($qryall)) { $num_rows_all=$db->db_num_rows($resultall); - echo "

Bei $num_rows_all aktiven Mitarbeitern sind die aktuellen Verwendungen nicht plausibel

"; - echo "Es ist keine oder es sind mehrere aktive Verwendungen vorhanden.
"; + echo "

Bei $num_rows_all aktiven Mitarbeitern sind die keine aktuellen Verwendungen vorhanden

"; + echo "Es ist keine aktiven Verwendungen vorhanden. (unabhängig vom Meldezeitraum)
"; + while($rowall=$db->db_fetch_object($resultall)) { $i=0; @@ -141,6 +142,55 @@ if($resultall = $db->db_query($qryall)) AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)." ORDER BY beginn"; + if ($result = $db->db_query($qry)) + { + echo "
Aktive(r) Mitarbeiter(in): ".$rowall->nachname." ".$rowall->vorname." + hat keine aktuelle Verwendung
"; + } + } +} + +//**** mehrere aktive Verwendungen im Meldezeitraum +$qryall=" + SELECT + a.mitarbeiter_uid as uid + FROM + bis.tbl_bisverwendung a, + bis.tbl_bisverwendung b + WHERE + a.mitarbeiter_uid = b.mitarbeiter_uid + AND (a.ende>='$bismeldedatum_start' or a.ende is null) + AND (a.beginn<'$bismeldedatum_ende' or a.beginn is null) + AND a.bisverwendung_id <> b.bisverwendung_id + AND (b.ende>='$bismeldedatum_start' or b.ende is null) + AND (b.beginn<'$bismeldedatum_ende' or b.beginn is null) + AND a.ende >= b.beginn + AND a.beginn < b.beginn + ORDER BY a.mitarbeiter_uid +"; +if($resultall = $db->db_query($qryall)) +{ + $num_rows_all=$db->db_num_rows($resultall); + echo "

Bei $num_rows_all aktiven Mitarbeitern sind überlappende Verwendungen im Meldezeitraum vorhanden

"; + + while($rowall=$db->db_fetch_object($resultall)) + { + $i=0; + $qry=" + SELECT + * + FROM + bis.tbl_bisverwendung + JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid) + JOIN public.tbl_person USING(person_id) + JOIN public.tbl_mitarbeiter USING(mitarbeiter_uid) + WHERE + tbl_mitarbeiter.bismelden=TRUE + AND (tbl_bisverwendung.ende>='$bismeldedatum_start' or tbl_bisverwendung.ende is null) + AND (tbl_bisverwendung.beginn<'$bismeldedatum_ende' or tbl_bisverwendung.beginn is null) + AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)." + ORDER BY beginn"; + if ($result = $db->db_query($qry)) { $num_rows = $db->db_num_rows($result); @@ -153,7 +203,7 @@ if($resultall = $db->db_query($qryall)) echo "
Aktive(r) Mitarbeiter(in) ".$row->nachname." ".$row->vorname."". - " hat ".$num_rows." aktuelle Verwendungen (möglicherweise korrekt): + " hat überlappende Verwendungen im Meldezeitraum:
"; $i++; @@ -166,12 +216,12 @@ if($resultall = $db->db_query($qryall)) } } elseif ($num_rows == 0) - echo "
Aktive(r) Mitarbeiter(in): ".$rowall->nachname." ".$rowall->vorname." - hat ".$num_rows." aktuelle Verwendungen:
"; + echo "
ELSE ZWeig: ".$rowall->uid."
"; } } } -//2 - aktive fixe mitarbeiter mit keiner aktuellen verwendung + +//**** aktive fixe mitarbeiter mit keiner aktuellen verwendung $qryall = ' SELECT uid, nachname, vorname, count(bisverwendung_id) @@ -232,7 +282,7 @@ if ($resultall = $db->db_query($qryall)) } } -//3 - nicht aktive mitarbeiter mitarbeiter mit aktueller verwendung +//**** nicht aktive mitarbeiter mit aktueller verwendung $qryall = ' SELECT uid, nachname, vorname @@ -250,6 +300,8 @@ if ($resultall = $db->db_query($qryall)) { $num_rows_all=$db->db_num_rows($resultall); echo "

Bei $num_rows_all nicht aktiven Mitarbeitern sind die aktuellen Verwendungen nicht plausibel (inaktiv aber aktuelle Verwendung)

"; + echo "Diese Personen werden trotzdem gemeldet!"; + while ($rowall = $db->db_fetch_object($resultall)) { $i = 0; @@ -287,7 +339,7 @@ if ($resultall = $db->db_query($qryall)) } } } -//4 - wenn hauptberufcode gesetzt ist, muss die Verwendung 1 sein +//**** - wenn hauptberufcode gesetzt ist, muss die Verwendung 1 sein $qryall = " SELECT uid, nachname, vorname @@ -342,71 +394,8 @@ if($resultall = $db->db_query($qryall)) } } } -//5 - stimmt beschausmasscode mit vertragsstunden überein? -/* Beschaeftigungsausmass nicht mehr relevant -$qryall=" - SELECT - uid, nachname, vorname - FROM - campus.vw_mitarbeiter - JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) - WHERE - (beschausmasscode='1' AND vertragsstunden<='35') - OR (beschausmasscode='2' AND vertragsstunden>'15') - OR (beschausmasscode='3' AND vertragsstunden<'16') - OR (beschausmasscode='3' AND vertragsstunden>'25') - OR (beschausmasscode='4' AND vertragsstunden<'26') - OR (beschausmasscode='4' AND vertragsstunden>'35') - OR (beschausmasscode='5' AND vertragsstunden>'0') - GROUP BY uid, nachname, vorname - ORDER by nachname, vorname, uid;"; -if($resultall = $db->db_query($qryall)) -{ - $num_rows_all=$db->db_num_rows($resultall); - echo "

Bei $num_rows_all Mitarbeitern ist das Beschäftigungsausmaß nicht plausibel

"; - echo "Vertragsstunden passen nicht mit Beschäftigungsausmass überein

"; - while($rowall=$db->db_fetch_object($resultall)) - { - $i=0; - $qry=" - SELECT - * - FROM - bis.tbl_bisverwendung - WHERE - ((beschausmasscode='1' AND vertragsstunden<'38.5') - OR (beschausmasscode='2' AND vertragsstunden>'15') - OR (beschausmasscode='3' AND vertragsstunden<'16') - OR (beschausmasscode='3' AND vertragsstunden>'25') - OR (beschausmasscode='4' AND vertragsstunden<'26') - OR (beschausmasscode='4' AND vertragsstunden>'35') - OR (beschausmasscode='5' AND vertragsstunden>'0')) - AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)." - ORDER BY beginn"; - - if($result = $db->db_query($qry)) - { - $num_rows=$db->db_num_rows($result); - while($row=$db->db_fetch_object($result)) - { - if($i==0) - { - echo "
Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.":
"; - $i++; - } - echo $ausmass_arr[$row->beschausmasscode]. - ", Vertragsstunden ".$row->vertragsstunden. - ", ".$verwendung_arr[$row->verwendung_code]. - ", ".$ba1_arr[$row->ba1code]. - ", ".$ba2_arr[$row->ba2code]. - ", ".$row->beginn." - ".$row->ende."
"; - } - } - } -} -*/ -//6 - aktive, freie lektoren auf verwendung 1 oder 2 prüfen +//**** aktive, freie lektoren auf verwendung 1 oder 2 prüfen $qryall=" SELECT uid, nachname, vorname @@ -421,6 +410,7 @@ $qryall=" AND (ende>now() OR ende IS NULL) GROUP BY uid, nachname, vorname ORDER by nachname, vorname, uid;"; + if($resultall = $db->db_query($qryall)) { $num_rows_all=$db->db_num_rows($resultall); @@ -459,7 +449,7 @@ if($resultall = $db->db_query($qryall)) } } -// Echter Dienstvertrag ohne Vertragsstunden +//**** Echter Dienstvertrag ohne Vertragsstunden $qryall=" SELECT distinct mitarbeiter_uid as uid, vorname, nachname @@ -473,6 +463,7 @@ $qryall=" and (ende is null or ende>=".$db->db_add_param($bismeldedatum_start).") and ba1code=103 and vertragsstunden is null + and beschausmasscode!=5 ORDER by nachname, vorname, mitarbeiter_uid;"; if($resultall = $db->db_query($qryall)) { @@ -487,7 +478,7 @@ if($resultall = $db->db_query($qryall)) } } -//7 - Lehrauftrag aber keine aktuelle Verwendung +//**** - Lehrauftrag aber keine aktuelle Verwendung $i=0; $qryall=" SELECT @@ -543,7 +534,7 @@ if($resultall = $db->db_query($qryall)) } } } -//8 - Verwendung Habil. und Entwicklungsteam Habil.=1 +//**** - Verwendung Habil. und Entwicklungsteam Habil.=1 $i=0; $qryall=" SELECT @@ -591,7 +582,7 @@ if($resultall = $db->db_query($qryall)) } } -//9 - inaktive mitarbeiter und bismelden ohne verwendung +//**** inaktive mitarbeiter und bismelden ohne verwendung $qryall=' SELECT uid, nachname, vorname, count(bisverwendung_id) diff --git a/vilesci/bis/personalmeldung.php b/vilesci/bis/personalmeldung.php index 5cc7fcf8b..d237ab5ff 100644 --- a/vilesci/bis/personalmeldung.php +++ b/vilesci/bis/personalmeldung.php @@ -257,19 +257,20 @@ foreach ($mitarbeiter_arr as $mitarbeiter) foreach ($verwendung_tmp_arr as $verwendung_tmp) { - // Jahresvollzeitaequivalenz JVZAE ermitteln - // --------------------------------------------------------------------------------------------------------- + // Jahresvollzeitaequivalenz JVZAE ermitteln + // ----------------------------------------------------------------------------------------------------- /** * Berechnung: * JVZAE wird aus der Summe aller anteiligen JVZE gebildet. */ - $verwendung_obj->jvzae += (isset($verwendung_tmp->jvzae_anteilig)) - ? number_format($verwendung_tmp->jvzae_anteilig * 100, 2) - : NULL; // TODO: not null... + if (isset($verwendung_tmp->jvzae_anteilig)) + { + $verwendung_obj->jvzae += number_format($verwendung_tmp->jvzae_anteilig * 100, 2); + } - // Vollzeitaequivalenz VZAE ermitteln (Beschaeftigungsausmass zum Stichtag 31.12) - // --------------------------------------------------------------------------------------------------------- + // Vollzeitaequivalenz VZAE ermitteln (Beschaeftigungsausmass zum Stichtag 31.12) + // ----------------------------------------------------------------------------------------------------- /** * Berechnung: * - Wenn Karenz zum Stichtag 31.12. vorhanden: VZAE = 0.00 @@ -287,7 +288,10 @@ foreach ($mitarbeiter_arr as $mitarbeiter) } else { - $verwendung_obj->vzae = (isset($verwendung_tmp->beschaeftigungsausmass_relativ)) ? $verwendung_tmp->beschaeftigungsausmass_relativ * 100 : NULL; // TODO: not null... + if (isset($verwendung_tmp->beschaeftigungsausmass_relativ)) + { + $verwendung_obj->vzae = $verwendung_tmp->beschaeftigungsausmass_relativ * 100; + } } } } @@ -1247,8 +1251,10 @@ function outputPlausibilitaetschecks($person_arr) if (isset($row->verwendung_arr) && is_array($row->verwendung_arr) && count($row->verwendung_arr) > 0) { + $jvzaesumme = 0; foreach ($row->verwendung_arr as $verwendung) { + $jvzaesumme += $verwendung->jvzae; if($verwendung->vzae < -1) { $msg[] = 'VZAE ist zu klein -> Vertragsstunden prüfen'; @@ -1267,6 +1273,10 @@ function outputPlausibilitaetschecks($person_arr) $msg[] = 'JVZAE ist zu gross -> Vertragsstunden prüfen'; } } + if($jvzaesumme>125) + { + $msg[] = 'JVZAE Summe ist zu gross'; + } } if (isset($row->lehre_arr) && is_array($row->lehre_arr) && count($row->lehre_arr) > 0)