IF OBJECT_ID('dbo.sp_GetNaploEllenorzes') IS NOT NULL BEGIN
  DROP PROCEDURE dbo.sp_GetNaploEllenorzes
END
GO

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

-- =============================================
-- Author:		Kelemen Attila
-- Create date: 2016.03.21.
-- Description:	Naplóellenőrzés összegzése
-- =============================================
CREATE PROCEDURE [dbo].[sp_GetNaploEllenorzes]
	@osztalyId int
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
select 
'' Osszegzes, 
Eszrevetelek.EV,
Eszrevetelek.HetSzama ID,
count(1) NemNaplozottOrakSzama,
(case when T_NAPLOELLENORZES.ID IS NULL then 'F' else 'T' end) Ellenorizve,
T_NAPLOELLENORZES.ID EllenorzesID,
Ellenorzo.C_NYOMTATASINEV EllenorzoSzemely,
T_NAPLOELLENORZES.C_ELLENORZESDATUMA EllenorzesDatum,
T_NAPLOELLENORZES.C_ESZREVETEL Eszrevetel,
Eszrevetelek.OsztalyID
from (
select  KapcsolodoCsoportok.OsztalyID osztalyID,
	    KapcsolodoCsoportok.OsztalyNev OsztalyNev,
		naptar.C_HETSORSZAMA HetSzama,
		YEAR(naptar.c_napdatuma) EV
        from T_ORARENDIORA
            inner join T_FOGLALKOZAS on T_FOGLALKOZAS.ID= T_ORARENDIORA.C_FOGLALKOZASID
            left join T_TANTARGY on T_TANTARGY.ID= T_FOGLALKOZAS.C_TANTARGYID
			inner join T_NAPTARINAP naptar on (( CONVERT(date,naptar.C_NAPDATUMA) BETWEEN CONVERT(date,T_ORARENDIORA.C_ORAERVENYESSEGKEZDETE) AND CONVERT(date,T_ORARENDIORA.C_ORAERVENYESSEGVEGE))
												AND (naptar.C_HETIREND = T_ORARENDIORA.C_HETIREND OR T_ORARENDIORA.C_HETIREND = 1554
                                                AND naptar.C_HETNAPJA = T_ORARENDIORA.C_HETNAPJA) )
			LEFT JOIN T_TANITASIORA ON (T_TANITASIORA.C_ORARENDIORAGROUPID = T_ORARENDIORA.C_ORARENDIORAGROUPID AND T_TANITASIORA.C_DATUM BETWEEN T_ORARENDIORA.C_ORAERVENYESSEGKEZDETE AND T_ORARENDIORA.C_ORAERVENYESSEGVEGE AND T_TANITASIORA.TOROLT='F' AND naptar.C_NAPDATUMA = T_TANITASIORA.C_DATUM)
            left join (select T_OSZTALYCSOPORT.ID OsztalyID,
					   T_OSZTALYCSOPORT.C_NEV OsztalyNev,
					   kcs.CsoportID
					   from T_OSZTALYCSOPORT
			--Az osztályhoz kapcsolódó csoportok óráit is listázzuk
					   left join (Select OsztalyID,
							  OsztalyNev,
							  CsoportID 
							  from (select C_OSZTALYCSOPORTID OsztalyID,
										   T_OSZTALYCSOPORT.C_NEV OsztalyNev,
										   C_TANULOID TanuloID 
										   from T_TANULOCSOPORT
												INNER JOIN T_OSZTALY on T_TANULOCSOPORT.C_OSZTALYCSOPORTID = T_OSZTALY.ID
												INNER JOIN T_OSZTALYCSOPORT on T_OSZTALY.ID = T_OSZTALYCSOPORT.ID
										   where  T_TANULOCSOPORT.TOROLT='F'
											      and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE()
												  and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM >= GETDATE())) OsztalyTanuloi
									inner join 
											(select T_CSOPORT.ID CsoportID,
												    C_TANULOID TanuloID 
													from T_TANULOCSOPORT
													inner join T_CSOPORT on T_TANULOCSOPORT.ID=T_CSOPORT.ID 										
													where T_CSOPORT.TOROLT='F'
													and T_TANULOCSOPORT.TOROLT='F'
													and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE()
													and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM >= GETDATE())) Csoportok 
													on OsztalyTanuloi.TanuloID = Csoportok.TanuloID) kcs
													on kcs.OsztalyID = T_OSZTALYCSOPORT.ID
							where T_OSZTALYCSOPORt.TOROLT = 'F') KapcsolodoCsoportok 
									on KapcsolodoCsoportok.OsztalyID = @osztalyId
									and KapcsolodoCsoportok.OsztalyID = T_FOGLALKOZAS.C_OSZTALYCSOPORTID
			
			where
			T_ORARENDIORA.TOROLT='F' 
			and naptar.TOROLT = 'F' 
			and T_FOGLALKOZAS.TOROLT='F' 
			and GETDATE() >= naptar.C_NAPDATUMA
			and T_TANITASIORA.ID IS NULL
			and KapcsolodoCsoportok.OsztalyID = @osztalyId			 

			union all

