This commit is contained in:
2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View File

@@ -0,0 +1,210 @@
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
DECLARE @DefaultFeladatKategoriaId int = (SELECT tev.C_DEFAULTFELADATKATEGORIAID FROM T_TANEV_OSSZES tev WHERE C_AKTIV = 'T' and tev.ID = @tanevId)
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),
'<i>(' + 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))+')</i>',
''),
IIF(tanuloErtekeles.C_ERTEKELESTEMA IS NOT NULL AND tanuloErtekeles.C_TIPUSID IN(1519, 1520),
'<i>('+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)) + ')</i>: ' + 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'and osztalyCsoport.C_FELADATKATEGORIAID = @DefaultFeladatKategoriaId
LEFT JOIN T_CSOPORT_OSSZES csoport ON csoport.ID = osztalyCsoport.ID
LEFT JOIN T_OSZTALY_OSSZES osztaly ON osztaly.ID = osztalyCsoport.ID
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

View File

@@ -0,0 +1,130 @@
DROP PROCEDURE IF EXISTS uspGetBukasraAlloTanulok
GO
CREATE PROCEDURE uspGetBukasraAlloTanulok
@pIntezmenyId int
,@pTanevId int
,@pOsztalyCsoportIdXML XML = NULL
AS
BEGIN
DECLARE @ocsId int
DECLARE @OsztalyCsoport TABLE(Id int)
IF @pOsztalyCsoportIdXML IS NOT NULL
BEGIN
DECLARE @ValasztottOsztalyok TABLE(Id int)
INSERT INTO @ValasztottOsztalyok(Id)
SELECT Data FROM fnConvertXmlIntListToTable(@pOsztalyCsoportIdXML, 'a', 'b')
INSERT INTO @OsztalyCsoport
SELECT Id
FROM @ValasztottOsztalyok
END
ELSE BEGIN
INSERT INTO @OsztalyCsoport
SELECT osztalyok.OsztalyId FROM fnGetDokumentumOsztalyokTanevenkent (@pTanevId) osztalyok
END
DECLARE ocsCur CURSOR FOR
SELECT Id FROM @OsztalyCsoport
CREATE TABLE #ErtekelesTemp
(
[OMKod] NVARCHAR(MAX)
,[SzulHelyIdoAnyjaNeve] NVARCHAR(MAX)
,[TanuloNev] NVARCHAR(MAX)
,[OsztalyCsoportNev] NVARCHAR(MAX)
,[TantargyNev] NVARCHAR(MAX)
,[Atlag] DECIMAL(10,2)
,[TanarNeve] NVARCHAR(MAX)
)
CREATE TABLE #CsoportNevek (OsztalyCsoportNeve nvarchar(200))
OPEN ocsCur
FETCH NEXT FROM ocsCur INTO @ocsId
WHILE @@FETCH_STATUS = 0
BEGIN
TRUNCATE TABLE #ErtekelesTemp
INSERT INTO #ErtekelesTemp
(
[OMKod]
,[SzulHelyIdoAnyjaNeve]
,[TanuloNev]
,[OsztalyCsoportNev]
,[TantargyNev]
,[Atlag]
,[TanarNeve]
)
SELECT
tanulo.C_OKTATASIAZONOSITO AS OMKod
,tanulo.C_SZULETESIHELY + ', ' + CAST(FORMAT(tanulo.C_SZULETESIDATUM, 'yyyy.MM.dd.') AS nvarchar(200)) + ', '+ tanulo.C_ANYJANEVE AS SzulHelyIdoAnyjaNeve
,tanulo.C_NYOMTATASINEV AS TanuloNev
,osztalyCsoport.C_NEV AS OsztalyCsoportNev
,ertekeles.TantargyNev AS TantargyNev
,ROUND(SUM(CAST(ertekeles.ErtekelesOsztalyzatValue AS FLOAT) * CAST(ISNULL(tanariAtlagSuly.C_SULY, 100) AS FLOAT) / 100) / SUM(CAST(ISNULL(tanariAtlagSuly.C_SULY, 100) AS FLOAT) / 100), 2) AS Atlag
,tanar.C_NYOMTATASINEV AS TanarNeve
FROM
[fnGetDokumentumErtekelesekOsztalyonkent] (@pTanevId, @ocsId, DEFAULT, DEFAULT, 1, DEFAULT) ertekeles
INNER JOIN T_TANARIATLAGSULY tanariAtlagSuly ON
tanariAtlagSuly.C_TANEVID = @pTanevId
AND tanariAtlagSuly.TOROLT = 'F'
AND tanariAtlagSuly.C_ERTEKELESMODID = ertekeles.ErtekelesModjaId
INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON
osztalyCsoport.C_TANEVID = @pTanevId
AND osztalyCsoport.TOROLT = 'F'
AND osztalyCsoport.ID = ertekeles.OsztalyCsoportId
INNER JOIN T_FELHASZNALO_OSSZES tanulo ON
tanulo.C_TANEVID = @pTanevId
AND tanulo.TOROLT = 'F'
AND tanulo.ID = ertekeles.TanuloId
INNER JOIN T_FELHASZNALO_OSSZES tanar ON
tanar.C_TANEVID = @pTanevId
AND tanar.TOROLT = 'F'
AND tanar.ID = ertekeles.ErtekeloId
WHERE
ertekeles.ErtekelesOsztalyzatValue IS NOT NULL
GROUP BY
tanulo.C_OKTATASIAZONOSITO
,tanulo.C_SZULETESIHELY
,tanulo.C_SZULETESIDATUM
,tanulo.C_ANYJANEVE
,tanulo.C_NYOMTATASINEV
,osztalyCsoport.C_NEV
,ertekeles.TantargyNev
,tanar.C_NYOMTATASINEV
HAVING
ROUND(SUM(CAST(ertekeles.ErtekelesOsztalyzatValue AS FLOAT) * CAST(ISNULL(tanariAtlagSuly.C_SULY, 100) AS FLOAT) / 100) / SUM(CAST(ISNULL(tanariAtlagSuly.C_SULY, 100) AS FLOAT) / 100), 2) < 2
IF EXISTS(SELECT 1 FROM #ErtekelesTemp)
BEGIN
SELECT
tmp.OMKod
,tmp.SzulHelyIdoAnyjaNeve
,tmp.TanuloNev
,tmp.OsztalyCsoportNev
,tmp.TantargyNev
,tmp.Atlag
,tmp.TanarNeve
FROM #ErtekelesTemp tmp ORDER BY [TanuloNev],[TantargyNev]
INSERT INTO #CsoportNevek (OsztalyCsoportNeve)
SELECT top 1 [OsztalyCsoportNev] FROM #ErtekelesTemp
END
FETCH NEXT FROM ocsCur INTO @ocsId
END
CLOSE ocsCur
DEALLOCATE ocsCur
SELECT * FROM #CsoportNevek
DROP TABLE #ErtekelesTemp
DROP TABLE #CsoportNevek
END
GO