SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

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

-- =====================================================================
-- Description: értesítõ nyomtatvány (félévi, év végi, I. negyedévi...)
-- =====================================================================

CREATE PROCEDURE [dbo].[sp_GetErtesitoNyomtatvany]
	@osztalyId int,
	@tanevId   int,
	@ertekelesTipus int,
	@elmeletGyakorlat bit=0,
	@kesesTipus int =  1499,
	@elmeletiOraPercben int = 45,
    @gyakorlatiOraPercben int = 60,
	@iskolaErdekuSzamit BIT

AS
BEGIN
	SET NOCOUNT ON;
	
    -- Fejléc
 	SELECT T_INTEZMENYADATOK_OSSZES.C_NEV			IntezmenyNeve,
		   T_INTEZMENYADATOK_OSSZES.C_IRANYITOSZAM	IntezmenyIranyitoszam,
		   T_INTEZMENYADATOK_OSSZES.C_VAROS			IntezmenyVaros,
		   T_INTEZMENYADATOK_OSSZES.C_CIME			IntezmenyCime,
		   T_INTEZMENYADATOK_OSSZES.C_OMKOD			OMKod,
		   T_INTEZMENYADATOK_OSSZES.C_TELEFONSZAM	TELEFON,
		   T_INTEZMENYADATOK_OSSZES.C_EMAILCIM		EMAILCIM,
		   T_TANEV_OSSZES.C_NEV						TANEV,		   
		   (SELECT OFO.C_NYOMTATASINEV FROM T_OSZTALY_OSSZES 
					INNER JOIN T_FELHASZNALO_OSSZES OFO 
					ON OFO.ID = T_OSZTALY_OSSZES.C_OSZTALYFONOKID
		    WHERE T_OSZTALY_OSSZES.ID=@osztalyId 
				  AND T_OSZTALY_OSSZES.TOROLT = 'F')													OSZTALYFONOK,
		   (SELECT to2.C_NEV FROM T_OSZTALYCSOPORT_OSSZES to2 WHERE ID = @osztalyId AND TOROLT = 'F')	OSZTALYNEV,
		   GETDATE()																					Datum
	FROM T_INTEZMENYADATOK_OSSZES
			INNER JOIN T_TANEV_OSSZES 
			on T_TANEV_OSSZES.ID = T_INTEZMENYADATOK_OSSZES.C_TANEVID AND T_TANEV_OSSZES.C_INTEZMENYID = T_INTEZMENYADATOK_OSSZES.C_INTEZMENYID AND T_TANEV_OSSZES.TOROLT = 'F'
	WHERE T_INTEZMENYADATOK_OSSZES.TOROLT = 'F'
		  AND T_TANEV_OSSZES.ID = @TanevId
	
	-- TANULÓK
	DECLARE @Tanulok TABLE (TANULOID INT, TANULONEV NVARCHAR(MAX), OKTATASIAZONOSITO NVARCHAR(MAX), TORZSLAPSZAM NVARCHAR(MAX))

	INSERT INTO @Tanulok
	SELECT 
		tanulok.TanuloId 
		,felhasznalo.C_NYOMTATASINEV
		,felhasznalo.C_OKTATASIAZONOSITO
		,felhasznalo.C_NYILVANTARTASISZAM
	FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') tanulok
		INNER JOIN T_FELHASZNALO_OSSZES	felhasznalo on felhasznalo.Id=tanulok.TanuloId

	SELECT * FROM @Tanulok ORDER BY TANULONEV
	
	-- ÉRTÉKELÉSEK
	DECLARE @Ertekelesek TABLE (
		TanuloId			INT
		,Targy				NVARCHAR(MAX)
		,Ertekeles			NVARCHAR(MAX)
		,Jegyzet			NVARCHAR(MAX)	
		,ErtekelesJegyzettel NVARCHAR(MAX)	
		,SzovegesErtekeles	NVARCHAR(MAX)
		,Oraszam			INT
		,RENDEZ				INT
	)
	
	INSERT INTO @Ertekelesek
	EXEC sp_GetDokumentumErtekelesek
		@osztalyId = @osztalyId,
		@tanevId = @tanevId,
		@ertekelesTipus = @ertekelesTipus

	SELECT 
		TanuloId			
		, Targy				
		, Ertekeles	
		, Jegyzet	
		, ErtekelesJegyzettel				
		, SzovegesErtekeles	
		, Oraszam		
		, RENDEZ
	FROM 
	@Ertekelesek

	-- MULASZTÁSOK
	DECLARE @Mulasztasok TABLE (
		TanuloId INT
		,Igazolt INT
		,Igazolatlan INT
		,ElmeletIgazolt INT
		,ElmeletIgazolatlan INT
		,GyakorlatIgazolt INT
		,GyakorlatIgazolatlan INT
		,Osszes INT		
		)

	INSERT INTO @Mulasztasok
	EXEC sp_GetDokumentumMulasztasok
		@osztalyId = @osztalyId,
		@tanevId = @tanevId,
		@elmeletGyakorlat = @elmeletGyakorlat,
		@kesesTipus = @kesesTipus,
		@elmeletiOraPercben = @elmeletiOraPercben,
		@gyakorlatiOraPercben = @gyakorlatiOraPercben,
		@ertekelesTipus = @ertekelesTipus,
		@iskolaErdekuSzamit = @iskolaErdekuSzamit
	
	SELECT 
		TanuloId 
		,Igazolt 
		,Igazolatlan 
		,ElmeletIgazolt 
		,ElmeletIgazolatlan 
		,GyakorlatIgazolt 
		,GyakorlatIgazolatlan 
		,Osszes	
	FROM @Mulasztasok
	
	-- TANTÁRGYI MENTESSÉGEK
	SELECT DISTINCT MENTESSEG.C_TANULOID TANULOID,
		   TARGY.TARGYNEV,
		   MENTESSEG.C_MENTESSEGOKA MENTESSEGOKA
	FROM T_TANULOMENTESSEG_OSSZES MENTESSEG
			INNER JOIN (SELECT ID, C_NEV TARGYNEV FROM T_TANTARGY_OSSZES WHERE TOROLT='F') TARGY
			ON TARGY.ID = MENTESSEG.C_TANTARGYID
			INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') TANCSOPORT
			ON TANCSOPORT.TanuloId = MENTESSEG.C_TANULOID 
	WHERE MENTESSEG.TOROLT = 'F' 
	ORDER BY MENTESSEG.C_TANULOID, TARGY.TARGYNEV

	DECLARE @EsemenyTipus INT
	SET @EsemenyTipus = (SELECT 
						CASE 
							WHEN @ertekelesTipus = 1519 THEN 1547 --félévi
							WHEN @ertekelesTipus = 1520 THEN 1548 --év végi
							WHEN @ertekelesTipus = 1522 THEN 1549 --I. negyedévi
							WHEN @ertekelesTipus = 1523 then 1551 --III. negyedévi
						END
						) 

	--Bejegyzések
	SELECT 
		bejegyzes.TanuloId		TanuloId
		,Tartalom				Bejegyzes 
		,Tipusa					Tipus
	FROM fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) bejegyzes
	WHERE
		Tipusa IN (1546, @EsemenyTipus)
	ORDER BY bejegyzes.TanuloId

	-- Határozatok
	SELECT DISTINCT
		C_TANULOID			TanuloId
		,tcs.C_ZARADEK		Bejegyzes
	FROM T_TANULOCSOPORT_OSSZES tcs
	WHERE 
		tcs.C_TANULOID IN (SELECT TanuloId from @Tanulok)
		AND TOROLT = 'F'
		AND C_ZARADEK IS NOT NULL 
		AND LEN(C_ZARADEK) > 0
		AND C_TANEVID = @tanevId
		AND C_OSZTALYCSOPORTID IN (SELECT ID FROM T_OSZTALY_OSSZES WHERE TOROLT = 'F')


END

GO