aboutsummaryrefslogtreecommitdiffstats
path: root/mayor-orig/www/include/modules/naplo/hianyzas
diff options
context:
space:
mode:
authorM.Gergo2018-07-06 11:14:41 +0200
committerM.Gergo2018-07-06 11:14:41 +0200
commit43de9af71f7f4ca5731b94a06d688ae8412ba427 (patch)
tree54835de1dfcda504c02da261f0dc26885aed2e89 /mayor-orig/www/include/modules/naplo/hianyzas
parent50310b0e4513ee3fcce67351ae61e8fff851130e (diff)
downloadmayor-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')
-rw-r--r--mayor-orig/www/include/modules/naplo/hianyzas/diak.php119
-rw-r--r--mayor-orig/www/include/modules/naplo/hianyzas/oktstat.php155
-rw-r--r--mayor-orig/www/include/modules/naplo/hianyzas/ora.php8
-rw-r--r--mayor-orig/www/include/modules/naplo/hianyzas/osztaly.php232
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;
+
+ }
+
+?>