kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspGetErtesitesAltEsMulAdatok.sql
2024-03-13 00:33:46 +01:00

396 lines
No EOL
14 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspGetErtesitesAltEsMulAdatok
GO
CREATE PROCEDURE uspGetErtesitesAltEsMulAdatok
@pOsztalyId int
,@pTanevId int
,@pTankoteles bit
,@pIskolaErdekuSzamit bit
,@pIsSzulonek bit = 1
,@pIgazolatlanOrakSzama int
,@negyedevreSzamoltMulasztasok bit = 1
,@pKiiratkozottanulokMegjelenitese bit = 0
,@pIsMuveszetOktatasi bit = 0
,@pGondviseloIsTorvenyes bit = 0
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
)
DECLARE @Gondviselok TABLE (TanuloId INT, GondviseloId INT, RokonsagiFokId INT, GondviseloNev NVARCHAR(MAX))
DECLARE @TanuloCimTable TABLE (FelhasznaloId INT, Cim NVARCHAR(MAX), Cimtipusa INT)
DECLARE @GondViseloCimTable TABLE (GondviseloId INT, Cim NVARCHAR(MAX), Cimtipusa INT)
DECLARE @EmailCimTableTemp TABLE (FelhasznaloId INT, EmailCim NVARCHAR(MAX), GondviseloId INT, Alapertelmezett CHAR(1))
DECLARE @EmailCimTanuloTable TABLE (FelhasznaloId INT, EmailCim NVARCHAR(MAX))
DECLARE @EmailCimGondviseloTable TABLE (FelhasznaloId INT, GondviseloId INT, EmailCim NVARCHAR(MAX))
DECLARE @TelefonTableTemp TABLE (FelhasznaloId INT, Telefon NVARCHAR(MAX), GondviseloId INT, Alapertelmezett CHAR(1))
DECLARE @TanuloTelefonTable TABLE (FelhasznaloId INT, Telefon NVARCHAR(MAX))
DECLARE @GondviseloTelefonTable TABLE (FelhasznaloID INT, GondviseloId INT, Telefon NVARCHAR(MAX))
DECLARE @IktatasAdatok TABLE (
OsztalyId INT
,Evfolyam INT
,FeladatEllatasiHelyId INT
,KepzesiForma INT
,OsztalyFonokId INT
,TantervId INT
,SzakmaCsoport INT
,Agazat INT
,Szakkepesites INT
,Reszszakkepesites INT
,UjSzktAgazat int
,UjSzktSzakma int
,UjSzktSzakmairany int
,NktTanulmanyiTerulet int
,NktSzakkepesites int
,NktSzakirany int
,OJCSJKeresztfeleves CHAR
,OJTechnikaiOsztaly CHAR
,OJNemzetisegi CHAR
,OJKettannyelvu CHAR
,OJNyelviElokeszito CHAR
,OJIsGyogypedagogiaiLogopediai CHAR
,OJSportOsztaly CHAR
,OJAranyJanosProgram CHAR
)
CREATE TABLE #tanuloiAdatok (
TanuloId int
,TanuloCsoportId int
,TANULONEV nvarchar(510)
,ANYJANEVE nvarchar(128)
,SZULETESIHELY nvarchar(100)
,SZULETESIDATUM datetime
,TorzslapSzam nvarchar(100)
,INT_IGAZGATO_NEV nvarchar(510)
,INT_NEV nvarchar(510)
,INT_OMKOD nvarchar(40)
,INT_VAROS nvarchar(510)
,INT_CIM nvarchar(MAX)
,OSZTALYCSOPORT_NEV nvarchar(510)
,OSZTFO_NEV nvarchar(510)
,IGAZOLT int
,IGAZOLATLAN int
,OsszesMulasztas int
,OsszesIgazolt int
,OsszesIgazolatlan int
,TanuloAllandoCim nvarchar(MAX)
,TanuloTartozkodasiCim nvarchar(MAX)
,TanuloOktAzon nvarchar(40)
,HozottIgazolt int
,HozottIgazolatlan int
,HozottIgazoltKeses int
,HozottIgazolatlanKeses int
,BelepesDatum datetime
,TanevNeve nvarchar(10)
)
INSERT INTO @Mulasztasok
EXEC sp_GetDokumentumMulasztasok
@osztalyID = @pOsztalyId
,@tanevId = @pTanevId
,@elmeletiOraPercben = 45
,@gyakorlatiOraPercben = 45
,@ertekelesTipus = 1520 --évvégi
,@iskolaErdekuSzamit = @pIskolaErdekuSzamit
,@negyedevreSzamoltMulasztasok = @negyedevreSzamoltMulasztasok
,@isMuveszetOktatasi = @pIsMuveszetOktatasi
SELECT
TanuloId Id
,TanuloCsoportId
,BelepesDatum
,ISNULL(KilepesDatum, GETDATE()) KilepesDatum
INTO #students
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'T')
WHERE (@pKiiratkozottanulokMegjelenitese = 1 OR KilepesDatum IS NULL)
INSERT INTO @Gondviselok
SELECT
TanuloId
,GondviseloId
,RokonsagifokId
,GondviseloNev
FROM fnGetDokumentumGondviselok (@pOsztalyId, @pTanevId, 'F', 'T')
INSERT INTO @TanuloCimTable
SELECT DISTINCT
TanuloId
,STUFF((
SELECT DISTINCT CHAR(13) + CHAR(10) + CAST(btemp.Cim AS NVARCHAR(MAX))
FROM fnGetDokumentumTanuloOrGondviseloCim (0, @pTanevId, @pOsztalyId, NULL, NULL) btemp
WHERE temp.TanuloId = btemp.TanuloId
AND temp.CimTipusa = btemp.CimTipusa
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,'')
,temp.CimTipusa
FROM fnGetDokumentumTanuloOrGondviseloCim (0, @pTanevId, @pOsztalyId, NULL, NULL) temp
INSERT INTO @GondViseloCimTable
SELECT DISTINCT
GondviseloId
,STUFF((
SELECT DISTINCT CHAR(13) + CHAR(10) + CAST(btemp.Cim AS NVARCHAR(MAX))
FROM fnGetDokumentumTanuloOrGondviseloCim (1, @pTanevId, @pOsztalyId, NULL, 1) btemp
WHERE temp.GondviseloId = btemp.GondviseloId
AND temp.CimTipusa = btemp.CimTipusa
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,'')
,temp.CimTipusa
FROM fnGetDokumentumTanuloOrGondviseloCim (1, @pTanevId, @pOsztalyId, NULL, 1) temp
INSERT INTO @EmailCimTableTemp
SELECT
tanulo.Id TanuloId
,C_EMAILCIM
,C_GONDVISELOID
,C_ALAPERTELMEZETT
FROM #students tanulo
INNER JOIN T_EMAIL_OSSZES email ON email.C_FELHASZNALOID = tanulo.Id
WHERE email.TOROLT = 'F'
AND email.C_TANEVID = @pTanevId
AND LEN(C_EMAILCIM) > 0
INSERT INTO @EmailCimTanuloTable
SELECT DISTINCT
FelhasznaloId
,STUFF((
SELECT DISTINCT CHAR(13) + CHAR(10) + CAST(btemp.EmailCim AS NVARCHAR(MAX))
FROM @EmailCimTableTemp btemp
WHERE temp.FelhasznaloId = btemp.FelhasznaloId
AND btemp.GondviseloId IS NULL
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,'') Email
FROM @EmailCimTableTemp temp
WHERE GondviseloId IS NULL
INSERT INTO @EmailCimGondviseloTable
SELECT DISTINCT
FelhasznaloId
,GondviseloId
,STUFF((
SELECT DISTINCT CHAR(13) + CHAR(10) + CAST(btemp.EmailCim AS NVARCHAR(MAX))
FROM @EmailCimTableTemp btemp
WHERE temp.GondviseloId = btemp.GondviseloId
AND btemp.GondviseloId IS NOT NULL
AND btemp.Alapertelmezett = 'T'
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,'') Email
FROM @EmailCimTableTemp temp
WHERE GondviseloId IS NOT NULL
AND Alapertelmezett = 'T'
INSERT INTO @TelefonTableTemp
SELECT
tanulo.Id TanuloId
,C_TELEFONSZAM
,C_GONDVISELOID
,C_ALAPERTELMEZETT
FROM #students tanulo
INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_FELHASZNALOID = tanulo.Id
WHERE telefon.TOROLT = 'F'
AND telefon.C_TANEVID = @pTanevId
AND LEN(telefon.C_TELEFONSZAM) > 0
INSERT INTO @TanuloTelefonTable
SELECT DISTINCT
FelhasznaloId
,STUFF((
SELECT DISTINCT CHAR(13) + CHAR(10) + CAST(btemp.Telefon AS NVARCHAR(MAX))
FROM @TelefonTableTemp btemp
WHERE temp.FelhasznaloId = btemp.FelhasznaloId
AND btemp.GondviseloId IS NULL
FOR XML PATH(''), TYPE).value('.','NVARCHAR(MAX)'),1,2,'')
FROM @TelefonTableTemp temp
WHERE GondviseloId IS NULL
INSERT INTO @GondviseloTelefonTable
SELECT DISTINCT
FelhasznaloId
,GondviseloId
,STUFF((
SELECT DISTINCT CHAR(13) + CHAR(10) + CAST(btemp.Telefon AS NVARCHAR(MAX))
FROM @TelefonTableTemp btemp
WHERE temp.FelhasznaloId = btemp.FelhasznaloId
AND temp.GondviseloId = btemp.GondviseloId
AND btemp.GondviseloId IS NOT NULL
AND btemp.Alapertelmezett = 'T'
FOR XML PATH(''), TYPE).value('.','NVARCHAR(MAX)'),1,2,'')
FROM @TelefonTableTemp temp
WHERE GondviseloId IS NOT NULL
AND Alapertelmezett = 'T'
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 AND RokonsagiFok.TOROLT = 'F'
LEFT JOIN @GondViseloCimTable GondviseloCim ON GondviseloCim.GondviseloId = Gondviselok.GondviseloId
LEFT JOIN @GondviseloTelefonTable GondviseloTelefon ON GondviseloTelefon.GondviseloId = Gondviselok.GondviseloId
ORDER BY TanuloId
--Tanulói adatok
INSERT INTO #tanuloiAdatok
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
,ISNULL(Mulasztas.Igazolt,0) + ISNULL(Mulasztas.Igazolatlan,0) OsszesMulasztas
,ISNULL(Mulasztas.Igazolt,0) OsszesIgazolt
,ISNULL(Mulasztas.Igazolatlan,0) OsszesIgazolatlan
,TanuloAllandoCimTable.CIM TanuloAllandoCim
,TanuloTartozkodasiCimTable.Cim TanuloTartozkodasiCim
,TanuloAdatok.C_OKTATASIAZONOSITO AS TanuloOktAzon
,TanugyiAdatok.C_HOZOTTIGAZOLTHIANYZAS AS HozottIgazolt
,TanugyiAdatok.C_HOZOTTIGAZOLATLANHIANYZAS AS HozottIgazolatlan
,TanugyiAdatok.C_HOZOTTIGAZOLTKESESPERCBEN AS HozottIgazoltKeses
,TanugyiAdatok.C_HOZOTTIGAZOLATLANKESESPERCBE AS HozottIgazolatlanKeses
,OsztalyTanuloi.BelepesDatum AS BelepesDatum
,tv.C_NEV AS TanevNeve
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_OSSZES 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
INNER JOIN T_TANEV_OSSZES tv on tv.ID = TanuloAdatok.C_TANEVID AND tv.TOROLT = 'F'
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
AND (@pGondviseloIsTorvenyes = 0 OR EXISTS(SELECT * FROM #GondviseloAdatok g WHERE g.TanuloId = ta.TanuloId))
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.TanuloCsoportId = Mulasztasok.TanuloCsoportId
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.TanuloCsoportId = Mulasztasok.TanuloCsoportId
AND ta.IGAZOLATLAN >= @pIgazolatlanOrakSzama
--Iktatási adatok
INSERT INTO @IktatasAdatok
SELECT
@pOsztalyId
,ocs.C_EVFOLYAMTIPUSA
,ocs.C_FELADATELLATASIHELYID
,ocs.C_KEPZESIFORMA
,o.C_OSZTALYFONOKID
,o.C_TANTERVID
,o.C_SZAKMACSOPORT
,o.C_AGAZAT
,o.C_SZAKKEPESITES
,o.C_RESZSZAKKEPESITES
,o.C_AGAZATUJSZKTTIPUSID
,o.C_SZAKMATIPUSID
,o.C_SZAKMAIRANYTIPUSID
,o.C_TANULMANYITERULETNKTTIPUSID
,o.C_SZAKKEPESITESNKTTIPUSID
,o.C_SZAKIRANYNKTTIPUSID
,ocs.C_KERESZTFELEVES
,ocs.C_ISTECHNIKAI as C_TECHNIKAIOSZTALY
,o.C_NEMZETISEGI
,o.C_KETTANNYELVU
,o.C_NYELVIELOKESZITO
,ocs.C_ISGYOGYPEDAGOGIAILOGOPEDIAI
,o.C_SPORT
,o.C_AJPROGRAM
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID
WHERE ocs.ID = @pOsztalyId AND ocs.TOROLT = 'F'
AND ocs.C_TANEVID = @pTanevId;
SELECT * from @IktatasAdatok;
SELECT
mh.C_NEV Nev
,C_IRANYITOSZAM + ' ' + C_VAROS + ISNULL( ', ' + C_KOZTERULETNEV + ' ', '') + ISNULL(C_KOZTERULETJELLEGENEV + ' ','') + ISNULL(C_HAZSZAM, '') + ISNULL(', ' + C_EMELET + '. emelet', '') + ISNULL(', ' + C_AJTO + '. ajtó', '') TeljesCim
,mh.C_VAROS Varos
FROM
T_MUKODESIHELY_OSSZES mh
INNER JOIN T_FELADATELLATASIHELY_OSSZES fel ON fel.C_MUKODESIHELYID = mh.ID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.C_FELADATELLATASIHELYID = fel.ID
WHERE mh.TOROLT = 'F' AND ocs.ID = @pOsztalyId
DROP TABLE #GondviseloAdatok
DROP TABLE #tanuloiAdatok
DROP TABLE #students
END
GO