297 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			297 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
GO
 | 
						|
 | 
						|
SET ANSI_NULLS ON
 | 
						|
GO
 | 
						|
SET QUOTED_IDENTIFIER ON
 | 
						|
GO
 | 
						|
 | 
						|
IF OBJECT_ID('sp_GetTorzslap') IS NOT NULL BEGIN
 | 
						|
  DROP PROCEDURE sp_GetTorzslap
 | 
						|
END  
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE sp_GetTorzslap
 | 
						|
	@osztalyId				INT,
 | 
						|
	@tanevId				INT,
 | 
						|
	@ertekelesTipus			INT,
 | 
						|
	@kesesTipus				INT,
 | 
						|
	@elmeletiOraPercben		INT = 45,
 | 
						|
    @gyakorlatiOraPercben	INT = 60,
 | 
						|
	@iskolaErdekuSzamit		BIT,
 | 
						|
	@isNemet				BIT 
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
	SET NOCOUNT ON;
 | 
						|
 | 
						|
	--Osztályhoz tartozó tanulók
 | 
						|
	DECLARE @NaploSorszam TABLE (
 | 
						|
		TanuloId INT
 | 
						|
		,Sorszam INT	
 | 
						|
		)
 | 
						|
 | 
						|
	INSERT INTO @NaploSorszam
 | 
						|
	EXEC sp_GetDokumentumTanuloNaploSorszam
 | 
						|
		@osztalyId = @osztalyId
 | 
						|
 | 
						|
	DECLARE @Tanulok TABLE (TanuloId int, KilepesDatum DATE, NaploSorszam INT)
 | 
						|
	INSERT INTO @Tanulok
 | 
						|
	SELECT 
 | 
						|
		t.TanuloId
 | 
						|
		,KilepesDatum 
 | 
						|
		,n.Sorszam
 | 
						|
	FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') t
 | 
						|
		INNER JOIN @NaploSorszam n ON n.TanuloId = t.TanuloId
 | 
						|
 | 
						|
	--Intézmény, tanév
 | 
						|
  SELECT DISTINCT 
 | 
						|
	ocs.C_NEV					OsztalyNev
 | 
						|
	,o.C_OSZTALYNAPLOLEIRASA	OsztalyMegjegyzes
 | 
						|
	,o.C_OSZTALYFONOKID			PartnerID
 | 
						|
	,IIF(@isNemet = 0, ofo.C_NYOMTATASINEV, ofo.C_UTONEV + ' ' + ofo.C_VEZETEKNEV)		Osztalyfonok
 | 
						|
	,i.C_IGAZGATONEVE			IntezmenyVezeto
 | 
						|
	,i.C_NEV					IntezmenyNeve
 | 
						|
	,i.C_IRANYITOSZAM			IntezmenyIranyitoszam
 | 
						|
	,i.C_VAROS					IntezmenyVaros
 | 
						|
	,i.C_CIME					IntezmenyCime
 | 
						|
	,i.C_OMKOD					IntezmenyOMKod
 | 
						|
	,IIF(@isNemet = 0, FORMAT(o.C_OSZTALYNAPLOMEGNYITASA, 'yyyy. MM. dd.'), FORMAT(o.C_OSZTALYNAPLOMEGNYITASA, 'dd. MM. yyyy')) NaploMegnyitasanakDatuma
 | 
						|
	,IIF(@isNemet = 0, FORMAT(o.C_OSZTALYNAPLOZARASA, 'yyyy. MM. dd.'), FORMAT(o.C_OSZTALYNAPLOZARASA, 'dd. MM. yyyy'))			NaploZarasanakDatuma 
 | 
						|
	,tanev.C_NEV TANEV
 | 
						|
	,(SELECT COUNT(TanuloId) FROM @Tanulok) TanuloSzam
 | 
						|
	,(SELECT MIN(NaploSorszam) FROM @Tanulok) MinNaploSorszam
 | 
						|
	,(SELECT MAX(NaploSorszam) FROM @Tanulok) MaxNaploSorszam
 | 
						|
  FROM T_OSZTALYCSOPORT_OSSZES ocs 
 | 
						|
  	INNER JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID and o.torolt='F'
 | 
						|
  	LEFT JOIN T_FELHASZNALO_OSSZES ofo ON ofo.ID = o.C_OSZTALYFONOKID 
 | 
						|
  	INNER JOIN T_INTEZMENYADATOK_OSSZES i on i.C_INTEZMENYID=ocs.C_INTEZMENYID AND i.C_TANEVID = @tanevId
 | 
						|
	INNER JOIN T_TANEV_OSSZES tanev ON tanev.ID = i.C_TANEVID and tanev.TOROLT = 'F'
 | 
						|
  WHERE ocs.ID = @osztalyId 
 | 
						|
 | 
						|
	--Osztály, évfolyam
 | 
						|
	SELECT 
 | 
						|
		T_OSZTALYCSOPORT_OSSZES.C_NEV,
 | 
						|
		T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA
 | 
						|
	FROM T_OSZTALYCSOPORT_OSSZES 
 | 
						|
	WHERE 
 | 
						|
		T_OSZTALYCSOPORT_OSSZES.ID = @osztalyId
 | 
						|
 | 
						|
	--Tanuló adatok
 | 
						|
	SELECT DISTINCT 
 | 
						|
		felhasznalo.ID TanuloId,
 | 
						|
		felhasznalo.Azonosito,
 | 
						|
		IIF(@isNemet = 0, felhasznalo.Nev, felhasznalo.Elotag + ' '  + felhasznalo.VezetekNev) Nev,
 | 
						|
		IIF(@isNemet = 0, FORMAT(felhasznalo.SzuletesiDatum, 'yyyy. MM. dd.'), FORMAT(felhasznalo.SzuletesiDatum, 'dd. MM. yyyy')) SzuletesiDatum,
 | 
						|
		felhasznalo.SzuletesiHely,
 | 
						|
		IIF(@isNemet = 0, allampolgarsag.C_NAME, dbo.fnGetDokumentumNemet(felhasznalo.Allampolgarsag)) Allampolgarsag,
 | 
						|
		felhasznalo.Anyjaneve,
 | 
						|
		IIF(@isNemet = 0, szorszag.C_NAME, dbo.fnGetDokumentumNemet(felhasznalo.SzuletesiOrszag)) SzuletesiOrszag,
 | 
						|
		felhasznalo.TorzslapSzam,
 | 
						|
		gondviselo.Gondviselok GondviseloNeve,
 | 
						|
		naploSorszam.Sorszam NaploSorszam,
 | 
						|
		Adatvaltozas.Feljegyzes Adatvaltozas,
 | 
						|
		felhasznalo.KilepesDatum,
 | 
						|
		felhasznalo.Nev Nev2
 | 
						|
	INTO #TanuloAdatok
 | 
						|
	FROM
 | 
						|
		(
 | 
						|
			SELECT 
 | 
						|
				 T_FELHASZNALO_OSSZES.ID AS ID,
 | 
						|
				 T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO Azonosito,
 | 
						|
				 T_FELHASZNALO_OSSZES.C_NYOMTATASINEV Nev,
 | 
						|
				 T_FELHASZNALO_OSSZES.C_VEZETEKNEV VezetekNev,
 | 
						|
				 T_FELHASZNALO_OSSZES.C_UTONEV Elotag,
 | 
						|
				 T_FELHASZNALO_OSSZES.C_SZULETESIDATUM SzuletesiDatum,
 | 
						|
				 T_FELHASZNALO_OSSZES.C_SZULETESIHELY SzuletesiHely,
 | 
						|
				 T_FELHASZNALO_OSSZES.C_SZULETESIORSZAG SzuletesiOrszag,
 | 
						|
				 T_FELHASZNALO_OSSZES.C_ALLAMPOLGARSAGA Allampolgarsag,
 | 
						|
				 IIF(@isNemet = 0, T_FELHASZNALO_OSSZES.C_ANYJANEVE, LTRIM(SUBSTRING(C_ANYJANEVE, C_ANYJANEVEELVALASZTO + 1 , LEN(C_ANYJANEVE)-C_ANYJANEVEELVALASZTO)) + ' ' + LTRIM(SUBSTRING(C_ANYJANEVE, 0, C_ANYJANEVEELVALASZTO + 1))) Anyjaneve,
 | 
						|
				 T_FELHASZNALO_OSSZES.C_NYILVANTARTASISZAM TorzslapSzam,
 | 
						|
				 TANCSOPORT.KilepesDatum
 | 
						|
				 FROM T_FELHASZNALO_OSSZES          
 | 
						|
					INNER JOIN @Tanulok TANCSOPORT
 | 
						|
						ON TANCSOPORT.TanuloId = T_FELHASZNALO_OSSZES.ID 
 | 
						|
				 WHERE  
 | 
						|
					T_FELHASZNALO_OSSZES.C_TANEVID = @tanevId
 | 
						|
		) felhasznalo
 | 
						|
	INNER JOIN T_DICTIONARYITEMBASE_OSSZES allampolgarsag ON allampolgarsag.ID = felhasznalo.Allampolgarsag
 | 
						|
	INNER JOIN T_DICTIONARYITEMBASE_OSSZES szorszag ON szorszag.ID = felhasznalo.SzuletesiOrszag
 | 
						|
	LEFT JOIN 
 | 
						|
			(
 | 
						|
			SELECT DISTINCT
 | 
						|
				g.C_TANULOID TanuloId
 | 
						|
				,STUFF((SELECT  ' , ' + C_NEV + IIF(@isNemet = 0, ' (' + d.C_NAME +')', '')
 | 
						|
						FROM T_GONDVISELO_OSSZES bg		
 | 
						|
							INNER JOIN T_DICTIONARYITEMBASE_OSSZES d on d.ID = bg.C_ROKONSAGFOKA AND d.C_TANEVID = bg.C_TANEVID				
 | 
						|
						WHERE 
 | 
						|
							bg.C_TANULOID=g.C_TANULOID
 | 
						|
							AND bg.TOROLT = 'F'
 | 
						|
						FOR XML PATH(''), TYPE)
 | 
						|
					.value('.','NVARCHAR(MAX)'),1,3,'') Gondviselok
 | 
						|
			FROM T_GONDVISELO_OSSZES g
 | 
						|
			) gondviselo on felhasznalo.ID = gondviselo.TanuloId
 | 
						|
	LEFT JOIN @NaploSorszam naploSorszam on naploSorszam.TanuloId = felhasznalo.ID
 | 
						|
	LEFT JOIN (SELECT DISTINCT
 | 
						|
					hatarozat.TanuloId
 | 
						|
					,STUFF((SELECT  ' | ' + CAST(Tartalom AS VARCHAR(max)) 
 | 
						|
							FROM fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) bhatarozat 							
 | 
						|
							WHERE 
 | 
						|
								bhatarozat.TanuloId=hatarozat.TanuloId
 | 
						|
								AND Tipusa = 1545
 | 
						|
							FOR XML PATH(''), TYPE)
 | 
						|
						.value('.','NVARCHAR(MAX)'),1,2,' ') Feljegyzes
 | 
						|
				FROM fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) hatarozat
 | 
						|
				WHERE
 | 
						|
					Tipusa = 1545 --Feljegyzések személyi adatok változásához:
 | 
						|
				) Adatvaltozas on Adatvaltozas.TanuloId = felhasznalo.ID
 | 
						|
	ORDER BY felhasznalo.Nev
 | 
						|
 | 
						|
	SELECT * FROM #TanuloAdatok ORDER BY NaploSorszam
 | 
						|
 | 
						|
	--Határozat
 | 
						|
	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')
 | 
						|
 | 
						|
	UNION 
 | 
						|
 | 
						|
	SELECT DISTINCT
 | 
						|
		C_TANULOID			TanuloId
 | 
						|
		,tcs.C_VEGZARADEK		Bejegyzes
 | 
						|
	FROM T_TANULOCSOPORT_OSSZES tcs
 | 
						|
	WHERE 
 | 
						|
		tcs.C_TANULOID IN (SELECT TanuloId from @Tanulok)
 | 
						|
		AND TOROLT = 'F'
 | 
						|
		AND C_VEGZARADEK IS NOT NULL 
 | 
						|
		AND LEN(C_VEGZARADEK) > 0
 | 
						|
		AND C_TANEVID = @tanevId
 | 
						|
		AND C_OSZTALYCSOPORTID IN (SELECT ID FROM T_OSZTALY_OSSZES WHERE TOROLT = 'F')
 | 
						|
 | 
						|
	--Egyéb bejegyzések 
 | 
						|
	SELECT 
 | 
						|
		 Tanuloid
 | 
						|
		 ,Bejegyzes
 | 
						|
		 ,Tipus_DNAME
 | 
						|
	FROM 
 | 
						|
	(
 | 
						|
		SELECT 
 | 
						|
			bejegyzes.TanuloId	TanuloId
 | 
						|
			,Tartalom			Bejegyzes 
 | 
						|
			,C_NAME				Tipus_DNAME		
 | 
						|
			,bejegyzes.Datum	Datum
 | 
						|
			FROM fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) bejegyzes
 | 
						|
			INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = Tipusa AND C_TANEVID = @tanevId AND d.TOROLT = 'F'
 | 
						|
		WHERE
 | 
						|
			Tipusa IN (1539, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 5477, 5478, 5478, 5479, 5481, 5480)
 | 
						|
 | 
						|
		UNION 
 | 
						|
 | 
						|
		SELECT 
 | 
						|
			s.TanuloId tanuloId 
 | 
						|
			, mentesseg.mentessegOka
 | 
						|
			, ISNULL(IIF(mentesseg = '', '', LEFT(mentesseg, LEN(mentesseg)- 1)),' ') + ' (' + mentesseg.tantargyNev +')'
 | 
						|
			, C_KEZDETE
 | 
						|
		FROM @Tanulok s
 | 
						|
		LEFT JOIN  (SELECT DISTINCT 
 | 
						|
								mentesseg.C_TANULOID tanuloId
 | 
						|
								, IIF(t.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN + ' (' + t.C_NEV + ')', t.C_NEV) tantargyNev
 | 
						|
								, mentesseg.C_MENTESSEGOKA mentessegOka
 | 
						|
								, IIF(mentesseg.C_ERTEKELESMENTESITES = 'T', 'Értékelésmentesség, ', '') + IIF(mentesseg.C_ORAMENTESITES = 'T', 'Óramentesség, ', '') as mentesseg 
 | 
						|
								, mentesseg.C_KEZDETE
 | 
						|
				FROM T_TANULOMENTESSEG_OSSZES mentesseg
 | 
						|
					INNER JOIN T_TANTARGY_OSSZES t on t.ID = mentesseg.C_TANTARGYID
 | 
						|
					INNER JOIN @Tanulok s ON s.TanuloId = mentesseg.C_TANULOID
 | 
						|
				WHERE 
 | 
						|
					mentesseg.TOROLT='F' 
 | 
						|
					AND mentesseg.C_TANEVID = @tanevId
 | 
						|
				) mentesseg ON s.TanuloId=mentesseg.TANULOID
 | 
						|
		)a
 | 
						|
		ORDER BY Datum
 | 
						|
 | 
						|
	-- 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 = 0,
 | 
						|
		@kesesTipus = @kesesTipus,
 | 
						|
		@elmeletiOraPercben = @elmeletiOraPercben,
 | 
						|
		@gyakorlatiOraPercben = @gyakorlatiOraPercben,
 | 
						|
		@ertekelesTipus = @ertekelesTipus,
 | 
						|
		@iskolaErdekuSzamit = @iskolaErdekuSzamit
 | 
						|
	
 | 
						|
	SELECT 
 | 
						|
		TanuloId 
 | 
						|
		,Igazolt 
 | 
						|
		,Igazolatlan 
 | 
						|
		,ElmeletIgazolt 
 | 
						|
		,ElmeletIgazolatlan 
 | 
						|
		,GyakorlatIgazolt 
 | 
						|
		,GyakorlatIgazolatlan 
 | 
						|
		,Osszes	
 | 
						|
	FROM @Mulasztasok
 | 
						|
 | 
						|
	-- É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,
 | 
						|
		@isNemet = @isNemet
 | 
						|
 | 
						|
	SELECT 
 | 
						|
		TanuloId			
 | 
						|
		, Targy				
 | 
						|
		, Ertekeles	
 | 
						|
		, Jegyzet	
 | 
						|
		, ErtekelesJegyzettel				
 | 
						|
		,SzovegesErtekeles	
 | 
						|
		, Oraszam		
 | 
						|
		, RENDEZ
 | 
						|
	FROM 
 | 
						|
	@Ertekelesek
 | 
						|
 | 
						|
	--Tanuló lista
 | 
						|
	SELECT 
 | 
						|
		Nev
 | 
						|
		,NaploSorszam
 | 
						|
		,TorzslapSzam 
 | 
						|
		,IIF(@isNemet = 0, FORMAT(KilepesDatum, 'yyyy. MM. dd.'), FORMAT(KilepesDatum, 'dd. MM. yyyy')) KilepesDatum
 | 
						|
	FROM #TanuloAdatok
 | 
						|
	/*WHERE 
 | 
						|
		KilepesDatum IS NULL OR KilepesDatum >= ISNULL((SELECT C_OSZTALYNAPLOZARASA FROM T_OSZTALY_OSSZES WHERE ID = @osztalyId), GETDATE())*/
 | 
						|
	ORDER BY NaploSorszam
 | 
						|
 | 
						|
	DROP TABLE #TanuloAdatok 
 | 
						|
END 
 | 
						|
 |