This commit is contained in:
2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View File

@@ -0,0 +1,179 @@
IF OBJECT_ID('[dbo].[sp_GetNaplozasMulasztasList]') IS NOT NULL BEGIN
DROP PROCEDURE [dbo].[sp_GetNaplozasMulasztasList]
END
GO
CREATE PROCEDURE [dbo].[sp_GetNaplozasMulasztasList]
@date datetime
,@oraId int
,@targyId int
,@osztalyCsoportId int
,@egeszEvesOraszam bit
,@tanevElsoNapja datetime
,@tanevUtolsoNapja datetime
AS
BEGIN
SET NOCOUNT ON;
DECLARE @orahossza int = 45;
IF ((SELECT C_GYAKORLATI FROM T_TANTARGY WHERE ID = @targyId) = 'T') BEGIN SET @orahossza = 60; END
DECLARE @tmpOssz TABLE (tanuloId INT, cnt INT)
DECLARE @tmpHiany TABLE (tanuloId INT, cnt INT)
IF (@egeszEvesOraszam = 0) /*Megtartott órákat kell figyelembe venni*/
BEGIN
INSERT INTO @tmpOssz
SELECT tcs.C_TANULOID AS tanuloId, COUNT(*) AS cnt FROM T_TANULOCSOPORT tcs
LEFT JOIN T_TANITASIORA t ON t.TOROLT = 'F' AND t.C_TANTARGYID = @targyId AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId AND t.C_MEGTARTOTT = 'T'
WHERE
tcs.torolt = 'F'
AND tcs.C_BELEPESDATUM <= @date AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @date)
AND tcs.c_osztalycsoportid = @osztalyCsoportId
GROUP BY tcs.C_TANULOID
END
ELSE /*Az összes évi órát kell figyelni*/
BEGIN
IF ((select C_VEGZOSEVFOLYAM from T_OSZTALYCSOPORT where ID = @osztalyCsoportId) = 'T')
BEGIN
SET @tanevUtolsoNapja = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE TOROLT = 'F' AND C_TANEVID = (SELECT ID FROM T_TANEV_OSSZES WHERE TOROLT = 'F' AND C_AKTIV = 'T') AND C_NAPTIPUSA = 1402)
END
INSERT INTO @tmpOssz
SELECT tanuloId, SUM(cnt) FROM (
SELECT tcs.C_TANULOID AS tanuloId, COUNT(*) AS cnt FROM T_TANULOCSOPORT tcs
LEFT JOIN (SELECT nn.C_NAPDATUMA FROM T_NAPTARINAP nn
JOIN T_ORARENDIORA oo ON (oo.C_HETIREND = nn.C_HETIREND OR oo.C_HETIREND = 1554) AND nn.C_HETNAPJA = oo.C_HETNAPJA AND nn.C_INTEZMENYID = oo.C_INTEZMENYID AND nn.C_TANEVID = oo.C_TANEVID AND nn.C_NAPDATUMA BETWEEN oo.C_ORAERVENYESSEGKEZDETE AND oo.C_ORAERVENYESSEGVEGE
WHERE
nn.C_NAPDATUMA BETWEEN @tanevElsoNapja AND @tanevUtolsoNapja AND oo.C_OSZTALYCSOPORTID = @osztalyCsoportId AND oo.TOROLT = 'F') AS x
ON x.C_NAPDATUMA BETWEEN tcs.C_BELEPESDATUM AND ISNULL(tcs.C_KILEPESDATUM,@tanevUtolsoNapja)
WHERE
tcs.torolt = 'F'
AND tcs.C_BELEPESDATUM <= @tanevElsoNapja AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @date)
AND tcs.c_osztalycsoportid = @osztalyCsoportId
GROUP BY tcs.C_TANULOID
UNION ALL
SELECT tcs.C_TANULOID AS tanuloId, COUNT(*) AS cnt FROM T_TANULOCSOPORT tcs
LEFT JOIN T_TANITASIORA t ON t.TOROLT = 'F' AND t.C_TANTARGYID = @targyId AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId AND t.C_MEGTARTOTT = 'T' AND t.C_ORARENDIORAID IS NULL
WHERE
tcs.torolt = 'F'
AND tcs.C_BELEPESDATUM <= @date AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @date)
AND tcs.c_osztalycsoportid = @osztalyCsoportId
GROUP BY tcs.C_TANULOID
) AS x GROUP BY tanuloId
END
INSERT INTO @tmpHiany
SELECT tanuloId, SUM(cnt) FROM (
SELECT tcs.C_TANULOID AS tanuloId, COUNT(*) AS cnt FROM T_TANULOCSOPORT tcs
JOIN T_TANITASIORA t ON t.TOROLT = 'F' AND t.C_TANTARGYID = @targyId AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId AND t.C_MEGTARTOTT = 'T'
JOIN T_TANULOMULASZTAS m ON m.C_ORATANULOIID = tcs.C_TANULOID AND m.C_TIPUS = 1500 AND m.C_TANITASIORAKID = t.ID AND m.TOROLT = 'F'
WHERE
tcs.torolt = 'F'
AND tcs.C_BELEPESDATUM <= @date AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @date)
AND tcs.c_osztalycsoportid = @osztalyCsoportId
GROUP BY tcs.C_TANULOID
UNION ALL
SELECT tcs.C_TANULOID AS tanuloId, SUM(m.C_KESESPERCBEN) / @orahossza AS cnt FROM T_TANULOCSOPORT tcs
JOIN T_TANITASIORA t ON t.TOROLT = 'F' AND t.C_TANTARGYID = @targyId AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId AND t.C_MEGTARTOTT = 'T'
JOIN T_TANULOMULASZTAS m ON m.C_ORATANULOIID = tcs.C_TANULOID AND m.C_TIPUS = 1499 AND m.C_TANITASIORAKID = t.ID AND m.TOROLT = 'F'
WHERE
tcs.torolt = 'F'
AND tcs.C_BELEPESDATUM <= @date AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @date)
AND tcs.c_osztalycsoportid = @osztalyCsoportId
GROUP BY tcs.C_TANULOID
) AS x GROUP BY tanuloId
DECLARE @tmpFeljegyzes TABLE (tanuloId INT, tipus INT, id INT)
INSERT INTO @tmpFeljegyzes
SELECT tte.C_TANULOID, te.C_TIPUS, te.ID from T_TANULOESEMENY te
JOIN T_TANULO_TANULOESEMENY tte on tte.C_TANULOESEMENYID = te.ID
WHERE
te.C_TANITASIORAID = @oraId AND te.TOROLT = 'F'
SELECT
ID,
MulasztasId,
TanuloNev,
MulasztasTipus,
KesesIdo,
Oka,
MAX(ErtkelesMentesseg) ErtkelesMentesseg,
MAX(OraMentesseg) OraMentesseg,
MAX(SzovegesenErtekelheto) SzovegesenErtekelheto,
IsMagantanulo,
GondviseloNev,
GondviseloTelSzam,
MAX(Igazolt) Igazolt,
ISNULL(CAST((CAST(tmpHianyCnt AS FLOAT) / CAST(tmpOsszCnt AS FLOAT)) * 100 as int), 0) as MulasztasSzazalek,
IIF(Hazifeladat IS NOT NULL,'T','F') as HaziFeladatHiany,
Hazifeladat as HaziFeladatHianyId,
IIF(Felszereles IS NOT NULL,'T','F') as FelszerelesHiany,
Felszereles as FelszerelesHianyId,
IIF(Felment IS NOT NULL,'T','F') as Felmentes,
Felment as FelmentesId,
IIF(Dicseret IS NOT NULL,'T','F') as TanoraiDicseret,
Dicseret as TanoraiDicseretId
FROM (
SELECT
T_FELHASZNALO.ID ID,
T_TANULOMULASZTAS.ID MulasztasId,
T_FELHASZNALO.C_NYOMTATASINEV + ' (' + CONVERT(nvarchar(50),T_FELHASZNALO.C_SZULETESIDATUM,102) + ')' TanuloNev,
isnull(T_TANULOMULASZTAS.C_TIPUS, 1498) MulasztasTipus,
T_TANULOMULASZTAS.C_KESESPERCBEN KesesIdo,
STUFF((
SELECT DISTINCT ' | ' + tm2.C_MENTESSEGOKA
FROM T_TANULOMENTESSEG tm2
WHERE tm2.C_TANULOID = T_FELHASZNALO.ID
FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,3,'') AS Oka,
tm.C_ERTEKELESMENTESITES ErtkelesMentesseg,
tm.C_ORAMENTESITES OraMentesseg,
tm.C_SZOVEGESENERTEKELHETO SzovegesenErtekelheto,
T_TANULO.C_MAGANTANULO IsMagantanulo,
ISNULL(gondviselo.C_NEV,'') as GondviseloNev,
ISNULL(telefon.C_TELEFONSZAM,'') as GondviseloTelSzam,
T_TANULOMULASZTAS.C_IGAZOLT as Igazolt,
tmpOssz.cnt as tmpOsszCnt,
tmpHiany.cnt as tmpHianyCnt,
tmpFeljegyzesHazifeladat.id as Hazifeladat,
tmpFeljegyzesFelszereles.id as Felszereles,
tmpFeljegyzesFelment.id as Felment,
tmpFeljegyzesDicseret.id as Dicseret
FROM T_TANULOCSOPORT
INNER JOIN T_FELHASZNALO on T_FELHASZNALO.id=T_TANULOCSOPORT.c_tanuloid
INNER JOIN T_TANULO on T_TANULO.id = T_TANULOCSOPORT.c_tanuloid
LEFT JOIN T_GONDVISELO gondviselo ON gondviselo.ID = (SELECT MIN(ID) FROM T_GONDVISELO WHERE C_TANULOID = T_TANULO.ID)
OUTER APPLY (SELECT TOP 1 t.C_TELEFONSZAM FROM T_TELEFON t WHERE t.C_GONDVISELOID = gondviselo.ID ORDER BY C_ALAPERTELMEZETT DESC) telefon
LEFT JOIN T_TANULOMULASZTAS on T_TANULOMULASZTAS.C_ORATANULOIID = T_FELHASZNALO.ID and T_TANULOMULASZTAS.C_TANITASIORAKID = @oraId AND T_TANULOMULASZTAS.TOROLT = 'F'
LEFT JOIN T_TANULOMENTESSEG tm on T_FELHASZNALO.ID = tm.C_TANULOID and tm.TOROLT = 'F' and tm.C_TANTARGYID = @targyId and (@date between isnull(tm.C_KEZDETE, @date) and isnull(tm.C_VEGE, @date))
LEFT JOIN @tmpOssz tmpOssz ON tmpOssz.tanuloId = T_FELHASZNALO.ID
LEFT JOIN @tmpHiany tmpHiany ON tmpHiany.tanuloId = T_FELHASZNALO.ID
LEFT JOIN @tmpFeljegyzes tmpFeljegyzesHazifeladat ON tmpFeljegyzesHazifeladat.tanuloId = T_FELHASZNALO.ID AND tmpFeljegyzesHazifeladat.tipus = 6325
LEFT JOIN @tmpFeljegyzes tmpFeljegyzesFelszereles ON tmpFeljegyzesFelszereles.tanuloId = T_FELHASZNALO.ID AND tmpFeljegyzesFelszereles.tipus = 6324
LEFT JOIN @tmpFeljegyzes tmpFeljegyzesFelment ON tmpFeljegyzesFelment.tanuloId = T_FELHASZNALO.ID AND tmpFeljegyzesFelment.tipus = 1542
LEFT JOIN @tmpFeljegyzes tmpFeljegyzesDicseret ON tmpFeljegyzesDicseret.tanuloId = T_FELHASZNALO.ID AND tmpFeljegyzesDicseret.tipus = 1536
WHERE T_TANULOCSOPORT.torolt = 'F'
and T_TANULOCSOPORT.C_BELEPESDATUM <= @date
and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM >= @date)
and T_TANULOCSOPORT.c_osztalycsoportid = @osztalyCsoportId
) AS x
GROUP BY
ID,
MulasztasId,
TanuloNev,
MulasztasTipus,
IsMagantanulo,
Oka,
KesesIdo,
GondviseloNev,
GondviseloTelSzam,
tmpOsszCnt,
tmpHianyCnt,
Hazifeladat,
Felszereles,
Felment,
Dicseret
ORDER BY x.TanuloNev
END
GO