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 ,[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 bo.OraKezdete = o.OraKezdete FOR XML PATH(''), TYPE ).value ('.', 'NVARCHAR(MAX)'), 1, 22, '' ) 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] ,[1414]) ) 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