DROP PROCEDURE IF EXISTS sp_GetDokumentumHelyettesitesekByDateInterval GO CREATE PROCEDURE sp_GetDokumentumHelyettesitesekByDateInterval @tanevId INT ,@intezmenyId INT ,@helyettesitesListaFormatumId INT = 0 --0 helyettesitett, 1 helyettesito ,@idoszakKezdete DATE ,@idoszakVege DATE AS BEGIN SET NOCOUNT ON; CREATE TABLE #OrarendAdatok ( Datum datetime ,HetNapja int ,OraKezdete datetime ,OraVege datetime ,Oraszam int ,Megtartott char(1) ,OsztalyNev nvarchar(255) ,TanarNev nvarchar(255) ,TeremNev nvarchar(255) ,OraTipus nvarchar(200) ,HelyettesitoTanarID int ,HelyettesitoTanarNev nvarchar(255) ,HelyettesitesId int ,TanarID int ,TantargyId int ) INSERT INTO #OrarendAdatok ( Datum ,HetNapja ,OraKezdete ,OraVege ,Oraszam ,Megtartott ,OsztalyNev ,TanarNev ,TeremNev ,OraTipus ,HelyettesitoTanarID ,HelyettesitoTanarNev ,HelyettesitesId ,TanarID ,TantargyId ) EXEC dbo.sp_GetOrarend @pIntezmenyId = @IntezmenyId ,@pTanevId = @TanevId ,@pIdoszakKezdete = @IdoszakKezdete ,@pIdoszakVege = @IdoszakVege ,@pTanarId = NULL ,@pIsHelyettesitesNelkul = 0 ,@pOsztalyCsoportId = NULL ,@pTanuloId = NULL ,@pTantargyId = NULL ,@pTeremId = NULL ,@pCsakOrarendiOrak = 0 ,@pIsNapirend = NULL ,@pOszlopok = 'Datum,HetNapja,OraKezdete,OraVege,Oraszam,Megtartott,OsztalyNev,TanarNev,TeremNev,OraTipus,HelyettesitoTanarID,HelyettesitoTanarNev,HelyettesitesId,TanarID,TantargyId' SELECT hely.HelyettesitoTanarID AS HelyettesitoId ,hely.TanarID AS HelyettesitettId ,dbo.fnGetDokumentumDatumFormatum(hely.Datum) AS HetNapja ,HetNapja.C_NAME AS HetNapjaMegnevezes ,IIF(hely.Oraszam IS NOT NULL,CONVERT(NVARCHAR(5), hely.Oraszam) + '.', CONCAT(CONVERT(NVARCHAR(5), hely.OraKezdete, 108), '-', CONVERT(NVARCHAR(5), hely.OraVege, 108))) AS Oraszam ,IIF(hely.OraTipus = 'TanitasiOra' AND hely.Megtartott = 'F', 'Elmaradt óra', hely.HelyettesitoTanarNev) AS HelyettesitoNeve ,hely.TanarNev AS HelyettesitettNeve ,hely.OsztalyNev AS OsztalyCsoportNev ,tantargy.C_NEV AS TantargyNev ,hely.TeremNev AS TeremNev ,HelyettesitesTipusa.C_NAME AS HelyettesitesTipusa ,helyettesito.C_OKTATASIAZONOSITO AS HelyettesitoOktatasiAzon ,helyettesitesett.C_OKTATASIAZONOSITO AS HelyettesitettOktatasiAzon ,Rendez = CASE ISNUMERIC(hely.Oraszam) WHEN 1 THEN CAST(hely.Oraszam AS INT) ELSE 999999999999999 END INTO #adatok FROM #OrarendAdatok hely LEFT JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = hely.TantargyId AND tantargy.TOROLT = 'F' LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES hi ON hi.ID = hely.HelyettesitesId and hi.TOROLT = 'F' LEFT JOIN T_FELHASZNALO_OSSZES helyettesito ON helyettesito.Id = hely.HelyettesitoTanarID AND helyettesito.TOROLT = 'F' LEFT JOIN T_FELHASZNALO_OSSZES helyettesitesett ON helyettesitesett.ID = hely.TanarID AND helyettesitesett.TOROLT = 'F' LEFT JOIN T_DICTIONARYITEMBASE_OSSZES HelyettesitesTipusa ON HelyettesitesTipusa.ID = hi.C_HELYETTESITESTIPUS AND HelyettesitesTipusa.C_TANEVID = @TanevId AND HelyettesitesTipusa.TOROLT = 'F' LEFT JOIN T_DICTIONARYITEMBASE_OSSZES HetNapja ON HetNapja.ID = hely.HetNapja AND HetNapja.C_TANEVID = @TanevId AND HetNapja.TOROLT = 'F' WHERE (hely.OraTipus = 'TanitasiOra' AND (hely.HelyettesitoTanarID IS NOT NULL OR hely.Megtartott = 'F')) OR (hely.OraTipus = 'OrarendiOra' AND hely.HelyettesitoTanarID IS NOT NULL) ORDER BY hely.HetNapja, hely.Oraszam SELECT DISTINCT HetNapja, HetNapjaMegnevezes FROM #adatok IF @helyettesitesListaFormatumId = 0 BEGIN SELECT DISTINCT HelyettesitettId PedagogusId, HelyettesitettNeve PedagogusNev, HetNapja FROM #adatok ORDER BY HelyettesitettNeve SELECT * FROM #adatok ORDER BY HetNapja, Rendez, Oraszam END ELSE BEGIN SELECT DISTINCT HelyettesitoId PedagogusId, HelyettesitoNeve PedagogusNev, HetNapja FROM #adatok ORDER BY HelyettesitoNeve SELECT * FROM #adatok ORDER BY HetNapja, Rendez, Oraszam END END GO