SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


IF OBJECT_ID('[dbo].[sp_GetEvvegiErtesito]') IS NOT NULL 
BEGIN
  DROP PROCEDURE [dbo].[sp_GetEvvegiErtesito]
END  
GO
-- =============================================
-- Author:		Hoffmann Zsolt
-- Create date: 2015.12.22.
-- Description:	Évvégi értesítő nyomtatvány.
-- =============================================
CREATE PROCEDURE [sp_GetEvvegiErtesito]
	@tanevId int,
	@osztalyId int
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	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_TELEFONSZAM TELEFON,
		   T_INTEZMENYADATOK_OSSZES.C_EMAILCIM EMAILCIM,
		   T_INTEZMENYADATOK_OSSZES.C_OMKOD OMkod,
		   T_TANEV_OSSZES.C_NEV TANEV,
		   (SELECT C_OSZTALYFONOKID FROM T_OSZTALY_OSSZES WHERE ID=@osztalyId) PartnerID,
		   (SELECT OFO.C_NYOMTATASINEV FROM T_OSZTALY_OSSZES JOIN T_FELHASZNALO_OSSZES OFO ON OFO.ID = T_OSZTALY_OSSZES.C_OSZTALYFONOKID WHERE T_OSZTALY_OSSZES.ID=@osztalyId) OSZTALYFONOK,
	       (SELECT T_OSZTALYCSOPORT_OSSZES.C_NEV FROM T_OSZTALYCSOPORT_OSSZES WHERE T_OSZTALYCSOPORT_OSSZES.ID=@osztalyId) OSZTALYNEV
	FROM T_INTEZMENYADATOK_OSSZES
		INNER JOIN T_TANEV_OSSZES 
		ON T_TANEV_OSSZES.ID = T_INTEZMENYADATOK_OSSZES.C_TANEVID AND T_TANEV_OSSZES.TOROLT = 'F'
	WHERE T_TANEV_OSSZES.ID = @tanevId
	
	---------- TANULÓK
	SELECT T_FELHASZNALO_OSSZES.ID TANULOID,
		   T_FELHASZNALO_OSSZES.C_NYOMTATASINEV TANULONEV,
		   T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO OKTATASIAZONOSITO
	FROM T_FELHASZNALO_OSSZES
		JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and
																					  T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and
																					  (C_KILEPESDATUM is null or C_KILEPESDATUM >= GETDATE())) TANCSOPORT 
		ON TANCSOPORT.C_TANULOID = T_FELHASZNALO_OSSZES.ID 
	WHERE TOROLT='F' and 
		  TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId and
		  T_FELHASZNALO_OSSZES.C_TANEVID = @tanevId
	ORDER BY T_FELHASZNALO_OSSZES.C_NYOMTATASINEV
	
	---- ÉRTÉKELÉSEK
	SELECT ERTEKELES.C_TANULOID TANULOID,
	       'MAGATARTAS' TARGYNEV, 
		   OSZTALYZAT.MAGATARTAS FELEVIERTEKELES,
		   ERTEKELES.C_ERTEKELESSZOVEG FELJEGYZES
	FROM T_TANULOERTEKELES_OSSZES ERTEKELES
		JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and
																					  T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and
																					  (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT 
		ON TANCSOPORT.C_TANULOID = ERTEKELES.C_TANULOID
		LEFT JOIN (SELECT ID, C_MAGATARTAS MAGATARTAS  FROM T_OSZTALYFONOKIERTEKELES_OSSZES) OSZTALYZAT 
		ON OSZTALYZAT.ID = ERTEKELES.ID
	WHERE TANCSOPORT.C_OSZTALYCSOPORTID =@osztalyId AND
	      ERTEKELES.TOROLT = 'F' and
		  ERTEKELES.C_TANEVID = @tanevId and
	      ERTEKELES.C_ERTEKELESTIPUSA = 1520 AND
		  OSZTALYZAT.MAGATARTAS IS NOT NULL -- ÉVVÉGI
	UNION ALL
	SELECT ERTEKELES.C_TANULOID TANULOID,
		   'SZORGALOM' TARGYNEV,
		   OSZTALYZAT.SZORGALOM FELEVIERTEKELES,
		   ERTEKELES.C_ERTEKELESSZOVEG FELJEGYZES
	FROM T_TANULOERTEKELES_OSSZES ERTEKELES
		JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and
																					  T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and
																					  (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT
		ON TANCSOPORT.C_TANULOID = ERTEKELES.C_TANULOID
		LEFT JOIN (SELECT ID,  C_SZORGALOM SZORGALOM FROM T_OSZTALYFONOKIERTEKELES_OSSZES ) OSZTALYZAT 
		ON OSZTALYZAT.ID = ERTEKELES.ID
	WHERE TANCSOPORT.C_OSZTALYCSOPORTID =@osztalyId AND
		  ERTEKELES.TOROLT = 'F' and
		  ERTEKELES.C_TANEVID = @tanevId and
	      ERTEKELES.C_ERTEKELESTIPUSA = 1520 AND
		  OSZTALYZAT.SZORGALOM IS NOT NULL -- ÉVVÉGI
	UNION ALL
	SELECT ERTEKELES.C_TANULOID TANULOID, 
		   TARGY.TARGYNEV TARGYNEV,
		   ERTEKELES.C_OSZTALYZAT FELEVIERTEKELES,
		   ERTEKELES.C_ERTEKELESSZOVEG FELJEGYZES
	FROM T_TANULOERTEKELES_OSSZES ERTEKELES
		JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and
																					  T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and
																					  (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT
		ON TANCSOPORT.C_TANULOID = ERTEKELES.C_TANULOID 

		JOIN ( SELECT ID,C_NEV TARGYNEV,C_TARGYKATEGORIA KAT FROM T_TANTARGY_OSSZES) TARGY 
		ON TARGY.ID = ERTEKELES.C_TANTARGYID
	WHERE TANCSOPORT.C_OSZTALYCSOPORTID =@osztalyId AND
		  ERTEKELES.TOROLT = 'F' and
		  ERTEKELES.C_TANEVID = @tanevId and
	      TARGY.KAT != 1248 and--Osztályfőnöki nem jelenítődik meg
		  ERTEKELES.C_ERTEKELESTIPUSA = 1520 -- ÉVVÉGI
	ORDER BY TANULOID,
			 TARGYNEV

	----ÉVVÉGI ÉRTÉKELÉS ÖSSZEGZÉS
	SELECT ERTEKELES.C_TANULOID TANULOID, 
		   TARGY.TARGYNEV, 
	       isnull((select count(*) from T_TANITASIORA_OSSZES
										inner join T_FOGLALKOZAS_OSSZES 
										on T_FOGLALKOZAS_OSSZES.ID = T_TANITASIORA_OSSZES.C_FOGLALKOZASID
								   where T_TANITASIORA_OSSZES.TOROLT = 'F'
								   and T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID = @osztalyId 
								   and T_FOGLALKOZAS_OSSZES.C_TANTARGYID = ERTEKELES.ID
								   and T_FOGLALKOZAS_OSSZES.C_FOGLALKOZASTIPUSA = 1339 --Tanórai foglalkozás
								   and exists (select 1 from T_FOGLALKOZASOK_TANAROK_OSSZES where C_TANAROKID = ERTEKELES.C_ERTEKELOID)),0) ORASZAM,
		   ERTEKELES.C_OSZTALYZAT EVVEGIERTEKELES,
		   ERTEKELES.C_ERTEKELESSZOVEG FELJEGYZES
	FROM T_TANULOERTEKELES_OSSZES ERTEKELES
		JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and
																					  T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and
																					  (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT 
		ON TANCSOPORT.C_TANULOID = ERTEKELES.C_TANULOID 
		JOIN ( SELECT ID,C_NEV TARGYNEV FROM T_TANTARGY_OSSZES) TARGY 
		ON TARGY.ID = ERTEKELES.C_TANTARGYID
	WHERE TANCSOPORT.C_OSZTALYCSOPORTID =@osztalyId and
		  ERTEKELES.TOROLT = 'F' and
		  ERTEKELES.C_TANEVID = @tanevId and 
		  ERTEKELES.C_ERTEKELESTIPUSA = 1520 -- ÉVVÉGI
	ORDER BY TANULOID, 
	         TARGY.TARGYNEV
	

	---- MULASZTÁSOK
	SELECT * FROM (SELECT MULASZT.C_ORATANULOIID TANULOID,
						  'IGAZOLT' TIPUS, COUNT(1) ORASZAM
				   FROM T_TANULOMULASZTAS_OSSZES MULASZT
						JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and
																									  T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and
																									  (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT 
						ON TANCSOPORT.C_TANULOID = MULASZT.C_ORATANULOIID 
				   WHERE MULASZT.TOROLT ='F' AND
					     MULASZT.C_TANEVID = @tanevId and
						 TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId AND
						 MULASZT.C_IGAZOLT = 'T' AND
						 MULASZT.C_TIPUS != 1498
				   GROUP BY MULASZT.C_ORATANULOIID
				   UNION 
				   SELECT MULASZT.C_ORATANULOIID TANULOID,
						  'IGAZOLATLAN' TIPUS,
						  COUNT(1) ORASZAM
				   FROM T_TANULOMULASZTAS_OSSZES MULASZT
						JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and
																									  T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and
																									  (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT 
						ON TANCSOPORT.C_TANULOID = MULASZT.C_ORATANULOIID 
				   WHERE MULASZT.TOROLT ='F' AND
					     MULASZT.C_TANEVID = @tanevId and
						 TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId AND
						 MULASZT.C_IGAZOLT = 'F' AND
						 MULASZT.C_TIPUS != 1498
				   GROUP BY MULASZT.C_ORATANULOIID
				   ) ORAK
	ORDER BY ORAK.TANULOID,
			 ORAK.TIPUS DESC

	------ MULASZTÁSOK ÖSSZEGZÉS
	SELECT distinct TANULO.ID TANULOID,
	isnull((SELECT COUNT(1) ORASZAM FROM T_TANULOMULASZTAS_OSSZES MULASZT
				JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and
																							  T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and
																							  (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT 
				ON TANCSOPORT.C_TANULOID = MULASZT.C_ORATANULOIID 
			WHERE MULASZT.TOROLT ='F' AND
				  MULASZT.C_TANEVID = @tanevId and
				  TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId AND
				  MULASZT.C_IGAZOLT = 'T' and
				  MULASZT.C_ORATANULOIID = MU.C_ORATANULOIID AND
				  MULASZT.C_TIPUS != 1498
			GROUP BY MULASZT.C_ORATANULOIID
	),0) IGAZOLT,
	isnull((SELECT COUNT(1) ORASZAM FROM T_TANULOMULASZTAS_OSSZES MULASZT
				JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and
																							  T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and
																							  (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT 
				ON TANCSOPORT.C_TANULOID = MULASZT.C_ORATANULOIID 
			WHERE MULASZT.TOROLT ='F' AND
				  MULASZT.C_TANEVID = @tanevId and
				  TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId AND
				  MULASZT.C_IGAZOLT = 'F' and
				  MULASZT.C_ORATANULOIID = MU.C_ORATANULOIID AND
				  MULASZT.C_TIPUS != 1498
			GROUP BY MULASZT.C_ORATANULOIID
	),0) IGAZOLATLAN,
	isnull((SELECT COUNT(1) ORASZAM FROM T_TANULOMULASZTAS_OSSZES MULASZT
				JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and
																							  T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and
																							  (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT 
				ON TANCSOPORT.C_TANULOID = MULASZT.C_ORATANULOIID 
			WHERE MULASZT.TOROLT ='F' AND
				  MULASZT.C_TANEVID = @tanevId and
				  TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId and
				  MULASZT.C_ORATANULOIID = MU.C_ORATANULOIID AND
				  MULASZT.C_TIPUS != 1498
			GROUP BY MULASZT.C_ORATANULOIID
	),0) SZUMMA
	from T_TANULO_OSSZES TANULO
		left join T_TANULOMULASZTAS_OSSZES MU 
		on MU.C_ORATANULOIID = TANULO.ID
		left join (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and
																						   T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and
																						   (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT 
		ON TANCSOPORT.C_TANULOID = TANULO.ID
	where TANULO.TOROLT = 'F' AND
		  TANULO.C_ALTANEVID = @tanevId and
		  TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId
	ORDER BY TANULO.ID

	-- TANTÁRGYI MENTESSÉGEK
	SELECT MENTESSEG.C_TANULOID TANULOID,
		   TARGY.TARGYNEV, MENTESSEG.C_MENTESSEGOKA MENTESSEGOKA
	FROM T_TANULOMENTESSEG_OSSZES MENTESSEG
		JOIN (SELECT ID, C_NEV TARGYNEV FROM T_TANTARGY_OSSZES WHERE TOROLT='F' ) TARGY 
		ON TARGY.ID = MENTESSEG.C_TANTARGYID
		JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and
																					  T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and 
																					  (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT 
		ON TANCSOPORT.C_TANULOID = MENTESSEG.C_TANULOID 
	WHERE MENTESSEG.TOROLT = 'F' AND
		  MENTESSEG.C_TANEVID = @tanevId and
		  TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId 
	ORDER BY MENTESSEG.C_TANULOID,
			 TARGY.TARGYNEV

	---------- BEJEGYZÉSEK
	SELECT T_TANULOESEMENY_OSSZES.C_TANULOID TANULOID,
		   C_TARTALOM BEJEGYZES, C_TIPUS TIPUS
	FROM T_TANULOESEMENY_OSSZES
		JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F' and
																					  T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE() and
																					  (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT 
		ON TANCSOPORT.C_TANULOID = T_TANULOESEMENY_OSSZES.C_TANULOID 
	WHERE T_TANULOESEMENY_OSSZES.TOROLT='F' AND
		  T_TANULOESEMENY_OSSZES.C_TANEVID = @tanevId and
		  TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId AND
		  T_TANULOESEMENY_OSSZES.C_TIPUS = 1548 AND
		  T_TANULOESEMENY_OSSZES.C_TIPUS != 1534
	ORDER BY T_TANULOESEMENY_OSSZES.C_TANULOID
END
GO
