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,262 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS sp_GetDokumentumTanuloOrarend
GO
CREATE PROCEDURE sp_GetDokumentumTanuloOrarend
@tanevId INT,
@tanuloId INT,
@aktivTanevId INT,
@isEgyebFoglalkozasok BIT,
@orarendErvenyessegiDatum DATE,
@feladatKategoriaId INT = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @UtolsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1395 AND C_TANEVID = @tanevId AND TOROLT = 'F')
,@ElsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1394 AND C_TANEVID = @tanevId AND TOROLT = 'F')
,@VizsgaltNap DATE
,@tanuloNev NVARCHAR(MAX) = (SELECT C_NYOMTATASINEV FROM T_FELHASZNALO_OSSZES WHERE ID = @tanuloId)
IF (@tanevId = @aktivTanevId AND @orarendErvenyessegiDatum <= @UtolsoNap)
BEGIN
IF (@orarendErvenyessegiDatum <= @ElsoNap)
BEGIN
SET @VizsgaltNap = (SELECT TOP 1 C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES WHERE C_HETSORSZAMA = 1 AND TOROLT = 'F' AND C_TANEVID = @tanevId)
END
ELSE
BEGIN
SET @VizsgaltNap = CONVERT(DATE, @orarendErvenyessegiDatum)
END
END
ELSE
BEGIN
SET @VizsgaltNap = @UtolsoNap
END
SELECT
C_ORASZAM OraSzam
,CONVERT(VARCHAR(5), C_KEZDETE, 108) Kezdete
,CONVERT(VARCHAR(5), C_VEGE, 108) Vege
INTO #CsengetesiRendAdatok
FROM T_CSENGETESIRENDORA_OSSZES CsengetesiRendOra
INNER JOIN T_CSENGETESIREND_OSSZES CsengetesiRend ON CsengetesiRend.Id = CsengetesiRendOra.C_CSENGETESIRENDID
WHERE
CsengetesiRendOra.C_TANEVID = @tanevId
AND CsengetesiRendOra.TOROLT = 'F'
AND CsengetesiRend.TOROLT = 'F'
AND CsengetesiRend.C_AKTIV = 'T'
DECLARE @MinCsengetesiRendOraKezdet NVARCHAR(10) = (SELECT MIN(Kezdete) FROM #CsengetesiRendAdatok)
DECLARE @MinCsengetesiRendOraszam INT = (SELECT MIN(OraSzam) FROM #CsengetesiRendAdatok)
SELECT
OrarendiOra.C_HETIREND HetirendId
,OrarendiOra.C_HETNAPJA HetnapjaId
,CsengetesiRendOra.C_ORASZAM OraSzam
,CONVERT(VARCHAR(5), OrarendiOra.C_ORAKEZDETE, 108) Kezdete
,CONVERT(VARCHAR(5), OrarendiOra.C_ORAVEGE, 108) Vege
,ISNULL(Tantargy.C_ROVIDNEV, Tantargy.C_NEV) TantargyNev
,Pedagogus.C_NYOMTATASINEV PedagogusNev
,Terem.C_NEV TeremNev
,ocs.C_NEV OsztalyCsoportNev
INTO #OrarendiOrak
FROM T_ORARENDIORA_OSSZES OrarendiOra
INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON
TanuloCsoport.C_TANULOID = @tanuloId
AND TanuloCsoport.C_OSZTALYCSOPORTID = OrarendiOra.C_OSZTALYCSOPORTID
AND TanuloCsoport.TOROLT = 'F'
AND @VizsgaltNap BETWEEN C_BELEPESDATUM AND ISNULL(C_KILEPESDATUM, @UtolsoNap)
INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = OrarendiOra.C_TANTARGYID
INNER JOIN T_FELHASZNALO_OSSZES Pedagogus ON Pedagogus.Id = OrarendiOra.C_TANARID
INNER JOIN T_TEREM_OSSZES Terem ON Terem.Id = OrarendiOra.C_TEREMID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = OrarendiOra.C_OSZTALYCSOPORTID AND (ocs.C_FELADATKATEGORIAID = @feladatKategoriaId OR @feladatKategoriaId IS NULL)
LEFT JOIN T_CSENGETESIRENDORA_OSSZES CsengetesiRendOra ON CsengetesiRendOra.Id = OrarendiOra.C_CSENGETESIRENDORAID
LEFT JOIN T_CSOPORT_OSSZES Csoport ON Csoport.Id = OrarendiOra.C_OSZTALYCSOPORTID
WHERE
OrarendiOra.Torolt = 'F'
AND @VizsgaltNap BETWEEN OrarendiOra.C_ORAERVENYESSEGKEZDETE AND OrarendiOra.C_ORAERVENYESSEGVEGE
AND (@isEgyebFoglalkozasok = 1 OR (Csoport.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId)) OR Csoport.C_TIPUSA IS NULL))
SELECT
OraSzam
,HetirendId
,HetnapjaId
,OsztalyCsoportNev
,PedagogusNev
,TantargyNev
,TeremNev
,Kezdete
,Vege
INTO #OrarendTEMP
FROM
(
SELECT
MAX(CsengetesiRendAdatok.OraSzam) OraSzam
,OrarendiOrak.HetirendId HetirendId
,OrarendiOrak.HetnapjaId HetnapjaId
,OrarendiOrak.OsztalyCsoportNev OsztalyCsoportNev
,OrarendiOrak.PedagogusNev PedagogusNev
,OrarendiOrak.TantargyNev TantargyNev
,OrarendiOrak.TeremNev TeremNev
,OrarendiOrak.Kezdete Kezdete
,OrarendiOrak.Vege Vege
FROM #CsengetesiRendAdatok CsengetesiRendAdatok
LEFT JOIN #OrarendiOrak OrarendiOrak ON OrarendiOrak.Kezdete >= CsengetesiRendAdatok.Kezdete
WHERE
OrarendiOrak.OraSzam IS NULL
GROUP BY
OrarendiOrak.HetirendId
,OrarendiOrak.HetnapjaId
,OrarendiOrak.OsztalyCsoportNev
,OrarendiOrak.PedagogusNev
,OrarendiOrak.TantargyNev
,OrarendiOrak.TeremNev
,OrarendiOrak.Kezdete
,OrarendiOrak.Vege
UNION
SELECT
MAX(CsengetesiRendAdatok.OraSzam) OraSzam
,OrarendiOrak.HetirendId HetirendId
,OrarendiOrak.HetnapjaId HetnapjaId
,OrarendiOrak.OsztalyCsoportNev OsztalyCsoportNev
,OrarendiOrak.PedagogusNev PedagogusNev
,OrarendiOrak.TantargyNev TantargyNev
,OrarendiOrak.TeremNev TeremNev
,OrarendiOrak.Kezdete Kezdete
,OrarendiOrak.Vege Vege
FROM #CsengetesiRendAdatok CsengetesiRendAdatok
LEFT JOIN #OrarendiOrak OrarendiOrak ON OrarendiOrak.OraSzam = CsengetesiRendAdatok.OraSzam
WHERE
OrarendiOrak.OraSzam IS NOT NULL
GROUP BY
OrarendiOrak.HetirendId
,OrarendiOrak.HetnapjaId
,OrarendiOrak.OsztalyCsoportNev
,OrarendiOrak.PedagogusNev
,OrarendiOrak.TantargyNev
,OrarendiOrak.TeremNev
,OrarendiOrak.Kezdete
,OrarendiOrak.Vege
)OrarendioraOraszammal
INSERT INTO #OrarendTEMP
SELECT
@MinCsengetesiRendOraszam
,OrarendiOrak.HetirendId HetirendId
,OrarendiOrak.HetnapjaId HetnapjaId
,OrarendiOrak.OsztalyCsoportNev OsztalyCsoportNev
,OrarendiOrak.PedagogusNev PedagogusNev
,OrarendiOrak.TantargyNev TantargyNev
,OrarendiOrak.TeremNev TeremNev
,OrarendiOrak.Kezdete Kezdete
,OrarendiOrak.Vege Vege
FROM #orarendiorak OrarendiOrak
WHERE
Kezdete < @MinCsengetesiRendOraKezdet
SELECT
Orarend.OraSzam
,HetirendId
,HetnapjaId
,OsztalyCsoportNev
,PedagogusNev
,TantargyNev
,TeremNev
,IIF(Orarend.Kezdete != CsengetesiRendAdatok.Kezdete OR Orarend.Vege != CsengetesiRendAdatok.Vege, Orarend.Kezdete + ' - ' + Orarend.Vege, '') KezdesVegeIdopont
INTO #Orarend
FROM #OrarendTEMP Orarend
INNER JOIN #CsengetesiRendAdatok CsengetesiRendAdatok on CsengetesiRendAdatok.Oraszam = Orarend.OraSzam
DECLARE @Hetirendek TABLE (Id INT)
DECLARE @HetirendCount INT = (SELECT COUNT(DISTINCT oo.C_HETIREND) FROM T_ORARENDIORA_OSSZES oo WHERE oo.TOROLT='F' AND oo.C_TANEVID=@tanevId)
IF (@HetirendCount=1)
BEGIN
INSERT INTO @Hetirendek
SELECT DISTINCT oo.c_hetirend FROM T_ORARENDIORA_OSSZES oo WHERE oo.TOROLT='F' AND oo.C_TANEVID = @tanevId
END
ELSE
BEGIN
INSERT INTO @Hetirendek
SELECT DISTINCT oo.C_HETIREND from T_ORARENDIORA_OSSZES oo WHERE oo.TOROLT='F' AND oo.C_TANEVID=@tanevId AND oo.C_HETIREND <> 1554
END
DECLARE @Orakezdetek TABLE (Ora INT)
INSERT INTO @orakezdetek
SELECT DISTINCT OraSzam from #CsengetesiRendAdatok
DECLARE @OsszesOra TABLE (Hetirend INT, Nap INT, Oraszam nvarchar(20))
INSERT INTO @OsszesOra
SELECT DISTINCT oo.Id, Nap , OraSzam FROM @Hetirendek oo
CROSS JOIN (SELECT Ora FROM @Orakezdetek) OraSzam (OraSzam)
CROSS JOIN (VALUES (1408),(1409),(1410),(1411),(1412), (1413)) Nap (Nap)
DECLARE @TenylegesOra TABLE (Hetirend INT, Nap INT, OraSzam NVARCHAR(20), Foglalkozas NVARCHAR(MAX))
DECLARE @Orarend TABLE (TanuloId INT, Ora int, Hetirend INT, Nap INT, Foglalkozas NVARCHAR(MAX))
DECLARE kur CURSOR FOR
SELECT Id FROM @Hetirendek
DECLARE @HetirendId int
OPEN kur
FETCH NEXT FROM kur INTO @HetirendId
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @TenylegesOra
SELECT DISTINCT
@HetirendId
,veg.HetnapjaId
,veg.Oraszam
,STUFF((SELECT DISTINCT
CAST('<b>' + bveg.TantargyNev + '</b>' + CHAR(13) + CHAR(10)
+ IIF(LEN(KezdesVegeIdopont) > 0, ' (' + KezdesVegeIdopont +')' + CHAR(13) + CHAR(10), '')
+ bveg.OsztalyCsoportNev + CHAR(13) + CHAR(10)
+ bveg.PedagogusNev + CHAR(13) + CHAR(10)
+ bveg.TeremNev + CHAR(13) + CHAR(10) AS VARCHAR(max))
FROM #Orarend bveg
WHERE bveg.HetnapjaId = veg.HetnapjaId
AND bveg.Oraszam = veg.Oraszam
AND (bveg.HetirendId = @HetirendId OR bveg.HetirendId = 1554)
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'') Foglalkozasok
FROM #Orarend veg
FETCH NEXT FROM kur INTO @HetirendId
END
CLOSE kur
DEALLOCATE kur
/*Végleges órarend*/
INSERT INTO @Orarend
SELECT @tanuloId
, OsszesOra.Oraszam
, OsszesOra.Hetirend
, OsszesOra.Nap
, TenylegesOra.Foglalkozas
FROM @OsszesOra OsszesOra
LEFT JOIN @TenylegesOra TenylegesOra ON OsszesOra.Hetirend = TenylegesOra.Hetirend AND OsszesOra.Nap = TenylegesOra.Nap AND OsszesOra.Oraszam = TenylegesOra.Oraszam
ORDER BY OsszesOra.Hetirend, OsszesOra.Nap, OsszesOra.Oraszam
SELECT
pv.*
, dic.C_NAME HETIREND_DNAME
,@tanuloNev TanuloNev
FROM @Orarend
PIVOT (MAX(Foglalkozas) FOR Nap IN ([1408],[1409],[1410],[1411],[1412],[1413]))pv
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dic ON dic.id=Hetirend AND dic.C_TANEVID = @tanevId
INNER JOIN @Orakezdetek ok ON ok.Ora = pv.Ora
ORDER BY Ora
END
DROP TABLE #CsengetesiRendAdatok
DROP TABLE #Orarend
DROP TABLE #OrarendiOrak
GO

View file

@ -0,0 +1,63 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS sp_GetDokumentumTanuloOrarendOsztalyonkent
GO
CREATE PROCEDURE sp_GetDokumentumTanuloOrarendOsztalyonkent
@tanevId INT,
@osztalyId INT,
@aktivTanevId INT,
@isEgyebFoglalkozasok BIT,
@pTanuloId INT = NULL,
@orarendErvenyessegiDatum DATE,
@feladatKategoriaId INT = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @tabla TABLE (TanuloId INT, Ora INT, HetirendId INT, Hetfo NVARCHAR(MAX), Kedd NVARCHAR(MAX), Szerda NVARCHAR(MAX), Csutortok NVARCHAR(MAX), Pentek NVARCHAR(MAX), Szombat NVARCHAR(MAX), Hetirend NVARCHAR(MAX), TanuloNev NVARCHAR(MAX))
SELECT
TanuloId
,C_NYOMTATASINEV TanuloNev
INTO #Tanulok
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') Tanulok
INNER JOIN T_FELHASZNALO_OSSZES Felhasznalo ON Felhasznalo.Id = Tanulok.TanuloId
WHERE (@pTanuloId IS NULL OR @pTanuloId = TanuloId)
DECLARE kurzor CURSOR FOR
SELECT TanuloId FROM #Tanulok
DECLARE @tanuloId INT
OPEN kurzor
FETCH NEXT FROM kurzor INTO @tanuloId
WHILE @@FETCH_STATUS = 0 BEGIN
INSERT INTO @tabla
EXEC sp_GetDokumentumTanuloOrarend @tanevID, @tanuloId, @aktivTanevId, @isEgyebFoglalkozasok, @orarendErvenyessegiDatum, @feladatKategoriaId
FETCH NEXT FROM kurzor INTO @tanuloId
END
CLOSE kurzor
DEALLOCATE kurzor
SELECT
TanuloId
,TanuloNev
,Hetirend
FROM #Tanulok Tanulok
CROSS JOIN (SELECT DISTINCT Hetirend FROM @tabla) Hetirend (Hetirend)
ORDER BY Hetirend
SELECT
OsztalyokOrarendje.*
FROM @tabla OsztalyokOrarendje
ORDER BY Ora
END
GO

View file

@ -0,0 +1,196 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS sp_GetPedagogusAltalAdottErtekelesek
GO
CREATE PROCEDURE sp_GetPedagogusAltalAdottErtekelesek
@pTanarId INT,
@pEvkozi INT,
@pFelevi INT,
@pEvvegi INT,
@pTanevId INT,
@pFelevVegeNaptipusId INT,
@pErtekelesmodSuly BIT = 0,
@pIntezmenyId INT,
@pFeladatKategoriaId INT = NULL
AS
BEGIN
DECLARE @osztalyId INT = 0;
DECLARE @tantargyId INT = 0;
DECLARE @rowId INT = 0;
DECLARE @maxCharNumErtekelesSzoveg INT = 20;
SET NOCOUNT ON;
DECLARE @felevVege DATE = (
SELECT COALESCE(
(SELECT C_DATUM FROM T_TANEVRENDJE WHERE C_TANEVID = @pTanevId AND C_NAPTIPUSA = @pFelevVegeNaptipusId),
GETDATE()
)
);
DECLARE @UtolsoNapTanevRendje datetime = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1395 AND C_TANEVID = @pTanevId AND TOROLT = 'F')
DECLARE @UtolsoNapTanev datetime = (SELECT TOP 1 C_UTOLSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @pTanevId AND TOROLT = 'F')
DECLARE @isVegzos char
DECLARE @VegzosUtolsoNap datetime
DECLARE @UtolsoNap datetime
DECLARE @VizsgaltNap datetime
SELECT T_TANARIATLAGSULY.C_ERTEKELESMODID AS ID, T_DICTIONARYITEMBASE.C_NAME, T_TANARIATLAGSULY.C_ERTEKELESMODID, C_SULY, CAST(C_SULY AS NVARCHAR) + '%' AS C_SULYSZAZALEK, ' (' + NCHAR(97 + ROW_NUMBER() OVER(ORDER BY T_DICTIONARYITEMBASE.C_ORDER ASC) - 1) + ')' AS Row#
INTO #tempTanariAtlagsuly
FROM T_TANARIATLAGSULY
INNER JOIN T_ERTEKELESMOD ON T_ERTEKELESMOD.ID = T_TANARIATLAGSULY.C_ERTEKELESMODID
LEFT JOIN T_DICTIONARYITEMBASE ON T_DICTIONARYITEMBASE.ID = T_ERTEKELESMOD.ID
WHERE T_TANARIATLAGSULY.TOROLT = 'F' AND T_TANARIATLAGSULY.C_TANEVID = @pTanevId AND T_DICTIONARYITEMBASE.TOROLT = 'F' AND T_DICTIONARYITEMBASE.C_TANEVID = @pTanevId
ORDER BY T_DICTIONARYITEMBASE.C_ORDER;
SELECT DISTINCT ROW_NUMBER ( ) OVER (ORDER BY TARGYKATEGSORREND, EVFOLYAMSORREND, OSZTALYCSOPORTNEV, TARGYNEV) AS SORSZAM, TANTARGYID, OSZTALYID, CAST(ROW_NUMBER ( ) OVER (ORDER BY TARGYKATEGSORREND, EVFOLYAMSORREND, OSZTALYCSOPORTNEV, TARGYNEV) AS NVARCHAR(10)) + '. ' + NEV AS NEV
INTO #tempFoglalkozasok
FROM (
SELECT DISTINCT T_TANTARGY_OSSZES.ID AS TANTARGYID, T_OSZTALYCSOPORT_OSSZES.ID AS OSZTALYID,
TARGYKATEG.C_ORDER AS TARGYKATEGSORREND, EVFOLYAM.C_ORDER AS EVFOLYAMSORREND,
T_OSZTALYCSOPORT_OSSZES.C_NEV AS OSZTALYCSOPORTNEV, T_TANTARGY_OSSZES.C_NEV AS TARGYNEV, T_OSZTALYCSOPORT_OSSZES.C_NEV + '-' + T_TANTARGY_OSSZES.C_NEV AS NEV
FROM T_FOGLALKOZAS_OSSZES
INNER JOIN T_OSZTALYCSOPORT_OSSZES ON T_OSZTALYCSOPORT_OSSZES.ID = T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID AND (T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL)
INNER JOIN T_TANTARGY_OSSZES ON T_TANTARGY_OSSZES.ID = T_FOGLALKOZAS_OSSZES.C_TANTARGYID
LEFT JOIN T_DICTIONARYITEMBASE AS TARGYKATEG ON TARGYKATEG.ID = T_TANTARGY_OSSZES.C_TARGYKATEGORIA AND TARGYKATEG.C_TANEVID = T_TANTARGY_OSSZES.C_TANEVID
LEFT JOIN T_DICTIONARYITEMBASE AS EVFOLYAM ON EVFOLYAM.ID = T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA AND EVFOLYAM.C_TANEVID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID
WHERE T_FOGLALKOZAS_OSSZES.TOROLT = 'F' AND T_TANTARGY_OSSZES.TOROLT = 'F' AND T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F' AND
T_FOGLALKOZAS_OSSZES.C_TANARID = @pTanarId AND T_FOGLALKOZAS_OSSZES.C_TANEVID = @pTanevId
UNION
SELECT DISTINCT T_TANTARGY_OSSZES.ID AS TANTARGYID, T_OSZTALYCSOPORT_OSSZES.ID AS OSZTALYID,
TARGYKATEG.C_ORDER AS TARGYKATEGSORREND, EVFOLYAM.C_ORDER AS EVFOLYAMSORREND,
T_OSZTALYCSOPORT_OSSZES.C_NEV AS OSZTALYCSOPORTNEV, T_TANTARGY_OSSZES.C_NEV AS TARGYNEV, T_OSZTALYCSOPORT_OSSZES.C_NEV + '-' + T_TANTARGY_OSSZES.C_NEV AS NEV
FROM T_TANULOERTEKELES_OSSZES
INNER JOIN T_OSZTALYCSOPORT_OSSZES ON T_OSZTALYCSOPORT_OSSZES.ID = T_TANULOERTEKELES_OSSZES.C_OSZTALYCSOPORTID AND (T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL)
INNER JOIN T_TANTARGY_OSSZES ON T_TANTARGY_OSSZES.ID = T_TANULOERTEKELES_OSSZES.C_TANTARGYID
LEFT JOIN T_DICTIONARYITEMBASE AS TARGYKATEG ON TARGYKATEG.ID = T_TANTARGY_OSSZES.C_TARGYKATEGORIA AND TARGYKATEG.C_TANEVID = T_TANTARGY_OSSZES.C_TANEVID
LEFT JOIN T_DICTIONARYITEMBASE AS EVFOLYAM ON EVFOLYAM.ID = T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA AND EVFOLYAM.C_TANEVID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID
WHERE T_TANULOERTEKELES_OSSZES.TOROLT = 'F' AND T_TANTARGY_OSSZES.TOROLT = 'F' AND T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F' AND
T_TANULOERTEKELES_OSSZES.C_ERTEKELOID = @pTanarId AND T_TANULOERTEKELES_OSSZES.C_TANEVID = @pTanevId
) AS FOGLALKOZASOK
ORDER BY SORSZAM;
DECLARE @tempErtekeles TABLE (ID INT, TANULOID INT, NEV NVARCHAR(255), C_BELEPESDATUM NVARCHAR(15), C_KILEPESDATUM NVARCHAR(15), OSZTID INT, ERTEKELESDATUMA NVARCHAR(255), ERTEKELESTIPUSA INT, ERTEKELESMODJA INT, ERTEKELES NVARCHAR(MAX), OSZTALYZAT INT, HONAP INT);
SELECT * FROM #tempFoglalkozasok
ORDER BY SORSZAM;
WHILE (1 = 1)
BEGIN
DELETE FROM @tempErtekeles;
SELECT TOP 1 @rowId = SORSZAM, @tantargyId = TANTARGYID, @osztalyId = OSZTALYID
FROM #tempFoglalkozasok
WHERE SORSZAM > @rowId
ORDER BY SORSZAM;
IF @@ROWCOUNT = 0
BEGIN
BREAK;
END
SET @isVegzos = (SELECT TOP 1 C_VEGZOSEVFOLYAM FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyId)
SET @VegzosUtolsoNap = (SELECT dbo.fnGetOsztalyVegzosTanitasiNap(@osztalyId, @pIntezmenyId, @pTanevId))
SET @UtolsoNap = IIF(@isVegzos = 'T', COALESCE(@VegzosUtolsoNap, @UtolsoNapTanevRendje, @UtolsoNapTanev), ISNULL(@UtolsoNapTanevRendje, @UtolsoNapTanev))
SET @VizsgaltNap = (SELECT IIF(@UtolsoNap > GETDATE(), GETDATE(), @UtolsoNap))
INSERT INTO @tempErtekeles
SELECT *
FROM (
SELECT DISTINCT T_TANULOERTEKELES_OSSZES.ID, T_TANULOCSOPORT_OSSZES.C_TANULOID AS TANULOID, T_FELHASZNALO_OSSZES.C_NYOMTATASINEV AS NEV, COALESCE(FORMAT(T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM, 'yyyy. MM. dd'), '') AS C_BELEPESDATUM, COALESCE(FORMAT(T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM, 'yyyy. MM. dd'), '') AS C_KILEPESDATUM,
T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID AS OSZTID,
T_TANULOERTEKELES_OSSZES.C_DATUM AS ERTEKELESDATUMA, T_TANULOERTEKELES_OSSZES.C_TIPUSID AS ERTEKELESTIPUSA, T_TANULOERTEKELES_OSSZES.C_ERTEKELESMODID AS ERTEKELESMODJA,
(
(CASE WHEN C_TIPUSID NOT IN (@pEvkozi, @pFelevi, @pEvvegi) THEN '{' ELSE '' END) +
COALESCE(CONVERT(NVARCHAR, TDIB_JEGY.C_VALUE), (CASE WHEN C_ERTEKELESSZOVEG IS NOT NULL THEN '[' + CASE WHEN LEN(C_ERTEKELESSZOVEG) > @maxCharNumErtekelesSzoveg THEN STUFF(C_ERTEKELESSZOVEG, @maxCharNumErtekelesSzoveg, 1000000, '...') ELSE C_ERTEKELESSZOVEG END + ']' ELSE NULL END), CONVERT(NVARCHAR, C_ERTEKELESSZAZALEK) + '%') +
(CASE WHEN C_TIPUSID NOT IN (@pEvkozi, @pFelevi, @pEvvegi) THEN '}' ELSE '' END) +
(CASE WHEN @pErtekelesmodSuly = 1 AND C_TIPUSID IN (@pEvkozi) AND ISNULL(TANARIATLAGSULY.C_SULY, 100) <> 100 THEN TANARIATLAGSULY.Row# ELSE '' END)
) AS ERTEKELES,
TDIB_JEGY.C_VALUE AS OSZTALYZAT, (CASE WHEN MONTH(C_DATUM) >= 9 THEN 100 WHEN MONTH(C_DATUM) > 1 AND MONTH(C_DATUM) < 9 THEN 200 ELSE (CASE WHEN C_DATUM > @felevVege THEN 200 ELSE 100 END) END) + MONTH(C_DATUM) AS HONAP
FROM T_TANULOCSOPORT_OSSZES
INNER JOIN T_FELHASZNALO_OSSZES ON T_FELHASZNALO_OSSZES.ID = T_TANULOCSOPORT_OSSZES.C_TANULOID
LEFT JOIN T_TANULOERTEKELES_OSSZES ON T_TANULOERTEKELES_OSSZES.C_TANTARGYID = @tantargyId AND T_TANULOERTEKELES_OSSZES.C_TANULOID = T_TANULOCSOPORT_OSSZES.C_TANULOID AND T_TANULOERTEKELES_OSSZES.TOROLT = 'F' AND T_TANULOERTEKELES_OSSZES.C_TANEVID = @pTanevId AND T_TANULOERTEKELES_OSSZES.C_ERTEKELOID = @pTanarId
--NOTE: Az évfolyamváltot tanulók szűréséhez kell! -- INNEN
INNER JOIN
T_TANULOCSOPORT_OSSZES TanuloCsoport ON
TanuloCsoport.C_TANULOID = T_TANULOERTEKELES_OSSZES.C_TANULOID
AND TanuloCsoport.TOROLT = 'F'
AND TanuloCsoport.C_BELEPESDATUM <= @VizsgaltNap
AND (TanuloCsoport.C_KILEPESDATUM IS NULL OR
TanuloCsoport.C_KILEPESDATUM > @VizsgaltNap)
INNER JOIN
T_OSZTALY_OSSZES Osztaly ON
Osztaly.ID = TanuloCsoport.C_OSZTALYCSOPORTID
AND Osztaly.TOROLT = 'F'
INNER JOIN
T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON
OsztalyCsoport.ID = Osztaly.ID
AND OsztalyCsoport.TOROLT = 'F'
AND (OsztalyCsoport.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL)
LEFT JOIN
T_OSZTALYCSOPORT_OSSZES OsztalyEvfolyamSzures ON
OsztalyEvfolyamSzures.ID = T_TANULOERTEKELES_OSSZES.C_ROGZITESKORITANULOOSZTALYID
AND OsztalyEvfolyamSzures.TOROLT = 'F'
AND OsztalyEvfolyamSzures.C_EVFOLYAMTIPUSA = OsztalyCsoport.C_EVFOLYAMTIPUSA
AND (OsztalyEvfolyamSzures.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL)
--NOTE: Az évfolyamváltot tanulók szűréséhez kell! EDDIG
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS TDIB_JEGY ON TDIB_JEGY.ID = T_TANULOERTEKELES_OSSZES.C_ERTEKELESOSZTALYZATID AND TDIB_JEGY.TOROLT = 'F' AND TDIB_JEGY.C_TANEVID = @pTanevId
LEFT JOIN #tempTanariAtlagsuly AS TANARIATLAGSULY on TANARIATLAGSULY.C_ERTEKELESMODID = T_TANULOERTEKELES_OSSZES.C_ERTEKELESMODID
WHERE T_TANULOCSOPORT_OSSZES.C_TANEVID = @pTanevId AND T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = @osztalyId AND T_TANULOCSOPORT_OSSZES.TOROLT = 'F'
--NOTE: AMI-s értékelések miatt, ott nincs mentve C_ROGZITESKORITANULOOSZTALYID
AND ((T_TANULOERTEKELES_OSSZES.C_ROGZITESKORITANULOOSZTALYID IS NULL) OR (OsztalyEvfolyamSzures.ID IS NOT NULL))
) AS tempErtekeles;
SELECT CAST(ROW_NUMBER ( ) OVER (ORDER BY NEV) AS NVARCHAR(10)) + '.' AS "#", RESULT.*
FROM (
SELECT PIVOTERTEKEL.TANULOID AS ID, NEV AS "Név", BESOROLAS AS "Csoport tagja",
[109] AS Szeptember, [110] AS Október, [111] AS November, [112] AS December, [101] AS "Január / I.", FELEV.JEGY AS [I. félév$@8], [201] AS "Január / II.", [202] AS Február, [203] AS Március, [204] AS Április, [205] AS Május, [206] AS Június,
EVVEGE.JEGY AS [II. félév$@9], ATLAG.SULYOZOTTATLAG AS "Átlag"
FROM (
SELECT DISTINCT T1.NEV, T1.C_BELEPESDATUM + ' - ' + T1.C_KILEPESDATUM AS BESOROLAS, STUFF (
(SELECT ', ' + ISNULL(T2.ERTEKELES, '')
FROM @tempErtekeles AS T2
WHERE T1.TANULOID = T2.TANULOID AND T1.HONAP = T2.HONAP AND T1.ERTEKELESTIPUSA NOT IN (@pFelevi, @pEvvegi) AND T2.ERTEKELESTIPUSA NOT IN (@pFelevi, @pEvvegi) -- = @pEvkozi--AND T1.ERTEKELESTIPUSA = @pEvkozi
ORDER BY ERTEKELESDATUMA
FOR XML PATH ('')
), 1, 2, '') AS ERTEKELESEK, T1.HONAP, T1.TANULOID
FROM @tempErtekeles AS T1
) AS ERDEMJEGYEK
PIVOT ( MAX(ERTEKELESEK) FOR HONAP IN ([109], [110], [111], [112], [101], [201], [202], [203], [204], [205], [206])) AS PIVOTERTEKEL
LEFT JOIN (
SELECT TANULOID, AVG(OSZTALYZAT) AS JEGY
FROM @tempErtekeles
WHERE ERTEKELESTIPUSA = @pFelevi
GROUP BY TANULOID
) AS FELEV ON PIVOTERTEKEL.TANULOID = FELEV.TANULOID
LEFT JOIN (
SELECT TANULOID, AVG(OSZTALYZAT) AS JEGY
FROM @tempErtekeles
WHERE ERTEKELESTIPUSA = @pEvvegi
GROUP BY TANULOID
) AS EVVEGE ON PIVOTERTEKEL.TANULOID = EVVEGE.TANULOID
LEFT JOIN (
SELECT TANULOID, ROUND(AVG(CAST(OSZTALYZAT AS FLOAT)), 2) AS ATLAG, ROUND(SUM(CAST(OSZTALYZAT AS FLOAT) * CAST(ISNULL(T_TANARIATLAGSULY.C_SULY, 100) AS FLOAT) / 100) / SUM(CAST(ISNULL(T_TANARIATLAGSULY.C_SULY, 100) AS FLOAT) / 100), 2) AS SULYOZOTTATLAG
FROM @tempErtekeles AS tempErtekeles
LEFT JOIN T_TANARIATLAGSULY on T_TANARIATLAGSULY.C_ERTEKELESMODID = tempErtekeles.ERTEKELESMODJA AND T_TANARIATLAGSULY.TOROLT = 'F' AND T_TANARIATLAGSULY.C_TANEVID = @pTanevId
WHERE ERTEKELESTIPUSA = @pEvkozi AND OSZTALYZAT IS NOT NULL
GROUP BY TANULOID
) AS ATLAG ON PIVOTERTEKEL.TANULOID = ATLAG.TANULOID
) AS RESULT
ORDER BY NEV;
END
SELECT ID, Row# AS "Jelmagyarázat", C_NAME AS "Értékelésmód", C_SULYSZAZALEK AS "Értékelés súlyozása"
FROM #tempTanariAtlagsuly
ORDER BY Row#;
IF OBJECT_ID('tempdb..#tempErtekeles') IS NOT NULL DROP TABLE #tempErtekeles
IF OBJECT_ID('tempdb..#tempFoglalkozasok') IS NOT NULL DROP TABLE #tempFoglalkozasok
IF OBJECT_ID('tempdb..#tempTanariAtlagsuly') IS NOT NULL DROP TABLE #tempTanariAtlagsuly
-- Iktatás adatok
SELECT f.ID AS PedagogusId
,f.C_OKTATASIAZONOSITO AS PedagogusOktAzon
,mua.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
FROM T_FELHASZNALO_OSSZES AS f
LEFT JOIN T_MUNKAUGYIADATOK_OSSZES AS mua ON mua.C_ALKALMAZOTTID = f.ID
WHERE f.ID = @pTanarId
AND f.C_TANEVID = @pTanevId
END
GO

View file

@ -0,0 +1,248 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS uspGetNyomtatvanyokOrarendOsszes
GO
CREATE PROCEDURE uspGetNyomtatvanyokOrarendOsszes
@intezmenyId int
,@tanevID int
,@pIdoszakKezdete datetime
,@pIdoszakVege datetime
,@pTanarId int = NULL
,@pIsHelyettesitesNelkul bit = 0
,@pOsztalyCsoportId int = NULL
,@pTanuloId int = NULL
,@pTantargyId int = NULL
,@pTeremId int = NULL
,@pCsakOrarendiOrak bit = 0
,@pIsNapirend bit /*0 csak orarendi ora, 1 csak napirend, NULL mindkett?*/
,@pKapcsolodoCsoportokMegjelenitese bit = NULL
,@pOsztalyBontasokMegjelenitese bit = NULL
,@pFeladatKategoriaId INT = NULL
AS
BEGIN
SET NOCOUNT ON;
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
);
INSERT INTO #OrarendTable
EXEC sp_GetOrarend
@pIntezmenyId = @intezmenyId
,@pTanevId = @tanevID
,@pIdoszakKezdete = @pIdoszakKezdete
,@pIdoszakVege = @pIdoszakVege
,@pTanarId = @pTanarId
,@pIsHelyettesitesNelkul = @pIsHelyettesitesNelkul
,@pOsztalyCsoportId = @pOsztalyCsoportId
,@pTanuloId = @pTanuloId
,@pTantargyId = @pTantargyId
,@pTeremId = @pTeremId
,@pCsakOrarendiOrak = @pCsakOrarendiOrak
,@pIsNapirend = @pIsNapirend
-- a lekért órarendben a minden héten órákat átállítjuk a hétsotszámnak megfelelõ hetirendre
UPDATE o
SET o.Hetirend = ISNULL(hr.Hetirend, o.Hetirend)
FROM #OrarendTable o
LEFT JOIN
(
SELECT DISTINCT Hetirend, HetSorszam FROM #OrarendTable WHERE Hetirend <> 1554
) hr ON hr.HetSorszam = o.HetSorszam
WHERE
o.Hetirend = 1554
IF @pFeladatKategoriaId IS NOT NULL
BEGIN
DELETE o FROM #OrarendTable o
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.OsztCsopId
WHERE ocs.C_FELADATKATEGORIAID <> @pFeladatKategoriaId
END
-- kapcsolódó csoportok óráinak törlése
IF @pKapcsolodoCsoportokMegjelenitese IS NOT NULL AND @pKapcsolodoCsoportokMegjelenitese = 0
BEGIN
DELETE o FROM #OrarendTable o
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = o.OsztCsopId AND cs.C_OSZTALYBONTASID IS NULL
WHERE OsztCsopId != @pOsztalyCsoportId
END
-- osztálybontott csoportok óráinak törlése
IF @pOsztalyBontasokMegjelenitese IS NOT NULL AND @pOsztalyBontasokMegjelenitese = 0
BEGIN
DELETE o FROM #OrarendTable o
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = o.OsztCsopId AND cs.C_OSZTALYBONTASID IS NOT NULL
WHERE OsztCsopId != @pOsztalyCsoportId
END
declare @intezmenyNev NVARCHAR(510) = (SELECT C_NEV FROM T_INTEZMENYADATOK_OSSZES WHERE C_INTEZMENYID = @intezmenyId AND C_TANEVID = @tanevID and TOROLT = 'F')
CREATE TABLE #Oraszamok (Oraszam int, PRIMARY KEY(Oraszam))
INSERT INTO #Oraszamok
SELECT DISTINCT
C_ORASZAM
FROM T_ORARENDIORA_OSSZES
WHERE C_INTEZMENYID = @intezmenyId
AND C_TANEVID = @tanevID
AND C_ORASZAM IS NOT NULL
SELECT DISTINCT
COALESCE(@pTanarId, @pTeremId, @pOsztalyCsoportId) as Id
,STUFF((SELECT DISTINCT
', ' + IIF(@pTanarId IS NOT NULL, bo.TanarNev, IIF(@pTeremId IS NOT NULL, bo.TeremNev, IIF(@pOsztalyCsoportId IS NOT NULL, bo.OsztalyNev,'')))
FROM #OrarendTable bo
WHERE bo.Hetirend = o.Hetirend
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,'') as Nev
,@intezmenyNev as IntezmenyNev
,STUFF((
SELECT DISTINCT ', ' + dic.C_NAME
FROM #OrarendTable qw
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dic ON dic.C_TANEVID = @tanevID and dic.TOROLT = 'F' and dic.ID = qw.Hetirend
WHERE o.Hetirend = qw.Hetirend
FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)'), 1, 2, '') AS Hetirend
FROM #OrarendTable o
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dic on o.Hetirend = dic.ID and dic.C_TANEVID = @tanevID
SELECT
COALESCE(@pTanarId, @pTeremId, @pOsztalyCsoportId) as Id
,IIF(@pIsNapirend = 0, CAST(t.Oraszam as NVARCHAR(3)), ISNULL(t.OraKezdete + ' - ' + t.OraVege, '')) as Ora
,t.Hetirend as HetirendId
,[1408] AS Hetfo
,[1409] AS Kedd
,[1410] AS Szerda
,[1411] AS Csutortok
,[1412] AS Pentek
,[1413] AS Szombat
,t.HetirendNev as HetirendNev
FROM ( SELECT *
FROM
( SELECT
STUFF(( SELECT
CONVERT(NVARCHAR(MAX),bo.TargyNev + NCHAR(13) + NCHAR(10) + bo.OsztalyNev + NCHAR(13) + NCHAR(10) + bo.TeremNev + NCHAR(10) + NCHAR(10))
FROM #OrarendTable bo
WHERE bo.OraKezdete = o.OraKezdete
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'') as TargyNev
,HetNapja
,Oraszam
,CONVERT(CHAR(5), OraKezdete, 108) OraKezdete
,CONVERT(CHAR(5), OraVege, 108) OraVege
,dic.C_NAME AS HetirendNev
,Hetirend AS Hetirend
FROM #OrarendTable o
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dic ON dic.C_TANEVID = @tanevID and dic.TOROLT = 'F' and dic.ID = o.Hetirend
) as ot
PIVOT (MAX(ot.TargyNev) FOR ot.HetNapja in([1408],[1409],[1410],[1411],[1412],[1413])) as pv
) as t
ORDER BY HetirendNev,
CASE WHEN @pIsNapirend = 0 then t.Oraszam else CAST(t.OraKezdete AS DATETIME) END
-- Iktatási adatok
IF @pOsztalyCsoportId IS NOT NULL BEGIN
-- Osztály adatok
SELECT
@pOsztalyCsoportId OsztalyId
,o.C_OSZTALYFONOKID OsztalyfonokId
,ocs.C_EVFOLYAMTIPUSA EvfolyamTipusa
,ocs.C_FELADATELLATASIHELYID FeladatEllatasiHelyId
,o.C_TANTERVID TantervId
,o.C_KEPZESIFORMA KepzesiForma
,o.C_AGAZAT Agazat
,o.C_SZAKMACSOPORT SzakmaCsoport
,o.C_SZAKKEPESITES Szakkepesites
,o.C_RESZSZAKKEPESITES Reszszakkepesites
,ocs.C_KERESZTFELEVES OJCSJKeresztfeleves
,ocs.C_VEGZOSEVFOLYAM CSJVegzosEvfolyamu
,o.C_TECHNIKAIOSZTALY OJTechnikaiOsztaly
,o.C_NEMZETISEGI OJNemzetisegi
,o.C_KETTANNYELVU OJKettannyelvu
,o.C_NYELVIELOKESZITO OJNyelviElokeszito
,o.C_LOGOPEDIAI OJLogopediai
,o.C_SPORT OJSportOsztaly
,o.C_AJPROGRAM OJAranyJanosProgram
,o.C_GYOGYPEDAGOGIAI OJGyogypedagogiai
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID AND o.torolt='F'
WHERE ocs.ID = @pOsztalyCsoportId
-- Osztály csoportok
SELECT DISTINCT
ot.OsztCsopId AS CsoportId
FROM #OrarendTable ot
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = ot.OsztCsopId
-- Alkalmazottak
SELECT DISTINCT
ot.TanarID AS TanarId
,f.C_OKTATASIAZONOSITO AS TanarOktAzon
FROM #OrarendTable ot
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = ot.TanarID
-- Tanulók
SELECT DISTINCT
f.ID AS TanuloId
,f.C_NYOMTATASINEV AS TanuloNeve
,f.C_OKTATASIAZONOSITO AS TanuloOktAzon
FROM #OrarendTable ot
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ot.OsztCsopId and tcs.C_TANEVID = @tanevID
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID
END
ELSE IF @pTanarId IS NOT NULL BEGIN
-- Alkalmazottak
SELECT DISTINCT
ot.TanarID AS TanarId
,f.C_OKTATASIAZONOSITO AS TanarOktAzon
,mua.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
FROM #OrarendTable ot
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = ot.TanarID
INNER JOIN T_MUNKAUGYIADATOK_OSSZES mua ON mua.C_ALKALMAZOTTID = ot.TanarID
END
ELSE IF @pTeremId IS NOT NULL BEGIN
SELECT
t.ID,
t.C_MUKODESIHELYID
FROM T_TEREM_OSSZES AS t
WHERE ID = @pTeremId
END
END
GO