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,213 @@
DROP PROCEDURE IF EXISTS sp_GetNaplozasMulasztasList
GO
CREATE PROCEDURE [dbo].[sp_GetNaplozasMulasztasList]
@date datetime
,@oraId int
,@targyId int
,@osztalyCsoportId int
,@pCsakMegtartott bit
,@pTanevElsoTanitasiNapja datetime
,@pTanevUtolsoTanitasiNapja datetime
,@pTanevid int
,@pIntezmenyId int
,@pTanarId int
,@pAlapertelmezettMulasztasTipus int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @hetekSzama int = 36
CREATE TABLE #TanuloCsoport (
C_TANULOID int
,C_OSZTALYCSOPORTID int
,C_BELEPESDATUM datetime
,C_KILEPESDATUM datetime
,PRIMARY KEY CLUSTERED (C_TANULOID, C_BELEPESDATUM)
)
CREATE TABLE #TanuloMentessegOka (
C_TANULOID int
,MentessegOka nvarchar(max)
)
CREATE TABLE #JogviszonySzunetelteto (
TanuloId int
)
IF (SELECT C_VEGZOSEVFOLYAM FROM T_OSZTALYCSOPORT WHERE ID = @osztalyCsoportId) = 'T' BEGIN
SELECT @pTanevUtolsoTanitasiNapja = C_DATUM, @hetekSzama = 32
FROM T_TANEVRENDJE_OSSZES
WHERE TOROLT = 'F'
AND C_TANEVID = @pTanevid
AND C_NAPTIPUSA = 1402
END
INSERT INTO #JogviszonySzunetelteto (TanuloId)
SELECT TanuloId
FROM fnGetOsztalyCsoportTanuloinakTanugyiAdatai(@osztalyCsoportId,@date)
WHERE C_JOGVISZONYATSZUNETELTETO = 'T'
INSERT INTO #TanuloCsoport (C_TANULOID, C_OSZTALYCSOPORTID, C_BELEPESDATUM, C_KILEPESDATUM)
SELECT DISTINCT tcs.C_TANULOID, tcs.C_OSZTALYCSOPORTID, tcs.C_BELEPESDATUM, ISNULL(tcs.C_KILEPESDATUM, @pTanevUtolsoTanitasiNapja) AS C_KILEPESDATUM
FROM T_TANULOCSOPORT_OSSZES 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
AND (tcs.C_BELEPESDATUM < tcs.C_KILEPESDATUM OR tcs.C_KILEPESDATUM IS NULL)
AND NOT EXISTS (SELECT 1 FROM #JogviszonySzunetelteto jsz WHERE jsz.TanuloId = tcs.C_TANULOID)
AND tcs.C_TANEVID = @pTanevid
INSERT INTO #TanuloMentessegOka (C_TANULOID, MentessegOka)
SELECT
C_TANULOID
,STUFF((
SELECT DISTINCT ' | ' + tm.C_MENTESSEGOKA
FROM T_TANULOMENTESSEG_OSSZES tm
WHERE tm.C_TANTARGYID = @targyId AND tm.C_TANULOID = #TanuloCsoport.C_TANULOID AND @date BETWEEN ISNULL(tm.C_KEZDETE, @date) AND ISNULL(tm.C_VEGE, @date) AND tm.TOROLT = 'F' AND tm.C_TANEVID = @pTanevid
FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,3,'')
FROM #TanuloCsoport
CREATE TABLE #Feljegyzes (
tanuloid int
,tipus int
,id int
,PRIMARY KEY CLUSTERED (tanuloid, tipus, id)
)
INSERT INTO #Feljegyzes
SELECT tte.C_TANULOID, te.C_TIPUS, te.ID
FROM T_TANULOESEMENY_OSSZES te
INNER JOIN T_TANULO_TANULOESEMENY tte on tte.C_TANULOESEMENYID = te.ID
WHERE te.C_TANITASIORAID = @oraId
AND te.TOROLT = 'F'
AND te.C_TANEVID = @pTanevid
CREATE TABLE #Result (
TanuloId int
,TantargyId int
,Mulasztas int
,MegtartottOra int
,HatralevoOra int
,PRIMARY KEY CLUSTERED (TanuloId, TantargyId)
)
EXEC [uspGetOsztalycsoportTantargyiMulasztasai]
@pOsztalyId = @osztalyCsoportId
,@pTantargyId = @targyId
,@pTanevid = @pTanevid
,@pIntezmenyId = @pIntezmenyId
,@pCsakMegtartott = @pCsakMegtartott
SELECT
ID
,MulasztasId
,TanuloNev
,MulasztasTipus
,KesesIdo
,Oka
,MAX(ErtkelesMentesseg) AS ErtkelesMentesseg
,MAX(OraMentesseg) AS OraMentesseg
,MAX(SzovegesenErtekelheto) AS SzovegesenErtekelheto
,IsMagantanulo
,MagantanulosagKezdete
,JogviszonySzunetelteto
,GondviseloNev
,GondviseloTelSzam
,MAX(Igazolt) Igazolt
,ISNULL(tmpHianyCnt, 0) AS MulasztasHianyCnt
,ISNULL(tmpOsszCnt, 0) AS MulasztasOsszCnt
,ISNULL(tmpMegtartottOraCnt, 0) AS MulasztasMegtartottCnt
,ISNULL(tmpHatralevoOraCnt, 0) AS MulasztasMegtarthatoCnt
,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
,AmiFotargyId
,AmiTagozatId
,AmiTantargyKotelezosegId
,EvfolyamId
FROM (
SELECT
fh.ID AS ID
,mul.ID MulasztasId
,fh.C_NYOMTATASINEV + ' (' + FORMAT(fh.C_SZULETESIDATUM, 'yyyy.MM.dd.') + ')' TanuloNev
,CASE WHEN tOra.ID IS NULL THEN @pAlapertelmezettMulasztasTipus ELSE ISNULL(mul.C_TIPUS, 1498) END AS MulasztasTipus
,mul.C_KESESPERCBEN KesesIdo
,tmo.MentessegOka AS Oka
,tm.C_ERTEKELESMENTESITES ErtkelesMentesseg
,tm.C_ORAMENTESITES OraMentesseg
,tm.C_SZOVEGESENERTEKELHETO SzovegesenErtekelheto
,tta.C_MAGANTANULO IsMagantanulo
,tta.C_MAGANTANULOSAGKEZDETE MagantanulosagKezdete
,tta.C_JOGVISZONYATSZUNETELTETO JogviszonySzunetelteto
,ISNULL(gondviselo.C_NEV,'-') as GondviseloNev
,ISNULL(telefon.C_TELEFONSZAM,'-') as GondviseloTelSzam
,mul.C_IGAZOLT as Igazolt
,ISNULL(r.MegtartottOra,0) + ISNULL(r.HatralevoOra,0) as tmpOsszCnt
,r.Mulasztas as tmpHianyCnt
,r.MegtartottOra as tmpMegtartottOraCnt
,r.HatralevoOra as tmpHatralevoOraCnt
,FeljegyzesHazifeladat.id as Hazifeladat
,FeljegyzesFelszereles.id as Felszereles
,FeljegyzesFelment.id as Felment
,FeljegyzesDicseret.id as Dicseret
,IIF(i.ID IS NOT NULL, 'T', 'F') as RogzitettIgazolas
,ttfTanulo.C_AMIFOTARGYID AS AmiFotargyId
,ttfTanulo.C_AMITAGOZATID AS AmiTagozatId
,ttfTanulo.C_AMITANTARGYKOTELEZOSEGID AS AmiTantargyKotelezosegId
,ttfTanulo.C_EVFOLYAMTIPUSID AS EvfolyamId
FROM #TanuloCsoport tcs
INNER JOIN T_FELHASZNALO_OSSZES fh on fh.ID = tcs.C_TANULOID AND fh.C_TANEVID = @pTanevid
INNER JOIN fnGetOsztalyCsoportTanuloinakTanugyiAdatai(@osztalyCsoportId,@date) tta ON tta.TanuloId=fh.ID
INNER JOIN T_TANULO_OSSZES tanulo on tanulo.id = tcs.C_TANULOID AND tanulo.C_ALTANEVID = @pTanevid
OUTER APPLY (SELECT TOP 1 g.ID, g.C_NEV FROM T_GONDVISELO_OSSZES g WHERE tanulo.ID = g.C_TANULOID AND g.TOROLT = 'F' AND g.C_TANEVID = @pTanevid ORDER BY g.ID) gondviselo
OUTER APPLY (SELECT TOP 1 t.C_TELEFONSZAM FROM T_TELEFON_OSSZES t WHERE t.C_GONDVISELOID = gondviselo.ID AND t.TOROLT = 'F' ORDER BY t.C_ALAPERTELMEZETT DESC) telefon
LEFT JOIN T_TANULOMULASZTAS_OSSZES mul on mul.C_ORATANULOIID = fh.ID AND mul.C_TANITASIORAKID = @oraId AND mul.TOROLT = 'F' AND mul.C_TANEVID = @pTanevid
LEFT JOIN T_TANULOMENTESSEG_OSSZES tm on fh.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)) AND tm.C_TANEVID = @pTanevid
LEFT JOIN T_IGAZOLAS_OSSZES i ON fh.ID = i.C_TANULOID AND i.TOROLT = 'F' AND (@date BETWEEN ISNULL(i.C_KEZDETE, @date) AND isnull(i.C_VEGE, @date)) AND i.C_TANEVID = @pTanevid
LEFT JOIN #TanuloMentessegOka tmo ON tcs.C_TANULOID = tmo.C_TANULOID
LEFT JOIN #Result r ON r.TanuloId = fh.ID
LEFT JOIN #Feljegyzes FeljegyzesHazifeladat ON FeljegyzesHazifeladat.tanuloId = fh.ID AND FeljegyzesHazifeladat.tipus = 6325
LEFT JOIN #Feljegyzes FeljegyzesFelszereles ON FeljegyzesFelszereles.tanuloId = fh.ID AND FeljegyzesFelszereles.tipus = 6324
LEFT JOIN #Feljegyzes FeljegyzesFelment ON FeljegyzesFelment.tanuloId = fh.ID AND FeljegyzesFelment.tipus = 1542
LEFT JOIN #Feljegyzes FeljegyzesDicseret ON FeljegyzesDicseret.tanuloId = fh.ID AND FeljegyzesDicseret.tipus = 1536
LEFT JOIN T_FOGLALKOZAS_OSSZES ttf ON ttf.C_TANTARGYID = @targyId AND ttf.C_OSZTALYCSOPORTID = @osztalyCsoportId AND ttf.C_TANARID = @pTanarId AND ttf.C_TANEVID = @pTanevid AND ttf.TOROLT = 'F'
LEFT JOIN T_FOGLALKOZASAMITANULO_OSSZES ttfTanulo ON ttf.ID = ttfTanulo.C_FOGLALKOZASID AND ttfTanulo.C_TANULOID = tcs.C_TANULOID AND ttfTanulo.C_TANEVID = @pTanevid AND ttfTanulo.TOROLT = 'F'
LEFT JOIN T_TANITASIORA_OSSZES tOra ON tOra.ID = @oraId AND tOra.C_TANEVID = @pTanevid AND tOra.TOROLT = 'F'
) AS x
GROUP BY
ID
,MulasztasId
,TanuloNev
,MulasztasTipus
,IsMagantanulo
,MagantanulosagKezdete
,JogviszonySzunetelteto
,Oka
,KesesIdo
,GondviseloNev
,GondviseloTelSzam
,tmpOsszCnt
,tmpHianyCnt
,tmpMegtartottOraCnt
,tmpHatralevoOraCnt
,Hazifeladat
,Felszereles
,Felment
,Dicseret
,RogzitettIgazolas
,AmiFotargyId
,AmiTagozatId
,AmiTantargyKotelezosegId
,EvfolyamId
ORDER BY x.TanuloNev
END
GO