DROP PROCEDURE IF EXISTS uspGetDokumentumErtekelesekIdoszakonkent
GO

CREATE PROCEDURE uspGetDokumentumErtekelesekIdoszakonkent
   @tanevId int 
  ,@osztalyCsoportId int 
  ,@ertekelesTipusa int 
  ,@csakTanorai bit 
  ,@csakKivalasztottOsztalyCsoport bit
  ,@atsoroltTanuloErtekelesek int
  ,@fuggolegesTantargyak bit
  ,@isMegjegyzesMegjelenjen bit = 1
  ,@intezmenyId int
  ,@osztalyzatTipusTypeID int = 44
  ,@magatartasErtekelesTipusTypeID int = 50
  ,@szorgalomErtekelesTipusTypeID int = 51
  ,@pIsOsztalynaplobanNemJelenikMeg bit = 0
  ,@pIsKellKapcsolodoOsztalyCsoportok bit = 0
  ,@pIsTantargynevNyomtatvanyban bit = 0
AS
BEGIN
  SET NOCOUNT ON;
  /* a #students tábla deklarálása az alábbi tároltakban történik: sp_GetOsztalynaplo, sp_GetCsoportNaplo, sp_GetUzenofuzetErtekelolap*/

  DECLARE @FelevVegeHonap int,
      @FelevVegeNap int

  CREATE TABLE #magatartasSzorgalomTMP (
     Tipus nvarchar(255)
    ,Honap int
    ,TanuloId int
    ,TanuloCsoportId int
    ,Ertekeles nvarchar(max)
    ,Datum datetime
    ,RogzitesDatum datetime
  )

  CREATE TABLE #magatartasSzorgalom (
     Honap int
    ,TanuloId int
    ,TanuloCsoportId int
    ,Tipus nvarchar(255)
    ,Ertekeles nvarchar(max)
    ,RENDEZ0 int
    ,RENDEZ1 int
    ,RENDEZ2 nvarchar(255)
    ,RENDEZ3 int
    ,RENDEZ4 int
    ,RENDEZ5 nvarchar(255)
    ,RendezHonap int
    ,Datum datetime
    ,RogzitesDatum datetime
  )

  CREATE TABLE #jegyekTMP (
     Honap int
    ,TanuloId int
    ,TanuloCsoportId int
    ,TantargyId int
    ,TantargyNev nvarchar(255)
    ,TantargyNevNyomtatvanyban nvarchar(255)
    ,Ertekeles nvarchar(max)
    ,RENDEZ0 int
    ,RENDEZ1 int
    ,RENDEZ2 nvarchar(max)
    ,RENDEZ3 int
    ,RENDEZ4 int
    ,RENDEZ5 nvarchar(max)
    ,Datum datetime
    ,RogzitesDatum datetime
  )

  CREATE TABLE #TanuloIdHonap (
     ID int
    ,Honap int
    ,TanuloCsoportId int
  )

  CREATE TABLE #TanuloTantargyHonapTmp (
     TanuloId int
    ,TanuloCsoportId int
    ,Honap int
    ,TantargyNev nvarchar(255)
    ,TantargyNevNyomtatvanyban nvarchar(255)
    ,TantargyId int
    ,RENDEZ0 int
    ,RENDEZ1 int
    ,RENDEZ2 nvarchar(max)
    ,RENDEZ3 int
    ,RENDEZ4 int
    ,RENDEZ5 nvarchar(max)
  )

  CREATE TABLE #jegyek (
     Honap int
    ,TanuloId int
    ,TanuloCsoportId int
    ,TantargyId int
    ,TantargyNev nvarchar(255)
    ,TantargyNevNyomtatvanyban nvarchar(255)
    ,Ertekeles nvarchar(max)
    ,RENDEZ0 int
    ,RENDEZ1 int
    ,RENDEZ2 nvarchar(max)
    ,RENDEZ3 int
    ,RENDEZ4 int
    ,RENDEZ5 nvarchar(max)
    ,RendezHonap int
  )

  SELECT 
     @FelevVegeHonap = DATEPART(mm, C_DATUM)
    ,@FelevVegeNap = DATEPART(dd, C_DATUM)
  FROM T_TANEVRENDJE_OSSZES 
  WHERE 
    C_NAPTIPUSA = 1400 
    AND TOROLT = 'F' 
    AND C_TANEVID = @tanevid

  INSERT INTO #magatartasSzorgalomTMP 
  SELECT 
     Tipus
    ,Honap
    ,TanuloId
    ,TanuloCsoportId
    ,Ertekeles
    ,Datum
    ,RogzitesDatum
  FROM
  (SELECT 
    'Magatartás' Tipus
    ,CASE
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap THEN 13
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) > @FelevVegeNap  THEN 14
      ELSE 
      DATEPART(mm, Datum)
     END AS Honap
    ,TanuloId
    ,TanuloCsoportId
    ,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev)  
    + CASE 
        WHEN TipusId = 1518 THEN ''
        WHEN TipusId = 1522 THEN '(I.)'
        WHEN TipusId = 1523 THEN '(III.)'
        WHEN TipusId = 1524 THEN '(II.)'
        WHEN TipusId = 1525 THEN '(IV.)'
      END AS Ertekeles
    ,Datum
    ,RogzitesDatum
  FROM #ErtekelesekTemp
  WHERE
    (MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
    AND TipusId IN (1518, 1522, 1523, 1524, 1525)

  UNION ALL

  SELECT 
    'Magatartás' Tipus
    ,CASE
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap THEN 13
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) > @FelevVegeNap  THEN 14
      ELSE 
      DATEPART(mm, Datum)
     END AS Honap
    ,TanuloId
    ,TanuloCsoportId
    ,CASE
      WHEN TipusId in (1522, 1523, 1524, 1525) THEN LOWER(ISNULL(MagatartasSzovegRovidNev, 'sz'))
        + CASE 
          WHEN TipusId = 1522 THEN '(I.)'
          WHEN TipusId = 1523 THEN '(III.)'
          WHEN TipusId = 1524 THEN '(II.)'
          WHEN TipusId = 1525 THEN '(IV.)'
        END
      ELSE
        LOWER(ISNULL(MagatartasSzovegRovidNev, 'sz')) + Jeloles
      END
    ,Datum
    ,RogzitesDatum
  FROM #ErtekelesekTemp
  WHERE
    MagatartasSzoveg IS NOT NULL
    AND TipusId IN (1518, 1522, 1523, 1524, 1525)
  
  UNION ALL

  SELECT 
    'Szorgalom'
    ,CASE
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap THEN 13
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) > @FelevVegeNap  THEN 14
      ELSE 
      DATEPART(mm, Datum)
     END AS Honap
    ,TanuloId
    ,TanuloCsoportId
    ,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev) 
    + CASE 
        WHEN TipusId = 1518 THEN ''
        WHEN TipusId = 1522 THEN '(I.)'
        WHEN TipusId = 1523 THEN '(III.)'
        WHEN TipusId = 1524 THEN '(II.)'
        WHEN TipusId = 1525 THEN '(IV.)'
      END AS Ertekeles
    ,Datum
    ,RogzitesDatum
  FROM #ErtekelesekTemp
  WHERE
    (SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL)
    AND TipusId IN (1518, 1522, 1523, 1524, 1525)

  UNION ALL

  SELECT 
    'Szorgalom'
    ,CASE
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap THEN 13
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) > @FelevVegeNap  THEN 14
      ELSE 
      DATEPART(mm, Datum)
     END AS Honap
    ,TanuloId
    ,TanuloCsoportId
    ,CASE
      WHEN TipusId in (1522, 1523, 1524, 1525) THEN LOWER(ISNULL(SzorgalomSzovegRovidNev, 'sz'))
        + CASE 
          WHEN TipusId = 1522 THEN '(I.)'
          WHEN TipusId = 1523 THEN '(III.)'
          WHEN TipusId = 1524 THEN '(II.)'
          WHEN TipusId = 1525 THEN '(IV.)'
        END
      ELSE
        LOWER(ISNULL(SzorgalomSzovegRovidNev, 'sz')) + Jeloles
      END
    ,Datum
    ,RogzitesDatum
  FROM #ErtekelesekTemp
  WHERE
    SzorgalomSzoveg IS NOT NULL
    AND TipusId IN (1518, 1522, 1523, 1524, 1525)
  
  UNION ALL

  SELECT 
    'Szorgalom'
    ,15  Honap
    ,TanuloId
    ,TanuloCsoportId
    ,COALESCE(SzorgalomErtek, SzorgalomOsztalyzatNev, LOWER(ISNULL(SzorgalomSzovegRovidNev, 'sz'))) + ISNULL(Jeloles, '')
    ,Datum
    ,RogzitesDatum
  FROM #ErtekelesekTemp
  WHERE
    (SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL OR SzorgalomSzoveg IS NOT NULL)
    AND TipusId = 1519

  UNION ALL

  SELECT 
    'Magatartás'
    ,15  Honap
    ,TanuloId
    ,TanuloCsoportId
    ,COALESCE(MagatartasErtek, MagatartasOsztalyzatNev, LOWER(ISNULL(MagatartasSzovegRovidNev, 'sz')))  + ISNULL(Jeloles, '')
    ,Datum
    ,RogzitesDatum
  FROM #ErtekelesekTemp
  WHERE
    (MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL OR MagatartasSzoveg IS NOT NULL)
    AND TipusId = 1519

  UNION ALL

  SELECT 
    'Szorgalom'
    ,16  Honap
    ,TanuloId
    ,TanuloCsoportId
    ,COALESCE(SzorgalomErtek, SzorgalomOsztalyzatNev, LOWER(ISNULL(SzorgalomSzovegRovidNev, 'sz')))  + ISNULL(Jeloles, '')
    ,Datum
    ,RogzitesDatum
  FROM #ErtekelesekTemp
  WHERE
    (SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL OR SzorgalomSzoveg IS NOT NULL) 
    AND TipusId = 1520

  UNION ALL

  SELECT 
    'Magatartás'
    ,16  Honap
    ,TanuloId
    ,TanuloCsoportId
    ,COALESCE(MagatartasErtek, MagatartasOsztalyzatNev, LOWER(ISNULL(MagatartasSzovegRovidNev, 'sz'))) + ISNULL(Jeloles, '')
    ,Datum
    ,RogzitesDatum
  FROM #ErtekelesekTemp
  WHERE
    (MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL OR MagatartasSzoveg IS NOT NULL)
    AND TipusId = 1520
  )magszorg

  INSERT INTO #magatartasSzorgalom 
  SELECT DISTINCT
     Honap
    ,TanuloId
    ,TanuloCsoportId
    ,Tipus
    ,STUFF((
      SELECT ', ' + CAST(Ertekeles AS nvarchar(max))
      FROM #magatartasSzorgalomTMP bmsz 
      WHERE 
        msz.TanuloId = bmsz.TanuloId
        AND msz.Tipus = bmsz.Tipus
        AND msz.Honap = bmsz.Honap
        AND msz.TanuloCsoportId = bmsz.TanuloCsoportId
      ORDER BY bmsz.Datum,bmsz.RogzitesDatum
      FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2,'') Ertekeles
    ,0 AS RENDEZ0
    ,IIF(Tipus = 'Magatartás', 0, 1) RENDEZ1
    ,'' RENDEZ2
    ,0 RENDEZ3
    ,0 RENDEZ4
    ,'' RENDEZ5
    ,CASE 
      WHEN Honap = 2 THEN 8
      WHEN Honap = 3 THEN 9
      WHEN Honap = 4 THEN 10
      WHEN Honap = 5 THEN 11
      WHEN Honap = 6 THEN 12
      WHEN Honap = 9 THEN  1
      WHEN Honap = 10 THEN 2
      WHEN Honap = 11 THEN 3
      WHEN Honap = 12 THEN 4
      WHEN Honap = 13 THEN 5
      WHEN Honap = 14 THEN 7
      WHEN Honap = 15 THEN 6
      WHEN Honap = 16 THEN 15
    END AS RendezHonap
    ,Datum
    ,RogzitesDatum
  FROM #magatartasSzorgalomTMP msz

  CREATE CLUSTERED INDEX ci111sss on #magatartasSzorgalomTMP (tanulocsoportid) 

  INSERT INTO #jegyekTMP 
  SELECT 
     Honap
    ,TanuloId
    ,TanuloCsoportId
    ,TantargyId
    ,TantargyNev
    ,TantargyNevNyomtatvanyban
    ,Ertekeles
    ,RENDEZ0
    ,RENDEZ1
    ,RENDEZ2
    ,RENDEZ3
    ,RENDEZ4
    ,RENDEZ5
    ,Datum
    ,RogzitesDatum
  FROM
  (SELECT 
     CASE
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap THEN 13
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) > @FelevVegeNap  THEN 14
      ELSE 
      DATEPART(mm, Datum)
     END AS Honap
    ,TanuloId
    ,TanuloCsoportId
    ,TantargyId
    ,TantargyNev
    ,TantargyNevNyomtatvanyban
    ,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek)
      + CASE 
      WHEN TipusId = 1518 THEN ''
      WHEN TipusId = 1522 THEN '(I.)' + ISNULL(Jeloles, '')
      WHEN TipusId = 1523 THEN '(III.)' + ISNULL(Jeloles, '')
      WHEN TipusId = 1524 THEN '(II.)' + ISNULL(Jeloles, '')
      WHEN TipusId = 1525 THEN '(IV.)' + ISNULL(Jeloles, '')
      WHEN TipusId = 1521 THEN '(mz)'
      WHEN TipusId = 1526 THEN '(pv)'
      WHEN TipusId = 1527 THEN '(ov)'
        WHEN TipusId = 1528 THEN '(kv)'
      WHEN TipusId = 6916 THEN '(pótló v.)'
      WHEN TipusId = 6917 THEN '(jv)'
      WHEN TipusId = 6918 THEN '(bv)'
      ELSE ' ' + LOWER(SUBSTRING(C_NAME, 0, 3))
      END AS Ertekeles
    ,RENDEZ0
    ,RENDEZ1
    ,RENDEZ2
    ,RENDEZ3
    ,RENDEZ4
    ,RENDEZ5
    ,Datum
    ,RogzitesDatum
  FROM #ErtekelesekTemp ertekeles
  LEFT JOIN T_DICTIONARYITEMBASE_OSSZES ertekesMod ON ertekeles.TipusId = ertekesMod.ID AND TOROLT = 'F' AND ertekesMod.C_TANEVID = @tanevId
  WHERE
    isMagatartasSzorgalom = 'F'
    AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
    AND TipusId NOT IN (1519, 1520)
  
  UNION ALL

  SELECT 
     CASE 
      WHEN TipusId = 1519 THEN 15
      WHEN TipusId = 1520 THEN 16
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap THEN 13
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) > @FelevVegeNap  THEN 14
      ELSE 
      DATEPART(mm, Datum)
     END AS Honap
    ,TanuloId
    ,TanuloCsoportId
    ,TantargyId
    ,TantargyNev
    ,TantargyNevNyomtatvanyban
    ,CASE
      WHEN TipusId in (1519, 1520) THEN LOWER(ISNULL(ErtekelesSzovegRovidNev, 'sz'))
      WHEN TipusId in (1522, 1523, 1524, 1525) THEN LOWER(ISNULL(ErtekelesSzovegRovidNev, 'sz'))
        + CASE 
          WHEN TipusId = 1522 THEN '(I.)'
          WHEN TipusId = 1523 THEN '(III.)'
          WHEN TipusId = 1524 THEN '(II.)'
          WHEN TipusId = 1525 THEN '(IV.)'
        END
      ELSE
        LOWER(ISNULL(ErtekelesSzovegRovidNev, 'sz')) + Jeloles
      END
      AS Ertekeles
    ,RENDEZ0
    ,RENDEZ1
    ,RENDEZ2
    ,RENDEZ3
    ,RENDEZ4
    ,RENDEZ5
    ,Datum
    ,RogzitesDatum
  FROM #ErtekelesekTemp
  WHERE
    ErtekelesSzoveg IS NOT NULL

  UNION ALL

  SELECT 
     15 Honap
    ,TanuloId
    ,TanuloCsoportId
    ,TantargyId
    ,TantargyNev
    ,TantargyNevNyomtatvanyban
    ,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek) + IIF(@isMegjegyzesMegjelenjen = 1, ISNULL(Jeloles, ''), '')
    ,RENDEZ0
    ,RENDEZ1
    ,RENDEZ2
    ,RENDEZ3
    ,RENDEZ4
    ,RENDEZ5
    ,Datum
    ,RogzitesDatum
  FROM #ErtekelesekTemp
  WHERE
    isMagatartasSzorgalom = 'F'
    AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
    AND TipusId = 1519

  UNION ALL

  SELECT 
     16 Honap
    ,TanuloId
    ,TanuloCsoportId
    ,TantargyId
    ,TantargyNev
    ,TantargyNevNyomtatvanyban
    ,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek) + IIF(@isMegjegyzesMegjelenjen = 1, ISNULL(Jeloles, ''), '')
    ,RENDEZ0
    ,RENDEZ1
    ,RENDEZ2
    ,RENDEZ3
    ,RENDEZ4
    ,RENDEZ5
    ,Datum
    ,RogzitesDatum
  FROM #ErtekelesekTemp
  WHERE
    isMagatartasSzorgalom = 'F'
    AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
    AND TipusId = 1520
  )jegyek

  CREATE CLUSTERED INDEX ci111ssws on #jegyekTMP (tanulocsoportid) 
