SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO DROP FUNCTION IF EXISTS fnGetDokumentumErtekelesekOsztalyonkent GO CREATE FUNCTION fnGetDokumentumErtekelesekOsztalyonkent (@tanevId INT, @osztalyCsoportId INT, @ertekelesTipusa INT = NULL, @csakTanorai BIT = 1, @csakKivlasztottOsztalyCsoport BIT = 0, @atsoroltTanuloErtekelesek INT = 0) RETURNS @retTanuloErtekeles TABLE ( ErtekelesId INT NOT NULL, Datum DATE, TipusId INT, ErtekelesSzoveg NVARCHAR(MAX), ErtekelesSzovegRovidNev NVARCHAR(3), ErtekelesOsztalyzatId INT, ErtekelesOsztalyzatValue INT, ErtekelesOsztalyzatNev NVARCHAR(MAX), ErtekelesSzazalek NVARCHAR(MAX), MagatartasOsztalyzatId INT, MagatartasOsztalyzatValue INT, MagatartasOsztalyzatNev NVARCHAR(MAX), MagatartasSzoveg NVARCHAR(MAX), MagatartasSzovegRovidNev NVARCHAR(3), MagatartasErtekId INT, MagatartasErtek NVARCHAR(MAX), MagatartasErtekOsztalyzatkent INT, SzorgalomOsztalyzatId INT, SzorgalomOsztalyzatValue INT, SzorgalomOsztalyzatNev NVARCHAR(MAX), SzorgalomSzoveg NVARCHAR(MAX), SzorgalomSzovegRovidNev NVARCHAR(3), SzorgalomErtekId INT, SzorgalomErtek NVARCHAR(MAX), SzorgalomErtekOsztalyzatkent INT, TanuloId INT, TanuloCsoportId INT, OsztalyCsoportId INT, TantargyId INT, TantargyNevZarojellel NVARCHAR(MAX), TantargyNevNyomtatvanyban NVARCHAR(MAX), TantargyNev NVARCHAR(MAX), TantargyAngolNev NVARCHAR(MAX), TantargyNemetNev NVARCHAR(MAX), TargyKategoriaId INT, FotargyE CHAR(1), Altantargy CHAR(1), FotargyId INT, ErtekelesTema NVARCHAR(MAX), ErtekeloId INT, ErtekelesModjaId INT, IsMagatartasSzorgalom CHAR(1), Jeloles NVARCHAR(MAX), JelolesAndErtekelesTema NVARCHAR(MAX) ) AS BEGIN INSERT INTO @retTanuloErtekeles SELECT DISTINCT tanuloErtekeles.ID, tanuloErtekeles.C_DATUM, tanuloErtekeles.C_TIPUSID, tanuloErtekeles.C_ERTEKELESSZOVEG, tanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV, tanuloErtekeles.C_ERTEKELESOSZTALYZATID, ertekelesOsztalyzat.C_VALUE, ertekelesOsztalyzat.C_NAME, IIF(tanuloErtekeles.C_ERTEKELESSZAZALEK IS NOT NULL, CONVERT(NVARCHAR(3), tanuloErtekeles.C_ERTEKELESSZAZALEK)+'%', NULL), tanuloErtekeles.C_MAGATARTASOSZTALYZATID, magatartasOsztalyzat.C_VALUE, magatartasOsztalyzat.C_NAME, tanuloErtekeles.C_MAGATARTASSZOVEG, tanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV, tanuloErtekeles.C_MAGATARTASERTEKID, magatartasErtek.C_NAME, magatartasErtek.C_VALUE + 1, tanuloErtekeles.C_SZORGALOMOSZTALYZATID, szorgalomOsztalyzat.C_VALUE, szorgalomOsztalyzat.C_NAME, tanuloErtekeles.C_SZORGALOMSZOVEG, tanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV, tanuloErtekeles.C_SZORGALOMERTEKID, szorgalomErtek.C_NAME, szorgalomErtek.C_VALUE + 1, tanuloErtekeles.C_TANULOID, TanuloCsoportId, tanuloErtekeles.C_OSZTALYCSOPORTID, tanuloErtekeles.C_TANTARGYID, IIF(tantargy.C_NEV <> tantargy.C_NEVNYOMTATVANYBAN AND tantargy.C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN +' ('+tantargy.C_NEV+')', tantargy.C_NEV), tantargy.C_NEVNYOMTATVANYBAN, tantargy.C_NEV, tantargy.C_ANGOLNEV, tantargy.C_NEMETNEV, tantargy.C_TARGYKATEGORIA, tantargy.C_FOTARGYE, tantargy.C_ALTANTARGYKENTNYOMTATVANYBAN, tantargy.C_FOTARGYID, tanuloErtekeles.C_ERTEKELESTEMA, tanuloErtekeles.C_ERTEKELOID, tanuloErtekeles.C_ERTEKELESMODID, tanuloErtekeles.C_ISMAGATARTASSZORGALOM, IIF(tanuloErtekeles.C_ERTEKELESTEMA IS NOT NULL AND tanuloErtekeles.C_TIPUSID IN (1519, 1520), '(' + CAST(CHAR(ROW_NUMBER() OVER(PARTITION BY tanuloErtekeles.C_TANULOID, tanuloErtekeles.C_TIPUSID, IIF(tanuloErtekeles.C_ERTEKELESTEMA IS NOT NULL, 1, 0) ORDER BY tanuloErtekeles.C_DATUM) + 96) AS NVARCHAR(10))+')', ''), IIF(tanuloErtekeles.C_ERTEKELESTEMA IS NOT NULL AND tanuloErtekeles.C_TIPUSID IN(1519, 1520), '('+CAST(CHAR(ROW_NUMBER() OVER(PARTITION BY tanuloErtekeles.C_TANULOID, tanuloErtekeles.C_TIPUSID, IIF(tanuloErtekeles.C_ERTEKELESTEMA IS NOT NULL, 1, 0) ORDER BY tanuloErtekeles.C_DATUM) + 96) AS NVARCHAR(10)) + '): ' + tanuloErtekeles.C_ERTEKELESTEMA, '') FROM T_TANULOERTEKELES_OSSZES tanuloErtekeles INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyCsoportId, 'T') tanulo ON tanulo.TanuloId = tanuloErtekeles.C_TANULOID INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_TANULOID = tanuloErtekeles.C_TANULOID AND TanuloCsoport.C_OSZTALYCSOPORTID = tanuloErtekeles.C_OSZTALYCSOPORTID AND tanuloErtekeles.C_DATUM BETWEEN TanuloCsoport.C_BELEPESDATUM AND ISNULL(TanuloCsoport.C_KILEPESDATUM, GETDATE()) AND TanuloCsoport.TOROLT = 'F' LEFT JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = tanuloErtekeles.C_TANTARGYID AND (tantargy.C_TARGYKATEGORIA <> 1248 OR tantargy.C_TARGYKATEGORIA IS NULL) LEFT JOIN T_DICTIONARYITEMBASE_OSSZES ertekelesOsztalyzat ON ertekelesOsztalyzat.ID = tanuloErtekeles.C_ERTEKELESOSZTALYZATID AND ertekelesOsztalyzat.C_TANEVID = @tanevId AND ertekelesOsztalyzat.C_TYPE LIKE 'OsztalyzatTipus' LEFT JOIN T_DICTIONARYITEMBASE_OSSZES magatartasOsztalyzat ON magatartasOsztalyzat.ID = tanuloErtekeles.C_MAGATARTASOSZTALYZATID AND magatartasOsztalyzat.C_TANEVID = @tanevId AND magatartasOsztalyzat.C_TYPE LIKE 'OsztalyzatTipus' LEFT JOIN T_DICTIONARYITEMBASE_OSSZES szorgalomOsztalyzat ON szorgalomOsztalyzat.ID = tanuloErtekeles.C_SZORGALOMOSZTALYZATID AND szorgalomOsztalyzat.C_TANEVID = @tanevId AND szorgalomOsztalyzat.C_TYPE LIKE 'OsztalyzatTipus' LEFT JOIN T_DICTIONARYITEMBASE_OSSZES magatartasErtek ON magatartasErtek.ID = tanuloErtekeles.C_MAGATARTASERTEKID AND magatartasErtek.C_TANEVID = @tanevId AND magatartasErtek.C_TYPE LIKE 'MagatartasErtekelesTipus' LEFT JOIN T_DICTIONARYITEMBASE_OSSZES szorgalomErtek ON szorgalomErtek.ID = tanuloErtekeles.C_SZORGALOMERTEKID AND szorgalomErtek.C_TANEVID = @tanevId AND szorgalomErtek.C_TYPE LIKE 'SzorgalomErtekelesTipus' INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON osztalyCsoport.ID = tanuloErtekeles.C_OSZTALYCSOPORTID AND osztalyCsoport.TOROLT = 'F' LEFT JOIN T_CSOPORT_OSSZES csoport ON csoport.ID = tanuloErtekeles.C_OSZTALYCSOPORTID LEFT JOIN T_OSZTALY_OSSZES osztaly ON osztaly.ID = tanuloErtekeles.C_OSZTALYCSOPORTID WHERE tanuloErtekeles.C_TANEVID = @tanevId AND tanuloErtekeles.TOROLT = 'F' AND (@atsoroltTanuloErtekelesek > 0 OR (tanuloErtekeles.C_OSZTALYCSOPORTID IN( SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId, 0)) ) ) AND (@ertekelesTipusa IS NULL OR C_TIPUSID = @ertekelesTipusa) AND (@csakKivlasztottOsztalyCsoport = 0 OR tanuloErtekeles.C_OSZTALYCSOPORTID = @osztalyCsoportId) AND (@csakTanorai = 0 OR osztaly.ID IS NOT NULL OR (csoport.ID IS NOT NULL AND csoport.C_TIPUSA IN( SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId) ) ) ) AND BelepesDatum <= tanuloErtekeles.C_DATUM AND (KilepesDatum IS NULL OR KilepesDatum >= tanuloErtekeles.C_DATUM) option (recompile); IF @atsoroltTanuloErtekelesek = 1 BEGIN DECLARE @osztalyTantargyak TABLE ( TantargyId INT ); INSERT INTO @osztalyTantargyak SELECT DISTINCT TantargyId FROM @retTanuloErtekeles WHERE OsztalyCsoportId IN ( SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId, 0) ) UNION SELECT DISTINCT C_TANTARGYID FROM T_FOGLALKOZAS_OSSZES INNER JOIN fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId, 0) AS OSZTALYCSOPORT ON OSZTALYCSOPORT.ID = T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID WHERE T_FOGLALKOZAS_OSSZES.TOROLT = 'F' DELETE FROM @retTanuloErtekeles WHERE ErtekelesId NOT IN ( SELECT ErtekelesId FROM @retTanuloErtekeles WHERE TantargyId IS NULL OR TantargyId IN ( SELECT TantargyId FROM @osztalyTantargyak ) ) END RETURN END GO