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

805 lines
No EOL
31 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS dbo.uspGetAmiTorzslap
GO
CREATE PROCEDURE dbo.uspGetAmiTorzslap
@pTanevId int
,@pOsztalyId int
,@pErtekelesTipus int
,@pIskolaErdekuSzamit bit
,@kiiratkozottTanulokMegjelenitese bit = 1
,@kellAtsorolasiZaradek bit = 1
,@evfolyamTipusTypeId int = 37
,@pSzorgalomErtekelesTipusTypeID int = 51
,@elmeletiOraPercben int = 45
,@gyakorlatiOraPercben int = 45
AS
BEGIN
SET NOCOUNT ON;
DECLARE @IdoszakKezdete DATE = (SELECT TOP 1 ISNULL(C_DATUM, GETDATE()) FROM T_TANEVRENDJE_OSSZES tr WHERE C_NAPTIPUSA = 1394 AND C_TANEVID = @pTanevId AND TOROLT = 'F')
DECLARE @IdoszakVege DATE = (SELECT TOP 1 ISNULL(C_DATUM, GETDATE()) FROM T_TANEVRENDJE_OSSZES tr WHERE C_NAPTIPUSA = 1395 AND C_TANEVID = @pTanevId AND TOROLT = 'F')
DECLARE @idegenNyelvId int = 0 --magyar
DECLARE @nyomtatvanyNyelvEnum int = 0 --magyar
DECLARE @amiFeladatKategoriaId int = 7555
CREATE TABLE #Student (
TanuloId int
,NaploSorszam int
,TorzslapSzam nvarchar(500)
,TanuloCsoportId int
,BelepesDatum datetime
,KilepesDatum datetime
,BeirasiNaploSorszam nvarchar(100)
,OsztalyId INT
,RowNum int
INDEX IX_01 CLUSTERED (TanuloId)
)
CREATE TABLE #FejlecAdatok (
TanuloId int
,TanuloCsoportId int
,TorzslapSzam nvarchar(500)
,TanuloNeve nvarchar(120)
,TanuloNevElotag nvarchar(120)
,TanuloNevVezeteknev nvarchar(120)
,TanuloNevUtonev nvarchar(120)
,OktatasiAzonosito nvarchar(40)
,BeirasiNaploSorszam nvarchar(100)
,SzuletesiHely nvarchar(50)
,SzuletesiOrszag nvarchar(250)
,SzuletesiDatum datetime
,AnyjaNeve nvarchar(64)
,Allampolgarsag nvarchar(250)
,TartozkodasiJogCim nvarchar(255)
,OkiratSzam nvarchar(255)
,TanevNeve nvarchar(10)
,MufajNeve nvarchar(100)
,TanszakNeve nvarchar(100)
,EvfolyamNeve nvarchar(500)
)
CREATE TABLE #TanuloTantargyErtekelesek (
TanuloId int
,TanuloCsoportId int
,TantargyId int
,OsztalyCsoportId int
,EvfolyamNeve nvarchar(500)
,AmiFotargyId int
,AmiTantargyKotelezosegId int
,TantargyNeve nvarchar(510)
,Sorszam int
,TagozatNeve nvarchar(500)
,MufajNeve nvarchar(100)
,TanszakNeve nvarchar(100)
,IsAtlagbaNemSzamitBe char(1)
,Ertekeles nvarchar(max)
,ErtekelesValue int
,ErtekelesSzoveg nvarchar(max)
,Jeloles nvarchar(max)
,IsSzoveges char(1)
,IsSzorgalom char(1)
,KapcsolodoFotargyId int
,MuveszetiAgId int
,ErtekelesId int
)
CREATE TABLE #AlapZaroVizsga (
TanuloId int
,TanuloCsoportId int
,Ertekeles nvarchar(510)
,TipusId int
,Datum datetime
,MufajNeve nvarchar(510)
,TanszakNeve nvarchar(510)
,MuveszetiAgNeve nvarchar(510)
,TantargyNeve nvarchar(500)
,OsztalyCsoportId int
)
CREATE TABLE #Mulasztasok (
TanuloId int
,TanuloCsoportId int
,TantargyId int
,MuveszetiAgId int
,MulasztasTipusId int
,IsIgazolt char(1)
,Darab int
)
CREATE TABLE #FoglalkozasiNaplok (
TanuloId int
,TanuloTanuloCsoport int
,TanuloCsoportId int
,Naploszam nvarchar(100)
,OsztalyCsoportId int
)
INSERT INTO #Student (
TanuloId
,NaploSorszam
,TorzslapSzam
,TanuloCsoportId
,BelepesDatum
,KilepesDatum
,BeirasiNaploSorszam
,OsztalyId
,RowNum
) SELECT
OsztalyTanuloi.TanuloId AS TanuloId
,OsztalyTanuloi.NaploSorszam AS NaploSorszam
,OsztalyTanuloi.TorzslapSzam AS TorzslapSzam
,OsztalyTanuloi.TanuloCsoportId AS TanuloCsoportId
,OsztalyTanuloi.BelepesDatum AS BelepesDatum
,OsztalyTanuloi.KilepesDatum AS KilepesDatum
,OsztalyTanuloi.BeirasiNaploSorszam AS BeirasiNaploSorszam
,@pOsztalyId AS OsztalyId
,ROW_NUMBER() OVER(ORDER BY LEN(TorzslapSzam), TorzslapSzam) AS RowNum
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'T') OsztalyTanuloi
LEFT JOIN T_OSZTALY_OSSZES Osztaly ON Osztaly.ID = @pOsztalyId
AND Osztaly.C_ALTANEVID = @pTanevId
AND Osztaly.TOROLT = 'F'
WHERE @kiiratkozottTanulokMegjelenitese = 1 OR (KilepesDatum IS NULL OR KilepesDatum >= @IdoszakVege)
--Fejléc adatok
INSERT INTO #FejlecAdatok (
TanuloId
,TanuloCsoportId
,TorzslapSzam
,TanuloNeve
,TanuloNevElotag
,TanuloNevVezeteknev
,TanuloNevUtonev
,OktatasiAzonosito
,BeirasiNaploSorszam
,SzuletesiHely
,SzuletesiOrszag
,SzuletesiDatum
,AnyjaNeve
,Allampolgarsag
,TartozkodasiJogCim
,OkiratSzam
,TanevNeve
,MufajNeve
,TanszakNeve
,EvfolyamNeve
)
SELECT
felhasznalo.ID AS TanuloId
,OsztalyTanuloi.TanuloCsoportId AS TanuloCsoportId
,OsztalyTanuloi.TorzslapSzam AS TorzslapSzam
,felhasznalo.C_NYOMTATASINEV AS TanuloNeve
,felhasznalo.C_ELOTAG AS TanuloNevElotag
,felhasznalo.C_VEZETEKNEV AS TanuloNevVezeteknev
,felhasznalo.C_UTONEV AS TanuloNevUtonev
,felhasznalo.C_OKTATASIAZONOSITO AS OktatasiAzonosito
,OsztalyTanuloi.BeirasiNaploSorszam AS BeirasiNaploSorszam
,felhasznalo.C_SZULETESIHELY AS SzuletesiHely
,szorszag.C_NAME AS SzuletesiOrszag
,felhasznalo.C_SZULETESIDATUM AS SzuletesiDatum
,felhasznalo.C_ANYJANEVE AS AnyjaNeve
,LOWER(allampolgarsag.C_NAME + IIF(allampolgarsag2.C_NAME IS NULL, '', ', ' + allampolgarsag2.C_NAME)) AS Allampolgarsag
,TartozkodasiJogCim.C_NAME AS TartozkodasiJogCim
,Tanulo.C_OKIRATSZAM AS OkiratSzam
,tanev.C_NEV AS TanevNeve
,FoTantargyFejlec.MufajNeve
,FoTantargyFejlec.TanszakNeve
,FoTantargyFejlec.EvfolyamNeve
FROM #Student OsztalyTanuloi
INNER JOIN T_TANULO_OSSZES Tanulo ON Tanulo.Id = OsztalyTanuloi.TanuloId
AND Tanulo.TOROLT = 'F'
INNER JOIN T_FELHASZNALO_OSSZES felhasznalo ON OsztalyTanuloi.TanuloId = felhasznalo.ID
AND felhasznalo.TOROLT = 'F'
OUTER APPLY(
SELECT
mufaj.C_NAME AS MufajNeve
,tanszak.C_NAME AS TanszakNeve
,fat.EvfolyamNeve AS EvfolyamNeve
FROM
T_TANULOCSOPORT_OSSZES cs
INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.C_OSZTALYCSOPORTID = cs.C_OSZTALYCSOPORTID
AND f.C_TANEVID = cs.C_TANEVID
AND f.TOROLT = 'F'
INNER JOIN T_TANTARGY_OSSZES tt ON tt.id = f.C_TANTARGYID
AND tt.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES mufaj ON mufaj.ID = tt.C_MUFAJTIPUSID
AND mufaj.C_TANEVID = tt.C_TANEVID
AND mufaj.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES tanszak ON tanszak.ID = tt.C_TANSZAKTIPUSID
AND tanszak.C_TANEVID = tt.C_TANEVID
AND tanszak.TOROLT = 'F'
LEFT JOIN (
SELECT
C_AMIFOTARGYID
,evfolyam.C_NAME_1 AS EvfolyamNeve
,C_FOGLALKOZASID
,C_TANULOID
,ROW_NUMBER() OVER(PARTITION BY f.C_TANEVID, f.C_TANULOID ORDER BY f.ID) RowNum
FROM T_FOGLALKOZASAMITANULO_OSSZES f
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES evfolyam ON evfolyam.ID = f.C_EVFOLYAMTIPUSID
AND evfolyam.ID <> 1296 -- Na
AND evfolyam.C_TANEVID = f.C_TANEVID
AND evfolyam.TOROLT = 'F'
INNER JOIN T_FOGLALKOZAS_OSSZES tta ON tta.ID = f.C_FOGLALKOZASID
AND tta.TOROLT = 'F'
INNER JOIN (
SELECT ID
FROM fnGetKapcsolodoOsztalyCsoportok(@pOsztalyId)
) kapcsOcs ON kapcsOcs.ID = tta.C_OSZTALYCSOPORTID
WHERE f.TOROLT = 'F'
AND f.C_TANEVID = @pTanevId
AND f.C_AMIFOTARGYID = 7671
) fat ON fat.C_FOGLALKOZASID = f.ID AND fat.C_TANULOID = Tanulo.ID
WHERE cs.C_TANULOID = Tanulo.ID
AND cs.C_TANEVID = @pTanevId
AND cs.TOROLT = 'F'
AND fat.RowNum = 1
GROUP BY
mufaj.C_NAME
,tanszak.C_NAME
,fat.EvfolyamNeve
) FoTantargyFejlec
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES TartozkodasiJogCim ON TartozkodasiJogCim.ID = Tanulo.C_TARTOZKODASJOGCIMTIPUSID
AND TartozkodasiJogCim.C_TANEVID = Tanulo.C_ALTANEVID
AND TartozkodasiJogCim.TOROLT = 'F'
INNER JOIN T_DICTIONARYITEMBASE_OSSZES allampolgarsag ON allampolgarsag.ID = felhasznalo.C_ALLAMPOLGARSAGA
AND allampolgarsag.C_TANEVID = felhasznalo.C_TANEVID
AND allampolgarsag.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES allampolgarsag2 ON allampolgarsag2.ID = felhasznalo.C_ALLAMPOLGARSAGA2
AND allampolgarsag2.C_TANEVID = felhasznalo.C_TANEVID
AND allampolgarsag2.TOROLT = 'F'
INNER JOIN T_DICTIONARYITEMBASE_OSSZES szorszag ON szorszag.ID = felhasznalo.C_SZULETESIORSZAG
AND szorszag.C_TANEVID = felhasznalo.C_TANEVID
AND szorszag.TOROLT = 'F'
INNER JOIN T_TANEV_OSSZES tanev ON tanev.ID = felhasznalo.C_TANEVID
and tanev.TOROLT = 'F'
WHERE felhasznalo.C_TANEVID = @pTanevId
AND felhasznalo.TOROLT = 'F'
ORDER BY TanuloNeve
-- Közös adatok
SELECT
ocs.ID AS OsztalyId
,ocs.C_NEV AS OsztalyNeve
,tv.C_NEV AS TanevNeve
,ia.C_OMKOD AS OMKod
,ISNULL(mukh.C_VAROS, ia.C_VAROS) AS SzekhelyVaros
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_TANEV_OSSZES tv ON tv.ID = ocs.C_TANEVID
AND tv.TOROLT = 'F'
INNER JOIN T_INTEZMENYADATOK_OSSZES ia ON ia.C_TANEVID = ocs.C_TANEVID
AND ia.TOROLT = 'F'
LEFT JOIN T_MUKODESIHELY_OSSZES mukh ON mukh.C_TANEVID = ocs.C_TANEVID
AND mukh.TOROLT = 'F'
AND mukh.C_MUKODESIHELYTIPUSA = 5431
WHERE ocs.ID = @pOsztalyId
AND ocs.TOROLT = 'F'
-- Fejléc adatok
SELECT
TanuloId
,TanuloCsoportId
,OktatasiAzonosito
,TanuloNeve
,TanuloNevElotag
,TanuloNevUtonev
,TanuloNevVezeteknev
,BeirasiNaploSorszam
,SzuletesiDatum
,SzuletesiHely
,Allampolgarsag
,Anyjaneve
,SzuletesiOrszag
,TorzslapSzam
,TartozkodasiJogCim
,OkiratSzam
,TanszakNeve
,MufajNeve
,EvfolyamNeve
FROM #FejlecAdatok
ORDER BY LEN(TorzslapSzam), TorzslapSzam
-- SNI
SELECT
s.TanuloId AS TanuloId
,s.TanuloCsoportId AS TanuloCsoportId
,ISNULL(SNIAdatok.C_KIALLITOSZAKBIZOTTSAGNEVE, '') AS SNIKiallitoIntezmenyNeve
,ISNULL(SNIAdatok.C_KIALLITOSZAKBIZOTTSAGCIME, '') AS SNIKiallitoIntezmenyCime
,SNIAdatok.C_KIALLITASDATUMA AS SNIKiallitasKelte
,SNIAdatok.C_SZAKVELEMENYSZAMA AS SNIOkmanyszamok --SNISzakvelemenySzama
,dbo.fnGetDokumentumDatumFormatum(SNIAdatok.C_KIALLITASDATUMA) AS SNIKezdete --SNIKiallitaKelte
,SNIAdatok.C_FELULVIZSGALATTANEVE AS SNIKontrolIdopont --SNIFelulvizsgalatTaneve
FROM #Student s
INNER JOIN T_TANULO_OSSZES Tanulo ON Tanulo.Id = s.TanuloId
INNER JOIN T_TANULOSNI_OSSZES SNIAdatok ON SNIAdatok.C_TANULOID = s.TanuloId AND SNIAdatok.TOROLT ='F'
WHERE Tanulo.C_SAJATOSNEVELESU = 'T'
-- Záradékok
DECLARE @tempZaradekTipusId int = (SELECT IIF(@kellAtsorolasiZaradek = 1, null, 1))
EXEC dbo.uspGetDokumentumTanuloZaradekai
@tanevId = @pTanevId
,@osztalyId = @pOsztalyId
,@zaradekTipusId = @tempZaradekTipusId
,@idegenNyelvId = @idegenNyelvId
,@dokumentumTipusId = 2
,@nyomtatvanyNyelvEnum = @nyomtatvanyNyelvEnum
-- Törzslapon megjelenő feljegyzések
SELECT
bejegyzes.TanuloId AS TanuloId
,s.TanuloCsoportId AS TanuloCsoportId
,Tartalom AS Bejegyzes
,d.C_NAME AS Tipus_DNAME
,dny.C_NAME AS TipusIdegenNyelven
,bejegyzes.Datum AS Datum
,BejegyzesIdegenNyelven
FROM fnGetDokumentumTanulokFeljegyzesei(@pTanevId, @pOsztalyId, @idegenNyelvId) bejegyzes
INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = Tipusa AND C_TANEVID = @pTanevId AND d.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASENYELV_OSSZES dny ON dny.C_DICTIONARYITEMBASEID = Tipusa AND dny.C_NYELVID = @idegenNyelvId AND dny.TOROLT = 'F' AND dny.C_TANEVID = @pTanevId
INNER JOIN #Student s ON s.TanuloId = bejegyzes.TanuloId
WHERE Tipusa IN (1545, 1548, 1553) --KRETA-6062 Feljegyzések a személyi adatok változásához (törzslapon megjelenik), Év végi bizonyítványban megjelenő tantestületi feljegyzés, határozat (dicséret, felmentés stb.), Törzslapon megjelenő egyéb feljegyzés vagy határozat
AND BelepesDatum <= Datum
AND (KilepesDatum IS NULL OR KilepesDatum >= Datum)
AND (RogziteskoriOsztalyId = @pOsztalyId OR RogziteskoriOsztalyId IS NULL)
ORDER BY Datum
-- Tanuló felmentései
SELECT
TanuloId
,TanuloCsoportId
,TantargyNevMentessegNelkul
,MentessegOka
,dbo.fnGetDokumentumDatumFormatum(Kezdete) AS Kezdete
FROM fnGetDokumentumTanuloMentessegei(@pTanevId, @pOsztalyId, @nyomtatvanyNyelvEnum)
-- Tanulói alap- és záróvizsga adatok
INSERT INTO #AlapZaroVizsga
SELECT
t.TanuloId AS TanuloId
,t.TanuloCsoportId AS TanuloCsoportId
,REPLACE(LOWER(ertekelesd.C_NAME), '(', ' (') AS Ertekeles
,te.C_TIPUSID AS TipusId
,te.C_DATUM AS Datum
,mufaj.C_NAME AS MufajNeve
,tanszak.C_NAME AS TanszakNeve
,muvag.C_NAME AS MuveszetiAgNeve
,ISNULL(tt.C_NEVNYOMTATVANYBAN, tt.C_NEV) AS TantargyNeve
,te.C_OSZTALYCSOPORTID AS OsztalyCsoportId
FROM T_TANULOERTEKELES_OSSZES te
INNER JOIN #Student t ON t.TanuloId = te.C_TANULOID
INNER JOIN T_DICTIONARYITEMBASE_OSSZES ertekelesd ON ertekelesd.ID = te.C_ERTEKELESOSZTALYZATID
AND ertekelesd.C_TANEVID = te.C_TANEVID
AND ertekelesd.TOROLT = 'F'
LEFT JOIN T_TANTARGY_OSSZES tt ON tt.ID = te.C_TANTARGYID
AND tt.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES mufaj ON mufaj.ID = tt.C_MUFAJTIPUSID
AND mufaj.C_TANEVID = tt.C_TANEVID
AND mufaj.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES tanszak ON tanszak.ID = tt.C_TANSZAKTIPUSID
AND tanszak.C_TANEVID = tt.C_TANEVID
AND tanszak.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES muvag ON muvag.ID = tt.C_MUVESZETIAGID
AND muvag.C_TANEVID = tt.C_TANEVID
AND muvag.TOROLT = 'F'
WHERE te.C_TIPUSID in (7899, 7900) -- Művészeti alapvizsga, Művészeti záróvizsga
AND te.TOROLT = 'F'
AND te.C_TANEVID = @pTanevId
SELECT azv.*
FROM #AlapZaroVizsga azv
LEFT JOIN (
SELECT
ID
,C_TIPUSA
,C_OSZTALYBONTASID
FROM T_CSOPORT_OSSZES
WHERE TOROLT = 'F'
AND C_ALTANEVID = @pTanevID
) cs ON azv.OsztalyCsoportId = cs.ID
WHERE (cs.C_TIPUSA NOT IN (1067, 6757, 6759, 6761) -- ami egyéni csoportok
OR cs.C_TIPUSA IS NULL)
AND (azv.OsztalyCsoportId = @pOsztalyId
OR cs.C_OSZTALYBONTASID = @pOsztalyId
OR (cs.C_OSZTALYBONTASID IS NULL AND cs.ID IS NOT NULL))
UNION
SELECT azv.*
FROM #AlapZaroVizsga azv
LEFT JOIN (
SELECT
ID
,C_TIPUSA
,C_OSZTALYBONTASID
FROM T_CSOPORT_OSSZES
WHERE TOROLT = 'F'
AND C_ALTANEVID = @pTanevID
) cs ON azv.OsztalyCsoportId = cs.ID
WHERE cs.C_TIPUSA IN (1067, 6757, 6759, 6761) -- ami egyéni csoportok
AND cs.C_OSZTALYBONTASID = @pOsztalyId
-- Tantárgyak értékeléssel
INSERT INTO #TanuloTantargyErtekelesek (
TanuloId
,TanuloCsoportId
,TantargyId
,OsztalyCsoportId
,EvfolyamNeve
,AmiFotargyId
,AmiTantargyKotelezosegId
,TantargyNeve
,Sorszam
,TagozatNeve
,MufajNeve
,TanszakNeve
,IsAtlagbaNemSzamitBe
,Ertekeles
,ErtekelesValue
,ErtekelesSzoveg
,Jeloles
,IsSzoveges
,IsSzorgalom
,KapcsolodoFotargyId
,MuveszetiAgId
,ErtekelesId)
SELECT
te.C_TANULOID
,tanulok.TanuloCsoportId
,ISNULL(te.C_TANTARGYID, -1)
,te.C_OSZTALYCSOPORTID
,fat.EvfolyamNeve
,fat.C_AMIFOTARGYID
,fat.C_AMITANTARGYKOTELEZOSEGID
,COALESCE(tt.C_NEVNYOMTATVANYBAN, tt.C_NEV, 'Szorgalom')
,ISNULL(tt.C_SORSZAM, -1)
,fat.TagozatNeve
,mufaj.C_NAME
,tanszak.C_NAME
,tt.C_ISTANULMANYIATLAGBANEMSZAMIT
,COALESCE(
CONVERT(nvarchar(max)
,IIF(@nyomtatvanyNyelvEnum = 0
,IIF(tt.C_TARGYKATEGORIA = 7688, LOWER(szorgkatjegy.C_NAME) + ' (' + CONVERT(nvarchar(max), jegy.C_VALUE) + ')', REPLACE(LOWER(jegy.C_NAME), '(', ' ('))
,[dbo].fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, te.C_ERTEKELESOSZTALYZATID, @pTanevId)
)
)
,IIF(te.C_ERTEKELESSZOVEGFORMAZOTT IS NOT NULL, CONCAT(IIF(te.C_ERTEKELESSZOVEGROVIDNEV IS NOT NULL, te.C_ERTEKELESSZOVEGROVIDNEV, 'sz'), ''), NULL)
,CONVERT(nvarchar(max),te.C_ERTEKELESSZAZALEK)
,CONVERT(nvarchar(max)
,IIF(@nyomtatvanyNyelvEnum = 0
,szg.C_NAME
,[dbo].fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, te.C_SZORGALOMERTEKID , @pTanevId))
)
,IIF(te.C_SZORGALOMSZOVEGFORMAZOTT IS NOT NULL, 'sz'
,IIF(@nyomtatvanyNyelvEnum = 0
,szet.C_NAME
,[dbo].fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, te.C_SZORGALOMOSZTALYZATID, @pTanevId)
)
)
) AS Ertekeles
,jegy.C_VALUE
,COALESCE(te.C_ERTEKELESSZOVEGFORMAZOTT, te.C_ERTEKELESTEMA, te.C_SZORGALOMSZOVEGFORMAZOTT, te.C_SZORGALOMSZOVEG)
,CASE
WHEN te.C_TIPUSID = 1518 THEN
CASE
WHEN te.C_ISMAGATARTASSZORGALOM = 'T' THEN
CASE
WHEN te.C_MAGATARTASSZOVEG IS NOT NULL THEN
'<sup>' + CAST(ROW_NUMBER() OVER(PARTITION BY te.C_TANULOID, te.C_TIPUSID, IIF(te.C_MAGATARTASSZOVEG IS NOT NULL, 1, 0) ORDER BY te.C_ROGZITESDATUM) AS NVARCHAR(10))+'</sup>'
WHEN te.C_SZORGALOMSZOVEG IS NOT NULL THEN
'<sup>' + CAST(ROW_NUMBER() OVER(PARTITION BY te.C_TANULOID, te.C_TIPUSID, IIF(te.C_SZORGALOMSZOVEG IS NOT NULL, 1, 0) ORDER BY te.C_ROGZITESDATUM) AS NVARCHAR(10))+'</sup>'
END
WHEN te.C_ISMAGATARTASSZORGALOM = 'F' THEN
'<sup>' + CAST(ROW_NUMBER() OVER(PARTITION BY te.C_TANULOID, te.C_TIPUSID, IIF(te.C_ERTEKELESSZOVEG IS NOT NULL, 1, 0) ORDER BY te.C_ROGZITESDATUM) AS NVARCHAR(10))+'</sup>'
END
WHEN te.C_ERTEKELESTEMA IS NOT NULL AND te.C_TIPUSID IN (1519, 1520) THEN
'(' + CAST(CHAR(ROW_NUMBER() OVER(PARTITION BY te.C_TANULOID, te.C_TIPUSID, IIF(te.C_ERTEKELESTEMA IS NOT NULL, 1, 0) ORDER BY te.C_DATUM) + 96) AS NVARCHAR(10))+')'
WHEN (te.C_ERTEKELESSZOVEGFORMAZOTT IS NOT NULL OR te.C_SZORGALOMSZOVEGFORMAZOTT IS NOT NULL) AND te.C_TIPUSID IN (1519, 1520) THEN
'(' + CAST(ROW_NUMBER() OVER(PARTITION BY te.C_TANULOID, te.C_TIPUSID, IIF(te.C_ERTEKELESSZOVEGFORMAZOTT IS NOT NULL OR te.C_SZORGALOMSZOVEGFORMAZOTT IS NOT NULL, 1, 0) ORDER BY te.C_DATUM) AS NVARCHAR(10))+')'
WHEN te.C_ERTEKELESTEMA IS NOT NULL AND te.C_TIPUSID IN (1522, 1523, 1524, 1525) THEN
'<i>(' + CAST(CHAR(ROW_NUMBER() OVER(PARTITION BY te.C_TANULOID, te.C_TIPUSID, IIF(te.C_ERTEKELESTEMA IS NOT NULL, 1, 0) ORDER BY te.C_DATUM) + 96) AS NVARCHAR(10))+')</i>'
END
,IIF(te.C_ERTEKELESSZOVEGFORMAZOTT IS NULL, IIF(te.C_SZORGALOMSZOVEGFORMAZOTT IS NULL, 'F', 'T'), 'T') AS IsSzoveges
,IIF(tt.C_TARGYKATEGORIA = 7688, 'T', IIF(tt.ID IS NULL, 'T', 'F')) AS IsSzorgalom
,tt.C_FOTARGYID AS KapcsolodoFotargyId
,tt.C_MUVESZETIAGID AS MuveszetiAgId
,te.ID
FROM T_TANULOERTEKELES_OSSZES te
INNER JOIN #Student tanulok on tanulok.TanuloId = te.C_TANULOID
AND te.C_DATUM >= tanulok.BelepesDatum
AND (tanulok.KilepesDatum IS NULL or te.C_DATUM < tanulok.KilepesDatum)
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = te.C_OSZTALYCSOPORTID
AND ocs.C_FELADATKATEGORIAID = @amiFeladatKategoriaId
AND ocs.TOROLT = 'F'
LEFT JOIN T_TANTARGY_OSSZES tt ON tt.ID = te.C_TANTARGYID
AND tt.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES jegy ON jegy.ID = te.C_ERTEKELESOSZTALYZATID
AND jegy.C_TANEVID = te.C_TANEVID
AND jegy.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES szg ON szg.ID = te.C_SZORGALOMERTEKID
AND szg.C_TANEVID = te.C_TANEVID
AND szg.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES szo ON szo.ID = te.C_SZORGALOMOSZTALYZATID
AND szo.C_TANEVID = te.C_TANEVID
AND szo.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES szet ON (szet.C_VALUE + 1) = szo.C_VALUE
AND szet.C_DICTIONARYTYPEID = 51
AND szet.C_TANEVID = te.C_TANEVID
AND szet.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES szorgkatjegy ON (szorgkatjegy.C_VALUE + 1) = jegy.C_VALUE
AND szorgkatjegy.TOROLT = 'F'
AND szorgkatjegy.C_TANEVID = jegy.C_TANEVID
AND szorgkatjegy.C_DICTIONARYTYPEID = 51
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES mufaj ON mufaj.ID = tt.C_MUFAJTIPUSID
AND mufaj.C_TANEVID = tt.C_TANEVID
AND mufaj.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES tanszak ON tanszak.ID = tt.C_TANSZAKTIPUSID
AND tanszak.C_TANEVID = tt.C_TANEVID
AND tanszak.TOROLT = 'F'
LEFT JOIN T_TANULOCSOPORT_OSSZES tcs on tcs.C_OSZTALYCSOPORTID = te.C_OSZTALYCSOPORTID
AND tcs.C_TANULOID = te.C_TANULOID
AND tcs.C_BELEPESDATUM >= tanulok.BelepesDatum
AND (tcs.C_KILEPESDATUM IS NULL or tcs.C_KILEPESDATUM < tanulok.KilepesDatum)
AND tcs.TOROLT = 'F'
LEFT JOIN T_FOGLALKOZAS_OSSZES f on f.C_TANTARGYID = te.C_TANTARGYID
AND f.C_OSZTALYCSOPORTID = te.C_OSZTALYCSOPORTID
AND f.C_TANARID = te.C_ERTEKELOID
AND f.TOROLT = 'F'
LEFT JOIN (
SELECT
T_FOGLALKOZASAMITANULO_OSSZES.ID
,C_AMIFOTARGYID
,C_AMITAGOZATID
,C_AMITANTARGYKOTELEZOSEGID
,C_EVFOLYAMTIPUSID
,evfolyam.C_NAME_1 AS EvfolyamNeve
,tagozat.C_NAME AS TagozatNeve
,C_FOGLALKOZASID
,C_TANULOID
FROM T_FOGLALKOZASAMITANULO_OSSZES
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES evfolyam ON evfolyam.ID = T_FOGLALKOZASAMITANULO_OSSZES.C_EVFOLYAMTIPUSID
AND evfolyam.ID <> 1296 -- Na
AND evfolyam.C_TANEVID = T_FOGLALKOZASAMITANULO_OSSZES.C_TANEVID
AND evfolyam.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES tagozat ON tagozat.ID = T_FOGLALKOZASAMITANULO_OSSZES.C_AMITAGOZATID
AND tagozat.ID <> 7780 -- Na
AND tagozat.C_TANEVID = T_FOGLALKOZASAMITANULO_OSSZES.C_TANEVID
AND tagozat.TOROLT = 'F'
WHERE T_FOGLALKOZASAMITANULO_OSSZES.TOROLT = 'F'
AND T_FOGLALKOZASAMITANULO_OSSZES.C_TANEVID = @pTanevID
) fat ON fat.C_FOGLALKOZASID = f.ID AND fat.C_TANULOID = te.C_TANULOID
WHERE te.TOROLT = 'F'
AND te.C_TANEVID = @pTanevId
AND te.C_TIPUSID = 1520 -- Év végi értékelés
-- Mulasztás adatok
INSERT INTO #Mulasztasok (
TanuloId
,TanuloCsoportId
,TantargyId
,MuveszetiAgId
,MulasztasTipusId
,IsIgazolt
,Darab)
SELECT
mu.C_ORATANULOIID AS TanuloId
,Tanulok.TanuloCsoportId AS TanuloCsoportId
,t.ID AS TantargyId
,t.C_MUVESZETIAGID AS MuveszetiAgId
,mu.C_TIPUS AS MulasztasTipus
,mu.C_IGAZOLT AS IsIgazolt
,COUNT(1) AS Darab
FROM T_TANULOMULASZTAS_OSSZES mu
INNER JOIN #Student tanulok ON tanulok.TanuloId = mu.C_ORATANULOIID
INNER JOIN T_TANITASIORA_OSSZES tn ON tn.ID = mu.C_TANITASIORAKID
AND tn.TOROLT = 'F'
INNER JOIN (SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@posztalyID, @ptanevId, 0, DEFAULT)) kocs ON kocs.ID = tn.C_OSZTALYCSOPORTID
INNER JOIN T_TANTARGY_OSSZES t on t.id=tn.C_TANTARGYID
AND t.TOROLT = 'F'
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = tn.C_OSZTALYCSOPORTID
AND tanulok.TanuloId = tcs.C_TANULOID
AND tcs.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tn.C_OSZTALYCSOPORTID
AND ocs.C_FELADATKATEGORIAID = @amiFeladatKategoriaId
AND ocs.Torolt = 'F'
WHERE tn.C_DATUM BETWEEN @IdoszakKezdete AND @IdoszakVege
AND mu.C_TANEVID = @pTanevId
AND mu.Torolt ='F'
AND mu.C_IGAZOLT IS NOT NULL
AND (@pIskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA <> 1533 OR C_IGAZOLASTIPUSA IS NULL))
AND tcs.C_BELEPESDATUM <= tn.C_DATUM
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= tn.C_DATUM)
AND tanulok.BelepesDatum <= tn.C_DATUM
AND (tanulok.KilepesDatum IS NULL OR tanulok.KilepesDatum >= tn.C_DATUM)
AND mu.C_TIPUS = 1500
GROUP BY mu.C_ORATANULOIID, Tanulok.TanuloCsoportId, mu.C_TIPUS, t.ID, t.C_MUVESZETIAGID, mu.C_IGAZOLT
UNION
SELECT
mu.C_ORATANULOIID AS tanuloId
,Tanulok.TanuloCsoportId AS TanuloCsoportId
,t.ID AS TantargyId
,t.C_MUVESZETIAGID AS MuveszetiAgId
,mu.C_TIPUS AS MulasztasTipus
,mu.C_IGAZOLT isIgazolt
,cast(SUM(cast(mu.C_KESESPERCBEN as float) / (CASE WHEN t.C_GYAKORLATI = 'F' THEN @elmeletiOraPercben ELSE @gyakorlatiOraPercben END)) as int) AS kesesOraban
FROM T_TANULOMULASZTAS_OSSZES mu
INNER JOIN #Student tanulok ON tanulok.TanuloId = mu.C_ORATANULOIID
INNER JOIN T_TANITASIORA_OSSZES tn ON tn.ID = mu.C_TANITASIORAKID
AND tn.TOROLT = 'F'
INNER JOIN (SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@pOsztalyID, @pTanevId, 0, DEFAULT)) kocs ON kocs.ID = tn.C_OSZTALYCSOPORTID
INNER JOIN T_TANTARGY_OSSZES t ON t.ID = tn.C_TANTARGYID
AND t.TOROLT = 'F'
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = tn.C_OSZTALYCSOPORTID
AND tanulok.TanuloId = tcs.C_TANULOID
AND tcs.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tn.C_OSZTALYCSOPORTID
AND ocs.C_FELADATKATEGORIAID = @amiFeladatKategoriaId
AND ocs.Torolt = 'F'
WHERE mu.C_TANEVID = @pTanevId
AND mu.C_TIPUS = 1499
AND mu.TOROLT = 'F'
AND mu.C_IGAZOLT IS NOT NULL
AND (@pIskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA <> 1533 OR C_IGAZOLASTIPUSA IS NULL))
AND tcs.C_BELEPESDATUM <= tn.C_DATUM
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= tn.C_DATUM)
AND tanulok.BelepesDatum <= tn.C_DATUM
AND (tanulok.KilepesDatum IS NULL OR tanulok.KilepesDatum >= tn.C_DATUM)
AND tn.C_DATUM BETWEEN @IdoszakKezdete AND @IdoszakVege
GROUP BY mu.C_ORATANULOIID, Tanulok.TanuloCsoportId, t.ID, t.C_MUVESZETIAGID, mu.C_TIPUS, mu.C_IGAZOLT
-- osztályban kapott jegyből az osztály csoportbontott ami egyéni csoportjának az adatai kerülnek bele
UPDATE tte
SET
tte.AmiFotargyId = fat.C_AMIFOTARGYID
,tte.AmiTantargyKotelezosegId = fat.C_AMITANTARGYKOTELEZOSEGID
,tte.EvfolyamNeve = fat.EvfolyamNeve
,tte.TagozatNeve = fat.TagozatNeve
FROM #TanuloTantargyErtekelesek tte
INNER JOIN T_TANULOERTEKELES_OSSZES te ON te.ID = tte.ErtekelesId
AND te.TOROLT = 'F'
INNER JOIN T_TANTARGY_OSSZES t ON t.ID = te.C_TANTARGYID
AND t.TOROLT = 'F'
INNER JOIN T_CSOPORT_OSSZES cs ON cs.C_OSZTALYBONTASID = te.C_OSZTALYCSOPORTID
AND cs.C_TIPUSA IN (1067, 6757, 6759, 6761) -- ami egyéni csoportok
AND cs.TOROLT = 'F'
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = cs.ID
AND tcs.C_TANULOID = te.C_TANULOID
AND tcs.TOROLT = 'F'
LEFT JOIN T_FOGLALKOZAS_OSSZES f ON f.C_TANARID = te.C_ERTEKELOID
AND f.C_TANTARGYID = te.C_TANTARGYID
AND f.C_OSZTALYCSOPORTID = cs.ID
AND f.TOROLT = 'F'
LEFT JOIN (
SELECT
T_FOGLALKOZASAMITANULO_OSSZES.ID
,C_AMIFOTARGYID
,C_AMITAGOZATID
,C_AMITANTARGYKOTELEZOSEGID
,C_EVFOLYAMTIPUSID
,evfolyam.C_NAME_1 AS EvfolyamNeve
,tagozat.C_NAME AS TagozatNeve
,C_FOGLALKOZASID
,C_TANULOID
FROM T_FOGLALKOZASAMITANULO_OSSZES
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES evfolyam ON evfolyam.ID = T_FOGLALKOZASAMITANULO_OSSZES.C_EVFOLYAMTIPUSID
AND evfolyam.ID <> 1296 -- Na
AND evfolyam.C_TANEVID = T_FOGLALKOZASAMITANULO_OSSZES.C_TANEVID
AND evfolyam.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES tagozat ON tagozat.ID = T_FOGLALKOZASAMITANULO_OSSZES.C_AMITAGOZATID
AND tagozat.ID <> 7780 -- Na
AND tagozat.C_TANEVID = T_FOGLALKOZASAMITANULO_OSSZES.C_TANEVID
AND tagozat.TOROLT = 'F'
WHERE T_FOGLALKOZASAMITANULO_OSSZES.TOROLT = 'F'
AND T_FOGLALKOZASAMITANULO_OSSZES.C_TANEVID = @pTanevID
) fat ON fat.C_FOGLALKOZASID = f.ID AND fat.C_TANULOID = te.C_TANULOID
WHERE tte.AmiFotargyId IS NULL
AND fat.ID IS NOT NULL
SELECT ert.*
FROM #TanuloTantargyErtekelesek ert
LEFT JOIN (
SELECT
ID
,C_TIPUSA
,C_OSZTALYBONTASID
FROM T_CSOPORT_OSSZES
WHERE TOROLT = 'F'
AND C_ALTANEVID = @pTanevID
) cs ON ert.OsztalyCsoportId = cs.ID
WHERE (cs.C_TIPUSA NOT IN (1067, 6757, 6759, 6761) -- ami egyéni csoportok
OR cs.C_TIPUSA IS NULL)
AND (ert.OsztalyCsoportId = @pOsztalyId
OR cs.C_OSZTALYBONTASID = @pOsztalyId
OR (cs.C_OSZTALYBONTASID IS NULL AND cs.ID IS NOT NULL))
UNION
SELECT ert.*
FROM #TanuloTantargyErtekelesek ert
LEFT JOIN (
SELECT
ID
,C_TIPUSA
,C_OSZTALYBONTASID
FROM T_CSOPORT_OSSZES
WHERE TOROLT = 'F'
AND C_ALTANEVID = @pTanevID
) cs ON ert.OsztalyCsoportId = cs.ID
WHERE cs.C_TIPUSA IN (1067, 6757, 6759, 6761) -- ami egyéni csoportok
AND cs.C_OSZTALYBONTASID = @pOsztalyId
SELECT
TanuloId
,TanuloCsoportId
,TantargyId
,MuveszetiAgId
,IsIgazolt
,SUM(Darab) AS Darab
FROM #Mulasztasok m
WHERE IsIgazolt IS NOT NULL
GROUP BY TanuloId, TanuloCsoportId, TantargyId, MuveszetiAgId, IsIgazolt
INSERT INTO #FoglalkozasiNaplok (
TanuloId
,TanuloCsoportId
,TanuloTanuloCsoport
,Naploszam
,OsztalyCsoportId
)
SELECT
tcs.C_TANULOID AS TanuloId
,tcs.ID AS TanuloCsoportId
,tanulok.TanuloCsoportId AS TanuloTanuloCsoport
,ocs.C_NAPLOSZAM AS Naploszam
,ocs.ID
FROM (
SELECT
ID
,C_TANULOID
,C_OSZTALYCSOPORTID
,C_BELEPESDATUM
,C_KILEPESDATUM
FROM T_TANULOCSOPORT_OSSZES
WHERE TOROLT = 'F'
AND (@kiiratkozottTanulokMegjelenitese = 1 OR (C_KILEPESDATUM IS NULL OR C_KILEPESDATUM >= @IdoszakVege))
AND C_TANEVID = @pTanevID
) tcs
INNER JOIN #Student tanulok ON tanulok.TanuloId = tcs.C_TANULOID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
AND ocs.C_FELADATKATEGORIAID = @amiFeladatKategoriaId
AND ocs.TOROLT = 'F'
SELECT
fn.TanuloId
,fn.TanuloTanuloCsoport AS TanuloCsoportId
,1 AS IsOsztalyos
,fn.Naploszam
,tta.C_NAPLOSORSZAM AS Naplosorszam
FROM #FoglalkozasiNaplok fn
INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON tta.C_TANULOCSOPORTID = fn.TanuloCsoportId
AND tta.TOROLT = 'F'
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = fn.OsztalyCsoportId
AND o.TOROLT = 'F'
AND o.ID = @pOsztalyId
UNION
SELECT
fn.TanuloId
,fn.TanuloTanuloCsoport AS TanuloCsoportId
,0 AS IsOsztalyos
,fn.Naploszam
,CAST(sorszam.RN as int) AS Naplosorszam
FROM #FoglalkozasiNaplok fn
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = fn.OsztalyCsoportId
AND (cs.C_OSZTALYBONTASID = @pOsztalyId
OR (cs.C_OSZTALYBONTASID IS NULL AND cs.ID IS NOT NULL))
AND cs.TOROLT = 'F'
LEFT JOIN (
SELECT fn.TanuloId
,fn.TanuloCsoportId
,ROW_NUMBER() OVER ( PARTITION BY fn.OsztalyCsoportId ORDER BY f.C_NYOMTATASINEV) as RN
FROM #FoglalkozasiNaplok fn
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = fn.TanuloId
AND f.TOROLT = 'F'
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = fn.OsztalyCsoportId
AND cs.TOROLT = 'F'
CROSS APPLY dbo.fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, fn.OsztalyCsoportId, 'T') csoptanuloi
WHERE fn.TanuloId = csoptanuloi.TanuloId
) sorszam ON sorszam.TanuloId = fn.TanuloId
AND sorszam.TanuloCsoportId = fn.TanuloCsoportId
END