kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20180113150137_KRETA_4521/sp_GetTanuloiErtesito.sql
2024-03-13 00:33:46 +01:00

234 lines
No EOL
10 KiB
Transact-SQL

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetTanuloiErtesito]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetTanuloiErtesito]
END
GO
CREATE PROCEDURE [dbo].[sp_GetTanuloiErtesito]
@pIntezmenyId INT,
@pTanevId INT,
@pOsztalyId INT,
@pTanuloId INT,
@pIskolaErdekuSzamit BIT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @FelevVege DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES tr WHERE C_NAPTIPUSA = 1400 AND C_TANEVID=@pTanevId AND TOROLT = 'F')
DECLARE @NaploSorszam TABLE (
TanuloId INT
,Sorszam INT
)
INSERT INTO @NaploSorszam
EXEC [sp_GetDokumentumTanuloNaploSorszam]
@osztalyId = @pOsztalyId
CREATE TABLE #students (ID INT PRIMARY KEY, BelepesDatum DATE, KilepesDatum DATE, NaploSorszam INT)
INSERT INTO #students
SELECT
t.TanuloId
,BelepesDatum
,ISNULL(KilepesDatum, GETDATE())
,nsz.Sorszam
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'F') t
INNER JOIN @NaploSorszam nsz ON nsz.TanuloId = t.TanuloId
WHERE
t.TanuloId = @pTanuloId
/*FEJLEC*/
SELECT DISTINCT
osztalyCsop.C_NEV OsztalyNeve
,ofo.C_NYOMTATASINEV Osztalyfonok
,INTEZMENY.C_NEV IntezmenyNeve
,INTEZMENY.C_IGAZGATONEVE IgazgatoNeve
,dbo.fnGetDokumentumIntezmenyCime (@pTanevId) IntezmenyCime
,INTEZMENY.C_TELEFONSZAM IntezmenyTelefonszam
,INTEZMENY.C_EMAILCIM IntezmenyEmail
,INTEZMENY.C_OMKOD IntezmenyOMKod
,TANEV.C_NEV Tanev
FROM T_TANEV_osszes TANEV
INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsop ON TANEV.C_INTEZMENYID = osztalyCsop.C_INTEZMENYID
INNER JOIN T_OSZTALY_OSSZES o ON osztalyCsop.ID = o.ID AND o.torolt='F'
LEFT JOIN T_FELHASZNALO_OSSZES ofo ON ofo.ID = o.C_OSZTALYFONOKID
INNER JOIN T_INTEZMENYADATOK_OSSZES INTEZMENY on INTEZMENY.C_INTEZMENYID=osztalyCsop.C_INTEZMENYID AND INTEZMENY.C_TANEVID = osztalyCsop.C_TANEVID AND INTEZMENY.Torolt = 'F'
WHERE osztalyCsop.ID = @pOsztalyId
AND TANEV.ID = @pTanevId
/*TANULÓ adatai*/
SELECT DISTINCT
tanuloID
,sorszam
,torzslapSzam
,oktAzon
,tajSzam
,anyjaNeve
,szulHely
,dbo.fnGetDokumentumDatumFormatum(szulIdo) szulIdo
,IIF(socAdat = '', '', LEFT(socAdat, len(socAdat)- 1)) socAdat
,kepzes
,tanuloNeve
,allampolgarsaga
,diakIgazolvanySzam
,dbo.fnGetDokumentumDatumFormatum(kilepesDatum) kilepesDatum
,beirasiNaploSorszam
INTO #TanuloAlapAdatok
FROM (
SELECT
t.ID tanuloID
,naploSorszam.Sorszam sorszam
,f.C_NYILVANTARTASISZAM torzslapSzam
,f.C_OKTATASIAZONOSITO oktAzon
,f.C_TAJSZAM tajSzam
,f.C_ANYJANEVE anyjaNeve
,f.C_SZULETESIHELY szulHely
,f.C_SZULETESIDATUM szulIdo
,IIF(t.C_MAGANTANULO = 'T', 'Magántanuló (eü. ok), ', '') +
IIF(t.C_JOGVISZONYATSZUNETELTETO = 'T', 'Jogviszony szüneteltetve, ', '') +
IIF(t.C_SZAKMAIGYAKORLATON = 'T', 'Szakmai gyakorlat, ', '') +
IIF(t.C_SZOCIALISTAMOGATAS = 'T', 'Szociális támogatás, ', '') +
IIF(t.C_SAJATOSNEVELESU = 'T', 'Sajátos nevelési igényű, ', '') +
IIF(t.C_BEJARO = 'T', 'Bejáró, ', '')
socAdat
,tt.C_NEV kepzes
,f.C_NYOMTATASINEV tanuloNeve
,d.C_NAME allampolgarsaga
,t.C_DIAKIGAZOLVANYSZAM diakIgazolvanySzam
,MAX(cs.C_KILEPESDATUM) kilepesDatum
,t.C_BEIRASINAPLOSORSZAM beirasiNaploSorszam
FROM T_TANULO_OSSZES t
INNER JOIN #students s ON s.ID = t.ID
INNER JOIN @NaploSorszam naploSorszam on naploSorszam.TanuloId=s.ID
INNER JOIN T_TANTERV_OSSZES tt ON tt.ID = t.C_TANTERVID
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = t.ID
INNER JOIN T_TANULOCSOPORT_OSSZES cs ON s.ID = cs.C_TANULOID AND cs.C_OSZTALYCSOPORTID = @pOsztalyId AND cs.TOROLT = 'F'
INNER JOIN T_DICTIONARYITEMBASE_OSSZES d on d.id=f.C_ALLAMPOLGARSAGA AND d.C_TANEVID = f.C_TANEVID AND d.C_INTEZMENYID = f.C_INTEZMENYID
GROUP BY
s.ID, t.ID, naploSorszam.Sorszam, f.C_NYILVANTARTASISZAM, f.C_OKTATASIAZONOSITO, f.C_TAJSZAM, f.C_ANYJANEVE,
f.C_SZULETESIHELY, f.C_SZULETESIDATUM, t.C_MAGANTANULO, t.C_JOGVISZONYATSZUNETELTETO, t.C_SZAKMAIGYAKORLATON, C_SAJATOSNEVELESU, t.C_BEJARO,
t.C_SZOCIALISTAMOGATAS, tt.C_NEV, f.C_NYOMTATASINEV, d.C_NAME, t.C_DIAKIGAZOLVANYSZAM, t.C_BEIRASINAPLOSORSZAM
) tbl
SELECT * FROM #TanuloAlapAdatok ORDER BY sorszam
/*TANULÓ elérhetőségei */
SELECT
tanulo.TanuloId tanuloID
,Gondviselo.C_NEV + IIF(Gondviselo.C_ISTORVENYESKEPVISELO = 'T', ' (törvényes)', '') GondviseloNeve
,C_IRANYITOSZAM + ' ' + C_VAROS + ', ' + C_KOZTERULET + ' ' + kozterulet.C_NAME + ' ' + C_HAZSZAM CimText
FROM T_GONDVISELO_OSSZES Gondviselo
INNER JOIN #students TanulokId ON Gondviselo.C_TANULOID = TanulokId.Id
INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'F') tanulo ON tanulo.TanuloId = Gondviselo.C_TANULOID AND Gondviselo.TOROLT = 'F'
INNER JOIN T_CIM_OSSZES cim ON cim.C_FELHASZNALOID = TanuloId
INNER JOIN T_DICTIONARYITEMBASE_OSSZES kozterulet ON kozterulet.Id = C_KOZTERULETJELLEGE AND kozterulet.C_TANEVID = @pTanevId
WHERE
cim.TOROLT = 'F'
AND cim.C_TANEVID = @pTanevId
ORDER BY
(SELECT 1)
--AND Gondviselo.C_ISTORVENYESKEPVISELO = 'T'
/*TANTARGY ERTEKELESEK*/
SELECT DISTINCT
tanulo.Id tanuloID
,TARGY.C_NEV TargyNev
,Tanar.C_NYOMTATASINEV TanarNev
,JEGY.C_NAME Ertekeles
FROM T_TANULOCSOPORT_OSSZES TANULOCSOPORT
INNER JOIN T_TANULOERTEKELES_OSSZES ERTEKELES ON ERTEKELES.C_TANULOID = TANULOCSOPORT.C_TANULOID
INNER JOIN #students tanulo ON ERTEKELES.C_TANULOID = tanulo.Id
INNER JOIN T_DICTIONARYITEMBASE_OSSZES JEGY ON ERTEKELES.C_OSZTALYZAT = JEGY.ID
INNER JOIN T_TANTARGY_OSSZES TARGY ON ERTEKELES.C_TANTARGYID = TARGY.ID
INNER JOIN T_FELHASZNALO_OSSZES Tanar ON Tanar.Id = ERTEKELES.C_ERTEKELOID
WHERE ERTEKELES.C_ERTEKELESTIPUSA = 1519
AND TANULOCSOPORT.C_OSZTALYCSOPORTID = @pOsztalyId
/*MULASZTAS ÖSSZESEN*/
SELECT
DATEPART(MONTH, Datum) Honap
,TantargyId Id
,Igazolt IgazoltE
,TanuloId TanuloId
,IgazolasTipusa IgazolasTipus
,Datum Datum
,Tipusa Tipus
,KesesPercben KesesPercben
,HetSorszama HetSorszama
,Oraszam Oraszam
,CAST(DATEPART(MONTH, Datum) AS NVARCHAR(10)) + IIF(C_GYAKORLATI = 'T', 'G', 'E') ElmeletGyakorlat
,C_GYAKORLATI isGyakorlat
INTO #mulasztasTmp
FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes(@pTanevId, @pOsztalyId, @pIskolaErdekuSzamit) TanulokMulasztasai
INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = TanulokMulasztasai.TantargyId
INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON
TanuloCsoport.C_OSZTALYCSOPORTID = TanulokMulasztasai.OsztalyCsoportId
AND TanuloCsoport.C_TANULOID = TanulokMulasztasai.TanuloId
AND TanuloCsoport.C_BELEPESDATUM <= TanulokMulasztasai.Datum
AND (TanuloCsoport.C_KILEPESDATUM IS NULL OR TanuloCsoport.C_KILEPESDATUM >= TanulokMulasztasai.Datum)
AND TanuloCsoport.TOROLT = 'F'
SELECT
[9E]+[10E]+[11E]+[12E]+[1E]+[2E]+[3E]+[4E]+[5E]+[6E] OsszesenE
,[9G]+[10G]+[11G]+[12G]+[1G]+[2G]+[3G]+[4G]+[5G]+[6G] OsszesenG
FROM #students s
LEFT JOIN (SELECT * FROM (SELECT Id, TanuloId, ElmeletGyakorlat FROM #mulasztasTmp WHERE Tipus = 1500) a
PIVOT (COUNT(ID) FOR ElmeletGyakorlat IN ([9E], [10E], [11E], [12E], [1E], [2E], [3E], [4E], [5E], [6E],
[9G], [10G], [11G], [12G], [1G], [2G], [3G], [4G], [5G], [6G]))piv )ni on ni.TanuloId=s.Id
LEFT JOIN (SELECT COUNT(Id) FelevG, TanuloId FROM #mulasztasTmp WHERE Tipus = 1500 AND Datum <= @FelevVege AND isGyakorlat = 'T' GROUP BY TanuloId) felevG on felevG.TanuloId=s.id
LEFT JOIN (SELECT COUNT(Id) FelevE, TanuloId FROM #mulasztasTmp WHERE Tipus = 1500 AND Datum <= @FelevVege AND isGyakorlat = 'F' GROUP BY TanuloId) felevE on felevE.TanuloId=s.id
/*IGAZOLATLAN MULASZTAS*/
SELECT
[9E]+[10E]+[11E]+[12E]+[1E]+[2E]+[3E]+[4E]+[5E]+[6E] OsszesenE
,[9G]+[10G]+[11G]+[12G]+[1G]+[2G]+[3G]+[4G]+[5G]+[6G] OsszesenG
FROM #students s
LEFT JOIN (SELECT * FROM (SELECT Id, ElmeletGyakorlat, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (COUNT(ID) FOR ElmeletGyakorlat IN ([9E], [10E], [11E], [12E], [1E], [2E], [3E], [4E], [5E], [6E],
[9G], [10G], [11G], [12G], [1G], [2G], [3G], [4G], [5G], [6G]))piv WHERE IgazoltE = 'F' AND Tipus = 1500 )ni on ni.TanuloId=s.Id
LEFT JOIN (SELECT COUNT(Id) FelevG, TanuloId FROM #mulasztasTmp WHERE Tipus = 1500 AND IgazoltE = 'F' AND Datum <= @FelevVege AND isGyakorlat = 'T' GROUP BY TanuloId) felevG on felevG.TanuloId=s.id
LEFT JOIN (SELECT COUNT(Id) FelevE, TanuloId FROM #mulasztasTmp WHERE Tipus = 1500 AND IgazoltE = 'F' AND Datum <= @FelevVege AND isGyakorlat = 'F' GROUP BY TanuloId) felevE on felevE.TanuloId=s.id
/*TANULO FELMENTESEI*/
SELECT
ISNULL(mentesseg.tantargyNev, '-') Tantargy
,ISNULL(mentesseg.mentessegOka, '') MentessegOka
,ISNULL(IIF(mentesseg = '', ''
,LEFT(mentesseg, LEN(mentesseg)- 1)),' ') Mentesseg
FROM #students 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 + ' ' + ISNULL('(' + dbo.fnGetDokumentumDatumFormatum(C_KEZDETE) + ' - ', '') + ISNULL(dbo.fnGetDokumentumDatumFormatum(C_VEGE) + ')', IIF(C_KEZDETE IS NULL, '', ')' )) mentessegOka
, IIF(mentesseg.C_ERTEKELESMENTESITES = 'T', 'Értékelésmentesség, ', '') + IIF(mentesseg.C_ORAMENTESITES = 'T', 'Óramentesség, ', '') as mentesseg
FROM T_TANULOMENTESSEG_OSSZES mentesseg
INNER JOIN T_TANTARGY_OSSZES t on t.ID=mentesseg.C_TANTARGYID
INNER JOIN #students s ON s.ID = mentesseg.C_TANULOID
WHERE
mentesseg.TOROLT='F'
AND mentesseg.C_TANEVID=@pTanevId
) mentesseg ON s.ID=mentesseg.TANULOID
/*TANTESTÜLET ZÁRADÉKA*/
SELECT DISTINCT
ISNULL(C_ZARADEK, '-') Feljegyzes
FROM T_TANULOCSOPORT_OSSZES
WHERE
C_TANULOID = @pTanuloId
END
GO