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,10 @@
IF EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_TANULOMULASZTAS_ORATANULOIID_TANITASIORAKID_TIPUS_INTEZMENYID_TANEVID') BEGIN
DROP INDEX IX_TANULOMULASZTAS_ORATANULOIID_TANITASIORAKID_TIPUS_INTEZMENYID_TANEVID ON T_TANULOMULASZTAS
END
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_TANULOMULASZTAS_ORATANULOIID_TANITASIORAKID_TIPUS_INTEZMENYID_TANEVID_INC_KESESPERCBEN') BEGIN
CREATE INDEX IX_TANULOMULASZTAS_ORATANULOIID_TANITASIORAKID_TIPUS_INTEZMENYID_TANEVID_INC_KESESPERCBEN
ON T_TANULOMULASZTAS (C_ORATANULOIID, C_TANITASIORAKID, C_TIPUS, C_INTEZMENYID, C_TANEVID)
INCLUDE (C_KESESPERCBEN)
WHERE TOROLT = 'F'
END

View file

@ -0,0 +1,183 @@
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
,@pCsakMegtartott bit
,@pTanevElsoTanitasiNapja datetime
,@pTanevUtolsoTanitasiNapja datetime
,@pTanevid int
,@pIntezmenyId 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
,CONSTRAINT PK_tmpTanuloCsoport PRIMARY KEY (C_TANULOID)
)
CREATE TABLE #TanuloRelevansCsoportjai (
C_TANULOID int
,C_OSZTALYCSOPORTID 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 #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
INSERT INTO #TanuloRelevansCsoportjai (C_TANULOID, C_OSZTALYCSOPORTID)
SELECT DISTINCT tcs.C_TANULOID, tcs.C_OSZTALYCSOPORTID
FROM T_TANULOCSOPORT tcs
INNER JOIN #TanuloCsoport ttcs ON ttcs.C_TANULOID = tcs.C_TANULOID
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)
CREATE TABLE #Feljegyzes (
tanuloid int
,tipus int
,id int
,CONSTRAINT PK_Feljegyzes PRIMARY KEY (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
,CONSTRAINT PK_Result PRIMARY KEY (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
,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
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
,STUFF((
SELECT DISTINCT ' | ' + tm2.C_MENTESSEGOKA
FROM T_TANULOMENTESSEG tm2
WHERE tm2.C_TANULOID = 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
,tanulo.C_MAGANTANULO IsMagantanulo
,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
FROM #TanuloCsoport tcs
INNER JOIN T_FELHASZNALO_OSSZES fh on fh.ID = tcs.C_TANULOID
INNER JOIN T_TANULO_OSSZES tanulo on tanulo.id = tcs.C_TANULOID and ( tanulo.C_SZAKMAIGYAKORLATON <> 'T' OR tanulo.C_SZAKMAIGYAKORLATON IS NULL) AND ( tanulo.C_JOGVISZONYATSZUNETELTETO <> 'T' OR tanulo.C_JOGVISZONYATSZUNETELTETO IS NULL)
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'
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))
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))
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
) AS x
GROUP BY
ID,
MulasztasId,
TanuloNev,
MulasztasTipus,
IsMagantanulo,
Oka,
KesesIdo,
GondviseloNev,
GondviseloTelSzam,
tmpOsszCnt,
tmpHianyCnt,
tmpMegtartottOraCnt,
tmpHatralevoOraCnt,
Hazifeladat,
Felszereles,
Felment,
Dicseret,
RogzitettIgazolas
ORDER BY x.TanuloNev
IF OBJECT_ID('tempdb..#Result') IS NOT NULL BEGIN
DROP TABLE #Result
END
END

View file

@ -0,0 +1,188 @@
IF OBJECT_ID('dbo.uspGetOsztalycsoportTantargyiMulasztasai') IS NOT NULL BEGIN
DROP PROCEDURE dbo.uspGetOsztalycsoportTantargyiMulasztasai
END
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
@isResultTableDeclered bit = 0
,@oraPerc int
,@sql nvarchar(max)
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')
IF OBJECT_ID('tempdb..#OsztalyTanuloi') IS NOT NULL BEGIN
DROP TABLE #OsztalyTanuloi
END
CREATE TABLE #OsztalyTanuloi (
TanuloId int
,Belepes datetime
,Kilepes datetime
,CONSTRAINT PK_OsztalyTanuloi PRIMARY KEY (TanuloId)
)
INSERT INTO #OsztalyTanuloi (TanuloId)
SELECT DISTINCT C_TANULOID
FROM T_TANULOCSOPORT_OSSZES
WHERE C_OSZTALYCSOPORTID = @pOsztalyId
AND C_TANEVID = @pTanevId
AND TOROLT = 'F'
IF OBJECT_ID('tempdb..#Result') IS NULL BEGIN
SET @isResultTableDeclered = 1;
CREATE TABLE #Result (
TanuloId int
,TantargyId int
,Mulasztas int
,MegtartottOra int
,HatralevoOra int
,CONSTRAINT PK_Result PRIMARY KEY (TanuloId, TantargyId)
)
END
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)) / @pOraPerc) 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''
WHERE tcs.TOROLT = ''F''
' + IIF(@pTantargyId IS NULL, '', 'AND tn.C_TANTARGYID = @pTantargyId') + '
GROUP BY ot.TanuloId, tn.C_TANTARGYID
'
EXEC sys.sp_executesql @sql,
N'@pTantargyId int
,@pOraPerc int
,@pCsakMegtartott bit'
,@pTantargyId = @pTantargyId
,@pOraPerc = @oraPerc
,@pCsakMegtartott = @pCsakMegtartott
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)
,OraTipus nvarchar(200)
,Hianyzas char(1)
,Keses char(1)
,Ures char(1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar(255)
,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
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,OraTipus,Hianyzas,Keses,Ures,HelyettesitoTanarID,HelyettesitoTanarNev,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
IF @isResultTableDeclered = 1 BEGIN
SELECT
TanuloId
,TantargyId
,Mulasztas
,MegtartottOra
,HatralevoOra
FROM #Result
END
END
GO