diff options
author | M.Gergo | 2018-07-06 11:14:41 +0200 |
---|---|---|
committer | M.Gergo | 2018-07-06 11:14:41 +0200 |
commit | 43de9af71f7f4ca5731b94a06d688ae8412ba427 (patch) | |
tree | 54835de1dfcda504c02da261f0dc26885aed2e89 /mayor-orig/www/include/modules/naplo/hianyzas | |
parent | 50310b0e4513ee3fcce67351ae61e8fff851130e (diff) | |
download | mayor-43de9af71f7f4ca5731b94a06d688ae8412ba427.tar.gz mayor-43de9af71f7f4ca5731b94a06d688ae8412ba427.zip |
2018/Feb/28 -i állapot hozzáadva, mint a módosítások kiindulási állapota
Diffstat (limited to 'mayor-orig/www/include/modules/naplo/hianyzas')
4 files changed, 514 insertions, 0 deletions
diff --git a/mayor-orig/www/include/modules/naplo/hianyzas/diak.php b/mayor-orig/www/include/modules/naplo/hianyzas/diak.php new file mode 100644 index 00000000..a98a0ef0 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/hianyzas/diak.php @@ -0,0 +1,119 @@ +<?php + + function napiHianyzasBeiras($dt,$diakId,$SET=array('tipus'=>'hiányzás','statusz'=>'igazolatlan', 'igazolas'=>'')) { + global $napiMinOra, $napiMaxOra; + + $q = "SELECT * FROM hianyzas WHERE diakId=%u AND dt='%s'"; + $RES = db_query($q, array('fv' => 'napiHianyzasBeiras', 'modul' => 'naplo', 'result' => 'indexed', 'values' => array($diakId, $dt))); + + $T = $diakTANKOROK = getTankorByDiakId($diakId, __TANEV, array('csakId' => true, 'tolDt' => $dt, 'igDt' => $dt, 'result'=>'csakid')); + + $tmpOrak = getOrak($T,array('tolDt'=>$dt,'igDt'=>$dt,'csakId'=>false)); + $diakORAK = $tmpOrak['orak']; + + if (!is_array($diakORAK)) { + $_SESSION['alert'][] = ':nincs_oraja:'; + return false; + } + foreach ($diakORAK[$dt] as $_ora=>$ORA) { + $_diakFmTankorIdk = getTankorDiakFelmentes($diakId, __TANEV, array('csakId' => true, 'tolDt' => $dt, 'igDt' => $dt, 'nap'=>date('w',strtotime($dt)), 'ora'=>$_ora, 'result'=>'csakid')); + foreach($ORA as $_tankorId => $_OA) { + if ( in_array($_tankorId,$_diakFmTankorIdk) === true ) { + continue; + } + $diakORAIDK[] = $_OA['oraId']; + $ORAK[$_OA['oraId']] = $_OA; + } + } + + $MODOSITANDO = $eddigORAIDK = array(); + $error = false; + for ($i=0; $i<count($RES); $i++) { + $_tipus = $RES[$i]['tipus']; + $_statusz = $RES[$i]['statusz']; + $_hid = $RES[$i]['hianyzasId']; + $_oraId = $RES[$i]['oraId']; + if ($SET['tipus']=='hiányzás' && in_array($_tipus,array('felszerelés hiány','felmentés','egyenruha hiány'))) { + $_SESSION['alert'][] = '::regisztrált F/f/e-betűs bejegyzése van erre a napra! Egyeztetés szükséges!'; + $error = true; + } + // modositani kell, ha eddig nem az volt, ezeket a hianyzasIdket: + // ha szeretnéd, hogy módosítsa az igazolás tíipusokat is, akkor hasonlítsd össze ezeket: + // var_dump($RES[$i]['igazolas']); + // var_dump($SET['igazolas']); + if ($_statusz!=$SET['statusz']) { + $MODOSITANDO[] = array('oraId'=>$_oraId,'id'=>$_hid,'statusz'=>$SET['statusz'],'igazolas'=>$SET['igazolas'],'tipus'=>$SET['tipus']); + } + $eddigORAIDK[] = $_oraId; + } + + if (!$error) { + $BEIRANDO = array_diff($diakORAIDK,$eddigORAIDK); +// for ($i=0; $i<count($BEIRANDO); $i++) { + foreach ($BEIRANDO as $_index => $_oraId) { + if (!in_array($ORAK[$_oraId]['tipus'],array('elmarad','elmarad máskor'))) + hianyzasRegisztralas( + array('oraId'=>$_oraId,'dt'=>$ORAK[$_oraId]['dt'],'ora'=>$ORAK[$_oraId]['ora']), + array(array('diakId'=>$diakId, 'id'=>'','statusz'=>$SET['statusz'],'igazolas'=>$SET['igazolas'],'tipus'=>$SET['tipus'])) + ); + } + + if (is_array($MODOSITANDO) && count($MODOSITANDO)>0) + hianyzasIgazolas($MODOSITANDO,$diakId); + + } + } + + + function oraHianyzasBeiras($dt, $ora, $diakId, $SET=array()) { + + if ($dt=='' || $ora=='') { + $_SESSION['alert'][] = 'message:empty_fields:kötelező paraméter üres (oraHianyzasBeiras:dt,ora)'; + return false; + } + $q = "SELECT * FROM hianyzas WHERE diakId=%u AND dt='%s' AND ora=%u"; + $RES = db_query($q, array('fv' => 'oraHianyzasBeiras', 'modul' => 'naplo', 'result' => 'indexed', 'values' => array($diakId, $dt, $ora))); + if ($RES!==false && count($RES)>0) { + + $_SESSION['alert'][] = 'message:wrong_data:már van bejegyzése. Eldöntési kérdés.'; + + } else { + + // Aznapi tankörei és felmentései + $diakTANKOROK = getTankorByDiakId($diakId, __TANEV, array('csakId' => true, 'tolDt' => $dt, 'igDt' => $dt, 'result'=>'csakid')); + $diakFMTANKOROK = getTankorDiakFelmentes($diakId, __TANEV, array('csakId' => true, 'tolDt' => $dt, 'igDt' => $dt, 'nap'=>date('w',strtotime($dt)),'ora'=>$ora,'result'=>'csakid')); + + $T = array_diff($diakTANKOROK,$diakFMTANKOROK); + reset($T); + sort($T); + + $q = "SELECT * FROM ora WHERE ora=%u AND dt='%s' and tankorId IN (".implode(',', array_fill(0, count($T), '%u')).")"; + $v = mayor_array_join(array($ora, $dt), $T); + $oraAdat = db_query($q, array('fv' => 'oraHianyzasBeiras', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $v)); + + // EDDIG: csak akkor regisztráltuk, ha egy találatot adott az ora tábla. + // if ( ($db=count($oraAdat)) ==1 && !in_array($oraAdat[0]['tipus'],array('elmarad','elmarad máskor')) ) { + // MOST : azonban lehetséges olyan eset, hogy az adott órára többször is regisztrálandó. Mit tegyünk? + // a napi beírás beírja! Ez a függvény hibaüzen. + + if ( ($db=count($oraAdat)) >=1 ) { + for ($i=0; $i<count($oraAdat); $i++) { + if (!in_array($oraAdat[$i]['tipus'],array('elmarad','elmarad máskor'))) { + hianyzasRegisztralas( + array('oraId'=>$oraAdat[$i]['oraId'],'dt'=>$oraAdat[$i]['dt'],'ora'=>$oraAdat[$i]['ora']), + array(array('diakId'=>$diakId, 'id'=>'','statusz'=>$SET['statusz'],'igazolas'=>$SET['igazolas'],'tipus'=>$SET['tipus'])) + ); + } + } + } elseif ($db==0) { + $_SESSION['alert'][] = '::nincs órája.'; + } elseif (in_array($oraAdat[0]['tipus'],array('elmarad','elmarad máskor'))) { + // ekkor nem kell csinálni semmit. Hibaüzenetet sem. + } else { + // ide nem juthatunk MÁR! + $_SESSION['alert'][] = ':%0%:%1% órája is van ebben az időpontban:'.$db; + } + } + } + +?> diff --git a/mayor-orig/www/include/modules/naplo/hianyzas/oktstat.php b/mayor-orig/www/include/modules/naplo/hianyzas/oktstat.php new file mode 100644 index 00000000..c3cc7a24 --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/hianyzas/oktstat.php @@ -0,0 +1,155 @@ +<?php + +/* - Tankötelesség - +2011. évi CXC. törvény a nemzeti köznevelésről + +27. A gyermekek, a tanulók kötelességei és jogai, a tankötelezettség(3)195 A tankötelezettség annak a tanévnek a végéig tart, amelyben a tanuló a tizenhatodik életévét betölti. A sajátos nevelési igényű tanuló tankötelezettsége meghosszabbítható annak a tanítási évnek a végéig, amelyben a huszonharmadik életévét betölti. A tankötelezettség meghosszabbításáról a szakértői bizottság szakértői véleménye alapján az iskola igazgatója dönt. + +13. A gyógypedagógiai, konduktív pedagógiai nevelési-oktatási intézmény60 +(4)64 A fejlesztő nevelés-oktatásban a tanuló annak a tanítási évnek az utolsó napjáig köteles részt venni, amelyben betölti a tizenhatodik életévét és annak a tanítási évnek az utolsó napjáig vehet részt, amelyben betölti a huszonharmadik életévét. A fejlesztő nevelés-oktatásban a tanulókat a sajátos nevelési igényük, fejlettségük és életkoruk alapján osztják be fejlesztő csoportokba. + +54. Átmeneti és vegyes rendelkezések +97. § (1)485 Azok a tanulók, akik tanulmányaikat az iskolai nevelés-oktatás kilencedik évfolyamán a 2011/2012. tanévben vagy azt megelőzően kezdték meg, tankötelezettségük azon tanítási év végéig tart, amelyben a tizennyolcadik életévüket betöltik vagy sikeres érettségi vizsgát vagy szakmai vizsgát tettek. Azon sajátos nevelési igényű tanulók tankötelezettsége, akik esetében a szakértői és rehabilitációs bizottság e törvény hatálybalépése előtt a tankötelezettség huszadik életévükig történő meghosszabbításáról döntött, annak a tanévnek a végéig tart, amelyben a huszadik életévüket betöltik. +*/ + + require_once('include/modules/naplo/share/hianyzas.php'); + + function getOktoberiStatisztika($tanev=__TANEV, $overrideLezart = false) { + + $TA = getTanevAdat($tanev); + + if ($TA['statusz'] != 'lezárt') { + $overrideLezart = true; + $_SESSION['alert'][] = 'info:nem_lezart_tanev'; + } + $lr = db_connect('naplo_intezmeny'); + + // van értelmes adat az aggregált táblában? mert ha nincs, vagy nincs lezárva, akkor számoljuk ki az online adatokból + $q = "select count(*) AS db from hianyzasOsszesites where tanev=%u and igazolt!=0 or igazolatlan!=0"; + $v = array($tanev); + $dbAdat = db_query($q,array('fv' => 'hianyzasOsszesites', 'modul' => 'naplo_intezmeny', 'values' => $v, 'result'=>'value'), $lr); + + if ( $overrideLezart === true || $dbAdat==0 ) { + + $Wnemszamit = defWnemszamit(); + // A tanévhez tartozó hiányzási adatok lekérdezése és rögzítése + $tanevDb = tanevDbNev(__INTEZMENY, $tanev); + $j = 0; + foreach ($TA['szemeszter'] as $i => $szAdat) { + if ($j==0) $q = "CREATE TEMPORARY TABLE ".__INTEZMENYDBNEV.".__hianyzasOsszesites "; + else $q = "INSERT INTO ".__INTEZMENYDBNEV.".__hianyzasOsszesites "; + $q .= " SELECT diakId, %u AS tanev, %u AS szemeszter, + COUNT(IF(tipus='hianyzas' AND statusz='igazolt',1,NULL)) AS igazolt, + COUNT(IF(tipus='hianyzas' AND statusz='igazolatlan',1,NULL)) AS igazolatlan, + SUM(IF(tipus='késés' AND statusz='igazolatlan',perc,NULL)) AS kesesPercOsszeg + FROM `%s`.hianyzas ".$Wnemszamit['join']." + WHERE ( + tipus = 'hiányzás' + OR (tipus='késés' AND statusz='igazolatlan' AND perc IS NOT NULL) + ) AND dt<='%s' + ".$Wnemszamit['nemszamit']." + GROUP BY diakId"; + $v = array($tanev, $szAdat['szemeszter'], $tanevDb, $szAdat['zarasDt']); + db_query($q, array('fv' => 'hianyzasOsszesites', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + // A hozott hiányzások hozzáadása + $q = "UPDATE ".__INTEZMENYDBNEV.".__hianyzasOsszesites SET + igazolt = igazolt + ( + SELECT IFNULL(SUM(dbHianyzas),0) FROM `%s`.hianyzasHozott AS `hh` + WHERE hh.diakId = __hianyzasOsszesites.diakId AND hh.statusz='igazolt' AND hh.dt<='%s' + ), + igazolatlan = igazolatlan + ( + SELECT IFNULL(SUM(dbHianyzas),0) FROM `%s`.hianyzasHozott AS `hh` + WHERE hh.diakId = __hianyzasOsszesites.diakId AND hh.statusz='igazolatlan' AND hh.dt<='%s' + ) + WHERE tanev=%u AND szemeszter=%u"; + $v = array($tanevDb, $szAdat['zarasDt'], $tanevDb, $szAdat['zarasDt'], $tanev, $szAdat['szemeszter']); + db_query($q, array('fv' => 'hianyzasOsszesites/hozott', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + $j++; + } + } + +// ----------------------------- + + $SQL_hianyzasOsszesites = ( ($overrideLezart === true) ? '__hianyzasOsszesites' : 'hianyzasOsszesites'); + + $q = "select IFNULL(telephelyId,0) AS telephelyId, osztalyJel as 'osztály', +count(if(igazolatlan>0,1,null)) as `van igazolatlanja`, +count(if(igazolatlan=1,1,null)) as `1 igazolatlan`, +count(if(1<igazolatlan and igazolatlan<10,1,null)) as `2-9 igazolatlan`, +count(if(9<igazolatlan and igazolatlan<30,1,null)) as `10-29 igazolatlan`, +count(if(29<igazolatlan and igazolatlan<51,1,null)) as `30-50 igazolatlan`, +count(if(50<igazolatlan,1,null)) as `több mint 50 igazolatlan`, +count(if(igazolt>0,1,null)) as igazolt, +count(if(249<igazolatlan+igazolt,1,null)) as `250 vagy több hiányzás`, +CONCAT(IFNULL(telephelyId,0),osztalyJel) AS csop +from + naplo_".__INTEZMENY."_%u.osztalyNaplo + left join osztalyDiak using (osztalyId) + left join osztaly using (osztalyId) + left join ".$SQL_hianyzasOsszesites." using (diakId) +where +tanev=%u and szemeszter=%u +and beDt<='%s' and (kiDt is null or '%s'<=kiDt) +group by csop order by telephelyId,lpad(osztalyJel,4,' ')"; + + $v = array($tanev,$tanev,count($TA['szemeszter']),$TA['zarasDt'],$TA['zarasDt']); + + $r['osszes'] = db_query($q, array('fv'=>'oktstat','modul'=>'naplo_intezmeny','values'=>$v,'result'=>'indexed'), $lr); + + $q = "select IFNULL(telephelyId,0) AS telephelyId, osztalyJel as `osztály`, +count(if(igazolatlan>0,1,null)) as `van igazolatlanja`, +count(if(igazolatlan=1,1,null)) as `1 igazolatlan`, +count(if(1<igazolatlan and igazolatlan<10,1,null)) as `2-9 igazolatlan`, +count(if(9<igazolatlan and igazolatlan<30,1,null)) as `10-29 igazolatlan`, +count(if(29<igazolatlan and igazolatlan<51,1,null)) as `30-50 igazolatlan`, +count(if(50<igazolatlan,1,null)) as `több mint 50 igazolatlan`, +count(if(igazolt>0,1,null)) as igazolt, +count(if(249<igazolatlan+igazolt,1,null)) as `250 vagy több hiányzás`, +CONCAT(IFNULL(telephelyId,0),osztalyJel) AS csop +from + naplo_".__INTEZMENY."_%u.osztalyNaplo + left join osztalyDiak using (osztalyId) + left join osztaly using (osztalyId) + left join diak using (diakId) + left join ".$SQL_hianyzasOsszesites." using (diakId) +where +diak.szuletesiIdo>='%s' +and tanev=%u and szemeszter=%u +and beDt<='%s' and (kiDt is null or '%s'<=kiDt) +group by csop order by telephelyId,lpad(osztalyJel,4,' ') +"; + + $v = array($tanev,date('Y-m-d',strtotime('-16 years', strtotime($TA['kezdesDt']))),$tanev,count($TA['szemeszter']),$TA['zarasDt'],$TA['zarasDt']); + $r['tankoteles'] = db_query($q, array('fv'=>'oktstat','modul'=>'naplo_intezmeny','values'=>$v,'result'=>'indexed'), $lr); + + db_query('DROP TABLE IF EXISTS __hianyzasOsszesites', array('fv' => 'hianyzasOsszesites/hozott', 'modul' => 'naplo_intezmeny', 'values' => $v), $lr); + db_close($lr); + + $r['a04t17'] = getStat_a04t17($tanev); + + return $r; + } + + function getStat_a04t17($tanev) { + + $stat = 'a04t17'; + + $LJ = "LEFT JOIN osztalyDiak USING (diakId) LEFT JOIN osztaly USING (osztalyId)"; + + // az iskolába lépőnek tekintjük az 1 évfolyamosokat, vagyis azokat, akik annak az osztálynak a tagjai szept 1-jén + // amelyik kezdoEvfolyamSorszam=1, kezdoTanev=$tanev és osztalyJellegId IN (1,21,22,65) az adott tanévben + $W = " AND osztaly.kezdoTanev=$tanev AND kezdoEvfolyamSorszam=1 AND osztalyJellegId IN (1,21,22,65)"; // kezdoEvfolyam=1 volt eredetileg + + $q = "SELECT nem,count(DISTINCT diakId) AS db FROM diak $LJ WHERE szuletesiIdo+INTERVAL 6 YEAR>'$tanev-09-01' $W GROUP BY nem"; // nincs egyenlő!!! + $R[$stat.'_4'] = db_query($q, array('fv'=>'oktstat','modul'=>'naplo_intezmeny','result'=>'assoc','keyfield'=>'nem')); + $q = "SELECT nem,count(DISTINCT diakId) AS db FROM diak $LJ WHERE szuletesiIdo+INTERVAL 6 YEAR<='$tanev-08-31' and szuletesiIdo+INTERVAL 6 YEAR>='$tanev-06-01' $W GROUP BY nem"; + $R[$stat.'_3'] = db_query($q, array('fv'=>'oktstat','modul'=>'naplo_intezmeny','result'=>'assoc','keyfield'=>'nem')); + $q = "SELECT nem,count(DISTINCT diakId) AS db FROM diak $LJ WHERE szuletesiIdo+INTERVAL 6 YEAR<='$tanev-05-31' $W GROUP BY nem"; // nincs egyenlő!!! + $R[$stat.'_2'] = db_query($q, array('fv'=>'oktstat','modul'=>'naplo_intezmeny','result'=>'assoc','keyfield'=>'nem')); + + return $R; + } + +// var_dump(getStat_a04t17(2014)); + +?> diff --git a/mayor-orig/www/include/modules/naplo/hianyzas/ora.php b/mayor-orig/www/include/modules/naplo/hianyzas/ora.php new file mode 100644 index 00000000..56648a8c --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/hianyzas/ora.php @@ -0,0 +1,8 @@ +<?php + +/* +MOVED -->share hianyzasModifier + function hianyzasPercUpdate($ORAADAT,$PERCEK) +*/ + +?> diff --git a/mayor-orig/www/include/modules/naplo/hianyzas/osztaly.php b/mayor-orig/www/include/modules/naplo/hianyzas/osztaly.php new file mode 100644 index 00000000..07efde7d --- /dev/null +++ b/mayor-orig/www/include/modules/naplo/hianyzas/osztaly.php @@ -0,0 +1,232 @@ +<?php +/* + Module: naplo + + function getHianyzok($osztaly) +*/ + + function getHianyzok($ADAT,$SET = array()) { + + $lr = db_connect('naplo', array('fv' => 'getHianyzok')); + $H = array(); + if ($SET['dt']!='') { + $Diakok = getDiakokByOsztaly($ADAT['osztalyId'],array('tolDt'=>$SET['dt'],'igDt'=>$SET['dt'])); + } else { + $Diakok = getDiakokByOsztaly($ADAT['osztalyId']); + } + $munkatervIds = getMunkatervByOsztalyId($ADAT['osztalyId'], array('result'=>'idonly')); + $H['névsor'] = array(); + foreach (array('jogviszonyban van','magántanuló','vendégtanuló') as $statusz) { + foreach ($Diakok[$statusz] as $diakId) { + if (!is_array($H['névsdor'][$diakId])) { + $H['névsor'][$diakId] = $Diakok[$diakId]; + // Az aktuális státusz megállapítása + $i = 0; + // A státuszbejegyzések sora időben visszafele rendezett!! + while ($i < count($Diakok[$diakId]['statusz']) && strtotime($Diakok[$diakId]['statusz'][$i]['dt']) > time()) $i++; + $H['névsor'][$diakId]['aktualisStatusz'] = $Diakok[$diakId]['statusz'][$i]['statusz']; + } + } + } + + + foreach ($H['névsor'] as $diakId => $dAdat) { + $H['diakIds'][] = $diakId; + $H[$diakId] = array(); + } + + if (count($H['névsor']) == 0) return $H; + + // A legmagasabb fegyelmi fokozat lekérdezése tanulónként + $q = "SELECT `diakId`, MAX(`referenciaDt`) AS `referenciaDt`, MAX(`fokozat`) AS `fokozat`, MAX(`bejegyzes`.`hianyzasDb`) AS `hianyzasDb` + FROM `".__TANEVDBNEV."`.`bejegyzes` LEFT JOIN `".__INTEZMENYDBNEV."`.`bejegyzesTipus` USING (`bejegyzesTipusId`) + WHERE `diakId` IN (".implode(',', array_fill(0, count($H['diakIds']), '%u')).") + AND `tipus` = 'fegyelmi' AND `bejegyzes`.`hianyzasDb` > 0 + GROUP BY `diakId`"; + $ret = db_query($q, array('fv' => 'getHianyzok/fegyelmi', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $H['diakIds']), $lr); + if (!is_array($ret)) { if ($olr == '') db_close($lr); return false; } + foreach ($ret as $key => $val) { + $H[ $val['diakId'] ]['fegyelmi'] = array( + 'fokozat' => $val['fokozat'], + 'referenciaDt' => $val['referenciaDt'], + 'hianyzasDb' => $val['hianyzasDb'] + ); + } + $q = "SELECT `diakId`, MAX(`referenciaDt`) AS `referenciaDt`, MAX(`fokozat`) AS `fokozat`, MAX(`bejegyzes`.`hianyzasDb`) AS `hianyzasDb` + FROM `".__TANEVDBNEV."`.`bejegyzes` LEFT JOIN `".__INTEZMENYDBNEV."`.`bejegyzesTipus` USING (`bejegyzesTipusId`) + WHERE `diakId` IN (".implode(',', array_fill(0, count($H['diakIds']), '%u')).") + AND `tipus` = 'fegyelmi' + GROUP BY `diakId`"; + $ret = db_query($q, array('fv' => 'getHianyzok/fegyelmi', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $H['diakIds']), $lr); + if (!is_array($ret)) { if ($olr == '') db_close($lr); return false; } + foreach ($ret as $key => $val) { + $H[ $val['diakId'] ]['fegyelmi']['maxFokozat'] = $val['fokozat']; + } + + $f_where = $where = $v_fw = $v_w = array(); + $v_w = array($ADAT['tolDt'], $ADAT['igDt']); + // A _LEGKORABBI_IGAZOLHATO_HIANYZAS és a legutóbbi osztályfőnöki óra függvénye + $dt = legkorabbiIgazolhatoHianyzasVeg($ADAT['osztalyId'], $lr); + foreach ($H['névsor'] as $diakId => $dAdat) { + // Az utolsó lezártnak tekinthető dátum - a beírt hiányzások függvénye! + $H[$diakId]['igDt'] = $tDt = getNemIgazolhatoDt($diakId, $munkatervIds, $dt, $lr); + // Ha megadott a felhasználó új viszonyítási pontott, akkor úgy vesszük, hogy addig a dátumig már le vannak zárva a hiányzások - legalábbis a fegyelmi szempontjából + if ($ADAT['referenciaDt'] != '' && strtotime($ADAT['referenciaDt']) > strtotime($tDt)) $tDt = $ADAT['referenciaDt']; + $where[] = "(diakId=%u AND dt<='%s')"; array_push($v_w, $diakId, $tDt); + if ($H[$diakId]['fegyelmi']['referenciaDt'] != '') { + $f_where[] = "(diakId=%u AND '%s'<dt AND dt<='%s')"; + array_push($v_fw, $diakId, $H[$diakId]['fegyelmi']['referenciaDt'], $tDt); + } else { + $f_where[] = "(diakId=%u AND dt<='%s')"; + array_push($v_fw, $diakId, $tDt); + } + } + + $Wnemszamit = defWnemszamit(); + + if (count($where) > 0) $where = "AND '%s' <= dt AND dt <= '%s' AND (".implode(' OR ', $where).")"; + if ($f_where != '') $f_where = 'AND ('.implode(' OR ',$f_where).')'; + // Összes hiányzás lekérdezése + $q = "SELECT diakId,tipus,statusz,count(*) AS db,SUM(perc) AS ido + FROM ".__TANEVDBNEV.".hianyzas".$Wnemszamit['join']." + WHERE statusz != 'törölt' + AND diakId IN (".implode(',', array_fill(0, count($H['diakIds']), '%u')).") + AND '%s' <= dt AND dt <= '%s' + ".$Wnemszamit['nemszamit']." + GROUP BY diakId, tipus, statusz"; + $v = $H['diakIds']; $v[] = $ADAT['tolDt']; $v[] = $ADAT['igDt']; + $ret = db_query($q, array('fv' => 'getHianyzok/összes', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $v), $lr); + if (!is_array($ret)) { if ($olr == '') db_close($lr); } + foreach ($ret as $key => $val) { + if ($val['tipus'] == 'késés') + $H[ $val['diakId'] ]['összes'][ $val['tipus'] ][ $val['statusz'] ] = array('db' => $val['db'], 'ido' => $val['ido']); + else + $H[ $val['diakId'] ]['összes'][ $val['tipus'] ][ $val['statusz'] ] = $val['db']; + } + + // Lezárt hiányzások lekérdezése + $q = "SELECT diakId,tipus,statusz,COUNT(*) AS db,SUM(perc) AS ido + FROM hianyzas + ".$Wnemszamit['join']." + WHERE statusz != 'törölt' + $where + ".$Wnemszamit['nemszamit']." + GROUP BY diakId, tipus, statusz"; + $ret = db_query($q, array('fv' => 'getHianyzok/lezárt', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $v_w), $lr); + if (!is_array($ret)) { if ($olr == '') db_close($lr); } + foreach ($ret as $key => $val) { + if ($val['tipus'] == 'késés') + $H[ $val['diakId'] ]['lezárt'][ $val['tipus'] ][ $val['statusz'] ] = array('db' => $val['db'], 'ido' => $val['ido']); + else + $H[ $val['diakId'] ]['lezárt'][ $val['tipus'] ][ $val['statusz'] ] = $val['db']; + } + + // Lezárt, még nem szankcionált hiányzások lekérdezése + $q = "SELECT diakId, tipus, statusz, COUNT(*) AS db, SUM(perc) AS ido + FROM hianyzas + ".$Wnemszamit['join']." + WHERE statusz != 'törölt' + $f_where + ".$Wnemszamit['nemszamit']." + GROUP BY diakId, tipus, statusz"; + + $ret = db_query($q, array('fv' => 'getHianyzok/lezárt, nem szankcionált', 'modul' => 'naplo', 'result' => 'indexed', 'values' => $v_fw), $lr); + if (!is_array($ret)) { if ($olr == '') db_close($lr); } + foreach ($ret as $key => $val) { + if ($val['tipus'] == 'késés') + $H[ $val['diakId'] ]['fegyelmi'][ $val['tipus'] ][ $val['statusz'] ] = array('db' => $val['db'], 'ido' => $val['ido']); + else + $H[ $val['diakId'] ]['fegyelmi'][ $val['tipus'] ][ $val['statusz'] ] = $val['db']; + } + + // Tanulónként + foreach ($H['névsor'] as $diakId => $dAdat) { + + $_HOZOTT = getDiakHozottHianyzas($diakId); //hozott hiányzások lekérdezése az alapértelmezett tanévre + //$H[$diakId]['összes']['hozott'] = $_HOZOTT['igazolatlan']['db'] + $_HOZOTT['igazolt']['db']; + + $H[$diakId]['hozott'] = $_HOZOTT; //??? + +// $H[$diakId]['összes']['hiányzás']['igazolt'] += $_HOZOTT['igazolt']['db']; +// $H[$diakId]['összes']['hiányzás']['igazolatlan'] += $_HOZOTT['igazolatlan']['db']; + + /* Egy diák */ + $H[$diakId]['összes igazolatlan'] = $H[$diakId]['összes']['hiányzás']['igazolatlan']; + + // 20/2012 EMMI 51. § (10) - igazolt késések is átváltandók + $H[$diakId]['összes igazolt'] += + floor($H[$diakId]['összes']['késés']['igazolt']['ido'] / 45); + // Az igazolatlanok esetén azt a számítási módot használjuk, amelyik szigorúbb + // Előbb a hivatalos, 45 percenkénti átváltás szerint + $igazolatlanKesesbol = floor($H[$diakId]['összes']['késés']['igazolatlan']['ido'] / 45); + // majd a késések, felszereléshiányok darabszáma szerinti + if (intval(_HANY_KESES_IGAZOLATLAN) != 0) + $igazolatlanFegyelmi = floor($H[$diakId]['összes']['késés']['igazolatlan']['db'] / intval(_HANY_KESES_IGAZOLATLAN)); + else + $igazolatlanFegyelmi = 0; + if (intval(_HANY_FSZ_IGAZOLATLAN) != 0) + $igazolatlanFegyelmi += floor($H[$diakId]['összes']['felszerelés hiány']['igazolatlan'] / intval(_HANY_FSZ_IGAZOLATLAN)); + if (intval(_HANY_EH_IGAZOLATLAN) != 0) // egyenruha hiány + $igazolatlanFegyelmi += floor($H[$diakId]['összes']['egyenruha hiány']['igazolatlan'] / intval(_HANY_EH_IGAZOLATLAN)); + // végül a kettő közül a nagyobbikkal növeljük az összes igazolatlanok számát ??? ezt miért? + if ($igazolatlanKesesbol > $igazolatlanFegyelmi) + $H[$diakId]['összes igazolatlan'] += $igazolatlanKesesbol; + else + $H[$diakId]['összes igazolatlan'] += $igazolatlanFegyelmi; +/* + //if (_KESESI_IDOK_OSSZEADODNAK === true) { // 20/2012 EMMI - mindenképp összeadódnak a késési idők + $H[$diakId]['összes igazolatlan'] += + floor($H[$diakId]['összes']['késés']['igazolatlan']['ido'] / 45); + //} else { + if (intval(_HANY_KESES_IGAZOLATLAN) != 0) + $H[$diakId]['összes igazolatlan'] += + floor($H[$diakId]['összes']['késés']['igazolatlan']['db'] / intval(_HANY_KESES_IGAZOLATLAN)); + if (intval(_HANY_FSZ_IGAZOLATLAN) != 0) + $H[$diakId]['összes igazolatlan'] += + floor($H[$diakId]['összes']['felszerelés hiány']['igazolatlan'] / intval(_HANY_FSZ_IGAZOLATLAN)); + //} +*/ +# Itt ne adjuk ezt hozzá, mert alább a $H[$diakId]['összes igazolatlan']-okat összegezzük - abban meg már benne lesz a hozott! (Issu 59) +# $H['összes']['összes igazolatlan'] += floor($_HOZOTT['igazolatlan']['db']); +# $H['összes']['összes igazolt'] += floor($_HOZOTT['igazolt']['db']); + $H[$diakId]['összes igazolatlan'] += floor($_HOZOTT['igazolatlan']['db']); + $H[$diakId]['összes igazolt'] += floor($_HOZOTT['igazolt']['db']); + + + if (_KESESI_IDOK_OSSZEADODNAK === true) { + $H[$diakId]['összes fegyelmi igazolatlan'] += + floor(((($H[$diakId]['összes']['késés']['igazolatlan']['ido'] + - $H[$diakId]['fegyelmi']['késés']['igazolatlan']['ido']) % 45 ) + + $H[$diakId]['fegyelmi']['késés']['igazolatlan']['ido']) / 45); + } + + + /* Összes Diákra, összesítés */ + $H['összes']['hiányzás']['igazolt'] += $H[$diakId]['összes']['hiányzás']['igazolt']; + $H['összes']['hiányzás']['igazolatlan'] += $H[$diakId]['összes']['hiányzás']['igazolatlan']; + + $H['összes']['hiányzás']['igazolatlan'] += floor($_HOZOTT['igazolatlan']['db']); + $H['összes']['hiányzás']['igazolt'] += floor($_HOZOTT['igazolt']['db']); + + $H['összes']['késés']['igazolt'] += $H[$diakId]['összes']['késés']['igazolt']['db']; + $H['összes']['késés']['igazolatlan'] += $H[$diakId]['összes']['késés']['igazolatlan']['db']; + $H['összes']['felszerelés hiány']['igazolatlan'] += $H[$diakId]['összes']['felszerelés hiány']['igazolatlan']; + $H['összes']['felmentés']['igazolatlan'] += $H[$diakId]['összes']['felmentés']['igazolatlan']; + $H['összes']['egyenruha hiány']['igazolatlan'] += $H[$diakId]['összes']['egyenruha hiány']['igazolatlan']; + + $H['összes']['összes igazolatlan'] += $H[$diakId]['összes igazolatlan']; + + $H['összes']['fegyelmi']['hiányzás']['igazolatlan'] += $H[$diakId]['fegyelmi']['hiányzás']['igazolatlan']; + $H['összes']['fegyelmi']['késés']['igazolatlan'] += $H[$diakId]['fegyelmi']['késés']['igazolatlan']['db']; + $H['összes']['fegyelmi']['felszerelés hiány']['igazolatlan'] += $H[$diakId]['fegyelmi']['felszerelés hiány']['igazolatlan']; + $H['összes']['fegyelmi']['egyenruha hiány']['igazolatlan'] += $H[$diakId]['fegyelmi']['egyenruha hiány']['igazolatlan']; + + } + + db_close($lr); + + return $H; + + } + +?> |