126 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
GO
 | 
						|
/****** Object:  StoredProcedure [dbo].[sp_GetNaploEllenorzesTetelek]    Script Date: 2016.03.29. 9:17:20 ******/
 | 
						|
SET ANSI_NULLS ON
 | 
						|
GO
 | 
						|
SET QUOTED_IDENTIFIER ON
 | 
						|
GO
 | 
						|
 | 
						|
IF OBJECT_ID('[DBO].[sp_GetNaploEllenorzesTetelek]') IS NOT NULL BEGIN
 | 
						|
  DROP PROCEDURE [DBO].[sp_GetNaploEllenorzesTetelek]
 | 
						|
END  
 | 
						|
GO
 | 
						|
 | 
						|
-- =============================================
 | 
						|
-- Author:		Kelemen Attila
 | 
						|
-- Create date: 2016.03.21.
 | 
						|
-- Description:	Naplóellenőrzés tételei
 | 
						|
-- =============================================
 | 
						|
CREATE PROCEDURE [dbo].[sp_GetNaploEllenorzesTetelek]
 | 
						|
	@osztalyId int,
 | 
						|
	@hetSorszam int
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
	-- SET NOCOUNT ON added to prevent extra result sets from
 | 
						|
	-- interfering with SELECT statements.
 | 
						|
	SET NOCOUNT ON;
 | 
						|
select * from
 | 
						|
(
 | 
						|
--Órarendi órák, amikhez nem tartozik tanóra
 | 
						|
select      T_ORARENDIORA.ID Id,
 | 
						|
			naptar.C_HETSORSZAMA HetSzama,
 | 
						|
            naptar.C_NAPDATUMA Datum,
 | 
						|
            naptar.C_HETNAPJA Hetnapja,
 | 
						|
            T_ORARENDIORA.C_ORASZAM Oraszam,
 | 
						|
            osztaly.C_NEV OsztalyNev,
 | 
						|
			T_TANTARGY.C_NEV TargyNev,
 | 
						|
			--Ha van helyettesítő, akkor annak a nevére van szükségünk
 | 
						|
            (select top 1 tanar.C_NYOMTATASINEV from T_FELHASZNALO tanar
 | 
						|
				where ((T_TANITASIORA.C_HELYETTESITOTANARID IS null and T_FOGLALKOZAS.C_TANARID = tanar.ID)
 | 
						|
				OR (T_TANITASIORA.C_HELYETTESITOTANARID IS not null and T_TANITASIORA.C_HELYETTESITOTANARID= tanar.ID))) TanarNev
 | 
						|
        FROM
 | 
						|
            T_ORARENDIORA
 | 
						|
            inner join T_FOGLALKOZAS on T_FOGLALKOZAS.ID= T_ORARENDIORA.C_FOGLALKOZASID AND T_FOGLALKOZAS.TOROLT='F'
 | 
						|
            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_ORARENDIORAID = T_ORARENDIORA.ID AND T_TANITASIORA.TOROLT='F' AND naptar.C_NAPDATUMA = T_TANITASIORA.C_DATUM
 | 
						|
				--AND T_TANITASIORA.C_MEGTARTOTT IS NULL
 | 
						|
			)
 | 
						|
 | 
						|
            inner join T_OSZTALYCSOPORT osztaly on T_FOGLALKOZAS.C_OSZTALYCSOPORTID = osztaly.ID AND osztaly.TOROLT='F'
 | 
						|
 | 
						|
			--Az osztályhoz kapcsolódó csoportok óráit is listázzuk
 | 
						|
			left join (Select OsztalyID, CsoportID from 
 | 
						|
                                (select C_OSZTALYCSOPORTID OsztalyID, C_TANULOID TanuloID from T_TANULOCSOPORT INNER JOIN T_OSZTALY ON T_TANULOCSOPORT.C_OSZTALYCSOPORTID = T_OSZTALY.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) KapcsolodoCsoportok ON
 | 
						|
										KapcsolodoCsoportok.OsztalyID = @osztalyId
 | 
						|
			
 | 
						|
            where T_ORARENDIORA.TOROLT='F'
 | 
						|
			    AND naptar.TOROLT = 'F'  
 | 
						|
				AND GETDATE() >= naptar.C_NAPDATUMA
 | 
						|
			    AND T_TANITASIORA.ID IS NULL
 | 
						|
			AND (osztaly.ID = @osztalyId OR osztaly.ID = KapcsolodoCsoportok.CsoportID)
 | 
						|
			and naptar.C_HETSORSZAMA = @hetSorszam
 | 
						|
				UNION ALL
 | 
						|
			
 | 
						|
			
 | 
						|
			--Tanítási órák, amikhez nem tartozik órarendi óra	
 | 
						|
				select  T_TANITASIORA.ID Id,
 | 
						|
					naptar.C_HETSORSZAMA HetSzama,
 | 
						|
					naptar.C_NAPDATUMA Datum,
 | 
						|
					naptar.C_HETNAPJA Hetnapja,
 | 
						|
					 T_TANITASIORA.C_ORASZAM Oraszam,
 | 
						|
					osztaly.C_NEV OsztalyNev,
 | 
						|
					T_TANTARGY.C_NEV TargyNev,
 | 
						|
					tanar.C_NYOMTATASINEV TanarNev
 | 
						|
			
 | 
						|
			 from T_TANITASIORA
 | 
						|
				inner join T_NAPTARINAP naptar on (T_TANITASIORA.C_DATUM = naptar.C_NAPDATUMA)
 | 
						|
			inner join T_FOGLALKOZAS on T_FOGLALKOZAS.ID= T_TANITASIORA.C_FOGLALKOZASID			
 | 
						|
			left join T_OSZTALYCSOPORT osztaly on T_FOGLALKOZAS.C_OSZTALYCSOPORTID = osztaly.ID
 | 
						|
            left join T_TANTARGY on T_TANTARGY.ID= T_FOGLALKOZAS.C_TANTARGYID
 | 
						|
 | 
						|
            left join T_FELHASZNALO tanar on
 | 
						|
			--Ha van helyettesítő, akkor aszerint joinolunk
 | 
						|
			(case when T_TANITASIORA.C_HELYETTESITOTANARID IS not null then T_TANITASIORA.C_HELYETTESITOTANARID
 | 
						|
			else T_FOGLALKOZAS.C_TANARID end) = tanar.ID
 | 
						|
			
 | 
						|
 | 
						|
			left join (Select OsztalyID, CsoportID from 
 | 
						|
                                (select C_OSZTALYCSOPORTID OsztalyID, C_TANULOID TanuloID from T_TANULOCSOPORT INNER JOIN T_OSZTALY ON T_TANULOCSOPORT.C_OSZTALYCSOPORTID = T_OSZTALY.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) KapcsolodoCsoportok ON
 | 
						|
										KapcsolodoCsoportok.OsztalyID = @osztalyId		
 | 
						|
				
 | 
						|
				where T_TANITASIORA.C_ORARENDIORAID is null
 | 
						|
				AND T_TANITASIORA.C_MEGTARTOTT is null
 | 
						|
				AND (osztaly.ID = @osztalyId OR osztaly.ID = KapcsolodoCsoportok.CsoportID)
 | 
						|
				and naptar.C_HETSORSZAMA = @hetSorszam
 | 
						|
				) Orak
 | 
						|
       	  	 
 | 
						|
          ORDER BY Datum DESC
 | 
						|
END
 |