﻿SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF OBJECT_ID('sp_GetOsztalyNaplo') IS NOT NULL BEGIN
  DROP PROCEDURE sp_GetOsztalyNaplo
END  
GO

CREATE PROCEDURE sp_GetOsztalyNaplo
  @intezmenyId				INT,
  @tanevId					INT,
  @osztalyId				INT,
  @isSzövegesNaplo			BIT = 0,
  @iskolaErdekuSzamit		BIT,
  @fuggolegesTantargyak		BIT,
  @aktivTanevId				INT,
  @isReszletesMulasztasok	BIT

AS
BEGIN
  SET NOCOUNT ON;

	DECLARE @TanitasiNapTipusok TABLE (Id INT)
	INSERT INTO @TanitasiNapTipusok
	SELECT DISTINCT ID FROM T_DICTIONARYITEMBASE_OSSZES WHERE ID IN (1385, 1393, 1394, 1395, 1400, 1402, 1403, 1404)

	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 @NapSorszam TABLE (Datum DATE, Sorszam NVARCHAR(4))
	INSERT INTO @NapSorszam
	SELECT
		C_NAPDATUMA
		,CAST(DENSE_RANK() OVER(ORDER BY C_NAPDATUMA) AS NVARCHAR(4))
	FROM T_NAPTARINAP_OSSZES
	WHERE
		C_TANEVID = @tanevId
		AND TOROLT = 'F'
		AND C_NAPTIPUSA IN (SELECT Id FROM @TanitasiNapTipusok) 
		AND C_NAPDATUMA <= 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
	
   -- Naplo fooldal
  CREATE TABLE #osztalycsoportok (OsztalyCsoportId INT PRIMARY KEY) 
  INSERT INTO #osztalycsoportok (OsztalyCsoportId)
  SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyId, 1034)

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

  DECLARE @MaxOraszam INT = (SELECT ISNULL(MAX(IIF(C_ORASZAM = 0, 1, C_ORASZAM)), 1) FROM T_TANITASIORA_OSSZES WHERE C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportId FROM #osztalycsoportok) AND TOROLT = 'F')
  DECLARE @MinOraszam INT = (SELECT ISNULL(MIN(IIF(C_ORASZAM = 0, 0, 1)), 1) FROM T_TANITASIORA_OSSZES WHERE C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportId FROM #osztalycsoportok) AND TOROLT = 'F')

  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_IRANYITOSZAM			IntezmenyIranyitoszam
	,i.C_VAROS					IntezmenyVaros
	,i.C_CIME					IntezmenyCime
	,i.C_OMKOD					IntezmenyOMKod
	,FORMAT(o.C_OSZTALYNAPLOMEGNYITASA, 'yyyy. MMMM dd.', 'hu-hu')	NaploMegnyitasanakDatuma
	,FORMAT(o.C_OSZTALYNAPLOZARASA, 'yyyy. MMMM dd.', 'hu-hu')		NaploZarasanakDatuma 
	,(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
  SELECT targy.C_NEV TargyNev, tanar.C_NYOMTATASINEV TanarNev, targykategoria.C_ORDER
  FROM T_FELHASZNALO_OSSZES tanar
  	INNER JOIN T_FOGLALKOZASOK_TANAROK ft ON tanar.ID = ft.C_TANAROKID
  	INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.ID = ft.C_FOGLALKOZASOKID 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
  
  -- Orarend
   EXEC sp_GetOrarendOsztalyonkent @intezmenyId, @tanevID, @osztalyid, @aktivTanevId
   
   
  -- Oralatogatasok
  SELECT  
	 FORMAT(T_ORALATOGATAS_OSSZES.C_DATUM, 'yyyy.MM.dd.')	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
	END	
  
  
  -- Naploellenorzesek 
  SELECT DISTINCT 
	 FORMAT(C_ELLENORZESDATUMA, 'yyyy.MM.dd.')	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 @datum DATE = GETDATE()
	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 = @datum,
  		@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
		,C_ORASZAM					Oraszam
		,C_ORATULAJDONOSID			PedagogusId
		,ISNULL(helyettesito.C_NYOMTATASINEV, pedagogus.C_NYOMTATASINEV)	PedagogusNev
		,IIF(C_MEGTARTOTT = 'T', ISNULL(CONVERT(NVARCHAR(MAX), OraSorszam),'-'), '-')	OraSorszam
		,IIF(C_MEGTARTOTT = 'T', REPLACE(REPLACE(C_TEMA, CHAR(0x0007),''), CHAR(0x000B), ''), 'Elmaradt')		Tema
		,IIF(C_MEGTARTOTT = 'T', ISNULL(CONVERT(NVARCHAR(MAX), OraSorszam),'-') +'.: ' + REPLACE(REPLACE(C_TEMA, CHAR(0x0007),''), CHAR(0x000B), ''), 'Elmaradt')	TemaOraSzammal
		,tao.C_HETNAPJA				HetNapja
		,nh.C_HETSORSZAMA			HetSorszama
		,C_MEGTARTOTT				Megtartott
		,C_TANTARGYID				TantargyId	
		,IIF(tantargy.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN + ' (' + tantargy.C_NEV + ')', tantargy.C_NEV)	Tantargynev
		,C_OSZTALYCSOPORTID			OsztalyCsoportId
		,C_NAPSORSZAMA				NapSorszama
	INTO #megtartottOrak
	FROM T_TANITASIORA_OSSZES tao 
		INNER JOIN T_FELHASZNALO_OSSZES pedagogus ON pedagogus.Id = tao.C_ORATULAJDONOSID
		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 
		C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportId FROM #osztalycsoportok)
		AND tao.TOROLT = 'F'
	
	DECLARE @HetUtolsoNapja INT = (SELECT IIF(MAX(HetNapja) = 1413, 1413, 1412) FROM #megtartottOrak)
	SELECT 
		nh.C_HETSORSZAMA
		,MIN(nn.C_NAPDATUMA)
		,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
    ,Oraszam int
    ,HetSorszama int
    ,HetNapja int
    ,Megjegyzes nvarchar(1000)
    ,Sorszam nvarchar(30)
  )
  
  INSERT INTO #OsszesOra
  SELECT
		C_NAPDATUMA						Datum
		,oraszam						Oraszam
		,nh.C_HETSORSZAMA				HetSorszama
		,nn.C_HETNAPJA					HetNapja
		,ISNULL(trNaptipus.C_NAME, '') + COALESCE(CHAR(13) + CHAR(10) + osztalyCsoportTanevRendje.C_MEGJEGYZES, tr.C_MEGJEGYZES, '') 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, C_MEGJEGYZES FROM T_OSZTALYCSOPORT_TANEVRENDJE ocstr
						INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.Id = ocstr.C_TANEVRENDJEID	
					WHERE 
						C_OSZTALYCSOPORTID = @osztalyId
						AND 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
		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

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

	IF @isSzövegesNaplo = 0 BEGIN   /* NORMÁL OSZTÁLYNAPLÓ */    
    DECLARE @selectList nvarchar(MAX),
      @pivotList nvarchar(MAX)
	
	SELECT DISTINCT 
		tao.C_DATUM		Datum
		,t.C_NYOMTATASINEV + ' [' + STUFF((
										SELECT ', ' + CAST(btao.C_ORASZAM AS VARCHAR(3)) + IIF(tm.C_TIPUS = 1499, '(k)', '')
										FROM T_TANULOMULASZTAS_OSSZES tm
											INNER JOIN T_TANITASIORA_OSSZES btao ON btao.ID = tm.C_TANITASIORAKID
											INNER JOIN #students s ON s.ID = tm.C_ORATANULOIID
											INNER JOIN #osztalycsoportok ocs ON ocs.OsztalyCsoportId = btao.C_OSZTALYCSOPORTID
										WHERE 
											tao.C_DATUM = btao.C_DATUM
											AND m.C_ORATANULOIID = tm.C_ORATANULOIID
											AND tm.TOROLT = 'F' 
											AND tm.c_tanevId = @tanevId
											AND (@iskolaErdekuSzamit = 1 OR tm.C_IGAZOLASTIPUSA <> 1533)
											AND btao.TOROLT = 'F'
											AND tm.C_TIPUS IN (1499, 1500)
										ORDER BY btao.C_NAPTARINAPID, btao.C_ORASZAM
										FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,2,'') + '] ' + CAST(SUM(IIF(m.C_IGAZOLT = 'T', 1, 0)) AS varchar(2)) + '/' + CAST(SUM(IIF(m.C_IGAZOLT = 'F', 1, 0)) AS varchar(2)) AS Hianyzas
	INTO #hianyzasokTMP
    FROM T_TANITASIORA_OSSZES tao
      INNER JOIN T_TANULOMULASZTAS_OSSZES m ON m.C_TANITASIORAKID = tao.ID  
      INNER JOIN #osztalycsoportok cs ON cs.OsztalyCsoportId = tao.C_OSZTALYCSOPORTID
      INNER JOIN T_FELHASZNALO_OSSZES t ON t.ID = m.C_ORATANULOIID
	  INNER JOIN #students s ON s.ID = m.C_ORATANULOIID
    WHERE 
		m.TOROLT = 'F' 
		AND m.c_tanevId = @tanevId
		AND m.C_TIPUS IN (1499, 1500)
		AND tao.C_OSZTALYCSOPORTID IN (SELECT ID FROM #OsztalyVagyTanoraiCsoport)
		AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
		AND tao.TOROLT = 'F'
    GROUP BY tao.C_DATUM, C_ORATANULOIID, 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
		NapSorszama
		,Datum
		,HetSorszama
		,HetNapja
		,Oraszam
		,STUFF((SELECT DISTINCT 
					' | ' + CAST(bmto.TantargyNev AS VARCHAR(max)) 
				FROM #megtartottOrak bmto 
				WHERE 
					bmto.Datum = mto.Datum
					AND bmto.Oraszam = mto.Oraszam
				FOR XML PATH(''), TYPE)
			.value('.','NVARCHAR(MAX)'),1,3,'') Tantargy
	INTO #Orarend
	FROM #megtartottOrak mto

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

	DECLARE @tantargyak NVARCHAR(MAX)
	DECLARE @tantargyakNevvel NVARCHAR(MAX)
	SELECT	@tantargyakNevvel = ISNULL(@tantargyakNevvel + ', ', '') + '[' + CAST(t.TantargyId AS NVARCHAR(MAX)) + '] AS [' + t.TantargyNev + ']',
			@tantargyak = ISNULL(@tantargyak + ', ', '') + '[' + CAST(t.TantargyId AS NVARCHAR(MAX)) + ']'
	FROM (SELECT DISTINCT TantargyId, TantargyNev, 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
		, ' + @tantargyak +'
	INTO #naplo
	FROM #1nap1TantargyTobbOra
	PIVOT (MAX(Tema) FOR TantargyId IN (' + @tantargyak + ')) piv

	SELECT DISTINCT
		OsszesOra.Datum			C_NAPDATUMA
		,Hianyzas				Mulasztas
		,OsszesOra.Megjegyzes	Megjegyzés
		,OsszesOra.Oraszam		ORASZAM
		,Orarend.NapsorSzama	T1ID
		,Orarend.NapsorSzama	T2ID
		,Orarend.NapsorSzama	T3ID
		,Orarend.Tantargy		TANTARGY
		,OsszesOra.HetSorszama	C_HETSORSZAMA
		,OsszesOra.HetNapja		C_HETNAPJA
		,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.Datum, 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
				,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
		,FORMAT(OsszesOra.Datum, 'dddd', 'hu-hu')	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 c_napdatuma
			, napneve
			, c_megjegyzes
			, c_hetkezdonapja
			, c_hetutolsonapja
			, c_hetsorszama
			, orasorszam
			, napszam
			, STUFF((SELECT ' | ' + CAST(bszov.TANTARGY AS VARCHAR(max)) 
					 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,3,'') TANTARGY
			, STUFF((SELECT ' | ' + CAST(bszov.TANAR AS VARCHAR(max)) 
					 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,3,'') TANAR
			, STUFF((SELECT ' | ' + CAST(bszov.ORAANYAGA AS VARCHAR(max)) 
					 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,3,'') ORAANYAGA
			, STUFF((SELECT ' | ' + CAST(bszov.C_ORAEVESSORSZAM AS VARCHAR(max)) 
					 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,3,'') OraEvesSorszama
	FROM #szoveges szov
	ORDER BY C_NAPDATUMA, orasorszam

    /*Hiányzások*/
	    SELECT C_HETSORSZAMA, C_NYOMTATASINEV, 
      MAX([1]) AS [Hetfo], MAX([2]) AS [Kedd], MAX([3]) AS [Szerda], 
      MAX([4]) AS [Csutortok], MAX([5]) AS [Pentek], MAX([6]) AS [Szombat] 
    FROM (
      SELECT C_HETSORSZAMA, C_NYOMTATASINEV, [0], [1], [2], [3], [4], [5], [6]
      FROM (
       SELECT DISTINCT n.C_NAPTARINAPID, DATEPART(dw,n.C_DATUM) AS NAP, t.C_NYOMTATASINEV, nh.C_HETSORSZAMA,
        '[' + STUFF((
          SELECT  ', ' + CAST(o.C_ORASZAM AS VARCHAR(3)) + IIF(tm.C_TIPUS = 1499, '(k)','')
          FROM T_TANULOMULASZTAS_OSSZES tm
            INNER JOIN T_TANITASIORA_OSSZES o ON o.ID = tm.C_TANITASIORAKID
            INNER JOIN #osztalycsoportok cs ON cs.OsztalyCsoportId = o.C_OSZTALYCSOPORTID
			INNER JOIN #students s ON s.ID = tm.C_ORATANULOIID
          WHERE n.C_NAPTARINAPID = o.C_NAPTARINAPID
            AND m.C_ORATANULOIID = tm.C_ORATANULOIID
            AND tm.C_TANEVID = @tanevId
			AND tm.torolt='F' and tm.c_intezmenyId=@intezmenyId and o.c_tanevId=@tanevId
			AND o.TOROLT = 'F'
			AND tm.C_TIPUS IN (1499, 1500)
          ORDER BY o.C_NAPTARINAPID, o.C_ORASZAM
          FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,2,'') + '] ' + CAST(SUM(IIF(m.C_IGAZOLT = 'T', 1, 0)) AS varchar(2)) + '/' + CAST(SUM(IIF(m.C_IGAZOLT = 'F', 1, 0)) AS varchar(2)) AS hianyzas
        FROM T_TANITASIORA_OSSZES n
          INNER JOIN T_TANULOMULASZTAS_OSSZES m ON m.C_TANITASIORAKID = n.ID  and m.torolt='F' 
		  INNER JOIN #students s ON s.ID = m.C_ORATANULOIID
          INNER JOIN #osztalycsoportok cs ON cs.OsztalyCsoportId = n.C_OSZTALYCSOPORTID
          INNER JOIN T_FELHASZNALO_OSSZES t ON t.ID = m.C_ORATANULOIID
		  INNER JOIN T_NAPTARIHET_OSSZES nh ON n.C_DATUM BETWEEN nh.C_HETKEZDONAPJA AND nh.C_HETUTOLSONAPJA AND nh.C_TANEVID = @tanevId AND nh.TOROLT='F' 
        WHERE 
			n.C_TANEVID = @tanevId 
			AND m.C_TANEVID = @tanevId 
			AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
			and m.C_TIPUS IN (1499, 1500)
			and n.TOROLT = 'F'
        GROUP BY n.C_NAPTARINAPID, C_ORATANULOIID, C_NYOMTATASINEV, nh.C_HETSORSZAMA, n.C_DATUM) AS SUB
        PIVOT
        (
        MAX(HIANYZAS)
        FOR NAP IN ([0], [1], [2], [3], [4], [5], [6])
      ) AS PivotTable
    ) AS ASD
    GROUP BY C_HETSORSZAMA, C_NYOMTATASINEV
    ORDER BY C_HETSORSZAMA  
  END --SZÖVEGES OSZTÁLYNAPLÓ

  /*TANULÓ adatai*/
	SELECT DISTINCT 
		tanuloID
		, sorszam
		, torzslapSzam
		, oktAzon
		, tajSzam
		, anyjaNeve
		, szulHely
		, CONVERT(NVARCHAR(100),DATEPART(YEAR,szulIdo))+'. '+CONVERT(NVARCHAR(100)
		, datepart(month,szulIdo))+'. '+convert(nvarchar(100)
		, datepart(day,szulIdo))+'.' SzulIdo
		, gondviselok
		, IIF(socAdat = '', '', 
			 LEFT(socAdat, len(socAdat)- 1)) socAdat
		, kepzes
		, tanuloNeve
		, allampolgarsaga
		, diakIgazolvanySzam
		, kilepesDatum
		, beirasiNaploSorszam
  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,
    STUFF((
    SELECT  char(13) + char(10) + gv.C_NEV
      FROM T_GONDVISELO_OSSZES gv
      WHERE  gv.C_TANULOID = s.ID
        AND gv.TOROLT = 'F'
      FOR XML PATH(''), TYPE).value('.', 'nvarchar(4000)'),1,2,'') AS gondviselok,
    f.C_NYOMTATASINEV as tanuloNeve,
	d.C_NAME allampolgarsaga,
	t.C_DIAKIGAZOLVANYSZAM diakIgazolvanySzam,
	MAX(cs.C_KILEPESDATUM) kilepesDatum,
	t.C_BEIRASINAPLOSORSZAM	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
	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
  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.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 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 AND mentesseg.C_KEZDETE BETWEEN BelepesDatum AND KilepesDatum
				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
		, FORMAT(Datum, 'd', 'hu-hu') 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
		, FORMAT(Datum, 'd', 'hu-hu') 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 
	(
		 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
	)

  /* TANULO mulasztása */
DECLARE @Mulasztasok TABLE ( IgazoltE nvarchar(1), Tanulo int, Tipus int)

--Félév kezdete
	DECLARE @FelevVege DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES tr WHERE C_NAPTIPUSA = 1400 AND C_TANEVID=@tanevId AND TOROLT = 'F')

	SELECT 
		 DATEPART(MONTH,tao.C_DATUM)	Honap
		 ,tm.ID							Id
		 ,C_IGAZOLT						IgazoltE
		 ,tm.C_ORATANULOIID				TanuloId
		 ,C_IGAZOLASTIPUSA				IgazolasTipus
		 ,C_DATUM						Datum
		 ,C_TIPUS						Tipus
		 ,C_KESESPERCBEN				KesesPercben
	INTO #mulasztasTmp
	FROM T_TANULOMULASZTAS_OSSZES tm
		INNER JOIN T_TANITASIORA_OSSZES tao ON tao.ID = tm.C_TANITASIORAKID
		INNER JOIN #students tanulok ON tanulok.ID = tm.C_ORATANULOIID 
		INNER JOIN #OsztalyVagyTanoraiCsoport ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID
		INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = tao.C_OSZTALYCSOPORTID and tanulok.ID = tcs.C_TANULOID
	WHERE
		tm.TOROLT = 'F'
		AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA <> 1533 OR C_IGAZOLASTIPUSA IS NULL))
		AND tcs.C_BELEPESDATUM <= tao.C_DATUM 
		AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= tao.C_DATUM)

	INSERT INTO @Mulasztasok
	SELECT 'T',  ID, Tipus 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(100)) tipus,  
			isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.', 
			isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.',
			isnull(Felev,0) 'felev', [9]+[10]+[11]+[12]+[1]+[2]+[3]+[4]+[5]+[6] 'osszesen', 1 Rendez
	INTO #MulasztasVegleges
	FROM #students s
		LEFT JOIN (SELECT * FROM (SELECT Id, TanuloId, Honap FROM #mulasztasTmp WHERE Tipus = 1500) a PIVOT (COUNT(ID) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv )ni on ni.TanuloId=s.Id
		LEFT JOIN (SELECT COUNT(Id) Felev, TanuloId FROM #mulasztasTmp WHERE  Tipus = 1500 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id

	--igazolt
	INSERT INTO #MulasztasVegleges
	SELECT s.id, 'igazolt',  
			isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.', 
			isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.',
			isnull(Felev,0) 'felev', [9]+[10]+[11]+[12]+[1]+[2]+[3]+[4]+[5]+[6] 'osszesen', 2 Rendez
	FROM #students s
		LEFT JOIN (SELECT * FROM (SELECT Id, Honap, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (COUNT(ID) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv WHERE IgazoltE = 'T' AND Tipus = 1500 )ni on ni.TanuloId=s.Id
		LEFT JOIN (SELECT COUNT(Id) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'T' AND Tipus = 1500 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id

	--igazolatlan
	INSERT INTO #MulasztasVegleges
	SELECT s.id, 'igazolatlan',  
			isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.', 
			isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.',
			isnull(Felev,0) 'felev', [9]+[10]+[11]+[12]+[1]+[2]+[3]+[4]+[5]+[6] 'osszesen', 4999 Rendez		
	FROM #students s
		LEFT JOIN (SELECT * FROM (SELECT Id, Honap, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (COUNT(ID) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv WHERE IgazoltE = 'F' AND Tipus = 1500 )ni on ni.TanuloId=s.Id
		LEFT JOIN (SELECT COUNT(Id) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'F' AND Tipus = 1500 AND Datum <= @FelevVege GROUP BY TanuloId, IgazolasTipus) felev on felev.TanuloId=s.id

	--különböző típusok	é
	IF @isReszletesMulasztasok = 1
	BEGIN
	INSERT INTO #MulasztasVegleges
	SELECT m.Tanulo tanuloid, '-'+d.c_name tipus, 		 
			isnull(p.[9],0) '09.', isnull(p.[10],0) '10.', isnull(p.[11],0) '11.', isnull(p.[12],0) '12.', 
			isnull(p.[1],0) '01.', isnull(p.[2],0) '02.', isnull(p.[3],0) '03.', isnull(p.[4],0) '04.', isnull(p.[5],0) '05.', isnull(p.[6],0) '06.',
			isnull(Felev,0) 'felev', [9]+[10]+[11]+[12]+[1]+[2]+[3]+[4]+[5]+[6] 'osszesen', d.id Rendez
	FROM @Mulasztasok m
	LEFT JOIN (SELECT * FROM (SELECT TanuloId, Honap, Id, IgazolasTipus, IgazoltE FROM #mulasztasTmp WHERE Tipus = 1500) a PIVOT (COUNT(ID) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv
				)p ON p.TanuloId=m.Tanulo AND p.igazoltE = m.IgazoltE AND p.IgazolasTipus = m.Tipus
	LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.id = m.Tipus AND d.TOROLT = 'F' AND d.C_TANEVID = @tanevId
	LEFT JOIN (SELECT COUNT(Id) Felev, IgazoltE, TanuloId Tanulo, IgazolasTipus FROM #mulasztasTmp WHERE Datum <= @FelevVege AND Tipus = 1500 GROUP BY IgazoltE, TanuloId, IgazolasTipus
				)felev ON felev.tanulo=m.Tanulo AND felev.igazoltE=m.IgazoltE AND felev.IgazolasTipus=m.Tipus
	END

	--KÉSÉS
	INSERT INTO #MulasztasVegleges
	SELECT s.ID, 'késés (p)',  
			isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.', 
			isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.',
			isnull(Felev,0) 'felev', 			
			isnull(ni.[9],0)+isnull(ni.[10],0)+isnull(ni.[11],0)+isnull(ni.[12],0)+ isnull(ni.[1],0)+
			isnull(ni.[2],0)+isnull(ni.[3],0)+isnull(ni.[4],0)+isnull(ni.[5],0)+isnull(ni.[6],0)			
			'osszesen', 5000 Rendez
	FROM #students s
		LEFT JOIN (SELECT *  FROM (SELECT KesesPercben, Honap, TanuloId FROM #mulasztasTmp WHERE Tipus = 1499) a PIVOT (SUM(KesesPercben) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv)ni on ni.TanuloId=s.Id
		LEFT JOIN (SELECT SUM(KesesPercben) Felev, TanuloId FROM #mulasztasTmp WHERE Tipus = 1499 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id

	--igazolt
	INSERT INTO #MulasztasVegleges
	select s.id, '* igazolt (p)',  
			isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.', 
			isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.',
			isnull(Felev,0) 'felev', 
			isnull(ni.[9],0)+isnull(ni.[10],0)+isnull(ni.[11],0)+isnull(ni.[12],0)+ isnull(ni.[1],0)+
			isnull(ni.[2],0)+isnull(ni.[3],0)+isnull(ni.[4],0)+isnull(ni.[5],0)+isnull(ni.[6],0)'osszesen', 5001 Rendez
	FROM #students s
		LEFT JOIN (SELECT *  FROM (SELECT KesesPercben, Honap, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (SUM(KesesPercben) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv WHERE IgazoltE = 'T' AND Tipus = 1499)ni on ni.TanuloId=s.Id
		LEFT JOIN (SELECT SUM(KesesPercben) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'T' AND Tipus = 1499 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id

	--igazolatlan
	INSERT INTO #MulasztasVegleges
	SELECT s.id, '* igazolatlan (p)',  
			isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.', 
			isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.',
			isnull(Felev,0) 'felev', 
			isnull(ni.[9],0)+isnull(ni.[10],0)+isnull(ni.[11],0)+isnull(ni.[12],0)+ isnull(ni.[1],0)+
			isnull(ni.[2],0)+isnull(ni.[3],0)+isnull(ni.[4],0)+isnull(ni.[5],0)+isnull(ni.[6],0) 'osszesen', 5002 Rendez
	from #students s
		LEFT JOIN (SELECT *  FROM (SELECT KesesPercben, Honap, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (SUM(KesesPercben) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv WHERE IgazoltE = 'F' AND Tipus = 1499)ni on ni.TanuloId=s.Id
		LEFT JOIN (SELECT SUM(KesesPercben) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'F' AND Tipus = 1499 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id

	SELECT Mulasztas.tanuloid, Mulasztas.tipus, Mulasztas.[09.], Mulasztas.[10.], Mulasztas.[11.], Mulasztas.[12.],
			Mulasztas.[01.], Mulasztas.[02.], Mulasztas.[03.], Mulasztas.[04.], Mulasztas.[05.], Mulasztas.[06.],
			mulasztas.felev felev, ISNULL(Mulasztas.osszesen,0) Osszesen, mulasztas.Rendez 
	FROM #MulasztasVegleges Mulasztas
	ORDER BY Rendez

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

	SELECT DISTINCT
		s.ID
		,g.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
		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*/
		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
			,Magatartas	Ertekeles
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			Magatartas IS NOT NULL
			AND Tipusa = 1518

		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
			,Szorgalom 
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			Szorgalom IS NOT NULL
			AND Tipusa = 1518

		UNION ALL

		SELECT 
			'Szorgalom'
			,15  Honap
			,TanuloId
			,Szorgalom 
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			Szorgalom IS NOT NULL
			AND Tipusa = 1519

		UNION ALL

		SELECT 
			'Magatartás'
			,15  Honap
			,TanuloId
			,Magatartas 
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			Magatartas IS NOT NULL
			AND Tipusa = 1519

		UNION ALL

		SELECT 
			'Szorgalom'
			,16  Honap
			,TanuloId
			,Szorgalom 
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			Szorgalom IS NOT NULL
			AND Tipusa = 1520

		UNION ALL

		SELECT 
			'Magatartás'
			,16  Honap
			,TanuloId
			,Magatartas 
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			Magatartas IS NOT NULL
			AND Tipusa = 1520

		UNION ALL

		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
			,CONVERT(NVARCHAR(MAX),Osztalyzat)
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			Magatartas IS NULL
			AND TantargyId IS NULL
			AND Tipusa = 1518

		UNION ALL

		SELECT 
			'Szorgalom' Tipus
			,IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum))  Honap
			,TanuloId
			,CONVERT(NVARCHAR(MAX),Osztalyzat)
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			Szorgalom IS NULL
			AND TantargyId IS NULL
			AND Tipusa = 1518

		UNION ALL

		SELECT 
			'Magatartás' Tipus
			,15  Honap
			,TanuloId
			,CONVERT(NVARCHAR(MAX),Osztalyzat)
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			Magatartas IS NULL
			AND TantargyId IS NULL
			AND Tipusa = 1519

		UNION ALL

		SELECT 
			'Szorgalom' Tipus
			,15  Honap
			,TanuloId
			,CONVERT(NVARCHAR(MAX),Osztalyzat)
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			Szorgalom IS NULL
			AND TantargyId IS NULL
			AND Tipusa = 1519

		UNION ALL

		SELECT 
			'Magatartás' Tipus
			,16  Honap
			,TanuloId
			,CONVERT(NVARCHAR(MAX),Osztalyzat)
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			Magatartas IS NULL
			AND TantargyId IS NULL
			AND Tipusa = 1520

		UNION ALL

		SELECT 
			'Szorgalom' Tipus
			,16  Honap
			,TanuloId
			,CONVERT(NVARCHAR(MAX),Osztalyzat)
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			Szorgalom IS NULL
			AND TantargyId IS NULL
			AND Tipusa = 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),Osztalyzat), Szazalek) Ertekeles
			,TargyKategoriaId Rendez
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			TantargyId IS NOT NULL
			AND SzovegesErtekeles IS NULL
			AND Tipusa = 1518

		UNION ALL

		SELECT 
			15  Honap
			,TanuloId
			,TantargyId
			,ISNULL(CONVERT(NVARCHAR(MAX),Osztalyzat), Szazalek) Ertekeles
			,TargyKategoriaId
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			TantargyId IS NOT NULL
			AND SzovegesErtekeles IS NULL
			AND Tipusa = 1519

		UNION ALL

		SELECT 
			16  Honap
			,TanuloId
			,TantargyId
			,ISNULL(CONVERT(NVARCHAR(MAX),Osztalyzat), Szazalek) Ertekeles
			,TargyKategoriaId
		FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
		WHERE
			TantargyId IS NOT NULL
			AND SzovegesErtekeles IS NULL
			AND Tipusa = 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'

	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
	LEFT JOIN (SELECT 
					C_TANULOID tanuloId
					,'['+CONVERT(NVARCHAR(MAX),DATEPART(MONTH, C_ERTEKELESDATUM))+'. hónap]' Honap
					,IIF(t.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN + ' (' + t.C_NEV + ')', t.C_NEV) Tantargy
					,C_ERTEKELESSZOVEG		Ertekeles 
					,C_NAME					Tipus 
					,CASE 
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 1 THEN 5
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 2 THEN 6
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 3 THEN 7
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 4 THEN 8
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 5 THEN 9
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 6 THEN 10
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 7 THEN 11
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 8 THEN 12
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 9 THEN  1
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 10 THEN 2
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 11 THEN 3
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 12 THEN 4
				END AS RendezHonap
				FROM T_TANULOERTEKELES_OSSZES te 
					INNER JOIN T_TANTARGY_OSSZES t ON t.ID=te.C_TANTARGYID
					INNER JOIN #students s ON s.ID = C_TANULOID AND te.C_ERTEKELESDATUM BETWEEN s.BelepesDatum AND s.KilepesDatum
					INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = te.C_ERTEKELESTIPUSA AND d.C_TANEVID = @tanevId AND d.TOROLT = 'F'
				WHERE 
					C_ERTEKELESSZOVEG IS NOT NULL 
					AND te.C_TANEVID=@tanevId 
					AND te.TOROLT='F'
			) szoveges on szoveges.TANULOID=s.Id
	UNION
	SELECT 
		s.id tanuloId
		,szoveges.Honap
		,szoveges.Tantargy
		,szoveges.Ertekeles 
		,szoveges.Tipus
		,szoveges.RendezHonap
	FROM #students s
	LEFT JOIN (SELECT 
					C_TANULOID tanuloId
					,'['+CONVERT(NVARCHAR(MAX),DATEPART(MONTH, C_ERTEKELESDATUM))+'. hónap]' Honap
					,'Magatartás / szorgalom' Tantargy
					,C_ERTEKELESSZOVEG		Ertekeles 
					,C_NAME					Tipus 
					,CASE 
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 1 THEN 5
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 2 THEN 6
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 3 THEN 7
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 4 THEN 8
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 5 THEN 9
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 6 THEN 10
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 7 THEN 11
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 8 THEN 12
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 9 THEN  1
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 10 THEN 2
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 11 THEN 3
						WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 12 THEN 4
				END AS RendezHonap
				FROM T_TANULOERTEKELES_OSSZES te 
					INNER JOIN T_OSZTALYFONOKIERTEKELES_OSSZES oe ON oe.Id = te.Id
					INNER JOIN #students s ON s.ID = C_TANULOID AND te.C_ERTEKELESDATUM BETWEEN s.BelepesDatum AND s.KilepesDatum
					INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = te.C_ERTEKELESTIPUSA AND d.C_TANEVID = @tanevId AND d.TOROLT = 'F'
				WHERE 
					C_ERTEKELESSZOVEG IS NOT NULL 
					AND te.C_TANEVID=@tanevId 
					AND te.TOROLT='F'
			) szoveges on szoveges.TANULOID=s.Id
	)a
	ORDER BY RendezHonap, Tantargy

--Közösségi szolgálat
SELECT 
	TanuloId
	,FORMAT(Datum, 'd', 'hu-hu') Datum
	,ISNULL(' - ' + Megjegyzes, '') Megjegyzes
	,Oraszam
	,TeljesitesHelye
	,FeljegyzoNeve
	,Tipus 
FROM fnGetDokumentumKozossegiSzolgalatOsztalyonkent(@tanevId, @osztalyId)

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

END

GO