-----------------------------------------------------------------------------------------------
  INSERT INTO #jegyekTMP
  SELECT        
   Honap
    ,TanuloId
    ,TanuloCsoportId
    ,NULL AS TantargyId
    ,a.Tipus
    ,a.Tipus
    ,Ertekeles 
    ,0 AS RENDEZ0
    ,IIF(a.Tipus = 'Magatartás', 0, 1) RENDEZ1
    ,'' AS RENDEZ2
    ,0 AS RENDEZ3
    ,0 AS RENDEZ4
    ,'' AS RENDEZ5
    ,Datum
    ,RogzitesDatum
 FROM #magatartasSzorgalomTmp a

  -- Összeszedjük az összes Tanuló/Tanulócsoport/Hónap-ot
  INSERT INTO #TanuloIdHonap
  SELECT
     tcs.C_TANULOID AS ID
    ,Honap
    ,tcs.ID AS TanuloCsoportId
  FROM T_TANULOCSOPORT_OSSZES tcs
  CROSS JOIN (VALUES (2),(3),(4),(5),(6),(9),(10),(11),(12),(13),(14),(15),(16)) Honap (Honap)
  WHERE tcs.C_OSZTALYCSOPORTID = @osztalycsoportId
    
  INSERT INTO #Tantargyak
  EXEC uspGetDokumentumTantargyakErtekeleshez @intezmenyId, @tanevId, @osztalyCsoportId, @csakKivalasztottOsztalyCsoport, @osztalyzatTipusTypeID, @magatartasErtekelesTipusTypeID, @szorgalomErtekelesTipusTypeID, @pIsKellKapcsolodoOsztalyCsoportok

  INSERT INTO #TanuloTantargyHonapTmp
  SELECT
     tih.Id AS TanuloId
    ,tih.TanuloCsoportId AS TanuloCsoportId
    ,tih.Honap AS Honap
    ,t.C_NEV AS TantargyNev
    ,t.C_NEVNYOMTATVANYBAN AS TantargyNevNyomtatvanyban
    ,t.ID AS TantargyId
    ,t.RENDEZ0
    ,t.RENDEZ1
    ,t.RENDEZ2
    ,t.RENDEZ3
    ,t.RENDEZ4
    ,t.RENDEZ5
  FROM #TanuloIdHonap tih
    INNER JOIN #Tantargyak t ON t.c_tanuloid = tih.Id and t.c_tanulocsoportid = tih.TanuloCsoportId

