SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


IF OBJECT_ID('sp_GetElfogadottTantargyfelosztasok') IS NOT NULL 
BEGIN
  DROP PROCEDURE sp_GetElfogadottTantargyfelosztasok
END  
GO
CREATE PROCEDURE sp_GetElfogadottTantargyfelosztasok
	@tanevId		INT,
	@intezmenyId	INT,
	@isElfogadott	BIT,
	@isKlebersberg	BIT
AS
BEGIN
	SET NOCOUNT ON;

	--Pedagógusok
	SELECT 
		foglalkozas.C_TANARID							PedagogusId
		,felhasznalo.C_NYOMTATASINEV					PedagogusNev
		,munkakor.C_NAME								Munkakor
		,kepesites.C_NAME								Kepesites
		,ISNULL(vegzettsegAdat.Vegzettseg, '')			Vegzettseg
		,dbo.fnGetDokumentumPedagogusOraszam(foglalkozas.C_TANARID, @isKlebersberg)	KotelezoOraszam
		,munkaugyiAdatok.C_MUNKAIDOKEDVEZMENYORASZAM	MunkaidoKedvezmenyOraszam
		,munkaidoKedvezmenyOka.C_NAME					MunkaidoKedvezmenyOka
		,SUM(foglalkozas.C_ORASZAM)						HetiOraszam
		,ISNULL(munkaugyiAdatok.C_MUNKAIDOKEDVEZMENYORASZAM, 0) + SUM(foglalkozas.C_ORASZAM) LekotottOraszam
	INTO #PedagogusTemp
	FROM T_FOGLALKOZAS_OSSZES foglalkozas
		INNER JOIN T_MUNKAUGYIADATOK_OSSZES munkaugyiAdatok ON munkaugyiAdatok.C_ALKALMAZOTTID = foglalkozas.C_TANARID
		LEFT JOIN (
				SELECT DISTINCT
					 kvegzettseg.C_TANARID		TanarId
					,STUFF((
						SELECT DISTINCT ', ' + dic.C_NAME
					FROM T_VEGZETTSEG_OSSZES bvegzettseg
						LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dic ON bvegzettseg.C_VEGZETTSEGTIPUSID = dic.ID AND dic.C_TANEVID = @tanevId AND dic.TOROLT = 'F'
					WHERE 
						bvegzettseg.C_TANARID = kvegzettseg.C_TANARID 
						AND bvegzettseg.TOROLT = 'F'
					FOR XML PATH(''), TYPE)
				.value('.','NVARCHAR(MAX)'),1,2,'') Vegzettseg
				FROM T_VEGZETTSEG_OSSZES kvegzettseg
				WHERE 
					kvegzettseg.TOROLT = 'F'
				  ) AS vegzettsegAdat ON munkaugyiAdatok.C_ALKALMAZOTTID = vegzettsegAdat.TanarId
		INNER JOIN T_FELHASZNALO_OSSZES felhasznalo ON felhasznalo.ID = foglalkozas.C_TANARID
		LEFT JOIN T_DICTIONARYITEMBASE_OSSZES munkakor ON munkakor.ID = munkaugyiAdatok.C_MUNKAKORTIPUSA AND munkaugyiAdatok.C_TANEVID = munkakor.C_TANEVID
		LEFT JOIN T_DICTIONARYITEMBASE_OSSZES kepesites ON kepesites.ID = munkaugyiAdatok.C_BESOROLASIFOKOZAT AND munkaugyiAdatok.C_TANEVID = kepesites.C_TANEVID
		LEFT JOIN T_DICTIONARYITEMBASE_OSSZES munkaidoKedvezmenyOka ON munkaidoKedvezmenyOka.ID = munkaugyiAdatok.C_MUNKAIDOKEDVEZMENYOKA AND munkaugyiAdatok.C_TANEVID = munkaidoKedvezmenyOka.C_TANEVID
		INNER JOIN T_INTEZMENYADATSZOLGALTATAS_OSSZES intezmenyAdatSzolgaltatas ON intezmenyAdatSzolgaltatas.C_TANEVID = foglalkozas.C_TANEVID AND intezmenyAdatSzolgaltatas.TOROLT = 'F'
	WHERE 
		foglalkozas.C_TANEVID = @tanevId
		AND foglalkozas.TOROLT = 'F'
		AND munkaugyiAdatok.TOROLT = 'F'
		AND felhasznalo.C_NYOMTATASINEV NOT LIKE '[[]HO%'
	GROUP BY foglalkozas.C_TANARID, felhasznalo.C_NYOMTATASINEV, munkakor.C_NAME, kepesites.C_NAME, vegzettsegAdat.Vegzettseg, C_KOTELEZOORASZAM, C_MUNKAIDOKEDVEZMENYORASZAM, munkaidoKedvezmenyOka.C_NAME
	ORDER BY felhasznalo.C_NYOMTATASINEV

	--Osztályok / csoportok
	SELECT 
		osztalyCsoport.C_NEV			OsztalyCsoport
		,SUM(C_ORASZAM)					OsszesOraszam
	INTO #OsztalyCsoportTemp
	FROM T_FOGLALKOZAS_OSSZES foglalkozas
		INNER JOIN T_FELHASZNALO_OSSZES felhasznalo ON felhasznalo.ID = foglalkozas.C_TANARID
		INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON osztalyCsoport.ID = foglalkozas.C_OSZTALYCSOPORTID
		INNER JOIN T_TANTARGY_OSSZES tantargy ON tantargy.ID = foglalkozas.C_TANTARGYID
		INNER JOIN T_INTEZMENYADATSZOLGALTATAS_OSSZES intezmenyAdatSzolgaltatas ON intezmenyAdatSzolgaltatas.C_TANEVID = foglalkozas.C_TANEVID AND intezmenyAdatSzolgaltatas.TOROLT = 'F'
	WHERE 
		foglalkozas.C_TANEVID = @tanevId
		AND foglalkozas.TOROLT = 'F'
		AND felhasznalo.C_NYOMTATASINEV NOT LIKE '[[]HO%'
	GROUP BY osztalyCsoport.C_NEV
	ORDER BY osztalyCsoport.C_NEV

	--Tantárgyfelosztás
	SELECT 
		felhasznalo.C_NYOMTATASINEV		PedagogusNeve
		,osztalyCsoport.C_NEV			OsztalyCsoport
		,tantargy.C_NEV					Tantargy
		,foglalkozas.C_ORASZAM			Oraszam
	INTO #TantargyFelosztasTemp
	FROM T_FOGLALKOZAS_OSSZES foglalkozas
		INNER JOIN T_FELHASZNALO_OSSZES felhasznalo ON felhasznalo.ID = foglalkozas.C_TANARID
		INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON osztalyCsoport.ID = foglalkozas.C_OSZTALYCSOPORTID
		INNER JOIN T_TANTARGY_OSSZES tantargy ON tantargy.ID = foglalkozas.C_TANTARGYID
		INNER JOIN T_INTEZMENYADATSZOLGALTATAS_OSSZES intezmenyAdatSzolgaltatas ON intezmenyAdatSzolgaltatas.C_TANEVID = foglalkozas.C_TANEVID AND intezmenyAdatSzolgaltatas.TOROLT = 'F'
	WHERE 
		foglalkozas.C_TANEVID = @tanevId
		AND foglalkozas.TOROLT = 'F'
		AND felhasznalo.C_NYOMTATASINEV NOT LIKE '[[]HO%'
	ORDER BY felhasznalo.C_NYOMTATASINEV

	    --Fejléc
	SELECT 
		intezmenyAdatok.C_NEV													IntezmenyNeve
		,tanev.C_NEV															Tanev
		,intezmenyAdatok.C_ENGEDELYEZETTALLASHELYEK								EngedelyezettAllashelyek
		,ISNULL('Hatályos: <b>' + FORMAT(intezmenyAdatSzolgaltatas.C_ELFOGADOTTTTFDATUMA, 'yyyy.MM.dd.') +'</b> napjától','')	ElfogadasDatuma
		,(SELECT SUM(LekotottOraszam) FROM #PedagogusTemp)						PedagogusSum
		,(SELECT SUM(Osszesoraszam) FROM #OsztalyCsoportTemp)					OsztalyCsoportSum
		,(SELECT SUM(Oraszam) FROM #TantargyFelosztasTemp)						TantargyFelosztasSum
	FROM T_INTEZMENYADATOK_OSSZES intezmenyAdatok
		INNER JOIN T_TANEV_OSSZES tanev ON tanev.ID = intezmenyAdatok.C_TANEVID
		INNER JOIN T_INTEZMENYADATSZOLGALTATAS_OSSZES intezmenyAdatSzolgaltatas ON 
							intezmenyAdatSzolgaltatas.C_INTEZMENYID = intezmenyAdatok.C_INTEZMENYID 
							AND intezmenyAdatSzolgaltatas.C_TANEVID = tanev.ID
	WHERE
		intezmenyAdatok.C_TANEVID = @tanevId

		SELECT * FROM #PedagogusTemp ORDER BY PedagogusNev
		SELECT * FROM #OsztalyCsoportTemp ORDER BY OsztalyCsoport
		SELECT * FROM #TantargyFelosztasTemp ORDER BY PedagogusNeve

END

GO