select KapcsolodoCsoportok.OsztalyID osztalyID,
					KapcsolodoCsoportok.OsztalyNev OsztalyNev,
					naptar.C_HETSORSZAMA HetSzama,
					YEAR(naptar.c_napdatuma) EV
					from T_TANITASIORA
					inner join T_FOGLALKOZAS on T_FOGLALKOZAS.ID= T_TANITASIORA.C_FOGLALKOZASID
					inner join T_NAPTARINAP naptar on T_TANITASIORA.C_DATUM = naptar.C_NAPDATUMA
					left join (select T_OSZTALYCSOPORT.ID OsztalyID,
					   T_OSZTALYCSOPORT.C_NEV OsztalyNev,
					   kcs.CsoportID
					   from T_OSZTALYCSOPORT
					   left join (Select OsztalyID,
							   OsztalyNev,
							   CsoportID 
							   from 
                               (select C_OSZTALYCSOPORTID OsztalyID,
									   T_OSZTALYCSOPORT.C_NEV OsztalyNev,
									   C_TANULOID TanuloID 
									   from T_TANULOCSOPORT
									   inner join T_OSZTALY on T_TANULOCSOPORT.C_OSZTALYCSOPORTID = T_OSZTALY.ID
									   inner join T_OSZTALYCSOPORT on T_OSZTALY.ID = T_OSZTALYCSOPORT.ID
                                       where  T_TANULOCSOPORT.TOROLT='F'
									   and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE()
									   and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM >= GETDATE())) OsztalyTanuloi
								inner join 
								(select T_CSOPORT.ID CsoportID,
										C_TANULOID TanuloID 
										from T_TANULOCSOPORT
                                        inner join T_CSOPORT on T_TANULOCSOPORT.ID=T_CSOPORT.ID 
                                        where T_CSOPORT.TOROLT='F'
                                        and T_TANULOCSOPORT.TOROLT='F'
										and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE()
										and (T_TANULOCSOPORT.C_KILEPESDATUM is null or T_TANULOCSOPORT.C_KILEPESDATUM >= GETDATE())
										) Csoportok on OsztalyTanuloi.TanuloID = Csoportok.TanuloID) kcs
										on kcs.OsztalyID = T_OSZTALYCSOPORT.ID
										where T_OSZTALYCSOPORt.TOROLT = 'F')
										 KapcsolodoCsoportok on
										KapcsolodoCsoportok.OsztalyID = @osztalyId
										and KapcsolodoCsoportok.OsztalyID = T_FOGLALKOZAS.C_OSZTALYCSOPORTID
			  where T_TANITASIORA.C_ORARENDIORAGROUPID is null
			  and T_TANITASIORA.C_MEGTARTOTT is null
              and KapcsolodoCsoportok.OsztalyID = @osztalyId   
	   ) Eszrevetelek
	   left join T_NAPLOELLENORZES on ( T_NAPLOELLENORZES.C_OSZTALYID = @osztalyId 
										AND T_NAPLOELLENORZES.C_HETSORSZAMA = Eszrevetelek.HetSzama 
                                        AND T_NAPLOELLENORZES.TOROLT = 'F')
       left join T_FELHASZNALO Ellenorzo on Ellenorzo.ID = T_NAPLOELLENORZES.C_ELLENORZOSZEMELYID 
	   group by Eszrevetelek.EV,
			    Eszrevetelek.HetSzama,
				T_NAPLOELLENORZES.ID,
				Ellenorzo.C_NYOMTATASINEV,
				T_NAPLOELLENORZES.C_ELLENORZESDATUMA,
				T_NAPLOELLENORZES.C_ESZREVETEL,
				T_NAPLOELLENORZES.C_OSZTALYID,
				Eszrevetelek.OsztalyID

	   order by EV desc, Eszrevetelek.HetSzama desc
END
