312 lines
10 KiB
Transact-SQL
312 lines
10 KiB
Transact-SQL
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;
|
|
|
|
DECLARE
|
|
@intezmenyNev nvarchar(510)
|
|
,@hetirend int
|
|
|
|
CREATE TABLE #OrarendiOrak (
|
|
Datum datetime
|
|
,Hetirend int
|
|
,HetNapja int
|
|
,HetSorszam int
|
|
,OraKezdete datetime
|
|
,OraVege datetime
|
|
,Oraszam int
|
|
,TargyNev nvarchar (300)
|
|
,OsztalyNev nvarchar (255)
|
|
,TanarNev nvarchar (255)
|
|
,TeremNev nvarchar (255)
|
|
,TanarID int
|
|
,OsztCsopId int
|
|
,IsEgyediNap char(1)
|
|
)
|
|
|
|
CREATE TABLE #Oraszamok (
|
|
Oraszam int,
|
|
OraKezdete char(5),
|
|
OraVege char(5),
|
|
PRIMARY KEY(Oraszam)
|
|
)
|
|
|
|
SELECT TOP 1
|
|
@intezmenyNev = i.C_NEV
|
|
FROM T_INTEZMENYADATOK_OSSZES i
|
|
WHERE i.C_INTEZMENYID = @intezmenyId
|
|
AND i.C_TANEVID = @tanevID
|
|
AND i.TOROLT = 'F'
|
|
|
|
INSERT INTO #OrarendiOrak (
|
|
Datum
|
|
,Hetirend
|
|
,HetNapja
|
|
,HetSorszam
|
|
,OraKezdete
|
|
,OraVege
|
|
,Oraszam
|
|
,TargyNev
|
|
,OsztalyNev
|
|
,TanarNev
|
|
,TeremNev
|
|
,TanarID
|
|
,OsztCsopId
|
|
,IsEgyediNap
|
|
)
|
|
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
|
|
,@pFeladatKategoriaId = @pFeladatKategoriaId
|
|
,@pOszlopok = N'Datum,Hetirend,HetNapja,HetSorszam,OraKezdete,OraVege,Oraszam,TargyNev,OsztalyNev,TanarNev,TeremNev,TanarID,OsztCsopId,IsEgyediNap'
|
|
|
|
-- a lekért órarendben a minden héten órákat átállítjuk a hétsorszámnak megfelelő hetirendre
|
|
UPDATE orak
|
|
SET orak.Hetirend = ISNULL(hr.Hetirend, orak.Hetirend)
|
|
FROM #OrarendiOrak orak
|
|
LEFT JOIN (
|
|
SELECT DISTINCT
|
|
o.Hetirend
|
|
,o.HetSorszam
|
|
FROM #OrarendiOrak o
|
|
WHERE Hetirend <> 1554
|
|
) hr ON hr.HetSorszam = orak.HetSorszam
|
|
WHERE orak.Hetirend = 1554
|
|
|
|
-- kapcsolódó csoportok óráinak törlése
|
|
IF @pKapcsolodoCsoportokMegjelenitese IS NOT NULL AND @pKapcsolodoCsoportokMegjelenitese = 0
|
|
DELETE orak
|
|
FROM #OrarendiOrak orak
|
|
INNER JOIN T_CSOPORT_OSSZES cs ON cs.TOROLT = 'F'
|
|
AND cs.ID = orak.OsztCsopId
|
|
AND cs.C_OSZTALYBONTASID IS NULL
|
|
INNER JOIN T_CSOPORTTIPUS_OSSZES cst ON cst.C_ALTANEVID = cs.C_ALTANEVID AND cst.TOROLT = 'F'
|
|
AND cst.ID = cs.C_TIPUSA
|
|
WHERE OsztCsopId != @pOsztalyCsoportId
|
|
|
|
-- osztálybontott csoportok óráinak törlése
|
|
IF @pOsztalyBontasokMegjelenitese IS NOT NULL AND @pOsztalyBontasokMegjelenitese = 0
|
|
DELETE orak
|
|
FROM #OrarendiOrak orak
|
|
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = orak.OsztCsopId
|
|
AND cs.C_OSZTALYBONTASID IS NOT NULL
|
|
WHERE orak.OsztCsopId != @pOsztalyCsoportId
|
|
|
|
-- egyedi napok esetén ne a megtartott napon, hanem az alap hét napján jelenjen meg
|
|
UPDATE orak SET orak.HetNapja=nn.C_ALAPHETNAPJA
|
|
FROM #OrarendiOrak orak
|
|
INNER JOIN T_NAPTARINAP_OSSZES nn ON nn.C_NAPDATUMA = orak.Datum AND nn.C_TANEVID = @tanevID AND nn.TOROLT = 'F'
|
|
WHERE orak.IsEgyediNap = 'T'
|
|
|
|
INSERT INTO #Oraszamok (Oraszam, OraKezdete, OraVege)
|
|
SELECT
|
|
C_ORASZAM
|
|
,CONVERT(char(5), C_KEZDETE, 108)
|
|
,CONVERT(char(5), C_VEGE, 108)
|
|
FROM T_CSENGETESIREND_OSSZES cs
|
|
INNER JOIN T_CSENGETESIRENDORA_OSSZES cso on cs.ID = cso.C_CSENGETESIRENDID
|
|
WHERE
|
|
cs.C_TANEVID = @tanevID
|
|
AND C_AKTIV = 'T'
|
|
AND cs.TOROLT = 'F'
|
|
AND cso.TOROLT = 'F'
|
|
|
|
SET @hetirend = (SELECT C_HETIREND FROM T_NAPTARIHET_OSSZES WHERE C_HETSORSZAMA = (SELECT TOP 1 HetSorszam FROM #OrarendiOrak) AND C_TANEVID = @tanevID AND TOROLT = 'F')
|
|
|
|
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 #OrarendiOrak bo
|
|
WHERE bo.Hetirend = o.Hetirend
|
|
FOR XML PATH(''), TYPE
|
|
).value
|
|
('.', 'NVARCHAR(MAX)') ,1 , 2, ''
|
|
) AS Nev
|
|
,@intezmenyNev AS IntezmenyNev
|
|
,dic.C_NAME AS Hetirend
|
|
FROM #OrarendiOrak o
|
|
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dic ON dic.ID = @hetirend
|
|
AND dic.C_TANEVID = @tanevID
|
|
AND dic.TOROLT = 'F'
|
|
|
|
DECLARE @IsNapirend int = ISNULL(@pIsNapirend, 1)
|
|
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
|
|
,[1414] AS Vasarnap
|
|
,t.HetirendNev AS HetirendNev
|
|
FROM (
|
|
SELECT
|
|
*
|
|
FROM (
|
|
SELECT
|
|
STUFF(
|
|
(
|
|
SELECT
|
|
CONVERT(nvarchar(max),
|
|
'--------------------' + nchar(13) + nchar(10)
|
|
+ bo.TargyNev + nchar(13) + nchar(10) + bo.OsztalyNev +
|
|
IIF(@pTeremId IS NOT NULL OR @pOsztalyCsoportId IS NOT NULL, nchar(13) + nchar(10) + bo.TanarNev, '') + nchar(13) + nchar(10) + bo.TeremNev + nchar(13) + nchar(10))
|
|
FROM #OrarendiOrak bo
|
|
WHERE
|
|
(@pIsNapirend = 0 AND bo.Oraszam = osz.Oraszam and o.HetNapja = bo.HetNapja)
|
|
OR
|
|
(@IsNapirend <> 0 AND bo.OraKezdete = o.OraKezdete AND bo.OraVege = o.OraVege and o.HetNapja = bo.HetNapja)
|
|
FOR XML PATH(''), TYPE
|
|
).value
|
|
('.', 'NVARCHAR(MAX)'), 1, 22, ''
|
|
) AS TargyNev
|
|
,o.HetNapja
|
|
,osz.Oraszam
|
|
,IIF(@IsNapirend <> 0, ISNULL(CONVERT(char(5), o.OraKezdete, 108), osz.Orakezdete), NULL) AS OraKezdete
|
|
,IIF(@IsNapirend <> 0, ISNULL(CONVERT(char(5), o.OraVege, 108), osz.OraVege), NULL) AS OraVege
|
|
,dic.C_NAME AS HetirendNev
|
|
,@hetirend AS Hetirend
|
|
FROM #OrarendiOrak AS o
|
|
FULL JOIN #Oraszamok AS osz ON (o.Oraszam IS NULL AND CONVERT(char(5), o.OraKezdete, 108) = osz.Orakezdete AND CONVERT(char(5), o.OraVege, 108) = osz.OraVege) OR o.Oraszam = osz.Oraszam
|
|
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS dic ON dic.C_TANEVID = @tanevID
|
|
AND dic.TOROLT = 'F'
|
|
AND dic.ID = @hetirend
|
|
) ot PIVOT(MAX(ot.TargyNev) FOR ot.HetNapja IN(
|
|
[1408]
|
|
,[1409]
|
|
,[1410]
|
|
,[1411]
|
|
,[1412]
|
|
,[1413]
|
|
,[1414])
|
|
) AS pv
|
|
) AS t
|
|
WHERE @pIsNapirend = 0 OR (t.OraKezdete IS NOT NULL AND t.OraVege IS NOT NULL)
|
|
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 AS OsztalyId
|
|
,ocs.C_EVFOLYAMTIPUSA AS Evfolyam
|
|
,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
|
|
,ocs.C_KEPZESIFORMA AS KepzesiForma
|
|
,o.C_OSZTALYFONOKID AS OsztalyFonokId
|
|
,o.C_TANTERVID AS TantervId
|
|
,o.C_SZAKMACSOPORT AS SzakmaCsoport
|
|
,o.C_AGAZAT AS Agazat
|
|
,o.C_SZAKKEPESITES AS Szakkepesites
|
|
,o.C_RESZSZAKKEPESITES AS Reszszakkepesites
|
|
,o.C_AGAZATUJSZKTTIPUSID AS UjSzktAgazat
|
|
,o.C_SZAKMATIPUSID AS UjSzktSzakma
|
|
,o.C_SZAKMAIRANYTIPUSID AS UjSzktSzakmairany
|
|
,o.C_TANULMANYITERULETNKTTIPUSID AS NktTanulmanyiTerulet
|
|
,o.C_SZAKKEPESITESNKTTIPUSID AS NktSzakkepesites
|
|
,o.C_SZAKIRANYNKTTIPUSID AS NktSzakirany
|
|
,ocs.C_KERESZTFELEVES AS OJCSJKeresztfeleves
|
|
,ocs.C_VEGZOSEVFOLYAM AS CSJVegzosEvfolyamu
|
|
,ocs.C_ISTECHNIKAI AS OJTechnikaiOsztaly
|
|
,o.C_NEMZETISEGI AS OJNemzetisegi
|
|
,o.C_KETTANNYELVU AS OJKettannyelvu
|
|
,o.C_NYELVIELOKESZITO AS OJNyelviElokeszito
|
|
,ocs.C_ISGYOGYPEDAGOGIAILOGOPEDIAI AS OJIsGyogypedagogiaiLogopediai
|
|
,o.C_SPORT AS OJSportOsztaly
|
|
,o.C_AJPROGRAM AS OJAranyJanosProgram
|
|
FROM T_OSZTALYCSOPORT_OSSZES ocs
|
|
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F'
|
|
AND o.C_ALTANEVID = ocs.C_TANEVID
|
|
AND o.C_ALINTEZMENYID = ocs.C_INTEZMENYID
|
|
WHERE ocs.ID = @pOsztalyCsoportId
|
|
AND ocs.TOROLT = 'F'
|
|
AND ocs.C_TANEVID = @tanevID
|
|
AND ocs.C_INTEZMENYID = @intezmenyId
|
|
|
|
-- Osztály csoportok
|
|
SELECT DISTINCT
|
|
ot.OsztCsopId AS CsoportId
|
|
FROM #OrarendiOrak ot
|
|
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = ot.OsztCsopId
|
|
AND cs.TOROLT = 'F'
|
|
|
|
-- Alkalmazottak
|
|
SELECT DISTINCT
|
|
ot.TanarID AS TanarId
|
|
,f.C_OKTATASIAZONOSITO AS TanarOktAzon
|
|
FROM #OrarendiOrak ot
|
|
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = ot.TanarID
|
|
AND f.TOROLT = 'F'
|
|
|
|
-- Tanulók
|
|
SELECT DISTINCT
|
|
f.ID AS TanuloId
|
|
,f.C_NYOMTATASINEV AS TanuloNeve
|
|
,f.C_OKTATASIAZONOSITO AS TanuloOktAzon
|
|
FROM #OrarendiOrak ot
|
|
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ot.OsztCsopId
|
|
AND tcs.C_TANEVID = @tanevID
|
|
AND tcs.TOROLT = 'F'
|
|
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID
|
|
AND f.TOROLT = 'F'
|
|
|
|
END
|
|
ELSE
|
|
IF @pTanarId IS NOT NULL
|
|
-- Alkalmazottak
|
|
SELECT DISTINCT
|
|
orak.TanarID AS TanarId
|
|
,f.C_OKTATASIAZONOSITO AS TanarOktAzon
|
|
,mua.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
|
|
FROM #OrarendiOrak orak
|
|
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = orak.TanarID
|
|
AND f.TOROLT = 'F'
|
|
INNER JOIN T_MUNKAUGYIADATOK_OSSZES mua ON mua.C_ALKALMAZOTTID = orak.TanarID
|
|
AND mua.TOROLT = 'F'
|
|
|
|
ELSE
|
|
IF @pTeremId IS NOT NULL
|
|
SELECT
|
|
t.ID AS TeremId
|
|
,t.C_MUKODESIHELYID AS FeladatEllatasiHelyId
|
|
FROM T_TEREM_OSSZES t
|
|
WHERE t.ID = @pTeremId
|
|
AND t.TOROLT = 'F'
|
|
|
|
END
|
|
GO
|