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,209 @@
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
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 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)
INSERT INTO #TanuloMentessegOka (C_TANULOID, MentessegOka)
SELECT
C_TANULOID
,STUFF((
SELECT DISTINCT ' | ' + tm.C_MENTESSEGOKA
FROM T_TANULOMENTESSEG tm
WHERE tm.C_TANTARGYID = @targyId AND tm.C_TANULOID = #TanuloCsoport.C_TANULOID
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 te
INNER JOIN T_TANULO_TANULOESEMENY tte on tte.C_TANULOESEMENYID = te.ID
WHERE te.C_TANITASIORAID = @oraId
AND te.TOROLT = 'F'
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
,isnull(mul.C_TIPUS, 1498) 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 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 ttfTanulo ON ttf.ID = ttfTanulo.C_FOGLALKOZASID AND ttfTanulo.C_TANULOID = tcs.C_TANULOID AND ttfTanulo.C_TANEVID = @pTanevid AND ttfTanulo.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

View file

@ -0,0 +1,179 @@
DROP PROCEDURE IF EXISTS dbo.uspGetOsztalycsoportTantargyiMulasztasai
GO
CREATE PROCEDURE dbo.uspGetOsztalycsoportTantargyiMulasztasai
@pOsztalyId int
,@pTantargyId int
,@pTanevid int
,@pIntezmenyId int
,@pCsakMegtartott bit /*0 - nem, 1 - igen */
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@oraPerc int
,@isIskolaiErdekuSzamit bit
,@sql nvarchar(max) =N''
SET @sql +=N'
SET @isIskolaiErdekuSzamit = dbo.fnGetRendszerbeallitasEnumBool(1683, @pIntezmenyId, @pTanevid)
SET @oraPerc = (
SELECT ISNULL(csp.C_ORAPERC, 45)
FROM T_OSZTALYCSOPORT ocs
LEFT JOIN T_CSOPORT cs on cs.ID = ocs.ID AND cs.TOROLT = ''F''
LEFT JOIN T_CSOPORTTIPUS csp ON csp.ID = cs.C_TIPUSA AND cs.TOROLT = ''F''
WHERE ocs.ID = @pOsztalyId AND ocs.TOROLT = ''F'')
CREATE TABLE #OsztalyTanuloi (
TanuloId int
,Belepes datetime
,Kilepes datetime
,PRIMARY KEY CLUSTERED (TanuloId)
)
INSERT INTO #OsztalyTanuloi (TanuloId)
SELECT DISTINCT C_TANULOID
FROM T_TANULOCSOPORT_OSSZES
WHERE C_OSZTALYCSOPORTID = @pOsztalyId
AND C_TANEVID = @pTanevId
AND TOROLT = ''F''
'
SET @sql += N'
INSERT INTO #Result (
TanuloId
,TantargyId
,Mulasztas
,MegtartottOra
,HatralevoOra
) SELECT
ot.TanuloId
,tn.C_TANTARGYID AS TantargyId
,SUM(IIF(C_TIPUS = 1500, 1, 0)) + (SUM(IIF(C_TIPUS = 1499, C_KESESPERCBEN, 0)) / @oraPerc) AS Mulasztas
,COUNT(DISTINCT tn.ID) AS MegtartottOra
,IIF(@pCsakMegtartott = 1, NULL, 0) AS HatralevoOra
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN #OsztalyTanuloi ot ON tcs.C_TANULOID = ot.TanuloId
INNER JOIN T_TANITASIORA_OSSZES tn ON tn.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID
AND tn.C_BEJEGYZESIDEJE >= tcs.C_BELEPESDATUM
AND tn.C_BEJEGYZESIDEJE < ISNULL(tcs.C_KILEPESDATUM, ''21000101'')
AND tn.C_MEGTARTOTT = ''T'' AND tn.TOROLT = ''F''
LEFT JOIN T_TANULOMULASZTAS_OSSZES tm ON tm.C_TANITASIORAKID = tn.ID
AND tm.C_ORATANULOIID = ot.TanuloId
AND tm.C_TIPUS BETWEEN 1499 AND 1500
AND tm.TOROLT = ''F''
' + IIF(@isIskolaiErdekuSzamit = 0, 'AND ISNULL(tm.C_IGAZOLASTIPUSA,-1) <> 1533', '') + '
WHERE tcs.TOROLT = ''F''
' + IIF(@pTantargyId IS NULL, '', 'AND tn.C_TANTARGYID = @pTantargyId') + '
GROUP BY ot.TanuloId, tn.C_TANTARGYID
'
SET @sql +=N'
IF @pCsakMegtartott = 0 BEGIN
CREATE TABLE #OrarendTable (
Id int
,ORARENDIID INT
,Datum datetime
,Bontott char(1)
,Hetirend int
,HetNapja int
,HetSorszam int
,ErvenyessegKezdete datetime
,ErvenyessegVege datetime
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,TargyNev nvarchar(300)
,TargyNevForMobile nvarchar(300)
,TargykategoriaID int
,Megtartott char(1)
,CsengetesiRendOraID int
,CsengetesiRendID int
,MaxNapiOraszam int
,OsztalyNev nvarchar(255)
,TanevRendOsztalyCsoportId int
,MegjelenesOka nvarchar(300)
,TanarNev nvarchar(255)
,TeremNev nvarchar(255)
,TeremId int
,OraTipus nvarchar(200)
,Hianyzas char(1)
,Keses char(1)
,Ures char(1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar(255)
,HelyettesitesId int
,TanarID int
,AdminAltalKiirt char(1)
,GroupId int
,Tema nvarchar(max)
,TantargyId int
,OsztCsopId int
,INDEX IX_TanevRendOsztalyCsoportId CLUSTERED (TanevRendOsztalyCsoportId)
)
DECLARE @idoszakKezdete datetime = GETDATE()
DECLARE @idoszakVege datetime
SELECT @idoszakVege = C_NAPDATUMA
FROM T_NAPTARINAP
WHERE C_NAPTIPUSA = 1395
AND C_TANEVID = @pTanevId
IF @idoszakVege IS NULL SET @idoszakVege = (
SELECT C_UTOLSOTANITASINAP
FROM T_TANEV
WHERE ID = @pTanevid
AND TOROLT = ''F'')
INSERT INTO #OrarendTable (
Id,ORARENDIID,Datum,Bontott,Hetirend,HetNapja,HetSorszam,ErvenyessegKezdete,ErvenyessegVege,OraKezdete,OraVege,Oraszam,
TargyNev,TargyNevForMobile,TargykategoriaID,Megtartott,CsengetesiRendOraID,CsengetesiRendID,MaxNapiOraszam,OsztalyNev,TanevRendOsztalyCsoportId,
MegjelenesOka,TanarNev,TeremNev,TeremId,OraTipus,Hianyzas,Keses,Ures,HelyettesitoTanarID,HelyettesitoTanarNev,HelyettesitesId,TanarID,AdminAltalKiirt,GroupId,Tema,TantargyId,OsztCsopId)
EXEC sp_GetOrarend
@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pIdoszakKezdete = @idoszakKezdete
,@pIdoszakVege = @idoszakVege
,@pTanarId = NULL
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = @pOsztalyId
,@pTanuloId = NULL
,@pTantargyId = @pTantargyId
,@pTeremId = NULL
,@pCsakOrarendiOrak = 0
,@pIsNapirend = 0
UPDATE r
SET
r.HatralevoOra = ISNULL(o.HatralevoOra, 0)
FROM #Result r
LEFT JOIN (
SELECT
ot.TanuloId, COUNT(1) AS HatralevoOra
FROM T_TANULOCSOPORT tcs
INNER JOIN #OrarendTable oo ON tcs.C_OSZTALYCSOPORTID = oo.TanevRendOsztalyCsoportId
INNER JOIN #OsztalyTanuloi ot ON tcs.C_TANULOID = ot.TanuloId AND oo.Datum >= tcs.C_BELEPESDATUM AND oo.Datum < ISNULL(tcs.C_KILEPESDATUM, ''21000101'')
GROUP BY ot.TanuloId
) o ON o.TanuloId = r.TanuloId
END'
EXEC sys.sp_executesql @sql, N'
@pTantargyId int
,@oraPerc int
,@pCsakMegtartott bit
,@pTanevId int
,@pIntezmenyId int
,@isIskolaiErdekuSzamit int
,@pOsztalyId int'
,@pTantargyId = @pTantargyId
,@oraPerc = @oraPerc
,@pCsakMegtartott = @pCsakMegtartott
,@pTanevid = @pTanevid
,@pIntezmenyId = @pIntezmenyId
,@isIskolaiErdekuSzamit = @isIskolaiErdekuSzamit
,@pOsztalyId = @pOsztalyId
END
GO