﻿SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

DROP PROCEDURE IF EXISTS uspGetOsztalyNaplo
GO

CREATE PROCEDURE uspGetOsztalyNaplo
	@intezmenyId				INT,
	@tanevId					INT,
	@osztalyId					INT,
	@isSzovegesNaplo			BIT = 0,
	@iskolaErdekuSzamit			BIT,
	@fuggolegesTantargyak		BIT,
	@aktivTanevId				INT,
	@isReszletesMulasztasok		BIT,
	@isEgyebFoglalkozasok		BIT,
	@minTanoraSzam				INT,
	@isEllenorzo				BIT = 0,
	@orarendErvenyessegiDatum	DATE,
	@tanuloId					INT = NULL
AS
BEGIN
  SET NOCOUNT ON;

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

	DECLARE @isVegzos CHAR(1) = (SELECT TOP 1  C_VEGZOSEVFOLYAM FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyId)
	DECLARE @VegzosUtolsoNap DATE = (SELECT dbo.fnGetOsztalyVegzosTanitasiNap(@osztalyId, @intezmenyId, @tanevId))

	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 @ElsoNap DATE = (SELECT TOP 1 C_KEZDONAP FROM T_TANEV_OSSZES WHERE ID = @tanevId AND TOROLT = 'F')
	DECLARE @UtolsoNap DATE = IIF(@isVegzos = 'T', COALESCE(@VegzosUtolsoNap, @UtolsoNapTanevRendje, @UtolsoNapTanev), ISNULL(@UtolsoNapTanevRendje, @UtolsoNapTanev))
	DECLARE @VizsgaltNap DATE

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

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

	CREATE TABLE #NapSorszam (Datum DATE, Sorszam NVARCHAR(4))
	INSERT INTO #NapSorszam
	SELECT
		Sorszam.Datum		Datum
		,CAST(DENSE_RANK() OVER(ORDER BY Sorszam.Datum) AS NVARCHAR(4))
	FROM #NapSorszamTemp Sorszam
		INNER JOIN fnGetDokumentumOsztalyMegtartottOrakSzama(@tanevId, @osztalyId) OrakSzama ON OrakSzama.Datum = Sorszam.Datum
	WHERE
		Sorszam.Datum <= @UtolsoNap
		AND (@minTanoraSzam = 0 OR OrakSzama.OrakSzama IS NOT NULL)
		AND (@minTanoraSzam = 0 OR OrakSzama.OrakSzama >= @minTanoraSzam)

	SELECT
		 TanuloId						Id
		,tanugyiAdatok.C_NAPLOSORSZAM	NaploSorszam
		,tanugyiAdatok.C_TORZSLAPSZAM	TorzslapSzam
		,TanuloCsoport.Id				TanuloCsoportId
		,OsztalyTanuloi.BelepesDatum	BelepesDatum
		,OsztalyTanuloi.KilepesDatum	KilepesDatum
		--ÁGAZAT ETC....
	INTO #studentsWithTanuloCsoport
	FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') OsztalyTanuloi
		INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.Id = OsztalyTanuloi.TanuloCsoportId
		INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tanugyiAdatok ON tanugyiAdatok.C_TANULOCSOPORTID = tanuloCsoport.ID AND tanugyiAdatok.TOROLT = 'F'
	WHERE (@tanuloId IS NULL OR TanuloId = @tanuloId)

	SELECT DISTINCT
		 Id
	INTO #students
	FROM #studentsWithTanuloCsoport

	SELECT
		 DATEPART(MONTH, Datum)				Honap
		 ,TantargyId						Id
		 ,Igazolt							IgazoltE
		 ,TanuloId							TanuloId
		 ,TanuloCsoportId					TanuloCsoportId
		 ,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, DEFAULT) TanulokMulasztasai
		INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = TanulokMulasztasai.TantargyId
	WHERE (@tanuloId IS NULL OR TanuloId = @tanuloId)

	SELECT
		CAST(SUM(IIF(IgazoltE = 'T', 1, 0)) AS VARCHAR(5)) + '/'
		+ CAST(SUM(IIF(IgazoltE = 'F', 1, 0)) AS VARCHAR(5)) HetiMulasztas
		,HetSorszama
		,TanuloId
		,TanuloCsoportId
	INTO #HetiMulasztasok
	FROM #mulasztasTmp
	GROUP BY HetSorszama, TanuloId, TanuloCsoportId

	CREATE CLUSTERED INDEX ci1 on #mulasztasTmp (tanuloid, datum)
	CREATE CLUSTERED INDEX ci5 on #HetiMulasztasok (HetSorszama)

	CREATE TABLE #retTanuloErtekeles
	(
		[ErtekelesId]                   INT
		PRIMARY KEY NOT NULL,
		[Datum]                         DATE,
		[TipusId]                       INT,
		[ErtekelesSzoveg]               NVARCHAR(MAX),
		[ErtekelesSzovegRovidNev]       NVARCHAR(3),
		[ErtekelesOsztalyzatId]         INT,
		[ErtekelesOsztalyzatValue]      INT,
		[ErtekelesOsztalyzatNev]        NVARCHAR(MAX),
		[ErtekelesSzazalek]             NVARCHAR(MAX),
		[MagatartasOsztalyzatId]        INT,
		[MagatartasOsztalyzatValue]     INT,
		[MagatartasOsztalyzatNev]       NVARCHAR(MAX),
		[MagatartasSzoveg]              NVARCHAR(MAX),
		[MagatartasSzovegRovidNev]      NVARCHAR(3),
		[MagatartasErtekId]             INT,
		[MagatartasErtek]               NVARCHAR(MAX),
		[MagatartasErtekOsztalyzatkent] INT,
		[SzorgalomOsztalyzatId]         INT,
		[SzorgalomOsztalyzatValue]      INT,
		[SzorgalomOsztalyzatNev]        NVARCHAR(MAX),
		[SzorgalomSzoveg]               NVARCHAR(MAX),
		[SzorgalomSzovegRovidNev]       NVARCHAR(3),
		[SzorgalomErtekId]              INT,
		[SzorgalomErtek]                NVARCHAR(MAX),
		[SzorgalomErtekOsztalyzatkent]  INT,
		[TanuloId]                      INT,
		TanuloCsoportId					int,
		[OsztalyCsoportId]              INT,
		[TantargyId]                    INT,
		[TantargyNevZarojellel]         NVARCHAR(MAX),
		[TantargyNevNyomtatvanyban]     NVARCHAR(MAX),
		[TantargyNev]                   NVARCHAR(MAX),
		[TargyKategoriaId]              INT,
		[FotargyE]                      CHAR(1),
		[Altantargy]                    CHAR(1),
		[FotargyId]                     INT,
		[ErtekelesTema]                 NVARCHAR(MAX),
		[ErtekeloId]                    INT,
		[ErtekelesModjaId]              INT,
		[IsMagatartasSzorgalom]         CHAR(1),
		[Jeloles]                       NVARCHAR(MAX),
		[JelolesAndErtekelesTema]       NVARCHAR(MAX)
	)

	SELECT
     Datum
    ,TipusId
    ,TanuloCsoportId
    ,ErtekelesSzoveg
	,ErtekelesSzovegFormazott
    ,ErtekelesSzovegRovidNev
    ,ErtekelesOsztalyzatId
    ,ErtekelesOsztalyzatValue
    ,ErtekelesOsztalyzatNev
    ,ErtekelesSzazalek
    ,MagatartasOsztalyzatId
    ,MagatartasOsztalyzatNev
    ,MagatartasSzoveg
	,MagatartasSzovegFormazott
    ,MagatartasErtekId
    ,MagatartasErtek
    ,SzorgalomOsztalyzatId
    ,SzorgalomOsztalyzatNev
    ,SzorgalomSzoveg
	,SzorgalomSzovegFormazott
    ,SzorgalomErtekId
    ,SzorgalomErtek
    ,TanuloId
    ,OsztalyCsoportId
    ,TantargyId
    ,TantargyNevZarojellel
    ,TantargyNev
    ,TantargyNevNyomtatvanyban
    ,TargyKategoriaId
    ,FotargyE
    ,FotargyId
    ,Altantargy
    ,ErtekelesTema
    ,Jeloles
    ,JelolesAndErtekelesTema
    ,isMagatartasSzorgalom
    ,RENDEZ1
    ,RENDEZ2
    ,RENDEZ3
    ,RENDEZ4
    ,RENDEZ5
	INTO #ErtekelesekTemp
	FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevId, @osztalyId, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT)
	WHERE (@tanuloId IS NULL OR TanuloId = @tanuloId)

	CREATE CLUSTERED INDEX ci111 on #ErtekelesekTemp (datum, tanulocsoportid)

   -- Naplo fooldal
  CREATE TABLE #osztalycsoportok (OsztalyCsoportId INT PRIMARY KEY, Kezdete DATE, Vege DATE)
  INSERT INTO #osztalycsoportok (OsztalyCsoportId, Kezdete, Vege)
  SELECT
		 OsztalyCsoportok.Id
		,OsztalyCsoportok.Kezdete
		,OsztalyCsoportok.Vege
  FROM fnGetKapcsolodoOsztalyCsoportokByDateRange (@osztalyId, @ElsoNap, @UtolsoNap, @intezmenyId, @tanevId) OsztalyCsoportok
		INNER JOIN fnGetDokumentumOsztalyVagyTanoraiCsoport(@tanevId) TanoraiCeluOsztalyCsoportok on TanoraiCeluOsztalyCsoportok.ID = OsztalyCsoportok.Id

  	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 = @UtolsoNap,
  		@intezmenyId = @intezmenyId,
  		@tanevId = @tanevId

  	FETCH NEXT FROM csoport_cursor INTO @ocsId
  END

  CLOSE csoport_cursor
  DEALLOCATE csoport_cursor

	INSERT INTO #OraSorszam
	SELECT DISTINCT TanitasioraId, OraSorszam FROM #OraSorszamTemp

  SELECT
		 tao.Id						TanitasioraId
		,tao.C_DATUM				Datum
		,IIF(tao.C_ORASZAM IS NULL, dbo.fnGetDokumentumOrakezdetToOraszam(CONVERT(VARCHAR(5), tao.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) +
					REPLACE(REPLACE(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 TanitasioraId, OraSorszam 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'
		INNER JOIN #osztalycsoportok OsztalyCsoportok ON OsztalyCsoportok.OsztalyCsoportId = tao.C_OSZTALYCSOPORTID AND tao.C_DATUM BETWEEN OsztalyCsoportok.Kezdete AND OsztalyCsoportok.Vege
	WHERE
		tao.TOROLT = 'F'

  CREATE CLUSTERED INDEX ciMegtartottOrak on #megtartottOrak (Datum)

  DECLARE @MaxOraszam INT = (SELECT ISNULL(MAX(Oraszam), 4) FROM #megtartottOrak)
  DECLARE @MinOraszam INT = (SELECT ISNULL(MIN(Oraszam), 1) FROM #megtartottOrak)

  DECLARE @TanulokSzama INT = (SELECT COUNT(DISTINCT TanuloId) FROM #ErtekelesekTemp WHERE TipusId = 1520)
  DECLARE @TanitasiNapokSzama INT = (SELECT MAX(CAST(Sorszam AS INT)) FROM #NapSorszam)

  SELECT DISTINCT
	@osztalyId					OsztalyId
	,ocs.C_NEV					OsztalyNev
	,o.C_OSZTALYNAPLOLEIRASA	OsztalyMegjegyzes
	,o.C_OSZTALYFONOKID			PartnerID
	,ofo.C_NYOMTATASINEV		Osztalyfonok
	,o.C_OFOHELYETTESID			OsztalyfonokHelyettesId
	,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
	,@TanulokSzama				TanulokSzama
	,@TanitasiNapokSzama		TanitasiNapokSzama
	,@MaxOraszam				MaxOraszam
	,@MinOraszam				MinOraszam
	,@tanevId					TanevId
	,ocs.C_EVFOLYAMTIPUSA		EvfolyamTipusa
	,ocs.C_FELADATELLATASIHELYID FeladatEllatasiHelyId
	,o.C_TANTERVID			TantervId
	,ocs.C_KEPZESIFORMA		KepzesiForma
	,o.C_AGAZAT				Agazat
	,o.C_SZAKMACSOPORT		SzakmaCsoport
	,o.C_SZAKKEPESITES		Szakkepesites
	,o.C_RESZSZAKKEPESITES	Reszszakkepesites
	,ocs.C_KERESZTFELEVES	OJCSJKeresztfeleves
	,ocs.C_VEGZOSEVFOLYAM	CSJVegzosEvfolyamu
	,o.C_TECHNIKAIOSZTALY	OJTechnikaiOsztaly
	,o.C_NEMZETISEGI		OJNemzetisegi
	,o.C_KETTANNYELVU		OJKettannyelvu
	,o.C_NYELVIELOKESZITO	OJNyelviElokeszito
	,ocs.C_ISGYOGYPEDAGOGIAILOGOPEDIAI			OJIsGyogypedagogiaiLogopediai
	,o.C_SPORT				OJSportOsztaly
	,o.C_AJPROGRAM			OJAranyJanosProgram
  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 DISTINCT
      targy.C_NEV             AS  TargyNev
      ,IIF(munkaugyiAdat.C_BETOLTETLENALLASHELY = 'T', '', tanar.C_NYOMTATASINEV)  AS  TanarNev
      ,targykategoria.C_ORDER
      ,tanar.ID               AS  TanarId
      ,tanar.C_OKTATASIAZONOSITO  AS TanarOktAzon
    FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevID, @osztalyId, 'T') AS tanulok
        INNER JOIN T_TANULOCSOPORT_OSSZES AS tcs ON tcs.C_TANULOID = tanulok.TanuloId
            AND tcs.C_BELEPESDATUM >= tanulok.BelepesDatum AND (tanulok.KilepesDatum is NULL or tcs.C_BELEPESDATUM < tanulok.KilepesDatum)
            AND tcs.TOROLT = 'F'
        INNER JOIN T_OSZTALYCSOPORT_OSSZES AS ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
        INNER JOIN T_FOGLALKOZAS_OSSZES AS fogl ON fogl.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID AND fogl.TOROLT = 'F'
        INNER JOIN T_FELHASZNALO_OSSZES AS tanar ON fogl.C_TANARID = tanar.ID AND tanar.TOROLT='F'
        INNER JOIN T_MUNKAUGYIADATOK_OSSZES AS munkaugyiAdat ON munkaugyiAdat.C_ALKALMAZOTTID = tanar.ID AND munkaugyiAdat.TOROLT = 'F'
        INNER JOIN T_TANTARGY_OSSZES AS targy ON targy.ID = fogl.C_TANTARGYID AND targy.TOROLT = 'F'
  	    INNER JOIN T_TARGYKATEGORIATIPUS_OSSZES ON T_TARGYKATEGORIATIPUS_OSSZES.ID = targy.C_TARGYKATEGORIA
        INNER JOIN T_DICTIONARYITEMBASE_OSSZES AS targykategoria ON targykategoria.ID = T_TARGYKATEGORIATIPUS_OSSZES.ID AND targykategoria.TOROLT = 'F' AND targykategoria.C_TANEVID = @tanevID
    WHERE
		  fogl.C_OSZTALYCSOPORTID IN (SELECT Id FROM fnGetDokumentumOsztalyVagyTanoraiCsoport(@tanevId))
    ORDER BY
		  targykategoria.C_ORDER,
		targy.C_NEV,
		IIF(munkaugyiAdat.C_BETOLTETLENALLASHELY = 'T', '', 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 ISNULL(C_KILEPESDATUM, @UtolsoNap)
		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, @orarendErvenyessegiDatum

  -- 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))

  CREATE TABLE #HetAdatok (C_HETSORSZAMA INT, Hetesek NVARCHAR(MAX), KezdoDatum DATE, VegeDatum DATE)
  INSERT INTO #HetAdatok
  SELECT 
     C_HETSORSZAMA
    ,STUFF((SELECT ', ' + fh.C_NYOMTATASINEV 
              FROM T_HETES_OSSZES h
                INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = h.C_TANULOID
                  AND fh.TOROLT = 'F'
                  AND fh.C_TANEVID = h.C_TANEVID
              WHERE h.C_HETSORSZAMA = T_NAPTARINAP_OSSZES.C_HETSORSZAMA
                AND h.C_TANEVID = @tanevId
                AND h.C_OSZTALYCSOPORTID = @osztalyId
                AND h.TOROLT = 'F'
              ORDER BY fh.C_NYOMTATASINEV
              FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,2,'') AS Hetesek
    ,MIN(C_NAPDATUMA) AS KezdoDatum
    ,MAX(C_NAPDATUMA) AS VegeDatum
  FROM T_NAPTARINAP_OSSZES
  WHERE C_TANEVID = @tanevId
  AND C_NAPDATUMA BETWEEN @ElsoNap AND @UtolsoNap
  AND C_ALAPHETNAPJA  <= 1412 
  GROUP BY C_HETSORSZAMA

  SELECT ha.C_HETSORSZAMA
        ,IIF(ha.Hetesek IS NOT NULL, 'Hetesek: ' + ha.Hetesek,'') + '   ' as Hetesek 
        ,dbo.fnGetDokumentumDatumFormatum(ha.KezdoDatum)
        ,dbo.fnGetDokumentumDatumFormatum(ha.VegeDatum) FROM #HetAdatok ha

  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
		,ha.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(tr.C_HETNAPJA <> nn.C_ALAPHETNAPJA, ' (' + Hetnapja.C_NAME +')', '')
										Megjegyzes
		,ISNULL(Sorszam,'-')			Sorszam
	FROM T_NAPTARINAP_OSSZES nn
        INNER JOIN #HetAdatok ha ON nn.C_NAPDATUMA BETWEEN ha.KezdoDatum AND ha.VegeDatum
		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(trNaptipus.C_NAME + ', ', '') + 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
						LEFT JOIN T_DICTIONARYITEMBASE_OSSZES trNaptipus ON trNaptipus.ID = tr.C_NAPTIPUSA AND trNaptipus.C_TANEVID = @tanevId AND tr.C_NAPTIPUSA <> 1385
					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 <= @UtolsoNap
		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
					AND MulasztasokBelso.TanuloCsoportId = MulasztasokKulso.TanuloCsoportId
				  ORDER BY Datum, Oraszam
				  FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(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, TanuloCsoportId, Felhasznalo.C_NYOMTATASINEV

	CREATE CLUSTERED INDEX ci2 on #hianyzasokTMP (datum)

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

	SELECT DISTINCT
		Datum
		,HetSorszama
		,HetNapja
		,Oraszam
		,STUFF((SELECT
					CAST(bmto.TantargyNev AS NVARCHAR(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 NVARCHAR(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 + ', ', '') + '[' +  IIF(LEN(TantargyPedagogussal) > 128, SUBSTRING(TantargyPedagogussal, 1, 120) + '...', 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.Oraszam		ORASZAM
		,NULL					T1ID
		,NULL					T2ID
		,NULL					T3ID
		,Orarend.Tantargy		TANTARGY
		,OsszesOra.HetSorszama	C_HETSORSZAMA
		,OsszesOra.HetNapja		C_HETNAPJA_DNAME
		,OsszesOra.Sorszam		NapSorszama
		,OsszesOra.Megjegyzes	Megjegyzés
		,' + @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 OsszesOra.Oraszam = @MinOraszam
		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, N'@MinOraszam int', @MinOraszam
		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'

    CREATE CLUSTERED INDEX ci4 ON [#szoveges] ([C_NAPDATUMA])
	SELECT DISTINCT
			 dbo.fnGetDokumentumDatumFormatum(C_NAPDATUMA) C_NAPDATUMA
			,Napneve
			,C_MEGJEGYZES
			,C_HETKEZDONAPJA
			,C_HETUTOLSONAPJA
			,C_HETSORSZAMA
			,OraSorszam
			,Napszam
			,(SELECT CAST(bszov.TANTARGY AS NVARCHAR(MAX)) + NCHAR(10)
					 FROM #szoveges bszov
					 WHERE
						 bszov.C_NAPDATUMA=szov.C_NAPDATUMA
						 and bszov.ORASORSZAM=szov.ORASORSZAM
						 and bszov.napszam=szov.napszam
					 FOR XML PATH('')) TANTARGY
			,(SELECT CAST(bszov.TANAR AS NVARCHAR(MAX)) + NCHAR(10)
					 FROM #szoveges bszov
					 WHERE
						 bszov.C_NAPDATUMA=szov.C_NAPDATUMA
						 and bszov.ORASORSZAM=szov.ORASORSZAM
						 and bszov.napszam=szov.napszam
					 FOR XML PATH('')) TANAR
			,(SELECT CAST(bszov.ORAANYAGA AS NVARCHAR(MAX)) + NCHAR(10)
					 FROM #szoveges bszov
					 WHERE
						 bszov.C_NAPDATUMA=szov.C_NAPDATUMA
						 and bszov.ORASORSZAM=szov.ORASORSZAM
						 and bszov.napszam=szov.napszam
					 FOR XML PATH('')) ORAANYAGA
			,(SELECT CAST(bszov.C_ORAEVESSORSZAM AS NVARCHAR(MAX)) + NCHAR(10)
					 FROM #szoveges bszov
					 WHERE
						 bszov.C_NAPDATUMA=szov.C_NAPDATUMA
						 and bszov.ORASORSZAM=szov.ORASORSZAM
						 and bszov.napszam=szov.napszam
					 FOR XML PATH('')) 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
		,TanuloCsoportId
		,[1408] Hetfo
		,[1409] Kedd
		,[1410] Szerda
		,[1411] Csutortok
		,[1412] Pentek
		,[1413] Szombat
	FROM
		(
		SELECT DISTINCT
			 HetSorszama
			,C_NYOMTATASINEV TanuloNeve
			,TanuloId
			,TanuloCsoportId
			,Datum
			,C_ALAPHETNAPJA		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
					AND MulasztasokBelso.TanuloCsoportId = MulasztasokKulso.TanuloCsoportId
				  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, TanuloCsoportId, Datum, C_ALAPHETNAPJA, 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
				AND HetiMulasztasok.TanuloCsoportId = NapiMulasztas.TanuloCsoportId
	GROUP BY NapiMulasztas.HetSorszama,TanuloNeve,NapiMulasztas.TanuloId, HetiMulasztas

  END --SZÖVEGES OSZTÁLYNAPLÓ

  /*TANULÓ adatai*/
	SELECT
		 TanuloId
		,TanuloCsoportId
		,Sorszam
		,TorzslapSzam
		,OktAzon
		,TajSzam
		,AnyjaNeve
		,SzulHely
		,SzulIdo
		,SocAdat
		,Kepzes
		,TanuloNeve
		,Allampolgarsaga
		,DiakIgazolvanySzam
		,KilepesDatum
		,BeirasiNaploSorszam
		,AktualisOsztaly AS OsztalyNev
    ,dAgazat.C_NAME  AS Agazat
    ,dSzakmacsop.C_NAME AS Szakmacsoport
    ,dSzakkep.C_NAME AS Szakkepesites
	INTO #TanuloAlapAdatok
	FROM fnGetDokumentumTanulokAdatai(@tanevId, @osztalyId)
    INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = TanuloCsoportId AND tcs.TOROLT = 'F'
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dSzakmacsop ON dSzakmacsop.ID = tcs.C_SZAKMACSOPORT AND dSzakmacsop.TOROLT = 'F' AND dSzakmacsop.C_TANEVID = tcs.C_TANEVID AND dSzakmacsop.ID != 6084 /* Na */
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dAgazat ON dAgazat.ID = tcs.C_AGAZAT AND dAgazat.TOROLT = 'F' AND dAgazat.C_TANEVID = tcs.C_TANEVID AND dAgazat.ID != 5484 /* Na */
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dSzakkep ON dSzakkep.ID = tcs.C_SZAKKEPESITES AND dSzakkep.TOROLT = 'F' AND dSzakkep.C_TANEVID = tcs.C_TANEVID AND dSzakkep.ID != 5527 /* Na */
	WHERE (@tanuloId IS NULL OR TanuloId = @tanuloId)

	SELECT
  		TanuloId
		,TanuloCsoportId
		,Sorszam
		,TorzslapSzam
		,OktAzon
		,TajSzam
		,AnyjaNeve
		,SzulHely
		,SzulIdo
		,SocAdat
		,Kepzes
		,TanuloNeve
		,Allampolgarsaga
		,DiakIgazolvanySzam
		,KilepesDatum
		,BeirasiNaploSorszam
		,OsztalyNev
    ,Agazat
    ,Szakmacsoport
    ,Szakkepesites
	FROM #TanuloAlapAdatok
	ORDER BY Sorszam

  /*TANULÓ elérhetoségei */
  	CREATE TABLE #Gondviselok (TanuloId INT, GondviseloId INT PRIMARY KEY CLUSTERED)

	INSERT INTO #Gondviselok
	SELECT
		 TanuloId
		,GondviseloId
	FROM fnGetDokumentumGondviselok (@osztalyId, @tanevId, 'F', 'T')
	WHERE (@tanuloId IS NULL OR TanuloId = @tanuloId)


	CREATE TABLE #TanuloCimTable (FelhasznaloId INT, Cim NVARCHAR(MAX), Cimtipusa NVARCHAR(MAX))
	INSERT INTO #TanuloCimTable
	SELECT DISTINCT
		TanuloId
		,STUFF((
			SELECT DISTINCT CAST(Btemp.Cim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM fnGetDokumentumTanuloOrGondviseloCim (0, @tanevId, @osztalyId) btemp
			WHERE
				temp.TanuloId = btemp.TanuloId
				AND temp.CimTipusa = btemp.CimTipusa
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'')
		,cimTipusa.C_NAME
	FROM fnGetDokumentumTanuloOrGondviseloCim (0, @tanevId, @osztalyId) temp
		INNER JOIN T_DICTIONARYITEMBASE_OSSZES cimTipusa ON cimTipusa.Id = temp.CimTipusa AND cimTipusa.C_TANEVID = @tanevId
	WHERE (@tanuloId IS NULL OR TanuloId = @tanuloId)


	CREATE TABLE #GondViseloCimTable (GondviseloId INT, Cim NVARCHAR(MAX), Cimtipusa NVARCHAR(MAX))
	INSERT INTO #GondViseloCimTable
	SELECT
		GondviseloId
		,STUFF((
			SELECT DISTINCT CAST(btemp.Cim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
			FROM fnGetDokumentumTanuloOrGondviseloCim (1, @tanevId, @osztalyId) btemp
			WHERE
				temp.GondviseloId = btemp.GondviseloId
				AND temp.CimTipusa = btemp.CimTipusa
			FOR XML PATH(''), TYPE)
		.value('.','NVARCHAR(MAX)'),1,0,'')
		,cimTipusa.C_NAME
	FROM fnGetDokumentumTanuloOrGondviseloCim (1, @tanevId, @osztalyId) temp
		INNER JOIN T_DICTIONARYITEMBASE_OSSZES cimTipusa ON cimTipusa.Id = temp.CimTipusa AND cimTipusa.C_TANEVID = @tanevId
	WHERE (@tanuloId IS NULL OR TanuloId = @tanuloId)


	CREATE TABLE #EmailCimTableTemp (FelhasznaloId INT, EmailCim NVARCHAR(MAX), GondviseloId INT)
	INSERT INTO #EmailCimTableTemp
	SELECT
		 tanulo.Id
		,C_EMAILCIM
		,C_GONDVISELOID
	FROM #students tanulo
		INNER JOIN T_EMAIL_OSSZES email ON email.C_FELHASZNALOID = tanulo.Id
	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

	CREATE TABLE #EmailCimTanuloTable(FelhasznaloId INT, EmailCim NVARCHAR(MAX),
	INDEX IX_EmailCimTanuloTable CLUSTERED (FelhasznaloId))

	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

	CREATE TABLE #EmailCimGondviseloTable(GondviseloId INT PRIMARY KEY CLUSTERED, 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

	CREATE TABLE #TelefonTableTemp(FelhasznaloId INT, Telefon NVARCHAR(MAX), GondviseloId INT, index ix_Ci_telefon (FelhasznaloId))

	INSERT INTO #TelefonTableTemp
	SELECT
		 tanulo.Id
		,C_TELEFONSZAM
		,C_GONDVISELOID
	FROM #students tanulo
		INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_FELHASZNALOID = tanulo.Id
	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

	CREATE TABLE #TanuloTelefonTable(FelhasznaloId INT PRIMARY KEY CLUSTERED, 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

	CREATE TABLE #GondviseloTelefonTable(GondviseloId INT PRIMARY KEY CLUSTERED,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
		TanuloId
		,TanuloCsoportId
		,ROW_NUMBER() OVER(PARTITION BY TanuloId, TanuloCsoportId ORDER BY TanuloId, TanuloCsoportId) Sorszam
		,TantargyNev
		,MentessegOka
	FROM fnGetDokumentumTanuloMentessegei(@tanevId, @osztalyId, DEFAULT)
	WHERE (@tanuloId IS NULL OR TanuloId = @tanuloId)

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

  /* TANULÓ feljegyzései */
    SELECT
		 s.ID				TanuloID
		,s.TanuloCsoportId	TanuloCsoportId
		,ROW_NUMBER() OVER(PARTITION BY s.ID ORDER BY s.ID) Sorszam
		,dbo.fnGetDokumentumDatumFormatum(Datum) Datum
		,d.C_NAME			Tipus
		,Tartalom			Tartalom
		,FeljegyzoNeve		Tanar
  FROM #studentsWithTanuloCsoport s
    INNER JOIN fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId, 0) feljegyzes ON feljegyzes.TanuloId = s.ID
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = Tipusa  AND d.C_TANEVID = @tanevId
  WHERE
	BelepesDatum <= feljegyzes.Datum
	AND (KilepesDatum IS NULL OR KilepesDatum >= feljegyzes.Datum)
	AND ((@isEllenorzo = 1 AND Tipusa NOT IN (1543, 1544, 1547, 1548, 1549, 1550, 1551, 1552, 1553)) OR
			(Tipusa IN
					(
					--KRETA-5569
						1535,
						1536,
						1540,
						1541,
						1542,
						6491,
						6906,
						6907,
						6950,
						6970
					)
				)
				OR Tipusa BETWEEN 5450 AND 5481
				OR Tipusa BETWEEN 6312 AND 6328
				OR Tipusa BETWEEN 6870 AND 6875
				OR Tipusa BETWEEN 6945 AND 6947
	)
	ORDER BY dbo.fnGetDokumentumDatumFormatum(Datum)

  /* TANULO mulasztása */
	EXEC sp_GetDokumentumMulasztasokIdoszakonkent
		@tanevId					= @tanevId,
		@osztalyCsoportId			= @osztalyId,
		@iskolaErdekuSzamit			= @iskolaErdekuSzamit,
		@isReszletesMulasztasok		= @isReszletesMulasztasok

  /*gondviselo elérhetoségei */

	SELECT DISTINCT
		 Gondviselok.TanuloId	Id
		,Gondviselok.GondviseloNev + ' (' + RokonsagiFok.C_NAME + ')' C_NEV
		,cim.Cimtipusa		C_CIMTIPUSA
		,cim.cim			C_OSSZETETTCIM
		,telefon.telefon	C_TELEFONSZAM
		,email.emailcim		C_EMAILCIM
	FROM fnGetDokumentumGondviselok (@osztalyId, @tanevId, 'F', 'T') Gondviselok
		INNER JOIN T_DICTIONARYITEMBASE_OSSZES RokonsagiFok ON RokonsagiFok.ID = Gondviselok.RokonsagifokId AND RokonsagiFok.C_TANEVID = @tanevId
		LEFT JOIN #EmailCimGondviseloTable email ON email.GondviseloId = Gondviselok.GondviseloId
		LEFT JOIN #GondviseloTelefonTable telefon ON telefon.GondviseloId = Gondviselok.GondviseloId
		LEFT JOIN #GondViseloCimTable cim ON cim.GondviseloId = Gondviselok.GondviseloId
	WHERE (@tanuloId IS NULL OR Gondviselok.TanuloId = @tanuloId)
	ORDER BY Cimtipusa

  /*TANULÓ osztályzatai*/

	CREATE TABLE #Tantargyak(
  		 ID					INT
		,C_FOTARGYID		INT
		,C_NEV				NVARCHAR(255) COLLATE DATABASE_DEFAULT
		,C_NEVNYOMTATVANYBAN	NVARCHAR(255) COLLATE DATABASE_DEFAULT
		,C_TARGYKATEGORIA 	INT
    ,c_tanuloid int
    ,c_tanulocsoportid  int
    ,RENDEZ1 int
    ,RENDEZ2 nvarchar(255) COLLATE DATABASE_DEFAULT
    ,RENDEZ3 int
    ,RENDEZ4 int
    ,RENDEZ5 nvarchar(255) COLLATE DATABASE_DEFAULT
		,C_INTEZMENYID	 	INT
		,C_TANEVID 			INT
	);
  --Osztályhoz tartozó értékelések
EXEC sp_GetDokumentumErtekelesekIdoszakonkent
	@tanevId						= @tanevId,
	@osztalyCsoportId				= @osztalyId,
	@ertekelesTipusa				= NULL,
	@csakTanorai					= 1,
	@csakKivlasztottOsztalyCsoport	= 0,
	@atsoroltTanuloErtekelesek		= 0,
	@fuggolegesTantargyak			= @fuggolegesTantargyak,
    @intezmenyId                    = @intezmenyId

  /* TANULÓ záradékai */
SELECT
	 TanuloId
	,TanuloCsoportId
	,Bejegyzes			Zaradek
FROM fnGetDokumentumTanuloZaradekai(@tanevId, @osztalyId, 1, 0)
WHERE (@tanuloId IS NULL OR TanuloId = @tanuloId)

  /*Szöveges minosítések*/
	SELECT
		 a.tanuloId
		,a.TanuloCsoportId
		,a.Honap
		,a.Tantargy
		,a.Ertekeles
		,a.Tipus
	FROM
	(
	SELECT
		s.id tanuloId
		,s.TanuloCsoportId
		,szoveges.Honap
		,szoveges.Tantargy
		,szoveges.Ertekeles
		,szoveges.Tipus
		,szoveges.RendezHonap
	FROM #studentsWithTanuloCsoport s
	INNER JOIN (SELECT
					TanuloId tanuloId
					,TanuloCsoportId
					,'['+CONVERT(NVARCHAR(MAX),DATEPART(MONTH, Datum))+'. hónap]' Honap
					,IIF(TantargyNev <> TantargyNevNyomtatvanyban AND TantargyNevNyomtatvanyban IS NOT NULL, TantargyNevNyomtatvanyban + ' (' + TantargyNev + ')', TantargyNev) Tantargy
					,ErtekelesSzovegFormazott + ISNULL(' *' + ErtekelesTema, '')			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
					ErtekelesSzovegFormazott IS NOT NULL
			) szoveges on szoveges.TANULOID=s.Id AND szoveges.TanuloCsoportId = s.TanuloCsoportId
	UNION
	SELECT
		 s.id tanuloId
		,s.TanuloCsoportId
		,szoveges.Honap
		,szoveges.Tantargy
		,szoveges.Ertekeles
		,szoveges.Tipus
		,szoveges.RendezHonap
	FROM #studentsWithTanuloCsoport s
	INNER JOIN (SELECT
					 ErtekelesTemp.TanuloId tanuloId
					,ErtekelesTemp.TanuloCsoportId
					,'['+CONVERT(NVARCHAR(MAX),DATEPART(MONTH, Datum))+'. hónap]' Honap
					,'Magatartás' Tantargy
					,ErtekelesTemp.MagatartasSzovegFormazott + ISNULL(' *' + ErtekelesTema, '')	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.MagatartasSzovegFormazott IS NOT NULL
			) szoveges on szoveges.TANULOID=s.Id AND szoveges.TanuloCsoportId = s.TanuloCsoportId
	UNION
	SELECT
		 s.id tanuloId
		,s.TanuloCsoportId
		,szoveges.Honap
		,szoveges.Tantargy
		,szoveges.Ertekeles
		,szoveges.Tipus
		,szoveges.RendezHonap
	FROM #studentsWithTanuloCsoport s
	INNER JOIN (SELECT
					ErtekelesTemp.TanuloId tanuloId
					,TanuloCsoportId
					,'['+CONVERT(NVARCHAR(MAX),DATEPART(MONTH, Datum))+'. hónap]' Honap
					,'Szorgalom' Tantargy
					,ErtekelesTemp.SzorgalomSzovegFormazott	+ ISNULL(' *' + ErtekelesTema, '')			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.SzorgalomSzovegFormazott IS NOT NULL
			) szoveges on szoveges.TANULOID = s.Id AND szoveges.TanuloCsoportId = s.TanuloCsoportId
	)a
	ORDER BY RendezHonap, Tantargy

--Közösségi szolgálat
	SELECT
		 TanuloId
		,TanuloCsoportId
		,Datum
		,ISNULL(' - ' + Megjegyzes, '') Megjegyzes
		,Oraszam
		,TeljesitesHelye
		,FeljegyzoNeve
		,Tipus
	FROM fnGetDokumentumKozossegiSzolgalatOsztalyonkent(@tanevId, @osztalyId, 0) KozossegiSzolgalat
	WHERE (@tanuloId IS NULL OR TanuloId = @tanuloId)
	ORDER BY IntervallumKezdete

--Félévi, év végi mulasztások
	CREATE TABLE #FeleviMulasztasok (
		TanuloId				INT
		,TanuloCsoportId		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,
		@elmeletiOraPercben		 = 45,
		@gyakorlatiOraPercben	 = 45,
		@ertekelesTipus			 = 1519,
		@iskolaErdekuSzamit		 = @iskolaErdekuSzamit

	CREATE TABLE #EvVegiMulasztasok (
		TanuloId				INT
		,TanuloCsoportId		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,
		@elmeletiOraPercben		 = 45,
		@gyakorlatiOraPercben	 = 45,
		@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 AND EvVegiMulasztasok.TanuloCsoportId = TanuloAlapAdatok.TanuloCsoportId
		LEFT JOIN #FeleviMulasztasok FeleviMulasztasok ON FeleviMulasztasok.TanuloId = TanuloAlapAdatok.TanuloId AND FeleviMulasztasok.TanuloCsoportId = TanuloAlapAdatok.TanuloCsoportId
	ORDER BY sorszam

	--értékelésekhez tartozó feljegyzések 1. félév
	SELECT DISTINCT
		TanuloId
		,TanuloCsoportId
		,STUFF((SELECT DISTINCT ', ' +  JelolesAndErtekelesTema
					FROM #ErtekelesekTemp ErtekelesTemavalOsszefuz
				WHERE
					LEN(JelolesAndErtekelesTema) > 0
					AND Datum <= @FelevVege
					AND ErtekelesTemavalOsszefuz.TanuloId = ErtekelesTemaval.TanuloId AND ErtekelesTemavalOsszefuz.TanuloCsoportId = ErtekelesTemaval.TanuloCsoportId
					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
		,TanuloCsoportId
		,STUFF((SELECT DISTINCT ', ' +  JelolesAndErtekelesTema
					FROM #ErtekelesekTemp ErtekelesTemavalOsszefuz
				WHERE
					LEN(JelolesAndErtekelesTema) > 0
					AND Datum >= @FelevVege
					AND ErtekelesTemavalOsszefuz.TanuloId = ErtekelesTemaval.TanuloId AND ErtekelesTemavalOsszefuz.TanuloCsoportId = ErtekelesTemaval.TanuloCsoportId
					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
		,TanuloCsoportId
		,STUFF((SELECT DISTINCT ', ' +  JelolesAndErtekelesTema
					FROM #ErtekelesekTemp ErtekelesTemavalOsszefuz
				WHERE
					LEN(JelolesAndErtekelesTema) > 0
					AND ErtekelesTemavalOsszefuz.TanuloId = ErtekelesTemaval.TanuloId AND ErtekelesTemavalOsszefuz.TanuloCsoportId = ErtekelesTemaval.TanuloCsoportId
					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)

	--összefüggő szakmai gyakorlat
	SELECT
		 TanuloId
		,TanuloCsoportId
		,isTeljesitett
		,Ertekeles
		,Megjegyzes
		,Datum
	FROM fnGetDokumentumOsszefuggoSzakmaiGyakorlat(@tanevId, @osztalyId)
	WHERE (@tanuloId IS NULL OR TanuloId = @tanuloId)

	--Tanuló tanult tantárgyai
   	SELECT DISTINCT
		 TANULO.ID						TanuloId
		,TANULO.TanuloCsoportId			TanuloCsoportId
		,STUFF((SELECT ', ' + IIF(LEN(TANTARGYAK.C_NEV) > 128, SUBSTRING(TANTARGYAK.C_NEV,1,120) + '...' , TANTARGYAK.C_NEV) TantargyNev
					FROM #Tantargyak TANTARGYAK
          LEFT JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = TANTARGYAK.c_tanuloid AND tcs.C_OSZTALYCSOPORTID = @osztalyId
					WHERE
						TANTARGYAK.c_tanuloid = TANULO.Id
						AND tcs.ID = TANULO.TanuloCsoportId
                        AND TANTARGYAK.C_NEV NOT IN ('Magatartás', 'Szorgalom')
					ORDER BY TANTARGYAK.C_NEV
						FOR XML PATH(''), TYPE)
				.value('.','NVARCHAR(MAX)'),1,2,'')  TantargyNev
	FROM #studentsWithTanuloCsoport TANULO
-- Osztály és csoportok a naplóban, az iktatáskor szükséges többszörös Csoport név kulcsszóhoz
	select * from #osztalycsoportok where OsztalyCsoportId != @osztalyId;

	-- gyors feljegyzés statisztikák
	-- Házifeladat hiány
	SELECT
		 s.ID AS TanuloId
		,s.TanuloCsoportId
		,feljegyzes.Tantargy
		,feljegyzes.Szeptember
		,feljegyzes.Oktober
		,feljegyzes.November
		,feljegyzes.December
		,feljegyzes.Januar
		,feljegyzes.Februar
		,feljegyzes.Marcius
		,feljegyzes.Aprilis
		,feljegyzes.Majus
		,feljegyzes.Junius
		,feljegyzes.Felev
		,feljegyzes.Ossz
	FROM #studentsWithTanuloCsoport s
    CROSS APPLY fnGetDokumentumTanulokGyorsFeljegyzeseiHavibontasban (@tanevId, @osztalyId, 6325, 0, @FelevVege, s.BelepesDatum, s.KilepesDatum) feljegyzes
	WHERE feljegyzes.TanuloId = s.ID

	-- Felszerelés hiány
	SELECT
		 s.ID AS TanuloId
		,s.TanuloCsoportId
		,feljegyzes.Tantargy
		,feljegyzes.Szeptember
		,feljegyzes.Oktober
		,feljegyzes.November
		,feljegyzes.December
		,feljegyzes.Januar
		,feljegyzes.Februar
		,feljegyzes.Marcius
		,feljegyzes.Aprilis
		,feljegyzes.Majus
		,feljegyzes.Junius
		,feljegyzes.Felev
		,feljegyzes.Ossz
	FROM #studentsWithTanuloCsoport s
    CROSS APPLY fnGetDokumentumTanulokGyorsFeljegyzeseiHavibontasban (@tanevId, @osztalyId, 6324, 0, @FelevVege, s.BelepesDatum, s.KilepesDatum) feljegyzes
	WHERE feljegyzes.TanuloId = s.ID

	-- Felmentés
	SELECT
		 s.ID AS TanuloId
		,s.TanuloCsoportId
		,feljegyzes.Tantargy
		,feljegyzes.Szeptember
		,feljegyzes.Oktober
		,feljegyzes.November
		,feljegyzes.December
		,feljegyzes.Januar
		,feljegyzes.Februar
		,feljegyzes.Marcius
		,feljegyzes.Aprilis
		,feljegyzes.Majus
		,feljegyzes.Junius
		,feljegyzes.Felev
		,feljegyzes.Ossz
	FROM #studentsWithTanuloCsoport s
    CROSS APPLY fnGetDokumentumTanulokGyorsFeljegyzeseiHavibontasban (@tanevId, @osztalyId, 1542, 0, @FelevVege, s.BelepesDatum, s.KilepesDatum) feljegyzes
	WHERE feljegyzes.TanuloId = s.ID

	--Dicséret
	SELECT
		 s.ID AS TanuloId
		,s.TanuloCsoportId
		,feljegyzes.Tantargy
		,feljegyzes.Szeptember
		,feljegyzes.Oktober
		,feljegyzes.November
		,feljegyzes.December
		,feljegyzes.Januar
		,feljegyzes.Februar
		,feljegyzes.Marcius
		,feljegyzes.Aprilis
		,feljegyzes.Majus
		,feljegyzes.Junius
		,feljegyzes.Felev
		,feljegyzes.Ossz
	FROM #studentsWithTanuloCsoport s
    CROSS APPLY fnGetDokumentumTanulokGyorsFeljegyzeseiHavibontasban (@tanevId, @osztalyId, 1536, 1, @FelevVege, s.BelepesDatum, s.KilepesDatum) feljegyzes
	WHERE feljegyzes.TanuloId = s.ID

END

GO