-----------------------------------------------------------------------------------------------------------
  INSERT INTO #jegyek 
  SELECT DISTINCT
     TanuloIdHonap.Honap
    ,TanuloIdHonap.TanuloId
    ,TanuloIdHonap.TanuloCsoportId
    ,TanuloIdHonap.TantargyId
    ,TanuloIdHonap.TantargyNev
    ,TanuloIdHonap.TantargyNevNyomtatvanyban
    ,STUFF((
      SELECT ', ' + CAST(Ertekeles AS nvarchar(max))
      FROM #jegyekTMP bjegyekTMP
      WHERE 
        jegyekTMP.TanuloId = bjegyekTMP.TanuloId
        AND jegyekTMP.TanuloCsoportId = bjegyekTMP.TanuloCsoportId
        AND jegyekTMP.TantargyNev = bjegyekTMP.TantargyNev
        AND jegyekTMP.Honap = bjegyekTMP.Honap
      ORDER BY Datum, RogzitesDatum
      FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2,'') Ertekeles
    ,TanuloIdHonap.RENDEZ0
    ,TanuloIdHonap.RENDEZ1
    ,TanuloIdHonap.RENDEZ2
    ,TanuloIdHonap.RENDEZ3
    ,TanuloIdHonap.RENDEZ4
    ,TanuloIdHonap.RENDEZ5
    ,CASE 
      WHEN TanuloIdHonap.Honap = 2 THEN 8
      WHEN TanuloIdHonap.Honap = 3 THEN 9
      WHEN TanuloIdHonap.Honap = 4 THEN 10
      WHEN TanuloIdHonap.Honap = 5 THEN 11
      WHEN TanuloIdHonap.Honap = 6 THEN 12
      WHEN TanuloIdHonap.Honap = 9 THEN  1
      WHEN TanuloIdHonap.Honap = 10 THEN 2
      WHEN TanuloIdHonap.Honap = 11 THEN 3
      WHEN TanuloIdHonap.Honap = 12 THEN 4
      WHEN TanuloIdHonap.Honap = 13 THEN 5
      WHEN TanuloIdHonap.Honap = 14 THEN 7
      WHEN TanuloIdHonap.Honap = 15 THEN 6
      WHEN TanuloIdHonap.Honap = 16 THEN 15
      END AS RendezHonap
  FROM #TanuloTantargyHonapTmp TanuloIdHonap
    LEFT JOIN #jegyekTMP jegyekTMP ON TanuloIdHonap.TanuloId = jegyekTMP.TanuloId 
                      AND TanuloIdHonap.Honap = jegyekTMP.Honap 
                      AND TanuloIdHonap.TanuloCsoportId = jegyekTMP.TanuloCsoportId
                      AND TanuloIdHonap.TantargyNev = jegyekTMP.TantargyNev

  IF @pIsOsztalynaplobanNemJelenikMeg = 1
  BEGIN
    -- Azon sorok eltávolítása, ahol a tantárgy meg van jelölve, hogy osztálynaplóban nem látszik, és nincs hozzá értékelés
    DELETE j
    FROM #jegyek j
      INNER JOIN T_TANTARGY_OSSZES targy ON targy.ID = j.TantargyId 
        AND targy.TOROLT = 'F'
    WHERE targy.C_ISOSZTALYNAPLOBANEMLATSZIK = 'T'
      AND j.Ertekeles IS NULL
  END

   IF @fuggolegesTantargyak = 1
   BEGIN
   
    DECLARE @tantargyakJegyek NVARCHAR(MAX)
    DECLARE @tantargyakNevvelJegyek NVARCHAR(MAX)
    SELECT  @tantargyakNevvelJegyek = ISNULL(@tantargyakNevvelJegyek + ', ', '') + '[' + CAST(t.TantargyId AS NVARCHAR(MAX)) + '] AS [' + REPLACE(REPLACE(t.TantargyNev, '[', '[['), ']', ']]') + ']',
        @tantargyakJegyek = ISNULL(@tantargyakJegyek + ', ', '[0], [1],') + '[' + CAST(t.TantargyId AS NVARCHAR(MAX)) + ']'
    FROM (SELECT DISTINCT TantargyId, IIF(LEN(t.c_nev) > 128, SUBSTRING(t.C_NEV,1,120) + '...', t.c_nev) AS TantargyNev, RENDEZ0, RENDEZ1
      ,RENDEZ2 ,RENDEZ3, RENDEZ4, RENDEZ5  FROM #jegyek j INNER JOIN T_TANTARGY_OSSZES t ON t.Id = j.TantargyId ) t
    ORDER BY RENDEZ0, RENDEZ1, RENDEZ2, RENDEZ3, RENDEZ4, RENDEZ5

    DECLARE @sqlJegyek NVARCHAR(MAX)
    SET @sqlJegyek = '
    SELECT 
       TanuloId tanuloID
      ,TanuloCsoportId
      ,CASE 
        WHEN Honap = 2 THEN ''02.''
        WHEN Honap = 3 THEN ''03.''
        WHEN Honap = 4 THEN ''04.''
        WHEN Honap = 5 THEN ''05.''
        WHEN Honap = 6 THEN ''06.''
        WHEN Honap = 9 THEN ''09.''
        WHEN Honap = 10 THEN ''10.''
        WHEN Honap = 11 THEN ''11.''
        WHEN Honap = 12 THEN ''12.''
        WHEN Honap = 13 THEN ''1/I.''
        WHEN Honap = 14 THEN ''1/II.''
        WHEN Honap = 15 THEN ''F''
        WHEN Honap = 16 THEN ''É''
      END AS periodusNev
        ,piv.[0] AS Magatartás
        ,piv.[1] AS Szorgalom
        ,' + @tantargyakNevvelJegyek + '  
    FROM 
    (
      SELECT 
        CASE 
          WHEN TantargyNev = ''Magatartás'' THEN 0
          WHEN TantargyNev = ''Szorgalom'' THEN 1
          ELSE TantargyId 
        END AS TantargyId
        ,Honap
        ,s.ID TanuloId
        ,s.TanuloCsoportId
        ,Ertekeles
        ,RendezHonap 
      FROM #jegyek j 
        INNER JOIN #studentsWithTanuloCsoport s on j.Tanuloid = s.ID AND s.TanuloCsoportId = j.TanuloCsoportId
    )a 
    PIVOT (MAX(Ertekeles) FOR TantargyId in (' + @tantargyakJegyek + ')) piv
    ORDER BY RendezHonap    
    '

    IF (@tantargyakJegyek IS NULL)
      BEGIN
        SELECT 0 AS tanuloId, 0 as TanuloCsoportId
      END
    ELSE
      BEGIN
        EXEC sp_executesql @sqlJegyek
      END
  END
  
  ELSE
  BEGIN
    SELECT
       TanuloId
      ,TanuloCsoportId
      ,TantargyNev AS Tipus
      ,RENDEZ0
      ,RENDEZ1
      ,RENDEZ2
      ,RENDEZ3
      ,RENDEZ4
      ,RENDEZ5
      ,[9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16]  
    FROM (
      SELECT jegyek.TanuloId
        ,ISNULL(tanulok.TanuloCsoportId
            ,(SELECT TOP 1 ID FROM T_TANULOCSOPORT_OSSZES AS tcs 
                WHERE tcs.C_TANULOID = jegyek.TanuloId AND tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId)
        ) AS TanuloCsoportId, Ertekeles, Honap, TantargyId, IIF(@pIsTantargynevNyomtatvanyban = 1 AND TantargyNevNyomtatvanyban IS NOT NULL AND TantargyNevNyomtatvanyban != '', TantargyNevNyomtatvanyban, TantargyNev) AS TantargyNev, RENDEZ0, RENDEZ1, RENDEZ2, RENDEZ3, RENDEZ4, RENDEZ5
      FROM #jegyek AS jegyek
        LEFT JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalycsoportId, 'T') AS tanulok ON
            tanulok.TanuloId = jegyek.TanuloId AND tanulok.TanuloCsoportId = jegyek.TanuloCsoportId
      ) j 
    PIVOT (MAX(Ertekeles) FOR Honap IN ([9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16])) piv
    ORDER BY TanuloId, RENDEZ0, RENDEZ1, RENDEZ2, RENDEZ3, RENDEZ4, RENDEZ5, Tipus
  END
END

GO