257 lines
No EOL
9.6 KiB
Transact-SQL
257 lines
No EOL
9.6 KiB
Transact-SQL
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_KEZDONAP FROM T_TANEV_OSSZES WHERE ID = @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))
|
||
AND tantargy.C_ISOSZTALYORARENDBENEMLATSZIK = 'F'
|
||
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<EFBFBD>gleges <20>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 |