﻿DROP PROCEDURE IF EXISTS sp_GetTorzslap
GO

CREATE PROCEDURE sp_GetTorzslap
   @osztalyId int
  ,@tanevId int
  ,@ertekelesTipus int
  ,@kesesTipus int
  ,@elmeletiOraPercben int = 45
  ,@gyakorlatiOraPercben int = 45
  ,@iskolaErdekuSzamit bit
  ,@nyomtatvanyNyelvEnum int
  ,@isKozossegiSzolgalat bit
  ,@tanitasiHetekSzamaVegzos int
  ,@tanitasiHetekSzamaNemVegzos int
  ,@isAltantargyBeszamitasa bit
  ,@isMuveszetOktatasi bit = 0
AS
BEGIN  
  SET NOCOUNT ON;
 CREATE TABLE #Student (
     TanuloId int
    ,NaploSorszam int
    ,TorzslapSzam  nvarchar(500)
    ,TanuloCsoportId int
    ,BelepesDatum datetime
    ,KilepesDatum datetime
    ,Agazat nvarchar(250)
    ,Szakkepesites nvarchar(250)
    ,ReszSzakkepesites nvarchar(250)
    ,SzakmaCsoport  nvarchar(250)
    ,OsztalyId INT
    ,RowNum int
    ,INDEX IX_01 CLUSTERED (TanuloId)
  )

  INSERT INTO #Student (
     TanuloId
    ,NaploSorszam
    ,TorzslapSzam
    ,TanuloCsoportId
    ,BelepesDatum
    ,KilepesDatum
    ,Agazat
    ,Szakkepesites
    ,ReszSzakkepesites
    ,SzakmaCsoport
    ,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
    ,Agazat.C_NAME AS Agazat
    ,IIF(Szakkep.ID = 5527, '', Szakkep.C_NAME + '(szakképesítés)') AS Szakkepesites
    ,IIF(ReszSzakkep.ID = 6108, '', ReszSzakkep.C_NAME + '(részszakképesítés)') AS ReszSzakkepesites
    ,SzakmaCsop.C_NAME AS SzakmaCsoport
    ,@osztalyId AS OsztalyId
    ,ROW_NUMBER() OVER(ORDER BY LEN(TorzslapSzam), TorzslapSzam) AS RowNum
  FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') OsztalyTanuloi
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES Agazat ON Agazat.ID = OsztalyTanuloi.AgazatId AND Agazat.C_TANEVID = @tanevId
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES Szakkep ON Szakkep.ID = OsztalyTanuloi.SzakkepesitesId AND Szakkep.C_TANEVID = @tanevId
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES ReszSzakkep ON ReszSzakkep.ID = OsztalyTanuloi.ReszSzakkepeitesId AND ReszSzakkep.C_TANEVID = @tanevId
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES SzakmaCsop ON SzakmaCsop.ID = OsztalyTanuloi.SzakmaCsoportId AND SzakmaCsop.C_TANEVID = @tanevId

  DECLARE @minTorzslapszam nvarchar(500) = (
    SELECT TOP (1) TorzslapSzam 
    FROM #Student 
    ORDER BY RowNum ASC
  )
  
  DECLARE @maxTorzslapszam nvarchar(500) = (
    SELECT TOP (1) TorzslapSzam 
    FROM #Student 
    ORDER BY RowNum DESC
  )  
 
  --Intézmény, tanév
  IF @isMuveszetOktatasi = 0 BEGIN
    SELECT DISTINCT 
       OsztalyCsoport.C_NEV AS OsztalyNev
      ,Osztaly.C_OSZTALYNAPLOLEIRASA AS OsztalyMegjegyzes
      ,Osztaly.C_OSZTALYFONOKID AS PartnerID
      ,IIF(@nyomtatvanyNyelvEnum = 0, ofo.C_NYOMTATASINEV, ofo.C_UTONEV + ' ' + ofo.C_VEZETEKNEV) AS Osztalyfonok
      ,i.C_IGAZGATONEVE AS IntezmenyVezeto
      ,i.C_NEV AS IntezmenyNeve
      ,i.C_VAROS AS IntezmenyVaros
      ,dbo.fnGetDokumentumIntezmenyCime(@tanevId) AS IntezmenyCime
      ,i.C_OMKOD AS IntezmenyOMKod
      ,IIF(@nyomtatvanyNyelvEnum = 0, dbo.fnGetDokumentumDatumFormatum(Osztaly.C_OSZTALYNAPLOMEGNYITASA), FORMAT(Osztaly.C_OSZTALYNAPLOMEGNYITASA, 'dd. MM. yyyy')) AS NaploMegnyitasanakDatuma
      ,IIF(@nyomtatvanyNyelvEnum = 0, dbo.fnGetDokumentumDatumFormatum(Osztaly.C_OSZTALYNAPLOZARASA), FORMAT(Osztaly.C_OSZTALYNAPLOZARASA, 'dd. MM. yyyy')) AS NaploZarasanakDatuma 
      ,tanev.C_NEV AS Tanev
      ,(SELECT COUNT(TanuloId) FROM #Student) AS TanuloSzam /*TODO:Tobb Osztaly Nem kell, mert egy adott osztályt kérdez le, ami paraméterként jön át *//*OM-1609*/
      ,@minTorzslapszam AS MinNaploSorszam
      ,@maxTorzslapszam AS MaxNaploSorszam
      ,OsztalyCsoport.ID AS OsztalyId
    FROM T_OSZTALYCSOPORT_OSSZES OsztalyCsoport 
      INNER JOIN T_OSZTALY_OSSZES Osztaly ON OsztalyCsoport.ID = Osztaly.ID AND Osztaly.TOROLT = 'F'
      LEFT JOIN T_FELHASZNALO_OSSZES ofo ON ofo.ID = Osztaly.C_OSZTALYFONOKID 
      INNER JOIN T_INTEZMENYADATOK_OSSZES i on i.C_INTEZMENYID = OsztalyCsoport.C_INTEZMENYID AND i.C_TANEVID = @tanevId
      INNER JOIN T_TANEV_OSSZES tanev ON tanev.ID = i.C_TANEVID and tanev.TOROLT = 'F'
    WHERE OsztalyCsoport.ID = @osztalyId 
  END
  ELSE
  BEGIN
    SELECT DISTINCT 
       OsztalyCsoport.C_NEV AS OsztalyNev
      ,csoport.C_CSOPORTNAPLOLEIRAS AS OsztalyMegjegyzes
      ,csoport.C_CSOPORTVEZETOID AS PartnerID
      ,IIF(@nyomtatvanyNyelvEnum = 0, ofo.C_NYOMTATASINEV, ofo.C_UTONEV + ' ' + ofo.C_VEZETEKNEV) AS Osztalyfonok
      ,i.C_IGAZGATONEVE AS IntezmenyVezeto
      ,i.C_NEV AS IntezmenyNeve
      ,i.C_VAROS AS IntezmenyVaros
      ,dbo.fnGetDokumentumIntezmenyCime(@tanevId) AS IntezmenyCime
      ,i.C_OMKOD AS IntezmenyOMKod
      ,IIF(@nyomtatvanyNyelvEnum = 0, dbo.fnGetDokumentumDatumFormatum(csoport.C_CSOPORTNAPLOMEGNYITASA), FORMAT(csoport.C_CSOPORTNAPLOMEGNYITASA, 'dd. MM. yyyy')) AS NaploMegnyitasanakDatuma
      ,IIF(@nyomtatvanyNyelvEnum = 0, dbo.fnGetDokumentumDatumFormatum(csoport.C_CSOPORTNAPLOZARASA), FORMAT(csoport.C_CSOPORTNAPLOZARASA, 'dd. MM. yyyy')) AS NaploZarasanakDatuma 
      ,tanev.C_NEV AS Tanev
      ,(SELECT COUNT(TanuloId) FROM #Student) AS TanuloSzam
      ,@minTorzslapszam AS MinNaploSorszam
      ,@maxTorzslapszam AS MaxNaploSorszam
      ,OsztalyCsoport.ID AS OsztalyId
    FROM T_OSZTALYCSOPORT_OSSZES OsztalyCsoport 
      INNER JOIN T_CSOPORT_OSSZES csoport ON OsztalyCsoport.ID = csoport.ID AND csoport.TOROLT = 'F'
      LEFT JOIN T_FELHASZNALO_OSSZES ofo ON ofo.ID = csoport.C_CSOPORTVEZETOID 
      INNER JOIN T_INTEZMENYADATOK_OSSZES i on i.C_INTEZMENYID = OsztalyCsoport.C_INTEZMENYID AND i.C_TANEVID = @tanevId
      INNER JOIN T_TANEV_OSSZES tanev ON tanev.ID = i.C_TANEVID and tanev.TOROLT = 'F'
    WHERE OsztalyCsoport.ID = @osztalyId 
  END

  --Osztály, évfolyam
  SELECT 
     OsztalyCsoport.C_NEV
    ,ISNULL(EvfolyamTipusa.C_NAME_1, (SELECT C_NAME_1 FROM T_DICTIONARYITEMBASE_OSSZES WHERE C_TYPE = 'EvfolyamTipus' AND ID = 1296 AND C_TANEVID = @tanevId)) AS C_EVFOLYAMTIPUSA_DNAME      -- Ha nincs évfolyam beállítva, akkor Na-t kell beírni
    ,OsztalyCsoport.ID AS OsztalyId
  FROM T_OSZTALYCSOPORT_OSSZES OsztalyCsoport
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES EvfolyamTipusa ON EvfolyamTipusa.Id = OsztalyCsoport.C_EVFOLYAMTIPUSA AND EvfolyamTipusa.C_TANEVID = @tanevId
  WHERE OsztalyCsoport.ID = @osztalyId
  
  
  CREATE TABLE #TanuloAdatok (
     TanuloId int 
    ,Azonosito nvarchar(40)
    ,Nev nvarchar(120)
    ,SzuletesiDatum nvarchar(20)
    ,SzuletesiHely nvarchar(50)
    ,Allampolgarsag nvarchar(250)
    ,AnyjaNeve nvarchar(64)
    ,SzuletesiOrszag nvarchar(250)
    ,TorzslapSzam nvarchar(500)
    ,GondviseloNeve nvarchar(max)
    ,NaploSorszam int
    ,Nev2 nvarchar(255)
    ,SajatosNevelesu char(1)
    ,TanuloCsoportId int
    ,BelepesDatum datetime
    ,KilepesDatum datetime
    ,Agazat nvarchar(250)
    ,Szakkepesites nvarchar(250)
    ,ReszSzakkepesites nvarchar(250)
    ,SzakmaCsoport nvarchar(250)
    ,EvfolyamTipus INT
    ,OsztalyId INT
  )
  
  --Tanuló adatok  
  INSERT INTO #TanuloAdatok (
     TanuloId
    ,Azonosito
    ,Nev
    ,SzuletesiDatum
    ,SzuletesiHely
    ,Allampolgarsag
    ,AnyjaNeve
    ,SzuletesiOrszag
    ,TorzslapSzam
    ,GondviseloNeve
    ,NaploSorszam
    ,Nev2
    ,SajatosNevelesu
    ,TanuloCsoportId
    ,BelepesDatum
    ,KilepesDatum
    ,Agazat
    ,Szakkepesites
    ,ReszSzakkepesites
    ,SzakmaCsoport
    ,EvfolyamTipus
    ,OsztalyId
  )  SELECT-- DISTINCT 
     felhasznalo.ID AS TanuloId
    ,felhasznalo.C_OKTATASIAZONOSITO AS Azonosito
    ,IIF(@nyomtatvanyNyelvEnum = 0, felhasznalo.C_NYOMTATASINEV, felhasznalo.C_UTONEV + ' '  + felhasznalo.C_VEZETEKNEV) AS Nev
    ,IIF(@nyomtatvanyNyelvEnum = 0, dbo.fnGetDokumentumDatumFormatum(felhasznalo.C_SZULETESIDATUM), FORMAT(felhasznalo.C_SZULETESIDATUM, 'dd. MM. yyyy')) AS SzuletesiDatum
    ,felhasznalo.C_SZULETESIHELY AS SzuletesiHely
    ,IIF(@nyomtatvanyNyelvEnum = 0, LOWER(allampolgarsag.C_NAME), dbo.fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, felhasznalo.C_ALLAMPOLGARSAGA)) AS Allampolgarsag
    ,IIF(@nyomtatvanyNyelvEnum = 0, C_ANYJANEVE, LTRIM(SUBSTRING(C_ANYJANEVE, C_ANYJANEVEELVALASZTO + 1 , LEN(C_ANYJANEVE) - C_ANYJANEVEELVALASZTO)) + ' ' + LTRIM(SUBSTRING(C_ANYJANEVE, 0, C_ANYJANEVEELVALASZTO + 1))) AS AnyjaNeve
    ,IIF(@nyomtatvanyNyelvEnum = 0, szorszag.C_NAME, dbo.fnGetDokumentumIdegenNyelv(@nyomtatvanyNyelvEnum, felhasznalo.C_SZULETESIORSZAG)) AS SzuletesiOrszag
    ,OsztalyTanuloi.TorzslapSzam AS TorzslapSzam
    ,gondviselo.Gondviselok AS GondviseloNeve
    ,OsztalyTanuloi.NaploSorszam AS NaploSorszam
    ,felhasznalo.C_NYOMTATASINEV AS Nev2
    ,Tanulo.C_SAJATOSNEVELESU AS SajatosNevelesu
    ,OsztalyTanuloi.TanuloCsoportId AS TanuloCsoportId
    ,OsztalyTanuloi.BelepesDatum AS BelepesDatum
    ,OsztalyTanuloi.KilepesDatum AS KilepesDatum
    ,OsztalyTanuloi.Agazat AS Agazat
    ,OsztalyTanuloi.Szakkepesites AS Szakkepesites
    ,OsztalyTanuloi.ReszSzakkepesites AS ReszSzakkepesites
    ,OsztalyTanuloi.SzakmaCsoport AS SzakmaCsoport
    ,CASE OsztalyCsoport.C_EVFOLYAMTIPUSA
      WHEN 7366 THEN ISNULL(tta.C_TANULOEVFOLYAMTIPUSID, (SELECT TOP 1 ID FROM T_DICTIONARYITEMBASE_OSSZES WHERE C_TYPE = 'EvfolyamTipus' AND ID = 1296 AND C_TANEVID = @tanevId AND TOROLT = 'F'))                  -- Összevont osztálynál a tanulóhoz beírt évfolyamot kell megjeleníteni, ha nincs beállítva, akkor Na-t kell beírni
      ELSE ISNULL(OsztalyCsoport.C_EVFOLYAMTIPUSA, (SELECT TOP 1 ID FROM T_DICTIONARYITEMBASE_OSSZES WHERE C_TYPE = 'EvfolyamTipus' AND ID = 1296 AND C_TANEVID = @tanevId AND TOROLT = 'F'))      -- Ha nincs évfolyam beállítva, akkor Na-t kell beírni
      END AS EvfolyamTipusa
    ,OsztalyTanuloi.OsztalyId AS OsztalyId
  FROM #Student OsztalyTanuloi
    INNER JOIN T_TANULO_OSSZES Tanulo ON Tanulo.Id = OsztalyTanuloi.TanuloId
    INNER JOIN  T_FELHASZNALO_OSSZES felhasznalo ON OsztalyTanuloi.TanuloId = felhasznalo.ID
    LEFT JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON tta.C_TANULOCSOPORTID = OsztalyTanuloi.TanuloCsoportId
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES allampolgarsag ON allampolgarsag.ID = felhasznalo.C_ALLAMPOLGARSAGA AND allampolgarsag.C_TANEVID = @tanevId
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES szorszag ON szorszag.ID = felhasznalo.C_SZULETESIORSZAG AND szorszag.C_TANEVID = @tanevId
    INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = @osztalyId AND OsztalyCsoport.C_TANEVID = @tanevId
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES EvfolyamTipus ON EvfolyamTipus.ID = OsztalyCsoport.C_EVFOLYAMTIPUSA AND EvfolyamTipus.C_TANEVID = @tanevId
    LEFT JOIN (
      SELECT DISTINCT
        g.TanuloId TanuloId
        ,(SELECT GondviseloNev + IIF(@nyomtatvanyNyelvEnum = 0, N' (' + LOWER(d.C_NAME) + N')', N'') + NCHAR(10) 
            FROM fnGetDokumentumGondviselok (@osztalyId, @tanevId, 'F', 'T') bg    
              INNER JOIN T_DICTIONARYITEMBASE_OSSZES d on d.ID = bg.RokonsagifokId AND d.C_TANEVID = @tanevId      
            WHERE 
              bg.TanuloId = g.TanuloId
            FOR XML PATH('')) Gondviselok
      FROM fnGetDokumentumGondviselok (@osztalyId, @tanevId, 'F', 'T') g
      ) gondviselo on felhasznalo.ID = gondviselo.TanuloId
  WHERE 
      felhasznalo.C_TANEVID = @tanevId
  AND felhasznalo.TOROLT = 'F'
  ORDER BY Nev

  SELECT 
     TanuloId
    ,Azonosito
    ,Nev
    ,SzuletesiDatum
    ,SzuletesiHely
    ,Allampolgarsag
    ,Anyjaneve
    ,SzuletesiOrszag
    ,TorzslapSzam
    ,GondviseloNeve
    ,NaploSorszam
    ,Nev2
    ,SajatosNevelesu
    ,TanuloCsoportId
    ,BelepesDatum
    ,KilepesDatum
    ,Szakkepesites
    ,ReszSzakkepesites
    ,dict.C_NAME AS C_EVFOLYAMTIPUSA_DNAME
    ,OsztalyId
  FROM #TanuloAdatok 
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES dict ON dict.ID = #TanuloAdatok.EvfolyamTipus AND dict.C_TANEVID = @tanevId
  ORDER BY LEN(TorzslapSzam), TorzslapSzam

  --Határozat
  SELECT 
     TanuloId
    ,TanuloCsoportId
    ,Bejegyzes
  FROM fnGetDokumentumTanuloZaradekai(@tanevId, @osztalyId)

  --Egyéb bejegyzések 
  SELECT 
     bejegyzes.TanuloId AS TanuloId
    ,s.TanuloCsoportId AS TanuloCsoportId
    ,Tartalom AS Bejegyzes 
    ,C_NAME AS Tipus_DNAME    
    ,IIF(@nyomtatvanyNyelvEnum = 0, dbo.fnGetDokumentumDatumFormatum(bejegyzes.Datum), FORMAT(bejegyzes.Datum, 'dd. MM. yyyy')) AS Datum
  FROM fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) bejegyzes
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = Tipusa AND C_TANEVID = @tanevId AND d.TOROLT = 'F'
    INNER JOIN #Student s ON s.TanuloId = bejegyzes.TanuloId
  WHERE Tipusa IN (1545, 1548, 1553) --KRETA-6062
    AND BelepesDatum <= Datum
    AND (KilepesDatum IS NULL OR KilepesDatum > Datum)
  ORDER BY Datum

  -- MULASZTÁSOK
  CREATE TABLE #Mulasztasok (
     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 (
     TanuloId 
    ,TanuloCsoportId 
    ,Igazolt 
    ,Igazolatlan 
    ,ElmeletIgazolt 
    ,ElmeletIgazolatlan 
    ,GyakorlatIgazolt 
    ,GyakorlatIgazolatlan 
    ,ElmeletOsszes 
    ,GyakorlatOsszes 
    ,Osszes 
  ) EXEC sp_GetDokumentumMulasztasok
     @osztalyId = @osztalyId
    ,@tanevId = @tanevId
    ,@elmeletiOraPercben = @elmeletiOraPercben
    ,@gyakorlatiOraPercben = @gyakorlatiOraPercben
    ,@ertekelesTipus = @ertekelesTipus
    ,@iskolaErdekuSzamit = @iskolaErdekuSzamit
    ,@isMuveszetOktatasi = @isMuveszetOktatasi
  
  SELECT
     TanuloTable.TanuloId 
    ,TanuloTable.TanuloCsoportId
    ,Igazolt 
    ,Igazolatlan 
    ,ElmeletIgazolt 
    ,ElmeletIgazolatlan 
    ,GyakorlatIgazolt 
    ,GyakorlatIgazolatlan 
    ,ElmeletOsszes
    ,GyakorlatOsszes
    ,Osszes  
  FROM #Mulasztasok mulasztasok
    INNER JOIN #Student TanuloTable ON mulasztasok.TanuloId = TanuloTable.TanuloId AND TanuloTable.TanuloCsoportId = mulasztasok.TanuloCsoportId

  -- ÉRTÉKELÉSEK
  CREATE TABLE #Ertekelesek (
     TanuloId int
    ,TanuloCsoportId int
    ,Targy nvarchar(max)
    ,Jegyzet nvarchar(max)
    ,Ertekeles nvarchar(max)
    ,ErtekelesValue int
    ,ErtekelesJegyzettel nvarchar(max)  
    ,Oraszam float
    ,RENDEZ1 int
    ,RENDEZ2 nvarchar(max)
    ,RENDEZ3 int
    ,RENDEZ4 int
    ,RENDEZ5 nvarchar(max)
  )
  
  INSERT INTO #Ertekelesek
  EXEC sp_GetDokumentumErtekelesek
    @osztalyId = @osztalyId,
    @tanevId = @tanevId,
    @ertekelesTipus =@ertekelesTipus,
    @nyomtatvanyNyelvEnum = @nyomtatvanyNyelvEnum,
    @tanitasiHetekSzamaVegzos = @tanitasiHetekSzamaVegzos,
    @tanitasiHetekSzamaNemVegzos = @tanitasiHetekSzamaNemVegzos,
    @isAltantargyBeszamitasa = @isAltantargyBeszamitasa,
    @isMuveszetOktatasi = @isMuveszetOktatasi

  SELECT 
     TanuloId    
    ,TanuloCsoportId  
    ,Targy    
    ,Jegyzet
    ,Ertekeles      
    ,ErtekelesJegyzettel        
    ,Oraszam    
    ,RENDEZ1  RENDEZ
  FROM #Ertekelesek
  ORDER BY RENDEZ1, RENDEZ2, RENDEZ3, RENDEZ4, RENDEZ5

  --Tanuló lista
  SELECT 
     Nev
    ,NaploSorszam
    ,TorzslapSzam 
    ,dbo.fnGetDokumentumDatumFormatum (KilepesDatum) KilepesDatum
    ,TanuloId
    ,OsztalyId
  FROM #TanuloAdatok
  ORDER BY Nev

  --Közösségi szolgálat
  SELECT DISTINCT
     OsztalyTanuloi.TanuloId
    ,OsztalyTanuloi.TanuloCsoportId
    ,Datum AS Datum
    ,ISNULL(' - ' + Megjegyzes, '') AS Megjegyzes
    ,Oraszam
    ,TeljesitesHelye
    ,FeljegyzoNeve
    ,Tipus
    ,KozossegiSzolgalatId
    ,IntervallumKezdete
  FROM fnGetDokumentumKozossegiSzolgalatOsztalyonkent(@tanevId, @osztalyId) KozossegiSzolgalat
    INNER JOIN #Student OsztalyTanuloi ON OsztalyTanuloi.TanuloId = KozossegiSzolgalat.TanuloId 
  WHERE @isKozossegiSzolgalat = 1 /*TODO: javítani...*/
  ORDER BY IntervallumKezdete

  --SNI
  SELECT 
     s.TanuloId AS TanuloId
    ,s.TanuloCsoportId AS TanuloCsoportId
    ,ISNULL(Tanulo.C_SNIKIALLITOINTEZMENY, '') AS SNIKiallitoIntezmeny
    ,dbo.fnGetDokumentumDatumFormatum(Tanulo.C_SNIOKMANYERVENYESSEGKEZDETE) AS SNIKezdete
    ,dbo.fnGetDokumentumDatumFormatum(Tanulo.C_SNIKONTROLLIDOPONT) AS SNIKontrolIdopont
    ,ISNULL(Tanulo.C_ERTELMIFOGYATEKOSOKMANYSZAM + '(Értelmi fogyatékos okmányszám) ', '')
    +ISNULL(Tanulo.C_LATASSERULTOKMANYSZAM + '(Látássérült okmányszám) ', '')            
    +ISNULL(Tanulo.C_HALLASSERULTOKMANYSZAM + '(Hallássérült okmányszám) ', '')          
    +ISNULL(Tanulo.C_BESZEDFOGYATEKOSOKMANYSZAM + '(Beszédfogyatékos okmányszám) ', '')    
    +ISNULL(Tanulo.C_MOZGASSERULTOKMANYSZAM + '(Mozgáskorlátozott okmányszám) ', '')
    +ISNULL(Tanulo.C_DISZGRAFIAOKMANYSZAM + '(Diszgráfia okmányszám) ', '')
    +ISNULL(Tanulo.C_DISZKALKULIAOKMANYSZAM + '(Diszkalkulia okmányszám) ', '')
    +ISNULL(Tanulo.C_DISZLEXIAOKMANYSZAM + '(Diszlexia okmányszám) ', '')  
    +ISNULL(TANULO.C_VISELKEDESORGANIKUSOKMANYSZA + '(Viselkedés fejlődésének rendellenessége okmányszám) ', '')
    +ISNULL(TANULO.C_VISELKEDESNEMORGANIKUSOKMANY + '(Viselkedés fejlődésének rendellenessége okmányszám) ', '')    
    +ISNULL(TANULO.C_MEGISMEROORGANIKUSOKMANYSZAM + '(Megismerő funkciók rendellenessége okmányszám) ', '')    
    +ISNULL(TANULO.C_MEGISMERONEMORGANIKUSOKMANYS + '(Megismerő funkciók rendellenessége okmányszám) ', '') AS SNIOkmanyszamok
  FROM #Student s
    INNER JOIN T_TANULO_OSSZES Tanulo ON Tanulo.Id =  s.TanuloId
  WHERE Tanulo.C_SAJATOSNEVELESU = 'T'

  --BTM
  SELECT 
     s.TanuloId AS TanuloId
    ,s.TanuloCsoportId AS TanuloCsoportId
    ,ISNULL(Tanulo.C_BTMKIALLITOINTEZMENY,'') AS BTMKiallitoIntezmeny
    ,dbo.fnGetDokumentumDatumFormatum(Tanulo.C_BTMOKMANYERVENYESSEGKEZDETE) AS BTMKezdete
    ,dbo.fnGetDokumentumDatumFormatum(Tanulo.C_BTMKONTROLLIDOPONT) AS BTMKontrolIdopont
    ,ISNULL(Tanulo.C_BTMHATAROZATOKMANYSZAM + '(BTM határozat okmányszáma) ', '')            
    +IIF(Tanulo.C_BEILLESZKEDESIPROBLEMAVALKUZ ='T', 'Beilleszkedési problémával küzd, ', '')          
    +IIF(Tanulo.C_MAGATARTASIPROBLEMAVALKUZD ='T', 'Magatartási problémával küzd, ', '')    
    +IIF(Tanulo.C_TANULASIPROBLEMAVALKUZD ='T', 'Tanulási problémával küzd -  ', '')
    +IIF(Tanulo.C_TANULASIPROBLEMADISZGRAFIA ='T', 'Diszgráfia, ', '')
    +IIF(Tanulo.C_TANULASIPROBLEMAVALKUZDDISZK ='T', 'Diszkalkulia, ', '')
    +IIF(Tanulo.C_TANULASIPROBLEMAVALKUZDDISZL ='T', 'Diszlexia ', '') AS BTMOkmanyszamok
  FROM #Student s
    INNER JOIN T_TANULO_OSSZES Tanulo ON Tanulo.Id =  s.TanuloId
  WHERE Tanulo.C_BTMPROBLEMAS = 'T'

  --Tanuló felmentései
  SELECT
     TanuloId  
    ,TanuloCsoportId
    ,TantargyNevMentessegNelkul
    ,MentessegOka
    ,dbo.fnGetDokumentumDatumFormatum(Kezdete)
  FROM fnGetDokumentumTanuloMentessegei(@tanevId, @osztalyId, @nyomtatvanyNyelvEnum)


  --Tanuló kzösségi szolgálat feljegzései
   SELECT 
     s.TanuloId AS TanuloId
    ,s.TanuloCsoportId AS TanuloCsoportId
    ,te.C_TARTALOM AS Bejegyzes 
    ,d.C_NAME AS Tipus_DNAME    
    ,dbo.fnGetDokumentumDatumFormatum(te.C_ROGZITESDATUMA) AS Datum    
  FROM T_TANULO_TANULOESEMENY tte
    INNER JOIN #Student s ON s.TanuloId = tte.C_TANULOID
    INNER JOIN T_TANULOESEMENY_OSSZES te on te.ID = tte.C_TANULOESEMENYID AND te.C_TANEVID = @tanevId
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = te.C_TIPUS AND d.C_TANEVID = @tanevId AND d.TOROLT = 'F'
  WHERE te.TOROLT = 'F' AND te.C_TIPUS = 1546

  SELECT
     Tanulok.TanuloId      TanuloId
    ,Tanulok.TanuloCsoportId  TanuloCsoportId
    ,C_TELJESITETT        isTeljesitett
    ,Osztalyzat.C_VALUE      Ertekeles
    ,'[' + C_MEGJEGYZES + ']'  Megjegyzes
    ,dbo.fnGetDokumentumDatumFormatum(OsszefuggoSzakGyak.C_TELJESITESDATUM)  Datum
  FROM #Student Tanulok
    INNER JOIN T_OSSZEFUGGOSZAKGYAK_OSSZES OsszefuggoSzakGyak ON OsszefuggoSzakGyak.C_TANULOID = Tanulok.TanuloId AND OsszefuggoSzakGyak.TOROLT = 'F' AND OsszefuggoSzakGyak.C_TANEVID  = @tanevid
    LEFT JOIN T_TANULOERTEKELES_OSSZES Ertekeles ON Ertekeles.C_OSSZEFUGGOSZAKGYAKID = OsszefuggoSzakGyak.ID AND Ertekeles.TOROLT = 'F' AND Ertekeles.C_TANEVID = @tanevid
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES Osztalyzat ON Osztalyzat.ID = Ertekeles.C_ERTEKELESOSZTALYZATID AND Osztalyzat.C_TANEVID = Ertekeles.C_TANEVID AND Osztalyzat.C_INTEZMENYID = Ertekeles.C_INTEZMENYID
  WHERE Tanulok.BelepesDatum <= OsszefuggoSzakGyak.C_TELJESITESDATUM 
     AND (Tanulok.KilepesDatum  >= OsszefuggoSzakGyak.C_TELJESITESDATUM OR Tanulok.KilepesDatum IS NULL)     
END 
GO
