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

View file

@ -0,0 +1,198 @@
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
,@hetekSzama int = 36
IF (SELECT C_GYAKORLATI FROM T_TANTARGY WHERE ID = @targyId) = 'T' BEGIN
SET @orahossza = 60;
END
DECLARE @tmpOssz TABLE (tanuloId int PRIMARY KEY, cnt int)
DECLARE @tmpHiany TABLE (tanuloId int PRIMARY KEY, cnt int)
DECLARE @tmpTanuloCsoport TABLE (C_TANULOID int PRIMARY KEY, C_OSZTALYCSOPORTID int, C_BELEPESDATUM datetime, C_KILEPESDATUM datetime)
DECLARE @tmpTanuloRelevansCsoportjai TABLE (C_TANULOID int, C_OSZTALYCSOPORTID int)
IF (SELECT C_VEGZOSEVFOLYAM FROM T_OSZTALYCSOPORT WHERE ID = @osztalyCsoportId) = 'T' BEGIN
SELECT @tanevUtolsoNapja = C_DATUM, @hetekSzama = 32
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 @tmpTanuloCsoport (C_TANULOID, C_OSZTALYCSOPORTID, C_BELEPESDATUM, C_KILEPESDATUM)
SELECT DISTINCT tcs.C_TANULOID, tcs.C_OSZTALYCSOPORTID, tcs.C_BELEPESDATUM, ISNULL(tcs.C_KILEPESDATUM, @tanevUtolsoNapja) AS C_KILEPESDATUM
FROM T_TANULOCSOPORT tcs
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
INSERT INTO @tmpTanuloRelevansCsoportjai (C_TANULOID, C_OSZTALYCSOPORTID)
SELECT DISTINCT tcs.C_TANULOID, tcs.C_OSZTALYCSOPORTID
FROM T_TANULOCSOPORT tcs
INNER JOIN T_FOGLALKOZAS fog ON fog.C_TANTARGYID = @targyId AND fog.TOROLT = 'F' AND fog.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID
WHERE tcs.torolt = 'F'
AND tcs.C_BELEPESDATUM <= @date AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @date)
AND tcs.C_TANULOID IN (SELECT ttcs.C_TANULOID FROM @tmpTanuloCsoport ttcs)
IF @egeszEvesOraszam = 0 BEGIN /*Megtartott órákat kell figyelembe venni*/
INSERT INTO @tmpOssz
SELECT tcs.C_TANULOID AS tanuloId, COUNT(*) AS cnt
FROM @tmpTanuloCsoport tcs
INNER JOIN T_TANITASIORA tn ON
tn.C_OSZTALYCSOPORTID IN (SELECT trcs.C_OSZTALYCSOPORTID FROM @tmpTanuloRelevansCsoportjai trcs WHERE trcs.C_TANULOID = tcs.C_TANULOID)
WHERE tn.TOROLT = 'F'
AND tn.C_TANTARGYID = @targyId
AND tn.C_MEGTARTOTT = 'T'
GROUP BY tcs.C_TANULOID
END
ELSE BEGIN /*Az összes évi órát kell figyelni*/
INSERT INTO @tmpOssz
SELECT
C_TANULOID
,CAST((SELECT SUM(C_ORASZAM) FROM T_FOGLALKOZAS WHERE
C_OSZTALYCSOPORTID IN (SELECT trcs.C_OSZTALYCSOPORTID FROM @tmpTanuloRelevansCsoportjai trcs WHERE trcs.C_TANULOID = tcs.C_TANULOID)
AND C_TANTARGYID = @targyId AND TOROLT = 'F') * @hetekSzama AS int
)
FROM @tmpTanuloCsoport tcs
END
INSERT INTO @tmpHiany
SELECT tanuloId, SUM(cnt)
FROM (
SELECT tcs.C_TANULOID AS tanuloId, COUNT(*) AS cnt
FROM @tmpTanuloCsoport tcs
INNER JOIN T_TANITASIORA t ON t.TOROLT = 'F'
AND t.C_TANTARGYID = @targyId
AND t.C_OSZTALYCSOPORTID IN (SELECT trcs.C_OSZTALYCSOPORTID FROM @tmpTanuloRelevansCsoportjai trcs WHERE trcs.C_TANULOID = tcs.C_TANULOID)
AND t.C_MEGTARTOTT = 'T'
INNER 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'
GROUP BY tcs.C_TANULOID
UNION ALL
SELECT tcs.C_TANULOID AS tanuloId, SUM(m.C_KESESPERCBEN) / @orahossza AS cnt
FROM @tmpTanuloCsoport tcs
INNER JOIN T_TANITASIORA t ON t.TOROLT = 'F'
AND t.C_TANTARGYID = @targyId
AND t.C_OSZTALYCSOPORTID IN (SELECT trcs.C_OSZTALYCSOPORTID FROM @tmpTanuloRelevansCsoportjai trcs WHERE trcs.C_TANULOID = tcs.C_TANULOID)
AND t.C_MEGTARTOTT = 'T'
INNER 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'
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
INNER 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(tmpHianyCnt, 0) as MulasztasHianyCnt
,ISNULL(tmpOsszCnt, 0) as MulasztasOsszCnt
,IIF(tmpOsszCnt = 0,0, 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
,RogzitettIgazolas as RogzitettIgazolas
FROM (
SELECT
T_FELHASZNALO.ID AS 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_TANULO.ID
AND tm2.C_TANTARGYID = tm.C_TANTARGYID
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
,IIF(i.ID IS NOT NULL, 'T', 'F') as RogzitettIgazolas
FROM @tmpTanuloCsoport tcs
INNER JOIN T_FELHASZNALO on T_FELHASZNALO.ID = tcs.C_TANULOID
INNER JOIN T_TANULO on T_TANULO.id = tcs.C_TANULOID and ( T_TANULO.C_SZAKMAIGYAKORLATON <> 'T' OR T_TANULO.C_SZAKMAIGYAKORLATON IS NULL) AND ( T_TANULO.C_JOGVISZONYATSZUNETELTETO <> 'T' OR T_TANULO.C_JOGVISZONYATSZUNETELTETO IS NULL)
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 T_IGAZOLAS i ON T_FELHASZNALO.ID = i.C_TANULOID AND i.TOROLT = 'F' AND (@date between isnull(i.C_KEZDETE, @date) and isnull(i.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
) AS x
GROUP BY
ID,
MulasztasId,
TanuloNev,
MulasztasTipus,
IsMagantanulo,
Oka,
KesesIdo,
GondviseloNev,
GondviseloTelSzam,
tmpOsszCnt,
tmpHianyCnt,
Hazifeladat,
Felszereles,
Felment,
Dicseret,
RogzitettIgazolas
ORDER BY x.TanuloNev
END
GO