338 lines
9.9 KiB
Transact-SQL
338 lines
9.9 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)
|
|
|
|
CREATE TABLE #OrarendiOrak (
|
|
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 IX1 CLUSTERED(Datum, HetNapja, Oraszam, TanevRendOsztalyCsoportId, TantargyId, TanarID)
|
|
)
|
|
|
|
CREATE TABLE #Oraszamok (
|
|
Oraszam int
|
|
,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 (
|
|
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 = @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
|
|
|
|
-- 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.ID = orak.OsztCsopId
|
|
AND cs.C_OSZTALYBONTASID IS NULL
|
|
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
|
|
|
|
INSERT INTO #Oraszamok (Oraszam)
|
|
SELECT DISTINCT
|
|
ora.C_ORASZAM AS Oraszam
|
|
FROM T_ORARENDIORA_OSSZES ora
|
|
WHERE ora.C_INTEZMENYID = @intezmenyId
|
|
AND ora.C_TANEVID = @tanevID
|
|
AND ora.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 #OrarendiOrak 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 #OrarendiOrak 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 #OrarendiOrak o
|
|
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dic ON o.Hetirend = dic.ID
|
|
AND dic.C_TANEVID = @tanevID
|
|
AND dic.TOROLT = 'F'
|
|
|
|
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 +
|
|
IIF(@pTeremId IS NOT NULL OR @pOsztalyCsoportId IS NOT NULL, nchar(13) + nchar(10) + bo.TanarNev, '') + nchar(13) + nchar(10) + bo.TeremNev + nchar(10) + nchar(10))
|
|
FROM #OrarendiOrak bo
|
|
WHERE bo.OraKezdete = o.OraKezdete
|
|
FOR XML PATH(''), TYPE
|
|
).value
|
|
('.', 'NVARCHAR(MAX)'), 1, 0, ''
|
|
) AS TargyNev
|
|
,o.HetNapja
|
|
,o.Oraszam
|
|
,CONVERT(char(5), o.OraKezdete, 108) AS OraKezdete
|
|
,CONVERT(char(5), o.OraVege, 108) AS OraVege
|
|
,dic.C_NAME AS HetirendNev
|
|
,o.Hetirend AS Hetirend
|
|
FROM #OrarendiOrak AS o
|
|
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS dic ON dic.C_TANEVID = @tanevID
|
|
AND dic.TOROLT = 'F'
|
|
AND dic.ID = o.Hetirend
|
|
) 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 AS OsztalyId
|
|
,ocs.C_EVFOLYAMTIPUSA AS Evfolyam
|
|
,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
|
|
,o.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
|
|
,ocs.C_KERESZTFELEVES AS OJCSJKeresztfeleves
|
|
,ocs.C_VEGZOSEVFOLYAM AS CSJVegzosEvfolyamu
|
|
,o.C_TECHNIKAIOSZTALY AS OJTechnikaiOsztaly
|
|
,o.C_NEMZETISEGI AS OJNemzetisegi
|
|
,o.C_KETTANNYELVU AS OJKettannyelvu
|
|
,o.C_NYELVIELOKESZITO AS OJNyelviElokeszito
|
|
,o.C_LOGOPEDIAI AS OJLogopediai
|
|
,o.C_SPORT AS OJSportOsztaly
|
|
,o.C_AJPROGRAM AS OJAranyJanosProgram
|
|
,o.C_GYOGYPEDAGOGIAI AS OJGyogypedagogiai
|
|
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
|