﻿SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF OBJECT_ID('[dbo].[sp_GetOsztalyNaplo]') IS NOT NULL
BEGIN
  DROP PROCEDURE [dbo].[sp_GetOsztalyNaplo]
END  
GO

CREATE PROCEDURE [dbo].[sp_GetOsztalyNaplo]
	@intezmenyId				INT,
	@tanevId					INT,
	@osztalyId					INT,
	@isSzovegesNaplo			BIT = 0,
	@iskolaErdekuSzamit			BIT,
	@fuggolegesTantargyak		BIT,
	@aktivTanevId				INT,
	@isReszletesMulasztasok		BIT,
	@isEgyebFoglalkozasok		BIT,
	@isEllenorzo				BIT = 0

AS
BEGIN
  SET NOCOUNT ON;

	DECLARE @ElsoNapTanevRendje DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1394 AND C_TANEVID = @tanevId AND TOROLT = 'F')
	DECLARE @UtolsoNapTanevRendje DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1395 AND C_TANEVID = @tanevId AND TOROLT = 'F')
	DECLARE @ElsoNapTanev DATE = (SELECT TOP 1 C_ELSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @tanevId AND TOROLT = 'F')
	DECLARE @UtolsoNapTanev DATE = (SELECT TOP 1 C_UTOLSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @tanevId AND TOROLT = 'F')

	DECLARE @isVegzos VARCHAR(1) = (SELECT TOP 1  C_VEGZOSEVFOLYAM FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyId)
	DECLARE @VegzosUtolsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_TANEVID = @tanevId AND C_NAPTIPUSA = 1402 AND TOROLT = 'F') 

	DECLARE @FelevVege DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES tr WHERE C_NAPTIPUSA = 1400 AND C_TANEVID=@tanevId AND TOROLT = 'F')
	DECLARE @EvVege DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES tr WHERE C_NAPTIPUSA = 1395 AND C_TANEVID=@tanevId AND TOROLT = 'F')

	DECLARE @VizsgaltNap DATE

	IF (@tanevId = @AktivtanevId AND GETDATE() <= @UtolsoNapTanevRendje)
	BEGIN
		IF (GETDATE() <= @ElsoNapTanevRendje)
		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, GETDATE())
		END
	END
	ELSE
	BEGIN
		SET @VizsgaltNap = (SELECT TOP 1 nh.C_HETUTOLSONAPJA  FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNapTanevRendje >= CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNapTanevRendje <= CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
	END

	DECLARE @NapSorszamTemp TABLE (
		Datum DATE
	)
	INSERT INTO @NapSorszamTemp
	EXEC sp_GetDokumentumTanitasiNapokSorszama
			@tanevId = @tanevId,
			@osztalyId	= @osztalyId 

	DECLARE @NapSorszam TABLE (Datum DATE, Sorszam NVARCHAR(4))
	INSERT INTO @NapSorszam
	SELECT
		Datum
		,CAST(DENSE_RANK() OVER(ORDER BY Datum) AS NVARCHAR(4))
	FROM @NapSorszamTemp
	WHERE
		 Datum <= IIF(@isVegzos = 'T', @VegzosUtolsoNap, ISNULL(@UtolsoNapTanevRendje, @UtolsoNapTanev))

	DECLARE @NaploSorszam TABLE (
	TanuloId INT
	,Sorszam INT	
	)
	INSERT INTO @NaploSorszam
	EXEC [sp_GetDokumentumTanuloNaploSorszam]
		@osztalyId = @osztalyId

  CREATE TABLE  #students (ID INT PRIMARY KEY, BelepesDatum DATE, KilepesDatum DATE, NaploSorszam INT)
  INSERT INTO #students
  SELECT
	t.TanuloId
	,BelepesDatum
	,ISNULL(KilepesDatum, GETDATE()) 
	,nsz.Sorszam
  FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') t
  INNER JOIN @NaploSorszam nsz ON nsz.TanuloId = t.TanuloId
	
	SELECT 
		 DATEPART(MONTH, Datum)	Honap
		 ,TantargyId			Id
		 ,Igazolt				IgazoltE
		 ,TanuloId				TanuloId
		 ,IgazolasTipusa		IgazolasTipus
		 ,Datum					Datum
		 ,Tipusa				Tipus
		 ,KesesPercben			KesesPercben
		 ,HetSorszama			HetSorszama
		 ,Oraszam				Oraszam
		 ,CAST(DATEPART(MONTH, Datum) AS NVARCHAR(10)) + IIF(C_GYAKORLATI = 'T', 'G', 'E') ElmeletGyakorlat
		 ,C_GYAKORLATI			isGyakorlat
	INTO #mulasztasTmp
	FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes(@tanevId, @osztalyId, @iskolaErdekuSzamit, DEFAULT, 0, DEFAULT, DEFAULT) TanulokMulasztasai
		INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = TanulokMulasztasai.TantargyId
	
	SELECT 
		CAST(SUM(IIF(IgazoltE = 'T', 1, 0)) AS VARCHAR(5)) + '/' 
		+ CAST(SUM(IIF(IgazoltE = 'F', 1, 0)) AS VARCHAR(5)) HetiMulasztas 
		,HetSorszama
		,TanuloId
	INTO #HetiMulasztasok
	FROM #mulasztasTmp 
	GROUP BY HetSorszama, TanuloId

   -- Naplo fooldal
  CREATE TABLE #osztalycsoportok (OsztalyCsoportId INT PRIMARY KEY) 
  INSERT INTO #osztalycsoportok (OsztalyCsoportId)
  SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyId, @tanevId)

  CREATE TABLE #OsztalyVagyTanoraiCsoport (Id INT)
  INSERT INTO #OsztalyVagyTanoraiCsoport 
  SELECT ID FROM fnGetDokumentumOsztalyVagyTanoraiCsoport(@tanevId)

  	CREATE TABLE #OraSorszamTemp (TanitasioraId INT, OraSorszam INT)
	CREATE TABLE #OraSorszam (TanitasioraId INT PRIMARY KEY, OraSorszam INT)
	
  DECLARE csoport_cursor CURSOR FOR 
  SELECT OsztalyCsoportId FROM #osztalycsoportok 
  
  DECLARE @ocsId int
  
  OPEN csoport_cursor
  FETCH NEXT FROM csoport_cursor INTO @ocsId 
  WHILE @@FETCH_STATUS = 0
  BEGIN

    INSERT INTO #OraSorszamTemp
    EXEC	sp_GetOraSorszamByOsztaly
  		@osztalyCsoportId = @ocsId,
  		@datum = @UtolsoNapTanevRendje,
  		@intezmenyId = @intezmenyId,
  		@tanevId = @tanevId
       
  	FETCH NEXT FROM csoport_cursor INTO @ocsId
  END
  
  CLOSE csoport_cursor
  DEALLOCATE csoport_cursor

	INSERT INTO #OraSorszam
	SELECT DISTINCT * FROM #OraSorszamTemp 	

  SELECT 
		 tao.Id						TanitasioraId
		,tao.C_DATUM				Datum
		,IIF(C_CSENGETESIRENDORAID IS NULL, dbo.fnGetDokumentumOrakezdetToOraszam(CONVERT(VARCHAR(5), C_ORAKEZDETE, 108), @tanevId), tao.C_ORASZAM)	Oraszam
		,pedagogus.ID				PedagogusId
		,IIF(C_MEGTARTOTT = 'T', pedagogus.C_NYOMTATASINEV, '-')	PedagogusNev
		,IIF(C_MEGTARTOTT = 'T', ISNULL(CONVERT(NVARCHAR(MAX), OraSorszam)  + '.','-'), '-')	OraSorszam
		,IIF(C_MEGTARTOTT = 'T', 
			  IIF(C_CSENGETESIRENDORAID IS NULL, '(' + CONVERT(VARCHAR(5), C_ORAKEZDETE, 108) + ' - ' + CONVERT(VARCHAR(5), C_ORAVEGE, 108) + ') ', '')
			+ REPLACE(REPLACE(C_TEMA, CHAR(0x0007),''), CHAR(0x000B), ''), 'Elmaradt') 
			+ IIF(C_HELYETTESITESTIPUSA = 1496, ' (Óraösszevonás: ' + helyettesito.C_NYOMTATASINEV +')', '')
			+ IIF(C_HELYETTESITESTIPUSA IN (1494, 1495), '(Helyettesitve: ' + helyettesito.C_NYOMTATASINEV +') ', '' )	Tema
		,IIF(C_MEGTARTOTT = 'T', 
			  IIF(C_CSENGETESIRENDORAID IS NULL, '(' + CONVERT(VARCHAR(5), C_ORAKEZDETE, 108) + ' - ' + CONVERT(VARCHAR(5), C_ORAVEGE, 108) + ') ', '')
			+ ISNULL(CONVERT(NVARCHAR(MAX), OraSorszam),'-') +'.: ' 
			+ IIF(C_HELYETTESITESTIPUSA = 1496, ' (Óraösszevonás, ' + helyettesito.C_NYOMTATASINEV + ') ', '')
			+ IIF(C_HELYETTESITESTIPUSA IN (1494, 1495), '(Helyettesitve: ' + helyettesito.C_NYOMTATASINEV +') ', '' ) 
			+ REPLACE(REPLACE(C_TEMA, CHAR(0x0007),''), CHAR(0x000B), '')
			,'Elmaradt') 			TemaOraSzammal
		,tao.C_HETNAPJA				HetNapja
		,nh.C_HETSORSZAMA			HetSorszama
		,C_MEGTARTOTT				Megtartott
		,tao.C_TANTARGYID				TantargyId	
		,IIF(tantargy.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN + ' (' + tantargy.C_NEV + ')', tantargy.C_NEV)	Tantargynev
		,tao.C_OSZTALYCSOPORTID			OsztalyCsoportId
		,IIF(tantargy.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, 
			IIF(LEN(C_NEVNYOMTATVANYBAN) + LEN(tantargy.C_NEV) < 90, 
					C_NEVNYOMTATVANYBAN + ' (' + tantargy.C_NEV + ')',		
					C_NEVNYOMTATVANYBAN), tantargy.C_NEV) + '-' + CHAR(13) + CHAR(10) +
					pedagogus.C_NYOMTATASINEV TantargyPedagogussal
	INTO #megtartottOrak
	FROM T_TANITASIORA_OSSZES tao 
		LEFT JOIN T_FELHASZNALO_OSSZES pedagogus ON pedagogus.Id = tao.C_TANARID
		LEFT JOIN T_FELHASZNALO_OSSZES helyettesito ON helyettesito.Id = tao.C_HELYETTESITOTANARID
		INNER JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = tao.C_TANTARGYID
		LEFT JOIN (SELECT DISTINCT * FROM #OraSorszam) oraSorszam ON oraSorszam.TanitasioraId = tao.Id
		INNER JOIN T_NAPTARIHET_OSSZES nh ON tao.C_DATUM BETWEEN nh.C_HETKEZDONAPJA AND nh.C_HETUTOLSONAPJA AND nh.C_TANEVID = @tanevId AND nh.TOROLT='F' 
	WHERE 
		tao.C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportId FROM #osztalycsoportok)
		AND tao.TOROLT = 'F'

  DECLARE @MaxOraszam INT = (SELECT MAX(Oraszam) FROM #megtartottOrak)
  DECLARE @MinOraszam INT = (SELECT MIN(Oraszam) FROM #megtartottOrak)

  SELECT DISTINCT 
	@osztalyId					OsztalyId
	,ocs.C_NEV					OsztalyNev
	,o.C_OSZTALYNAPLOLEIRASA	OsztalyMegjegyzes
	,o.C_OSZTALYFONOKID			PartnerID
	,ofo.C_NYOMTATASINEV		Osztalyfonok
	,i.C_IGAZGATONEVE			IntezmenyVezeto
	,i.C_NEV					IntezmenyNeve
	,i.C_VAROS					IntezmenyVaros
	,dbo.fnGetDokumentumIntezmenyCime(@tanevId)	IntezmenyCime
	,i.C_OMKOD					IntezmenyOMKod
	,dbo.fnGetDokumentumDatumFormatum(o.C_OSZTALYNAPLOMEGNYITASA)	NaploMegnyitasanakDatuma
	,dbo.fnGetDokumentumDatumFormatum(o.C_OSZTALYNAPLOZARASA)		NaploZarasanakDatuma 
	,o.C_OSZTALYNAPLOZARASA											NaplozarasDateFormat
	,(SELECT COUNT(Id) FROM #students)								TanulokSzama
	,(SELECT MAX(CAST(Sorszam AS INT)) FROM @NapSorszam)			TanitasiNapokSzama
	,@MaxOraszam				MaxOraszam
	,@MinOraszam				MinOraszam
  FROM T_OSZTALYCSOPORT_OSSZES ocs 
  	INNER JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID AND o.torolt='F'
  	LEFT  JOIN T_FELHASZNALO_OSSZES ofo ON ofo.ID = o.C_OSZTALYFONOKID 
  	INNER JOIN T_INTEZMENYADATOK_OSSZES i on i.C_INTEZMENYID=ocs.C_INTEZMENYID AND i.C_TANEVID = ocs.C_TANEVID AND i.Torolt = 'F'
  WHERE ocs.ID = @osztalyId
  
  -- Tanarok
  IF @isEllenorzo = 0
  BEGIN
  SELECT 
	 targy.C_NEV			TargyNev
	,tanar.C_NYOMTATASINEV	TanarNev
	,targykategoria.C_ORDER
  FROM T_FELHASZNALO_OSSZES tanar
  	INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.C_TANARID = tanar.ID and f.TOROLT='F'
  	INNER JOIN T_TANTARGY_OSSZES targy ON targy.ID = f.C_TANTARGYID and targy.TOROLT='F'
    INNER JOIN #osztalycsoportok ocs ON ocs.OsztalyCsoportId = f.C_OSZTALYCSOPORTID
	INNER JOIN T_TARGYKATEGORIATIPUS_OSSZES ON T_TARGYKATEGORIATIPUS_OSSZES.ID = targy.C_TARGYKATEGORIA
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES targykategoria ON targykategoria.ID = T_TARGYKATEGORIATIPUS_OSSZES.ID AND targykategoria.TOROLT = 'F' AND targykategoria.C_TANEVID = @tanevId
  WHERE tanar.TOROLT = 'F' AND f.TOROLT = 'F'
    AND tanar.C_INTEZMENYID = @intezmenyId
    AND tanar.c_tanevId = @tanevId
  GROUP BY C_ORDER, targy.C_NEV, tanar.C_NYOMTATASINEV
  ORDER BY C_ORDER, targy.C_NEV, tanar.C_NYOMTATASINEV
  END
  ELSE
  BEGIN
	SELECT DISTINCT
		Tanulok.Id				TanuloId
		,Tantargy.C_NEV			TargyNev
		,Tanar.C_NYOMTATASINEV	TanarNev
		,C_ORDER
	FROM #students Tanulok
		INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_TANULOID = Tanulok.Id AND TanuloCsoport.TOROLT = 'F' AND @VizsgaltNap BETWEEN C_BELEPESDATUM AND COALESCE(C_KILEPESDATUM, @UtolsoNapTanevRendje, @UtolsoNapTanev)
		INNER JOIN T_FOGLALKOZAS_OSSZES Foglalkozas ON Foglalkozas.C_OSZTALYCSOPORTID = TanuloCsoport.C_OSZTALYCSOPORTID AND Foglalkozas.TOROLT = 'F'
		INNER JOIN T_FELHASZNALO_OSSZES Tanar ON Tanar.Id = Foglalkozas.C_TANARID
		INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = Foglalkozas.C_TANTARGYID
		INNER JOIN T_TARGYKATEGORIATIPUS_OSSZES TargyKategoria ON TargyKategoria.ID = Tantargy.C_TARGYKATEGORIA
		INNER JOIN T_DICTIONARYITEMBASE_OSSZES TargyKategoria_order ON TargyKategoria.ID = TargyKategoria_order.ID AND TargyKategoria_order.TOROLT = 'F' AND TargyKategoria_order.C_TANEVID = @tanevId
	ORDER BY C_ORDER
  END
  
  -- Orarend
   EXEC sp_GetOrarendOsztalyonkent @intezmenyId, @tanevID, @osztalyid, @aktivTanevId, @isEgyebFoglalkozasok
    
  -- Oralatogatasok
  SELECT  
	 dbo.fnGetDokumentumDatumFormatum(T_ORALATOGATAS_OSSZES.C_DATUM)	DATUM
  	,TANITASIORA.C_ORASZAM									ORASZAM
  	,TARGY.C_NEV											TARGYNEV
  	,T_FELHASZNALO_OSSZES.C_NYOMTATASINEV					LATOGATO
  	,T_ORALATOGATAS_OSSZES.C_ORALATOGATOBEOSZTASA			LATOGATOBEOSZTAS
  	,T_ORALATOGATAS_OSSZES.C_MEGJEGYZES						ESZREVETEL
  INTO #Oralatogatas
  FROM T_ORALATOGATAS_OSSZES
  	INNER JOIN T_FELHASZNALO_OSSZES ON T_FELHASZNALO_OSSZES.ID = T_ORALATOGATAS_OSSZES.C_ERTEKELOID
  	INNER JOIN (SELECT ID, C_TANTARGYID, C_ORASZAM, C_OSZTALYCSOPORTID FROM T_TANITASIORA_OSSZES ) TANITASIORA ON TANITASIORA.ID = T_ORALATOGATAS_OSSZES.C_MEGTARTOTTORAID
  	INNER JOIN T_TANTARGY_OSSZES TARGY ON TARGY.ID = TANITASIORA.C_TANTARGYID
    INNER JOIN #osztalycsoportok ocs ON ocs.OsztalyCsoportId = C_OSZTALYCSOPORTID
  WHERE T_ORALATOGATAS_OSSZES.TOROLT='F' 
  	AND T_ORALATOGATAS_OSSZES.c_tanevId = @tanevId
    AND T_ORALATOGATAS_OSSZES.C_INTEZMENYID = @intezmenyId
  ORDER BY T_ORALATOGATAS_OSSZES.C_DATUM, TANITASIORA.C_ORASZAM

  	IF ((SELECT COUNT(1) FROM #Oralatogatas) = 0)
	BEGIN
		SELECT NULL DATUM, NULL ORASZAM, NULL TARGYNEV, NULL LATOGATO, NULL LATOGATOBEOSZTAS, '' ESZREVETEL
	END
	ELSE
	BEGIN
		SELECT DATUM, ORASZAM, TARGYNEV, LATOGATO, LATOGATOBEOSZTAS, ESZREVETEL FROM #Oralatogatas ORDER BY DATUM
	END	
  
  -- Naploellenorzesek 
  SELECT DISTINCT 
	 dbo.fnGetDokumentumDatumFormatum(C_ELLENORZESDATUMA)	ELLENORZESDATUMA
  	,ELLENORZO.C_NYOMTATASINEV					ELLENORZOSZEMELY
  	,T_NAPLOELLENORZES_OSSZES.C_ESZREVETEL		ESZREVETEL
	INTO #NaploEllenorzes
  FROM T_NAPLOELLENORZES_OSSZES
  	INNER JOIN T_FELHASZNALO_OSSZES ELLENORZO ON ELLENORZO.ID = T_NAPLOELLENORZES_OSSZES.C_ELLENORZOSZEMELYID
  WHERE C_OSZTALYID = @osztalyId 
    AND T_NAPLOELLENORZES_OSSZES.TOROLT = 'F' 
	AND T_NAPLOELLENORZES_OSSZES.c_tanevId=@tanevId
	
	IF ((SELECT COUNT(1) FROM #NaploEllenorzes) = 0)
	BEGIN
		SELECT NULL ELLENORZESDATUMA, NULL ELLENORZOSZEMELY, NULL ESZREVETEL
	END
	ELSE
	BEGIN
		SELECT ELLENORZESDATUMA, ELLENORZOSZEMELY, ESZREVETEL FROM #NaploEllenorzes
	END			   

  /* Napló */
	DECLARE @HetUtolsoNapjaMegtartottOra INT = (SELECT IIF(MAX(HetNapja) IS NULL OR MAX(HetNapja) <= 1412 , 1412, MAX(HetNapja)) FROM #megtartottOrak)
	DECLARE @HetUtolsoNapjaTanevendje	 INT = (SELECT ISNULL(MAX(C_HETNAPJA), 1412) FROM @NapSorszam NapSorszam
													INNER JOIN T_NAPTARINAP_OSSZES NaptariNap ON NaptariNap.C_NAPDATUMA = NapSorszam.Datum AND NaptariNap.C_TANEVID = @tanevId
													)

	DECLARE @HetUtolsoNapja INT = (SELECT IIF(@HetUtolsoNapjaMegtartottOra >= @HetUtolsoNapjaTanevendje, @HetUtolsoNapjaMegtartottOra, @HetUtolsoNapjaTanevendje))

	SELECT 
		nh.C_HETSORSZAMA
		,dbo.fnGetDokumentumDatumFormatum(MIN(nn.C_NAPDATUMA))
		,dbo.fnGetDokumentumDatumFormatum(MAX(nn.C_NAPDATUMA)) 
	FROM T_NAPTARINAP_OSSZES nn
		INNER JOIN T_NAPTARIHET_OSSZES nh ON nn.C_NAPDATUMA BETWEEN nh.C_HETKEZDONAPJA AND nh.C_HETUTOLSONAPJA AND nh.C_TANEVID = @tanevId AND nh.TOROLT='F' 
	WHERE 
		nn.C_NAPDATUMA BETWEEN ISNULL(@ElsoNapTanevRendje, @ElsoNapTanev) AND IIF(@isVegzos = 'T', COALESCE(@VegzosUtolsoNap,@UtolsoNapTanevRendje, @UtolsoNapTanev), ISNULL(@UtolsoNapTanevRendje, @UtolsoNapTanev))
		AND nn.C_HETNAPJA BETWEEN 1407 AND @HetUtolsoNapja
		AND nn.TOROLT='F' 
		AND nn.C_TANEVID = @tanevId
	GROUP BY nh.C_HETSORSZAMA
	ORDER BY MIN(nn.C_NAPDATUMA)
	
  CREATE TABLE #OsszesOra (
     Datum			DateTime
	,FormatDate		NVARCHAR(100)
    ,Oraszam		INT
    ,HetSorszama	INT
    ,HetNapja		NVARCHAR(100)
    ,Megjegyzes		NVARCHAR(1000)
    ,Sorszam		NVARCHAR(30)
  )
  
  INSERT INTO #OsszesOra
  SELECT 
		 Datum
		,FormatDate
		,Oraszam
		,HetSorszama
		,HetNapja
		,IIF(RIGHT(Megjegyzes, 1) = ',', LEFT(Megjegyzes, LEN(Megjegyzes) - 1), Megjegyzes) Megjegyzes
		,Sorszam
  FROM(
  SELECT
		 C_NAPDATUMA					Datum
		,dbo.fnGetDokumentumDatumFormatum(C_NAPDATUMA) FormatDate
		,oraszam						Oraszam
		,nh.C_HETSORSZAMA				HetSorszama
		,AlapHetnapja.C_NAME			HetNapja
		,		  ISNULL(trNaptipus.C_NAME + ',', '') 
				+ IIF(LEN(ISNULL(tr.C_MEGJEGYZES, '')) = 0, '', ' ' + tr.C_MEGJEGYZES + ',')
				+ IIF(LEN(ISNULL(osztalyCsoportTanevRendje.Megjegyzes, '')) = 0, '', ' ' + osztalyCsoportTanevRendje.Megjegyzes + ',')
				+ IIF(nn.C_HETNAPJA <> nn.C_ALAPHETNAPJA, ' (' + Hetnapja.C_NAME +')', '')  
										Megjegyzes
		,ISNULL(Sorszam,'-')			Sorszam
	FROM T_NAPTARINAP_OSSZES nn
		INNER JOIN T_NAPTARIHET_OSSZES nh ON nn.C_NAPDATUMA BETWEEN nh.C_HETKEZDONAPJA AND nh.C_HETUTOLSONAPJA AND nh.C_TANEVID = @tanevId AND nh.TOROLT='F' 
		LEFT JOIN @NapSorszam sorszam ON sorszam.Datum = nn.C_NAPDATUMA
		LEFT JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND tr.C_TANEVID = nn.C_TANEVID AND tr.TOROLT = 'F' AND tr.C_OSSZESCSOPORTRAVONATKOZIK = 'T'
		LEFT JOIN 
				(
					SELECT C_DATUM, ISNULL('(' + HetNapja.C_NAME + ')', '') + ISNULL(C_MEGJEGYZES, '') Megjegyzes FROM T_OSZTALYCSOPORT_TANEVRENDJE ocstr
						INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.Id = ocstr.C_TANEVRENDJEID	
						LEFT JOIN T_DICTIONARYITEMBASE_OSSZES HetNapja ON HetNapja.ID = tr.C_HETNAPJA AND HetNapja.C_TANEVID = @tanevId
					WHERE 
						C_OSZTALYCSOPORTID = @osztalyId
						AND tr.TOROLT = 'F'
						AND tr.C_OSSZESCSOPORTRAVONATKOZIK = 'F'
				) osztalyCsoportTanevRendje ON osztalyCsoportTanevRendje.C_DATUM = nn.C_NAPDATUMA
		LEFT JOIN T_DICTIONARYITEMBASE_OSSZES trNaptipus ON trNaptipus.ID = tr.C_NAPTIPUSA AND trNaptipus.C_TANEVID = @tanevId AND tr.C_NAPTIPUSA <> 1385
		LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AlapHetnapja ON AlapHetnapja.Id = nn.C_ALAPHETNAPJA AND AlapHetnapja.C_TANEVID = @tanevId
		LEFT JOIN T_DICTIONARYITEMBASE_OSSZES Hetnapja ON Hetnapja.Id = nn.C_HETNAPJA AND Hetnapja.C_TANEVID = @tanevId
		CROSS JOIN (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(16),(17),(18),(19),(20),(21),(22),(23),(24),(25)) oraszam(oraszam)
	WHERE
		nn.C_TANEVID = @tanevId
		AND nn.TOROLT = 'F'
		AND nn.C_NAPDATUMA <= ISNULL(@UtolsoNapTanevRendje, @UtolsoNapTanev)
		AND oraszam <= @MaxOraszam
		AND nn.C_HETNAPJA BETWEEN 1407 AND @HetUtolsoNapja
    ) NapAdatok

	IF (@MinOraszam > 0)
	BEGIN
		DELETE FROM #OsszesOra WHERE Oraszam = 0
	END

	IF @isSzovegesNaplo = 0 BEGIN   /* NORMÁL OSZTÁLYNAPLÓ */    
    DECLARE @selectList nvarchar(MAX),
      @pivotList nvarchar(MAX)
	
		SELECT 
			MulasztasokKulso.Datum Datum
			,Felhasznalo.C_NYOMTATASINEV 
			 + ' [' + STUFF((
				  SELECT  ', ' + CAST(MulasztasokBelso.Oraszam AS VARCHAR(3)) + IIF(MulasztasokBelso.Tipus = 1499, '(k)', '')
				  FROM #mulasztasTmp MulasztasokBelso
				  WHERE 
						MulasztasokBelso.Datum = MulasztasokKulso.Datum
					AND MulasztasokBelso.TanuloId = MulasztasokKulso.TanuloId
				  ORDER BY Datum, Oraszam
				  FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 2, '') + '] ' 
			 + CAST(SUM(IIF(MulasztasokKulso.IgazoltE = 'T', 1, 0)) AS VARCHAR(5)) + '/' 
			 + CAST(SUM(IIF(MulasztasokKulso.IgazoltE = 'F', 1, 0)) AS VARCHAR(5)) Hianyzas
		INTO #hianyzasokTMP
		FROM #mulasztasTmp MulasztasokKulso
			INNER JOIN T_FELHASZNALO_OSSZES Felhasznalo ON Felhasznalo.Id = MulasztasokKulso.TanuloId
		GROUP BY MulasztasokKulso.Datum, MulasztasokKulso.TanuloId, Felhasznalo.C_NYOMTATASINEV 

	SELECT 
		Datum
		,STUFF((
          SELECT CHAR(13) + CHAR(10) + Hianyzas
          FROM #hianyzasokTMP bHianyzasok 
          WHERE 
			Hianyzasok.Datum = bHianyzasok.Datum
          FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,2,'') AS Hianyzas 
	INTO #hianyzasok
	FROM #hianyzasokTMP Hianyzasok

	SELECT DISTINCT
		Datum
		,HetSorszama
		,HetNapja
		,Oraszam
		,STUFF((SELECT 
					CAST(bmto.TantargyNev AS VARCHAR(max)) + CHAR(13) + CHAR(10) 
				FROM #megtartottOrak bmto 
				WHERE 
					bmto.Datum = mto.Datum
					AND bmto.Oraszam = mto.Oraszam
				FOR XML PATH(''), TYPE)
			.value('.','NVARCHAR(MAX)'),1,0,'') Tantargy
	INTO #Orarend
	FROM #megtartottOrak mto

	SELECT DISTINCT
		Datum
		,@MinOraszam Oraszam
		,TantargyPedagogussal
		,STUFF((SELECT DISTINCT 
					CAST(bmto.TemaOraSzammal AS VARCHAR(max)) + CHAR(13) + CHAR(10) 
				FROM #megtartottOrak bmto 
				WHERE 
					bmto.Datum = mto.Datum
					AND bmto.TantargyPedagogussal = mto.TantargyPedagogussal
				FOR XML PATH(''), TYPE)
			.value('.','NVARCHAR(MAX)'),1,0,'') Tema
	INTO #1nap1TantargyTobbOra
	FROM #megtartottOrak mto

	DECLARE @tantargyakNevvel NVARCHAR(MAX)
	SELECT	@tantargyakNevvel = ISNULL(@tantargyakNevvel + ', ', '') + '[' + TantargyPedagogussal + ']'
	FROM (SELECT DISTINCT TantargyPedagogussal, C_TARGYKATEGORIA FROM #megtartottOrak m INNER JOIN T_TANTARGY_OSSZES t ON t.Id = m.TantargyId ) t
	ORDER BY C_TARGYKATEGORIA

	DECLARE @sql NVARCHAR(MAX)
	SET @sql = '
	SELECT
		Datum
		,Oraszam
		, ' + @tantargyakNevvel +'
	INTO #naplo
	FROM #1nap1TantargyTobbOra
	PIVOT (MAX(Tema) FOR TantargyPedagogussal IN (' + @tantargyakNevvel + ')) piv

	SELECT DISTINCT
		 OsszesOra.FormatDate	C_NAPDATUMA
		,Hianyzas				Mulasztas
		,OsszesOra.Megjegyzes	Megjegyzés
		,OsszesOra.Oraszam		ORASZAM
		,NULL					T1ID
		,NULL					T2ID
		,NULL					T3ID
		,Orarend.Tantargy		TANTARGY
		,OsszesOra.HetSorszama	C_HETSORSZAMA
		,OsszesOra.HetNapja		C_HETNAPJA_DNAME
		,OsszesOra.Sorszam		NapSorszama
		,' + @tantargyakNevvel + '
	FROM #OsszesOra OsszesOra
		LEFT JOIN #Orarend Orarend ON Orarend.Datum = OsszesOra.Datum AND Orarend.Oraszam = OsszesOra.Oraszam
		LEFT JOIN #naplo Naplo ON Naplo.Datum = OsszesOra.Datum AND Naplo.Oraszam = OsszesOra.Oraszam
		LEFT JOIN #hianyzasok Hianyzasok ON Hianyzasok.Datum = OsszesOra.Datum
	ORDER BY OsszesOra.FormatDate, Oraszam
	'
	IF @sql IS NULL
		BEGIN
			SELECT
				NULL	C_NAPDATUMA
				,NULL	Mulasztas
				,NULL	Megjegyzés
				,NULL	ORASZAM
				,NULL	T1ID
				,NULL	T2ID
				,NULL	T3ID
				,NULL	TANTARGY
				,NULL	C_HETSORSZAMA
				,NULL	C_HETNAPJA_DNAME
				,NULL	NapSorszama				
		END
	ELSE
		BEGIN
			EXEC sp_executesql @sql
		END
	DROP TABLE #1nap1TantargyTobbOra
	DROP TABLE #OsszesOra
	DROP TABLE #hianyzasokTMP
	DROP TABLE #hianyzasok
	DROP TABLE #Orarend
  
  END -- NORMÁL OSZTÁLYNAPLÓ
  ELSE BEGIN -- SZÖVEGES OSZTÁLYNAPLÓ
	SELECT
		 OsszesOra.Datum							C_NAPDATUMA
		,OsszesOra.HetNapja							Napneve
		,OsszesOra.Megjegyzes						C_MEGJEGYZES
		,nh.C_HETKEZDONAPJA							C_HETKEZDONAPJA
		,nh.C_HETUTOLSONAPJA						C_HETUTOLSONAPJA
		,OsszesOra.HetSorszama						C_HETSORSZAMA
		,OsszesOra.Oraszam							OraSorszam
		,OsszesOra.Sorszam							Napszam
		,Tantargynev								Tantargy
		,PedagogusNev								Tanar
		,Tema										Oraanyaga
		,OraSorszam									C_ORAEVESSORSZAM
	INTO #szoveges
	FROM #OsszesOra OsszesOra
		LEFT JOIN #megtartottOrak mto ON mto.Datum = OsszesOra.Datum AND OsszesOra.Oraszam = mto.Oraszam
		INNER JOIN T_NAPTARIHET_OSSZES nh ON OsszesOra.Datum BETWEEN nh.C_HETKEZDONAPJA AND nh.C_HETUTOLSONAPJA AND nh.C_TANEVID = @tanevId and nh.torolt='F' 
      
	SELECT DISTINCT 
			 dbo.fnGetDokumentumDatumFormatum(C_NAPDATUMA) C_NAPDATUMA
			,Napneve
			,C_MEGJEGYZES
			,C_HETKEZDONAPJA
			,C_HETUTOLSONAPJA
			,C_HETSORSZAMA
			,OraSorszam
			,Napszam
			, STUFF((SELECT CAST(bszov.TANTARGY AS VARCHAR(max)) + CHAR(13) + CHAR(10) 
					 FROM #szoveges bszov 
					 WHERE 
						 bszov.C_NAPDATUMA=szov.C_NAPDATUMA
						 and bszov.ORASORSZAM=szov.ORASORSZAM
						 and bszov.napszam=szov.napszam
					 FOR XML PATH(''), TYPE)
					.value('.','NVARCHAR(MAX)'),1,0,'') TANTARGY
			, STUFF((SELECT CAST(bszov.TANAR AS VARCHAR(max)) + CHAR(13) + CHAR(10) 
					 FROM #szoveges bszov 
					 WHERE 
						 bszov.C_NAPDATUMA=szov.C_NAPDATUMA
						 and bszov.ORASORSZAM=szov.ORASORSZAM
						 and bszov.napszam=szov.napszam
					 FOR XML PATH(''), TYPE)
					.value('.','NVARCHAR(MAX)'),1,0,'') TANAR
			, STUFF((SELECT CAST(bszov.ORAANYAGA AS VARCHAR(max)) + CHAR(13) + CHAR(10) 
					 FROM #szoveges bszov 
					 WHERE 
						 bszov.C_NAPDATUMA=szov.C_NAPDATUMA
						 and bszov.ORASORSZAM=szov.ORASORSZAM
						 and bszov.napszam=szov.napszam
					 FOR XML PATH(''), TYPE)
					.value('.','NVARCHAR(MAX)'),1,0,'') ORAANYAGA
			, STUFF((SELECT CAST(bszov.C_ORAEVESSORSZAM AS VARCHAR(max)) + CHAR(13) + CHAR(10) 
					 FROM #szoveges bszov 
					 WHERE 
						 bszov.C_NAPDATUMA=szov.C_NAPDATUMA
						 and bszov.ORASORSZAM=szov.ORASORSZAM
						 and bszov.napszam=szov.napszam
					 FOR XML PATH(''), TYPE)
					.value('.','NVARCHAR(MAX)'),1,0,'') OraEvesSorszama
	FROM #szoveges szov
	ORDER BY dbo.fnGetDokumentumDatumFormatum(C_NAPDATUMA), orasorszam

    /*Hiányzások*/
	SELECT 
		 NapiMulasztas.HetSorszama
		,TanuloNeve
		,NapiMulasztas.TanuloId
		,MAX(Hetfo)			Hetfo
		,MAX(Kedd)			Kedd
		,MAX(Szerda)		Szerda
		,MAX(Csutortok)		Csutortok
		,MAX(Pentek)		Pentek
		,MAX(Szombat)		Szombat
		,HetiMulasztas
	FROM (
	SELECT
		HetSorszama
		,TanuloNeve
		,TanuloId
		,[1408] Hetfo
		,[1409] Kedd
		,[1410] Szerda
		,[1411] Csutortok
		,[1412] Pentek
		,[1413] Szombat
	FROM 
		(
		SELECT DISTINCT
			 HetSorszama
			,C_NYOMTATASINEV TanuloNeve
			,TanuloId
			,Datum
			,C_HETNAPJA		Hetnapja
			,'[' + STUFF((
				  SELECT  ', ' + CAST(MulasztasokBelso.Oraszam AS VARCHAR(3)) + IIF(MulasztasokBelso.Tipus = 1499, '(k)', '')
				  FROM #mulasztasTmp MulasztasokBelso
				  WHERE 
						MulasztasokBelso.Datum = MulasztasokKulso.Datum
					AND MulasztasokBelso.TanuloId = MulasztasokKulso.TanuloId
				  ORDER BY Datum, Oraszam
				  FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 2, '') + '] ' 
			 + CAST(SUM(IIF(MulasztasokKulso.IgazoltE = 'T', 1, 0)) AS VARCHAR(5)) + '/' 
			 + CAST(SUM(IIF(MulasztasokKulso.IgazoltE = 'F', 1, 0)) AS VARCHAR(5)) Hianyzas
		FROM #mulasztasTmp MulasztasokKulso
			INNER JOIN T_FELHASZNALO_OSSZES Felhasznalo	ON Felhasznalo.Id = MulasztasokKulso.TanuloId
			INNER JOIN T_NAPTARINAP_OSSZES NaptariNap ON NaptariNap.C_NAPDATUMA = MulasztasokKulso.Datum AND NaptariNap.C_TANEVID = @tanevId
		GROUP BY Hetsorszama, C_NYOMTATASINEV, TanuloId, Datum, C_HETNAPJA, TanuloId
		) OsszefuzottMulasztasok
	PIVOT (MAX(Hianyzas) FOR HetNapja IN ([1408], [1409], [1410], [1411], [1412], [1413])) piv
	) NapiMulasztas
	INNER JOIN #HetiMulasztasok HetiMulasztasok ON HetiMulasztasok.HetSorszama = NapiMulasztas.HetSorszama AND HetiMulasztasok.TanuloId = NapiMulasztas.TanuloId
	GROUP BY NapiMulasztas.HetSorszama,TanuloNeve,NapiMulasztas.TanuloId, HetiMulasztas

  END --SZÖVEGES OSZTÁLYNAPLÓ

  /*TANULÓ adatai*/
	SELECT DISTINCT 
		tanuloID
		,sorszam
		,torzslapSzam
		,oktAzon
		,tajSzam
		,anyjaNeve
		,szulHely
		,dbo.fnGetDokumentumDatumFormatum(szulIdo) szulIdo
		,IIF(socAdat = '', '', LEFT(socAdat, len(socAdat)- 1)) socAdat
		,kepzes
		,tanuloNeve
		,allampolgarsaga
		,diakIgazolvanySzam
		,dbo.fnGetDokumentumDatumFormatum(kilepesDatum) kilepesDatum
		,beirasiNaploSorszam
	INTO #TanuloAlapAdatok
  FROM (
 SELECT  
	t.ID						AS tanuloID
	,naploSorszam.Sorszam		AS sorszam
	,f.C_NYILVANTARTASISZAM	AS torzslapSzam
	,f.C_OKTATASIAZONOSITO		AS oktAzon
	,f.C_TAJSZAM				AS tajSzam
	,f.C_ANYJANEVE				AS anyjaNeve
	,f.C_SZULETESIHELY			AS szulHely
	,f.C_SZULETESIDATUM			AS szulIdo
	,IIF(t.C_MAGANTANULO = 'T', 'Magántanuló (eü. ok), ', '') +
     IIF(t.C_JOGVISZONYATSZUNETELTETO = 'T', 'Jogviszony szüneteltetve, ', '') + 
     IIF(t.C_SZAKMAIGYAKORLATON = 'T', 'Szakmai gyakorlat, ', '') + 
     IIF(t.C_SZOCIALISTAMOGATAS = 'T', 'Szociális támogatás, ', '') + 
	 IIF(t.C_SAJATOSNEVELESU = 'T', 'Sajátos nevelési igényű, ', '') +
	 IIF(t.C_BEJARO = 'T', 'Bejáró, ', '') 
								AS socAdat
	,tt.C_NEV					AS kepzes
	,f.C_NYOMTATASINEV			AS tanuloNeve
	,d.C_NAME					AS allampolgarsaga
	,t.C_DIAKIGAZOLVANYSZAM		AS diakIgazolvanySzam
	,MAX(cs.C_KILEPESDATUM)		AS  kilepesDatum
	,t.C_BEIRASINAPLOSORSZAM	AS beirasiNaploSorszam
  FROM T_TANULO_OSSZES t
    INNER JOIN #students s ON s.ID = t.ID
	INNER JOIN @NaploSorszam naploSorszam on naploSorszam.TanuloId=s.ID
    INNER JOIN T_TANTERV_OSSZES tt ON tt.ID = t.C_TANTERVID
    INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = t.ID
    INNER JOIN T_TANULOCSOPORT_OSSZES cs ON s.ID = cs.C_TANULOID AND cs.C_OSZTALYCSOPORTID = @osztalyId AND cs.TOROLT = 'F'
	INNER JOIN T_DICTIONARYITEMBASE_OSSZES d on d.id=f.C_ALLAMPOLGARSAGA AND d.C_TANEVID = f.C_TANEVID AND d.C_INTEZMENYID = f.C_INTEZMENYID
  GROUP BY 
	s.ID, t.ID, naploSorszam.Sorszam, f.C_NYILVANTARTASISZAM, f.C_OKTATASIAZONOSITO, f.C_TAJSZAM, f.C_ANYJANEVE, 
    f.C_SZULETESIHELY, f.C_SZULETESIDATUM, t.C_MAGANTANULO, t.C_JOGVISZONYATSZUNETELTETO, t.C_SZAKMAIGYAKORLATON, C_SAJATOSNEVELESU, t.C_BEJARO,
	t.C_SZOCIALISTAMOGATAS, tt.C_NEV, f.C_NYOMTATASINEV, d.C_NAME, t.C_DIAKIGAZOLVANYSZAM, t.C_BEIRASINAPLOSORSZAM  
  ) tbl


  SELECT * FROM #TanuloAlapAdatok ORDER BY sorszam

  /*TANULÓ elérhetőségei */
  	DECLARE @Gondviselok TABLE (TanuloId INT, GondviseloId INT)
	INSERT INTO @Gondviselok
	SELECT 
		TanuloId
		,gondviselo.Id 
	FROM T_GONDVISELO_OSSZES gondviselo 
		INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') tanulo ON tanulo.TanuloId = gondviselo.C_TANULOID AND gondviselo.TOROLT = 'F'

	DECLARE @CimTableTemp TABLE (FelhasznaloId INT, Cim NVARCHAR(MAX), CimTipus INT, GondviseloId INT)
	INSERT INTO @CimTableTemp
	SELECT 
		TanuloId
		,C_IRANYITOSZAM + ' ' + C_VAROS + ', ' + C_KOZTERULET + ' ' + kozterulet.C_NAME + ' ' + C_HAZSZAM
		,C_CIMTIPUSA
		,C_GONDVISELOID
	FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyid, 'T') tanulo
		INNER JOIN T_CIM_OSSZES cim ON cim.C_FELHASZNALOID = TanuloId
		INNER JOIN T_DICTIONARYITEMBASE_OSSZES kozterulet ON kozterulet.Id = C_KOZTERULETJELLEGE AND kozterulet.C_TANEVID = @TanevId
	WHERE
		cim.TOROLT = 'F'
		AND cim.C_TANEVID = @tanevId

	UNION

	SELECT 
		TanuloId
		,C_IRANYITOSZAM + ' ' + C_VAROS + ', ' + C_KOZTERULET + ' ' + kozterulet.C_NAME + ' ' + C_HAZSZAM
		,C_CIMTIPUSA
		,GondviseloId
	FROM @Gondviselok gonviselo
		INNER JOIN T_CIM_OSSZES cim ON cim.C_GONDVISELOID = GondviseloId
		INNER JOIN T_DICTIONARYITEMBASE_OSSZES kozterulet ON kozterulet.Id = C_KOZTERULETJELLEGE AND kozterulet.C_TANEVID = @TanevId
	WHERE
		cim.TOROLT = 'F'
		AND cim.C_TANEVID = @tanevId

	DECLARE @TanuloCimTable TABLE (FelhasznaloId INT, Cim NVARCHAR(MAX), Cimtipusa NVARCHAR(MAX))
	INSERT INTO @TanuloCimTable
	SELECT DISTINCT
		FelhasznaloId
		,STUFF((
			SELECT DISTINCT CAST(Btemp.Cim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM @CimTableTemp btemp
			WHERE 
				temp.FelhasznaloId = btemp.FelhasznaloId
				AND temp.CimTipus = btemp.CimTipus
				AND GondviseloId IS NULL
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'') 
		,C_NAME
	FROM @CimTableTemp temp
		INNER JOIN T_DICTIONARYITEMBASE_OSSZES cimTipusa ON cimTipusa.Id = Cimtipus
	WHERE 
		GondviseloId IS NULL

	DECLARE @GondViseloCimTable TABLE (GondviseloId INT, Cim NVARCHAR(MAX), Cimtipusa NVARCHAR(MAX))
	INSERT INTO @GondViseloCimTable
	SELECT DISTINCT
		GondviseloId
		,STUFF((
			SELECT DISTINCT CAST(btemp.Cim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM @CimTableTemp btemp
			WHERE 
				temp.GondviseloId = btemp.GondviseloId
				AND temp.CimTipus = btemp.CimTipus
				AND GondviseloId IS NOT NULL
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'') 
		,C_NAME
	FROM @CimTableTemp temp
		INNER JOIN T_DICTIONARYITEMBASE_OSSZES cimTipusa ON cimTipusa.Id = Cimtipus
	WHERE 
		GondviseloId IS NOT NULL

	DECLARE @EmailCimTableTemp TABLE (FelhasznaloId INT, EmailCim NVARCHAR(MAX), GondviseloId INT)
	INSERT INTO @EmailCimTableTemp
	SELECT 
		TanuloId
		,C_EMAILCIM 
		,C_GONDVISELOID
	FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyid, 'T') tanulo
		INNER JOIN T_EMAIL_OSSZES email ON email.C_FELHASZNALOID = TanuloId
	WHERE
		email.TOROLT = 'F'
		AND email.C_TANEVID = @tanevId
		AND LEN(C_EMAILCIM) > 0

	UNION

	SELECT 
		TanuloId
		,C_EMAILCIM 
		,GondviseloId
	FROM @Gondviselok 
		INNER JOIN T_EMAIL_OSSZES email ON email.C_GONDVISELOID = GondviseloId
	WHERE
		email.TOROLT = 'F'
		AND email.C_TANEVID = @tanevId
		AND LEN(C_EMAILCIM) > 0

	DECLARE @EmailCimTanuloTable TABLE (FelhasznaloId INT, EmailCim NVARCHAR(MAX))
	INSERT INTO @EmailCimTanuloTable
	SELECT DISTINCT
		FelhasznaloId
		,STUFF((
			SELECT DISTINCT CAST(btemp.EmailCim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM @EmailCimTableTemp btemp
			WHERE 
				temp.FelhasznaloId = btemp.FelhasznaloId
				AND btemp.GondviseloId IS NULL
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'') Email
	FROM @EmailCimTableTemp temp
	WHERE
		GondviseloId IS NULL

	DECLARE @EmailCimGondviseloTable TABLE (GondviseloId INT, EmailCim NVARCHAR(MAX))
	INSERT INTO @EmailCimGondviseloTable
	SELECT DISTINCT
		GondviseloId
		,STUFF((
			SELECT DISTINCT CAST(btemp.EmailCim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM @EmailCimTableTemp btemp
			WHERE 
				temp.GondviseloId = btemp.GondviseloId
				AND btemp.GondviseloId IS NOT NULL
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'') Email
	FROM @EmailCimTableTemp temp
	WHERE 
		GondviseloId IS NOT NULL

	DECLARE @TelefonTableTemp TABLE (FelhasznaloId INT, Telefon NVARCHAR(MAX),  GondviseloId INT)
	INSERT INTO @TelefonTableTemp
	SELECT 
		TanuloId
		,C_TELEFONSZAM
		,C_GONDVISELOID
	FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyid, 'T') tanulo
		INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_FELHASZNALOID = TanuloId
	WHERE
		telefon.TOROLT = 'F'
		AND telefon.C_TANEVID = @tanevId
		AND LEN(telefon.C_TELEFONSZAM) > 0 

	UNION

	SELECT 
		TanuloId
		,C_TELEFONSZAM
		,GondviseloId
	FROM @Gondviselok gondviselo
		INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_GONDVISELOID = GondviseloId
	WHERE
		telefon.TOROLT = 'F'
		AND telefon.C_TANEVID = @tanevId
		AND LEN(telefon.C_TELEFONSZAM) > 0 

	DECLARE @TanuloTelefonTable TABLE (FelhasznaloId INT, Telefon NVARCHAR(MAX))
	INSERT INTO @TanuloTelefonTable
	SELECT DISTINCT
		FelhasznaloId
		,STUFF((
			SELECT DISTINCT CAST(btemp.Telefon AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM @TelefonTableTemp btemp
			WHERE 
				temp.FelhasznaloId = btemp.FelhasznaloId
				AND GondviseloId IS NULL
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'') 
	FROM @TelefonTableTemp temp
	WHERE 
		GondviseloId IS NULL

	DECLARE @GondviseloTelefonTable TABLE (GondviseloId INT, Telefon NVARCHAR(MAX))
	INSERT INTO @GondviseloTelefonTable
	SELECT DISTINCT
		GondviseloId
		,STUFF((
			SELECT DISTINCT CAST(btemp.Telefon AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM @TelefonTableTemp btemp
			WHERE 
				temp.GondviseloId = btemp.GondviseloId
				AND temp.FelhasznaloId = btemp.FelhasznaloId
				AND GondviseloId IS NOT NULL
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'') 
	FROM @TelefonTableTemp temp
	WHERE 
		GondviseloId IS NOT NULL

	SELECT 
		s.ID tanuloid 
		,cim.Cimtipusa cimtipus
		,cim.Cim 
		,email.EmailCim email
		,telefon.Telefon telefonszam
	FROM #students s
		LEFT JOIN @TanuloCimTable cim ON cim.FelhasznaloId = s.ID
		LEFT JOIN @EmailCimTanuloTable email ON email.FelhasznaloId = s.ID
		LEFT JOIN @TanuloTelefonTable telefon ON telefon.FelhasznaloId = s.ID
	ORDER BY Cimtipusa

  /* TANULÓ mentesség */
	SELECT s.ID tanuloId 
			,ROW_NUMBER() OVER(PARTITION BY s.ID ORDER BY s.ID) sorszam
			, mentesseg.tantargyNev
			, mentesseg.mentessegOka
			, ISNULL(IIF(mentesseg = '', ''
			, LEFT(mentesseg, LEN(mentesseg)- 1)),' ') mentesseg 
	FROM #students s
	LEFT JOIN  (SELECT DISTINCT 
								mentesseg.C_TANULOID tanuloId
								, IIF(t.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN + ' (' + t.C_NEV + ')', t.C_NEV) tantargyNev
								, mentesseg.C_MENTESSEGOKA  + ' ' + ISNULL('(' + dbo.fnGetDokumentumDatumFormatum(C_KEZDETE) + ' - ', '') + ISNULL(dbo.fnGetDokumentumDatumFormatum(C_VEGE) + ')', IIF(C_KEZDETE IS NULL, '', ')' )) mentessegOka
								, IIF(mentesseg.C_ERTEKELESMENTESITES = 'T', 'Értékelésmentesség, ', '') + IIF(mentesseg.C_ORAMENTESITES = 'T', 'Óramentesség, ', '') as mentesseg 
				FROM T_TANULOMENTESSEG_OSSZES mentesseg
					INNER JOIN T_TANTARGY_OSSZES t on t.ID=mentesseg.C_TANTARGYID
					INNER JOIN #students s ON s.ID = mentesseg.C_TANULOID 
				WHERE 
					mentesseg.TOROLT='F' 
					AND mentesseg.C_TANEVID=@tanevId
				) mentesseg ON s.ID=mentesseg.TANULOID

  /* TANULÓ határozatok */  
    SELECT 
		s.ID as tanuloID
		, ROW_NUMBER() OVER(PARTITION BY s.ID ORDER BY s.ID) AS sorszam
		, dbo.fnGetDokumentumDatumFormatum(Datum) as datum
		, d.C_NAME as tipus
		, Tartalom as tartalom
		, FeljegyzoNeve as tanar 
  FROM #students s 
    LEFT JOIN fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) feljegyzes ON feljegyzes.TanuloId = s.ID AND feljegyzes.Datum BETWEEN BelepesDatum AND KilepesDatum
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = Tipusa  AND d.C_TANEVID = @tanevId
  WHERE 
	Tipusa IN (1543, 1544, 1547, 1548, 1549, 1550, 1551, 1552, 1553)

  /* TANULÓ feljegyzései */
    SELECT 
		s.ID as tanuloID
		, ROW_NUMBER() OVER(PARTITION BY s.ID ORDER BY s.ID) AS sorszam
		, dbo.fnGetDokumentumDatumFormatum(Datum) as datum
		, d.C_NAME as tipus
		, Tartalom as tartalom
		, FeljegyzoNeve as tanar 
  FROM #students s 
    LEFT JOIN fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) feljegyzes ON feljegyzes.TanuloId = s.ID AND feljegyzes.Datum BETWEEN BelepesDatum AND KilepesDatum
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = Tipusa  AND d.C_TANEVID = @tanevId 
  WHERE 
	@isEllenorzo = 1 OR Tipusa IN 
	(
		 6315
		,5450
		,5421
		,6312
		,5460
		,6313
		,6314
		,6319
		,6316
		,6317
		,6318
		,5456
		,5467
		,5468
		,5469
		,5457
		,6323
		,6320
		,6321
		,6322
		,5473
		,5458
		,5470
		,5471
		,5472
		,5454
		,5461
		,5462
		,5463
		,5459
		,5455
		,5464
		,5465
		,5466
		,5453
		,1546
		,6326
		,6327
		,6328
		,5452
		,1537
		,1536
		,1538
		,1539
		,1535
		,1541
		,6491
		,1540
		,1542
		,1553
		,1545
		,5477
		,5478
		,5476
		,5474
		,5475
		,5479
		,5481
		,5480
	)
	ORDER BY dbo.fnGetDokumentumDatumFormatum(Datum)

  /* TANULO mulasztása */
	DECLARE @MulasztasElmeletGyakorlat NVARCHAR(MAX)
	SELECT	@MulasztasElmeletGyakorlat = ISNULL(@MulasztasElmeletGyakorlat + ', ', '') + '[' + ElmeletGyakorlat + ']'
	FROM (	SELECT 
				CAST(Honap AS VARCHAR(3)) + Tipus ElmeletGyakorlat
			FROM (VALUES (9), (10), (11), (12), (1), (2), (3), (4), (5), (6), (7), (8)) HonapTmp(Honap)
			CROSS JOIN (VALUES ('E'), ('G')) TantargyTipus(Tipus)
			) temp

	print @MulasztasElmeletGyakorlat

	SELECT 'T' IgazoltE,  ID TanuloId, Tipus INTO #Mulasztasok FROM #students
			CROSS JOIN (SELECT DISTINCT Id FROM T_DICTIONARYITEMBASE_OSSZES WHERE C_TANEVID = @tanevId AND C_TYPE LIKE 'igazolastipus' AND (@iskolaErdekuSzamit = 1 OR Id <> 1533) ) Tipus (Tipus)

	--hiányzás	
	--Összes
	SELECT 
		s.id TanuloId
		,CAST('mulasztás' AS NVARCHAR(MAX)) Tipus
		,ni.[9E], ni.[9G]
		,ni.[10E],ni.[10G]
		,ni.[11E],ni.[11G]
		,ni.[12E],ni.[12G]
		,ni.[1E],ni.[1G]
		,ni.[2E],ni.[2G]
		,ni.[3E],ni.[3G]
		,ni.[4E],ni.[4G]
		,ni.[5E],ni.[5G]
		,ni.[6E],ni.[6G]
		,FelevE 
		,FelevG	
		,[9E]+[10E]+[11E]+[12E]+[1E]+[2E]+[3E]+[4E]+[5E]+[6E] OsszesenE
		,[9G]+[10G]+[11G]+[12G]+[1G]+[2G]+[3G]+[4G]+[5G]+[6G] OsszesenG
		,1 Rendez
	INTO #MulasztasVegleges
	FROM #students s
		LEFT JOIN (SELECT * FROM (SELECT Id, TanuloId, ElmeletGyakorlat FROM #mulasztasTmp WHERE Tipus = 1500) a 
						PIVOT (COUNT(ID) FOR ElmeletGyakorlat IN ([9E], [10E], [11E], [12E], [1E], [2E], [3E], [4E], [5E], [6E],
													   [9G], [10G], [11G], [12G], [1G], [2G], [3G], [4G], [5G], [6G]))piv )ni on ni.TanuloId=s.Id
		LEFT JOIN (SELECT COUNT(Id) FelevG, TanuloId FROM #mulasztasTmp WHERE  Tipus = 1500 AND Datum <= @FelevVege AND isGyakorlat = 'T' GROUP BY TanuloId) felevG on felevG.TanuloId=s.id
		LEFT JOIN (SELECT COUNT(Id) FelevE, TanuloId FROM #mulasztasTmp WHERE  Tipus = 1500 AND Datum <= @FelevVege AND isGyakorlat = 'F' GROUP BY TanuloId) felevE on felevE.TanuloId=s.id

	--igazolt
	INSERT INTO #MulasztasVegleges
	SELECT 
		s.id
		,'igazolt' 
		,ni.[9E], ni.[9G]
		,ni.[10E],ni.[10G]
		,ni.[11E],ni.[11G]
		,ni.[12E],ni.[12G]
		,ni.[1E],ni.[1G]
		,ni.[2E],ni.[2G]
		,ni.[3E],ni.[3G]
		,ni.[4E],ni.[4G]
		,ni.[5E],ni.[5G]
		,ni.[6E],ni.[6G]
		,FelevE 
		,FelevG	
		,[9E]+[10E]+[11E]+[12E]+[1E]+[2E]+[3E]+[4E]+[5E]+[6E] OsszesenE
		,[9G]+[10G]+[11G]+[12G]+[1G]+[2G]+[3G]+[4G]+[5G]+[6G] OsszesenG
		,2 Rendez
	FROM #students s
		LEFT JOIN (SELECT * FROM (SELECT Id, ElmeletGyakorlat, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (COUNT(ID) FOR ElmeletGyakorlat IN ([9E], [10E], [11E], [12E], [1E], [2E], [3E], [4E], [5E], [6E],
													   [9G], [10G], [11G], [12G], [1G], [2G], [3G], [4G], [5G], [6G]))piv WHERE IgazoltE = 'T' AND Tipus = 1500 )ni on ni.TanuloId=s.Id
		LEFT JOIN (SELECT COUNT(Id) FelevG, TanuloId FROM #mulasztasTmp WHERE  Tipus = 1500 AND IgazoltE = 'T' AND Datum <= @FelevVege AND isGyakorlat = 'T' GROUP BY TanuloId) felevG on felevG.TanuloId=s.id
		LEFT JOIN (SELECT COUNT(Id) FelevE, TanuloId FROM #mulasztasTmp WHERE  Tipus = 1500 AND IgazoltE = 'T' AND Datum <= @FelevVege AND isGyakorlat = 'F' GROUP BY TanuloId) felevE on felevE.TanuloId=s.id
		
	--igazolatlan
	INSERT INTO #MulasztasVegleges
	SELECT 
		s.id
		,'igazolatlan' 
		,ni.[9E], ni.[9G]
		,ni.[10E],ni.[10G]
		,ni.[11E],ni.[11G]
		,ni.[12E],ni.[12G]
		,ni.[1E],ni.[1G]
		,ni.[2E],ni.[2G]
		,ni.[3E],ni.[3G]
		,ni.[4E],ni.[4G]
		,ni.[5E],ni.[5G]
		,ni.[6E],ni.[6G]
		,FelevE 
		,FelevG	
		,[9E]+[10E]+[11E]+[12E]+[1E]+[2E]+[3E]+[4E]+[5E]+[6E] OsszesenE
		,[9G]+[10G]+[11G]+[12G]+[1G]+[2G]+[3G]+[4G]+[5G]+[6G] OsszesenG
		,2 Rendez
	FROM #students s
		LEFT JOIN (SELECT * FROM (SELECT Id, ElmeletGyakorlat, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (COUNT(ID) FOR ElmeletGyakorlat IN ([9E], [10E], [11E], [12E], [1E], [2E], [3E], [4E], [5E], [6E],
													   [9G], [10G], [11G], [12G], [1G], [2G], [3G], [4G], [5G], [6G]))piv WHERE IgazoltE = 'F' AND Tipus = 1500 )ni on ni.TanuloId=s.Id
		LEFT JOIN (SELECT COUNT(Id) FelevG, TanuloId FROM #mulasztasTmp WHERE  Tipus = 1500 AND IgazoltE = 'F' AND Datum <= @FelevVege AND isGyakorlat = 'T' GROUP BY TanuloId) felevG on felevG.TanuloId=s.id
		LEFT JOIN (SELECT COUNT(Id) FelevE, TanuloId FROM #mulasztasTmp WHERE  Tipus = 1500 AND IgazoltE = 'F' AND Datum <= @FelevVege AND isGyakorlat = 'F' GROUP BY TanuloId) felevE on felevE.TanuloId=s.id

	--különböző típusok
	IF @isReszletesMulasztasok = 1
	BEGIN
	INSERT INTO #MulasztasVegleges
	SELECT 
		m.TanuloId
		,'-' + IgazolasTipus.C_NAME 
		,ni.[9E], ni.[9G]
		,ni.[10E],ni.[10G]
		,ni.[11E],ni.[11G]
		,ni.[12E],ni.[12G]
		,ni.[1E],ni.[1G]
		,ni.[2E],ni.[2G]
		,ni.[3E],ni.[3G]
		,ni.[4E],ni.[4G]
		,ni.[5E],ni.[5G]
		,ni.[6E],ni.[6G]
		,FelevE 
		,FelevG	
		,[9E]+[10E]+[11E]+[12E]+[1E]+[2E]+[3E]+[4E]+[5E]+[6E] OsszesenE
		,[9G]+[10G]+[11G]+[12G]+[1G]+[2G]+[3G]+[4G]+[5G]+[6G] OsszesenG
		,IgazolasTipus.Id 
	FROM #Mulasztasok m
	LEFT JOIN (SELECT * FROM (SELECT TanuloId, ElmeletGyakorlat, Id, IgazolasTipus, IgazoltE FROM #mulasztasTmp WHERE Tipus = 1500) a PIVOT (COUNT(ID) FOR ElmeletGyakorlat IN ([9E], [10E], [11E], [12E], [1E], [2E], [3E], [4E], [5E], [6E],
													   [9G], [10G], [11G], [12G], [1G], [2G], [3G], [4G], [5G], [6G]))piv
				)ni ON ni.TanuloId = m.TanuloId AND ni.IgazolasTipus = m.Tipus
	INNER JOIN T_DICTIONARYITEMBASE_OSSZES IgazolasTipus ON IgazolasTipus.id = m.Tipus AND IgazolasTipus.TOROLT = 'F' AND IgazolasTipus.C_TANEVID = @tanevId
	LEFT JOIN (SELECT COUNT(Id) FelevE, TanuloId Tanulo, IgazolasTipus FROM #mulasztasTmp WHERE Datum <= @FelevVege AND Tipus = 1500 AND isGyakorlat = 'F' GROUP BY IgazoltE, TanuloId, IgazolasTipus
				)felevE ON felevE.tanulo = m.TanuloId AND felevE.IgazolasTipus = m.Tipus
	LEFT JOIN (SELECT COUNT(Id) FelevG, TanuloId Tanulo, IgazolasTipus FROM #mulasztasTmp WHERE Datum <= @FelevVege AND Tipus = 1500 AND isGyakorlat = 'T' GROUP BY IgazoltE, TanuloId, IgazolasTipus
				)felevG ON felevG.tanulo = m.TanuloId AND felevG.IgazolasTipus = m.Tipus
	END

	--KÉSÉS
	INSERT INTO #MulasztasVegleges
	SELECT 
		s.id
		,'késés (p)' 
		,ni.[9E], ni.[9G]
		,ni.[10E],ni.[10G]
		,ni.[11E],ni.[11G]
		,ni.[12E],ni.[12G]
		,ni.[1E],ni.[1G]
		,ni.[2E],ni.[2G]
		,ni.[3E],ni.[3G]
		,ni.[4E],ni.[4G]
		,ni.[5E],ni.[5G]
		,ni.[6E],ni.[6G]
		,FelevE 
		,FelevG	
		,ISNULL([9E],0)+ISNULL([10E],0)+ISNULL([11E],0)+ISNULL([12E],0)+ISNULL([1E],0)+ISNULL([2E],0)+ISNULL([3E],0)+ISNULL([4E],0)+ISNULL([5E],0)+ISNULL([6E],0) OsszesenE
		,ISNULL([9G],0)+ISNULL([10G],0)+ISNULL([11G],0)+ISNULL([12G],0)+ISNULL([1G],0)+ISNULL([2G],0)+ISNULL([3G],0)+ISNULL([4G],0)+ISNULL([5G],0)+ISNULL([6G],0) OsszesenG
		,50000 Rendez
	FROM #students s
		LEFT JOIN (SELECT *  FROM (SELECT KesesPercben, ElmeletGyakorlat, TanuloId FROM #mulasztasTmp WHERE Tipus = 1499) a PIVOT (SUM(KesesPercben) FOR ElmeletGyakorlat IN ([9E], [10E], [11E], [12E], [1E], [2E], [3E], [4E], [5E], [6E],
													   [9G], [10G], [11G], [12G], [1G], [2G], [3G], [4G], [5G], [6G]))piv)ni on ni.TanuloId=s.Id
		LEFT JOIN (SELECT SUM(KesesPercben) FelevE, TanuloId FROM #mulasztasTmp WHERE Tipus = 1499 AND Datum <= @FelevVege AND isGyakorlat = 'F' GROUP BY TanuloId) felevE on felevE.TanuloId=s.id
		LEFT JOIN (SELECT SUM(KesesPercben) FelevG, TanuloId FROM #mulasztasTmp WHERE Tipus = 1499 AND Datum <= @FelevVege AND isGyakorlat = 'T' GROUP BY TanuloId) felevG on felevG.TanuloId=s.id

	--igazolt
	INSERT INTO #MulasztasVegleges
	SELECT 
		s.id
		,'* igazolt (p)' 
		,ni.[9E], ni.[9G]
		,ni.[10E],ni.[10G]
		,ni.[11E],ni.[11G]
		,ni.[12E],ni.[12G]
		,ni.[1E],ni.[1G]
		,ni.[2E],ni.[2G]
		,ni.[3E],ni.[3G]
		,ni.[4E],ni.[4G]
		,ni.[5E],ni.[5G]
		,ni.[6E],ni.[6G]
		,FelevE 
		,FelevG	
		,ISNULL([9E],0)+ISNULL([10E],0)+ISNULL([11E],0)+ISNULL([12E],0)+ISNULL([1E],0)+ISNULL([2E],0)+ISNULL([3E],0)+ISNULL([4E],0)+ISNULL([5E],0)+ISNULL([6E],0) OsszesenE
		,ISNULL([9G],0)+ISNULL([10G],0)+ISNULL([11G],0)+ISNULL([12G],0)+ISNULL([1G],0)+ISNULL([2G],0)+ISNULL([3G],0)+ISNULL([4G],0)+ISNULL([5G],0)+ISNULL([6G],0) OsszesenG
		,50001 Rendez
	FROM #students s
		LEFT JOIN (SELECT *  FROM (SELECT KesesPercben, ElmeletGyakorlat, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (SUM(KesesPercben) FOR ElmeletGyakorlat IN ([9E], [10E], [11E], [12E], [1E], [2E], [3E], [4E], [5E], [6E],
													   [9G], [10G], [11G], [12G], [1G], [2G], [3G], [4G], [5G], [6G]))piv WHERE IgazoltE = 'T' AND Tipus = 1499)ni on ni.TanuloId=s.Id
		LEFT JOIN (SELECT SUM(KesesPercben) FelevE, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'T' AND Tipus = 1499 AND Datum <= @FelevVege AND isGyakorlat = 'F' GROUP BY TanuloId) felevE ON felevE.TanuloId=s.id
		LEFT JOIN (SELECT SUM(KesesPercben) FelevG, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'T' AND Tipus = 1499 AND Datum <= @FelevVege AND isGyakorlat = 'T' GROUP BY TanuloId) felevG ON felevG.TanuloId=s.id

	--igazolatlan
	INSERT INTO #MulasztasVegleges
	SELECT 
		s.id
		,'* igazolatlan (p)' 
		,ni.[9E], ni.[9G]
		,ni.[10E],ni.[10G]
		,ni.[11E],ni.[11G]
		,ni.[12E],ni.[12G]
		,ni.[1E],ni.[1G]
		,ni.[2E],ni.[2G]
		,ni.[3E],ni.[3G]
		,ni.[4E],ni.[4G]
		,ni.[5E],ni.[5G]
		,ni.[6E],ni.[6G]
		,FelevE 
		,FelevG	
		,ISNULL([9E],0)+ISNULL([10E],0)+ISNULL([11E],0)+ISNULL([12E],0)+ISNULL([1E],0)+ISNULL([2E],0)+ISNULL([3E],0)+ISNULL([4E],0)+ISNULL([5E],0)+ISNULL([6E],0) OsszesenE
		,ISNULL([9G],0)+ISNULL([10G],0)+ISNULL([11G],0)+ISNULL([12G],0)+ISNULL([1G],0)+ISNULL([2G],0)+ISNULL([3G],0)+ISNULL([4G],0)+ISNULL([5G],0)+ISNULL([6G],0) OsszesenG
		,50002 Rendez
	FROM #students s
		LEFT JOIN (SELECT *  FROM (SELECT KesesPercben, ElmeletGyakorlat, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (SUM(KesesPercben) FOR ElmeletGyakorlat IN ([9E], [10E], [11E], [12E], [1E], [2E], [3E], [4E], [5E], [6E],
													   [9G], [10G], [11G], [12G], [1G], [2G], [3G], [4G], [5G], [6G]))piv WHERE IgazoltE = 'F' AND Tipus = 1499)ni on ni.TanuloId=s.Id
		LEFT JOIN (SELECT SUM(KesesPercben) FelevE, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'F' AND Tipus = 1499 AND Datum <= @FelevVege AND isGyakorlat = 'F' GROUP BY TanuloId) felevE ON felevE.TanuloId=s.id
		LEFT JOIN (SELECT SUM(KesesPercben) FelevG, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'F' AND Tipus = 1499 AND Datum <= @FelevVege AND isGyakorlat = 'T' GROUP BY TanuloId) felevG ON felevG.TanuloId=s.id
	
	SELECT 
		Tanuloid
		,Tipus
		,ISNULL([9E], 0) [9E], ISNULL([9G], 0)  [9G]
		,ISNULL([10E], 0)[10E], ISNULL([10G], 0)[10G]
		,ISNULL([11E], 0)[11E], ISNULL([11G], 0)[11G]
		,ISNULL([12E], 0)[12E], ISNULL([12G], 0)[12G]
		,ISNULL([1E], 0) [1E], ISNULL([1G], 0)  [1G]
		,ISNULL([2E], 0) [2E], ISNULL([2G], 0)  [2G]
		,ISNULL([3E], 0) [3E], ISNULL([3G], 0)  [3G]
		,ISNULL([4E], 0) [4E], ISNULL([4G], 0)  [4G]
		,ISNULL([5E], 0) [5E], ISNULL([5G], 0)  [5G]
		,ISNULL([6E], 0) [6E], ISNULL([6G], 0)  [6G]
		,ISNULL(FelevE, 0) FelevE
		,ISNULL(FelevG, 0) FelevG
		,ISNULL(OsszesenE, 0) OsszesenE
		,ISNULL(OsszesenG, 0) OsszesenG
		,ISNULL([9E], 0) + ISNULL([9G], 0)  [9Ossz]
		,ISNULL([10E], 0) + ISNULL([10G], 0)[10Ossz]
		,ISNULL([11E], 0) + ISNULL([11G], 0)[11Ossz]
		,ISNULL([12E], 0) + ISNULL([12G], 0)[12Ossz]
		,ISNULL([1E], 0) + ISNULL([1G], 0)  [1Ossz]
		,ISNULL([2E], 0) + ISNULL([2G], 0)  [2Ossz]
		,ISNULL([3E], 0) + ISNULL([3G], 0)  [3Ossz]
		,ISNULL([4E], 0) + ISNULL([4G], 0)  [4Ossz]
		,ISNULL([5E], 0) + ISNULL([5G], 0)  [5Ossz]
		,ISNULL([6E], 0) + ISNULL([6G], 0)  [6Ossz]
		,ISNULL(FelevE, 0) + ISNULL(FelevG, 0) FelevOssz
		,ISNULL(OsszesenE, 0) + ISNULL(OsszesenG, 0) OsszesenOssz
	FROM #MulasztasVegleges
	ORDER BY Rendez

  /*gondviselő elérhetőségei */

	SELECT DISTINCT
		s.ID
		,g.C_NEV + ' (' + RokonsagiFok.C_NAME + ')' C_NEV
		,cim.Cimtipusa		C_CIMTIPUSA
		,cim.cim			C_OSSZETETTCIM
		,telefon.telefon	C_TELEFONSZAM
		,email.emailcim		C_EMAILCIM 
	FROM #students s
		INNER JOIN T_GONDVISELO_OSSZES g ON g.C_TANULOID =  s.ID
		INNER JOIN T_DICTIONARYITEMBASE_OSSZES RokonsagiFok ON RokonsagiFok.ID = g.C_ROKONSAGFOKA AND RokonsagiFok.C_TANEVID = @tanevId
		LEFT JOIN @EmailCimGondviseloTable email ON email.GondviseloId = g.ID
		LEFT JOIN @GondviseloTelefonTable telefon ON telefon.GondviseloId = g.ID
		LEFT JOIN @GondViseloCimTable cim ON cim.GondviseloId = g.ID
	WHERE
		g.Torolt = 'F'
	ORDER BY Cimtipusa
		
  /*TANULÓ osztályzatai*/

  --Osztályhoz tartozó értékelések
	SELECT 
		Datum
		,TipusId
		,ErtekelesSzoveg
		,ErtekelesOsztalyzatId
		,ErtekelesOsztalyzatValue
		,ErtekelesOsztalyzatNev
		,ErtekelesSzazalek
		,MagatartasOsztalyzatId
		,MagatartasOsztalyzatNev
		,MagatartasSzoveg
		,MagatartasErtekId
		,MagatartasErtek
		,SzorgalomOsztalyzatId
		,SzorgalomOsztalyzatNev
		,SzorgalomSzoveg
		,SzorgalomErtekId
		,SzorgalomErtek
		,TanuloId
		,OsztalyCsoportId
		,TantargyId
		,TantargyNevZarojellel
		,TantargyNev
		,TantargyNevNyomtatvanyban
		,TargyKategoriaId
		,FotargyE
		,FotargyId
		,Altantargy
		,ErtekelesTema
		,Jeloles
		,JelolesAndErtekelesTema 
		,isMagatartasSzorgalom
	INTO #ErtekelesekTemp
	FROM fnGetDokumentumErtekelesekOsztalyonkent (@tanevId, @osztalyId, DEFAULT, DEFAULT, DEFAULT, DEFAULT)

		DECLARE @FelevVegeHonap INT,
				@FelevVegeNap	INT
		SELECT 
			 @FelevVegeHonap = DATEPART(mm, C_DATUM)
			,@FelevVegeNap = DATEPART(dd, C_DATUM)
		FROM T_TANEVRENDJE_OSSZES 
		WHERE 
			C_NAPTIPUSA = 1400 
			AND TOROLT = 'F' 
			AND C_TANEVID = @tanevid

		SELECT * INTO #magatartasSzorgalomTMP FROM
		(SELECT 
			'Magatartás' Tipus
			,IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum))  Honap
			,TanuloId
			,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev)	
			+	CASE 
					WHEN TipusId = 1518 THEN ''
					WHEN TipusId = 1522 THEN '(I.)'
					WHEN TipusId = 1523 THEN '(III.)'
					WHEN TipusId = 1524 THEN '(II.)'
					WHEN TipusId = 1525 THEN '(IV.)'
				END AS Ertekeles
		FROM #ErtekelesekTemp
		WHERE
			(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
			AND TipusId IN (1518, 1522, 1523, 1524, 1525)

		UNION ALL

		SELECT 
			'Szorgalom'
			,IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum))  Honap
			,TanuloId
			,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev) 
			+	CASE 
					WHEN TipusId = 1518 THEN ''
					WHEN TipusId = 1522 THEN '(I.)'
					WHEN TipusId = 1523 THEN '(III.)'
					WHEN TipusId = 1524 THEN '(II.)'
					WHEN TipusId = 1525 THEN '(IV.)'
				END AS Ertekeles
		FROM #ErtekelesekTemp
		WHERE
			(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL)
			AND TipusId IN (1518, 1522, 1523, 1524, 1525)

		UNION ALL

		SELECT 
			'Szorgalom'
			,15  Honap
			,TanuloId
			,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev) + Jeloles
		FROM #ErtekelesekTemp
		WHERE
			(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL)
			AND TipusId = 1519

		UNION ALL

		SELECT 
			'Magatartás'
			,15  Honap
			,TanuloId
			,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev)  + Jeloles
		FROM #ErtekelesekTemp
		WHERE
			(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
			AND TipusId = 1519

		UNION ALL

		SELECT 
			'Szorgalom'
			,16  Honap
			,TanuloId
			,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev)  + Jeloles
		FROM #ErtekelesekTemp
		WHERE
			(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL) 
			AND TipusId = 1520

		UNION ALL

		SELECT 
			'Magatartás'
			,16  Honap
			,TanuloId
			,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev) + Jeloles
		FROM #ErtekelesekTemp
		WHERE
			(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
			AND TipusId = 1520
		)magszorg

		SELECT DISTINCT
			Honap
			,TanuloId
			,Tipus
			,STUFF((
				SELECT ', ' + CAST(Ertekeles AS nvarchar(max))
				FROM #magatartasSzorgalomTMP bmsz 
				WHERE 
					msz.TanuloId = bmsz.TanuloId
					AND msz.Tipus = bmsz.Tipus
					AND msz.Honap = bmsz.Honap
				FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2,'') Ertekeles 	
			,IIF(Tipus = 'Magatartás', 0, 1) Rendez
			,
			CASE 
				WHEN Honap = 2 THEN 8
				WHEN Honap = 3 THEN 9
				WHEN Honap = 4 THEN 10
				WHEN Honap = 5 THEN 11
				WHEN Honap = 6 THEN 12
				WHEN Honap = 7 THEN 13
				WHEN Honap = 8 THEN 14
				WHEN Honap = 9 THEN  1
				WHEN Honap = 10 THEN 2
				WHEN Honap = 11 THEN 3
				WHEN Honap = 12 THEN 4
				WHEN Honap = 13 THEN 5
				WHEN Honap = 14 THEN 7
				WHEN Honap = 15 THEN 6
				WHEN Honap = 16 THEN 15
			END AS RendezHonap
		INTO #magatartasSzorgalom 
		FROM #magatartasSzorgalomTMP msz

		SELECT * INTO #jegyekTMP FROM
		(SELECT 
			IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum))  Honap
			,TanuloId
			,TantargyId
			,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek)
			  +	CASE 
					WHEN TipusId = 1518 THEN ''
					WHEN TipusId = 1522 THEN '(I.)'
					WHEN TipusId = 1523 THEN '(III.)'
					WHEN TipusId = 1524 THEN '(II.)'
					WHEN TipusId = 1525 THEN '(IV.)'
				END AS Ertekeles
			,TargyKategoriaId Rendez
		FROM #ErtekelesekTemp
		WHERE
			isMagatartasSzorgalom = 'F'
			AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
			AND TipusId IN (1518, 1522, 1523, 1524, 1525)

		UNION ALL

		SELECT 
			15  Honap
			,TanuloId
			,TantargyId
			,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek) + Jeloles 
			,TargyKategoriaId Rendez
		FROM #ErtekelesekTemp
		WHERE
			isMagatartasSzorgalom = 'F'
			AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
			AND TipusId = 1519

		UNION ALL

		SELECT 
			16  Honap
			,TanuloId
			,TantargyId
			,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek)  + Jeloles 
			,TargyKategoriaId Rendez
		FROM #ErtekelesekTemp
		WHERE
			isMagatartasSzorgalom = 'F'
			AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
			AND TipusId = 1520
		)jegyek

		SELECT DISTINCT
			Honap
			,TanuloId
			,TantargyId
			,STUFF((
				SELECT ', ' + CAST(Ertekeles AS nvarchar(max))
				FROM #jegyekTMP bj 
				WHERE 
					j.TanuloId = bj.TanuloId
					AND j.TantargyId = bj.TantargyId
					AND j.Honap = bj.Honap
				FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2,'') Ertekeles 	
			,Rendez
			,
				CASE 
				WHEN Honap = 2 THEN 8
				WHEN Honap = 3 THEN 9
				WHEN Honap = 4 THEN 10
				WHEN Honap = 5 THEN 11
				WHEN Honap = 6 THEN 12
				WHEN Honap = 7 THEN 13
				WHEN Honap = 8 THEN 14
				WHEN Honap = 9 THEN  1
				WHEN Honap = 10 THEN 2
				WHEN Honap = 11 THEN 3
				WHEN Honap = 12 THEN 4
				WHEN Honap = 13 THEN 5
				WHEN Honap = 14 THEN 7
				WHEN Honap = 15 THEN 6
				WHEN Honap = 16 THEN 15
				END AS RendezHonap
		INTO #jegyek 
		FROM #jegyekTMP j

   IF @fuggolegesTantargyak = 1
   BEGIN

		DECLARE @tantargyakJegyek NVARCHAR(MAX)
		DECLARE @tantargyakNevvelJegyek NVARCHAR(MAX)
		SELECT	@tantargyakNevvelJegyek = ISNULL(@tantargyakNevvelJegyek + ', ', '') + '[' + CAST(t.TantargyId AS NVARCHAR(MAX)) + '] AS [' + t.TantargyNev + ']',
				@tantargyakJegyek = ISNULL(@tantargyakJegyek + ', ', '[0], [1],') + '[' + CAST(t.TantargyId AS NVARCHAR(MAX)) + ']'
		FROM (SELECT DISTINCT TantargyId, t.c_nev TantargyNev, C_TARGYKATEGORIA  FROM #jegyek j INNER JOIN T_TANTARGY_OSSZES t ON t.Id = j.TantargyId ) t
		ORDER BY C_TARGYKATEGORIA
		print @tantargyakJegyek
		DECLARE @sqlJegyek NVARCHAR(MAX)
		SET @sqlJegyek = '
		SELECT 
			TanuloId tanuloID
			,CASE 
				WHEN Honap = 2 THEN ''02.''
				WHEN Honap = 3 THEN ''03.''
				WHEN Honap = 4 THEN ''04.''
				WHEN Honap = 5 THEN ''05.''
				WHEN Honap = 6 THEN ''06.''
				WHEN Honap = 7 THEN ''07.''
				WHEN Honap = 8 THEN ''08.''
				WHEN Honap = 9 THEN ''09.''
				WHEN Honap = 10 THEN ''10.''
				WHEN Honap = 11 THEN ''11.''
				WHEN Honap = 12 THEN ''12.''
				WHEN Honap = 13 THEN ''1/I.''
				WHEN Honap = 14 THEN ''1/II.''
				WHEN Honap = 15 THEN ''F''
				WHEN Honap = 16 THEN ''É''
			END AS periodusNev
				,piv.[0] AS Magatartás
				,piv.[1] AS Szorgalom
				,' + @tantargyakNevvelJegyek + '  
		FROM 
		(
		SELECT 
			TantargyId
			, Honap
			, TanuloId
			, Ertekeles
			, NaploSorszam
			, RendezHonap 
		FROM #jegyek j 
			INNER JOIN #students s on j.Tanuloid=s.ID 

		UNION ALL

		SELECT 
			IIF(Tipus = ''Magatartás'', 0, 1)
			, Honap
			, TanuloId
			, Ertekeles
			, NaploSorszam
			, RendezHonap 
		FROM #magatartasSzorgalom m
			INNER JOIN #students s on m.Tanuloid=s.ID 
		)a 
		PIVOT (MAX(Ertekeles) FOR TantargyId in (' + @tantargyakJegyek + ')) piv
		ORDER BY NaploSorszam, RendezHonap		
		'
  
		IF (@tantargyakJegyek IS NULL)
			BEGIN
				SELECT 0 AS tanuloId
			END
		ELSE
			BEGIN
				EXEC sp_executesql @sqlJegyek
			END
	END

	ELSE
	BEGIN
	SELECT * FROM(
		SELECT 
			TanuloId
			, Tipus
			, Rendez
			,[9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16]	
		FROM (SELECT TanuloId, Ertekeles, Honap, Tipus, IIF(Tipus = 'Magatartás', 0, 1) TantargyId, Rendez
				FROM #magatartasSzorgalom)a
		PIVOT (MAX(Ertekeles) FOR Honap IN ([9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16])) piv
		
		UNION ALL

		SELECT
			TanuloId		TanuloId
			,C_NEV			TantargyNev
			,Rendez
			,[9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16]	
		FROM (SELECT TanuloId, Ertekeles, Honap, TantargyId, Rendez FROM #jegyek) j
			INNER JOIN (SELECT Id, C_NEV FROM T_TANTARGY_OSSZES) t ON t.Id = TantargyId
		PIVOT (MAX(Ertekeles) FOR Honap IN ([9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16])) piv
		)vegleges
		ORDER BY TanuloId, Rendez, Tipus
	END

  /* TANULÓ záradékai */
	SELECT
		students.ID tanuloId
		,tanuloCsoport.C_ZARADEK zaradek
	FROM #students students
		INNER JOIN T_TANULOCSOPORT_OSSZES tanuloCsoport on students.ID = tanuloCsoport.C_TANULOID
	WHERE 
		tanuloCsoport.C_OSZTALYCSOPORTID = @osztalyId
		AND TOROLT = 'F'
		AND C_ZARADEK IS NOT NULL 
		AND LEN(C_ZARADEK) > 0 

	UNION

	SELECT
		students.ID tanuloId
		,tanuloCsoport.C_VEGZARADEK zaradek
	FROM #students students
		INNER JOIN T_TANULOCSOPORT_OSSZES tanuloCsoport on students.ID = tanuloCsoport.C_TANULOID
	WHERE 
		tanuloCsoport.C_OSZTALYCSOPORTID = @osztalyId
		AND TOROLT = 'F'
		AND C_VEGZARADEK IS NOT NULL 
		AND LEN(C_VEGZARADEK) > 0 

  /*Szöveges minősítések*/
	SELECT 
		a.tanuloId
		,a.Honap
		,a.Tantargy
		,a.Ertekeles 
		,a.Tipus 
	FROM 
	(
	SELECT 
		s.id tanuloId
		,szoveges.Honap
		,szoveges.Tantargy
		,szoveges.Ertekeles 
		,szoveges.Tipus
		,szoveges.RendezHonap
	FROM #students s
	INNER JOIN (SELECT 
					TanuloId tanuloId
					,'['+CONVERT(NVARCHAR(MAX),DATEPART(MONTH, Datum))+'. hónap]' Honap
					,IIF(TantargyNev <> TantargyNevNyomtatvanyban AND TantargyNevNyomtatvanyban IS NOT NULL, TantargyNevNyomtatvanyban + ' (' + TantargyNev + ')', TantargyNev) Tantargy
					,ErtekelesSzoveg + Jeloles			Ertekeles 
					,ErtekelesTipusDictionary.C_NAME	Tipus 
					,CASE 
						WHEN DATEPART(MONTH, Datum) = 1 THEN 5
						WHEN DATEPART(MONTH, Datum) = 2 THEN 6
						WHEN DATEPART(MONTH, Datum) = 3 THEN 7
						WHEN DATEPART(MONTH, Datum) = 4 THEN 8
						WHEN DATEPART(MONTH, Datum) = 5 THEN 9
						WHEN DATEPART(MONTH, Datum) = 6 THEN 10
						WHEN DATEPART(MONTH, Datum) = 7 THEN 11
						WHEN DATEPART(MONTH, Datum) = 8 THEN 12
						WHEN DATEPART(MONTH, Datum) = 9 THEN  1
						WHEN DATEPART(MONTH, Datum) = 10 THEN 2
						WHEN DATEPART(MONTH, Datum) = 11 THEN 3
						WHEN DATEPART(MONTH, Datum) = 12 THEN 4
				END AS RendezHonap
				FROM #ErtekelesekTemp ErtekelesTemp
					INNER JOIN T_DICTIONARYITEMBASE_OSSZES ErtekelesTipusDictionary ON ErtekelesTipusDictionary.ID = ErtekelesTemp.TipusId AND ErtekelesTipusDictionary.C_TANEVID = @tanevId
				WHERE 
					ErtekelesSzoveg IS NOT NULL 
			) szoveges on szoveges.TANULOID=s.Id
	UNION
	SELECT 
		s.id tanuloId
		,szoveges.Honap
		,szoveges.Tantargy
		,szoveges.Ertekeles 
		,szoveges.Tipus
		,szoveges.RendezHonap
	FROM #students s
	INNER JOIN (SELECT 
					ErtekelesTemp.TanuloId tanuloId
					,'['+CONVERT(NVARCHAR(MAX),DATEPART(MONTH, Datum))+'. hónap]' Honap
					,'Magatartás' Tantargy
					,ErtekelesTemp.MagatartasSzoveg	+ Jeloles	Ertekeles 
					,ErtekelesTipusDictionary.C_NAME					Tipus 
					,CASE 
						WHEN DATEPART(MONTH, Datum) = 1 THEN 5
						WHEN DATEPART(MONTH, Datum) = 2 THEN 6
						WHEN DATEPART(MONTH, Datum) = 3 THEN 7
						WHEN DATEPART(MONTH, Datum) = 4 THEN 8
						WHEN DATEPART(MONTH, Datum) = 5 THEN 9
						WHEN DATEPART(MONTH, Datum) = 6 THEN 10
						WHEN DATEPART(MONTH, Datum) = 7 THEN 11
						WHEN DATEPART(MONTH, Datum) = 8 THEN 12
						WHEN DATEPART(MONTH, Datum) = 9 THEN  1
						WHEN DATEPART(MONTH, Datum) = 10 THEN 2
						WHEN DATEPART(MONTH, Datum) = 11 THEN 3
						WHEN DATEPART(MONTH, Datum) = 12 THEN 4
				END AS RendezHonap
				FROM #ErtekelesekTemp ErtekelesTemp
					INNER JOIN T_DICTIONARYITEMBASE_OSSZES ErtekelesTipusDictionary ON ErtekelesTipusDictionary.ID = ErtekelesTemp.TipusId AND ErtekelesTipusDictionary.C_TANEVID = @tanevId
				WHERE	
					ErtekelesTemp.MagatartasSzoveg IS NOT NULL
			) szoveges on szoveges.TANULOID=s.Id
	UNION
	SELECT 
		s.id tanuloId
		,szoveges.Honap
		,szoveges.Tantargy
		,szoveges.Ertekeles 
		,szoveges.Tipus
		,szoveges.RendezHonap
	FROM #students s
	INNER JOIN (SELECT 
					ErtekelesTemp.TanuloId tanuloId
					,'['+CONVERT(NVARCHAR(MAX),DATEPART(MONTH, Datum))+'. hónap]' Honap
					,'Szorgalom' Tantargy
					,ErtekelesTemp.SzorgalomSzoveg	+ Jeloles	Ertekeles 
					,ErtekelesTipusDictionary.C_NAME					Tipus 
					,CASE 
						WHEN DATEPART(MONTH, Datum) = 1 THEN 5
						WHEN DATEPART(MONTH, Datum) = 2 THEN 6
						WHEN DATEPART(MONTH, Datum) = 3 THEN 7
						WHEN DATEPART(MONTH, Datum) = 4 THEN 8
						WHEN DATEPART(MONTH, Datum) = 5 THEN 9
						WHEN DATEPART(MONTH, Datum) = 6 THEN 10
						WHEN DATEPART(MONTH, Datum) = 7 THEN 11
						WHEN DATEPART(MONTH, Datum) = 8 THEN 12
						WHEN DATEPART(MONTH, Datum) = 9 THEN  1
						WHEN DATEPART(MONTH, Datum) = 10 THEN 2
						WHEN DATEPART(MONTH, Datum) = 11 THEN 3
						WHEN DATEPART(MONTH, Datum) = 12 THEN 4
				END AS RendezHonap
				FROM #ErtekelesekTemp ErtekelesTemp
					INNER JOIN T_DICTIONARYITEMBASE_OSSZES ErtekelesTipusDictionary ON ErtekelesTipusDictionary.ID = ErtekelesTemp.TipusId AND ErtekelesTipusDictionary.C_TANEVID = @tanevId
				WHERE	
					ErtekelesTemp.SzorgalomSzoveg IS NOT NULL
			) szoveges on szoveges.TANULOID=s.Id
	)a
	ORDER BY RendezHonap, Tantargy

--Közösségi szolgálat
	SELECT 
		TanuloId
		,dbo.fnGetDokumentumDatumFormatum(Datum) Datum
		,ISNULL(' - ' + Megjegyzes, '') Megjegyzes
		,Oraszam
		,TeljesitesHelye
		,FeljegyzoNeve
		,Tipus 
	FROM fnGetDokumentumKozossegiSzolgalatOsztalyonkent(@tanevId, @osztalyId)
	ORDER BY Datum

--Félévi, év végi mulasztások
	DECLARE @FeleviMulasztasok TABLE (
		TanuloId				INT
		,Igazolt				INT
		,Igazolatlan			INT
		,ElmeletIgazolt			INT
		,ElmeletIgazolatlan		INT
		,GyakorlatIgazolt		INT
		,GyakorlatIgazolatlan	INT
		,ElmeletOsszes			INT
		,GyakorlatOsszes		INT
		,Osszes					INT		
		)

	INSERT INTO @FeleviMulasztasok
	EXEC sp_GetDokumentumMulasztasok
		@osztalyId				 = @osztalyId,
		@tanevId				 = @tanevId,
		@elmeletGyakorlat		 = 1,
		@kesesTipus				 = 1499,
		@elmeletiOraPercben		 = 45,
		@gyakorlatiOraPercben	 = 60,
		@ertekelesTipus			 = 1519,
		@iskolaErdekuSzamit		 = @iskolaErdekuSzamit

	DECLARE @EvVegiMulasztasok TABLE (
		TanuloId				INT
		,Igazolt				INT
		,Igazolatlan			INT
		,ElmeletIgazolt			INT
		,ElmeletIgazolatlan		INT
		,GyakorlatIgazolt		INT
		,GyakorlatIgazolatlan	INT
		,ElmeletOsszes			INT
		,GyakorlatOsszes		INT
		,Osszes					INT		
		)

	INSERT INTO @EvVegiMulasztasok
	EXEC sp_GetDokumentumMulasztasok
		@osztalyId				 = @osztalyId,
		@tanevId				 = @tanevId,
		@elmeletGyakorlat		 = 1,
		@kesesTipus				 = 1499,
		@elmeletiOraPercben		 = 45,
		@gyakorlatiOraPercben	 = 60,
		@ertekelesTipus			 = 1520,
		@iskolaErdekuSzamit		 = @iskolaErdekuSzamit

	SELECT 
		TanuloAlapAdatok.tanuloId				TanuloId
		,ISNULL(FeleviMulasztasok.ElmeletIgazolt, 0)		FeleviElmeletIgazolt
		,ISNULL(FeleviMulasztasok.ElmeletIgazolatlan, 0)	FeleviElmeletIgazolatlan
		,ISNULL(FeleviMulasztasok.GyakorlatIgazolT, 0)	FeleviGyakorlatIgazolt
		,ISNULL(FeleviMulasztasok.GyakorlatIgazolatlan, 0)	FeleviGyakorlatIgazolatlan
		,ISNULL(FeleviMulasztasok.ElmeletIgazolt + FeleviMulasztasok.ElmeletIgazolatlan, 0)		FeleviElmelet
		,ISNULL(FeleviMulasztasok.GyakorlatIgazolt + FeleviMulasztasok.GyakorlatIgazolatlan, 0)	FeleviGyakorlat
		,ISNULL(EvVegiMulasztasok.ElmeletIgazolt, 0)		EvVegiElmeletIgazolt
		,ISNULL(EvVegiMulasztasok.ElmeletIgazolatlan, 0)	EvVegiElmeletIgazolatlan
		,ISNULL(EvVegiMulasztasok.GyakorlatIgazolt, 0)		EvVegiGyakorlatIgazolt
		,ISNULL(EvVegiMulasztasok.GyakorlatIgazolatlan, 0)	EvVegiGyakorlatIgazolatlan
		,ISNULL(EvVegiMulasztasok.ElmeletIgazolt + EvVegiMulasztasok.ElmeletIgazolatlan, 0)		EvVegiElmelet
		,ISNULL(EvVegiMulasztasok.GyakorlatIgazolt + EvVegiMulasztasok.GyakorlatIgazolatlan, 0)	EvVegiGyakorlat
		,ISNULL(FeleviMulasztasok.Osszes, 0)				FeleviOsszes
		,ISNULL(FeleviMulasztasok.Igazolt, 0)				FeleviIgazolt
		,ISNULL(FeleviMulasztasok.Igazolatlan, 0)			FeleviIgazolatlan
		,ISNULL(EvVegiMulasztasok.Osszes, 0)				EvVegiOsszes
		,ISNULL(EvVegiMulasztasok.Igazolt, 0)				EvVegiIgazolt
		,ISNULL(EvVegiMulasztasok.Igazolatlan, 0)			EvVegiIgazolatlan
		,oktAzon			 oktAzon		 
		,tanuloNeve			 tanuloNeve
	FROM #TanuloAlapAdatok TanuloAlapAdatok 
		LEFT JOIN @EvVegiMulasztasok EvVegiMulasztasok ON EvVegiMulasztasok.TanuloId = TanuloAlapAdatok.TanuloId
		LEFT JOIN @FeleviMulasztasok FeleviMulasztasok ON FeleviMulasztasok.TanuloId = TanuloAlapAdatok.TanuloId
	ORDER BY tanuloNeve

	--értékelésekhez tartozó feljegyzések 1. félév
	SELECT DISTINCT
		TanuloId
		,STUFF((SELECT DISTINCT ', ' +  JelolesAndErtekelesTema 
					FROM #ErtekelesekTemp ErtekelesTemavalOsszefuz
				WHERE 
					LEN(JelolesAndErtekelesTema) > 0
					AND Datum <= @FelevVege
					AND ErtekelesTemavalOsszefuz.TanuloId = ErtekelesTemaval.TanuloId
					AND (ErtekelesTemavalOsszefuz.ErtekelesSzoveg IS NULL AND ErtekelesTemavalOsszefuz.MagatartasSzoveg IS NULL AND ErtekelesTemavalOsszefuz.SzorgalomSzoveg IS NULL)
				FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,2,'')  JelolesTemaval
	FROM #ErtekelesekTemp  ErtekelesTemaval
		WHERE 
			LEN(JelolesAndErtekelesTema) > 0
			AND Datum <= @FelevVege
			AND (ErtekelesTemaval.ErtekelesSzoveg IS NULL AND ErtekelesTemaval.MagatartasSzoveg IS NULL AND ErtekelesTemaval.SzorgalomSzoveg IS NULL)

	--értékelésekhez tartozó feljegyzések 2. félév
	SELECT DISTINCT
		TanuloId
		,STUFF((SELECT DISTINCT ', ' +  JelolesAndErtekelesTema 
					FROM #ErtekelesekTemp ErtekelesTemavalOsszefuz
				WHERE 
					LEN(JelolesAndErtekelesTema) > 0
					AND Datum >= @FelevVege
					AND ErtekelesTemavalOsszefuz.TanuloId = ErtekelesTemaval.TanuloId
					AND (ErtekelesTemavalOsszefuz.ErtekelesSzoveg IS NULL AND ErtekelesTemavalOsszefuz.MagatartasSzoveg IS NULL AND ErtekelesTemavalOsszefuz.SzorgalomSzoveg IS NULL)
				FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,2,'')  JelolesTemaval
	FROM #ErtekelesekTemp  ErtekelesTemaval
		WHERE 
			LEN(JelolesAndErtekelesTema) > 0
			AND Datum >= @FelevVege
			AND (ErtekelesTemaval.ErtekelesSzoveg IS NULL AND ErtekelesTemaval.MagatartasSzoveg IS NULL AND ErtekelesTemaval.SzorgalomSzoveg IS NULL)

	--értékelésekhez tartozó feljegyzések
	SELECT DISTINCT
		TanuloId
		,STUFF((SELECT DISTINCT ', ' +  JelolesAndErtekelesTema 
					FROM #ErtekelesekTemp ErtekelesTemavalOsszefuz
				WHERE 
					LEN(JelolesAndErtekelesTema) > 0
					AND ErtekelesTemavalOsszefuz.TanuloId = ErtekelesTemaval.TanuloId
					AND (ErtekelesTemavalOsszefuz.ErtekelesSzoveg IS NULL AND ErtekelesTemavalOsszefuz.MagatartasSzoveg IS NULL AND ErtekelesTemavalOsszefuz.SzorgalomSzoveg IS NULL)
				FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,2,'')  JelolesTemaval
	FROM #ErtekelesekTemp  ErtekelesTemaval
		WHERE 
			LEN(JelolesAndErtekelesTema) > 0
			AND (ErtekelesTemaval.ErtekelesSzoveg IS NULL AND ErtekelesTemaval.MagatartasSzoveg IS NULL AND ErtekelesTemaval.SzorgalomSzoveg IS NULL)

DROP TABLE #Oralatogatas
DROP TABLE #NaploEllenorzes
DROP TABLE #students	
DROP TABLE #osztalycsoportok
DROP TABLE #OsztalyVagyTanoraiCsoport
DROP TABLE #megtartottOrak
DROP TABLE #OraSorszam
DROP TABLE #OraSorszamTemp
DROP TABLE #mulasztasTmp
DROP TABLE #MulasztasVegleges
DROP TABLE #jegyekTMP
DROP TABLE #jegyek
DROP TABLE #magatartasSzorgalomTMP
DROP TABLE #magatartasSzorgalom
DROP TABLE #TanuloAlapAdatok

END

GO