348 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			348 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
SET ANSI_NULLS ON
 | 
						|
GO
 | 
						|
SET QUOTED_IDENTIFIER ON
 | 
						|
GO
 | 
						|
 | 
						|
DROP PROCEDURE IF EXISTS sp_GetErtesitesAltEsMulAdatok 
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE sp_GetErtesitesAltEsMulAdatok
 | 
						|
	@pOsztalyId				INT,
 | 
						|
	@pTanevId				INT,
 | 
						|
	@pTankoteles			BIT,
 | 
						|
	@pIskolaErdekuSzamit	BIT,
 | 
						|
  @pIsSzulonek BIT = 1,
 | 
						|
  @pIgazolatlanOrakSzama INT
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
	SET NOCOUNT ON;
 | 
						|
 | 
						|
	--Mulasztasok
 | 
						|
	DECLARE @Mulasztasok TABLE (
 | 
						|
		TanuloId				INT
 | 
						|
		,TanuloCsoportId		INT
 | 
						|
		,Igazolt				INT
 | 
						|
		,Igazolatlan			INT
 | 
						|
		,ElmeletIgazolt			INT
 | 
						|
		,ElmeletIgazolatlan		INT
 | 
						|
		,GyakorlatIgazolt		INT
 | 
						|
		,GyakorlatIgazolatlan	INT
 | 
						|
		,ElmeletOsszes			INT
 | 
						|
		,GyakorlatOsszes		INT
 | 
						|
		,Osszes					INT		
 | 
						|
		)
 | 
						|
 | 
						|
	INSERT INTO @Mulasztasok
 | 
						|
	EXEC sp_GetDokumentumMulasztasok
 | 
						|
		@osztalyID = @pOsztalyId,
 | 
						|
		@tanevId = @pTanevId,
 | 
						|
		@elmeletiOraPercben = 45,
 | 
						|
		@gyakorlatiOraPercben = 45,
 | 
						|
		@ertekelesTipus = 1520, --évvégi
 | 
						|
		@iskolaErdekuSzamit = @pIskolaErdekuSzamit
 | 
						|
 | 
						|
  SELECT
 | 
						|
	 TanuloId Id
 | 
						|
	,TanuloCsoportId
 | 
						|
	,BelepesDatum
 | 
						|
	,ISNULL(KilepesDatum, GETDATE()) KilepesDatum
 | 
						|
  INTO #students
 | 
						|
  FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'T')
 | 
						|
 | 
						|
	DECLARE @Gondviselok TABLE (TanuloId INT, GondviseloId INT, RokonsagiFokId INT, GondviseloNev NVARCHAR(MAX))
 | 
						|
	INSERT INTO @Gondviselok
 | 
						|
	SELECT 		 
 | 
						|
		 TanuloId 
 | 
						|
		,GondviseloId
 | 
						|
		,RokonsagifokId
 | 
						|
		,GondviseloNev
 | 
						|
	FROM fnGetDokumentumGondviselok (@pOsztalyId, @pTanevId, 'F', 'T')
 | 
						|
 | 
						|
	DECLARE @TanuloCimTable TABLE (FelhasznaloId INT, Cim NVARCHAR(MAX), Cimtipusa INT)
 | 
						|
	INSERT INTO @TanuloCimTable
 | 
						|
	SELECT DISTINCT
 | 
						|
		TanuloId
 | 
						|
		,STUFF((
 | 
						|
			SELECT DISTINCT CAST(btemp.Cim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
 | 
						|
			FROM fnGetDokumentumTanuloOrGondviseloCim (0, @pTanevId, @pOsztalyId) btemp
 | 
						|
			WHERE 
 | 
						|
				temp.TanuloId = btemp.TanuloId
 | 
						|
				AND temp.CimTipusa = btemp.CimTipusa
 | 
						|
			FOR XML PATH(''), TYPE)
 | 
						|
		.value('.','NVARCHAR(MAX)'),1,0,'')
 | 
						|
		,temp.CimTipusa  
 | 
						|
	FROM fnGetDokumentumTanuloOrGondviseloCim (0, @pTanevId, @pOsztalyId) temp	
 | 
						|
 | 
						|
	DECLARE @GondViseloCimTable TABLE (GondviseloId INT, Cim NVARCHAR(MAX), Cimtipusa INT)
 | 
						|
	INSERT INTO @GondViseloCimTable
 | 
						|
	SELECT DISTINCT
 | 
						|
		GondviseloId
 | 
						|
		,STUFF((
 | 
						|
			SELECT DISTINCT CAST(btemp.Cim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
 | 
						|
			FROM fnGetDokumentumTanuloOrGondviseloCim (1, @pTanevId, @pOsztalyId) btemp
 | 
						|
			WHERE 
 | 
						|
				temp.GondviseloId = btemp.GondviseloId
 | 
						|
				AND temp.CimTipusa = btemp.CimTipusa
 | 
						|
			FOR XML PATH(''), TYPE)
 | 
						|
		.value('.','NVARCHAR(MAX)'),1,0,'')
 | 
						|
		,temp.CimTipusa 
 | 
						|
	FROM fnGetDokumentumTanuloOrGondviseloCim (1, @pTanevId, @pOsztalyId) temp
 | 
						|
	
 | 
						|
		
 | 
						|
	DECLARE @EmailCimTableTemp TABLE (FelhasznaloId INT, EmailCim NVARCHAR(MAX), GondviseloId INT)
 | 
						|
	INSERT INTO @EmailCimTableTemp
 | 
						|
	SELECT 
 | 
						|
		TanuloId
 | 
						|
		,C_EMAILCIM 
 | 
						|
		,C_GONDVISELOID
 | 
						|
	FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'T') tanulo
 | 
						|
		INNER JOIN T_EMAIL_OSSZES email ON email.C_FELHASZNALOID = TanuloId
 | 
						|
	WHERE
 | 
						|
		email.TOROLT = 'F'
 | 
						|
		AND email.C_TANEVID = @pTanevId
 | 
						|
		AND LEN(C_EMAILCIM) > 0
 | 
						|
 | 
						|
	UNION
 | 
						|
 | 
						|
	SELECT 
 | 
						|
		TanuloId
 | 
						|
		,C_EMAILCIM 
 | 
						|
		,GondviseloId
 | 
						|
	FROM @Gondviselok 
 | 
						|
		INNER JOIN T_EMAIL_OSSZES email ON email.C_GONDVISELOID = GondviseloId
 | 
						|
	WHERE
 | 
						|
		email.TOROLT = 'F'
 | 
						|
		AND email.C_TANEVID = @pTanevId
 | 
						|
		AND LEN(C_EMAILCIM) > 0
 | 
						|
 | 
						|
	DECLARE @EmailCimTanuloTable TABLE (FelhasznaloId INT, EmailCim NVARCHAR(MAX))
 | 
						|
	INSERT INTO @EmailCimTanuloTable
 | 
						|
	SELECT DISTINCT
 | 
						|
		FelhasznaloId
 | 
						|
		,STUFF((
 | 
						|
			SELECT DISTINCT CAST(btemp.EmailCim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
 | 
						|
			FROM @EmailCimTableTemp btemp
 | 
						|
			WHERE 
 | 
						|
				temp.FelhasznaloId = btemp.FelhasznaloId
 | 
						|
				AND btemp.GondviseloId IS NULL
 | 
						|
			FOR XML PATH(''), TYPE)
 | 
						|
		.value('.','NVARCHAR(MAX)'),1,0,'') Email
 | 
						|
	FROM @EmailCimTableTemp temp
 | 
						|
	WHERE
 | 
						|
		GondviseloId IS NULL
 | 
						|
 | 
						|
	DECLARE @EmailCimGondviseloTable TABLE (FelhasznaloId INT, GondviseloId INT, EmailCim NVARCHAR(MAX))
 | 
						|
	INSERT INTO @EmailCimGondviseloTable
 | 
						|
	SELECT DISTINCT
 | 
						|
		FelhasznaloId
 | 
						|
		,GondviseloId
 | 
						|
		,STUFF((
 | 
						|
			SELECT DISTINCT CAST(btemp.EmailCim AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
 | 
						|
			FROM @EmailCimTableTemp btemp
 | 
						|
			WHERE 
 | 
						|
				temp.GondviseloId = btemp.GondviseloId
 | 
						|
				AND btemp.GondviseloId IS NOT NULL
 | 
						|
			FOR XML PATH(''), TYPE)
 | 
						|
		.value('.','NVARCHAR(MAX)'),1,0,'') Email
 | 
						|
	FROM @EmailCimTableTemp temp
 | 
						|
	WHERE 
 | 
						|
		GondviseloId IS NOT NULL
 | 
						|
 | 
						|
	DECLARE @TelefonTableTemp TABLE (FelhasznaloId INT, Telefon NVARCHAR(MAX),  GondviseloId INT)
 | 
						|
	INSERT INTO @TelefonTableTemp
 | 
						|
	SELECT 
 | 
						|
		TanuloId
 | 
						|
		,C_TELEFONSZAM
 | 
						|
		,C_GONDVISELOID
 | 
						|
	FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'T') tanulo
 | 
						|
		INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_FELHASZNALOID = TanuloId
 | 
						|
	WHERE
 | 
						|
		telefon.TOROLT = 'F'
 | 
						|
		AND telefon.C_TANEVID = @pTanevId
 | 
						|
		AND LEN(telefon.C_TELEFONSZAM) > 0 
 | 
						|
 | 
						|
	UNION
 | 
						|
 | 
						|
	SELECT 
 | 
						|
		TanuloId
 | 
						|
		,C_TELEFONSZAM
 | 
						|
		,GondviseloId
 | 
						|
	FROM @Gondviselok gondviselo
 | 
						|
		INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_GONDVISELOID = GondviseloId
 | 
						|
	WHERE
 | 
						|
		telefon.TOROLT = 'F'
 | 
						|
		AND telefon.C_TANEVID = @pTanevId
 | 
						|
		AND LEN(telefon.C_TELEFONSZAM) > 0 
 | 
						|
 | 
						|
	DECLARE @TanuloTelefonTable TABLE (FelhasznaloId INT, Telefon NVARCHAR(MAX))
 | 
						|
	INSERT INTO @TanuloTelefonTable
 | 
						|
	SELECT DISTINCT
 | 
						|
		FelhasznaloId
 | 
						|
		,STUFF((
 | 
						|
			SELECT DISTINCT CAST(btemp.Telefon AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
 | 
						|
			FROM @TelefonTableTemp btemp
 | 
						|
			WHERE 
 | 
						|
				temp.FelhasznaloId = btemp.FelhasznaloId
 | 
						|
				AND GondviseloId IS NULL
 | 
						|
			FOR XML PATH(''), TYPE)
 | 
						|
		.value('.','NVARCHAR(MAX)'),1,0,'') 
 | 
						|
	FROM @TelefonTableTemp temp
 | 
						|
	WHERE 
 | 
						|
		GondviseloId IS NULL
 | 
						|
 | 
						|
	DECLARE @GondviseloTelefonTable TABLE (FelhasznaloID INT, GondviseloId INT, Telefon NVARCHAR(MAX))
 | 
						|
	INSERT INTO @GondviseloTelefonTable
 | 
						|
	SELECT DISTINCT
 | 
						|
		FelhasznaloId
 | 
						|
		,GondviseloId
 | 
						|
		,STUFF((
 | 
						|
			SELECT DISTINCT CAST(btemp.Telefon AS NVARCHAR(MAX))  + CHAR(13) + CHAR(10)
 | 
						|
			FROM @TelefonTableTemp btemp
 | 
						|
			WHERE 
 | 
						|
				temp.FelhasznaloId = btemp.FelhasznaloId
 | 
						|
				and temp.GondviseloId = btemp.GondviseloId
 | 
						|
				AND GondviseloId IS NOT NULL
 | 
						|
			FOR XML PATH(''), TYPE)
 | 
						|
		.value('.','NVARCHAR(MAX)'),1,0,'') 
 | 
						|
	FROM @TelefonTableTemp temp
 | 
						|
	WHERE 
 | 
						|
		GondviseloId IS NOT NULL
 | 
						|
 | 
						|
	SELECT 
 | 
						|
		TanuloId
 | 
						|
		,Gondviselok.GondviseloId
 | 
						|
		,Gondviselok.GondviseloNev	GondviseloNev
 | 
						|
		,Cim					GondviseloAllandoCim
 | 
						|
		,Telefon				GondviseloTelefon
 | 
						|
		,RokonsagiFok.C_NAME	GondviseloRokonsagiFoka
 | 
						|
	INTO #GondviseloAdatok
 | 
						|
	FROM @Gondviselok Gondviselok
 | 
						|
		INNER JOIN T_DICTIONARYITEMBASE_OSSZES RokonsagiFok ON RokonsagiFok.Id = Gondviselok.RokonsagiFokId AND RokonsagiFok.C_TANEVID = @pTanevId
 | 
						|
		LEFT JOIN @GondViseloCimTable GondviseloCim ON GondviseloCim.GondviseloId = Gondviselok.GondviseloId
 | 
						|
		LEFT JOIN @GondviseloTelefonTable GondviseloTelefon	ON GondviseloTelefon.GondviseloId = Gondviselok.GondviseloId
 | 
						|
	ORDER BY TanuloId
 | 
						|
 | 
						|
	--Tanulói adatok
 | 
						|
  SELECT
 | 
						|
		TanuloAdatok.ID AS TanuloId
 | 
						|
		,OsztalyTanuloi.TanuloCsoportId
 | 
						|
		,TanuloAdatok.C_NYOMTATASINEV		TANULONEV
 | 
						|
		,TanuloAdatok.C_ANYJANEVE			ANYJANEVE
 | 
						|
		,TanuloAdatok.C_SZULETESIHELY		SZULETESIHELY
 | 
						|
		,TanuloAdatok.C_SZULETESIDATUM		SZULETESIDATUM
 | 
						|
		,TanuloAdatok.C_NYILVANTARTASISZAM	TorzslapSzam
 | 
						|
		,IntezmenyAdatok.C_IGAZGATONEVE 	INT_IGAZGATO_NEV
 | 
						|
		,IntezmenyAdatok.C_NEV				INT_NEV
 | 
						|
		,IntezmenyAdatok.C_OMKOD			INT_OMKOD
 | 
						|
		,IntezmenyAdatok.C_VAROS			INT_VAROS
 | 
						|
		,dbo.fnGetDokumentumIntezmenyCime(@pTanevId) INT_CIM
 | 
						|
		,(SELECT C_NEV FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @pOsztalyId)	OSZTALYCSOPORT_NEV
 | 
						|
		,Osztalyfonok.C_NYOMTATASINEV		OSZTFO_NEV
 | 
						|
		,ISNULL(Mulasztas.Igazolt,0)		IGAZOLT
 | 
						|
		,ISNULL(Mulasztas.Igazolatlan,0)	IGAZOLATLAN
 | 
						|
		,TanuloAllandoCimTable.CIM					TanuloAllandoCim
 | 
						|
		,TanuloTartozkodasiCimTable.Cim				TanuloTartozkodasiCim
 | 
						|
    ,TanuloAdatok.C_OKTATASIAZONOSITO AS TanuloOktAzon
 | 
						|
  INTO #tanuloiAdatok
 | 
						|
	FROM #students OsztalyTanuloi
 | 
						|
		INNER JOIN T_FELHASZNALO_OSSZES TanuloAdatok ON TanuloAdatok.ID = OsztalyTanuloi.ID AND TanuloAdatok.TOROLT = 'F'
 | 
						|
		INNER JOIN T_TANULO_OSSZES Tanulo ON Tanulo.ID = TanuloAdatok.ID AND Tanulo.TOROLT = 'F'
 | 
						|
		INNER JOIN T_INTEZMENYADATOK_OSSZES IntezmenyAdatok ON IntezmenyAdatok.C_TANEVID = TanuloAdatok.C_TANEVID 
 | 
						|
												AND IntezmenyAdatok.TOROLT = 'F'
 | 
						|
    INNER JOIN T_TANULOTANUGYIADATOK AS TanugyiAdatok ON TanugyiAdatok.C_TANULOCSOPORTID = OsztalyTanuloi.TanuloCsoportId
 | 
						|
		LEFT JOIN T_OSZTALY_OSSZES Osztaly ON Osztaly.ID = @pOsztalyId AND Osztaly.TOROLT = 'F'
 | 
						|
		LEFT JOIN T_FELHASZNALO_OSSZES Osztalyfonok ON Osztalyfonok.ID = Osztaly.C_OSZTALYFONOKID AND Osztalyfonok.TOROLT = 'F'
 | 
						|
		LEFT JOIN @Mulasztasok Mulasztas ON Mulasztas.TanuloId = TanuloAdatok.ID AND Mulasztas.TanuloCsoportId = OsztalyTanuloi.TanuloCsoportId
 | 
						|
		LEFT JOIN @TanuloCimTable TanuloAllandoCimTable ON TanuloAllandoCimTable.FelhasznaloId =  OsztalyTanuloi.ID AND TanuloAllandoCimTable.Cimtipusa = 907
 | 
						|
		LEFT JOIN @TanuloCimTable TanuloTartozkodasiCimTable ON TanuloTartozkodasiCimTable.FelhasznaloId = OsztalyTanuloi.ID AND TanuloTartozkodasiCimTable.Cimtipusa = 909
 | 
						|
	WHERE
 | 
						|
		TanugyiAdatok.C_TANKOTELEZETT = IIF(@pTankoteles = 0, 'F', 'T')
 | 
						|
	ORDER BY TanuloAdatok.C_NYOMTATASINEV
 | 
						|
 | 
						|
  IF @pIsSzulonek = 1 BEGIN
 | 
						|
		SELECT DISTINCT
 | 
						|
      ta.*
 | 
						|
			,GondviseloAdatok.GondviseloNev
 | 
						|
			,GondviseloAdatok.GondviseloAllandoCim
 | 
						|
			,GondviseloAdatok.GondviseloTelefon
 | 
						|
			,GondviseloRokonsagiFoka
 | 
						|
		FROM #tanuloiAdatok AS ta
 | 
						|
      LEFT JOIN #GondviseloAdatok GondviseloAdatok ON GondviseloAdatok.TanuloId =  ta.TanuloId
 | 
						|
    WHERE
 | 
						|
      ta.IGAZOLATLAN >= @pIgazolatlanOrakSzama
 | 
						|
		ORDER BY TANULONEV
 | 
						|
  END
 | 
						|
  ELSE BEGIN
 | 
						|
		SELECT DISTINCT
 | 
						|
      ta.*
 | 
						|
		FROM #tanuloiAdatok AS ta
 | 
						|
		WHERE
 | 
						|
      ta.Igazolatlan >= @pIgazolatlanOrakSzama
 | 
						|
		ORDER BY TANULONEV
 | 
						|
  END
 | 
						|
 | 
						|
		--Mulasztások részletezése
 | 
						|
		SELECT 
 | 
						|
			 Mulasztasok.TanuloId
 | 
						|
			,Mulasztasok.TanuloCsoportId
 | 
						|
			,Mulasztasok.OsztalyCsoportId
 | 
						|
			,Mulasztasok.OsztalyCsoportNev
 | 
						|
			,MulasztasTipus.C_NAME	Tipusa
 | 
						|
			,Mulasztasok.Igazolt
 | 
						|
			,Mulasztasok.IgazolasTipusa
 | 
						|
			,Mulasztasok.KesesPercben
 | 
						|
			,Mulasztasok.Datum
 | 
						|
			,Mulasztasok.Oraszam
 | 
						|
			,Mulasztasok.TantargyId
 | 
						|
			,Mulasztasok.TantargyNev 
 | 
						|
		FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes(@pTanevId, @pOsztalyId, @pIskolaErdekuSzamit, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT) Mulasztasok
 | 
						|
			LEFT JOIN T_DICTIONARYITEMBASE_OSSZES MulasztasTipus ON MulasztasTipus.Id = Mulasztasok.Tipusa AND MulasztasTipus.C_TANEVID = @pTanevId
 | 
						|
      INNER JOIN #tanuloiAdatok AS ta ON ta.TanuloId = Mulasztasok.TanuloId AND ta.IGAZOLATLAN >= @pIgazolatlanOrakSzama
 | 
						|
		WHERE 
 | 
						|
			Mulasztasok.Igazolt = 'F'
 | 
						|
 | 
						|
    --Gondviselo adatok
 | 
						|
    SELECT * from #GondviseloAdatok AS Gondviselok
 | 
						|
      LEFT JOIN @Mulasztasok Mulasztasok ON Mulasztasok.TanuloId = Gondviselok.TanuloId
 | 
						|
      INNER JOIN #tanuloiAdatok AS ta ON ta.TanuloId = Mulasztasok.TanuloId AND ta.IGAZOLATLAN >= @pIgazolatlanOrakSzama
 | 
						|
 | 
						|
		--Iktatási adatok
 | 
						|
		DECLARE @IktatasAdatok TABLE (OsztalyId INT, Evfolyam INT, FeladatEllatasiHelyId INT, KepzesiForma INT, OsztalyFonokId INT, 
 | 
						|
			TantervId INT, SzakmaCsoport INT, Agazat INT, Szakkepesites INT, Reszszakkepesites INT,
 | 
						|
			OJCSJKeresztfeleves CHAR, OJTechnikaiOsztaly CHAR, OJNemzetisegi CHAR, OJKettannyelvu CHAR, OJNyelviElokeszito CHAR,
 | 
						|
			OJLogopediai CHAR, OJSportOsztaly CHAR, OJAranyJanosProgram CHAR, OJGyogypedagogiai CHAR)
 | 
						|
		INSERT INTO @IktatasAdatok
 | 
						|
		SELECT 
 | 
						|
			@pOsztalyId,
 | 
						|
			ocs.C_EVFOLYAMTIPUSA,
 | 
						|
			ocs.C_FELADATELLATASIHELYID,
 | 
						|
			o.C_KEPZESIFORMA,
 | 
						|
			o.C_OSZTALYFONOKID,
 | 
						|
			o.C_TANTERVID,
 | 
						|
			o.C_SZAKMACSOPORT,
 | 
						|
			o.C_AGAZAT,
 | 
						|
			o.C_SZAKKEPESITES,
 | 
						|
			o.C_RESZSZAKKEPESITES,
 | 
						|
			ocs.C_KERESZTFELEVES,
 | 
						|
			o.C_TECHNIKAIOSZTALY,
 | 
						|
			o.C_NEMZETISEGI,
 | 
						|
			o.C_KETTANNYELVU,
 | 
						|
			o.C_NYELVIELOKESZITO,
 | 
						|
			o.C_LOGOPEDIAI,
 | 
						|
			o.C_SPORT,
 | 
						|
			o.C_AJPROGRAM,
 | 
						|
			o.C_GYOGYPEDAGOGIAI
 | 
						|
		FROM T_OSZTALYCSOPORT_OSSZES ocs
 | 
						|
			INNER JOIN T_OSZTALY o ON o.ID = ocs.ID
 | 
						|
		WHERE ocs.ID = @pOsztalyId AND ocs.TOROLT = 'F'
 | 
						|
			AND ocs.C_TANEVID = @pTanevId;
 | 
						|
 | 
						|
		SELECT * from @IktatasAdatok;
 | 
						|
 | 
						|
	DROP TABLE #GondviseloAdatok
 | 
						|
  DROP TABLE #tanuloiAdatok
 | 
						|
  DROP TABLE #students
 | 
						|
 | 
						|
	END	
 | 
						|
 | 
						|
GO |