This commit is contained in:
2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions
@@ -0,0 +1,191 @@
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,@includeOsztalyfonokiKategoria BIT = 0)
RETURNS @retTanuloErtekeles TABLE
(
ErtekelesId INT NOT NULL
,Datum DATE
,TipusId INT
,ErtekelesSzoveg NVARCHAR(MAX)
,ErtekelesSzovegRovidNev NVARCHAR(3)
,ErtekelesOsztalyzatId INT
,ErtekelesOsztalyzatValue INT
,ErtekelesOsztalyzatNev NVARCHAR(500)
,ErtekelesSzazalek NVARCHAR(4)
,MagatartasOsztalyzatId INT
,MagatartasOsztalyzatValue INT
,MagatartasOsztalyzatNev NVARCHAR(500)
,MagatartasSzoveg NVARCHAR(MAX)
,MagatartasSzovegRovidNev NVARCHAR(6)
,MagatartasErtekId INT
,MagatartasErtek NVARCHAR(500)
,MagatartasErtekOsztalyzatkent INT
,SzorgalomOsztalyzatId INT
,SzorgalomOsztalyzatValue INT
,SzorgalomOsztalyzatNev NVARCHAR(500)
,SzorgalomSzoveg NVARCHAR(MAX)
,SzorgalomSzovegRovidNev NVARCHAR(6)
,SzorgalomErtekId INT
,SzorgalomErtek NVARCHAR(500)
,SzorgalomErtekOsztalyzatkent INT
,TanuloId INT
,TanuloCsoportId INT
,OsztalyCsoportId INT
,TantargyId INT
,TantargyNevZarojellel NVARCHAR(1023)
,TantargyNevNyomtatvanyban NVARCHAR(510)
,TantargyNev NVARCHAR(510)
,TantargyAngolNev NVARCHAR(510)
,TantargyNemetNev NVARCHAR(510)
,TargyKategoriaId INT
,FotargyE CHAR(1)
,Altantargy CHAR(1)
,FotargyId INT
,ErtekelesTema NVARCHAR(510)
,ErtekeloId INT
,ErtekelesModjaId INT
,IsMagatartasSzorgalom CHAR(1)
,Jeloles NVARCHAR(MAX)
,JelolesAndErtekelesTema NVARCHAR(MAX)
,RogzitesDatum DATE
,RENDEZ1 INT
,RENDEZ2 NVARCHAR(510)
,RENDEZ3 INT
,RENDEZ4 INT
,RENDEZ5 NVARCHAR(510)
)
AS
BEGIN
DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId)
DECLARE @kapcsolodoOcsID TABLE(ID INT)
INSERT INTO @kapcsolodoOcsID (ID)
SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId, 0)
DECLARE @DefaultFeladatKategoriaId int = 7553
INSERT INTO @retTanuloErtekeles
SELECT
tanuloErtekeles.ID as ErtekelesId
,tanuloErtekeles.C_DATUM as Datum
,tanuloErtekeles.C_TIPUSID as TipusId
,tanuloErtekeles.C_ERTEKELESSZOVEG as ErtekelesSzoveg
,tanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV as ErtekelesSzovegRovidNev
,tanuloErtekeles.C_ERTEKELESOSZTALYZATID as ErtekelesOsztalyzatId
,ertekelesOsztalyzat.C_VALUE as ErtekelesOsztalyzatValue
,ertekelesOsztalyzat.C_NAME as ErtekelesOsztalyzatNev
,CONVERT(NVARCHAR(3), tanuloErtekeles.C_ERTEKELESSZAZALEK)+'%' as ErtekelesSzazalek
,tanuloErtekeles.C_MAGATARTASOSZTALYZATID as MagatartasOsztalyzatId
,magatartasOsztalyzat.C_VALUE as MagatartasOsztalyzatValue
,magatartasOsztalyzat.C_NAME as MagatartasOsztalyzatNev
,tanuloErtekeles.C_MAGATARTASSZOVEG as MagatartasSzoveg
,tanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV as MagatartasSzovegRovidNev
,tanuloErtekeles.C_MAGATARTASERTEKID as MagatartasErtekId
,magatartasErtek.C_NAME as MagatartasErtek
,magatartasErtek.C_VALUE + 1 as MagatartasErtekOsztalyzatken
,tanuloErtekeles.C_SZORGALOMOSZTALYZATID as SzorgalomOsztalyzatId
,szorgalomOsztalyzat.C_VALUE as SzorgalomOsztalyzatValue
,szorgalomOsztalyzat.C_NAME as SzorgalomOsztalyzatNev
,tanuloErtekeles.C_SZORGALOMSZOVEG as SzorgalomSzoveg
,tanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV as SzorgalomSzovegRovidNev
,tanuloErtekeles.C_SZORGALOMERTEKID as SzorgalomErtekId
,szorgalomErtek.C_NAME as SzorgalomErtek
,szorgalomErtek.C_VALUE + 1 as SzorgalomErtekOsztalyzatkent
,tanuloErtekeles.C_TANULOID as TanuloId
,TanuloCsoport.ID AS TanuloCsoportId
,tanuloErtekeles.C_OSZTALYCSOPORTID as OsztalyCsoportId
,tanuloErtekeles.C_TANTARGYID as TantargyId
,IIF(tantargy.C_NEV <> tantargy.C_NEVNYOMTATVANYBAN AND tantargy.C_NEVNYOMTATVANYBAN IS NOT NULL, tantargy.C_NEVNYOMTATVANYBAN +' (' + tantargy.C_NEV + ')', tantargy.C_NEV) as TantargyNevZarojellel
,tantargy.C_NEVNYOMTATVANYBAN as TantargyNevNyomtatvanyban
,tantargy.C_NEV as TantargyNev
,tantargy.C_ANGOLNEV as TantargyAngolNev
,tantargy.C_NEMETNEV as TantargyNemetNev
,tantargy.C_TARGYKATEGORIA as TargyKategoriaId
,tantargy.C_FOTARGYE as FotargyE
,tantargy.C_ALTANTARGYKENTNYOMTATVANYBAN as Altantargy
,tantargy.C_FOTARGYID as FotargyId
,tanuloErtekeles.C_ERTEKELESTEMA as ErtekelesTema
,tanuloErtekeles.C_ERTEKELOID as ErtekeloId
,tanuloErtekeles.C_ERTEKELESMODID as ErtekelesModjaId
,tanuloErtekeles.C_ISMAGATARTASSZORGALOM as 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>',
'') as Jeloles
,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,
'') as JelolesAndErtekelesTema
,tanuloErtekeles.C_ROGZITESDATUM as RogzitesDatum
,CASE WHEN tantargy.C_FOTARGYID IS NULL THEN ISNULL(TargyKategoriaDictionary.C_ORDER, 10000) ELSE ISNULL(FotargyKategoriaDictionary.C_ORDER, 10000) END as RENDEZ1
,COALESCE(FotargyTable.C_NEVNYOMTATVANYBAN, FotargyTable.C_NEV, tantargy.C_NEV) as RENDEZ2
,ISNULL(tantargy.C_FOTARGYID, tantargy.ID) as RENDEZ3
,tantargy.C_FOTARGYID as RENDEZ4
,ISNULL(tantargy.C_NEVNYOMTATVANYBAN, tantargy.C_NEV) as RENDEZ5
FROM T_TANULOERTEKELES_OSSZES tanuloErtekeles
INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_TANULOID = tanuloErtekeles.C_TANULOID
AND TanuloCsoport.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND TanuloCsoport.TOROLT = 'F'
LEFT JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = tanuloErtekeles.C_TANTARGYID AND ((ISNULL(tantargy.C_TARGYKATEGORIA,0) <> 1248) OR @includeOsztalyfonokiKategoria = 1)
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES ertekelesOsztalyzat ON ertekelesOsztalyzat.ID = tanuloErtekeles.C_ERTEKELESOSZTALYZATID
AND ertekelesOsztalyzat.C_TANEVID = @tanevId
AND ertekelesOsztalyzat.C_TYPE = 'OsztalyzatTipus'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES magatartasOsztalyzat ON magatartasOsztalyzat.ID = tanuloErtekeles.C_MAGATARTASOSZTALYZATID
AND magatartasOsztalyzat.C_TANEVID = @tanevId
AND magatartasOsztalyzat.C_TYPE = 'OsztalyzatTipus'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES szorgalomOsztalyzat ON szorgalomOsztalyzat.ID = tanuloErtekeles.C_SZORGALOMOSZTALYZATID
AND szorgalomOsztalyzat.C_TANEVID = @tanevId
AND szorgalomOsztalyzat.C_TYPE = 'OsztalyzatTipus'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES magatartasErtek ON magatartasErtek.ID = tanuloErtekeles.C_MAGATARTASERTEKID
AND magatartasErtek.C_TANEVID = @tanevId
AND magatartasErtek.C_TYPE = 'MagatartasErtekelesTipus'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES szorgalomErtek ON szorgalomErtek.ID = tanuloErtekeles.C_SZORGALOMERTEKID
AND szorgalomErtek.C_TANEVID = @tanevId
AND szorgalomErtek.C_TYPE = 'SzorgalomErtekelesTipus'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES TargyKategoriaDictionary ON TargyKategoriaDictionary.Id = tantargy.C_TARGYKATEGORIA
AND TargyKategoriaDictionary.TOROLT = 'F'
AND TargyKategoriaDictionary.C_TANEVID = @tanevId
LEFT JOIN T_TANTARGY_OSSZES FotargyTable ON tantargy.C_FOTARGYID = FotargyTable.ID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES FotargyKategoriaDictionary ON FotargyKategoriaDictionary.ID = FotargyTable.C_TARGYKATEGORIA
AND FotargyKategoriaDictionary.TOROLT = 'F'
AND FotargyKategoriaDictionary.C_TANEVID = FotargyTable.C_TANEVID
INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON osztalyCsoport.ID = tanuloErtekeles.C_OSZTALYCSOPORTID
AND osztalyCsoport.TOROLT = 'F' and osztalyCsoport.C_FELADATKATEGORIAID = @kategoriaId
LEFT JOIN (
SELECT
tanorai.ID as tanoraiId
,cs.ID as CsoportId
FROM T_CSOPORT_OSSZES cs
INNER JOIN fnGetTanoraiCeluCsoportTipusok(@tanevId) tanorai ON tanorai.ID = cs.C_TIPUSA
) tanorai ON tanorai.CsoportId = OsztalyCsoport.ID
LEFT JOIN T_OSZTALY_OSSZES osztaly ON osztaly.ID = tanuloErtekeles.C_OSZTALYCSOPORTID
WHERE tanuloErtekeles.C_TANEVID = @tanevId
AND tanuloErtekeles.TOROLT = 'F'
AND (@atsoroltTanuloErtekelesek = 1 OR (tanuloErtekeles.C_OSZTALYCSOPORTID IN(SELECT ID FROM @kapcsolodoOcsID)))
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 tanorai.tanoraiId IS NOT NULL)
IF @atsoroltTanuloErtekelesek > 0
BEGIN
DECLARE @osztalyTantargyak TABLE (TantargyId INT)
INSERT INTO @osztalyTantargyak (TantargyId)
SELECT DISTINCT
TantargyId
FROM @retTanuloErtekeles
WHERE OsztalyCsoportId IN (SELECT ID FROM @kapcsolodoOcsID)
UNION
SELECT DISTINCT
C_TANTARGYID
FROM T_FOGLALKOZAS_OSSZES
INNER JOIN @kapcsolodoOcsID AS OSZTALYCSOPORT ON OSZTALYCSOPORT.ID = T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID
WHERE T_FOGLALKOZAS_OSSZES.TOROLT = 'F'
DELETE FROM @retTanuloErtekeles
WHERE TantargyId NOT IN (SELECT TantargyId FROM @osztalyTantargyak)
END
RETURN
END
GO
@@ -0,0 +1,60 @@
DROP FUNCTION IF EXISTS fnGetDokumentumKapcsolodoOsztalycsoportok
GO
CREATE FUNCTION fnGetDokumentumKapcsolodoOsztalycsoportok (@osztalyCsoportId int, @ptanevId int, @csakTanoraiCelu INT= 1)
RETURNS @ocs TABLE (ID int)
AS BEGIN
DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId)
INSERT INTO @ocs
SELECT @osztalyCsoportId AS ID
UNION
SELECT cs.ID
FROM T_CSOPORT_OSSZES cs
INNER JOIN T_CSOPORTTIPUS_OSSZES cst ON cs.C_TIPUSA = cst.ID AND cs.C_ALTANEVID = cst.C_ALTANEVID
WHERE C_OSZTALYBONTASID = @osztalyCsoportId
AND (@csakTanoraiCelu = 0 OR C_ISTANORAICELU = 'T')
UNION
SELECT tcs.C_OSZTALYCSOPORTID
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = tcs.C_OSZTALYCSOPORTID
INNER JOIN T_CSOPORTTIPUS_OSSZES cst ON cs.C_TIPUSA = cst.ID AND cs.C_ALTANEVID = cst.C_ALTANEVID
INNER JOIN (
SELECT DISTINCT x.C_TANULOID, x.C_BELEPESDATUM, x.C_KILEPESDATUM
FROM T_TANULOCSOPORT_OSSZES x
INNER JOIN T_OSZTALYCSOPORT_OSSZES ON T_OSZTALYCSOPORT_OSSZES.ID = x.C_OSZTALYCSOPORTID
INNER JOIN T_TANEV_OSSZES ON T_TANEV_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID
WHERE x.C_OSZTALYCSOPORTID = @osztalyCsoportId AND x.TOROLT = 'F' AND (x.C_KILEPESDATUM > T_TANEV_OSSZES.C_KEZDONAP OR x.C_KILEPESDATUM IS NULL)
) OSZTALY_TANULO ON OSZTALY_TANULO.C_TANULOID = tcs.C_TANULOID
AND tcs.C_BELEPESDATUM >= OSZTALY_TANULO.C_BELEPESDATUM
AND (OSZTALY_TANULO.C_KILEPESDATUM IS NULL OR tcs.C_BELEPESDATUM < OSZTALY_TANULO.C_KILEPESDATUM)
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID AND ocs.C_FELADATKATEGORIAID = @kategoriaId
WHERE tcs.C_OSZTALYCSOPORTID <> @osztalyCsoportId AND tcs.TOROLT = 'F'
AND (@csakTanoraiCelu = 0 OR C_ISTANORAICELU = 'T')
UNION
SELECT C_OSZTALYBONTASID AS ID
FROM T_CSOPORT_OSSZES cs
INNER JOIN T_CSOPORTTIPUS_OSSZES cst ON cs.C_TIPUSA = cst.ID AND cs.C_ALTANEVID = cst.C_ALTANEVID
WHERE cs.ID = @osztalyCsoportId
AND C_OSZTALYBONTASID IS NOT NULL
AND (@csakTanoraiCelu = 0 OR C_ISTANORAICELU = 'T')
UNION
SELECT cs.ID
FROM T_CSOPORT_OSSZES cs
INNER JOIN T_CSOPORTTIPUS_OSSZES cst ON cs.C_TIPUSA = cst.ID AND cs.C_ALTANEVID = cst.C_ALTANEVID
WHERE C_OSZTALYBONTASID IN (SELECT C_OSZTALYBONTASID FROM T_CSOPORT_OSSZES WHERE ID = @osztalyCsoportId)
AND (@csakTanoraiCelu = 0 OR C_ISTANORAICELU = 'T')
RETURN
END
GO
@@ -0,0 +1,85 @@
DROP FUNCTION IF EXISTS fnGetDokumentumMulasztasokOsztalyonkentReszletes
GO
CREATE FUNCTION fnGetDokumentumMulasztasokOsztalyonkentReszletes (
@tanevId INT
,@osztalyCsoportId int
,@iskolaErdekuSzamit bit
,@csakKivlasztottOsztalyCsoport bit = 0
,@atsoroltTanuloMulasztas bit = 1
,@idoszakEleje date = NULL
,@idoszakVege date = NULL
,@csakTanoraiCelu int = 1
)
RETURNS @result TABLE (
TanuloId int
,TanuloCsoportId int
,OsztalyCsoportId int
,OsztalyCsoportNev nvarchar (255)
,Tipusa int
,Igazolt char (1)
,IgazolasTipusa int
,KesesPercben int null
,Datum datetime
,Oraszam nvarchar (255)
,OraszamWithOrakezdeteVege nvarchar (255)
,TantargyId int
,TantargyNev nvarchar (255)
,HetSorszama int
,Gyakorlati char(1)
,Tanorai char(1)
)
AS BEGIN
DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId)
INSERT INTO @result
SELECT
C_ORATANULOIID AS TanuloId
,TanuloCsoport.ID AS TanuloCsoportId
,TanitasiOra.C_OSZTALYCSOPORTID AS OsztalyCsoportId
,OsztalyCsoport.C_NEV AS OsztalyCsoportNev
,C_TIPUS AS Tipusa
,C_IGAZOLT AS Igazolt
,C_IGAZOLASTIPUSA AS IgazolasTipusa
,C_KESESPERCBEN AS KesesPercben
,C_DATUM AS Datum
,IIF(C_CSENGETESIRENDORAID IS NULL, dbo.fnGetDokumentumOrakezdetToOraszam(CONVERT(VARCHAR(5), C_ORAKEZDETE, 108), @tanevId), TanitasiOra.C_ORASZAM) AS Oraszam
,IIF(C_CSENGETESIRENDORAID IS NULL, CONCAT(CONVERT(NVARCHAR(5), TanitasiOra.C_ORAKEZDETE, 108), '-',
CONVERT(NVARCHAR(5), TanitasiOra.C_ORAVEGE, 108)), CAST(TanitasiOra.C_ORASZAM AS NVARCHAR)) AS OraszamWithOrakezdeteVege
,C_TANTARGYID AS TantargyId
,ISNULL(t.C_NEVNYOMTATVANYBAN, t.C_NEV) AS TantargyNev
,C_HETSORSZAMA AS HetSorszama
,C_GYAKORLATI AS Gyakorlati
,IIF(o.ID IS NOT NULL OR tanorai.tanoraiId IS NOT NULL, 'T', 'F') AS Tanorai
FROM T_TANULOMULASZTAS_OSSZES TanuloMulasztas
INNER JOIN T_TANITASIORA_OSSZES TanitasiOra ON TanitasiOra.ID = TanuloMulasztas.C_TANITASIORAKID
AND TanitasiOra.TOROLT='F'
INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_TANULOID = TanuloMulasztas.C_ORATANULOIID
AND TanuloCsoport.TOROLT = 'F'
AND TanitasiOra.C_DATUM >= TanuloCsoport.C_BELEPESDATUM
AND TanitasiOra.C_DATUM < ISNULL(TanuloCsoport.C_KILEPESDATUM, GETDATE())
AND TanuloCsoport.C_OSZTALYCSOPORTID=@osztalyCsoportId
INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = TanitasiOra.C_OSZTALYCSOPORTID
AND OsztalyCsoport.C_FELADATKATEGORIAID = @kategoriaId
INNER JOIN T_TANTARGY_OSSZES t ON t.ID = TanitasiOra.C_TANTARGYID
LEFT JOIN (
SELECT
tanorai.ID AS tanoraiId
,cs.ID AS CsoportId
FROM T_CSOPORT_OSSZES cs
INNER JOIN fnGetTanoraiCeluCsoportTipusok(@tanevId) tanorai ON tanorai.ID = cs.C_TIPUSA
) tanorai ON tanorai.CsoportId = OsztalyCsoport.ID
LEFT JOIN T_OSZTALY_OSSZES o ON o.ID=TanitasiOra.C_OSZTALYCSOPORTID
WHERE TanuloMulasztas.C_TIPUS IN (1499, 1500) AND TanuloMulasztas.C_INTEZMENYID=TanitasiOra.C_INTEZMENYID
AND (@csakTanoraiCelu = 0 OR (o.ID IS NOT NULL OR tanorai.tanoraiId IS NOT NULL))
AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA IS NULL OR C_IGAZOLASTIPUSA <> 1533))
AND TanuloMulasztas.TOROLT = 'F'
AND (@atsoroltTanuloMulasztas = 1 OR (TanitasiOra.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId, @csakTanoraiCelu))))
AND (@csakKivlasztottOsztalyCsoport = 0 OR TanitasiOra.C_OSZTALYCSOPORTID = @osztalyCsoportId)
AND (@idoszakEleje IS NULL OR C_DATUM >= @idoszakEleje)
AND (@idoszakVege IS NULL OR C_DATUM <= @idoszakVege)
RETURN
END
GO
@@ -0,0 +1,45 @@
DROP FUNCTION IF EXISTS fnGetDokumentumOsztalyTanuloinakMegtartottOrakTantargyankent
GO
CREATE FUNCTION fnGetDokumentumOsztalyTanuloinakMegtartottOrakTantargyankent (@tanevId INT, @osztalyCsoportId INT, @atsoroltTanuloOrak BIT = 1)
RETURNS @result TABLE (
Orakszama int
,TanuloId int
,TantargyId int
,TantargyNev nvarchar (255)
,Fotargye char(1)
,Altargye char(1)
,Gyakorlati char(1)
)
AS BEGIN
DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId)
INSERT INTO @result
SELECT
COUNT(1) AS Orakszama
,TANULO.TanuloId
,TANTARGY.ID AS TantargyId
,ISNULL(TANTARGY.C_NEVNYOMTATVANYBAN, TANTARGY.C_NEV) AS TantargyNev
,C_FOTARGYE AS Fotargye
,C_ALTANTARGYKENTNYOMTATVANYBAN AS Altargye
,C_GYAKORLATI AS Gyakorlati
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyCsoportId, 'T') AS TANULO
INNER JOIN T_TANULOCSOPORT_OSSZES AS TANULOCSOPORT ON TANULOCSOPORT.C_TANULOID = TANULO.TanuloId
INNER JOIN T_TANITASIORA_OSSZES AS TANITASIORA ON TANITASIORA.C_OSZTALYCSOPORTID = TANULOCSOPORT.C_OSZTALYCSOPORTID AND TANITASIORA.C_DATUM >= TANULOCSOPORT.C_BELEPESDATUM AND (TANULOCSOPORT.C_KILEPESDATUM IS NULL OR TANITASIORA.C_DATUM <= TANULOCSOPORT.C_KILEPESDATUM)
INNER JOIN T_OSZTALYCSOPORT_OSSZES AS OSZTALYCSOPORT ON OSZTALYCSOPORT.ID = TANITASIORA.C_OSZTALYCSOPORTID
and OSZTALYCSOPORT.C_FELADATKATEGORIAID = @kategoriaId
INNER JOIN T_TANTARGY_OSSZES AS TANTARGY ON TANTARGY.ID = TANITASIORA.C_TANTARGYID
INNER JOIN T_NAPTARIHET_OSSZES AS NAPTARIHETEK ON TANITASIORA.C_DATUM BETWEEN NAPTARIHETEK.C_HETKEZDONAPJA AND NAPTARIHETEK.C_HETUTOLSONAPJA
WHERE
TANULOCSOPORT.TOROLT = 'F' AND TANITASIORA.TOROLT = 'F' AND OSZTALYCSOPORT.TOROLT = 'F' AND TANTARGY.TOROLT = 'F'
AND TANITASIORA.C_OSZTALYCSOPORTID IN (SELECT Id FROM fnGetDokumentumOsztalyVagyTanoraiCsoport(@tanevId))
AND TANITASIORA.C_MEGTARTOTT = 'T'
AND NaptariHetek.C_TANEVID = @tanevId
AND (@atsoroltTanuloOrak = 1 OR TANITASIORA.C_DATUM >= TANULO.BelepesDatum )
AND (TANULO.KilepesDatum IS NULL OR TANITASIORA.C_DATUM <= TANULO.KilepesDatum)
GROUP BY TANULO.TanuloId, TANTARGY.ID, C_GYAKORLATI, TANTARGY.C_NEVNYOMTATVANYBAN, TANTARGY.C_NEV, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN
RETURN
END
GO
@@ -0,0 +1,22 @@
IF OBJECT_ID('fnGetDokumentumOsztalyokTanevenkent') IS NOT NULL BEGIN
DROP FUNCTION fnGetDokumentumOsztalyokTanevenkent
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION fnGetDokumentumOsztalyokTanevenkent (@tanevId int)
RETURNS TABLE
RETURN (
SELECT
T_OSZTALY_OSSZES.ID OsztalyId
,ocs.C_NEV OsztalyNev
FROM T_OSZTALY_OSSZES
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = T_OSZTALY_OSSZES.ID
WHERE
ocs.C_TANEVID = @tanevId
AND ocs.TOROLT = 'F'
)
@@ -0,0 +1,18 @@
DROP FUNCTION IF EXISTS fnGetDokumentumTanuloAktualisOsztaly
GO
CREATE FUNCTION dbo.fnGetDokumentumTanuloAktualisOsztaly (@tanuloId INT)
RETURNS NVARCHAR(MAX)
BEGIN
DECLARE @value NVARCHAR(MAX)
SELECT TOP 1
@value = ocs.C_NEV
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_OSZTALY_OSSZES o ON tcs.C_OSZTALYCSOPORTID = o.ID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID
WHERE C_TANULOID = @tanuloId AND tcs.TOROLT = 'F'
ORDER BY C_KILEPESDATUM
RETURN @value
END;
GO
@@ -0,0 +1,111 @@
DROP FUNCTION IF EXISTS fnGetDokumentumTanulokAdatai
GO
CREATE FUNCTION fnGetDokumentumTanulokAdatai (
@tanevId int
,@osztalyCsoportId int
)
RETURNS @tanuloAdatok TABLE (
TanuloId int
,TanuloCsoportId int
,Sorszam int
,TorzslapSzam varchar(1000)
,OktAzon nvarchar(40)
,TajSzam nvarchar(18)
,AnyjaNeve nvarchar(128)
,SzulHely nvarchar(100)
,SzulIdo nvarchar(20)--formázás miatt
,SocAdat nvarchar(200)
,Kepzes nvarchar(510)
,TanuloNeve nvarchar(510)
,Allampolgarsaga nvarchar(500)
,DiakIgazolvanySzam nvarchar(510)
,KilepesDatum nvarchar(20) --formázás miatt
,BeirasiNaploSorszam nvarchar(100)
,AktualisOsztaly nvarchar(200)
,AktualisOsztalyId int
,AdottOsztaly nvarchar(200)
,AdottOsztalyId int
,BelepesDatum nvarchar(20) --formázás miatt
)
AS BEGIN
DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId)
INSERT INTO @tanuloAdatok
SELECT DISTINCT
tmp.TanuloId
,tmp.TanuloCsoportId
,tmp.Sorszam
,tmp.TorzslapSzam
,tmp.OktAzon
,tmp.TajSzam
,tmp.AnyjaNeve
,tmp.SzulHely
,dbo.fnGetDokumentumDatumFormatum(tmp.szulIdo) AS SzulIdo
,tmp.SocAdat
,tmp.Kepzes
,tmp.TanuloNeve
,tmp.Allampolgarsaga
,tmp.DiakIgazolvanySzam
,dbo.fnGetDokumentumDatumFormatum(tmp.KilepesDatum) AS KilepesDatum
,tmp.BeirasiNaploSorszam
,tmp.AktualisOsztaly
,tmp.AktualisOsztalyId
,tmp.AdottOsztaly
,tmp.AdottOsztalyId
,dbo.fnGetDokumentumDatumFormatum(tmp.BelepesDatum) AS BelepesDatum
FROM (
SELECT
OsztalyCsoportTanuloi.TanuloId AS TanuloId
,OsztalyCsoportTanuloi.TanuloCsoportId AS TanuloCsoportId
,tta.C_NAPLOSORSZAM AS Sorszam
,tta.C_TORZSLAPSZAM AS TorzslapSzam
,Felhasznalo.C_OKTATASIAZONOSITO AS OktAzon
,Felhasznalo.C_TAJSZAM AS TajSzam
,Felhasznalo.C_ANYJANEVE AS AnyjaNeve
,Felhasznalo.C_SZULETESIHELY AS SzulHely
,Felhasznalo.C_SZULETESIDATUM AS SzulIdo
,IIF(tta.C_MAGANTANULO = 'T', N'Magántanuló ('
+ ISNULL(MagantanulosagOka.C_NAME, N'-') + N')', N'')
+ IIF(tta.C_JOGVISZONYATSZUNETELTETO = 'T', N', Jogviszony szüneteltetve', N'')
+ IIF(tta.C_SZAKMAIGYAKORLATON = 'T', N', Szakmai gyakorlat', N'')
+ IIF(Tanulo.C_SZOCIALISTAMOGATAS = 'T', N', Szociális támogatás', N'')
+ IIF(tta.C_BEJARO = 'T', N', Bejáró', N'') AS SocAdat
,Tanterv.C_NEV AS Kepzes
,Felhasznalo.C_NYOMTATASINEV AS TanuloNeve
,AllampolgarsagDic.C_NAME AS Allampolgarsaga
,Tanulo.C_DIAKIGAZOLVANYSZAM AS DiakIgazolvanySzam
,OsztalyCsoportTanuloi.KilepesDatum AS KilepesDatum
,tta.C_BEIRASINAPLOSORSZAM AS BeirasiNaploSorszam
,dbo.fnGetDokumentumTanuloAktualisOsztaly(OsztalyCsoportTanuloi.TanuloId) AS AktualisOsztaly
,dbo.fnGetDokumentumTanuloAktualisOsztalyId(OsztalyCsoportTanuloi.TanuloId) AS AktualisOsztalyId
,TanuloOsztaly.OsztalyNev AS AdottOsztaly
,TanuloOsztaly.ID AS AdottOsztalyId
,OsztalyCsoportTanuloi.BelepesDatum AS BelepesDatum
FROM T_TANULO_OSSZES Tanulo
INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyCsoportId, 'T') OsztalyCsoportTanuloi ON OsztalyCsoportTanuloi.TanuloId = Tanulo.ID
INNER JOIN T_FELHASZNALO_OSSZES Felhasznalo ON Felhasznalo.ID = Tanulo.ID
AND Felhasznalo.TOROLT = 'F'
INNER JOIN T_DICTIONARYITEMBASE_OSSZES AllampolgarsagDic ON AllampolgarsagDic.ID = Felhasznalo.C_ALLAMPOLGARSAGA
AND AllampolgarsagDic.C_TANEVID = Felhasznalo.C_TANEVID
AND AllampolgarsagDic.TOROLT = 'F'
CROSS APPLY (
SELECT TOP 1
ID
,OsztalyNev
FROM dbo.fnGetTanuloOsztaly(OsztalyCsoportTanuloi.TanuloId, OsztalyCsoportTanuloi.BelepesDatum, @kategoriaId, 1)
) TanuloOsztaly
LEFT JOIN fnGetOsztalyCsoportTanuloinakTanugyiAdatai(@osztalyCsoportId, DEFAULT) tta ON tta.TanuloId = Tanulo.ID
LEFT JOIN T_TANTERV_OSSZES AS Tanterv ON Tanterv.ID = tta.C_TANTERVID
AND Tanterv.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES MagantanulosagOka ON MagantanulosagOka.ID = tta.C_MAGANTANULOSAGANAKOKAID
AND MagantanulosagOka.C_TANEVID = Felhasznalo.C_TANEVID
AND MagantanulosagOka.TOROLT = 'F'
WHERE Tanulo.TOROLT = 'F'
) tmp
RETURN
END
GO
@@ -0,0 +1,166 @@
DROP FUNCTION IF EXISTS dbo.fnGetKapcsolodoOsztalyCsoportokByDateRange
GO
CREATE FUNCTION dbo.fnGetKapcsolodoOsztalyCsoportokByDateRange (
@pOsztalyCsoportId int
,@pStartDate datetime
,@pEndDate datetime
,@pIntezmenyId int
,@pTanevId int
)
RETURNS @Result TABLE (
Id int primary key NOT NULL
,Kezdete datetime NOT NULL
,Vege datetime NOT NULL
) AS
BEGIN
DECLARE
@tanevStart datetime
,@tanevEnd datetime
,@osztalyId int
DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @pOsztalyCsoportId)
IF EXISTS (SELECT 1 FROM T_OSZTALY_OSSZES WHERE ID = @pOsztalyCsoportId) BEGIN
INSERT INTO @Result (Id, Kezdete, Vege) /* maga az osztály */
SELECT
o.Id
,@pStartDate
,@pEndDate
FROM T_OSZTALY_OSSZES o
WHERE o.ID = @pOsztalyCsoportId
AND o.C_ALTANEVID = @pTanevID
AND o.C_ALINTEZMENYID = @pIntezmenyId
AND o.TOROLT = 'F'
UNION ALL
SELECT /* Az osztály bontott csoportjai */
cs.ID
,@pStartDate
,@pEndDate
FROM T_CSOPORT_OSSZES cs
WHERE C_OSZTALYBONTASID = @pOsztalyCsoportId
AND cs.TOROLT = 'F'
AND cs.C_ALTANEVID = @pTanevID
AND cs.C_ALINTEZMENYID = @pIntezmenyId
INSERT INTO @Result (Id, Kezdete, Vege) /* Az osztály tanulóinak más csoportjai */
SELECT
tcs.C_OSZTALYCSOPORTID AS Id
,CASE
WHEN MIN(tcs.C_BELEPESDATUM) > MIN(oszt.C_BELEPESDATUM) AND MIN(tcs.C_BELEPESDATUM) > @pStartDate THEN MIN(tcs.C_BELEPESDATUM)
WHEN MIN(oszt.C_BELEPESDATUM) > MIN(tcs.C_BELEPESDATUM) AND MIN(oszt.C_BELEPESDATUM) > @pStartDate THEN MIN(oszt.C_BELEPESDATUM)
ELSE @pStartDate
END AS Kezdete -- A három közül a legnagyobb
,CASE
WHEN MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) < MAX(ISNULL(oszt.C_KILEPESDATUM, @pEndDate)) AND MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) < @pEndDate THEN MIN(ISNULL(tcs.C_KILEPESDATUM, @pEndDate))
WHEN MAX(ISNULL(oszt.C_KILEPESDATUM, @pEndDate)) < MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) AND MAX(ISNULL(oszt.C_KILEPESDATUM, @pEndDate)) < @pEndDate THEN MIN(ISNULL(oszt.C_KILEPESDATUM, @pEndDate))
ELSE @pEndDate -- A három közül a legkisebb
END AS Vege
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_TANULOCSOPORT_OSSZES oszt
ON oszt.C_TANULOID = tcs.C_TANULOID
AND oszt.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
AND oszt.C_BELEPESDATUM <= @pEndDate
AND (oszt.C_KILEPESDATUM > @pStartDate OR oszt.C_KILEPESDATUM IS NULL)
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = tcs.C_OSZTALYCSOPORTID AND cs.C_OSZTALYBONTASID IS NULL
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = cs.ID AND ocs.TOROLT = 'F' AND ocs.C_FELADATKATEGORIAID = @kategoriaId
WHERE tcs.TOROLT = 'F'
AND oszt.TOROLT = 'F'
AND tcs.C_TANEVID = @pTanevId
AND tcs.C_INTEZMENYID = @pIntezmenyId
AND tcs.C_BELEPESDATUM <= @pEndDate
AND (tcs.C_KILEPESDATUM > @pStartDate OR tcs.C_KILEPESDATUM IS NULL)
AND NOT EXISTS (SELECT 1 FROM @Result r WHERE r.ID = tcs.C_OSZTALYCSOPORTID)
GROUP BY tcs.C_OSZTALYCSOPORTID
END
IF EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES WHERE ID = @pOsztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL AND TOROLT = 'F') BEGIN
SELECT @osztalyId = C_OSZTALYBONTASID FROM T_CSOPORT_OSSZES WHERE ID = @pOsztalyCsoportId
INSERT INTO @Result (Id, Kezdete, Vege) /* Az osztály, amelyiknek a bontása */
SELECT
@osztalyId
,@pStartDate
,@pEndDate
UNION ALL
SELECT /* Maga a csoport */
@pOsztalyCsoportId
,@pStartDate
,@pEndDate
INSERT INTO @Result (Id, Kezdete, Vege) /* Az csoport tanulóinak más csoportjai */
SELECT
tcs.C_OSZTALYCSOPORTID AS Id
,CASE
WHEN MIN(tcs.C_BELEPESDATUM) > MIN(csop.C_BELEPESDATUM) AND MIN(tcs.C_BELEPESDATUM) > @pStartDate THEN MIN(tcs.C_BELEPESDATUM)
WHEN MIN(csop.C_BELEPESDATUM) > MIN(tcs.C_BELEPESDATUM) AND MIN(csop.C_BELEPESDATUM) > @pStartDate THEN MIN(csop.C_BELEPESDATUM)
ELSE @pStartDate
END AS Kezdete -- A három közül a legnagyobb
,CASE
WHEN MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) < MAX(ISNULL(csop.C_KILEPESDATUM, @pEndDate)) AND MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) < @pEndDate THEN MIN(ISNULL(tcs.C_KILEPESDATUM, @pEndDate))
WHEN MAX(ISNULL(csop.C_KILEPESDATUM, @pEndDate)) < MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) AND MAX(ISNULL(csop.C_KILEPESDATUM, @pEndDate)) < @pEndDate THEN MIN(ISNULL(csop.C_KILEPESDATUM, @pEndDate))
ELSE @pEndDate
END AS Vege -- A három közül a legkisebb
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_TANULOCSOPORT_OSSZES csop
ON tcs.C_TANULOID = csop.C_TANULOID
AND csop.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
AND csop.C_BELEPESDATUM <= @pEndDate
AND (csop.C_KILEPESDATUM > @pStartDate OR csop.C_KILEPESDATUM IS NULL)
AND csop.TOROLT = 'F'
INNER JOIN T_CSOPORT_OSSZES cs
ON cs.ID = tcs.C_OSZTALYCSOPORTID
AND (cs.C_OSZTALYBONTASID IS NULL OR cs.C_OSZTALYBONTASID = @osztalyId)
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = cs.ID AND ocs.TOROLT='F' AND ocs.C_FELADATKATEGORIAID = @kategoriaId
WHERE tcs.C_OSZTALYCSOPORTID <> @pOsztalyCsoportId
AND tcs.C_TANEVID = @pTanevId
AND tcs.C_INTEZMENYID = @pIntezmenyId
AND tcs.C_BELEPESDATUM <= @pEndDate
AND (tcs.C_KILEPESDATUM > @pStartDate OR tcs.C_KILEPESDATUM IS NULL)
AND tcs.TOROLT = 'F' AND csop.TOROLT = 'F'
GROUP BY tcs.C_OSZTALYCSOPORTID
END
IF EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES WHERE ID = @pOsztalyCsoportId AND C_OSZTALYBONTASID IS NULL AND TOROLT = 'F') BEGIN
INSERT INTO @Result (Id, Kezdete, Vege) /* Az csoport tanulóinak más csoportjai */
SELECT
tcs.C_OSZTALYCSOPORTID AS Id
,CASE
WHEN MIN(tcs.C_BELEPESDATUM) > MIN(csop.C_BELEPESDATUM) AND MIN(tcs.C_BELEPESDATUM) > @pStartDate THEN MIN(tcs.C_BELEPESDATUM)
WHEN MIN(csop.C_BELEPESDATUM) > MIN(tcs.C_BELEPESDATUM) AND MIN(csop.C_BELEPESDATUM) > @pStartDate THEN MIN(csop.C_BELEPESDATUM)
ELSE @pStartDate
END AS Kezdete -- A három közül a legnagyobb
,CASE
WHEN MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) < MAX(ISNULL(csop.C_KILEPESDATUM, @pEndDate)) AND MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) < @pEndDate THEN MIN(ISNULL(tcs.C_KILEPESDATUM, @pEndDate))
WHEN MAX(ISNULL(csop.C_KILEPESDATUM, @pEndDate)) < MAX(ISNULL(tcs.C_KILEPESDATUM, @pEndDate)) AND MAX(ISNULL(csop.C_KILEPESDATUM, @pEndDate)) < @pEndDate THEN MIN(ISNULL(csop.C_KILEPESDATUM, @pEndDate))
ELSE @pEndDate
END AS Vege -- A három közül a legkisebb
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_TANULOCSOPORT_OSSZES csop
ON tcs.C_TANULOID = csop.C_TANULOID
AND csop.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
AND csop.C_BELEPESDATUM <= @pEndDate
AND (csop.C_KILEPESDATUM > @pStartDate OR csop.C_KILEPESDATUM IS NULL)
AND csop.TOROLT = 'F'
AND csop.C_BELEPESDATUM <= ISNULL(tcs.C_KILEPESDATUM, @pEndDate) AND ISNULL(csop.C_KILEPESDATUM, @pEndDate) > tcs.C_BELEPESDATUM
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID AND ocs.TOROLT='F' AND ocs.C_FELADATKATEGORIAID = @kategoriaId
WHERE tcs.C_TANEVID = @pTanevId
AND tcs.C_INTEZMENYID = @pIntezmenyId
AND tcs.C_BELEPESDATUM <= @pEndDate
AND (tcs.C_KILEPESDATUM > @pStartDate OR tcs.C_KILEPESDATUM IS NULL)
AND tcs.TOROLT = 'F' AND csop.TOROLT = 'F'
GROUP BY tcs.C_OSZTALYCSOPORTID
END
RETURN
END
GO
@@ -0,0 +1,62 @@
/*
Minden olyan esetben amikor egy osztályhoz tartozó csoportokat kell meghatározni,
akkor az alábbi módon kell ezeket megadni:
a. Egy osztályhoz tartozik minden olyan csoport, amelynek tagja az osztály bármelyik tanulója.
Tehát ha egy osztályból akár egyetlen tanuló is tagja egy csoportnak, akkor az az osztályhoz is kapcsolódik.
b. Továbbá egy osztályhoz mindig kapcsolódnak az osztálybontásosnak jelölt csoportjaik is,
függetlenül attól, hogy abban van-e tanuló!
*/
DROP FUNCTION IF EXISTS fnGetKapcsolodoOsztalycsoportok
GO
CREATE FUNCTION fnGetKapcsolodoOsztalycsoportok (
@osztalyCsoportId int
)
RETURNS @ocs TABLE (ID int)
AS BEGIN
DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId)
INSERT INTO @ocs
SELECT @osztalyCsoportId AS ID /* Önmaga */
UNION
SELECT ID /* Osztály esetén, a bontott csoportok */
FROM T_CSOPORT_OSSZES
WHERE C_OSZTALYBONTASID = @osztalyCsoportId AND TOROLT = 'F'
UNION
SELECT C_OSZTALYBONTASID AS ID /* Csoport esetén, a ha bontott, akkor az osztálya */
FROM T_CSOPORT_OSSZES
WHERE ID = @osztalyCsoportId
AND C_OSZTALYBONTASID IS NOT NULL AND TOROLT = 'F'
UNION
SELECT ID /* Csoport esetén, a ha bontott, akkor az osztályának a többi csoportbontása */
FROM T_CSOPORT_OSSZES
WHERE C_OSZTALYBONTASID IN (
SELECT C_OSZTALYBONTASID FROM T_CSOPORT_OSSZES
WHERE ID = @osztalyCsoportId AND TOROLT = 'F'
) AND TOROLT ='F'
UNION
SELECT tcs2.C_OSZTALYCSOPORTID /* Azok az osztálycsoportok, ahová járnak tanulók a @osztalyCsoportId-ból */
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_TANULOCSOPORT_OSSZES tcs2 ON tcs2.C_TANULOID = tcs.C_TANULOID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs2.C_OSZTALYCSOPORTID
INNER JOIN T_TANEV_OSSZES tanev ON tanev.ID = tcs.C_TANEVID AND tanev.TOROLT = 'F'
WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND tcs.C_BELEPESDATUM <= GETDATE() AND (tcs.C_KILEPESDATUM > GETDATE() OR tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= tanev.C_UTOLSOTANITASINAP)
AND tcs2.C_BELEPESDATUM <= GETDATE() AND (tcs2.C_KILEPESDATUM > GETDATE() OR tcs2.C_KILEPESDATUM IS NULL OR tcs2.C_KILEPESDATUM >= tanev.C_UTOLSOTANITASINAP)
AND tcs.TOROLT = 'F'
AND tcs2.TOROLT = 'F'
AND ocs.C_FELADATKATEGORIAID = @kategoriaId
RETURN
END
GO
@@ -0,0 +1,64 @@
/*
Minden olyan esetben amikor egy osztályhoz tartozó csoportokat kell meghatározni,
akkor az alábbi módon kell ezeket megadni:
a. Egy osztályhoz tartozik minden olyan csoport, amelynek tagja az osztály bármelyik tanulója.
Tehát ha egy osztályból akár egyetlen tanuló is tagja egy csoportnak, akkor az az osztályhoz is kapcsolódik.
b. Továbbá egy osztályhoz mindig kapcsolódnak az osztálybontásosnak jelölt csoportjaik is,
függetlenül attól, hogy abban van-e tanuló!
*/
DROP FUNCTION IF EXISTS fnGetKapcsolodoOsztalycsoportokByDate
GO
CREATE FUNCTION fnGetKapcsolodoOsztalycsoportokByDate (
@osztalyCsoportId int
,@start datetime
,@end datetime
)
RETURNS @ocs TABLE (ID int)
AS BEGIN
DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId)
INSERT INTO @ocs
SELECT @osztalyCsoportId AS ID /* Önmaga */
UNION
SELECT ID /* Osztály esetén, a bontott csoportok */
FROM T_CSOPORT_OSSZES
WHERE C_OSZTALYBONTASID = @osztalyCsoportId AND TOROLT = 'F'
UNION
SELECT C_OSZTALYBONTASID AS ID /* Csoport esetén, a ha bontott, akkor az osztálya */
FROM T_CSOPORT_OSSZES
WHERE ID = @osztalyCsoportId
AND C_OSZTALYBONTASID IS NOT NULL AND TOROLT = 'F'
UNION
SELECT ID /* Csoport esetén, a ha bontott, akkor az osztályának a többi csoportbontása */
FROM T_CSOPORT_OSSZES
WHERE C_OSZTALYBONTASID IN (
SELECT C_OSZTALYBONTASID FROM T_CSOPORT_OSSZES
WHERE ID = @osztalyCsoportId AND TOROLT = 'F'
) AND TOROLT ='F'
UNION
SELECT tcs2.C_OSZTALYCSOPORTID /* Azok az osztálycsoportok, ahová járnak tanulók a @osztalyCsoportId-ból */
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_TANULOCSOPORT_OSSZES tcs2 ON tcs2.C_TANULOID = tcs.C_TANULOID
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tcs2.C_OSZTALYCSOPORTID
WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND tcs.C_BELEPESDATUM <= @end AND (tcs.C_KILEPESDATUM > @start OR tcs.C_KILEPESDATUM IS NULL)
AND tcs2.C_BELEPESDATUM <= @end AND (tcs2.C_KILEPESDATUM > @start OR tcs2.C_KILEPESDATUM IS NULL)
AND tcs.TOROLT = 'F'
AND tcs2.TOROLT = 'F'
AND ocs.C_FELADATKATEGORIAID = @kategoriaId
RETURN
END
GO
@@ -0,0 +1,36 @@
DROP FUNCTION IF EXISTS fnGetNapirendUtkozesByOsztalycsoport
GO
CREATE FUNCTION fnGetNapirendUtkozesByOsztalycsoport (
@startTime datetime
,@endTime datetime
,@osztalyCsoportId int
,@intezmenyId int
,@tanevId int
) RETURNS INT
BEGIN
IF EXISTS (
SELECT 1
FROM T_NAPTARINAP_OSSZES n
LEFT JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = n.C_NAPDATUMA
INNER JOIN T_ORARENDIORA_OSSZES o ON ISNULL(tr.C_HETIREND, n.C_HETIREND) = o.C_HETIREND
AND ISNULL(tr.C_HETNAPJA, n.C_HETNAPJA) = o.C_HETNAPJA
AND n.C_INTEZMENYID = o.C_INTEZMENYID
AND n.C_TANEVID = o.C_TANEVID
WHERE CAST(CAST(@startTime AS DATE) AS DATETIME) + CAST(CAST(o.C_ORAKEZDETE AS TIME) AS DATETIME) <= @endTime
AND CAST(CAST(@endTime AS DATE) AS DATETIME) + CAST(CAST(o.C_ORAVEGE AS TIME) AS DATETIME) >= @startTime
AND o.C_OSZTALYCSOPORTID IN (SELECT ID FROM dbo.fnGetKapcsolodoOsztalycsoportok(@osztalyCsoportId))
AND n.C_TANEVID = @tanevId AND n.C_INTEZMENYID = @intezmenyId
AND n.C_NAPDATUMA BETWEEN CAST(@startTime AS DATE) AND CAST(@endTime AS DATE)
UNION ALL
SELECT 1 FROM T_TANITASIORA_OSSZES o
WHERE o.C_ORAKEZDETE <= @endTime
AND o.C_ORAVEGE >= @startTime
AND o.C_OSZTALYCSOPORTID IN (SELECT ID FROM dbo.fnGetKapcsolodoOsztalycsoportok(@osztalyCsoportId))
)
BEGIN
RETURN 1
END
RETURN 0
END
GO
@@ -0,0 +1,40 @@
DROP FUNCTION IF EXISTS fnGetUtkozesByOsztalycsoport
GO
CREATE FUNCTION [fnGetUtkozesByOsztalycsoport] (
@startTime datetime,
@endTime datetime,
@osztalyCsoportId int,
@intezmenyId int,
@tanevId int
) RETURNS TABLE
RETURN (
SELECT o.ID AS OrarendiOraId, NULL AS TanitasioraId, NULL AS OsztalyCsoportId, NULL as NemKotottMunkaido
FROM T_NAPTARINAP_OSSZES n
LEFT JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = n.C_NAPDATUMA
INNER JOIN T_ORARENDIORA_OSSZES o ON (ISNULL(tr.C_HETIREND, n.C_HETIREND) = o.C_HETIREND OR o.C_HETIREND = 1554)
AND ISNULL(tr.C_HETNAPJA, n.C_HETNAPJA) = o.C_HETNAPJA
AND n.C_INTEZMENYID = o.C_INTEZMENYID
AND n.C_TANEVID = o.C_TANEVID
WHERE CAST(CAST(@startTime AS DATE) AS DATETIME) + CAST(CAST(o.C_ORAKEZDETE AS TIME) AS DATETIME) < @endTime
AND CAST(CAST(@endTime AS DATE) AS DATETIME) + CAST(CAST(o.C_ORAVEGE AS TIME) AS DATETIME) > @startTime
AND o.C_OSZTALYCSOPORTID IN (SELECT ID FROM dbo.fnGetKapcsolodoOsztalycsoportok(@osztalyCsoportId))
AND n.C_TANEVID = @tanevId
AND n.C_INTEZMENYID = @intezmenyId
AND n.C_NAPDATUMA >= CAST(@startTime AS DATE) AND n.C_NAPDATUMA <= CAST(@endTime AS DATE)
AND n.TOROLT = 'F' AND (tr.TOROLT = 'F' OR tr.TOROLT IS NULL) AND o.TOROLT = 'F' and o.C_PARHUZAMOSORA = 'F'
AND o.C_ORAERVENYESSEGKEZDETE <= CAST(@endTime AS DATE) AND o.C_ORAERVENYESSEGVEGE >= CAST(@startTime AS DATE)
UNION
SELECT o.ID AS OrarendiOraId, tn.ID AS TanitasioraId, tn.C_OSZTALYCSOPORTID AS OsztalyCsoportID, NULL as NemKotottMunkaido
FROM T_TANITASIORA_OSSZES tn
LEFT JOIN T_ORARENDIORA o ON tn.C_ORARENDIORAGROUPID = o.C_ORARENDIORAGROUPID AND tn.C_DATUM BETWEEN o.C_ORAERVENYESSEGKEZDETE AND o.C_ORAERVENYESSEGVEGE
WHERE tn.C_ORAKEZDETE <= @endTime
AND tn.C_ORAVEGE >= @startTime
AND tn.C_OSZTALYCSOPORTID IN (SELECT ID FROM dbo.fnGetKapcsolodoOsztalycsoportok(@osztalyCsoportId))
AND tn.C_TANEVID = @tanevId
AND tn.C_INTEZMENYID = @intezmenyId
AND tn.TOROLT = 'F' and tn.C_PARHUZAMOSORA = 'F'
);
GO
@@ -0,0 +1,50 @@
-- =============================================
-- Author: Dőrr Tamás
-- Create date: 2017.02.24.
-- Description: Visszaadja, hogy megy diákok hiányoztak az aktuális tanítási óra előtti órájukról
-- =============================================
DROP PROCEDURE IF EXISTS sp_GetElozoOranHianyzottTanulok
GO
CREATE PROCEDURE [sp_GetElozoOranHianyzottTanulok]
@OsztalyCsoportId int
,@Datum datetime
,@OraKezdete datetime
,@HianyzasTipus int
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #OsztalyTanuloi (TanuloId int)
INSERT INTO #OsztalyTanuloi (TanuloId)
SELECT C_TANULOID
FROM T_TANULOCSOPORT
WHERE C_OSZTALYCSOPORTID = @OsztalyCsoportId
AND C_BELEPESDATUM <= @Datum AND ISNULL(C_KILEPESDATUM, GETDATE()) > @Datum
AND TOROLT = 'F'
CREATE TABLE #Temp (
TanuloId int
,Tipus int
,Orakezdete datetime
)
INSERT INTO #Temp (TanuloId, Tipus, Orakezdete)
SELECT
ot.TanuloId as TanuloId
,tm.C_TIPUS as Tipus
,tn.C_ORAKEZDETE AS Orakezdete
FROM [fnGetKapcsolodoOsztalycsoportok] (@OsztalyCsoportId) ocs
INNER JOIN T_TANITASIORA tn ON tn.TOROLT = 'F' AND ocs.ID = tn.C_OSZTALYCSOPORTID AND tn.C_DATUM = @Datum AND tn.C_ORAKEZDETE <= @OraKezdete
LEFT JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = tn.C_OSZTALYCSOPORTID AND tcs.TOROLT = 'F'
LEFT JOIN T_TANULOMULASZTAS tm ON tm.TOROLT = 'F' AND tm.C_TANITASIORAKID = tn.ID AND tm.C_TIPUS = @HianyzasTipus AND tcs.C_TANULOID = tm.C_ORATANULOIID
INNER JOIN #osztalytanuloi ot ON ot.TanuloId = tcs.C_TANULOID
SELECT sub.TanuloId
FROM #OsztalyTanuloi ot
OUTER APPLY (SELECT TOP(1) * FROM #Temp t WHERE ot.TanuloId = t.TanuloId ORDER BY Orakezdete DESC) sub
WHERE Tipus = @HianyzasTipus
END
GO
@@ -0,0 +1,348 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS sp_GetErtesitesAltEsMulAdatok
GO
CREATE PROCEDURE sp_GetErtesitesAltEsMulAdatok
@pOsztalyId INT,
@pTanevId INT,
@pTankoteles BIT,
@pIskolaErdekuSzamit BIT,
@pIsSzulonek BIT = 1,
@pIgazolatlanOrakSzama INT
AS
BEGIN
SET NOCOUNT ON;
--Mulasztasok
DECLARE @Mulasztasok TABLE (
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
EXEC sp_GetDokumentumMulasztasok
@osztalyID = @pOsztalyId,
@tanevId = @pTanevId,
@elmeletiOraPercben = 45,
@gyakorlatiOraPercben = 45,
@ertekelesTipus = 1520, --évvégi
@iskolaErdekuSzamit = @pIskolaErdekuSzamit
SELECT
TanuloId Id
,TanuloCsoportId
,BelepesDatum
,ISNULL(KilepesDatum, GETDATE()) KilepesDatum
INTO #students
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'T')
DECLARE @Gondviselok TABLE (TanuloId INT, GondviseloId INT, RokonsagiFokId INT, GondviseloNev NVARCHAR(MAX))
INSERT INTO @Gondviselok
SELECT
TanuloId
,GondviseloId
,RokonsagifokId
,GondviseloNev
FROM fnGetDokumentumGondviselok (@pOsztalyId, @pTanevId, 'F', 'T')
DECLARE @TanuloCimTable TABLE (FelhasznaloId INT, Cim NVARCHAR(MAX), Cimtipusa INT)
INSERT INTO @TanuloCimTable
SELECT DISTINCT
TanuloId
,STUFF((
SELECT DISTINCT CAST(btemp.Cim AS NVARCHAR(MAX)) + CHAR(13) + CHAR(10)
FROM fnGetDokumentumTanuloOrGondviseloCim (0, @pTanevId, @pOsztalyId) btemp
WHERE
temp.TanuloId = btemp.TanuloId
AND temp.CimTipusa = btemp.CimTipusa
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'')
,temp.CimTipusa
FROM fnGetDokumentumTanuloOrGondviseloCim (0, @pTanevId, @pOsztalyId) temp
DECLARE @GondViseloCimTable TABLE (GondviseloId INT, Cim NVARCHAR(MAX), Cimtipusa INT)
INSERT INTO @GondViseloCimTable
SELECT DISTINCT
GondviseloId
,STUFF((
SELECT DISTINCT CAST(btemp.Cim AS NVARCHAR(MAX)) + CHAR(13) + CHAR(10)
FROM fnGetDokumentumTanuloOrGondviseloCim (1, @pTanevId, @pOsztalyId) btemp
WHERE
temp.GondviseloId = btemp.GondviseloId
AND temp.CimTipusa = btemp.CimTipusa
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'')
,temp.CimTipusa
FROM fnGetDokumentumTanuloOrGondviseloCim (1, @pTanevId, @pOsztalyId) temp
DECLARE @EmailCimTableTemp TABLE (FelhasznaloId INT, EmailCim NVARCHAR(MAX), GondviseloId INT)
INSERT INTO @EmailCimTableTemp
SELECT
TanuloId
,C_EMAILCIM
,C_GONDVISELOID
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'T') tanulo
INNER JOIN T_EMAIL_OSSZES email ON email.C_FELHASZNALOID = TanuloId
WHERE
email.TOROLT = 'F'
AND email.C_TANEVID = @pTanevId
AND LEN(C_EMAILCIM) > 0
UNION
SELECT
TanuloId
,C_EMAILCIM
,GondviseloId
FROM @Gondviselok
INNER JOIN T_EMAIL_OSSZES email ON email.C_GONDVISELOID = GondviseloId
WHERE
email.TOROLT = 'F'
AND email.C_TANEVID = @pTanevId
AND LEN(C_EMAILCIM) > 0
DECLARE @EmailCimTanuloTable TABLE (FelhasznaloId INT, EmailCim NVARCHAR(MAX))
INSERT INTO @EmailCimTanuloTable
SELECT DISTINCT
FelhasznaloId
,STUFF((
SELECT DISTINCT CAST(btemp.EmailCim AS NVARCHAR(MAX)) + CHAR(13) + CHAR(10)
FROM @EmailCimTableTemp btemp
WHERE
temp.FelhasznaloId = btemp.FelhasznaloId
AND btemp.GondviseloId IS NULL
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'') Email
FROM @EmailCimTableTemp temp
WHERE
GondviseloId IS NULL
DECLARE @EmailCimGondviseloTable TABLE (FelhasznaloId INT, GondviseloId INT, EmailCim NVARCHAR(MAX))
INSERT INTO @EmailCimGondviseloTable
SELECT DISTINCT
FelhasznaloId
,GondviseloId
,STUFF((
SELECT DISTINCT CAST(btemp.EmailCim AS NVARCHAR(MAX)) + CHAR(13) + CHAR(10)
FROM @EmailCimTableTemp btemp
WHERE
temp.GondviseloId = btemp.GondviseloId
AND btemp.GondviseloId IS NOT NULL
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'') Email
FROM @EmailCimTableTemp temp
WHERE
GondviseloId IS NOT NULL
DECLARE @TelefonTableTemp TABLE (FelhasznaloId INT, Telefon NVARCHAR(MAX), GondviseloId INT)
INSERT INTO @TelefonTableTemp
SELECT
TanuloId
,C_TELEFONSZAM
,C_GONDVISELOID
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'T') tanulo
INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_FELHASZNALOID = TanuloId
WHERE
telefon.TOROLT = 'F'
AND telefon.C_TANEVID = @pTanevId
AND LEN(telefon.C_TELEFONSZAM) > 0
UNION
SELECT
TanuloId
,C_TELEFONSZAM
,GondviseloId
FROM @Gondviselok gondviselo
INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_GONDVISELOID = GondviseloId
WHERE
telefon.TOROLT = 'F'
AND telefon.C_TANEVID = @pTanevId
AND LEN(telefon.C_TELEFONSZAM) > 0
DECLARE @TanuloTelefonTable TABLE (FelhasznaloId INT, Telefon NVARCHAR(MAX))
INSERT INTO @TanuloTelefonTable
SELECT DISTINCT
FelhasznaloId
,STUFF((
SELECT DISTINCT CAST(btemp.Telefon AS NVARCHAR(MAX)) + CHAR(13) + CHAR(10)
FROM @TelefonTableTemp btemp
WHERE
temp.FelhasznaloId = btemp.FelhasznaloId
AND GondviseloId IS NULL
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'')
FROM @TelefonTableTemp temp
WHERE
GondviseloId IS NULL
DECLARE @GondviseloTelefonTable TABLE (FelhasznaloID INT, GondviseloId INT, Telefon NVARCHAR(MAX))
INSERT INTO @GondviseloTelefonTable
SELECT DISTINCT
FelhasznaloId
,GondviseloId
,STUFF((
SELECT DISTINCT CAST(btemp.Telefon AS NVARCHAR(MAX)) + CHAR(13) + CHAR(10)
FROM @TelefonTableTemp btemp
WHERE
temp.FelhasznaloId = btemp.FelhasznaloId
and temp.GondviseloId = btemp.GondviseloId
AND GondviseloId IS NOT NULL
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'')
FROM @TelefonTableTemp temp
WHERE
GondviseloId IS NOT NULL
SELECT
TanuloId
,Gondviselok.GondviseloId
,Gondviselok.GondviseloNev GondviseloNev
,Cim GondviseloAllandoCim
,Telefon GondviseloTelefon
,RokonsagiFok.C_NAME GondviseloRokonsagiFoka
INTO #GondviseloAdatok
FROM @Gondviselok Gondviselok
INNER JOIN T_DICTIONARYITEMBASE_OSSZES RokonsagiFok ON RokonsagiFok.Id = Gondviselok.RokonsagiFokId AND RokonsagiFok.C_TANEVID = @pTanevId
LEFT JOIN @GondViseloCimTable GondviseloCim ON GondviseloCim.GondviseloId = Gondviselok.GondviseloId
LEFT JOIN @GondviseloTelefonTable GondviseloTelefon ON GondviseloTelefon.GondviseloId = Gondviselok.GondviseloId
ORDER BY TanuloId
--Tanulói adatok
SELECT
TanuloAdatok.ID AS TanuloId
,OsztalyTanuloi.TanuloCsoportId
,TanuloAdatok.C_NYOMTATASINEV TANULONEV
,TanuloAdatok.C_ANYJANEVE ANYJANEVE
,TanuloAdatok.C_SZULETESIHELY SZULETESIHELY
,TanuloAdatok.C_SZULETESIDATUM SZULETESIDATUM
,TanuloAdatok.C_NYILVANTARTASISZAM TorzslapSzam
,IntezmenyAdatok.C_IGAZGATONEVE INT_IGAZGATO_NEV
,IntezmenyAdatok.C_NEV INT_NEV
,IntezmenyAdatok.C_OMKOD INT_OMKOD
,IntezmenyAdatok.C_VAROS INT_VAROS
,dbo.fnGetDokumentumIntezmenyCime(@pTanevId) INT_CIM
,(SELECT C_NEV FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @pOsztalyId) OSZTALYCSOPORT_NEV
,Osztalyfonok.C_NYOMTATASINEV OSZTFO_NEV
,ISNULL(Mulasztas.Igazolt,0) IGAZOLT
,ISNULL(Mulasztas.Igazolatlan,0) IGAZOLATLAN
,TanuloAllandoCimTable.CIM TanuloAllandoCim
,TanuloTartozkodasiCimTable.Cim TanuloTartozkodasiCim
,TanuloAdatok.C_OKTATASIAZONOSITO AS TanuloOktAzon
INTO #tanuloiAdatok
FROM #students OsztalyTanuloi
INNER JOIN T_FELHASZNALO_OSSZES TanuloAdatok ON TanuloAdatok.ID = OsztalyTanuloi.ID AND TanuloAdatok.TOROLT = 'F'
INNER JOIN T_TANULO_OSSZES Tanulo ON Tanulo.ID = TanuloAdatok.ID AND Tanulo.TOROLT = 'F'
INNER JOIN T_INTEZMENYADATOK_OSSZES IntezmenyAdatok ON IntezmenyAdatok.C_TANEVID = TanuloAdatok.C_TANEVID
AND IntezmenyAdatok.TOROLT = 'F'
INNER JOIN T_TANULOTANUGYIADATOK AS TanugyiAdatok ON TanugyiAdatok.C_TANULOCSOPORTID = OsztalyTanuloi.TanuloCsoportId
LEFT JOIN T_OSZTALY_OSSZES Osztaly ON Osztaly.ID = @pOsztalyId AND Osztaly.TOROLT = 'F'
LEFT JOIN T_FELHASZNALO_OSSZES Osztalyfonok ON Osztalyfonok.ID = Osztaly.C_OSZTALYFONOKID AND Osztalyfonok.TOROLT = 'F'
LEFT JOIN @Mulasztasok Mulasztas ON Mulasztas.TanuloId = TanuloAdatok.ID AND Mulasztas.TanuloCsoportId = OsztalyTanuloi.TanuloCsoportId
LEFT JOIN @TanuloCimTable TanuloAllandoCimTable ON TanuloAllandoCimTable.FelhasznaloId = OsztalyTanuloi.ID AND TanuloAllandoCimTable.Cimtipusa = 907
LEFT JOIN @TanuloCimTable TanuloTartozkodasiCimTable ON TanuloTartozkodasiCimTable.FelhasznaloId = OsztalyTanuloi.ID AND TanuloTartozkodasiCimTable.Cimtipusa = 909
WHERE
TanugyiAdatok.C_TANKOTELEZETT = IIF(@pTankoteles = 0, 'F', 'T')
ORDER BY TanuloAdatok.C_NYOMTATASINEV
IF @pIsSzulonek = 1 BEGIN
SELECT DISTINCT
ta.*
,GondviseloAdatok.GondviseloNev
,GondviseloAdatok.GondviseloAllandoCim
,GondviseloAdatok.GondviseloTelefon
,GondviseloRokonsagiFoka
FROM #tanuloiAdatok AS ta
LEFT JOIN #GondviseloAdatok GondviseloAdatok ON GondviseloAdatok.TanuloId = ta.TanuloId
WHERE
ta.IGAZOLATLAN >= @pIgazolatlanOrakSzama
ORDER BY TANULONEV
END
ELSE BEGIN
SELECT DISTINCT
ta.*
FROM #tanuloiAdatok AS ta
WHERE
ta.Igazolatlan >= @pIgazolatlanOrakSzama
ORDER BY TANULONEV
END
--Mulasztások részletezése
SELECT
Mulasztasok.TanuloId
,Mulasztasok.TanuloCsoportId
,Mulasztasok.OsztalyCsoportId
,Mulasztasok.OsztalyCsoportNev
,MulasztasTipus.C_NAME Tipusa
,Mulasztasok.Igazolt
,Mulasztasok.IgazolasTipusa
,Mulasztasok.KesesPercben
,Mulasztasok.Datum
,Mulasztasok.Oraszam
,Mulasztasok.TantargyId
,Mulasztasok.TantargyNev
FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes(@pTanevId, @pOsztalyId, @pIskolaErdekuSzamit, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT) Mulasztasok
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES MulasztasTipus ON MulasztasTipus.Id = Mulasztasok.Tipusa AND MulasztasTipus.C_TANEVID = @pTanevId
INNER JOIN #tanuloiAdatok AS ta ON ta.TanuloId = Mulasztasok.TanuloId AND ta.IGAZOLATLAN >= @pIgazolatlanOrakSzama
WHERE
Mulasztasok.Igazolt = 'F'
--Gondviselo adatok
SELECT * from #GondviseloAdatok AS Gondviselok
LEFT JOIN @Mulasztasok Mulasztasok ON Mulasztasok.TanuloId = Gondviselok.TanuloId
INNER JOIN #tanuloiAdatok AS ta ON ta.TanuloId = Mulasztasok.TanuloId AND ta.IGAZOLATLAN >= @pIgazolatlanOrakSzama
--Iktatási adatok
DECLARE @IktatasAdatok TABLE (OsztalyId INT, Evfolyam INT, FeladatEllatasiHelyId INT, KepzesiForma INT, OsztalyFonokId INT,
TantervId INT, SzakmaCsoport INT, Agazat INT, Szakkepesites INT, Reszszakkepesites INT,
OJCSJKeresztfeleves CHAR, OJTechnikaiOsztaly CHAR, OJNemzetisegi CHAR, OJKettannyelvu CHAR, OJNyelviElokeszito CHAR,
OJLogopediai CHAR, OJSportOsztaly CHAR, OJAranyJanosProgram CHAR, OJGyogypedagogiai CHAR)
INSERT INTO @IktatasAdatok
SELECT
@pOsztalyId,
ocs.C_EVFOLYAMTIPUSA,
ocs.C_FELADATELLATASIHELYID,
o.C_KEPZESIFORMA,
o.C_OSZTALYFONOKID,
o.C_TANTERVID,
o.C_SZAKMACSOPORT,
o.C_AGAZAT,
o.C_SZAKKEPESITES,
o.C_RESZSZAKKEPESITES,
ocs.C_KERESZTFELEVES,
o.C_TECHNIKAIOSZTALY,
o.C_NEMZETISEGI,
o.C_KETTANNYELVU,
o.C_NYELVIELOKESZITO,
o.C_LOGOPEDIAI,
o.C_SPORT,
o.C_AJPROGRAM,
o.C_GYOGYPEDAGOGIAI
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY o ON o.ID = ocs.ID
WHERE ocs.ID = @pOsztalyId AND ocs.TOROLT = 'F'
AND ocs.C_TANEVID = @pTanevId;
SELECT * from @IktatasAdatok;
DROP TABLE #GondviseloAdatok
DROP TABLE #tanuloiAdatok
DROP TABLE #students
END
GO
@@ -0,0 +1,60 @@
DROP PROCEDURE IF EXISTS [dbo].[sp_GetKozossegiJelentkezesLap]
GO
CREATE PROCEDURE [dbo].[sp_GetKozossegiJelentkezesLap]
@pIntezmenyId INT
,@pTanevId INT
,@pOsztalyId INT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @pOsztalyId)
/* TANULO */
SELECT
dbo.fnGetDokumentumDatumFormatum(f.C_SZULETESIDATUM) AS SzulIdo
,f.C_NYOMTATASINEV AS TanuloNeve
,f.C_SZULETESINEV AS SzuletesiNev
,ocs.C_NEV AS Osztaly
,t.ID AS TanuloId
,f.C_OKTATASIAZONOSITO AS OktAzon
INTO #Tanulok
FROM T_TANULO_OSSZES AS t
INNER JOIN T_TANTERV_OSSZES AS tt ON tt.ID = t.C_TANTERVID AND tt.TOROLT ='F'
INNER JOIN T_FELHASZNALO_OSSZES AS f ON f.ID = t.ID AND f.TOROLT = 'F'
INNER JOIN T_TANULOCSOPORT_OSSZES AS tcs ON tcs.C_TANULOID = t.ID AND tcs.TOROLT = 'F' AND tcs.C_OSZTALYCSOPORTID = @pOsztalyId
INNER JOIN T_OSZTALYCSOPORT_OSSZES AS ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F' AND ocs.C_FELADATKATEGORIAID = @kategoriaId
INNER JOIN T_DICTIONARYITEMBASE_OSSZES AS d ON d.id=f.C_ALLAMPOLGARSAGA AND d.C_TANEVID = f.C_TANEVID AND d.C_INTEZMENYID = f.C_INTEZMENYID
WHERE ocs.ID = @pOsztalyId
AND t.C_ALINTEZMENYID = @pIntezmenyId
AND t.C_ALTANEVID = @pTanevId
SELECT * FROM #Tanulok
/* INTEZMENYADATOK */
SELECT DISTINCT
ia.C_NEV AS IntezmenyNev
,ia.C_IGAZGATONEVE AS IgazgatoNev
,dbo.fnGetDokumentumIntezmenyCime (@pTanevId) AS IntezmenyCim
,ia.C_TELEFONSZAM AS IntezmenyTelefonszam
,ia.C_EMAILCIM AS IntezmenyEmail
,ia.C_OMKOD AS OktAzon
,tv.C_NEV AS Tanev
FROM T_TANEV_OSSZES AS tv
INNER JOIN T_INTEZMENYADATOK_OSSZES AS ia ON tv.ID = ia.C_TANEVID
WHERE tv.ID = @pTanevId
/* GONDVISELO */
SELECT g.C_NEV AS GondviseloNeve
,g.C_TANULOID AS TanuloId
FROM T_GONDVISELO_OSSZES AS g
INNER JOIN #Tanulok AS Tanulok ON Tanulok.TanuloId = g.C_TANULOID
WHERE g.C_ISTORVENYESKEPVISELO = 'T'
AND (g.C_ISCSOKKENTETTGONDVISELO IS NULL OR g.C_ISCSOKKENTETTGONDVISELO = 'F')
AND g.C_TANEVID = @pTanevId
END
GO
@@ -0,0 +1,139 @@
DROP PROCEDURE IF EXISTS dbo.sp_GetMulasztasokNaploNezetData
GO
CREATE PROCEDURE dbo.sp_GetMulasztasokNaploNezetData
@pOsztalyCsoportId INT
,@pDatum DATE
,@pCsoportTipusTanoraiCeluId INT
,@pIsCsoportVez INT = 0
AS
BEGIN
CREATE TABLE #TempTable(
TanitasiOraId INT NOT NULL,
OsztalyCsoportId INT NOT NULL,
OsztalyCsoportNev NVARCHAR(255) NOT NULL,
OsztalyNev NVARCHAR(255) NOT NULL,
IsOsztalyOraja BIT NOT NULL,
IsTanoraiCelu BIT NOT NULL,
IsTanoraiCelunakJelolt BIT NOT NULL,
TantargyId INT NOT NULL,
TantargyNev NVARCHAR(255) NOT NULL,
TanarId INT NOT NULL,
TanarNev NVARCHAR(255) NOT NULL,
OraSorszam INT NULL,
OraKezdete DATETIME NULL
);
DECLARE @sql nvarchar(max) = ''
SET @sql += N'
INSERT INTO #TempTable
SELECT
tn.ID AS TanitasiOraId
,ocs.ID AS OsztalyCsoportId
,ocs.C_NEV AS OsztalyCsoportNev
,o.C_NEV AS OsztalyNev
,IIF(ocs.ID = @pOsztalyCsoportId, 1, 0) AS IsOsztalyOraja
,IIF(cst.ID = @pCsoportTipusTanoraiCeluId, 1, 0) AS IsTanoraiCelu
,IIF(cst.C_ISTANORAICELU = ''T'', 1, 0) AS IsTanoraiCelunakJelolt
,tt.ID AS TantargyId
,tt.C_NEV AS TantargyNev
,fa.ID AS TanarId
,fa.C_NYOMTATASINEV AS TanarNev
,IIF(tn.C_CSENGETESIRENDORAID IS NOT NULL, tn.C_ORASZAM, NULL) AS OraSorszam
,IIF(tn.C_CSENGETESIRENDORAID IS NULL, tn.C_ORAKEZDETE, NULL) AS OraKezdete
FROM T_TANITASIORA tn
' + IIF(@pIsCsoportVez = 0, N' INNER JOIN dbo.fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyCsoportId, @pDatum, @pDatum) kocs ON kocs.ID = tn.C_OSZTALYCSOPORTID ', '')
SET @sql += N'
INNER JOIN T_TANTARGY tt ON tt.ID = tn.C_TANTARGYID AND tt.TOROLT = ''F''
INNER JOIN T_FELHASZNALO fa ON fa.ID = tn.C_ORATULAJDONOSID AND fa.TOROLT = ''F''
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tn.C_OSZTALYCSOPORTID AND ocs.TOROLT = ''F''
LEFT JOIN T_CSOPORT cs ON cs.ID = tn.C_OSZTALYCSOPORTID AND cs.TOROLT = ''F''
LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = ''F''
INNER JOIN T_OSZTALYCSOPORT o ON o.ID = @pOsztalyCsoportId AND o.TOROLT = ''F''
WHERE
tn.C_DATUM = @pDatum
AND tn.C_MEGTARTOTT = ''T''
AND tn.TOROLT = ''F''
' + IIF(@pIsCsoportVez = 1, N' AND tn.C_OSZTALYCSOPORTID = @pOsztalyCsoportId ','')
EXEC sp_executesql @sql, N'
@pOsztalyCsoportId INT
,@pDatum DATE
,@pCsoportTipusTanoraiCeluId INT
,@pIsCsoportVez INT'
,@pOsztalyCsoportId = @pOsztalyCsoportId
,@pDatum = @pDatum
,@pCsoportTipusTanoraiCeluId = @pCsoportTipusTanoraiCeluId
,@pIsCsoportVez = @pIsCsoportVez
SELECT
tcs.C_TANULOID AS TanuloId
,ft.C_NYOMTATASINEV AS TanuloNev
,ft.C_ANYJANEVE AS AnyjaNeve
,ft.C_SZULETESIDATUM AS SzuletesiIdo
,tbl.OsztalyCsoportId
,tbl.OsztalyCsoportNev
,tbl.OsztalyNev
,tbl.IsOsztalyOraja
,tbl.IsTanoraiCelu
,tbl.IsTanoraiCelunakJelolt
,tbl.TantargyId
,tbl.TantargyNev
,tbl.TanarId
,tbl.TanarNev
,tbl.OraSorszam
,tbl.OraKezdete
,tbl.TanitasiOraId
,tm.ID AS MulasztasId
,tm.C_TIPUS AS MulasztasTipus
,tm.C_IGAZOLT AS IsIgazolt
,tm.C_IGAZOLASTIPUSA AS IgazolasTipus
,tm.C_MEGJEGYZES AS Megjegyzes
,tm.C_KESESPERCBEN AS KesesPercben
FROM (
SELECT
C_TANULOID, C_OSZTALYCSOPORTID
FROM
T_TANULOCSOPORT
WHERE
C_OSZTALYCSOPORTID = @pOsztalyCsoportId
AND C_BELEPESDATUM <= @pDatum
AND (C_KILEPESDATUM > @pDatum OR C_KILEPESDATUM IS NULL)
AND TOROLT = 'F'
AND C_TANULOID IN (
SELECT C_TANULOID
FROM T_TANULOCSOPORT
WHERE
T_TANULOCSOPORT.C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportId FROM #TempTable)
AND T_TANULOCSOPORT.C_BELEPESDATUM <= @pDatum
AND (T_TANULOCSOPORT.C_KILEPESDATUM > @pDatum OR T_TANULOCSOPORT.C_KILEPESDATUM IS NULL)
)
) tcs
CROSS JOIN #TempTable tbl
INNER JOIN T_FELHASZNALO ft ON
tcs.C_TANULOID = ft.ID
AND ft.TOROLT = 'F'
LEFT JOIN T_TANULOMULASZTAS tm ON
tcs.C_TANULOID = tm.C_ORATANULOIID
AND tm.C_TANITASIORAKID = tbl.TanitasiOraId
AND tm.TOROLT = 'F'
WHERE
tcs.C_TANULOID IN (
SELECT C_TANULOID
FROM T_TANULOCSOPORT
WHERE
tbl.OsztalyCsoportId = T_TANULOCSOPORT.C_OSZTALYCSOPORTID
AND T_TANULOCSOPORT.C_BELEPESDATUM <= @pDatum
AND (T_TANULOCSOPORT.C_KILEPESDATUM > @pDatum OR T_TANULOCSOPORT.C_KILEPESDATUM IS NULL)
)
AND (tm.C_TIPUS IS NULL OR tm.C_TIPUS <> 1817)
ORDER BY
ft.C_NYOMTATASINEV
END
GO
@@ -0,0 +1,716 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS [dbo].[sp_GetMunkaidoElszamoloLap]
GO
CREATE PROCEDURE [dbo].[sp_GetMunkaidoElszamoloLap]
@pIntezmenyId INT,
@pTanarId INT,
@tanevId INT,
@honapId INT,
@isKlebersberg BIT,
@feladatKategoriaId INT = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @backDate datetime
SELECT
ID pedagogusId
,Nev pedagogusNev
FROM fnGetDokumentumIntezmenyPedagogusok (@pIntezmenyId, @tanevId )
WHERE ID = @pTanarId
DECLARE @Honap INT = (
SELECT TOP 1
dictionaryItemBase.C_VALUE
FROM
T_DICTIONARYITEMBASE_OSSZES dictionaryItemBase
WHERE
dictionaryItemBase.ID = @honapId
AND dictionaryItemBase.C_TANEVID = @tanevId
AND dictionaryItemBase.TOROLT = 'F'
)
CREATE TABLE #EvHonap (Ev int, Honap int)
INSERT INTO #EvHonap
SELECT TOP 1
FORMAT(C_NAPDATUMA, 'yyyy') Ev,
FORMAT(C_NAPDATUMA, 'MM') Honap
FROM
T_NAPTARINAP_OSSZES naptariNap
WHERE
DATEPART(MONTH,naptariNap.C_NAPDATUMA) = @Honap
AND naptariNap.C_TANEVID = @tanevId
AND naptariNap.TOROLT = 'F'
SELECT * FROM #EvHonap
SET @backDate = DATEADD(MONTH, 1, DATEFROMPARTS((SELECT Ev FROM #EvHonap), (SELECT Honap FROM #EvHonap), 1))
--===================================
--FEJLÉC
--===================================
SELECT
f.ID pedagogusId
,f.C_NYOMTATASINEV TanarNev
,f.C_OKTATASIAZONOSITO OktatasiAzonosito
,munkakor.C_NAME Munkakor
,dbo.fnGetDokumentumPedagogusOraszam(f.id, @isKlebersberg) KotelezoOraszam
,ISNULL(CONVERT(NVARCHAR(MAX),m.C_MUNKAIDOKEDVEZMENYORASZAM),'-') MunkaidoKedvezmenyOraszam
,ISNULL(munkaidoKedvezmenyOka.C_NAME,'-') MunkaidoKedvezmenyOka
,ia.C_NEV + ' (' + ia.C_OMKOD +')' IntezmenyNeve
,ia.C_IGAZGATONEVE Igazgato
,m.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
FROM T_FELHASZNALO_OSSZES f
INNER JOIN T_MUNKAUGYIADATOK_OSSZES m ON m.C_ALKALMAZOTTID = f.Id
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES munkakor ON munkakor.Id = m.C_MUNKAKORTIPUSA AND munkakor.C_TANEVID = m.C_TANEVID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES munkaidoKedvezmenyOka ON munkaidoKedvezmenyOka.Id = m.C_MUNKAIDOKEDVEZMENYOKA AND munkaidoKedvezmenyOka.C_TANEVID = m.C_TANEVID
INNER JOIN T_INTEZMENYADATOK_OSSZES ia ON ia.C_TANEVID = f.C_TANEVID
WHERE
ia.TOROLT = 'F'
AND m.TOROLT = 'F'
AND f.ID = @pTanarId
--===================================
--MEGTARTOTT TANÓRÁK, HELYETTESÍTÉSEK
--===================================
SELECT
pedagogusId
,OsztalyCsoportID
,OsztalyCsoportNev
,Honap
,[1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31],
ISNULL([1], 0) + ISNULL([2], 0) + ISNULL([3], 0) + ISNULL([4], 0) + ISNULL([5], 0) +
ISNULL([6], 0) + ISNULL([7], 0) + ISNULL([8], 0) + ISNULL([9], 0) + ISNULL([10], 0) +
ISNULL([11], 0) + ISNULL([12], 0) + ISNULL([13], 0) + ISNULL([14], 0) + ISNULL([15], 0) +
ISNULL([16], 0) + ISNULL([17], 0) + ISNULL([18], 0) + ISNULL([19], 0) + ISNULL([20], 0) +
ISNULL([21], 0) + ISNULL([22], 0) + ISNULL([23], 0) + ISNULL([24], 0) + ISNULL([25], 0) +
ISNULL([26], 0) + ISNULL([27], 0) + ISNULL([28], 0) + ISNULL([29], 0) + ISNULL([30], 0) + ISNULL([31], 0) Ossz
INTO #MegtartottOrakHelyesitesek_tmp
FROM
(
SELECT
T_TANITASIORA_OSSZES.C_ORATULAJDONOSID AS pedagogusId
,DATEPART(DAY, T_TANITASIORA_OSSZES.C_DATUM) Nap
,DATEPART(Month, T_TANITASIORA_OSSZES.C_DATUM) Honap
,T_OSZTALYCSOPORT_OSSZES.ID OsztalyCsoportID
,T_OSZTALYCSOPORT_OSSZES.ID ocsId
,T_OSZTALYCSOPORT_OSSZES.C_NEV OsztalyCsoportNev
,IIF(T_TANITASIORA_OSSZES.C_CSENGETESIRENDORAID IS NOT NULL,
1,
ROUND(CONVERT(FLOAT,(DATEPART(HOUR, C_ORAVEGE - C_ORAKEZDETE) * 60 + DATEPART(MINUTE, C_ORAVEGE - C_ORAKEZDETE))) / 45, 2)
)SumOra
FROM T_TANITASIORA_OSSZES
INNER JOIN T_OSZTALYCSOPORT_OSSZES on T_TANITASIORA_OSSZES.C_OSZTALYCSOPORTID = T_OSZTALYCSOPORT_OSSZES.ID AND (T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @feladatKategoriaId OR @feladatKategoriaId IS NULL)
LEFT JOIN T_CSOPORT_OSSZES ON T_CSOPORT_OSSZES.Id = T_OSZTALYCSOPORT_OSSZES.ID
LEFT JOIN T_FOGLALKOZAS_OSSZES fog ON fog.ID = C_FOGLALKOZASID
WHERE
T_TANITASIORA_OSSZES.C_TANEVID = @tanevId
AND T_TANITASIORA_OSSZES.C_ORATULAJDONOSID = @pTanarId
AND DATEPART(MONTH, T_TANITASIORA_OSSZES.C_DATUM) = @Honap
AND T_TANITASIORA_OSSZES.TOROLT = 'F'
AND T_TANITASIORA_OSSZES.C_MEGTARTOTT = 'T'
AND T_TANITASIORA_OSSZES.C_HELYETTESITOTANARID IS NULL
AND (T_CSOPORT_OSSZES.Id IS NULL OR T_CSOPORT_OSSZES.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId)))
AND (T_TANITASIORA_OSSZES.C_PARHUZAMOSORA = 'F' OR T_TANITASIORA_OSSZES.C_PARHUZAMOSORA IS NULL)
AND (fog.C_FOGLALKOZASTIPUSA IS NULL OR fog.C_FOGLALKOZASTIPUSA <> 1371)
)a
PIVOT
(
SUM(SumOra)
FOR Nap IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31])
) OsszTanora
----ITT ADOM VISSZA A TABLAT=======================================<<<<<<
SELECT * FROM #MegtartottOrakHelyesitesek_tmp
SELECT
pedagogusId
,SUM([1]) AS [1], SUM([2]) AS [2], SUM([3]) AS [3], SUM([4]) AS [4], SUM([5]) AS [5], SUM([6]) AS [6], SUM([7]) AS [7], SUM([8]) AS [8], SUM([9]) AS [9], SUM([10]) AS [10],
SUM([11]) AS [11], SUM([12]) AS [12], SUM([13]) AS [13], SUM([14]) AS [14], SUM([15]) AS [15], SUM([16]) AS [16], SUM([17]) AS [17], SUM([18]) AS [18], SUM([19]) AS [19], SUM([20]) AS [20],
SUM([21]) AS [21], SUM([22]) AS [22], SUM([23]) AS [23], SUM([24]) AS [24], SUM([25]) AS [25], SUM([26]) AS [26], SUM([27]) AS [27], SUM([28]) AS [28], SUM([29]) AS [29], SUM([30]) AS [30], SUM([31]) AS [31]
,SUM(Ossz) as Ossz
FROM #MegtartottOrakHelyesitesek_tmp
GROUP BY
pedagogusId
--szakszerű helyettesítés
SELECT
pedagogusId
,OsztalyCsoportID
,OsztalyCsoportNev
,Honap
,[1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31],
ISNULL([1], 0) + ISNULL([2], 0) + ISNULL([3], 0) + ISNULL([4], 0) + ISNULL([5], 0) +
ISNULL([6], 0) + ISNULL([7], 0) + ISNULL([8], 0) + ISNULL([9], 0) + ISNULL([10], 0) +
ISNULL([11], 0) + ISNULL([12], 0) + ISNULL([13], 0) + ISNULL([14], 0) + ISNULL([15], 0) +
ISNULL([16], 0) + ISNULL([17], 0) + ISNULL([18], 0) + ISNULL([19], 0) + ISNULL([20], 0) +
ISNULL([21], 0) + ISNULL([22], 0) + ISNULL([23], 0) + ISNULL([24], 0) + ISNULL([25], 0) +
ISNULL([26], 0) + ISNULL([27], 0) + ISNULL([28], 0) + ISNULL([29], 0) + ISNULL([30], 0) + ISNULL([31], 0) Ossz
INTO #SzakszeruHelyetesites_tmp
FROM
(
SELECT
tao.C_HELYETTESITOTANARID AS pedagogusId
,DATEPART(DAY, tao.C_DATUM) Nap
,DATEPART(MONTH,tao.C_DATUM) Honap
,ocs.C_NEV OsztalyCsoportNev
,tao.C_OSZTALYCSOPORTID oraid
,tao.C_OSZTALYCSOPORTID OsztalyCsoportID
,IIF(tao.C_CSENGETESIRENDORAID IS NOT NULL,
1,
ROUND(CONVERT(FLOAT,(DATEPART(HOUR, C_ORAVEGE - C_ORAKEZDETE) * 60 + DATEPART(MINUTE, C_ORAVEGE - C_ORAKEZDETE))) / IIF(cs.Id IS NULL OR cs.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId)), 45, 60), 2)
)SumOra
FROM T_TANITASIORA_OSSZES tao
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on ocs.id=tao.C_OSZTALYCSOPORTID AND (ocs.C_FELADATKATEGORIAID = @feladatKategoriaId OR @feladatKategoriaId IS NULL)
LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = ocs.ID
WHERE
DATEPART(MONTH, tao.C_DATUM) = @Honap
AND tao.C_HELYETTESITOTANARID = @pTanarId
AND tao.TOROLT = 'F'
AND tao.C_HELYETTESITESTIPUSA = 1494
AND tao.C_MEGTARTOTT = 'T'
AND tao.C_TANEVID = @tanevId
AND (tao.C_PARHUZAMOSORA = 'F' OR tao.C_PARHUZAMOSORA IS NULL)
)a
PIVOT
(
SUM(SumOra)
FOR Nap IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31])
) SzakszeruHelyettesites
----ITT ADOM VISSZA A TABLAT=======================================<<<<<<
SELECT * FROM #SzakszeruHelyetesites_tmp
SELECT
pedagogusId
,SUM([1]) AS [1], SUM([2]) AS [2], SUM([3]) AS [3], SUM([4]) AS [4], SUM([5]) AS [5], SUM([6]) AS [6], SUM([7]) AS [7], SUM([8]) AS [8], SUM([9]) AS [9], SUM([10]) AS [10],
SUM([11]) AS [11], SUM([12]) AS [12], SUM([13]) AS [13], SUM([14]) AS [14], SUM([15]) AS [15], SUM([16]) AS [16], SUM([17]) AS [17], SUM([18]) AS [18], SUM([19]) AS [19], SUM([20]) AS [20],
SUM([21]) AS [21], SUM([22]) AS [22], SUM([23]) AS [23], SUM([24]) AS [24], SUM([25]) AS [25], SUM([26]) AS [26], SUM([27]) AS [27], SUM([28]) AS [28], SUM([29]) AS [29], SUM([30]) AS [30], SUM([31]) AS [31]
,SUM(Ossz) as Ossz
FROM #SzakszeruHelyetesites_tmp
GROUP BY
pedagogusId
--nem szakszerű helyettesítés
SELECT
pedagogusId
,OsztalyCsoportID
,OsztalyCsoportNev
,Honap
,[1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31],
ISNULL([1], 0) + ISNULL([2], 0) + ISNULL([3], 0) + ISNULL([4], 0) + ISNULL([5], 0) +
ISNULL([6], 0) + ISNULL([7], 0) + ISNULL([8], 0) + ISNULL([9], 0) + ISNULL([10], 0) +
ISNULL([11], 0) + ISNULL([12], 0) + ISNULL([13], 0) + ISNULL([14], 0) + ISNULL([15], 0) +
ISNULL([16], 0) + ISNULL([17], 0) + ISNULL([18], 0) + ISNULL([19], 0) + ISNULL([20], 0) +
ISNULL([21], 0) + ISNULL([22], 0) + ISNULL([23], 0) + ISNULL([24], 0) + ISNULL([25], 0) +
ISNULL([26], 0) + ISNULL([27], 0) + ISNULL([28], 0) + ISNULL([29], 0) + ISNULL([30], 0) + ISNULL([31], 0) Ossz
INTO #NemSzakszeruHelyetesites_tmp
FROM
(
SELECT
tao.C_HELYETTESITOTANARID AS pedagogusId
,DATEPART(DAY, tao.C_DATUM) Nap
,DATEPART(MONTH,tao.C_DATUM) Honap
,ocs.C_NEV OsztalyCsoportNev
,tao.C_OSZTALYCSOPORTID oraid
,tao.C_OSZTALYCSOPORTID OsztalyCsoportID
,IIF(tao.C_CSENGETESIRENDORAID IS NOT NULL,
1,
ROUND(CONVERT(FLOAT,(DATEPART(HOUR, C_ORAVEGE - C_ORAKEZDETE) * 60 + DATEPART(MINUTE, C_ORAVEGE - C_ORAKEZDETE))) / IIF(cs.Id IS NULL OR cs.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId)), 45, 60), 2)
)SumOra
FROM T_TANITASIORA_OSSZES tao
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on ocs.id=tao.C_OSZTALYCSOPORTID AND (ocs.C_FELADATKATEGORIAID = @feladatKategoriaId OR @feladatKategoriaId IS NULL)
LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = ocs.ID
WHERE
DATEPART(MONTH, tao.C_DATUM) = @Honap
AND tao.C_HELYETTESITOTANARID = @pTanarId
AND tao.TOROLT = 'F'
AND tao.C_HELYETTESITESTIPUSA = 1495
AND tao.C_MEGTARTOTT = 'T'
AND tao.C_TANEVID = @tanevId
AND (tao.C_PARHUZAMOSORA = 'F' OR tao.C_PARHUZAMOSORA IS NULL)
)a
PIVOT
(
SUM(SumOra)
FOR Nap IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31])
) NemSzakszeruHelyettesites
----ITT ADOM VISSZA A TABLAT=======================================<<<<<<
SELECT * FROM #NemSzakszeruHelyetesites_tmp
SELECT
pedagogusId
,SUM([1]) AS [1], SUM([2]) AS [2], SUM([3]) AS [3], SUM([4]) AS [4], SUM([5]) AS [5], SUM([6]) AS [6], SUM([7]) AS [7], SUM([8]) AS [8], SUM([9]) AS [9], SUM([10]) AS [10],
SUM([11]) AS [11], SUM([12]) AS [12], SUM([13]) AS [13], SUM([14]) AS [14], SUM([15]) AS [15], SUM([16]) AS [16], SUM([17]) AS [17], SUM([18]) AS [18], SUM([19]) AS [19], SUM([20]) AS [20],
SUM([21]) AS [21], SUM([22]) AS [22], SUM([23]) AS [23], SUM([24]) AS [24], SUM([25]) AS [25], SUM([26]) AS [26], SUM([27]) AS [27], SUM([28]) AS [28], SUM([29]) AS [29], SUM([30]) AS [30], SUM([31]) AS [31]
,SUM(Ossz) as Ossz
FROM #NemSzakszeruHelyetesites_tmp
GROUP BY
pedagogusId
--óraösszevonás
SELECT
pedagogusId
,OsztalyCsoportID
,OsztalyCsoportNev
,Honap
,[1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31],
ISNULL([1], 0) + ISNULL([2], 0) + ISNULL([3], 0) + ISNULL([4], 0) + ISNULL([5], 0) +
ISNULL([6], 0) + ISNULL([7], 0) + ISNULL([8], 0) + ISNULL([9], 0) + ISNULL([10], 0) +
ISNULL([11], 0) + ISNULL([12], 0) + ISNULL([13], 0) + ISNULL([14], 0) + ISNULL([15], 0) +
ISNULL([16], 0) + ISNULL([17], 0) + ISNULL([18], 0) + ISNULL([19], 0) + ISNULL([20], 0) +
ISNULL([21], 0) + ISNULL([22], 0) + ISNULL([23], 0) + ISNULL([24], 0) + ISNULL([25], 0) +
ISNULL([26], 0) + ISNULL([27], 0) + ISNULL([28], 0) + ISNULL([29], 0) + ISNULL([30], 0) + ISNULL([31], 0) Ossz
INTO #OraOsszevonas_tmp
FROM
(
SELECT
tao.C_HELYETTESITOTANARID AS pedagogusId
,DATEPART(DAY, tao.C_DATUM) Nap
,DATEPART(MONTH,tao.C_DATUM) Honap
,ocs.C_NEV OsztalyCsoportNev
,tao.C_OSZTALYCSOPORTID oraid
,tao.C_OSZTALYCSOPORTID OsztalyCsoportID
,IIF(tao.C_CSENGETESIRENDORAID IS NOT NULL,
1,
ROUND(CONVERT(FLOAT,(DATEPART(HOUR, C_ORAVEGE - C_ORAKEZDETE) * 60 + DATEPART(MINUTE, C_ORAVEGE - C_ORAKEZDETE))) / IIF(cs.Id IS NULL OR cs.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId)), 45, 60), 2)
)SumOra
FROM T_TANITASIORA_OSSZES tao
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on ocs.ID=tao.C_OSZTALYCSOPORTID AND (ocs.C_FELADATKATEGORIAID = @feladatKategoriaId OR @feladatKategoriaId IS NULL)
LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = ocs.ID
WHERE
DATEPART(MONTH, tao.C_DATUM) = @Honap
AND tao.C_HELYETTESITOTANARID = @pTanarId
AND tao.TOROLT = 'F'
AND tao.C_HELYETTESITESTIPUSA = 1496
AND tao.C_TANEVID = @tanevId
AND (tao.C_PARHUZAMOSORA = 'F' OR tao.C_PARHUZAMOSORA IS NULL)
)a
PIVOT
(
SUM(SumOra)
FOR Nap IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31])
) Oraosszevonas
----ITT ADOM VISSZA A TABLAT=======================================<<<<<<
SELECT * FROM #OraOsszevonas_tmp
SELECT
pedagogusId
,SUM([1]) AS [1], SUM([2]) AS [2], SUM([3]) AS [3], SUM([4]) AS [4], SUM([5]) AS [5], SUM([6]) AS [6], SUM([7]) AS [7], SUM([8]) AS [8], SUM([9]) AS [9], SUM([10]) AS [10],
SUM([11]) AS [11], SUM([12]) AS [12], SUM([13]) AS [13], SUM([14]) AS [14], SUM([15]) AS [15], SUM([16]) AS [16], SUM([17]) AS [17], SUM([18]) AS [18], SUM([19]) AS [19], SUM([20]) AS [20],
SUM([21]) AS [21], SUM([22]) AS [22], SUM([23]) AS [23], SUM([24]) AS [24], SUM([25]) AS [25], SUM([26]) AS [26], SUM([27]) AS [27], SUM([28]) AS [28], SUM([29]) AS [29], SUM([30]) AS [30], SUM([31]) AS [31]
,SUM(Ossz) as Ossz
FROM #OraOsszevonas_tmp
GROUP BY
pedagogusId
--tanóránkívüli
SELECT
pedagogusId
,OsztalyCsoportID
,OsztalyCsoportNev
,Honap
,[1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31],
ISNULL([1], 0) + ISNULL([2], 0) + ISNULL([3], 0) + ISNULL([4], 0) + ISNULL([5], 0) +
ISNULL([6], 0) + ISNULL([7], 0) + ISNULL([8], 0) + ISNULL([9], 0) + ISNULL([10], 0) +
ISNULL([11], 0) + ISNULL([12], 0) + ISNULL([13], 0) + ISNULL([14], 0) + ISNULL([15], 0) +
ISNULL([16], 0) + ISNULL([17], 0) + ISNULL([18], 0) + ISNULL([19], 0) + ISNULL([20], 0) +
ISNULL([21], 0) + ISNULL([22], 0) + ISNULL([23], 0) + ISNULL([24], 0) + ISNULL([25], 0) +
ISNULL([26], 0) + ISNULL([27], 0) + ISNULL([28], 0) + ISNULL([29], 0) + ISNULL([30], 0) + ISNULL([31], 0) Ossz
INTO #TanoranKivuli_tmp
FROM
(
SELECT
tao.C_ORATULAJDONOSID AS pedagogusId
,DATEPART(DAY, tao.C_DATUM) Nap
,DATEPART(MONTH,tao.C_DATUM) Honap
,ocs.C_NEV OsztalyCsoportNev
,tao.C_OSZTALYCSOPORTID oraid
,tao.C_OSZTALYCSOPORTID OsztalyCsoportID
,IIF(tao.C_CSENGETESIRENDORAID IS NOT NULL,
1,
ROUND(CONVERT(FLOAT,(DATEPART(HOUR, C_ORAVEGE - C_ORAKEZDETE) * 60 + DATEPART(MINUTE, C_ORAVEGE - C_ORAKEZDETE))) / 60, 2)
)SumOra
FROM T_TANITASIORA_OSSZES tao
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on ocs.id=tao.C_OSZTALYCSOPORTID AND (ocs.C_FELADATKATEGORIAID = @feladatKategoriaId OR @feladatKategoriaId IS NULL)
LEFT JOIN T_FOGLALKOZAS_OSSZES fog on fog.id=tao.C_FOGLALKOZASID
INNER JOIN T_CSOPORT_OSSZES ON T_CSOPORT_OSSZES.Id = ocs.ID
WHERE
DATEPART(MONTH, tao.C_DATUM) = @Honap
AND tao.C_ORATULAJDONOSID = @pTanarId
AND tao.C_HELYETTESITOTANARID IS NULL
AND tao.TOROLT = 'F'
AND tao.C_TANEVID = @tanevId
AND T_CSOPORT_OSSZES.C_TIPUSA NOT IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId))
AND tao.C_MEGTARTOTT = 'T'
AND (tao.C_PARHUZAMOSORA = 'F' OR tao.C_PARHUZAMOSORA IS NULL)
AND (fog.C_FOGLALKOZASTIPUSA IS NULL OR fog.C_FOGLALKOZASTIPUSA <> 1371)
)a
PIVOT
(
SUM(SumOra)
FOR Nap IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31])
) TanoranKivuli
----ITT ADOM VISSZA A TABLAT=======================================<<<<<<
SELECT * FROM #TanoranKivuli_tmp
SELECT
pedagogusId
,SUM([1]) AS [1], SUM([2]) AS [2], SUM([3]) AS [3], SUM([4]) AS [4], SUM([5]) AS [5], SUM([6]) AS [6], SUM([7]) AS [7], SUM([8]) AS [8], SUM([9]) AS [9], SUM([10]) AS [10],
SUM([11]) AS [11], SUM([12]) AS [12], SUM([13]) AS [13], SUM([14]) AS [14], SUM([15]) AS [15], SUM([16]) AS [16], SUM([17]) AS [17], SUM([18]) AS [18], SUM([19]) AS [19], SUM([20]) AS [20],
SUM([21]) AS [21], SUM([22]) AS [22], SUM([23]) AS [23], SUM([24]) AS [24], SUM([25]) AS [25], SUM([26]) AS [26], SUM([27]) AS [27], SUM([28]) AS [28], SUM([29]) AS [29], SUM([30]) AS [30], SUM([31]) AS [31]
,SUM(Ossz) as Ossz
FROM #TanoranKivuli_tmp
GROUP BY
pedagogusId
--egyéni foglalkozas
SELECT
pedagogusId
,OsztalyCsoportID
,OsztalyCsoportNev
,Honap
,[1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31],
ISNULL([1], 0) + ISNULL([2], 0) + ISNULL([3], 0) + ISNULL([4], 0) + ISNULL([5], 0) +
ISNULL([6], 0) + ISNULL([7], 0) + ISNULL([8], 0) + ISNULL([9], 0) + ISNULL([10], 0) +
ISNULL([11], 0) + ISNULL([12], 0) + ISNULL([13], 0) + ISNULL([14], 0) + ISNULL([15], 0) +
ISNULL([16], 0) + ISNULL([17], 0) + ISNULL([18], 0) + ISNULL([19], 0) + ISNULL([20], 0) +
ISNULL([21], 0) + ISNULL([22], 0) + ISNULL([23], 0) + ISNULL([24], 0) + ISNULL([25], 0) +
ISNULL([26], 0) + ISNULL([27], 0) + ISNULL([28], 0) + ISNULL([29], 0) + ISNULL([30], 0) + ISNULL([31], 0) Ossz
INTO #EgyeniFoglalkozas_tmp
FROM
(
SELECT
tao.C_ORATULAJDONOSID AS pedagogusId
,DATEPART(DAY, tao.C_DATUM) Nap,
DATEPART(MONTH,tao.C_DATUM) Honap,
ocs.C_NEV OsztalyCsoportNev,
tao.C_OSZTALYCSOPORTID oraid,
tao.C_OSZTALYCSOPORTID OsztalyCsoportID
,IIF(tao.C_CSENGETESIRENDORAID IS NOT NULL,
1,
ROUND(CONVERT(FLOAT,(DATEPART(HOUR, C_ORAVEGE - C_ORAKEZDETE) * 60 + DATEPART(MINUTE, C_ORAVEGE - C_ORAKEZDETE))) / IIF(cs.Id IS NULL OR cs.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId)), 45, 60), 2)
)SumOra
FROM T_TANITASIORA_OSSZES tao
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on ocs.id=tao.C_OSZTALYCSOPORTID AND (ocs.C_FELADATKATEGORIAID = @feladatKategoriaId OR @feladatKategoriaId IS NULL)
LEFT JOIN T_CSOPORT_OSSZES cs ON cs.Id = ocs.Id
INNER JOIN T_FOGLALKOZAS_OSSZES fog on fog.id=tao.C_FOGLALKOZASID
WHERE
DATEPART(MONTH, tao.C_DATUM) = @Honap
AND tao.C_ORATULAJDONOSID = @pTanarId
AND fog.C_FOGLALKOZASTIPUSA = 1371
AND tao.C_HELYETTESITOTANARID IS NULL
AND tao.TOROLT = 'F'
AND tao.C_TANEVID = @tanevId
AND tao.C_MEGTARTOTT = 'T'
AND (tao.C_PARHUZAMOSORA = 'F' OR tao.C_PARHUZAMOSORA IS NULL)
)a
PIVOT
(
SUM(SumOra)
FOR Nap IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31])
) EgyeniFoglalkozas
----ITT ADOM VISSZA A TABLAT=======================================<<<<<<
SELECT * FROM #EgyeniFoglalkozas_tmp
SELECT
pedagogusId
,SUM([1]) AS [1], SUM([2]) AS [2], SUM([3]) AS [3], SUM([4]) AS [4], SUM([5]) AS [5], SUM([6]) AS [6], SUM([7]) AS [7], SUM([8]) AS [8], SUM([9]) AS [9], SUM([10]) AS [10],
SUM([11]) AS [11], SUM([12]) AS [12], SUM([13]) AS [13], SUM([14]) AS [14], SUM([15]) AS [15], SUM([16]) AS [16], SUM([17]) AS [17], SUM([18]) AS [18], SUM([19]) AS [19], SUM([20]) AS [20],
SUM([21]) AS [21], SUM([22]) AS [22], SUM([23]) AS [23], SUM([24]) AS [24], SUM([25]) AS [25], SUM([26]) AS [26], SUM([27]) AS [27], SUM([28]) AS [28], SUM([29]) AS [29], SUM([30]) AS [30], SUM([31]) AS [31]
,SUM(Ossz) as Ossz
FROM #EgyeniFoglalkozas_tmp
GROUP BY
pedagogusId
--============================================
--NEVELÉSSEL-OKTATÁSSAL LE NEM KÖTÖTT MUNKAIDŐ
--============================================
--ÖSSZESEN
SELECT
pedagogusId
,Honap
,[1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31],
ISNULL([1],0)+ISNULL([2],0)+ISNULL([3],0)+ISNULL([4],0)+ISNULL([5],0)+
ISNULL([6],0)+ISNULL([7],0)+ISNULL([8],0)+ISNULL([9],0)+ISNULL([10],0)+
ISNULL([11],0)+ISNULL([12],0)+ISNULL([13],0)+ISNULL([14],0)+ISNULL([15],0)+
ISNULL([16],0)+ISNULL([17],0)+ISNULL([18],0)+ISNULL([19],0)+ISNULL([20],0)+
ISNULL([21],0)+ISNULL([22],0)+ISNULL([23],0)+ISNULL([24],0)+ISNULL([25],0)+
ISNULL([26],0)+ISNULL([27],0)+ISNULL([28],0)+ISNULL([29],0)+ISNULL([30],0)+ISNULL([31],0) Ossz
INTO #LeNemKotottMunkaido_tmp
FROM
(
SELECT
T_NEMKOTOTTMUNKAIDO_OSSZES.C_TANARID AS pedagogusId
,DATEPART(DAY, C_KEZDETE) Nap
,DATEPART(MONTH, C_KEZDETE) Honap
,ROUND(CONVERT(FLOAT,(DATEPART(HOUR, C_VEGE - C_KEZDETE) * 60 + DATEPART(MINUTE, C_VEGE - C_KEZDETE))) / 60, 2) Oraszam
FROM T_NEMKOTOTTMUNKAIDO_OSSZES
WHERE
C_MEGTARTOTT = 'T'
AND T_NEMKOTOTTMUNKAIDO_OSSZES.C_TANARID = @pTanarId
AND TOROLT = 'F'
AND DATEPART(MONTH, C_KEZDETE) = @Honap
AND DATEPART(MONTH, C_VEGE) = @Honap
) Orak
PIVOT
(
SUM(Oraszam)
FOR Nap IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31])
) Tevekenyseg
----ITT ADOM VISSZA A TABLAT=======================================<<<<<<
SELECT * FROM #LeNemKotottMunkaido_tmp
SELECT
pedagogusId
,SUM([1]) AS [1], SUM([2]) AS [2], SUM([3]) AS [3], SUM([4]) AS [4], SUM([5]) AS [5], SUM([6]) AS [6], SUM([7]) AS [7], SUM([8]) AS [8], SUM([9]) AS [9], SUM([10]) AS [10],
SUM([11]) AS [11], SUM([12]) AS [12], SUM([13]) AS [13], SUM([14]) AS [14], SUM([15]) AS [15], SUM([16]) AS [16], SUM([17]) AS [17], SUM([18]) AS [18], SUM([19]) AS [19], SUM([20]) AS [20],
SUM([21]) AS [21], SUM([22]) AS [22], SUM([23]) AS [23], SUM([24]) AS [24], SUM([25]) AS [25], SUM([26]) AS [26], SUM([27]) AS [27], SUM([28]) AS [28], SUM([29]) AS [29], SUM([30]) AS [30], SUM([31]) AS [31]
,SUM(Ossz) as Ossz
FROM #LeNemKotottMunkaido_tmp
GROUP BY
pedagogusId
--sorokra (tipusokra) lebontva
SELECT
pedagogusId
,Honap
,TipusId TipusId
,Tipus Tipus
,[1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31],
ISNULL([1],0)+ISNULL([2],0)+ISNULL([3],0)+ISNULL([4],0)+ISNULL([5],0)+
ISNULL([6],0)+ISNULL([7],0)+ISNULL([8],0)+ISNULL([9],0)+ISNULL([10],0)+
ISNULL([11],0)+ISNULL([12],0)+ISNULL([13],0)+ISNULL([14],0)+ISNULL([15],0)+
ISNULL([16],0)+ISNULL([17],0)+ISNULL([18],0)+ISNULL([19],0)+ISNULL([20],0)+
ISNULL([21],0)+ISNULL([22],0)+ISNULL([23],0)+ISNULL([24],0)+ISNULL([25],0)+
ISNULL([26],0)+ISNULL([27],0)+ISNULL([28],0)+ISNULL([29],0)+ISNULL([30],0)+ISNULL([31],0) Ossz
INTO #NemKotottSorok_tmp
FROM
(
SELECT
nemKotottMunkaido.C_TANARID AS pedagogusId
,nemKotottMunkaido.C_TEVEKENYSEGTIPUSA TipusId
,tipusNeve.C_NAME Tipus
,DATEPART(DAY, nemKotottMunkaido.C_KEZDETE) Nap
,DATEPART(MONTH, nemKotottMunkaido.C_KEZDETE) Honap
,ROUND(CONVERT(FLOAT,(DATEPART(HOUR, nemKotottMunkaido.C_VEGE - nemKotottMunkaido.C_KEZDETE) * 60 + DATEPART(MINUTE, nemKotottMunkaido.C_VEGE - nemKotottMunkaido.C_KEZDETE))) / 60, 2) Oraszam
FROM T_NEMKOTOTTMUNKAIDO_OSSZES nemKotottMunkaido
INNER JOIN (SELECT DISTINCT ID, C_NAME FROM T_DICTIONARYITEMBASE) tipusNeve ON tipusNeve.ID=nemKotottMunkaido.C_TEVEKENYSEGTIPUSA
WHERE
C_MEGTARTOTT='T'
AND nemKotottMunkaido.C_TANARID = @pTanarId
AND TOROLT = 'F'
AND DATEPART(MONTH, C_KEZDETE) = @Honap
AND DATEPART(MONTH, C_VEGE) = @Honap
) Orak
PIVOT
(
SUM(Oraszam)
FOR Nap IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31])
) Soronkent
----ITT ADOM VISSZA A TABLAT=======================================<<<<<<
SELECT * FROM #NemKotottSorok_tmp
SELECT
pedagogusId
,SUM([1]) AS [1], SUM([2]) AS [2], SUM([3]) AS [3], SUM([4]) AS [4], SUM([5]) AS [5], SUM([6]) AS [6], SUM([7]) AS [7], SUM([8]) AS [8], SUM([9]) AS [9], SUM([10]) AS [10],
SUM([11]) AS [11], SUM([12]) AS [12], SUM([13]) AS [13], SUM([14]) AS [14], SUM([15]) AS [15], SUM([16]) AS [16], SUM([17]) AS [17], SUM([18]) AS [18], SUM([19]) AS [19], SUM([20]) AS [20],
SUM([21]) AS [21], SUM([22]) AS [22], SUM([23]) AS [23], SUM([24]) AS [24], SUM([25]) AS [25], SUM([26]) AS [26], SUM([27]) AS [27], SUM([28]) AS [28], SUM([29]) AS [29], SUM([30]) AS [30], SUM([31]) AS [31]
,SUM(Ossz) as Ossz
FROM #NemKotottSorok_tmp
GROUP BY
pedagogusId
-- Túlóra
SELECT
pedagogusId
,OsztalyCsoportID
,OsztalyCsoportNev
,Honap
,[1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31],
ISNULL([1], 0) + ISNULL([2], 0) + ISNULL([3], 0) + ISNULL([4], 0) + ISNULL([5], 0) +
ISNULL([6], 0) + ISNULL([7], 0) + ISNULL([8], 0) + ISNULL([9], 0) + ISNULL([10], 0) +
ISNULL([11], 0) + ISNULL([12], 0) + ISNULL([13], 0) + ISNULL([14], 0) + ISNULL([15], 0) +
ISNULL([16], 0) + ISNULL([17], 0) + ISNULL([18], 0) + ISNULL([19], 0) + ISNULL([20], 0) +
ISNULL([21], 0) + ISNULL([22], 0) + ISNULL([23], 0) + ISNULL([24], 0) + ISNULL([25], 0) +
ISNULL([26], 0) + ISNULL([27], 0) + ISNULL([28], 0) + ISNULL([29], 0) + ISNULL([30], 0) + ISNULL([31], 0) Ossz
INTO #Tulora_tmp
FROM
(
SELECT
tao.C_ORATULAJDONOSID AS pedagogusId
,DATEPART(DAY, tao.C_DATUM) Nap
,DATEPART(MONTH,tao.C_DATUM) Honap
,ocs.C_NEV OsztalyCsoportNev
,tao.C_OSZTALYCSOPORTID oraid
,tao.C_OSZTALYCSOPORTID OsztalyCsoportID
,IIF(tao.C_CSENGETESIRENDORAID IS NOT NULL,
1,
ROUND(CONVERT(FLOAT,(DATEPART(HOUR, C_ORAVEGE - C_ORAKEZDETE) * 60 + DATEPART(MINUTE, C_ORAVEGE - C_ORAKEZDETE))) / IIF(cs.Id IS NULL OR cs.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId)), 45, 60), 2)
)SumOra
FROM T_TANITASIORA_OSSZES tao
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on ocs.ID=tao.C_OSZTALYCSOPORTID AND (ocs.C_FELADATKATEGORIAID = @feladatKategoriaId OR @feladatKategoriaId IS NULL)
LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = ocs.ID
LEFT JOIN T_FOGLALKOZAS_OSSZES fog ON fog.ID = C_FOGLALKOZASID
WHERE
DATEPART(MONTH, tao.C_DATUM) = @Honap
AND tao.C_ORATULAJDONOSID = @pTanarId
AND tao.TOROLT = 'F'
AND tao.C_TANEVID = @tanevId
AND tao.C_TULORA = 'T'
AND tao.C_MEGTARTOTT = 'T'
)a
PIVOT
(
SUM(SumOra)
FOR Nap IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31])
) Tulora
----ITT ADOM VISSZA A TABLAT=======================================<<<<<<
SELECT * FROM #Tulora_tmp
SELECT
pedagogusId
,SUM([1]) AS [1], SUM([2]) AS [2], SUM([3]) AS [3], SUM([4]) AS [4], SUM([5]) AS [5], SUM([6]) AS [6], SUM([7]) AS [7], SUM([8]) AS [8], SUM([9]) AS [9], SUM([10]) AS [10],
SUM([11]) AS [11], SUM([12]) AS [12], SUM([13]) AS [13], SUM([14]) AS [14], SUM([15]) AS [15], SUM([16]) AS [16], SUM([17]) AS [17], SUM([18]) AS [18], SUM([19]) AS [19], SUM([20]) AS [20],
SUM([21]) AS [21], SUM([22]) AS [22], SUM([23]) AS [23], SUM([24]) AS [24], SUM([25]) AS [25], SUM([26]) AS [26], SUM([27]) AS [27], SUM([28]) AS [28], SUM([29]) AS [29], SUM([30]) AS [30], SUM([31]) AS [31]
,SUM(Ossz) as Ossz
FROM #Tulora_tmp
GROUP BY
pedagogusId
--==================
--TABLA OSSZESITESEK
--==================
SELECT
pedagogusId,
SUM([1]) O1, SUM([2]) O2, SUM([3]) O3, SUM([4]) O4, SUM([5]) O5, SUM([6]) O6, SUM([7]) O7, SUM([8]) O8, SUM([9]) O9, SUM([10]) O10,
SUM([11]) O11, SUM([12]) O12, SUM([13]) O13, SUM([14]) O14, SUM([15]) O15, SUM([16]) O16, SUM([17]) O17, SUM([18]) O18, SUM([19]) O19, SUM([20]) O20,
SUM([21]) O21, SUM([22]) O22, SUM([23]) O23, SUM([24]) O24, SUM([25]) O25, SUM([26]) O26, SUM([27]) O27, SUM([28]) O28, SUM([29]) O29, SUM([30]) O30, SUM([31]) O31,
SUM(Ossz) AS Ossz
FROM
(
SELECT * FROM #MegtartottOrakHelyesitesek_tmp
UNION ALL
SELECT * FROM #NemSzakszeruHelyetesites_tmp
UNION ALL
SELECT * FROM #OraOsszevonas_tmp
UNION ALL
SELECT * FROM #SzakszeruHelyetesites_tmp
UNION ALL
SELECT * FROM #TanoranKivuli_tmp
UNION ALL
SELECT
pedagogusId
,NULL
,NULL
,Honap
,[1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31],
Ossz
FROM #LeNemKotottMunkaido_tmp
UNION ALL
SELECT * FROM #EgyeniFoglalkozas_tmp
) as TablaOsszesito
GROUP BY
pedagogusId
CREATE TABLE #helyettesitesek (pedagogusId int, Nap int, Honap int, SumOra float, HelyettesitesTipusa int)
INSERT INTO #helyettesitesek
SELECT
tao.C_HELYETTESITOTANARID AS pedagogusId
,DATEPART(DAY, tao.C_DATUM) AS Nap
,DATEPART(MONTH,tao.C_DATUM) AS Honap
,IIF(tao.C_CSENGETESIRENDORAID IS NOT NULL,
1,
ROUND(CONVERT(FLOAT,(DATEPART(HOUR, C_ORAVEGE - C_ORAKEZDETE) * 60 + DATEPART(MINUTE, C_ORAVEGE - C_ORAKEZDETE))) / IIF(cs.Id IS NULL OR cs.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId)), 45, 60), 2)
) AS SumOra
,tao.C_HELYETTESITESTIPUSA AS HelyettesitesTipusa
FROM T_TANITASIORA_OSSZES AS tao
INNER JOIN T_OSZTALYCSOPORT_OSSZES AS ocs ON ocs.id=tao.C_OSZTALYCSOPORTID AND (ocs.C_FELADATKATEGORIAID = @feladatKategoriaId OR @feladatKategoriaId IS NULL)
LEFT JOIN T_CSOPORT_OSSZES AS cs ON cs.ID = ocs.ID
WHERE
tao.C_DATUM < @backDate
AND tao.C_HELYETTESITOTANARID = @pTanarId
AND tao.TOROLT = 'F'
AND tao.C_MEGTARTOTT = 'T'
AND tao.C_TANEVID = @tanevId
AND (tao.C_PARHUZAMOSORA = 'F' OR tao.C_PARHUZAMOSORA IS NULL)
SELECT
pedagogusId,
HelyettesitesTipusa
,[9],[10],[11],[12],[1],[2],[3],[4],[5],[6],[7],[8]
,ISNULL([9], 0) + ISNULL([10], 0) + ISNULL([11], 0) + ISNULL([12], 0) + ISNULL([1], 0) + ISNULL([2], 0) + ISNULL([3], 0) + ISNULL([4], 0) + ISNULL([5], 0) + ISNULL([6], 0) + ISNULL([7], 0) + ISNULL([8], 0) AS Ossz
FROM (
SELECT
pedagogusId
,Honap
,SumOra
,d.C_NAME AS HelyettesitesTipusa
FROM #helyettesitesek AS h
INNER JOIN T_DICTIONARYITEMBASE AS d ON h.HelyettesitesTipusa = d.ID AND d.C_TANEVID = @tanevId AND d.C_INTEZMENYID = @pIntezmenyId AND d.TOROLT = 'F'
)a
PIVOT (
SUM(SumOra) FOR Honap IN ([9],[10],[11],[12],[1],[2],[3],[4],[5],[6],[7],[8])
) piv
END
GO
@@ -0,0 +1,569 @@
-- =============================================
-- Author: Telek Ákos
-- Create date: 2018.01.15.
-- Description: Órarend lekérdezése
-- =============================================
DROP PROCEDURE IF EXISTS [dbo].[sp_GetOrarend]
GO
CREATE PROCEDURE [dbo].[sp_GetOrarend]
@pIntezmenyId int
,@pTanevId int
,@pIdoszakKezdete datetime
,@pIdoszakVege datetime
,@pTanarId int = NULL
,@pIsHelyettesitesNelkul bit = 0
,@pOsztalyCsoportId int = NULL
,@pTanuloId int = NULL
,@pTantargyId int = NULL
,@pTeremId int = NULL
,@pCsakOrarendiOrak bit
,@pIsNapirend bit = 0 /*0 csak orarendi ora, 1 csak napirend, NULL mindkettő*/
,@pFeladatKategoriaId int = NULL
AS
BEGIN /*TODO:Tobb Osztaly*//*OM-1575*/
SET NOCOUNT ON;
DECLARE
@sql nvarchar(max) = ''
,@sqlOrarendiora nvarchar(max) = ''
CREATE TABLE #OsztalyCsoportok (
Id int
,Nev nvarchar(255)
,Oka nvarchar(50)
,IsVegzos char(1)
,IdoszakKezdete datetime
,IdoszakVege datetime
,IsAlapkepzeses char(1)
,INDEX IX1 CLUSTERED(Id, IdoszakKezdete, IdoszakVege)
);
CREATE TABLE #NaptariNapok (
Datum datetime
,HetirendId int
,HetNapjaId int
,OrarendiNap char(1)
,OsztalyCsoportId int
,HetSorszam int
,CsengetesiRendId int
,Nev nvarchar(255)
,Oka nvarchar(50)
,IsVegzos char(1)
,IdoszakKezdete datetime
,IdoszakVege datetime
,IsEgyediNap char(1) COLLATE DATABASE_DEFAULT
,PRIMARY KEY CLUSTERED (OsztalyCsoportId, Datum, HetNapjaId, HetirendId)
);
CREATE TABLE #OrarendTable (
Id int
,ORARENDIID int
,Datum datetime
,Bontott char(1)
,Hetirend int
,HetNapja int
,HetSorszam int
,ErvenyessegKezdete datetime
,ErvenyessegVege datetime
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,TargyNev nvarchar(300)
,TargyNevForMobile nvarchar(300)
,TargykategoriaID int
,Megtartott char(1)
,CsengetesiRendOraID int
,CsengetesiRendID int
,MaxNapiOraszam int
,OsztalyNev nvarchar(255)
,TanevRendOsztalyCsoportId int
,MegjelenesOka nvarchar(300)
,TanarNev nvarchar(255)
,TeremNev nvarchar(255)
,TeremId int
,OraTipus nvarchar(200)
,Hianyzas char(1)
,Keses char(1)
,Ures char(1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar(255)
,HelyettesitesId int
,TanarID int
,AdminAltalKiirt char(1)
,GroupId int
,Tema nvarchar(max)
,TantargyId int
,OsztCsopId int
,INDEX IX1 CLUSTERED(Datum, HetNapja, Oraszam, TanevRendOsztalyCsoportId, TantargyId, TanarID)
);
/* Változók deklarálása */
SET @sql += N'
DECLARE
@KezdoHet int = DATEPART( ISO_WEEK, @pIdoszakKezdete)
,@ZaroHet int = DATEPART( ISO_WEEK, @pIdoszakVege);
DECLARE @VegzosUtolsoTanitasiNap datetime;
SELECT @VegzosUtolsoTanitasiNap = MIN(C_DATUM)
FROM T_TANEVRENDJE_OSSZES
WHERE TOROLT = ''F''
AND C_TANEVID = @pTanevId
AND C_NAPTIPUSA IN (1402, 7600, 7601, 7602, 7603, 1395) --
AND C_OSSZESCSOPORTRAVONATKOZIK = ''T''
DECLARE @IsVegzosEvfolyam char(1)
'
/* A kapcsolódó osztálycsoportok összegyűjtése */
SET @sql += N'
IF @pOsztalyCsoportId IS NOT NULL BEGIN
SELECT @IsVegzosEvfolyam = C_VEGZOSEVFOLYAM
FROM T_OSZTALYCSOPORT_OSSZES
WHERE ID = @pOsztalyCsoportId
INSERT INTO #OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakKezdete, IdoszakVege, IsAlapkepzeses)
SELECT
kocs.ID
,ocs.C_NEV
,'''' AS OKA
,ocs.C_VEGZOSEVFOLYAM
,kocs.Kezdete
,CASE
WHEN ocs.C_VEGZOSEVFOLYAM = ''T'' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND kocs.Vege > @VegzosUtolsoTanitasiNap THEN @VegzosUtolsoTanitasiNap + 1
WHEN kocs.Vege < @pIdoszakVege THEN kocs.Vege
ELSE @pIdoszakVege
END
,IIF(C_FELADATKATEGORIAID = 7553, ''T'', ''F'')
FROM dbo.fnGetKapcsolodoOsztalyCsoportokByDateRange(@pOsztalyCsoportId, @pIdoszakKezdete, @pIdoszakVege, @pIntezmenyId, @pTanevId) kocs
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = kocs.ID AND ocs.TOROLT = ''F''
END
ELSE BEGIN
IF @pTanuloId IS NOT NULL BEGIN
SELECT @IsVegzosEvfolyam = ocs.C_VEGZOSEVFOLYAM
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
WHERE EXISTS (SELECT 1 FROM T_OSZTALY_OSSZES o WHERE o.ID = ocs.ID)
AND tcs.C_TANULOID = @pTanuloId AND tcs.TOROLT = ''F''
AND tcs.C_BELEPESDATUM <= @pIdoszakVege
AND (tcs.C_KILEPESDATUM > @pIdoszakKezdete OR tcs.C_KILEPESDATUM IS NULL)
INSERT INTO #OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakKezdete, IdoszakVege, IsAlapkepzeses)
SELECT
tcs.C_OSZTALYCSOPORTID
,ocs.C_NEV
,'''' AS Oka
,@IsVegzosEvfolyam
,IIF(tcs.C_BELEPESDATUM < @pIdoszakKezdete, @pIdoszakKezdete, tcs.C_BELEPESDATUM)
,CASE
WHEN @pIdoszakVege <= @VegzosUtolsoTanitasiNap AND @pIdoszakVege <= ISNULL(tcs.C_KILEPESDATUM, @pIdoszakVege)
THEN @pIdoszakVege
WHEN @IsVegzosEvfolyam = ''T'' AND @VegzosUtolsoTanitasiNap <= @pIdoszakVege AND @VegzosUtolsoTanitasiNap <= ISNULL(tcs.C_KILEPESDATUM, @pIdoszakVege)
THEN @VegzosUtolsoTanitasiNap+1
ELSE ISNULL(tcs.C_KILEPESDATUM, @pIdoszakVege)
END
,IIF(C_FELADATKATEGORIAID = 7553, ''T'', ''F'')
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND ocs.TOROLT = ''F''
WHERE tcs.C_TANULOID = @pTanuloId AND tcs.TOROLT = ''F''
AND tcs.C_BELEPESDATUM <= @pIdoszakVege
AND (tcs.C_KILEPESDATUM > @pIdoszakKezdete OR tcs.C_KILEPESDATUM IS NULL)
' + IIF(@pFeladatKategoriaId IS NULL, '', 'AND ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId') + '
END'
SET @sql += N'
--Performancia noveles miatt
ELSE IF @pTanarId IS NOT NULL BEGIN
INSERT INTO #OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakKezdete, IdoszakVege, IsAlapkepzeses)
SELECT
ID
,ocs.C_NEV
,''''
,ocs.C_VEGZOSEVFOLYAM
,@pIdoszakKezdete
,IIF(ocs.C_VEGZOSEVFOLYAM = ''T'' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND @pIdoszakVege > @VegzosUtolsoTanitasiNap, @VegzosUtolsoTanitasiNap + 1, @pIdoszakVege)
,IIF(C_FELADATKATEGORIAID = 7553, ''T'', ''F'')
FROM (
SELECT
oo.C_OSZTALYCSOPORTID
FROM T_ORARENDIORA_OSSZES oo
WHERE oo.C_TANARID = @pTanarId
-- AND oo.C_ORAERVENYESSEGKEZDETE <= @pIdoszakVege
-- AND oo.C_ORAERVENYESSEGVEGE >= @pIdoszakKezdete
AND oo.TOROLT = ''F''
UNION
SELECT
oo.C_OSZTALYCSOPORTID
FROM T_HELYETTESITESIIDOSZAK_OSSZES hi
INNER JOIN T_ORARENDIORA_OSSZES oo ON oo.ID = hi.C_HELYETTESITETTORARENDID AND oo.TOROLT = ''F''
WHERE hi.C_HELYETTESTANAROKID = @pTanarId
AND hi.C_HELYETTESITESNAPJA >= @pIdoszakKezdete
AND hi.C_HELYETTESITESNAPJA < @pIdoszakVege
AND hi.TOROLT = ''F''
UNION
SELECT
tno.C_OSZTALYCSOPORTID
FROM T_TANITASIORA_OSSZES tno
WHERE tno.C_HELYETTESITOTANARID = @pTanarId
AND tno.C_DATUM < @pIdoszakVege
AND tno.C_DATUM >= @pIdoszakKezdete
AND tno.TOROLT = ''F''
UNION
SELECT
tno.C_OSZTALYCSOPORTID
FROM T_TANITASIORA_OSSZES tno
WHERE tno.C_TANARID = @pTanarId
AND tno.C_DATUM < @pIdoszakVege
AND tno.C_DATUM >= @pIdoszakKezdete
AND tno.TOROLT = ''F''
) x
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = x.C_OSZTALYCSOPORTID
' + IIF(@pFeladatKategoriaId IS NULL, '', 'WHERE ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId') + '
END
--Performancia noveles miatt
ELSE BEGIN
INSERT INTO #OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakKezdete, IdoszakVege, IsAlapkepzeses)
SELECT ID, C_NEV, '''' AS Oka, C_VEGZOSEVFOLYAM, @pIdoszakKezdete
,IIF(C_VEGZOSEVFOLYAM = ''T'' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND @pIdoszakVege > @VegzosUtolsoTanitasiNap, @VegzosUtolsoTanitasiNap + 1, @pIdoszakVege)
,IIF(C_FELADATKATEGORIAID = 7553, ''T'', ''F'')
FROM T_OSZTALYCSOPORT_OSSZES ocs
WHERE ocs.C_TANEVID = @pTanevId
AND ocs.TOROLT = ''F''
' + IIF(@pFeladatKategoriaId IS NULL, '', 'AND ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId') + '
END
END'
SET @sql += N'
UPDATE ocs SET
ocs.IdoszakVege = NewVegeDatum
FROM #OsztalyCsoportok ocs
INNER JOIN (
SELECT MIN(tr.C_DATUM) + 1 AS NewVegeDatum, ocstr.C_OSZTALYCSOPORTID
FROM T_TANEVRENDJE_OSSZES tr
INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON ocstr.C_TANEVRENDJEID = tr.ID
WHERE tr.C_OSSZESCSOPORTRAVONATKOZIK = ''F''
AND tr.TOROLT = ''F''
AND tr.C_NAPTIPUSA IN (1402, 7600, 7601, 7602, 7603)
AND tr.C_TANEVID = @pTanevId
GROUP BY ocstr.C_OSZTALYCSOPORTID
) x ON x.C_OSZTALYCSOPORTID = ocs.Id
WHERE ocs.IsVegzos = ''T''
'
/* A naptári napok összegyűjtése tanév rendje alapján */
SET @sql += N'
INSERT INTO #NaptariNapok (
Datum
,HetirendId
,HetNapjaId
,OrarendiNap
,OsztalyCsoportId
,HetSorszam
,CsengetesiRendId
,Nev
,Oka
,IsVegzos
,IdoszakKezdete
,IdoszakVege
,IsEgyediNap
) SELECT
nn.Datum
,ISNULL(tr.HetirendId, nn.HetirendId) AS HetirendId
,ISNULL(tr.HetNapjaId, nn.HetNapjaId) AS HetNapjaId
,ISNULL(tr.OrarendiNap, nn.OrarendiNap) AS OrarendiNap
,nn.OsztalyCsoportId
,ISNULL(tr.HetSorszam, nn.HetSorszam) AS HetSorszam
,ISNULL(tr.CsengetesiRendId, nn.CsengetesiRendId) AS CsengetesiRendId
,ISNULL(tr.Nev, nn.Nev)
,ISNULL(tr.Oka, nn.Oka)
,ISNULL(tr.IsVegzos, nn.IsVegzos)
,ISNULL(tr.IdoszakKezdete, nn.IdoszakKezdete)
,ISNULL(tr.IdoszakVege, nn.IdoszakVege)
,COALESCE(tr.IsEgyediNap, nn.IsEgyediNap, ''F'')
FROM (
SELECT
nn.C_NAPDATUMA AS Datum
,nn.C_HETIREND AS HetirendId
,nn.C_HETNAPJA AS HetNapjaId
,nn.C_ORARENDINAP AS OrarendiNap
,ocs.ID AS OsztalyCsoportId
,nn.C_HETSORSZAMA AS HetSorszam
,tr.C_CSENGETESIRENDID AS CsengetesiRendId
,ocs.Nev
,ocs.Oka
,ocs.IsVegzos
,ocs.IdoszakKezdete
,ocs.IdoszakVege
,tr.C_EGYEDINAP AS IsEgyediNap
,ocs.IsAlapkepzeses
FROM T_NAPTARINAP_OSSZES nn
INNER JOIN #OsztalyCsoportok ocs ON ocs.IdoszakKezdete <= nn.C_NAPDATUMA AND ocs.IdoszakVege > nn.C_NAPDATUMA
LEFT JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND nn.C_INTEZMENYID = tr.C_INTEZMENYID AND nn.C_TANEVID = tr.C_TANEVID AND tr.TOROLT = ''F'' AND tr.C_OSSZESCSOPORTRAVONATKOZIK = ''T''
WHERE nn.TOROLT = ''F''
AND nn.C_INTEZMENYID = @pIntezmenyId AND nn.C_TANEVID = @pTanevId
) nn
LEFT JOIN (
SELECT
nn.C_NAPDATUMA AS Datum
,tr.C_HETIREND AS HetirendId
,tr.C_HETNAPJA AS HetNapjaId
,tr.C_ORARENDINAP AS OrarendiNap
,ocstr.C_OSZTALYCSOPORTID AS OsztalyCsoportId
,nn.C_HETSORSZAMA AS HetSorszam
,tr.C_CSENGETESIRENDID AS CsengetesiRendId
,ocs.Nev
,ocs.Oka
,ocs.IsVegzos
,ocs.IdoszakKezdete
,ocs.IdoszakVege
,tr.C_EGYEDINAP AS IsEgyediNap
,ocs.IsAlapkepzeses
FROM T_NAPTARINAP_OSSZES nn
INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND nn.C_INTEZMENYID = tr.C_INTEZMENYID AND nn.C_TANEVID = tr.C_TANEVID AND tr.TOROLT = ''F'' AND tr.C_OSSZESCSOPORTRAVONATKOZIK = ''F''
INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID
INNER JOIN #OsztalyCsoportok ocs ON ocs.Id = ocstr.C_OSZTALYCSOPORTID AND ocs.IdoszakKezdete <= nn.C_NAPDATUMA AND ocs.IdoszakVege > nn.C_NAPDATUMA
WHERE nn.TOROLT = ''F''
AND nn.C_INTEZMENYID = @pIntezmenyId AND nn.C_TANEVID = @pTanevId
AND nn.C_NAPDATUMA >= @pIdoszakKezdete AND nn.C_NAPDATUMA < ocs.IdoszakVege
) tr ON nn.Datum = tr.datum AND nn.OsztalyCsoportId = tr.OsztalyCsoportId
WHERE (ISNULL(tr.OrarendiNap, nn.OrarendiNap) = ''T'' OR ISNULL(tr.IsAlapkepzeses, nn.IsAlapkepzeses) = ''F'')
'
/* Órarend lekérdezés */
IF @pCsakOrarendiOrak = 0 BEGIN
SET @sql += N'
INSERT INTO #OrarendTable
'
END
SET @sqlOrarendiora += N'
SELECT DISTINCT
oo.ID AS Id
,oo.ID AS ORARENDIID
,nn.Datum AS Datum
,oo.C_BONTOTT AS Bontott
,oo.C_HETIREND AS Hetirend
,oo.C_HETNAPJA AS HetNapja
,nn.HetSorszam AS HetSorszam
,oo.C_ORAERVENYESSEGKEZDETE AS ErvenyessegKezdete
,oo.C_ORAERVENYESSEGVEGE AS ErvenyessegVege
,nn.Datum + oo.C_ORAKEZDETE AS OraKezdete
,nn.Datum + oo.C_ORAVEGE AS OraVege
,oo.C_ORASZAM AS Oraszam
,ISNULL(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNev
,COALESCE(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNevForMobile
,tt.C_TARGYKATEGORIA AS TargykategoriaID
,''F'' AS Megtartott
,csro.ID AS CsengetesiRendOraID
,csro.C_CSENGETESIRENDID AS CsengetesiRendID
,MAX(oo.C_ORASZAM) OVER() AS MaxNapiOraszam
,nn.Nev AS OsztalyNev
,nn.OsztalyCsoportId AS TanevRendOsztalyCsoportId
,nn.OKA AS MegjelenesOka
,tanar.C_NYOMTATASINEV AS TanarNev
,terem.C_NEV AS TeremNev
,terem.ID AS TeremId
,''OrarendiOra'' AS OraTipus
,''F'' AS Hianyzas
,''F'' AS Keses
,''F'' AS Ures
,hisz.C_HELYETTESTANAROKID AS HelyettesitoTanarID
,helyettes.C_NYOMTATASINEV AS HelyettesitoTanarNev
,hisz.Id AS HelyettesitesId
,tanar.ID AS TanarID
,NULL AS AdminAltalKiirt
,oo.C_ORARENDIORAGROUPID AS GroupId
,NULL AS Tema
,oo.C_TANTARGYID AS TantargyId
,oo.C_OSZTALYCSOPORTID AS OsztCsopId
FROM T_ORARENDIORA_OSSZES oo
INNER JOIN #OsztalyCsoportok ocs ON ocs.ID = oo.C_OSZTALYCSOPORTID
INNER JOIN #NaptariNapok nn ON nn.HetnapjaId = oo.C_HETNAPJA
AND ocs.ID = nn.OsztalyCsoportId
AND nn.Datum >= oo.C_ORAERVENYESSEGKEZDETE
AND ((nn.Datum < oo.C_ORAERVENYESSEGVEGE) OR (oo.C_ORAERVENYESSEGKEZDETE = oo.C_ORAERVENYESSEGVEGE AND nn.Datum = oo.C_ORAERVENYESSEGKEZDETE))
AND (oo.C_HETIREND = 1554 OR nn.HetirendId = oo.C_HETIREND)
AND C_TANEVID = @pTanevId
AND oo.C_EGYEDINAP = nn.IsEgyediNap
INNER JOIN T_TANTARGY_OSSZES tt ON tt.ID = oo.C_TANTARGYID AND tt.TOROLT = ''F''
INNER JOIN T_FELHASZNALO_OSSZES tanar ON tanar.ID = oo.C_TANARID AND tanar.TOROLT = ''F''
LEFT JOIN T_TEREM_OSSZES terem ON terem.id = oo.C_TEREMID AND terem.TOROLT = ''F''
LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES hisz ON oo.ID = hisz.C_HELYETTESITETTORARENDID AND hisz.C_HELYETTESITESNAPJA = nn.Datum AND hisz.TOROLT = ''F''
LEFT JOIN T_FELHASZNALO_OSSZES helyettes ON hisz.C_HELYETTESTANAROKID = helyettes.ID AND helyettes.TOROLT = ''F''
' + IIF(@pIsNapirend = 0, 'INNER', 'LEFT') + ' JOIN T_CSENGETESIRENDORA_OSSZES csro ON csro.C_CSENGETESIRENDID = ISNULL(nn.CsengetesiRendId, oo.C_CSENGETESIRENDID) AND csro.C_ORASZAM = oo.C_ORASZAM AND csro.TOROLT = ''F''
WHERE oo.TOROLT = ''F''
' + CASE WHEN @pIsNapirend = 1 THEN N'AND oo.C_CSENGETESIRENDID IS NULL ' WHEN @pIsNapirend IS NULL THEN N'AND ((oo.C_CSENGETESIRENDID IS NOT NULL AND csro.C_CSENGETESIRENDID IS NOT NULL) OR (oo.C_CSENGETESIRENDID IS NULL AND csro.C_CSENGETESIRENDID IS NULL))' ELSE '' END + '
AND oo.C_TANEVID = @pTanevId
' + IIF(@pTantargyId IS NULL, N'', N'AND oo.C_TANTARGYID = @pTantargyId') + N'
' + IIF(@pTeremId IS NULL, N'', 'AND oo.C_TEREMID = @pTeremId')
SET @sql += @sqlOrarendiOra + N'
' + IIF(@pTanarId IS NULL, N'', 'AND oo.C_TANARID = @pTanarId')
IF @pTanarId IS NOT NULL AND @pIsHelyettesitesNelkul = 0 BEGIN
SET @sql += N'
UNION ALL
' + @sqlOrarendiOra + '
AND hisz.C_HELYETTESTANAROKID = @pTanarId
AND hisz.C_HELYETTESITESNAPJA >= @pIdoszakKezdete AND hisz.C_HELYETTESITESNAPJA < ocs.IdoszakVege
'
END
IF @pCsakOrarendiOrak = 0 BEGIN
/* TanításiÓra lekérdezés */
SET @sql += N'
SELECT
ISNULL(tn.Id, oo.Id) AS Id
,ISNULL(tn.ORARENDIID, oo.ORARENDIID) AS ORARENDIID
,ISNULL(tn.Datum, oo.Datum) AS Datum
,ISNULL(tn.Bontott, oo.Bontott) AS Bontott
,ISNULL(tn.Hetirend, oo.Hetirend) AS Hetirend
,ISNULL(tn.HetNapja, oo.HetNapja) AS HetNapja
,ISNULL(tn.HetSorszam, oo.HetSorszam) AS HetSorszam
,IIF(tn.Id IS NOT NULL, NULL, oo.ErvenyessegKezdete) AS ErvenyessegKezdete
,IIF(tn.Id IS NOT NULL, NULL, oo.ErvenyessegVege) AS ErvenyessegVege
,ISNULL(tn.OraKezdete, oo.OraKezdete) AS OraKezdete
,ISNULL(tn.OraVege, oo.OraVege) AS OraVege
,ISNULL(tn.Oraszam, oo.Oraszam) AS Oraszam
,ISNULL(tn.TargyNev, oo.TargyNev) AS TargyNev
,ISNULL(tn.TargyNevForMobile, oo.TargyNevForMobile) AS TargyNevForMobile
,ISNULL(tn.TargykategoriaID, oo.TargykategoriaID) AS TargykategoriaID
,ISNULL(tn.Megtartott, oo.Megtartott) AS Megtartott
,ISNULL(tn.CsengetesiRendOraID, oo.CsengetesiRendOraID) AS CsengetesiRendOraID
,ISNULL(tn.CsengetesiRendID, oo.CsengetesiRendID) AS CsengetesiRendID
,ISNULL(tn.MaxNapiOraszam, oo.MaxNapiOraszam) AS MaxNapiOraszam
,ISNULL(tn.OsztalyNev, oo.OsztalyNev) AS OsztalyNev
,ISNULL(tn.TanevRendOsztalyCsoportId, oo.TanevRendOsztalyCsoportId) AS TanevRendOsztalyCsoportId
,ISNULL(tn.MegjelenesOka, oo.MegjelenesOka) AS MegjelenesOka
,ISNULL(tn.TanarNev, oo.TanarNev) AS TanarNev
,ISNULL(tn.TeremNev, oo.TeremNev) AS TeremNev
,ISNULL(tn.TeremId, oo.TeremId) AS TeremId
,ISNULL(tn.OraTipus, oo.OraTipus) AS OraTipus
,ISNULL(tn.Hianyzas, oo.Hianyzas) AS Hianyzas
,ISNULL(tn.Keses, oo.Keses) AS Keses
,ISNULL(tn.Ures, oo.Ures) AS Ures
,ISNULL(tn.HelyettesitoTanarID, oo.HelyettesitoTanarID) AS HelyettesitoTanarID
,ISNULL(tn.HelyettesitoTanarNev, oo.HelyettesitoTanarNev) AS HelyettesitoTanarNev
,oo.HelyettesitesId AS HelyettesitesId
,ISNULL(tn.TanarID, oo.TanarID) AS TanarID
,ISNULL(tn.AdminAltalKiirt, oo.AdminAltalKiirt) AS AdminAltalKiirt
,ISNULL(tn.GroupId, oo.GroupId) AS GroupId
,tn.Tema AS Tema
,ISNULL(tn.TantargyId, oo.TantargyId) AS TantargyId
,ISNULL(tn.OsztCsopId, oo.OsztCsopId) AS OsztCsopId
FROM #OrarendTable oo
'
SET @sql += N'
FULL JOIN (
SELECT
tao.ID AS Id
,NULL AS ORARENDIID
,tao.C_DATUM AS Datum
,tao.C_BONTOTT AS Bontott
,1554 AS Hetirend
,tao.C_HETNAPJA AS HetNapja
,tao.C_HETSORSZAMA AS HetSorszam
,tao.C_ORAKEZDETE AS OraKezdete
,tao.C_ORAVEGE AS OraVege
,tao.C_ORASZAM AS Oraszam
,ISNULL(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNev
,COALESCE(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNevForMobile
,tt.C_TARGYKATEGORIA AS TargykategoriaID
,tao.C_MEGTARTOTT AS Megtartott
,tao.C_CSENGETESIRENDORAID AS CsengetesiRendOraID
,tao.C_CSENGETESIRENDID AS CsengetesiRendID
,MAX(tao.C_ORASZAM) OVER() AS MaxNapiOraszam
,oo.Nev AS OsztalyNev
,tao.C_OSZTALYCSOPORTID AS TanevRendOsztalyCsoportId
,'''' AS MegjelenesOka
,tanar.C_NYOMTATASINEV AS TanarNev
,terem.C_NEV AS TeremNev
,terem.ID as TeremId
,''TanitasiOra'' AS OraTipus
,' + IIF(@pTanuloId IS NULL, N'''F''', N'IIF(mh.ID IS NULL, ''F'', ''T'')') + N' AS Hianyzas
,' + IIF(@pTanuloId IS NULL, N'''F''', N'IIF(mk.ID IS NULL, ''F'', ''T'')') + N' AS Keses
,' + IIF(@pTanuloId IS NULL, N'''F''', N'IIF(mu.ID IS NULL, ''F'', ''T'')') + N' AS Ures
,helyettes.ID HelyettesitoTanarID
,helyettes.C_NYOMTATASINEV HelyettesitoTanarNev
,tanar.ID AS TanarID
,tao.C_ADMINALTALKIIRT AS AdminAltalKiirt
,tao.C_ORARENDIORAGROUPID AS GroupId
,tao.C_TEMA AS Tema
,tao.C_TANTARGYID AS TantargyId
,tao.C_OSZTALYCSOPORTID AS OsztCsopId
FROM T_TANITASIORA_OSSZES tao
INNER JOIN #OsztalyCsoportok oo ON tao.C_OSZTALYCSOPORTID = oo.Id AND tao.C_DATUM >= oo.IdoszakKezdete AND tao.C_DATUM < oo.IdoszakVege
INNER JOIN T_TANTARGY_OSSZES tt ON tao.C_TANTARGYID = tt.ID
INNER JOIN T_FELHASZNALO_OSSZES tanar ON tao.C_TANARID = tanar.ID
LEFT JOIN T_FELHASZNALO_OSSZES helyettes ON helyettes.ID = tao.C_HELYETTESITOTANARID
INNER JOIN T_TEREM_OSSZES terem ON terem.ID = tao.C_TEREMID
'
IF @pTanuloId IS NOT NULL BEGIN
SET @sql += N'
LEFT JOIN T_TANULOMULASZTAS_OSSZES mh ON mh.C_TANITASIORAKID = tao.ID AND mh.C_ORATANULOIID = @pTanuloId AND mh.C_TIPUS = 1500 AND mh.TOROLT = ''F''
LEFT JOIN T_TANULOMULASZTAS_OSSZES mk ON mk.C_TANITASIORAKID = tao.ID AND mk.C_ORATANULOIID = @pTanuloId AND mk.C_TIPUS = 1499 AND mk.TOROLT = ''F''
LEFT JOIN T_TANULOMULASZTAS_OSSZES mu ON mu.C_TANITASIORAKID = tao.ID AND mu.C_ORATANULOIID = @pTanuloId AND mu.C_TIPUS = 1817 AND mu.TOROLT = ''F''
'
END
SET @sql += N'
WHERE tao.TOROLT = ''F'' AND tao.C_TANEVID = @pTanevId
--AND tao.C_DATUM >= @pIdoszakKezdete AND tao.C_DATUM < @pIdoszakVege
' + CASE @pIsNapirend WHEN 1 THEN N'AND tao.C_CSENGETESIRENDID IS NULL ' WHEN 0 THEN 'AND tao.C_CSENGETESIRENDID IS NOT NULL ' ELSE '' END + '
' + IIF(@pTanarId IS NULL, N'', IIF(@pIsHelyettesitesNelkul = 0, 'AND (tao.C_TANARID = @pTanarId OR tao.C_HELYETTESITOTANARID = @pTanarId)', 'AND tao.C_TANARID = @pTanarId')) + '
' + IIF(@pTantargyId IS NULL, N'', 'AND tao.C_TANTARGYID = @pTantargyId') + '
' + IIF(@pTeremId IS NULL, N'', 'AND tao.C_TEREMID = @pTeremId') + '
) tn ON tn.Datum = oo.Datum
AND tn.HetNapja = oo.HetNapja
' + CASE @pIsNapirend WHEN 1 THEN N'AND tn.OraKezdete = oo.OraKezdete AND tn.OraVege = oo.OraVege ' WHEN 0 THEN N'AND tn.Oraszam = oo.Oraszam ' ELSE N'AND ((tn.CsengetesiRendID IS NULL AND tn.OraKezdete = oo.OraKezdete AND tn.OraVege = oo.OraVege) OR (tn.CsengetesiRendID IS NOT NULL AND tn.Oraszam = oo.Oraszam)) ' END + '
AND tn.TanevRendOsztalyCsoportId = oo.TanevRendOsztalyCsoportId
AND tn.TantargyId = oo.TantargyId
AND tn.TanarID = oo.TanarID
'
END
EXEC sp_executesql @sql, N'
@pIntezmenyId int
,@pTanevId int
,@pIdoszakKezdete datetime
,@pIdoszakVege datetime
,@pTanarId int
,@pIsHelyettesitesNelkul bit
,@pOsztalyCsoportId int
,@pTanuloId int
,@pTantargyId int
,@pTeremId int
,@pCsakOrarendiOrak bit
,@pIsNapirend bit
,@pFeladatKategoriaId int'
,@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pIdoszakKezdete = @pIdoszakKezdete
,@pIdoszakVege = @pIdoszakVege
,@pTanarId = @pTanarId
,@pIsHelyettesitesNelkul = @pIsHelyettesitesNelkul
,@pOsztalyCsoportId = @pOsztalyCsoportId
,@pTanuloId = @pTanuloId
,@pTantargyId = @pTantargyId
,@pTeremId = @pTeremId
,@pCsakOrarendiOrak = @pCsakOrarendiOrak
,@pIsNapirend = @pIsNapirend
,@pFeladatKategoriaId = @pFeladatKategoriaId
END
GO
@@ -0,0 +1,212 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('sp_GetOrarendKereszttabla_Osztaly') IS NOT NULL BEGIN
DROP PROCEDURE sp_GetOrarendKereszttabla_Osztaly
END
GO
CREATE PROCEDURE sp_GetOrarendKereszttabla_Osztaly
@tanevId INT,
@aktivTanevId INT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @UtolsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA=1395 AND C_TANEVID=@tanevid AND TOROLT='F')
,@HetEleje DATE
,@HetVege DATE
IF (@tanevId = @AktivtanevId AND GETDATE() <= @UtolsoNap)
BEGIN
SET @HetEleje = (SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, NH.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid)
SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid)
END
ELSE
BEGIN
SET @HetEleje = (SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
END
CREATE TABLE #KapcsolodoCsoportok (OsztalyId INT, OsztalyCsoportId INT)
INSERT INTO #KapcsolodoCsoportok
SELECT DISTINCT
o.ID Osztaly
,k.ID KapcsolodoCsoport
FROM T_OSZTALY_OSSZES o
CROSS APPLY fnGetKapcsolodoOsztalycsoportokByDate(ID, @HetEleje, @HetVege) k
WHERE
TOROLT = 'F'
AND C_ALTANEVID = @tanevId
DECLARE @OsztalyhozKapcsolodoOsszesOrarendiora TABLE (OsztalyId INT, OsztalyCsoportId INT, OrarendiOraId INT, TantargyId INT, TanarId INT, TeremId INT, HetirendId INT, HetnapjaId INT, Oraszam INT, OraErvenyessegKezdete DATE, OraErvenyessegVege DATE)
INSERT INTO @OsztalyhozKapcsolodoOsszesOrarendiora
SELECT
k.OsztalyId
,k.OsztalyCsoportId
,o.ID
,C_TANTARGYID
,C_TANARID
,C_TEREMID
,C_HETIREND
,C_HETNAPJA
,C_ORASZAM
,C_ORAERVENYESSEGKEZDETE
,C_ORAERVENYESSEGVEGE
FROM #KapcsolodoCsoportok k
LEFT JOIN T_ORARENDIORA_OSSZES o ON o.C_OSZTALYCSOPORTID = k.OsztalyCsoportId
WHERE
TOROLT = 'F'
DECLARE @temp TABLE (OsztalyId INT, OsztalyCsoportNev NVARCHAR(MAX), OsztalyNev NVARCHAR(MAX), HetirendId INT, HetirendNev NVARCHAR(MAX), HetnapjaId INT, Oraszam INT, TantargyNev NVARCHAR(MAX), PedagogusNev NVARCHAR(MAX), TeremNev NVARCHAR(MAX))
INSERT INTO @temp
SELECT
OrarendiOra.OsztalyId OsztalyId
,ocs.C_NEV OsztalyCsoportNev
,osztalyNev.C_NEV OsztalyNev
,OrarendiOra.HetirendId HetirendId
,hetirend.C_NAME HetirendNev
,OrarendiOra.HetnapjaId HetnapjaId
,OrarendiOra.Oraszam Oraszam
,ISNULL(Tantargy.C_NEVNYOMTATVANYBAN, Tantargy.C_NEV) TantargyNev
,Pedagogus.C_NYOMTATASINEV PedagogusNev
,Terem.C_NEV TeremNev
FROM @OsztalyhozKapcsolodoOsszesOrarendiora OrarendiOra
INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = OrarendiOra.TantargyId
INNER JOIN T_FELHASZNALO_OSSZES Pedagogus ON Pedagogus.Id = OrarendiOra.TanarId
INNER JOIN T_TEREM_OSSZES Terem ON Terem.Id = OrarendiOra.TeremId
INNER JOIN T_DICTIONARYITEMBASE_OSSZES hetirend ON hetirend.Id = OrarendiOra.HetirendId AND hetirend.C_TANEVID = @tanevId
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = OrarendiOra.OsztalyCsoportId
INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyNev ON osztalyNev.ID = OrarendiOra.OsztalyId
WHERE
OrarendiOra.OraErvenyessegKezdete <= @Hetvege
AND OrarendiOra.OraErvenyessegVege >= @Heteleje
DECLARE @Hetirendek TABLE (Id INT)
INSERT INTO @Hetirendek
SELECT DISTINCT HetirendId FROM @temp
DECLARE @OsszesOra TABLE (OsztalyId INT, Hetirend INT, Nap INT, Oraszam INT)
INSERT INTO @OsszesOra
SELECT DISTINCT Osztaly, oo.Id, Nap.Nap , OraSzam.OraSzam FROM @Hetirendek oo
CROSS JOIN (SELECT DISTINCT OsztalyId FROM #KapcsolodoCsoportok) Osztaly(Osztaly)
CROSS JOIN (SELECT DISTINCT Oraszam FROM @temp) OraSzam (OraSzam)
CROSS JOIN (VALUES (1408),(1409),(1410),(1411),(1412),(1413)) Nap (Nap)
DECLARE @TenylegesOra TABLE (OsztalyId INT, Nap INT, OraSzam INT, Foglalkozas NVARCHAR(MAX))
INSERT INTO @TenylegesOra
SELECT
OsztalyId
,HetnapjaId
,Oraszam
,STUFF((SELECT DISTINCT ', ' + CAST(bveg.TantargyNev+' ('+IIF(bveg.OsztalyCsoportNev <> bveg.OsztalyNev, bveg.OsztalyCsoportNev +', ', '') +bveg.PedagogusNev+', '+bveg.TeremNev+', ' +HetirendNev+')' AS VARCHAR(max))
FROM @temp bveg
WHERE
bveg.HetnapjaId=veg.HetnapjaId
AND bveg.Oraszam=veg.Oraszam
AND (bveg.HetirendId=HetirendId OR bveg.HetirendId=1554)
AND bveg.OsztalyId = veg.OsztalyId
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,' ') Foglalkozasok
FROM @temp veg
/*Végleges órarend*/
CREATE TABLE #Orarend (OsztalyId INT, OsztalyNev NVARCHAR(MAX), Ora INT, Nap INT, Foglalkozas NVARCHAR(MAX))
INSERT INTO #Orarend
SELECT
OsszesOra.OsztalyId
,ocs.C_NEV
,OsszesOra.Oraszam
,OsszesOra.Nap
,TenylegesOra.Foglalkozas
FROM @OsszesOra OsszesOra
LEFT JOIN @TenylegesOra TenylegesOra ON OsszesOra.Nap=TenylegesOra.Nap AND OsszesOra.Oraszam=TenylegesOra.Oraszam AND TenylegesOra.OsztalyId = OsszesOra.OsztalyId
LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = OsszesOra.OsztalyId
ORDER BY OsszesOra.Hetirend, OsszesOra.Nap, OsszesOra.Oraszam
--------------------------------------------------------------------------------------------------------------
CREATE TABLE #Napok (Nev NVARCHAR(MAX), Oraszam INT, Rendez INT)
INSERT INTO #Napok
SELECT DISTINCT
*
, CASE
WHEN nap = 'hetfo' THEN 1
WHEN nap = 'kedd' THEN 2
WHEN nap = 'szerda' THEN 3
WHEN nap = 'csutortok' THEN 4
WHEN nap = 'pentek' THEN 5
END
FROM (VALUES ('hetfo'), ('kedd'), ('szerda'), ('csutortok'), ('pentek')) AS napok(nap)
CROSS JOIN (SELECT DISTINCT Oraszam FROM @temp) OraSzam (OraSzam)
DECLARE @Oraszamok NVARCHAR(MAX),
@OraszamokAlias NVARCHAR(MAX)
SELECT @Oraszamok = ISNULL(@Oraszamok + ', ', '') + '[' + CAST(Oraszam AS NVARCHAR(MAX)) + ']'
FROM (SELECT DISTINCT Oraszam FROM @temp ) o
SELECT @OraszamokAlias = ISNULL(@OraszamokAlias + ', ', '') + Nev +'.' + '[' + CAST(Oraszam AS NVARCHAR(MAX)) + ']' FROM #Napok ORDER BY Rendez, Oraszam
DECLARE @sql NVARCHAR(MAX)
SET @sql = '
SELECT DISTINCT
ocs.C_NEV OsztalyNev,
' + @OraszamokAlias + '
FROM #KapcsolodoCsoportok k
INNER JOIN (
SELECT
OsztalyId
,'+ @Oraszamok +'
FROM #Orarend
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
WHERE Nap = 1408
) hetfo ON hetfo.OsztalyId = k.OsztalyId
INNER JOIN (
SELECT
OsztalyId
,'+ @Oraszamok +'
FROM #Orarend
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
WHERE Nap = 1409
) kedd ON kedd.OsztalyId = k.OsztalyId
INNER JOIN (
SELECT
OsztalyId
,'+ @Oraszamok +'
FROM #Orarend
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
WHERE Nap = 1410
) szerda ON szerda.OsztalyId = k.OsztalyId
INNER JOIN (
SELECT
OsztalyId
,'+ @Oraszamok +'
FROM #Orarend
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
WHERE Nap = 1411
) csutortok ON csutortok.OsztalyId = k.OsztalyId
INNER JOIN (
SELECT
OsztalyId
,'+ @Oraszamok +'
FROM #Orarend
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
WHERE Nap = 1412
) pentek ON pentek.OsztalyId = k.OsztalyId
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.Id = k.OsztalyId
ORDER BY C_NEV
'
EXEC sp_executesql @sql
DROP TABLE #Napok
DROP TABLE #Orarend
DROP TABLE #KapcsolodoCsoportok
END
GO
@@ -0,0 +1,208 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('sp_GetOrarendKereszttabla_Pedagogus') IS NOT NULL BEGIN
DROP PROCEDURE sp_GetOrarendKereszttabla_Pedagogus
END
GO
CREATE PROCEDURE sp_GetOrarendKereszttabla_Pedagogus
@tanevId INT,
@aktivTanevId INT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @UtolsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA=1395 AND C_TANEVID=@tanevid AND TOROLT='F')
,@HetEleje DATE
,@HetVege DATE
IF (@tanevId = @AktivtanevId AND GETDATE() <= @UtolsoNap)
BEGIN
SET @HetEleje = (SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, NH.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid)
SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid)
END
ELSE
BEGIN
SET @HetEleje = (SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
END
CREATE TABLE #KapcsolodoCsoportok (OsztalyId INT, OsztalyCsoportId INT)
INSERT INTO #KapcsolodoCsoportok
SELECT DISTINCT
o.ID Osztaly
,k.ID KapcsolodoCsoport
FROM T_OSZTALY_OSSZES o
CROSS APPLY fnGetKapcsolodoOsztalycsoportokByDate(ID, @HetEleje, @HetVege) k
WHERE
o.TOROLT = 'F'
AND o.C_ALTANEVID = @tanevId
DECLARE @PedagogushozKapcsolodoOsszesOrarendiora TABLE (OsztalyId INT, OsztalyCsoportId INT, OrarendiOraId INT, TantargyId INT, PedagogusId INT, TeremId INT, HetirendId INT, HetnapjaId INT, Oraszam INT, OraErvenyessegKezdete DATE, OraErvenyessegVege DATE)
INSERT INTO @PedagogushozKapcsolodoOsszesOrarendiora
SELECT
k.OsztalyId
,K.OsztalyCsoportId
,o.ID
,C_TANTARGYID
,C_TANARID
,C_TEREMID
,C_HETIREND
,C_HETNAPJA
,C_ORASZAM
,C_ORAERVENYESSEGKEZDETE
,C_ORAERVENYESSEGVEGE
FROM #KapcsolodoCsoportok k
LEFT JOIN T_ORARENDIORA_OSSZES o ON o.C_OSZTALYCSOPORTID = k.OsztalyCsoportId
WHERE
TOROLT = 'F'
CREATE TABLE #temp (PedagogusId INT, HetirendId INT, HetirendNev NVARCHAR(MAX), HetnapjaId INT, Oraszam INT, TantargyNev NVARCHAR(MAX), TeremNev NVARCHAR(MAX), OsztalyNev NVARCHAR(MAX))
INSERT INTO #temp
SELECT
OrarendiOra.PedagogusId PedagogusId
,OrarendiOra.HetirendId HetirendId
,hetirend.C_NAME HetirendNev
,OrarendiOra.HetnapjaId HetnapjaId
,OrarendiOra.Oraszam Oraszam
,ISNULL(Tantargy.C_NEVNYOMTATVANYBAN, Tantargy.C_NEV) TantargyNev
,Terem.C_NEV TeremNev
,ocs.C_NEV OsztalyNev
FROM @PedagogushozKapcsolodoOsszesOrarendiora OrarendiOra
INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = OrarendiOra.TantargyId
INNER JOIN T_TEREM_OSSZES Terem ON Terem.Id = OrarendiOra.TeremId
INNER JOIN T_DICTIONARYITEMBASE_OSSZES hetirend ON hetirend.Id = OrarendiOra.HetirendId AND hetirend.C_TANEVID = @tanevId
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.Id = OrarendiOrA.OsztalyCsoportId
WHERE
OrarendiOra.OraErvenyessegKezdete <= @Hetvege
AND OrarendiOra.OraErvenyessegVege >= @Heteleje
DECLARE @Hetirendek TABLE (Id INT)
INSERT INTO @Hetirendek
SELECT DISTINCT HetirendId FROM #temp
DECLARE @OsszesOra TABLE (PedagogusId INT, Hetirend INT, Nap INT, Oraszam INT)
INSERT INTO @OsszesOra
SELECT DISTINCT PedagogusId, oo.Id, Nap.Nap , OraSzam.OraSzam FROM @Hetirendek oo
CROSS JOIN (SELECT DISTINCT PedagogusId FROM #temp) Pedagogus(PedagogusId)
CROSS JOIN (SELECT DISTINCT Oraszam FROM #temp) OraSzam (OraSzam)
CROSS JOIN (VALUES (1408),(1409),(1410),(1411),(1412),(1413)) Nap (Nap)
DECLARE @TenylegesOra TABLE (PedagogusId INT, Nap INT, OraSzam INT, Foglalkozas NVARCHAR(MAX))
INSERT INTO @TenylegesOra
SELECT
PedagogusId
,HetnapjaId
,Oraszam
,STUFF((SELECT DISTINCT ', ' + CAST(bveg.TantargyNev+' (' +bveg.OsztalyNev+', ' + bveg.TeremNev +', ' +HetirendNev+')' AS VARCHAR(max))
FROM #temp bveg
WHERE
bveg.HetnapjaId=veg.HetnapjaId
AND bveg.Oraszam=veg.Oraszam
AND (bveg.HetirendId=HetirendId OR bveg.HetirendId=1554)
AND bveg.PedagogusId = veg.PedagogusId
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,' ') Foglalkozasok
FROM #temp veg
/*Végleges órarend*/
CREATE TABLE #Orarend (PedagogusId INT, PedagogusNev NVARCHAR(MAX), Ora INT, Nap INT, Foglalkozas NVARCHAR(MAX))
INSERT INTO #Orarend
SELECT
OsszesOra.PedagogusId
,ped.C_NYOMTATASINEV
,OsszesOra.Oraszam
,OsszesOra.Nap
,TenylegesOra.Foglalkozas
FROM @OsszesOra OsszesOra
LEFT JOIN @TenylegesOra TenylegesOra ON OsszesOra.Nap=TenylegesOra.Nap AND OsszesOra.Oraszam=TenylegesOra.Oraszam AND TenylegesOra.PedagogusId = OsszesOra.PedagogusId
LEFT JOIN T_FELHASZNALO_OSSZES ped ON ped.ID = OsszesOra.PedagogusId
ORDER BY OsszesOra.Hetirend, OsszesOra.Nap, OsszesOra.Oraszam
--------------------------------------------------------------------------------------------------------------
CREATE TABLE #Napok (Nev NVARCHAR(MAX), Oraszam INT, Rendez INT)
INSERT INTO #Napok
SELECT DISTINCT
*
, CASE
WHEN nap = 'hetfo' THEN 1
WHEN nap = 'kedd' THEN 2
WHEN nap = 'szerda' THEN 3
WHEN nap = 'csutortok' THEN 4
WHEN nap = 'pentek' THEN 5
END
FROM (VALUES ('hetfo'), ('kedd'), ('szerda'), ('csutortok'), ('pentek')) AS napok(nap)
CROSS JOIN (SELECT DISTINCT Oraszam FROM #temp) OraSzam (OraSzam)
DECLARE @Oraszamok NVARCHAR(MAX),
@OraszamokAlias NVARCHAR(MAX)
SELECT @Oraszamok = ISNULL(@Oraszamok + ', ', '') + '[' + CAST(Oraszam AS NVARCHAR(MAX)) + ']'
FROM (SELECT DISTINCT Oraszam FROM #temp ) o
SELECT @OraszamokAlias = ISNULL(@OraszamokAlias + ', ', '') + Nev +'.' + '[' + CAST(Oraszam AS NVARCHAR(MAX)) + ']' FROM #Napok ORDER BY Rendez, Oraszam
DECLARE @sql NVARCHAR(MAX)
SET @sql = '
SELECT DISTINCT
f.C_NYOMTATASINEV PedagogusNev,
' + @OraszamokAlias + '
FROM (SELECT DISTINCT PedagogusId FROM #temp) k
INNER JOIN (
SELECT
PedagogusId
,'+ @Oraszamok +'
FROM #Orarend
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
WHERE Nap = 1408
) hetfo ON hetfo.PedagogusId = k.PedagogusId
INNER JOIN (
SELECT
PedagogusId
,'+ @Oraszamok +'
FROM #Orarend
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
WHERE Nap = 1409
) kedd ON kedd.PedagogusId = k.PedagogusId
INNER JOIN (
SELECT
PedagogusId
,'+ @Oraszamok +'
FROM #Orarend
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
WHERE Nap = 1410
) szerda ON szerda.PedagogusId = k.PedagogusId
INNER JOIN (
SELECT
PedagogusId
,'+ @Oraszamok +'
FROM #Orarend
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
WHERE Nap = 1411
) csutortok ON csutortok.PedagogusId = k.PedagogusId
INNER JOIN (
SELECT
PedagogusId
,'+ @Oraszamok +'
FROM #Orarend
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
WHERE Nap = 1412
) pentek ON pentek.PedagogusId = k.PedagogusId
INNER JOIN T_FELHASZNALO_OSSZES f ON f.Id = k.PedagogusId
ORDER BY C_NYOMTATASINEV
'
EXEC sp_executesql @sql
DROP TABLE #Napok
DROP TABLE #Orarend
DROP TABLE #KapcsolodoCsoportok
END
GO
@@ -0,0 +1,266 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('sp_GetOrarendOsztalyonkent') IS NOT NULL BEGIN
DROP PROCEDURE sp_GetOrarendOsztalyonkent
END
GO
CREATE PROCEDURE sp_GetOrarendOsztalyonkent
@intezmenyId INT,
@tanevId INT,
@osztalyId INT,
@aktivTanevId INT,
@isEgyebFoglalkozasok BIT,
@orarendErvenyessegiDatum DATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @UtolsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1395 AND C_TANEVID = @tanevId AND TOROLT = 'F')
,@ElsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1394 AND C_TANEVID = @tanevId AND TOROLT = 'F')
,@VizsgaltNap DATE
,@isVegzos VARCHAR(1) = (SELECT TOP 1 C_VEGZOSEVFOLYAM FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyId)
,@VegzosUtolsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_TANEVID = @tanevId AND C_NAPTIPUSA = 1402 AND TOROLT = 'F')
,@osztalyNev NVARCHAR(MAX) = (SELECT C_NEV FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyId)
SET @UtolsoNap = (SELECT IIF(@isVegzos = 'T', @VegzosUtolsoNap, @UtolsoNap))
IF (@tanevId = @aktivTanevId AND @orarendErvenyessegiDatum <= @UtolsoNap)
BEGIN
IF (@orarendErvenyessegiDatum <= @ElsoNap)
BEGIN
SET @VizsgaltNap = (SELECT TOP 1 C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES WHERE C_HETSORSZAMA = 1 AND TOROLT = 'F' AND C_TANEVID = @tanevId)
END
ELSE
BEGIN
SET @VizsgaltNap = CONVERT(DATE, @orarendErvenyessegiDatum)
END
END
ELSE
BEGIN
SET @VizsgaltNap = @UtolsoNap
END
SELECT
C_ORASZAM OraSzam
,CONVERT(VARCHAR(5), C_KEZDETE, 108) Kezdete
,CONVERT(VARCHAR(5), C_VEGE, 108) Vege
INTO #CsengetesiRendAdatok
FROM T_CSENGETESIRENDORA_OSSZES CsengetesiRendOra
INNER JOIN T_CSENGETESIREND_OSSZES CsengetesiRend ON CsengetesiRend.Id = CsengetesiRendOra.C_CSENGETESIRENDID
WHERE
CsengetesiRendOra.C_TANEVID = @tanevId
AND CsengetesiRendOra.TOROLT = 'F'
AND CsengetesiRend.TOROLT = 'F'
AND CsengetesiRend.C_AKTIV = 'T'
DECLARE @MinCsengetesiRendOraKezdet NVARCHAR(10) = (SELECT MIN(Kezdete) FROM #CsengetesiRendAdatok)
DECLARE @MinCsengetesiRendOraszam INT = (SELECT MIN(OraSzam) FROM #CsengetesiRendAdatok)
SELECT
OrarendiOra.C_HETIREND HetirendId
,OrarendiOra.C_HETNAPJA HetnapjaId
,CsengetesiRendOra.C_ORASZAM OraSzam
,CONVERT(VARCHAR(5), OrarendiOra.C_ORAKEZDETE, 108) Kezdete
,CONVERT(VARCHAR(5), OrarendiOra.C_ORAVEGE, 108) Vege
,ISNULL(Tantargy.C_NEVNYOMTATVANYBAN, Tantargy.C_NEV) TantargyNev
,Pedagogus.C_NYOMTATASINEV PedagogusNev
,Terem.C_NEV TeremNev
,ocs.C_NEV OsztalyCsoportNev
INTO #OrarendiOrak
FROM T_ORARENDIORA_OSSZES OrarendiOra
INNER JOIN fnGetKapcsolodoOsztalycsoportokByDate(@osztalyId, @VizsgaltNap, @VizsgaltNap) Kapcsolodo ON Kapcsolodo.Id = OrarendiOra.C_OSZTALYCSOPORTID
INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = OrarendiOra.C_TANTARGYID
INNER JOIN T_FELHASZNALO_OSSZES Pedagogus ON Pedagogus.Id = OrarendiOra.C_TANARID
INNER JOIN T_TEREM_OSSZES Terem ON Terem.Id = OrarendiOra.C_TEREMID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = OrarendiOra.C_OSZTALYCSOPORTID
LEFT JOIN T_CSENGETESIRENDORA_OSSZES CsengetesiRendOra ON CsengetesiRendOra.Id = OrarendiOra.C_CSENGETESIRENDORAID
LEFT JOIN T_CSOPORT_OSSZES Csoport ON Csoport.Id = Kapcsolodo.Id
WHERE
OrarendiOra.Torolt = 'F'
AND @VizsgaltNap BETWEEN OrarendiOra.C_ORAERVENYESSEGKEZDETE AND OrarendiOra.C_ORAERVENYESSEGVEGE
AND (@isEgyebFoglalkozasok = 1 OR (Csoport.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId)) OR Csoport.C_TIPUSA IS NULL))
SELECT
OraSzam
,HetirendId
,HetnapjaId
,OsztalyCsoportNev
,PedagogusNev
,TantargyNev
,TeremNev
,Kezdete
,Vege
INTO #OrarendTEMP
FROM
(
SELECT
MAX(CsengetesiRendAdatok.OraSzam) OraSzam
,OrarendiOrak.HetirendId HetirendId
,OrarendiOrak.HetnapjaId HetnapjaId
,OrarendiOrak.OsztalyCsoportNev OsztalyCsoportNev
,OrarendiOrak.PedagogusNev PedagogusNev
,OrarendiOrak.TantargyNev TantargyNev
,OrarendiOrak.TeremNev TeremNev
,OrarendiOrak.Kezdete Kezdete
,OrarendiOrak.Vege Vege
FROM #CsengetesiRendAdatok CsengetesiRendAdatok
LEFT JOIN #OrarendiOrak OrarendiOrak ON OrarendiOrak.Kezdete >= CsengetesiRendAdatok.Kezdete
WHERE
OrarendiOrak.OraSzam IS NULL
GROUP BY
OrarendiOrak.HetirendId
,OrarendiOrak.HetnapjaId
,OrarendiOrak.OsztalyCsoportNev
,OrarendiOrak.PedagogusNev
,OrarendiOrak.TantargyNev
,OrarendiOrak.TeremNev
,OrarendiOrak.Kezdete
,OrarendiOrak.Vege
UNION
SELECT
MAX(CsengetesiRendAdatok.OraSzam) OraSzam
,OrarendiOrak.HetirendId HetirendId
,OrarendiOrak.HetnapjaId HetnapjaId
,OrarendiOrak.OsztalyCsoportNev OsztalyCsoportNev
,OrarendiOrak.PedagogusNev PedagogusNev
,OrarendiOrak.TantargyNev TantargyNev
,OrarendiOrak.TeremNev TeremNev
,OrarendiOrak.Kezdete Kezdete
,OrarendiOrak.Vege Vege
FROM #CsengetesiRendAdatok CsengetesiRendAdatok
LEFT JOIN #OrarendiOrak OrarendiOrak ON OrarendiOrak.OraSzam = CsengetesiRendAdatok.OraSzam
WHERE
OrarendiOrak.OraSzam IS NOT NULL
GROUP BY
OrarendiOrak.HetirendId
,OrarendiOrak.HetnapjaId
,OrarendiOrak.OsztalyCsoportNev
,OrarendiOrak.PedagogusNev
,OrarendiOrak.TantargyNev
,OrarendiOrak.TeremNev
,OrarendiOrak.Kezdete
,OrarendiOrak.Vege
)OrarendioraOraszammal
INSERT INTO #OrarendTEMP
SELECT
@MinCsengetesiRendOraszam
,OrarendiOrak.HetirendId HetirendId
,OrarendiOrak.HetnapjaId HetnapjaId
,OrarendiOrak.OsztalyCsoportNev OsztalyCsoportNev
,OrarendiOrak.PedagogusNev PedagogusNev
,OrarendiOrak.TantargyNev TantargyNev
,OrarendiOrak.TeremNev TeremNev
,OrarendiOrak.Kezdete Kezdete
,OrarendiOrak.Vege Vege
FROM #orarendiorak OrarendiOrak
WHERE
Kezdete < @MinCsengetesiRendOraKezdet
SELECT
Orarend.OraSzam
,HetirendId
,HetnapjaId
,OsztalyCsoportNev
,PedagogusNev
,TantargyNev
,TeremNev
,IIF(Orarend.Kezdete != CsengetesiRendAdatok.Kezdete OR Orarend.Vege != CsengetesiRendAdatok.Vege, Orarend.Kezdete + ' - ' + Orarend.Vege, '') KezdesVegeIdopont
INTO #Orarend
FROM #OrarendTEMP Orarend
INNER JOIN #CsengetesiRendAdatok CsengetesiRendAdatok on CsengetesiRendAdatok.Oraszam = Orarend.OraSzam
DECLARE @Hetirendek TABLE (Id INT)
DECLARE @HetirendCount INT = (SELECT COUNT(DISTINCT oo.C_HETIREND) FROM T_ORARENDIORA_OSSZES oo WHERE oo.TOROLT='F' AND oo.C_TANEVID=@tanevId)
IF (@HetirendCount=1)
BEGIN
INSERT INTO @Hetirendek
SELECT DISTINCT oo.c_hetirend FROM T_ORARENDIORA_OSSZES oo WHERE oo.TOROLT='F' AND oo.C_TANEVID = @tanevId
END
ELSE
BEGIN
INSERT INTO @Hetirendek
SELECT DISTINCT oo.C_HETIREND from T_ORARENDIORA_OSSZES oo WHERE oo.TOROLT='F' AND oo.C_TANEVID=@tanevId AND oo.C_HETIREND <> 1554
END
DECLARE @Orakezdetek TABLE (Ora INT)
INSERT INTO @orakezdetek
SELECT DISTINCT OraSzam from #CsengetesiRendAdatok
DECLARE @OsszesOra TABLE (Hetirend INT, Nap INT, Oraszam nvarchar(20))
INSERT INTO @OsszesOra
SELECT DISTINCT oo.Id, Nap , OraSzam FROM @Hetirendek oo
CROSS JOIN (SELECT Ora FROM @Orakezdetek) OraSzam (OraSzam)
CROSS JOIN (VALUES (1408),(1409),(1410),(1411),(1412), (1413),(1414)) Nap (Nap)
DECLARE @TenylegesOra TABLE (Hetirend INT, Nap INT, OraSzam NVARCHAR(20), Foglalkozas NVARCHAR(MAX))
DECLARE @Orarend TABLE (osztalyId INT, Ora int, Hetirend INT, Nap INT, Foglalkozas NVARCHAR(MAX))
DECLARE kur CURSOR FOR
SELECT Id FROM @Hetirendek
DECLARE @HetirendId int
OPEN kur
FETCH NEXT FROM kur INTO @HetirendId
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @TenylegesOra
SELECT DISTINCT
@HetirendId
,veg.HetnapjaId
,veg.Oraszam
,STUFF((SELECT DISTINCT
CAST('<b>' + bveg.TantargyNev + '</b>' + CHAR(13) + CHAR(10)
+ IIF(LEN(KezdesVegeIdopont) > 0, ' (' + KezdesVegeIdopont +')' + CHAR(13) + CHAR(10), '')
+ IIF(bveg.OsztalyCsoportNev <> @osztalyNev, bveg.OsztalyCsoportNev + CHAR(13) + CHAR(10), '')
+ bveg.PedagogusNev + CHAR(13) + CHAR(10)
+ bveg.TeremNev + CHAR(13) + CHAR(10) AS VARCHAR(max))
FROM #Orarend bveg
WHERE bveg.HetnapjaId = veg.HetnapjaId
AND bveg.Oraszam = veg.Oraszam
AND (bveg.HetirendId = @HetirendId OR bveg.HetirendId = 1554)
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'') Foglalkozasok
FROM #Orarend veg
FETCH NEXT FROM kur INTO @HetirendId
END
CLOSE kur
DEALLOCATE kur
/*Végleges órarend*/
INSERT INTO @Orarend
SELECT @osztalyId
, OsszesOra.Oraszam
, OsszesOra.Hetirend
, OsszesOra.Nap
, TenylegesOra.Foglalkozas
FROM @OsszesOra OsszesOra
LEFT JOIN @TenylegesOra TenylegesOra ON OsszesOra.Hetirend = TenylegesOra.Hetirend AND OsszesOra.Nap = TenylegesOra.Nap AND OsszesOra.Oraszam = TenylegesOra.Oraszam
ORDER BY OsszesOra.Hetirend, OsszesOra.Nap, OsszesOra.Oraszam
SELECT
pv.*
, dic.C_NAME HETIREND_DNAME
,@osztalyNev OsztalyNev
FROM @Orarend
PIVOT (MAX(Foglalkozas) FOR Nap IN ([1408],[1409],[1410],[1411],[1412],[1413],[1414]))pv
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dic ON dic.id=Hetirend AND dic.C_TANEVID = @tanevId
INNER JOIN @Orakezdetek ok ON ok.Ora = pv.Ora
ORDER BY Ora
END
DROP TABLE #CsengetesiRendAdatok
DROP TABLE #Orarend
DROP TABLE #OrarendiOrak
GO
@@ -0,0 +1,392 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetOsztalyTanuloinakHaviMulasztasaiOsszesitoje_honapra]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetOsztalyTanuloinakHaviMulasztasaiOsszesitoje_honapra]
END
GO
CREATE PROCEDURE [dbo].[sp_GetOsztalyTanuloinakHaviMulasztasaiOsszesitoje_honapra]
@pTanevId INT,
@pIntezmenyId INT,
@pOsztalyId INT,
@pHonap INT,
@pElmeletgyakorlat BIT = 0,
@pMulasztandoOrakszamaTeljesNaposMulasztashoz INT = 3
AS
BEGIN
DECLARE @idoszakEleje DATE = (SELECT TOP 1 C_ELSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @pTanevId);
DECLARE @iskolaErdekuParam INT = 1683;
DECLARE @iskolaErdekuSzamit BIT = dbo.fnGetRendszerbeallitasEnumBool(@iskolaErdekuParam, @pIntezmenyId, @pTanevId);
DECLARE @pAtsoroltTanuloAdatok INT = 1;
DECLARE @pMulasztasTipusIdKeses INT = 1499;
DECLARE @pMulasztasTipusIdHianyzas INT = 1500;
--Osztály tanulói
CREATE TABLE #tanulo (Id INT)
INSERT INTO #tanulo
SELECT DISTINCT tcs.c_tanuloid AS Id
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_FELHASZNALO_OSSZES f ON f.id = tcs.c_tanuloid
WHERE tcs.torolt='F' AND f.torolt='F' AND tcs.c_tanevid=@pTanevId AND tcs.c_intezmenyid=@pIntezmenyId AND tcs.c_osztalycsoportid=@pOsztalyId;
--Igazolástípusok
CREATE TABLE #igazolastipus (Id INT, Nev NVARCHAR(MAX), Sorrend INT);
INSERT INTO #igazolastipus
SELECT T_IGAZOLASTIPUS_OSSZES.ID AS Id, C_NAME AS Nev, C_ORDER AS Sorrrend
FROM T_IGAZOLASTIPUS_OSSZES
INNER JOIN T_DICTIONARYITEMBASE_OSSZES ON T_IGAZOLASTIPUS_OSSZES.ID = T_DICTIONARYITEMBASE_OSSZES.ID
WHERE T_DICTIONARYITEMBASE_OSSZES.C_INTEZMENYID = @pIntezmenyId AND T_DICTIONARYITEMBASE_OSSZES.C_TANEVID = @pTanevId AND T_IGAZOLASTIPUS_OSSZES.C_ALINTEZMENYID = @pIntezmenyId AND T_IGAZOLASTIPUS_OSSZES.C_ALTANEVID = @pTanevId
AND T_IGAZOLASTIPUS_OSSZES.TOROLT = 'F' AND T_DICTIONARYITEMBASE_OSSZES.TOROLT = 'F'
ORDER BY C_ORDER, C_NAME;
--Igazolások és típusai
CREATE TABLE #igazolas (Tanulo INT, IgazoltE NVARCHAR(1), IgazolasTipus INT, Gyakorlati CHAR(1), HianyzasErtek FLOAT, KesettPerc FLOAT)
INSERT INTO #igazolas
SELECT TanuloId AS Tanulo, Igazolt AS IgazoltE, IgazolasTipusa AS IgazolasTipus, IIF(@pElmeletgyakorlat=0, 'F', Gyakorlati) AS Gyakorlati,
SUM(CAST(IIF(Tipusa = @pMulasztasTipusIdHianyzas, 1, IIF(Tipusa = @pMulasztasTipusIdKeses,CAST(KesesPercben AS FLOAT) / 45, 0)) AS FLOAT)) AS HianyzasErtek, KesesPercben AS KesettPerc
FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes (@pTanevId, @pOsztalyId, @iskolaErdekuSzamit, 0, IIF(@pAtsoroltTanuloAdatok > 0, 1, 0), @idoszakEleje, GETDATE(), DEFAULT) AS MULASZTASOK
WHERE (CAST(MONTH(Datum) AS VARCHAR)) = @pHonap AND Tipusa IN (@pMulasztasTipusIdKeses, @pMulasztasTipusIdHianyzas)
GROUP BY IIF(@pElmeletgyakorlat=0, 'F', Gyakorlati), TanuloId, Igazolt, IgazolasTipusa, KesesPercben;
--Mulasztások
CREATE TABLE #mulasztas (Nap NVARCHAR(5), Tanulo INT, Osztaly INT, HianyzasErtek FLOAT)
INSERT INTO #mulasztas
SELECT CAST(CAST(DAY(Datum) AS INT) AS NVARCHAR) + (IIF(@pElmeletgyakorlat=0, '', IIF(Gyakorlati = 'T', '_GY', '_E'))) AS Nap, TanuloId AS Tanulo, OsztalyCsoportId AS Osztaly,
SUM(CAST(IIF(Tipusa = @pMulasztasTipusIdHianyzas, 1, IIF(Tipusa = @pMulasztasTipusIdKeses, CAST(KesesPercben AS FLOAT) / 45, 0)) AS FLOAT)) AS HianyzasErtek
FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes (@pTanevId, @pOsztalyId, @iskolaErdekuSzamit, 0, IIF(@pAtsoroltTanuloAdatok > 0, 1, 0), @idoszakEleje, GETDATE(), DEFAULT) AS MULASZTASOK
WHERE (CAST(MONTH(Datum) AS VARCHAR)) = @pHonap AND Tipusa IN (@pMulasztasTipusIdKeses, @pMulasztasTipusIdHianyzas)
GROUP BY CAST(DAY(Datum) AS INT), Gyakorlati, TanuloId, OsztalyCsoportId;
--Teljes napos mulasztások száma
CREATE TABLE #teljesnaposmul (Tanulo INT, HianyzasErtek INT)
INSERT INTO #teljesnaposmul
SELECT Tanulo, SUM(TeljesNapiMul) AS HianyzasErtek
FROM (
SELECT Tanulo, Nap, IIF(SUM(HianyzasErtek) >= @pMulasztandoOrakszamaTeljesNaposMulasztashoz, 1, 0) AS TeljesNapiMul
FROM #mulasztas
GROUP BY Tanulo, Nap
) AS TeljesNapiMulasztasok
GROUP BY Tanulo
DECLARE @query AS NVARCHAR(MAX);
IF @pElmeletgyakorlat=0
BEGIN
DECLARE @colsHeader AS NVARCHAR(MAX);
DECLARE @cols AS NVARCHAR(MAX);
DECLARE @colsSum AS NVARCHAR(MAX);
SELECT @colsHeader = ISNULL(@colsHeader + ', ', '') + QUOTENAME(Id) + ' AS ' + QUOTENAME(Nev),
@cols = ISNULL(@cols + ', ', '') + QUOTENAME(Id),
@colsSum = ISNULL(@colsSum + ', ', '') + 'SUM( [' + CAST(Id as nvarchar(max)) + '] ) AS ' + QUOTENAME(Id)
FROM #igazolastipus AS Igazolastipus
ORDER BY Sorrend, Nev;
PRINT @cols;
PRINT @colsSum;
PRINT @colsHeader;
SET @query =
'SELECT
f.c_nyomtatasinev AS COLUMN108,
IIF(m.[1]=0, NULL, FLOOR(m.[1])) AS [1],
IIF(m.[2]=0, NULL, FLOOR(m.[2])) AS [2],
IIF(m.[3]=0, NULL, FLOOR(m.[3])) AS [3],
IIF(m.[4]=0, NULL, FLOOR(m.[4])) AS [4],
IIF(m.[5]=0, NULL, FLOOR(m.[5])) AS [5],
IIF(m.[6]=0, NULL, FLOOR(m.[6])) AS [6],
IIF(m.[7]=0, NULL, FLOOR(m.[7])) AS [7],
IIF(m.[8]=0, NULL, FLOOR(m.[8])) AS [8],
IIF(m.[9]=0, NULL, FLOOR(m.[9])) AS [9],
IIF(m.[10]=0, NULL, FLOOR(m.[10])) AS [10],
IIF(m.[11]=0, NULL, FLOOR(m.[11])) AS [11],
IIF(m.[12]=0, NULL, FLOOR(m.[12])) AS [12],
IIF(m.[13]=0, NULL, FLOOR(m.[13])) AS [13],
IIF(m.[14]=0, NULL, FLOOR(m.[14])) AS [14],
IIF(m.[15]=0, NULL, FLOOR(m.[15])) AS [15],
IIF(m.[16]=0, NULL, FLOOR(m.[16])) AS [16],
IIF(m.[17]=0, NULL, FLOOR(m.[17])) AS [17],
IIF(m.[18]=0, NULL, FLOOR(m.[18])) AS [18],
IIF(m.[19]=0, NULL, FLOOR(m.[19])) AS [19],
IIF(m.[20]=0, NULL, FLOOR(m.[20])) AS [20],
IIF(m.[21]=0, NULL, FLOOR(m.[21])) AS [21],
IIF(m.[22]=0, NULL, FLOOR(m.[22])) AS [22],
IIF(m.[23]=0, NULL, FLOOR(m.[23])) AS [23],
IIF(m.[24]=0, NULL, FLOOR(m.[24])) AS [24],
IIF(m.[25]=0, NULL, FLOOR(m.[25])) AS [25],
IIF(m.[26]=0, NULL, FLOOR(m.[26])) AS [26],
IIF(m.[27]=0, NULL, FLOOR(m.[27])) AS [27],
IIF(m.[28]=0, NULL, FLOOR(m.[28])) AS [28],
IIF(m.[29]=0, NULL, FLOOR(m.[29])) AS [29],
IIF(m.[30]=0, NULL, FLOOR(m.[30])) AS [30],
IIF(m.[31]=0, NULL, FLOOR(m.[31])) AS [31],
FLOOR(OSSZES.MULASZTASOKSZAMA) AS COLUMN2672,
FLOOR(IGAZOLT.IGAZOLTSZAMA) AS COLUMN2568, ' + @colsHeader + ',
FLOOR(IGAZOLATLAN.IGAZOLATLANSZAMA) AS COLUMN1911,
TELJESNAPOSMULASZTAS.HianyzasErtek AS COLUMNTELJESNAPOSMULASZTASOK,
IGAZOLTKESES.IGAZOLTPERC AS COLUMNIGAZOLTKESESPERCBEN,
IGAZOLATLANKESES.IGAZOLATLANPERC AS COLUMNIGAZOLATLANKESESPERCBEN
FROM #tanulo AS tanulok
LEFT JOIN (
SELECT Tanulo, ' + @colsSum + '
FROM #igazolas AS igazolasok
PIVOT (SUM(HianyzasErtek) FOR IgazolasTipus IN (' + @cols + ')) AS PIVOTTABLE
GROUP BY Tanulo
) AS IGAZOLASTIPUSOKSZERINT ON IGAZOLASTIPUSOKSZERINT.Tanulo = tanulok.Id
LEFT JOIN (
SELECT Tanulo, HianyzasErtek
FROM #teljesnaposmul AS teljesnaposmul
) AS TELJESNAPOSMULASZTAS ON TELJESNAPOSMULASZTAS.Tanulo = tanulok.Id
LEFT JOIN (
SELECT Tanulo,
SUM([1]) AS [1],
SUM([2]) AS [2],
SUM([3]) AS [3],
SUM([4]) AS [4],
SUM([5]) AS [5],
SUM([6]) AS [6],
SUM([7]) AS [7],
SUM([8]) AS [8],
SUM([9]) AS [9],
SUM([10]) AS [10],
SUM([11]) AS [11],
SUM([12]) AS [12],
SUM([13]) AS [13],
SUM([14]) AS [14],
SUM([15]) AS [15],
SUM([16]) AS [16],
SUM([17]) AS [17],
SUM([18]) AS [18],
SUM([19]) AS [19],
SUM([20]) AS [20],
SUM([21]) AS [21],
SUM([22]) AS [22],
SUM([23]) AS [23],
SUM([24]) AS [24],
SUM([25]) AS [25],
SUM([26]) AS [26],
SUM([27]) AS [27],
SUM([28]) AS [28],
SUM([29]) AS [29],
SUM([30]) AS [30],
SUM([31]) AS [31]
FROM #mulasztas AS mulasztas
PIVOT (SUM(mulasztas.HianyzasErtek) for Nap in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31])) pv
GROUP BY Tanulo
) m ON m.Tanulo = tanulok.id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS MULASZTASOKSZAMA FROM #igazolas GROUP BY Tanulo) AS OSSZES ON OSSZES.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS IGAZOLTSZAMA FROM #igazolas i WHERE i.IgazoltE=''T'' GROUP BY Tanulo) AS IGAZOLT ON IGAZOLT.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS IGAZOLATLANSZAMA FROM #igazolas i WHERE i.IgazoltE=''F'' GROUP BY Tanulo) AS IGAZOLATLAN ON IGAZOLATLAN.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(KesettPerc) AS IGAZOLTPERC FROM #igazolas i WHERE i.IgazoltE=''T'' GROUP BY Tanulo) AS IGAZOLTKESES ON IGAZOLTKESES.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(KesettPerc) AS IGAZOLATLANPERC FROM #igazolas i WHERE (i.IgazoltE=''F'' OR i.IgazoltE IS NULL) GROUP BY Tanulo) AS IGAZOLATLANKESES ON IGAZOLATLANKESES.Tanulo = tanulok.Id
INNER JOIN T_FELHASZNALO_OSSZES f ON f.id = tanulok.Id
--GROUP BY f.c_nyomtatasinev, tanulok.Id, f.id
ORDER BY f.c_nyomtatasinev';
exec sp_executesql @query;
END
ELSE
BEGIN
DECLARE @colsHeader_E AS NVARCHAR(MAX);
DECLARE @colsHeader_GY AS NVARCHAR(MAX);
DECLARE @cols_E AS NVARCHAR(MAX);
DECLARE @cols_GY AS NVARCHAR(MAX);
DECLARE @colsSum_E AS NVARCHAR(MAX);
DECLARE @colsSum_GY AS NVARCHAR(MAX);
SELECT @colsHeader_E = ISNULL(@colsHeader_E + ', ', '') + QUOTENAME(Id) + ' AS ' + QUOTENAME(Nev + ' (elméleti)'),
@colsHeader_GY = ISNULL(@colsHeader_GY + ', ', '') + QUOTENAME(-Id) + ' AS ' + QUOTENAME(Nev + ' (gyakorlati)'),
@cols_E = ISNULL(@cols_E + ', ', '') + QUOTENAME(Id),
@cols_GY = ISNULL(@cols_GY + ', ', '') + QUOTENAME(-Id),
@colsSum_E = ISNULL(@colsSum_E + ', ', '') + 'SUM( [' + CAST(Id as nvarchar(max)) + '] ) AS ' + QUOTENAME(Id),
@colsSum_GY = ISNULL(@colsSum_GY + ', ', '') + 'SUM( [' + CAST(-Id as nvarchar(max)) + '] ) AS ' + QUOTENAME(-Id)
FROM #igazolastipus AS Igazolastipus
ORDER BY Sorrend, Nev;
SET @query =
'SELECT f.c_nyomtatasinev AS COLUMN108,
IIF(m.[1_E]=0, NULL, FLOOR(m.[1_E])) AS [1 E],
IIF(m.[1_GY]=0, NULL, FLOOR(m.[1_GY])) AS [1 GY],
IIF(m.[2_E]=0, NULL, FLOOR(m.[2_E])) AS [2 E],
IIF(m.[2_GY]=0, NULL, FLOOR(m.[2_GY])) AS [2 GY],
IIF(m.[3_E]=0, NULL, FLOOR(m.[3_E])) AS [3 E],
IIF(m.[3_GY]=0, NULL, FLOOR(m.[3_GY])) AS [3 GY],
IIF(m.[4_E]=0, NULL, FLOOR(m.[4_E])) AS [4 E],
IIF(m.[4_GY]=0, NULL, FLOOR(m.[4_GY])) AS [4 GY],
IIF(m.[5_E]=0, NULL, FLOOR(m.[5_E])) AS [5 E],
IIF(m.[5_GY]=0, NULL, FLOOR(m.[5_GY])) AS [5 GY],
IIF(m.[6_E]=0, NULL, FLOOR(m.[6_E])) AS [6 E],
IIF(m.[6_GY]=0, NULL, FLOOR(m.[6_GY])) AS [6 GY],
IIF(m.[7_E]=0, NULL, FLOOR(m.[7_E])) AS [7 E],
IIF(m.[7_GY]=0, NULL, FLOOR(m.[7_GY])) AS [7 GY],
IIF(m.[8_E]=0, NULL, FLOOR(m.[8_E])) AS [8 E],
IIF(m.[8_GY]=0, NULL, FLOOR(m.[8_GY])) AS [8 GY],
IIF(m.[9_E]=0, NULL, FLOOR(m.[9_E])) AS [9 E],
IIF(m.[9_GY]=0, NULL, FLOOR(m.[9_GY])) AS [9 GY],
IIF(m.[10_E]=0, NULL, FLOOR(m.[10_E])) AS [10 E],
IIF(m.[10_GY]=0, NULL, FLOOR(m.[10_GY])) AS [10 GY],
IIF(m.[11_E]=0, NULL, FLOOR(m.[11_E])) AS [11 E],
IIF(m.[11_GY]=0, NULL, FLOOR(m.[11_GY])) AS [11 GY],
IIF(m.[12_E]=0, NULL, FLOOR(m.[12_E])) AS [12 E],
IIF(m.[12_GY]=0, NULL, FLOOR(m.[12_GY])) AS [12 GY],
IIF(m.[13_E]=0, NULL, FLOOR(m.[13_E])) AS [13 E],
IIF(m.[13_GY]=0, NULL, FLOOR(m.[13_GY])) AS [13 GY],
IIF(m.[14_E]=0, NULL, FLOOR(m.[14_E])) AS [14 E],
IIF(m.[14_GY]=0, NULL, FLOOR(m.[14_GY])) AS [14 GY],
IIF(m.[15_E]=0, NULL, FLOOR(m.[15_E])) AS [15 E],
IIF(m.[15_GY]=0, NULL, FLOOR(m.[15_GY])) AS [15 GY],
IIF(m.[16_E]=0, NULL, FLOOR(m.[16_E])) AS [16 E],
IIF(m.[16_GY]=0, NULL, FLOOR(m.[16_GY])) AS [16 GY],
IIF(m.[17_E]=0, NULL, FLOOR(m.[17_E])) AS [17 E],
IIF(m.[17_GY]=0, NULL, FLOOR(m.[17_GY])) AS [17 GY],
IIF(m.[18_E]=0, NULL, FLOOR(m.[18_E])) AS [18 E],
IIF(m.[18_GY]=0, NULL, FLOOR(m.[18_GY])) AS [18 GY],
IIF(m.[19_E]=0, NULL, FLOOR(m.[19_E])) AS [19 E],
IIF(m.[19_GY]=0, NULL, FLOOR(m.[19_GY])) AS [19 GY],
IIF(m.[20_E]=0, NULL, FLOOR(m.[20_E])) AS [20 E],
IIF(m.[20_GY]=0, NULL, FLOOR(m.[20_GY])) AS [20 GY],
IIF(m.[21_E]=0, NULL, FLOOR(m.[21_E])) AS [21 E],
IIF(m.[21_GY]=0, NULL, FLOOR(m.[21_GY])) AS [21 GY],
IIF(m.[22_E]=0, NULL, FLOOR(m.[22_E])) AS [22 E],
IIF(m.[22_GY]=0, NULL, FLOOR(m.[22_GY])) AS [22 GY],
IIF(m.[23_E]=0, NULL, FLOOR(m.[23_E])) AS [23 E],
IIF(m.[23_GY]=0, NULL, FLOOR(m.[23_GY])) AS [23 GY],
IIF(m.[24_E]=0, NULL, FLOOR(m.[24_E])) AS [24 E],
IIF(m.[24_GY]=0, NULL, FLOOR(m.[24_GY])) AS [24 GY],
IIF(m.[25_E]=0, NULL, FLOOR(m.[25_E])) AS [25 E],
IIF(m.[25_GY]=0, NULL, FLOOR(m.[25_GY])) AS [25 GY],
IIF(m.[26_E]=0, NULL, FLOOR(m.[26_E])) AS [26 E],
IIF(m.[26_GY]=0, NULL, FLOOR(m.[26_GY])) AS [26 GY],
IIF(m.[27_E]=0, NULL, FLOOR(m.[27_E])) AS [27 E],
IIF(m.[27_GY]=0, NULL, FLOOR(m.[27_GY])) AS [27 GY],
IIF(m.[28_E]=0, NULL, FLOOR(m.[28_E])) AS [28 E],
IIF(m.[28_GY]=0, NULL, FLOOR(m.[28_GY])) AS [28 GY],
IIF(m.[29_E]=0, NULL, FLOOR(m.[29_E])) AS [29 E],
IIF(m.[29_GY]=0, NULL, FLOOR(m.[29_GY])) AS [29 GY],
IIF(m.[30_E]=0, NULL, FLOOR(m.[30_E])) AS [30 E],
IIF(m.[30_GY]=0, NULL, FLOOR(m.[30_GY])) AS [30 GY],
IIF(m.[31_E]=0, NULL, FLOOR(m.[31_E])) AS [31 E],
FLOOR(osszes_e.MULASZTASOKSZAMA) AS COLUMN2672_E,
FLOOR(igazolt_e.IGAZOLTSZAMA) AS COLUMN2568_E,
' + @colsHeader_E + ',
FLOOR(igazolatlan_e.IGAZOLATLANSZAMA) AS COLUMN1911_E,
FLOOR(osszes_gy.MULASZTASOKSZAMA) AS COLUMN2672_GY,
FLOOR(igazolt_gy.IGAZOLTSZAMA) AS COLUMN2568_GY,
' + @colsHeader_GY + ',
FLOOR(igazolatlan_gy.IGAZOLATLANSZAMA) AS COLUMN1911_GY,
TELJESNAPOSMULASZTAS.HianyzasErtek AS COLUMNTELJESNAPOSMULASZTASOK,
igazoltkeses_e.IGAZOLTPERC AS COLUMNIGAZOLTKESESPERCBEN_E,
igazoltkeses_gy.IGAZOLTPERC AS COLUMNIGAZOLTKESESPERCBEN_GY,
igazolatlankeses_e.IGAZOLATLANPERC AS COLUMNIGAZOLATLANKESESPERCBEN_E,
igazolatlankeses_gy.IGAZOLATLANPERC AS COLUMNIGAZOLATLANKESESPERCBEN_GY
FROM #tanulo AS tanulok
LEFT JOIN (
SELECT Tanulo, ' + @colsSum_E + '
FROM (
SELECT *
FROM #igazolas AS igazolasok
WHERE Gyakorlati = ''F'' OR Gyakorlati IS NULL
) AS igazolasok
PIVOT (SUM(HianyzasErtek) FOR IgazolasTipus IN (' + @cols_E + ')) AS PIVOTTABLE_E
GROUP BY Tanulo
) AS IGAZOLASTIPUSOKSZERINT_E ON IGAZOLASTIPUSOKSZERINT_E.Tanulo = tanulok.Id
LEFT JOIN (
SELECT Tanulo, ' + @colsSum_Gy + '
FROM (
SELECT Tanulo, IgazoltE, -IgazolasTipus AS IgazolasTipus, Gyakorlati, HianyzasErtek
FROM #igazolas AS igazolasok
WHERE Gyakorlati = ''T''
) AS igazolasok
PIVOT (SUM(HianyzasErtek) FOR IgazolasTipus IN (' + @cols_GY + ')) AS PIVOTTABLE_GY
GROUP BY Tanulo
) AS IGAZOLASTIPUSOKSZERINT_GY ON IGAZOLASTIPUSOKSZERINT_GY.Tanulo = tanulok.Id
LEFT JOIN (
SELECT Tanulo, HianyzasErtek
FROM #teljesnaposmul AS teljesnaposmul
) AS TELJESNAPOSMULASZTAS ON TELJESNAPOSMULASZTAS.Tanulo = tanulok.Id
LEFT JOIN (
SELECT
Tanulo,
SUM([1_E]) AS [1_E],
SUM([2_E]) AS [2_E],
SUM([3_E]) AS [3_E],
SUM([4_E]) AS [4_E],
SUM([5_E]) AS [5_E],
SUM([6_E]) AS [6_E],
SUM([7_E]) AS [7_E],
SUM([8_E]) AS [8_E],
SUM([9_E]) AS [9_E],
SUM([10_E]) AS [10_E],
SUM([11_E]) AS [11_E],
SUM([12_E]) AS [12_E],
SUM([13_E]) AS [13_E],
SUM([14_E]) AS [14_E],
SUM([15_E]) AS [15_E],
SUM([16_E]) AS [16_E],
SUM([17_E]) AS [17_E],
SUM([18_E]) AS [18_E],
SUM([19_E]) AS [19_E],
SUM([20_E]) AS [20_E],
SUM([21_E]) AS [21_E],
SUM([22_E]) AS [22_E],
SUM([23_E]) AS [23_E],
SUM([24_E]) AS [24_E],
SUM([25_E]) AS [25_E],
SUM([26_E]) AS [26_E],
SUM([27_E]) AS [27_E],
SUM([28_E]) AS [28_E],
SUM([29_E]) AS [29_E],
SUM([30_E]) AS [30_E],
SUM([31_E]) AS [31_E],
SUM([1_GY]) AS [1_GY],
SUM([2_GY]) AS [2_GY],
SUM([3_GY]) AS [3_GY],
SUM([4_GY]) AS [4_GY],
SUM([5_GY]) AS [5_GY],
SUM([6_GY]) AS [6_GY],
SUM([7_GY]) AS [7_GY],
SUM([8_GY]) AS [8_GY],
SUM([9_GY]) AS [9_GY],
SUM([10_GY]) AS [10_GY],
SUM([11_GY]) AS [11_GY],
SUM([12_GY]) AS [12_GY],
SUM([13_GY]) AS [13_GY],
SUM([14_GY]) AS [14_GY],
SUM([15_GY]) AS [15_GY],
SUM([16_GY]) AS [16_GY],
SUM([17_GY]) AS [17_GY],
SUM([18_GY]) AS [18_GY],
SUM([19_GY]) AS [19_GY],
SUM([20_GY]) AS [20_GY],
SUM([21_GY]) AS [21_GY],
SUM([22_GY]) AS [22_GY],
SUM([23_GY]) AS [23_GY],
SUM([24_GY]) AS [24_GY], SUM([25_GY]) AS [25_GY], SUM([26_GY]) AS [26_GY], SUM([27_GY]) AS [27_GY], SUM([28_GY]) AS [28_GY], SUM([29_GY]) AS [29_GY],SUM([30_GY]) AS [30_GY], SUM([31_GY]) AS [31_GY]
FROM #mulasztas AS m
PIVOT (SUM(HianyzasErtek) for Nap in
(
[1_E],[2_E],[3_E],[4_E],[5_E],[6_E],[7_E],[8_E],[9_E],[10_E],[11_E],[12_E],[13_E],[14_E],[15_E],[16_E],[17_E],[18_E],[19_E],[20_E],[21_E],[22_E],[23_E],[24_E],[25_E],[26_E],[27_E],[28_E],[29_E],[30_E],[31_E],
[1_GY],[2_GY],[3_GY],[4_GY],[5_GY],[6_GY],[7_GY],[8_GY],[9_GY],[10_GY],[11_GY],[12_GY],[13_GY],[14_GY],[15_GY],[16_GY],[17_GY],[18_GY],[19_GY],[20_GY],[21_GY],[22_GY],[23_GY],[24_GY],[25_GY],[26_GY],[27_GY],[28_GY],[29_GY],[30_GY],[31_GY]
)
) pv
GROUP BY Tanulo
) m ON m.Tanulo = tanulok.id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS MULASZTASOKSZAMA FROM #igazolas WHERE (Gyakorlati = ''F'' OR Gyakorlati IS NULL) GROUP BY Tanulo) AS Osszes_E ON Osszes_E.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS IGAZOLTSZAMA FROM #igazolas i WHERE (Gyakorlati = ''F'' OR Gyakorlati IS NULL) AND i.IgazoltE=''T'' GROUP BY Tanulo) AS Igazolt_E ON Igazolt_E.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS IGAZOLATLANSZAMA FROM #igazolas i WHERE (Gyakorlati = ''F'' OR Gyakorlati IS NULL) AND i.IgazoltE=''F'' GROUP BY Tanulo) AS Igazolatlan_E ON Igazolatlan_E.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS MULASZTASOKSZAMA FROM #igazolas WHERE Gyakorlati = ''T'' GROUP BY Tanulo) AS Osszes_Gy ON Osszes_Gy.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS IGAZOLTSZAMA FROM #igazolas i WHERE Gyakorlati = ''T'' AND i.IgazoltE=''T'' GROUP BY Tanulo) AS Igazolt_Gy ON Igazolt_Gy.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS IGAZOLATLANSZAMA FROM #igazolas i WHERE Gyakorlati = ''T'' AND i.IgazoltE=''F'' GROUP BY Tanulo) AS Igazolatlan_Gy ON Igazolatlan_Gy.Tanulo = tanulok.Id'
SET @query +=
' LEFT JOIN (SELECT Tanulo, SUM(KesettPerc) AS IGAZOLTPERC FROM #igazolas i WHERE (Gyakorlati = ''F'' OR Gyakorlati IS NULL) AND i.IgazoltE=''T'' GROUP BY Tanulo) AS igazoltkeses_e ON igazoltkeses_e.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(KesettPerc) AS IGAZOLTPERC FROM #igazolas i WHERE Gyakorlati = ''T'' AND i.IgazoltE=''T'' GROUP BY Tanulo) AS igazoltkeses_gy ON igazoltkeses_gy.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(KesettPerc) AS IGAZOLATLANPERC FROM #igazolas i WHERE (Gyakorlati = ''F'' OR Gyakorlati IS NULL) AND (i.IgazoltE=''F'' OR i.IgazoltE IS NULL) GROUP BY Tanulo) AS igazolatlankeses_e ON igazolatlankeses_e.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(KesettPerc) AS IGAZOLATLANPERC FROM #igazolas i WHERE Gyakorlati = ''T'' AND (i.IgazoltE=''F'' OR i.IgazoltE IS NULL) GROUP BY Tanulo) AS igazolatlankeses_gy ON igazolatlankeses_gy.Tanulo = tanulok.Id
INNER JOIN T_FELHASZNALO_OSSZES f ON f.id = tanulok.Id
ORDER BY f.c_nyomtatasinev';
exec sp_executesql @query;
END
DROP TABLE #mulasztas
DROP TABLE #tanulo
DROP TABLE #igazolas
DROP TABLE #igazolastipus
DROP TABLE #teljesnaposmul
END
GO
@@ -0,0 +1,249 @@
DROP PROCEDURE IF EXISTS sp_GetTanuloiAdatlapAdatok
GO
CREATE PROCEDURE [dbo].[sp_GetTanuloiAdatlapAdatok]
@osztCsopID INT,
@TanevId INT
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #JogviszonyVege (TanuloId int,Datum date)
INSERT INTO #JogviszonyVege
SELECT
TanuloId
,MAX(C_KILEPESDATUM)
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztCsopID, 'T') Tanulok
INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_TANULOID = Tanulok.TanuloId AND TanuloCsoport.TOROLT = 'F' AND TanuloCsoport.C_TANEVID = @TanevId
INNER JOIN T_OSZTALY_OSSZES Osztaly ON Osztaly.ID = TanuloCsoport.C_OSZTALYCSOPORTID AND Osztaly.TOROLT = 'F' AND C_ALTANEVID = @TanevId
GROUP BY TanuloId
DECLARE @DefaultFeladatKategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztCsopID)
--Fejléc
SELECT
T_INTEZMENYADATOK_OSSZES.C_NEV IntezmenyNeve,
T_INTEZMENYADATOK_OSSZES.C_VAROS IntezmenyVaros,
dbo.fnGetDokumentumIntezmenyCime(@tanevId) IntezmenyCime,
T_INTEZMENYADATOK_OSSZES.C_OMKOD OMKod,
T_INTEZMENYADATOK_OSSZES.C_TELEFONSZAM TELEFON,
T_INTEZMENYADATOK_OSSZES.C_EMAILCIM EMAILCIM,
T_TANEV_OSSZES.C_NEV TANEV,
o.C_OSZTALYFONOKID PartnerID,
f.C_NYOMTATASINEV OSZTALYFONOK,
ocs.C_NEV OSZTALYNEV
,@osztCsopID OsztalyId
FROM T_INTEZMENYADATOK_OSSZES
INNER JOIN T_TANEV_OSSZES on T_TANEV_OSSZES.ID = T_INTEZMENYADATOK_OSSZES.C_TANEVID and T_TANEV_OSSZES.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = @osztCsopID AND ocs.TOROLT = 'F' AND ocs.C_FELADATKATEGORIAID = @DefaultFeladatKategoriaId
LEFT JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F'
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = o.C_OSZTALYFONOKID AND f.TOROLT = 'F'
WHERE
T_INTEZMENYADATOK_OSSZES.TOROLT = 'F'
AND T_INTEZMENYADATOK_OSSZES.C_TANEVID = @TanevId
CREATE TABLE #EmailCimTableTemp (FelhasznaloId INT, EmailCim NVARCHAR(MAX))
INSERT INTO #EmailCimTableTemp
SELECT
TanuloId
,C_EMAILCIM
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztCsopID, 'T') tanulo
INNER JOIN T_EMAIL_OSSZES email ON email.C_FELHASZNALOID = TanuloId
WHERE
email.TOROLT = 'F'
AND email.C_TANEVID = @TanevId
AND LEN(C_EMAILCIM) > 0
CREATE TABLE #EmailCimTable (FelhasznaloId INT, EmailCim NVARCHAR(MAX))
INSERT INTO #EmailCimTable
SELECT DISTINCT
FelhasznaloId
,STUFF((
SELECT DISTINCT CAST(Btemp.EmailCim AS NVARCHAR(MAX)) + CHAR(13) + CHAR(10)
FROM #EmailCimTableTemp btemp
WHERE
temp.FelhasznaloId = btemp.FelhasznaloId
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'') Email
FROM #EmailCimTableTemp temp
CREATE TABLE #TelefonszamTableTemp (FelhasznaloId INT, Telefonszam NVARCHAR(MAX))
INSERT INTO #TelefonszamTableTemp
SELECT
TanuloId
,C_TELEFONSZAM
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztCsopID, 'T') tanulo
INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_FELHASZNALOID = TanuloId
WHERE
telefon.TOROLT = 'F'
AND telefon.C_TANEVID = @TanevId
AND LEN(C_TELEFONSZAM) > 0
CREATE TABLE #TelefonszamTable (FelhasznaloId INT, Telefonszam NVARCHAR(MAX))
INSERT INTO #TelefonszamTable
SELECT DISTINCT
FelhasznaloId
,STUFF((
SELECT DISTINCT CAST(Btemp.Telefonszam AS NVARCHAR(MAX)) + CHAR(13) + CHAR(10)
FROM #TelefonszamTableTemp btemp
WHERE
temp.FelhasznaloId = btemp.FelhasznaloId
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'') Telefonszam
FROM #TelefonszamTableTemp temp
CREATE TABLE #TanuloCimTable (FelhasznaloId INT, Cim NVARCHAR(MAX), Cimtipusa INT)
INSERT INTO #TanuloCimTable
SELECT DISTINCT
TanuloId
,STUFF((
SELECT CAST(Btemp.Cim AS NVARCHAR(MAX)) + CHAR(13) + CHAR(10)
FROM fnGetDokumentumTanuloOrGondviseloCim(0, @tanevId, @osztCsopID) btemp
WHERE
temp.TanuloId = btemp.TanuloId
AND temp.CimTipusa = btemp.CimTipusa
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'') Cim
,temp.CimTipusa
FROM fnGetDokumentumTanuloOrGondviseloCim(0, @tanevId, @osztCsopID) temp
CREATE TABLE #GondviselokTableTemp (FelhasznaloId INT, Gondviselo NVARCHAR(MAX))
INSERT INTO #GondviselokTableTemp
SELECT
Gondviselo.TanuloId TanuloId
,Gondviselo.GondviseloNev + ISNULL('('+rokonsagiFoka.C_NAME+')', '') Gondviselo
FROM fnGetDokumentumGondviselok (@osztCsopID, @tanevId, 'F', 'T') Gondviselo
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES rokonsagiFoka ON Gondviselo.RokonsagifokId = rokonsagiFoka.ID AND rokonsagiFoka.C_TANEVID = @TanevId
CREATE TABLE #GondviselokTable (FelhasznaloId INT, Gondviselo NVARCHAR(MAX))
INSERT INTO #GondviselokTable
SELECT DISTINCT
FelhasznaloId
,STUFF((
SELECT ', ' + btemp.Gondviselo
FROM #GondviselokTableTemp btemp
WHERE
temp.FelhasznaloId = btemp.FelhasznaloId
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,'') Gondviselo
FROM #GondviselokTableTemp temp
--Tanulók Adatai
SELECT DISTINCT
tta.C_BEIRASINAPLOSORSZAM,
tanulok.NaploSorszam NaploSorszam,
tanulok.TorzslapSzam TorzslapSzam,
T_TANEV_OSSZES.C_NEV TANEV,
T_OSZTALYCSOPORT_OSSZES.C_NEV OSZTALYNEV,
T_OSZTALY_OSSZES.C_KEPZESIFORMA Kepzesiforma,
T_FELHASZNALO_OSSZES.C_NYOMTATASINEV NEV,
gondviselo.Gondviselo GONDVISELO,
T_FELHASZNALO_OSSZES.C_SZULETESINEV SZULETESINEV,
T_FELHASZNALO_OSSZES.C_ANYJANEVE ANYJANEVE,
T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO,
T_FELHASZNALO_OSSZES.C_SZULETESIHELY,
T_FELHASZNALO_OSSZES.C_SZULETESIORSZAG Szuletesiorszag,
FORMAT(T_FELHASZNALO_OSSZES.C_SZULETESIDATUM, 'yyyy.MM.dd.') C_SZULETESIDATUM,
T_FELHASZNALO_OSSZES.C_ALLAMPOLGARSAGA Allampolgarsag,
T_FELHASZNALO_OSSZES.C_ANYANYELVE Anyanyelv,
tta.C_NYILVANTARTASKEZDETE,
tta.C_TANKOTELEZETT Tankotelezett,
tta.C_TANKOTELEZETTSEGVEGE,
tta.C_JOGVISZONYVARHATOBEFEJEZESE,
T_TANULO_OSSZES.C_DIAKIGAZOLVANYSZAM,
T_TANULO_OSSZES.C_DIAKIGAZOLVANYKELTE,
T_TANULO_OSSZES.C_BANKSZAMLASZAM,
AllandoLakcim.Cim,
TartozkodasiHely.CIM TartozkodasiHely,
telefon.Telefonszam C_TELEFONSZAM,
email.EmailCim C_EMAILCIM,
tta.C_BEJARO Bejaro,
tta.C_SZAKMAIGYAKORLATON Szakmaigyak,
tta.C_VENDEG Vendeg,
tta.C_JOGVISZONYATSZUNETELTETO Jogviszonyszunetelteto,
tta.C_MAGANTANULO Magantanulo,
maganTanuloOk.C_NAME as C_MAGANTANULOSAGANAKOKA,
tta.C_MAGANTANULOSAGKEZDETE,
T_TANULO_OSSZES.C_SZAKKEPESITESSZAMA,
T_TANULO_OSSZES.C_TANULOIJOGVISZONYOSELTARTOTT,
T_TANULO_OSSZES.C_TOBBGYERMEKIGAZOLASSZAMA,
tta.C_EVISMETLO Evismetlo,
T_TANULO_OSSZES.C_SZOCIALISTAMOGATAS Szoctam,
T_TANULO_OSSZES.C_HATRANYOSHELYZETU,
T_TANULO_OSSZES.C_VESZELYEZTETETT Veszelyeztetett,
T_TANULO_OSSZES.C_HALMOZOTTANFOGYATEKOS Halmfogyatekos,
T_TANULO_OSSZES.C_ETKEZESIKEDVEZMENY,
tta.C_TERITESIDIJATFIZETO Teriteses,
tta.C_TANDIJATFIZETO Tandijas,
T_TANULO_OSSZES.C_INGYENESTANKONVYELLATASA,
tta.C_TANULOSZERZODESES Tanszerzodeses,
tta.C_POLGARISZERZODESES Polgszerzodeses,
T_TANULO_OSSZES.C_RENDSZERESGYERMEKVEDELMIKEDV,
T_TANULO_OSSZES.C_ALLAMIGONDOZOTT Allamigond,
T_TANULO_OSSZES.C_KOLLEGIUMIELLATASOS Kollegiumi,
T_TANULO_OSSZES.C_TARTOSGYOGYKEZELESSZAMA,
T_TANULO_OSSZES.C_SAJATOSNEVELESU Sajatosnevelesu,
T_TANULO_OSSZES.C_SNILETSZAMSULY,
T_TANULO_OSSZES.C_SNIKIALLITOINTEZMENY,
FORMAT(T_TANULO_OSSZES.C_SNIOKMANYERVENYESSEGKEZDETE, 'yyyy.MM.dd.') C_SNIOKMANYERVENYESSEGKEZDETE,
T_TANULO_OSSZES.C_BTMPROBLEMAS Btmproblemas,
T_TANULO_OSSZES.C_BTMLETSZAMSULY,
T_TANULO_OSSZES.C_BTMHATAROZATOKMANYSZAM,
FORMAT(T_TANULO_OSSZES.C_BTMOKMANYERVENYESSEGKEZDETE, 'yyyy.MM.dd.') C_BTMOKMANYERVENYESSEGKEZDETE,
T_TANULO_OSSZES.C_BTMKIALLITOINTEZMENY,
T_TANULO_OSSZES.C_ELSOINTEZMENYOMKOD,
T_FELHASZNALO_OSSZES.C_IGAZOLVANYSZAM,
igazolvanyTipusa.C_NAME AS IgazolvanyTipusa
,T_TANULO_OSSZES.ID AS TanuloId
,@osztCsopID AS OsztalyId
,JogviszonyVege.Datum JogviszonyVege
FROM T_FELHASZNALO_OSSZES
INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztCsopID, 'T') tanulok ON tanulok.TanuloId = T_FELHASZNALO_OSSZES.Id
INNER JOIN T_TANULO_OSSZES on T_TANULO_OSSZES.ID = T_FELHASZNALO_OSSZES.ID
INNER JOIN T_TANULOCSOPORT_OSSZES on T_TANULOCSOPORT_OSSZES.C_TANULOID = T_FELHASZNALO_OSSZES.ID
LEFT JOIN T_OSZTALYCSOPORT_OSSZES on T_OSZTALYCSOPORT_OSSZES.ID = T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID AND T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @DefaultFeladatKategoriaId
INNER JOIN T_OSZTALY_OSSZES on T_OSZTALY_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.ID
LEFT JOIN fnGetOsztalyCsoportTanuloinakTanugyiAdatai (@osztCsopID,default) tta ON tta.TanuloId=T_FELHASZNALO_OSSZES.ID
LEFT JOIN T_TANEV_OSSZES on T_TANEV_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID
LEFT JOIN #TelefonszamTable telefon on telefon.FelhasznaloId = T_FELHASZNALO_OSSZES.ID
LEFT JOIN #EmailCimTable email on email.FelhasznaloId = T_FELHASZNALO_OSSZES.ID
LEFT JOIN #GondviselokTable gondviselo on gondviselo.FelhasznaloId = T_FELHASZNALO_OSSZES.ID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES igazolvanyTipusa ON T_FELHASZNALO_OSSZES.C_IGAZOLVANYTIPUSA = igazolvanyTipusa.ID AND igazolvanyTipusa.C_TANEVID = @TanevId
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES maganTanuloOk ON tta.C_MAGANTANULOSAGANAKOKAID = maganTanuloOk.ID AND maganTanuloOk.C_TANEVID = @TanevId AND maganTanuloOk.TOROLT='F'
LEFT JOIN #TanuloCimTable AllandoLakcim ON AllandoLakcim.FelhasznaloId = T_FELHASZNALO_OSSZES.ID AND AllandoLakcim.Cimtipusa = 907
LEFT JOIN #TanuloCimTable TartozkodasiHely ON TartozkodasiHely.FelhasznaloId = T_FELHASZNALO_OSSZES.ID AND TartozkodasiHely.Cimtipusa = 909
INNER JOIN #JogviszonyVege JogviszonyVege ON JogviszonyVege.TanuloId = tanulok.TanuloId
WHERE
T_FELHASZNALO_OSSZES.TOROLT = 'F'
AND T_TANEV_OSSZES.TOROLT = 'F'
AND T_TANULOCSOPORT_OSSZES.TOROLT = 'F'
AND T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F'
ORDER BY T_FELHASZNALO_OSSZES.C_NYOMTATASINEV
SELECT
o.ID AS OsztalyId
,ocs.C_EVFOLYAMTIPUSA AS EvfolyamTipusa
,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
,o.C_KEPZESIFORMA AS KepzesiForma
,o.C_OSZTALYFONOKID AS OsztalyfonokId
,o.C_TANTERVID AS TantervId
,o.C_SZAKMACSOPORT AS SzakmaCsoport
,o.C_AGAZAT AS Agazat
,o.C_SZAKKEPESITES AS Szakkepesites
,o.C_RESZSZAKKEPESITES AS Reszszakkepesites
,ocs.C_KERESZTFELEVES OJCSJKeresztfeleves
,ocs.C_VEGZOSEVFOLYAM CSJVegzosEvfolyamu
,o.C_TECHNIKAIOSZTALY OJTechnikaiOsztaly
,o.C_NEMZETISEGI OJNemzetisegi
,o.C_KETTANNYELVU OJKettannyelvu
,o.C_NYELVIELOKESZITO OJNyelviElokeszito
,o.C_LOGOPEDIAI OJLogopediai
,o.C_SPORT OJSportOsztaly
,o.C_AJPROGRAM OJAranyJanosProgram
,o.C_GYOGYPEDAGOGIAI OJGyogypedagogiai
FROM T_OSZTALY_OSSZES AS o
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID AND ocs.TOROLT = 'F'
WHERE o.ID = @osztCsopID
END
GO
@@ -0,0 +1,139 @@
DROP PROCEDURE IF EXISTS dbo.sp_GetTanulokTantargyMulasztasokReszletezese
GO
CREATE PROCEDURE [dbo].[sp_GetTanulokTantargyMulasztasokReszletezese]
@pOsztalyId int
,@pTanevId int
,@pIskolaErdekuSzamit bit
AS BEGIN
SET NOCOUNT ON;
CREATE TABLE #MulasztasOsztalyonkent(
TantargyId int
,Tipusa int
,IgazolasTipusa int
,OsztalyCsoportId int
,TanuloId int
,TantargyNev nvarchar(1000)
,OsztalyCsoportNev nvarchar(510)
,Igazolt char(1)
,KesesPercben int
,Datum date
,OraszamWithOrakezdeteVege nvarchar(50)
)
INSERT INTO #MulasztasOsztalyonkent(
TantargyId
,Tipusa
,IgazolasTipusa
,OsztalyCsoportId
,TanuloID
,TantargyNev
,OsztalyCsoportNev
,Igazolt
,KesesPercben
,Datum
,OraszamWithOrakezdeteVege
) SELECT
TantargyId
,Tipusa
,IgazolasTipusa
,OsztalyCsoportId
,TanuloID
,TantargyNev
,OsztalyCsoportNev
,Igazolt
,KesesPercben
,Datum
,OraszamWithOrakezdeteVege
FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes (@pTanevId, @pOsztalyId, @pIskolaErdekuSzamit, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT)
/*FEJLEC*/
SELECT
IntezmenyAdat.C_NEV as IntezmenyNeve
,IntezmenyAdat.C_OMKOD as IntezmenyOMKod
,IntezmenyAdat.C_IGAZGATONEVE IntezmenyVezeto
,dbo.fnGetDokumentumIntezmenyCime(@pTanevId) as IntezmenyCime
,IntezmenyAdat.C_VAROS as IntezmenyVaros
,(SELECT C_NEV FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @pOsztalyId) as OsztalyCsoportNev
,@pOsztalyId as OsztalyId
,ofo.C_NYOMTATASINEV as OsztalyfonokNev
FROM T_INTEZMENYADATOK_OSSZES IntezmenyAdat
INNER JOIN T_OSZTALY_OSSZES AS o ON o.ID = @pOsztalyId AND o.TOROLT='F'
LEFT JOIN T_FELHASZNALO_OSSZES AS ofo ON ofo.ID = o.C_OSZTALYFONOKID AND ofo.TOROLT='F'
WHERE INTEZMENYADAT.C_TANEVID = @pTanevId AND IntezmenyAdat.TOROLT='F'
/*TANULOK*/
SELECT
TanuloId
,Felhasznalo.C_NYOMTATASINEV as TanuloNev
,@pOsztalyId as OsztalyCsoportId
,Felhasznalo.C_OKTATASIAZONOSITO as TanuloOktAzon
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'T') Tanulok
INNER JOIN T_FELHASZNALO_OSSZES Felhasznalo ON Felhasznalo.ID = Tanulok.TanuloId AND Felhasznalo.TOROLT='F'
ORDER BY Felhasznalo.C_NYOMTATASINEV
/*MULASZTOTT TANTARGY*/
SELECT DISTINCT
TanuloId
,TargyakRendezes.C_ORDER
,TantargyId
,TantargyNev as TantargyNev
,COUNT(1) as COUNT
FROM #MulasztasOsztalyonkent MulasztasokOsztalyonkent
INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.ID = MulasztasokOsztalyonkent.TantargyId AND Tantargy.TOROLT='F'
INNER JOIN T_DICTIONARYITEMBASE_OSSZES TargyakRendezes ON Tantargy.C_TARGYKATEGORIA = TargyakRendezes.ID AND TargyakRendezes.TOROLT = 'F' AND TargyakRendezes.C_TANEVID = @pTanevId
GROUP BY TanuloId, TantargyId, TantargyNev, TargyakRendezes.C_ORDER
ORDER BY TargyakRendezes.C_ORDER
SELECT
TanuloId
,OsztalyCsoportId
,OsztalyCsoportNev as OsztalyCsoportNev
,CASE
WHEN Igazolt = 'T' THEN 'Igen'
WHEN Igazolt = 'F' THEN 'Nem'
ELSE ''
END as Igazolt
,MulasztasTipus.C_NAME as Tipusa
,IgazolasTipus.C_NAME as IgazolasTipusa
,KesesPercben as Keses
,Datum as Datum
,OraszamWithOrakezdeteVege as Oraszam
,TantargyId
,Felhasznalo.C_NYOMTATASINEV as OsztalyfonokNev
FROM #MulasztasOsztalyonkent MulasztasokOsztalyonkent
INNER JOIN T_DICTIONARYITEMBASE_OSSZES MulasztasTipus ON MulasztasokOsztalyonkent.Tipusa = MulasztasTipus.ID AND MulasztasTipus.C_TANEVID = @pTanevId AND MulasztasTipus.TOROLT='F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES IgazolasTipus ON MulasztasokOsztalyonkent.IgazolasTipusa = IgazolasTipus.ID AND IgazolasTipus.C_TANEVID = @pTanevId AND IgazolasTipus.TOROLT='F'
LEFT JOIN T_OSZTALY_OSSZES Osztaly ON MulasztasokOsztalyonkent.OsztalyCsoportId = Osztaly.ID AND Osztaly.TOROLT='F'
LEFT JOIN T_FELHASZNALO_OSSZES Felhasznalo ON Osztaly.C_OSZTALYFONOKID = Felhasznalo.ID AND Felhasznalo.TOROLT='F'
ORDER BY Datum
SELECT
o.ID as OsztalyId
,ocs.C_EVFOLYAMTIPUSA as EvfolyamTipusa
,ocs.C_FELADATELLATASIHELYID as FeladatEllatasiHelyId
,o.C_KEPZESIFORMA as KepzesiForma
,o.C_OSZTALYFONOKID as OsztalyfonokId
,o.C_TANTERVID as TantervId
,o.C_SZAKMACSOPORT as SzakmaCsoport
,o.C_AGAZAT as Agazat
,o.C_SZAKKEPESITES as Szakkepesites
,o.C_RESZSZAKKEPESITES as Reszszakkepesites
,ocs.C_KERESZTFELEVES as OJCSJKeresztfeleves
,ocs.C_VEGZOSEVFOLYAM as CSJVegzosEvfolyamu
,o.C_TECHNIKAIOSZTALY as OJTechnikaiOsztaly
,o.C_NEMZETISEGI as OJNemzetisegi
,o.C_KETTANNYELVU as OJKettannyelvu
,o.C_NYELVIELOKESZITO as OJNyelviElokeszito
,o.C_LOGOPEDIAI as OJLogopediai
,o.C_SPORT as OJSportOsztaly
,o.C_AJPROGRAM as OJAranyJanosProgram
,o.C_GYOGYPEDAGOGIAI as OJGyogypedagogiai
FROM T_OSZTALY_OSSZES as o
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID AND ocs.TOROLT = 'F'
WHERE o.ID = @pOsztalyId AND o.TOROLT='F'
END
GO
@@ -0,0 +1,349 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS [dbo].[sp_Nyomtatvany_Excel_IdoszakiOsztalyStatisztika]
GO
CREATE PROCEDURE [dbo].[sp_Nyomtatvany_Excel_IdoszakiOsztalyStatisztika]
@pTanevId INT,
@pOsztalyId INT,
@pIntezmenyId INT,
@pErtekelestipusaId INT,
@pLezaroNaptipusId INT,
@pMulasztasTipusIdKeses INT = 1499,
@pMulasztasTipusIdHianyzas INT = 1500,
@pTanevrendjeTanevKezdeteNaptipusId INT = 1394, --Tanévrendje első nap típus
@pTanoraiDicseretTipusId INT = 1536, -- Tanórai dicséret
@pFelszereleshianyTipusId INT = 6324, -- Felszereléshiány
@pHaziFeladatHianyTipusId INT = 6325, -- Házi feladat hiány
@pAtsoroltTanuloAdatok INT = 1,
@pElmeletgyakorlat BIT = 0
AS
BEGIN
SET NOCOUNT ON;
--Const
DECLARE @ElsoFelveVege INT = 1400
DECLARE @IneVege INT = 1403
DECLARE @IIIneVege INT = 1404
DECLARE @UtolsoTanitasiNap INT = 1395
DECLARE @VegzosUtolsoTanitasiNap INT = 1402
DECLARE @kesespercHianyzashoz INT = 45
DECLARE @kesespercGyakHianyzashoz INT = 45
DECLARE @iskolaErdekuParam INT = 1683;
--Iskolaerdeku tavollet szamit
DECLARE @iskolaErdekuSzamit BIT = [dbo].fnGetRendszerbeallitasEnumBool(@iskolaErdekuParam, @pIntezmenyId, @pTanevId);
--Osztaly jellemzo
DECLARE @keresztFeleves BIT = (SELECT IIF(C_KERESZTFELEVES = 'T', 1, 0) FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @pOsztalyId)
DECLARE @vegzosEvfolyamu BIT = (SELECT IIF(C_VEGZOSEVFOLYAM = 'T', 1, 0) FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @pOsztalyId)
--Osztalyjellemzok alapjan a lezaro naptipus csereje
SET @pLezaroNaptipusId = (
IIF(@keresztFeleves = 0, IIF(@vegzosEvfolyamu = 1 AND @pLezaroNaptipusId = @UtolsoTanitasiNap, @VegzosUtolsoTanitasiNap, @pLezaroNaptipusId),
CASE
WHEN @pLezaroNaptipusId = @ElsoFelveVege THEN @UtolsoTanitasiNap
WHEN @pLezaroNaptipusId = @UtolsoTanitasiNap THEN @ElsoFelveVege
WHEN @pLezaroNaptipusId = @IneVege THEN @IIIneVege
WHEN @pLezaroNaptipusId = @IIIneVege THEN @IneVege
END)
)
CREATE TABLE #aktualisOsztalyCsoportok (OSZTALYCSOPORTID INT);
CREATE TABLE #osztalyTanulok (TANULOID INT PRIMARY KEY, BELEPESDATUM DATE, KILEPESDATUM DATE);
CREATE TABLE #szurtErtekeles (
T_TANULOERTEKELES_ID INT PRIMARY KEY, C_TANULOID INT, ERTEKELES NVARCHAR(MAX) COLLATE DATABASE_DEFAULT, ERTEKELES_SZOVEG_MEGJEGYZES NVARCHAR(MAX) COLLATE DATABASE_DEFAULT, C_ERTEKELESDATUM DATETIME,
C_TANTARGYID INT, TANTARGY_NEV NVARCHAR(255) COLLATE DATABASE_DEFAULT, TARGYKATEGORIA_NEV NVARCHAR(255) COLLATE DATABASE_DEFAULT, TARGYKATEGORIA_SORSZAM INT, T_TANTARGY_C_FOTARGYE CHAR(1) COLLATE DATABASE_DEFAULT, T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN CHAR(1) COLLATE DATABASE_DEFAULT, C_OSZTALYCSOPORTID INT
);
CREATE TABLE #szurtMulasztas (TIPUS_CHAR CHAR(1) COLLATE DATABASE_DEFAULT, C_TIPUS INT , C_IGAZOLT CHAR(1) COLLATE DATABASE_DEFAULT, C_TANULOID INT, C_GYAKORLATI CHAR(1) COLLATE DATABASE_DEFAULT, KESESPERC INT, MULASZTASOK_SZAMA INT, HOZOTTIGAZOLTMULTASZTASOK_SZAMA INT, HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA INT);
DECLARE @idoszakEleje DATE = (
SELECT ISNULL(
(SELECT TOP 1 C_DATUM
FROM T_TANEVRENDJE_OSSZES
LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE ON T_TANEVRENDJE_OSSZES.ID = T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID
WHERE C_TANEVID = @pTanevId AND C_NAPTIPUSA = @pTanevrendjeTanevKezdeteNaptipusId AND TOROLT = 'F' AND (C_OSZTALYCSOPORTID IS NULL OR C_OSZTALYCSOPORTID = @pOsztalyId)
ORDER BY C_OSZTALYCSOPORTID DESC),
(SELECT TOP 1 C_ELSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @pTanevId))
);
DECLARE @idoszakVege DATE = (
SELECT ISNULL(
(SELECT TOP 1 C_DATUM
FROM T_TANEVRENDJE_OSSZES
LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE ON T_TANEVRENDJE_OSSZES.ID = T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID
WHERE C_TANEVID = @pTanevId AND C_NAPTIPUSA = @pLezaroNaptipusId AND TOROLT = 'F' AND (C_OSZTALYCSOPORTID IS NULL OR C_OSZTALYCSOPORTID = @pOsztalyId)
ORDER BY C_OSZTALYCSOPORTID DESC),
GETDATE())
);
IF @pAtsoroltTanuloAdatok = 0
BEGIN
INSERT INTO #aktualisOsztalyCsoportok (OSZTALYCSOPORTID)
SELECT ID
FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@pOsztalyId, @pTanevId, DEFAULT)
--WHERE (ID IN (SELECT ID FROM T_OSZTALY_OSSZES) OR ID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@pTanevId))));
END
ELSE IF @pAtsoroltTanuloAdatok = 1
BEGIN
INSERT INTO #aktualisOsztalyCsoportok (OSZTALYCSOPORTID)
SELECT ID
FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@pOsztalyId, @pTanevId, DEFAULT)
--WHERE (ID IN (SELECT ID FROM T_OSZTALY_OSSZES) OR ID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@pTanevId))));
END
ELSE
BEGIN
INSERT INTO #aktualisOsztalyCsoportok (OSZTALYCSOPORTID)
SELECT ID
FROM fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyId, @idoszakEleje, @idoszakVege)
WHERE (ID IN (SELECT ID FROM T_OSZTALY_OSSZES) OR ID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@pTanevId))));
END
-- TANULÓK
INSERT INTO #osztalyTanulok (TANULOID, BELEPESDATUM, KILEPESDATUM)
SELECT T_FELHASZNALO_OSSZES.ID AS TANULOID, C_BELEPESDATUM, C_KILEPESDATUM
FROM T_FELHASZNALO_OSSZES
INNER JOIN (
SELECT C_TANULOID, C_OSZTALYCSOPORTID, C_BELEPESDATUM, C_KILEPESDATUM
FROM T_TANULOCSOPORT_OSSZES
WHERE T_TANULOCSOPORT_OSSZES.TOROLT = 'F' AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < @idoszakVege
AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= @idoszakVege)
) AS TANCSOPORT ON TANCSOPORT.C_TANULOID = T_FELHASZNALO_OSSZES.ID
WHERE T_FELHASZNALO_OSSZES.TOROLT = 'F' AND TANCSOPORT.C_OSZTALYCSOPORTID = @pOsztalyId AND T_FELHASZNALO_OSSZES.C_TANEVID = @pTanevId;
-- OSZTÁLY
SELECT T_OSZTALY_OSSZES.ID, C_NEV, C_VEGZOSEVFOLYAM, T_FELHASZNALO_OSSZES.C_NYOMTATASINEV, C_OSZTALYNAPLOMEGNYITASA, C_OSZTALYNAPLOZARASA, C_OSZTALYFONOKID
FROM T_OSZTALY_OSSZES
INNER JOIN T_OSZTALYCSOPORT_OSSZES ON T_OSZTALYCSOPORT_OSSZES.ID = T_OSZTALY_OSSZES.ID
LEFT JOIN T_FELHASZNALO_OSSZES ON T_OSZTALY_OSSZES.C_OSZTALYFONOKID = T_FELHASZNALO_OSSZES.ID
INNER JOIN T_FELADATELLATASIHELY_OSSZES ON T_FELADATELLATASIHELY_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_FELADATELLATASIHELYID
WHERE T_OSZTALYCSOPORT_OSSZES.ID = @pOsztalyId;
--TANULÓK LISTA
SELECT T_FELHASZNALO_OSSZES.ID AS C_TANULOID, T_FELHASZNALO_OSSZES.C_NYOMTATASINEV AS TANULONEV, T_FELHASZNALO_OSSZES.C_ANYJANEVE ANYJANEVE, T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO AS OKTATASIAZONOSITO, BELEPESDATUM, KILEPESDATUM
FROM T_FELHASZNALO_OSSZES
INNER JOIN #osztalyTanulok AS OSZTALYTANULOK ON OSZTALYTANULOK.TANULOID = T_FELHASZNALO_OSSZES.ID
ORDER BY T_FELHASZNALO_OSSZES.C_NYOMTATASINEV;
-- ÉRTÉKELÉS
INSERT INTO #szurtErtekeles (T_TANULOERTEKELES_ID, C_TANULOID, ERTEKELES, ERTEKELES_SZOVEG_MEGJEGYZES, C_ERTEKELESDATUM, C_TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, T_TANTARGY_C_FOTARGYE, T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN, C_OSZTALYCSOPORTID)
SELECT ROW_NUMBER() OVER (ORDER BY TanuloId), TanuloId
,COALESCE(CAST(ErtekelesOsztalyzatValue AS NVARCHAR(MAX)),
IIF(ErtekelesSzoveg IS NOT NULL, CASE WHEN ErtekelesSzovegRovidNev IN ('1', '2', '3', '4', '5') THEN 'Sz' ELSE ErtekelesSzovegRovidNev END, NULL),
ErtekelesSzazalek)
,COALESCE(ErtekelesSzoveg, ErtekelesTema, ''), Datum,TantargyId, COALESCE(TantargyNevNyomtatvanyban, TantargyNev) AS TANTARGY_NEV, TARGYKATEG.C_NAME, TARGYKATEG.C_VALUE, FotargyE, Altantargy, OsztalyCsoportId
FROM fnGetDokumentumErtekelesekOsztalyonkent (@pTanevId, @pOsztalyId, @pErtekelestipusaId, DEFAULT, DEFAULT, @pAtsoroltTanuloAdatok, DEFAULT) AS ERTEKELESEK
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS TARGYKATEG ON TARGYKATEG.ID = ERTEKELESEK.TargyKategoriaId AND TARGYKATEG.C_TANEVID = @pTanevId
WHERE TantargyId IS NOT NULL AND (FotargyE = 'T' OR Altantargy = 'T')
-- TANTÁRGYAK (TANTÁRGYFELOSZTÁS, ÉRTÉKELÉS)
SELECT DISTINCT C_TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN
FROM (
SELECT DISTINCT C_TANTARGYID, COALESCE(TANTARGY.C_NEVNYOMTATVANYBAN, TANTARGY.C_NEV) AS TANTARGY_NEV, TARGYKATEG.C_NAME AS TARGYKATEGORIA_NEV, TARGYKATEG.C_VALUE AS TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN
FROM T_FOGLALKOZAS_OSSZES
INNER JOIN #aktualisOsztalyCsoportok AS OSZTALYCSOPORT ON OSZTALYCSOPORT.OSZTALYCSOPORTID = T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID
INNER JOIN T_TANTARGY_OSSZES AS TANTARGY ON TANTARGY.ID = T_FOGLALKOZAS_OSSZES.C_TANTARGYID AND TANTARGY.C_TANEVID = T_FOGLALKOZAS_OSSZES.C_TANEVID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS TARGYKATEG ON TARGYKATEG.ID = TANTARGY.C_TARGYKATEGORIA AND TARGYKATEG.C_TANEVID = @pTanevId
WHERE T_FOGLALKOZAS_OSSZES.TOROLT = 'F' AND (TANTARGY.C_FOTARGYE = 'T' OR C_ALTANTARGYKENTNYOMTATVANYBAN = 'T')
UNION
SELECT DISTINCT C_TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, T_TANTARGY_C_FOTARGYE AS C_FOTARGYE, T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN AS C_ALTANTARGYKENTNYOMTATVANYBAN
FROM #szurtErtekeles
WHERE (@pAtsoroltTanuloAdatok = 2 OR C_OSZTALYCSOPORTID IN (SELECT OSZTALYCSOPORTID FROM #aktualisOsztalyCsoportok))
) AS TANTARGYAK
ORDER BY TARGYKATEGORIA_SORSZAM, TANTARGY_NEV;
-- ÉRTÉKELÉS lista
SELECT *
FROM #szurtErtekeles;
--MAGATARTÁS-SZORGALOM
SELECT ROW_NUMBER() OVER (ORDER BY TanuloId) AS ID, TanuloId AS C_TANULOID,
COALESCE(CAST(MagatartasOsztalyzatValue AS NVARCHAR(MAX)), CAST(MagatartasErtekOsztalyzatkent AS NVARCHAR(MAX)), MagatartasSzovegRovidNev) AS MagatartasOsztalyzat, MagatartasErtek,
COALESCE(CAST(SzorgalomOsztalyzatValue AS NVARCHAR(MAX)), CAST(SzorgalomErtekOsztalyzatkent AS NVARCHAR(MAX)), SzorgalomSzovegRovidNev) AS SzorgalomOsztalyzat, SzorgalomErtek,
ErtekelesSzoveg AS C_ERTEKELESSZOVEG, Datum AS C_ERTEKELESDATUM, 'F' AS TOROLT
FROM fnGetDokumentumErtekelesekOsztalyonkent (@pTanevId, @pOsztalyId, @pErtekelestipusaId, DEFAULT, DEFAULT, @pAtsoroltTanuloAdatok, DEFAULT) AS ERTEKELESEK
WHERE TantargyId IS NULL AND (@pAtsoroltTanuloAdatok > 0 OR OsztalyCsoportId IN (SELECT OSZTALYCSOPORTID FROM #aktualisOsztalyCsoportok));
--MULASZTÁS
CREATE TABLE #Tanulok (TanuloId int)
CREATE TABLE #Tipusok (Tipus_Char CHAR(1),Igazolt CHAR(1), Tipus INT, Gyakorlati CHAR(1))
INSERT INTO #Tipusok (Tipus_Char,Igazolt,Tipus,Gyakorlati)VALUES
('H','T',1500,'T'),('H','F',1500,'T'),('K','T',1499,'T'),('K','F',1499,'T'),
('H','T',1500,'F'),('H','F',1500,'F'),('K','T',1499,'F'),('K','F',1499,'F')
INSERT INTO #Tanulok
SELECT DISTINCT
tcs.C_TANULOID
FROM T_TANULOCSOPORT_OSSZES tcs
WHERE tcs.C_OSZTALYCSOPORTID = @pOsztalyId AND tcs.TOROLT = 'F' AND tcs.C_TANEVID = @pTanevId
INSERT INTO #szurtMulasztas (TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, C_GYAKORLATI,KESESPERC,MULASZTASOK_SZAMA, HOZOTTIGAZOLTMULTASZTASOK_SZAMA, HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA)
SELECT Tipus_Char, Tipus,Igazolt,TanuloId, Gyakorlati,0,0,0,0
FROM #Tanulok CROSS APPLY #Tipusok
UPDATE szm SET
KESESPERC = m.KesesPercben
,MULASZTASOK_SZAMA = m.MULASZTASOK_SZAMA
,HOZOTTIGAZOLTMULTASZTASOK_SZAMA = ISNULL(IIF(szm.C_IGAZOLT = 'T',hianyzas.HOZOTTIGAZOLTHIANYZAS,0),0)
,HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA = ISNULL(IIF(szm.C_IGAZOLT = 'F',hianyzas.HOZOTTIGAZOLATLANHIANYZAS,0),0)
FROM #szurtMulasztas szm
LEFT JOIN
( SELECT m.Tipusa, m.Igazolt, m.TanuloId, m.Gyakorlati,SUM(ISNULL(KesesPercben,0)) as KesesPercben, ISNULL(COUNT(m.Tipusa),0) AS MULASZTASOK_SZAMA
FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes (@pTanevId, @pOsztalyId, @iskolaErdekuSzamit, 0, IIF(@pAtsoroltTanuloAdatok > 0, 1, 0), @idoszakEleje, @idoszakVege, DEFAULT) m
WHERE m.Igazolt IS NOT NULL AND m.Tipusa IN (@pMulasztasTipusIdKeses, @pMulasztasTipusIdHianyzas)
GROUP BY m.Tipusa, m.Igazolt, m.TanuloId, m.Gyakorlati
) m ON m.Gyakorlati = szm.C_GYAKORLATI AND m.Tipusa = szm.C_TIPUS AND m.Igazolt = szm.C_IGAZOLT AND m.TanuloId = szm.C_TANULOID
LEFT JOIN (
SELECT
tcs.C_TANULOID
,SUM(tta.C_HOZOTTIGAZOLTHIANYZAS) as HOZOTTIGAZOLTHIANYZAS
,SUM(tta.C_HOZOTTIGAZOLATLANHIANYZAS ) as HOZOTTIGAZOLATLANHIANYZAS
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON tta.C_TANULOCSOPORTID = tcs.ID AND tta.C_TANEVID = @pTanevId AND tta.TOROLT = 'F'
WHERE tcs.C_OSZTALYCSOPORTID = @pOsztalyId
AND tcs.C_TANEVID = @pTanevId
AND tcs.C_BELEPESDATUM < @idoszakVege
AND tcs.TOROLT = 'F'
GROUP BY tcs.C_TANULOID
) as hianyzas on hianyzas.C_TANULOID = szm.C_TANULOID AND szm.TIPUS_CHAR = 'H' AND szm.C_GYAKORLATI = 'F'
IF @pElmeletgyakorlat=0
BEGIN
SELECT
szm.TIPUS_CHAR,
szm.C_TIPUS,
szm.C_IGAZOLT,
szm.C_TANULOID,
szm.KESESPERC,
szm.KESESORA,
ISNULL(szm.MULASZTASOK_SZAMA,0) +
IIF(szm.TIPUS_CHAR = 'K',0,IIF(szm.C_IGAZOLT = 'T',szm.HOZOTTIGAZOLTMULTASZTASOK_SZAMA,szm.HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA))
AS MULASZTASOK_SZAMA,
IIF(szm.TIPUS_CHAR = 'K',0,IIF(szm.C_IGAZOLT = 'T',szm.HOZOTTIGAZOLTMULTASZTASOK_SZAMA,szm.HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA))
AS HOZOTTMULASZTASOK_SZAMA
FROM (
SELECT
TIPUS_CHAR,
C_TIPUS,
C_IGAZOLT,
C_TANULOID,
SUM(KESESPERC) AS KESESPERC,
SUM(KESESPERC)/@kesespercHianyzashoz AS KESESORA,
SUM(ISNULL(MULASZTASOK_SZAMA,0)) AS MULASZTASOK_SZAMA,
SUM(HOZOTTIGAZOLTMULTASZTASOK_SZAMA) AS HOZOTTIGAZOLTMULTASZTASOK_SZAMA,
SUM(HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA) AS HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA
FROM #szurtMulasztas
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID) AS szm
ORDER BY szm.C_TANULOID, szm.C_TIPUS DESC, szm.C_IGAZOLT DESC
;
SELECT C_IGAZOLT, C_TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA
FROM (
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, SUM(KESESPERC)/@kesespercHianyzashoz AS MULASZTASOK_SZAMA
FROM #szurtMulasztas
WHERE TIPUS_CHAR = 'K'
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID
UNION ALL
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA
FROM #szurtMulasztas
WHERE TIPUS_CHAR = 'H'
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID
) AS KM
GROUP BY C_IGAZOLT, C_TANULOID
ORDER BY C_TANULOID, C_IGAZOLT DESC;
END
ELSE
BEGIN
SELECT
szm.TIPUS_CHAR,
szm.C_TIPUS,
szm.C_IGAZOLT,
szm.C_TANULOID,
szm.KESESPERC,
szm.KESESORA,
ISNULL(szm.MULASZTASOK_SZAMA,0) +
IIF(szm.TIPUS_CHAR = 'K' OR szm.C_GYAKORLATI = 'T',0,IIF( tcs.C_BELEPESDATUM < @idoszakVege,IIF(szm.C_IGAZOLT = 'T',tta.C_HOZOTTIGAZOLTHIANYZAS,tta.C_HOZOTTIGAZOLATLANHIANYZAS),0))
AS MULASZTASOK_SZAMA,
IIF(szm.TIPUS_CHAR = 'K',0,IIF( tcs.C_BELEPESDATUM < @idoszakVege,IIF(szm.C_IGAZOLT = 'T',tta.C_HOZOTTIGAZOLTHIANYZAS,tta.C_HOZOTTIGAZOLATLANHIANYZAS),0))
AS HOZOTTMULASZTASOK_SZAMA,
szm.C_GYAKORLATI
FROM (
SELECT
TIPUS_CHAR,
C_TIPUS,
C_IGAZOLT,
C_TANULOID,
KESESPERC,
KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN @kesespercGyakHianyzashoz ELSE @kesespercHianyzashoz END) AS KESESORA,
MULASZTASOK_SZAMA,
C_GYAKORLATI
FROM #szurtMulasztas ) AS szm
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_TANULOID = szm.C_TANULOID AND tcs.C_OSZTALYCSOPORTID = @pOsztalyId AND tcs.C_TANEVID = @pTanevId AND tcs.TOROLT = 'F'
INNER JOIN T_TANULOTANUGYIADATOK tta ON tta.C_TANULOCSOPORTID = tcs.ID AND tta.C_TANEVID = @pTanevId AND tta.TOROLT = 'F'
ORDER BY szm.C_TANULOID, szm.C_TIPUS DESC, szm.C_IGAZOLT DESC
SELECT C_IGAZOLT, C_TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA, C_GYAKORLATI
FROM (
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN @kesespercGyakHianyzashoz ELSE @kesespercHianyzashoz END) AS MULASZTASOK_SZAMA, C_GYAKORLATI
FROM #szurtMulasztas
WHERE TIPUS_CHAR = 'K'
UNION ALL
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, MULASZTASOK_SZAMA, C_GYAKORLATI
FROM #szurtMulasztas
WHERE TIPUS_CHAR = 'H'
) AS KM
GROUP BY C_IGAZOLT, C_TANULOID, C_GYAKORLATI
ORDER BY C_TANULOID, C_IGAZOLT DESC;
END
--TANÓRAI FELJEGYZÉSEK
SELECT C_TANULOID, SUM(IIF(C_TIPUS = @pTanoraiDicseretTipusId, 1, 0)) AS TanoraiDicseret, SUM(IIF(C_TIPUS = @pFelszereleshianyTipusId, 1, 0)) AS FelszerelesHiany, SUM(IIF(C_TIPUS = @pHaziFeladatHianyTipusId, 1, 0)) AS HaziFeladatHiany, 'F' AS TOROLT
FROM T_TANULOESEMENY_OSSZES AS TANULOESEMENY
INNER JOIN T_TANITASIORA_OSSZES AS TANITASIORA ON TANITASIORA.ID = TANULOESEMENY.C_TANITASIORAID
INNER JOIN T_TANULO_TANULOESEMENY AS TANULO_TANULOE ON TANULO_TANULOE.C_TANULOESEMENYID = TANULOESEMENY.ID
INNER JOIN T_DICTIONARYITEMBASE AS TIPUS ON TIPUS.ID = TANULOESEMENY.C_TIPUS AND TIPUS.C_TANEVID = TANULOESEMENY.C_TANEVID
INNER JOIN #osztalyTanulok AS OSZTALYTANULOK ON OSZTALYTANULOK.TANULOID = TANULO_TANULOE.C_TANULOID
INNER JOIN #aktualisOsztalyCsoportok AS OSZTALYCSOPORT ON OSZTALYCSOPORT.OSZTALYCSOPORTID = TANITASIORA.C_OSZTALYCSOPORTID
LEFT JOIN T_CSOPORT_OSSZES AS CSOPORT ON CSOPORT.ID = OSZTALYCSOPORT.OSZTALYCSOPORTID
LEFT JOIN T_OSZTALY_OSSZES AS OSZTALY ON OSZTALY.ID = OSZTALYCSOPORT.OSZTALYCSOPORTID
WHERE TANULOESEMENY.TOROLT = 'F' AND TANITASIORA.TOROLT = 'F' AND TANULOESEMENY.C_TANEVID = @pTanevId AND C_TANITASIORAID IS NOT NULL
AND TANITASIORA.C_DATUM BETWEEN @idoszakEleje AND @idoszakVege
AND TANITASIORA.C_OSZTALYCSOPORTID IN (SELECT OSZTALYCSOPORTID FROM #aktualisOsztalyCsoportok)
GROUP BY C_TANULOID
-- Osztály adatok az iktatáshoz
SELECT
f.C_NYOMTATASINEV Osztalyfonok
,f.ID OsztalyfonokId
,ocs.C_NEV Osztalynev
,@pOsztalyId OsztalyId
,ocs.C_EVFOLYAMTIPUSA EvfolyamTipusa
,ocs.C_FELADATELLATASIHELYID FeladatEllatasiHelyId
,o.C_TANTERVID TantervId
,o.C_KEPZESIFORMA KepzesiForma
,o.C_AGAZAT Agazat
,o.C_SZAKMACSOPORT SzakmaCsoport
,o.C_SZAKKEPESITES Szakkepesites
,o.C_RESZSZAKKEPESITES Reszszakkepesites
,ocs.C_KERESZTFELEVES OJCSJKeresztfeleves
,ocs.C_VEGZOSEVFOLYAM CSJVegzosEvfolyamu
,o.C_TECHNIKAIOSZTALY OJTechnikaiOsztaly
,o.C_NEMZETISEGI OJNemzetisegi
,o.C_KETTANNYELVU OJKettannyelvu
,o.C_NYELVIELOKESZITO OJNyelviElokeszito
,o.C_LOGOPEDIAI OJLogopediai
,o.C_SPORT OJSportOsztaly
,o.C_AJPROGRAM OJAranyJanosProgram
,o.C_GYOGYPEDAGOGIAI OJGyogypedagogiai
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.id
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = o.C_OSZTALYFONOKID
WHERE
ocs.ID = @pOsztalyId AND ocs.C_TANEVID = @pTanevId AND ocs.TOROLT = 'F';
SELECT C_TANULOID, [D] AS Dicseret, [K] AS Kituno
FROM (
SELECT C_TANULOID, T_TANULOERTEKELES_ID, LEFT(ERTEKELES_SZOVEG_MEGJEGYZES, 1) AS Szoveg
FROM #szurtErtekeles
WHERE
ERTEKELES = '5'
AND LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(ERTEKELES_SZOVEG_MEGJEGYZES,CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) IN ( 'Dicséret', 'Kitűnő' )
) AS s
PIVOT(COUNT(T_TANULOERTEKELES_ID) FOR Szoveg IN ([D], [K])) piv
ORDER BY C_TANULOID
END
GO
@@ -0,0 +1,383 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS [dbo].[sp_Nyomtatvany_Excel_IdoszakiOsztalyokTantargyiStatisztika]
GO
CREATE PROCEDURE [dbo].[sp_Nyomtatvany_Excel_IdoszakiOsztalyokTantargyiStatisztika]
@pTanevId INT,
@pIntezmenyId INT,
@pErtekelestipusaId INT,
@pLezaroNaptipusId INT,
@pTanoraiCsoportTipusIds INT = 1034,
@pMulasztasTipusIdKeses INT = 1499,
@pMulasztasTipusIdHianyzas INT = 1500,
@pNemMulasztaIgazolasTipusIds INT = 1532, -- Iskola érdekű távollét
@pTanevrendjeTanevKezdeteNaptipusId INT = 1394, --Tanévrendje első nap típus
@pAtsoroltTanuloAdatok INT = 1,
@pElmeletgyakorlat BIT = 0
AS
BEGIN
SET NOCOUNT ON;
--Const
DECLARE @ElsoFelveVege INT = 1400
DECLARE @IneVege INT = 1403
DECLARE @IIIneVege INT = 1404
DECLARE @UtolsoTanitasiNap INT = 1395
DECLARE @VegzosUtolsoTanitasiNap INT = 1402
DECLARE @iskolaErdekuParam INT = 1683;
DECLARE @iskolaErdekuSzamit BIT = dbo.fnGetRendszerbeallitasEnumBool(@iskolaErdekuParam, @pIntezmenyId, @pTanevId);
DECLARE @DefaultFeladatKategoriaId int = 7553 /*OktNevelesiKategoriaEnum.Alapkepzes*/
CREATE TABLE #osztalyoktanoraicsoportok (OSZTALYCSOPORTID INT PRIMARY KEY, C_TIPUSA INT, C_VEGZOSEVFOLYAM CHAR(1));
CREATE TABLE #osztalycsoportok (OSZTALYCSOPORTID INT PRIMARY KEY);
CREATE TABLE #aktualisOsztalyCsoportok (OSZTALYCSOPORTID INT);
CREATE TABLE #osztalyTanulok (TANULOID INT PRIMARY KEY, BELEPESDATUM DATE, KILEPESDATUM DATE);
CREATE TABLE #tantargyak (TANTARGYID INT, TANTARGY_NEV NVARCHAR(MAX), TARGYKATEGORIA_NEV NVARCHAR(MAX), TARGYKATEGORIA_SORSZAM INT, C_FOTARGYE CHAR(1), C_ALTANTARGYKENTNYOMTATVANYBAN CHAR(1));
CREATE TABLE #osztalyok (OSZTALYID INT, NEV NVARCHAR(MAX), EVFOLYAM INT, SORREND INT);
CREATE TABLE #osztalyokTanulokszama (OSZTALYID INT, TANULOKSZAMA INT);
CREATE TABLE #osztalyokErtekeles (OSZTALYID INT, TANTARGYID INT, ATLAG FLOAT);
CREATE TABLE #osztalyokMagszorg (OSZTALYID INT, MAGATLAG FLOAT, SZORGATLAG FLOAT);
CREATE TABLE #osztalyokMulasztas (OSZTALYID INT, TIPUS_CHAR CHAR(1), C_TIPUS INT, C_IGAZOLT CHAR(1), MULASZTASOK_SZAMA INT, C_GYAKORLATI CHAR(1), DESCR CHAR(3));
CREATE TABLE #szurtMulasztas (TIPUS_CHAR CHAR(1), C_TIPUS INT , C_IGAZOLT CHAR(1), C_TANULOID INT, C_GYAKORLATI CHAR(1), KESESPERC INT, MULASZTASOK_SZAMA INT);
-- OSZTÁLYOK ÉS TANÓRAI CSOPORTOK
INSERT INTO #osztalyoktanoraicsoportok (OSZTALYCSOPORTID, C_TIPUSA, C_VEGZOSEVFOLYAM) (
SELECT T_OSZTALYCSOPORT_OSSZES.ID, C_TIPUSA, C_VEGZOSEVFOLYAM
FROM T_OSZTALYCSOPORT_OSSZES
LEFT JOIN T_CSOPORT_OSSZES ON T_OSZTALYCSOPORT_OSSZES.ID = T_CSOPORT_OSSZES.ID
LEFT JOIN T_OSZTALY_OSSZES ON T_OSZTALYCSOPORT_OSSZES.ID = T_OSZTALY_OSSZES.ID
WHERE ( C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@pTanevId)) OR T_OSZTALY_OSSZES.ID IS NOT NULL)
AND C_TANEVID = @pTanevId
AND T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @DefaultFeladatKategoriaId
);
-- TANTÁRGYAK
INSERT INTO #tantargyak (TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN)
SELECT T_TANTARGY_OSSZES.ID AS TANTARGYID, COALESCE(T_TANTARGY_OSSZES.C_NEVNYOMTATVANYBAN, T_TANTARGY_OSSZES.C_NEV) AS TANTARGY_NEV, TARGYKAT.C_NAME AS TARGYKATEGORIA_NEV, TARGYKAT.C_VALUE AS TARGYKATEGORIA_SORSZAM, T_TANTARGY_OSSZES.C_FOTARGYE, T_TANTARGY_OSSZES.C_ALTANTARGYKENTNYOMTATVANYBAN
FROM T_TANTARGY_OSSZES
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS TARGYKAT ON TARGYKAT.ID = T_TANTARGY_OSSZES.C_TARGYKATEGORIA AND TARGYKAT.C_TANEVID = T_TANTARGY_OSSZES.C_TANEVID
WHERE T_TANTARGY_OSSZES.TOROLT = 'F' AND T_TANTARGY_OSSZES.C_INTEZMENYID = @pIntezmenyId AND T_TANTARGY_OSSZES.C_TANEVID = @pTanevId
ORDER BY TARGYKATEGORIA_SORSZAM, TANTARGY_NEV;
-- OSZTÁLYOK
SELECT T_OSZTALYCSOPORT_OSSZES.ID AS OSZTALYID, T_OSZTALYCSOPORT_OSSZES.C_NEV AS NEV, T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA AS EVFOLYAM, EVFOLYAMTIPUS.C_ORDER AS SORREND,
C_KERESZTFELEVES AS KERESZTFELEVES, C_VEGZOSEVFOLYAM AS VEGZOSEVFOLYAM,
ROW_NUMBER() OVER(ORDER BY EVFOLYAMTIPUS.C_ORDER ASC, T_OSZTALYCSOPORT_OSSZES.C_NEV ASC) AS Row#
,@pTanevId TanevId
,T_OSZTALY_OSSZES.C_OSZTALYFONOKID OsztalyfonokId
,T_OSZTALYCSOPORT_OSSZES.C_FELADATELLATASIHELYID FeladatEllatasiHelyId
,T_OSZTALY_OSSZES.C_TANTERVID TantervId
,T_OSZTALY_OSSZES.C_KEPZESIFORMA KepzesiForma
,T_OSZTALY_OSSZES.C_AGAZAT Agazat
,T_OSZTALY_OSSZES.C_SZAKMACSOPORT SzakmaCsoport
,T_OSZTALY_OSSZES.C_SZAKKEPESITES Szakkepesites
,T_OSZTALY_OSSZES.C_RESZSZAKKEPESITES Reszszakkepesites
,T_OSZTALYCSOPORT_OSSZES.C_KERESZTFELEVES OJCSJKeresztfeleves
,T_OSZTALYCSOPORT_OSSZES.C_VEGZOSEVFOLYAM CSJVegzosEvfolyamu
,T_OSZTALY_OSSZES.C_TECHNIKAIOSZTALY OJTechnikaiOsztaly
,T_OSZTALY_OSSZES.C_NEMZETISEGI OJNemzetisegi
,T_OSZTALY_OSSZES.C_KETTANNYELVU OJKettannyelvu
,T_OSZTALY_OSSZES.C_NYELVIELOKESZITO OJNyelviElokeszito
,T_OSZTALY_OSSZES.C_LOGOPEDIAI OJLogopediai
,T_OSZTALY_OSSZES.C_SPORT OJSportOsztaly
,T_OSZTALY_OSSZES.C_AJPROGRAM OJAranyJanosProgram
,T_OSZTALY_OSSZES.C_GYOGYPEDAGOGIAI OJGyogypedagogiai
INTO #tempOsztalyok
FROM T_OSZTALYCSOPORT_OSSZES
JOIN T_OSZTALY_OSSZES ON T_OSZTALY_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.ID
JOIN T_TANEV_OSSZES ON T_TANEV_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID
JOIN T_DICTIONARYITEMBASE_OSSZES AS EVFOLYAMTIPUS ON EVFOLYAMTIPUS.ID = T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA AND EVFOLYAMTIPUS.TOROLT = 'F' AND EVFOLYAMTIPUS.C_TANEVID = T_TANEV_OSSZES.ID
WHERE T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F'
AND T_OSZTALYCSOPORT_OSSZES.C_INTEZMENYID=@pIntezmenyId
AND T_TANEV_OSSZES.TOROLT = 'F'
AND T_TANEV_OSSZES.ID = @pTanevId
AND T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @DefaultFeladatKategoriaId
ORDER BY Row#;
IF OBJECT_ID('tempdb..#tempMulasztas') IS NOT NULL
DROP TABLE #tempMulasztas;
CREATE TABLE #tempMulasztas (
ID INT IDENTITY(1,1) PRIMARY KEY,
TIPUS_CHAR CHAR(1), TIPUS INT, IGAZOLT CHAR(1), TANULOID NVARCHAR(20), GYAKORLATI CHAR(1), KESESPERC INT, MULASZTASOK_SZAMA INT, OSZTALYCSOPORTID INT, DATUM DATETIME);
INSERT INTO #tempMulasztas(TIPUS_CHAR, TIPUS, IGAZOLT, TANULOID, GYAKORLATI, KESESPERC, MULASZTASOK_SZAMA, OSZTALYCSOPORTID, DATUM)
SELECT IIF(C_TIPUS = @pMulasztasTipusIdKeses, 'K', 'H'), C_TIPUS, C_IGAZOLT, C_ORATANULOIID, C_GYAKORLATI, SUM(C_KESESPERCBEN), COUNT(1) AS MULASZTASOK_SZAMA, TanitasiOra.C_OSZTALYCSOPORTID, C_DATUM
FROM T_TANULOMULASZTAS_OSSZES TanuloMulasztas
INNER JOIN T_TANITASIORA_OSSZES TanitasiOra ON TanitasiOra.ID = TanuloMulasztas.C_TANITASIORAKID
INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON
TanuloCsoport.C_TANULOID = TanuloMulasztas.C_ORATANULOIID
AND TanuloCsoport.C_OSZTALYCSOPORTID = TanitasiOra.C_OSZTALYCSOPORTID
AND TanuloCsoport.TOROLT = 'F'
AND TanitasiOra.C_DATUM BETWEEN TanuloCsoport.C_BELEPESDATUM AND ISNULL(TanuloCsoport.C_KILEPESDATUM, GETDATE())
INNER JOIN T_TANTARGY_OSSZES t on t.ID = TanitasiOra.C_TANTARGYID
WHERE TanuloMulasztas.C_TIPUS IN (@pMulasztasTipusIdKeses, @pMulasztasTipusIdHianyzas)
AND TanitasiOra.C_OSZTALYCSOPORTID IN (SELECT Id FROM fnGetDokumentumOsztalyVagyTanoraiCsoport (@pTanevId))
AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA IS NULL OR C_IGAZOLASTIPUSA <> 1533))
AND TanuloMulasztas.TOROLT = 'F' AND TanuloMulasztas.C_IGAZOLT IS NOT NULL
AND TanitasiOra.TOROLT = 'F' AND TanitasiOra.C_MEGTARTOTT = 'T'
AND TanuloMulasztas.C_TANEVID = @pTanevId
GROUP BY C_TIPUS, C_IGAZOLT, C_ORATANULOIID, C_GYAKORLATI, TanitasiOra.C_OSZTALYCSOPORTID, C_DATUM
DECLARE @pOsztalyId INT = 0;
DECLARE @sorrend INT = 0;
DECLARE @keresztFeleves BIT = 0;
DECLARE @vegzosEvfolyamu BIT = 0;
WHILE (1 = 1)
BEGIN
TRUNCATE TABLE #szurtMulasztas;
TRUNCATE TABLE #osztalycsoportok;
TRUNCATE TABLE #aktualisOsztalyCsoportok;
TRUNCATE TABLE #osztalyTanulok;
SELECT TOP 1 @pOsztalyId = OSZTALYID, @sorrend = Row#, @keresztFeleves = IIF(KERESZTFELEVES = 'T', 1, 0), @vegzosEvfolyamu = IIF(VEGZOSEVFOLYAM = 'T', 1, 0)
FROM #tempOsztalyok
WHERE @sorrend < Row#
ORDER BY Row#;
IF @@ROWCOUNT = 0
BEGIN
BREAK;
END
--Osztalyjellemzok alapjan a nyito/lezaro naptipus csereje
DECLARE @pKezdeteOsztalyNaptipusId INT = (
IIF(@keresztFeleves = 0, @pTanevrendjeTanevKezdeteNaptipusId,
CASE
WHEN @pLezaroNaptipusId = @ElsoFelveVege THEN @ElsoFelveVege
WHEN @pLezaroNaptipusId = @UtolsoTanitasiNap THEN @pTanevrendjeTanevKezdeteNaptipusId
WHEN @pLezaroNaptipusId = @IneVege THEN @ElsoFelveVege
WHEN @pLezaroNaptipusId = @IIIneVege THEN @pTanevrendjeTanevKezdeteNaptipusId
END)
)
DECLARE @pLezaroOsztalyNaptipusId INT = (
IIF(@keresztFeleves = 0, IIF(@vegzosEvfolyamu = 1 AND @pLezaroNaptipusId = @UtolsoTanitasiNap, @VegzosUtolsoTanitasiNap, @pLezaroNaptipusId),
CASE
WHEN @pLezaroNaptipusId = @ElsoFelveVege THEN @UtolsoTanitasiNap
WHEN @pLezaroNaptipusId = @UtolsoTanitasiNap THEN @ElsoFelveVege
WHEN @pLezaroNaptipusId = @IneVege THEN @IIIneVege
WHEN @pLezaroNaptipusId = @IIIneVege THEN @IneVege
END)
)
DECLARE @idoszakEleje DATE = (
SELECT ISNULL(
(SELECT TOP 1 C_DATUM
FROM T_TANEVRENDJE_OSSZES
LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE ON T_TANEVRENDJE_OSSZES.ID = T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID
WHERE C_TANEVID = @pTanevId AND C_NAPTIPUSA = @pKezdeteOsztalyNaptipusId AND TOROLT = 'F' AND (C_OSZTALYCSOPORTID IS NULL OR C_OSZTALYCSOPORTID = @pOsztalyId)
ORDER BY C_OSZTALYCSOPORTID DESC),
(SELECT TOP 1 C_ELSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @pTanevId))
);
DECLARE @idoszakVege DATE = (
SELECT ISNULL(
(SELECT TOP 1 C_DATUM
FROM T_TANEVRENDJE_OSSZES
LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE ON T_TANEVRENDJE_OSSZES.ID = T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID
WHERE C_TANEVID = @pTanevId AND C_NAPTIPUSA = @pLezaroOsztalyNaptipusId AND TOROLT = 'F' AND (C_OSZTALYCSOPORTID IS NULL OR C_OSZTALYCSOPORTID = @pOsztalyId)
ORDER BY C_OSZTALYCSOPORTID DESC),
GETDATE())
);
INSERT INTO #osztalycsoportok (OSZTALYCSOPORTID) (
SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@pOsztalyId)
WHERE (ID IN (SELECT T_OSZTALY_OSSZES.ID FROM T_OSZTALY_OSSZES
INNER JOIN T_OSZTALYCSOPORT OsztalyCsoport ON OsztalyCsoport.ID = T_OSZTALY_OSSZES.ID AND OsztalyCsoport.C_FELADATKATEGORIAID = @DefaultFeladatKategoriaId
) OR ID IN (SELECT ID FROM T_CSOPORT WHERE C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@pTanevId))))
);
INSERT INTO #aktualisOsztalyCsoportok (OSZTALYCSOPORTID) (
SELECT ID FROM fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyId, @idoszakEleje, @idoszakVege)
WHERE (ID IN (SELECT T_OSZTALY_OSSZES.ID FROM T_OSZTALY_OSSZES INNER JOIN T_OSZTALYCSOPORT OsztalyCsoport ON OsztalyCsoport.ID = T_OSZTALY_OSSZES.ID AND OsztalyCsoport.C_FELADATKATEGORIAID = @DefaultFeladatKategoriaId
) OR ID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@pTanevId))))
);
-- TANULÓK
INSERT INTO #osztalyTanulok (TANULOID, BELEPESDATUM, KILEPESDATUM) (
SELECT T_FELHASZNALO_OSSZES.ID AS TANULOID, C_BELEPESDATUM, C_KILEPESDATUM
FROM T_FELHASZNALO_OSSZES
INNER JOIN (
SELECT C_TANULOID, C_OSZTALYCSOPORTID, C_BELEPESDATUM, C_KILEPESDATUM
FROM T_TANULOCSOPORT_OSSZES
WHERE T_TANULOCSOPORT_OSSZES.TOROLT = 'F' AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < @idoszakVege
AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= @idoszakVege)
) AS TANCSOPORT ON TANCSOPORT.C_TANULOID = T_FELHASZNALO_OSSZES.ID
WHERE T_FELHASZNALO_OSSZES.TOROLT = 'F' AND TANCSOPORT.C_OSZTALYCSOPORTID = @pOsztalyId AND T_FELHASZNALO_OSSZES.C_TANEVID = @pTanevId
);
--TANULÓK LISTA
INSERT INTO #osztalyokTanulokszama (OSZTALYID, TANULOKSZAMA)
SELECT @pOsztalyId AS OSZTALYID, COUNT(T_FELHASZNALO_OSSZES.ID) AS TANULOKSZAMA
FROM T_FELHASZNALO_OSSZES
INNER JOIN #osztalyTanulok AS OSZTALYTANULOK ON OSZTALYTANULOK.TANULOID = T_FELHASZNALO_OSSZES.ID;
--ÉRTÉKELÉS LISTA
IF OBJECT_ID('tempdb..#tempOsztalyErtekelesek') IS NOT NULL
DROP TABLE #tempOsztalyErtekelesek;
SELECT * INTO #tempOsztalyErtekelesek FROM fnGetDokumentumErtekelesekOsztalyonkent (@pTanevId, @pOsztalyId, @pErtekelestipusaId, DEFAULT, DEFAULT, @pAtsoroltTanuloAdatok, DEFAULT) AS ERTEKELESEK
INSERT INTO #osztalyokErtekeles (OSZTALYID, TANTARGYID, ATLAG)
SELECT @pOsztalyId AS OSZTALYID, TantargyId, ROUND(AVG(CAST(ErtekelesOsztalyzatValue AS FLOAT)), 2) AS ATLAG
FROM #tempOsztalyErtekelesek AS ERTEKELESEK
INNER JOIN #osztalyTanulok AS OSZTALYTANULOK ON OSZTALYTANULOK.TANULOID = ERTEKELESEK.TanuloId
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS TARGYKATEG ON TARGYKATEG.ID = ERTEKELESEK.TargyKategoriaId AND TARGYKATEG.C_TANEVID = @pTanevId
WHERE TantargyId IS NOT NULL AND (FotargyE = 'T' OR Altantargy = 'T') AND ErtekelesOsztalyzatValue IS NOT NULL
GROUP BY TantargyId;
--MAGATARTAS-SZORGALOM LISTA
INSERT INTO #osztalyokMagszorg (OSZTALYID, MAGATLAG, SZORGATLAG)
SELECT @pOsztalyId AS OSZTALYID, ROUND(AVG(CAST(COALESCE(MagatartasOsztalyzatValue, MagatartasErtekOsztalyzatkent) AS FLOAT)), 2) AS MAGATLAG, ROUND(AVG(CAST(COALESCE(SzorgalomOsztalyzatValue, SzorgalomErtekOsztalyzatkent) AS FLOAT)), 2) AS SZORGATLAG
FROM #tempOsztalyErtekelesek AS ERTEKELESEK
INNER JOIN #osztalyTanulok AS OSZTALYTANULOK ON OSZTALYTANULOK.TANULOID = ERTEKELESEK.TanuloId
WHERE TantargyId IS NULL AND COALESCE(MagatartasOsztalyzatValue, MagatartasErtekOsztalyzatkent) IS NOT NULL AND COALESCE(SzorgalomOsztalyzatValue, SzorgalomErtekOsztalyzatkent) IS NOT NULL ;
--MULASZTÁS
INSERT INTO #szurtMulasztas (TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, C_GYAKORLATI, KESESPERC, MULASZTASOK_SZAMA)
SELECT TIPUS_CHAR, TIPUS, IGAZOLT, TanuloMulasztas.TANULOID, GYAKORLATI, SUM(KESESPERC), SUM(MULASZTASOK_SZAMA)
FROM #tempMulasztas AS TanuloMulasztas
INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'T') AS TANULO ON TANULO.TanuloId = TanuloMulasztas.TANULOID
INNER JOIN #osztalyTanulok AS OSZTALYTANULOK ON OSZTALYTANULOK.TANULOID = TanuloMulasztas.TanuloId
WHERE TANULO.BelepesDatum <= DATUM
AND (TANULO.KilepesDatum IS NULL OR TANULO.KilepesDatum >= DATUM)
AND (IIF(@pAtsoroltTanuloAdatok > 0, 1, 0) = 1 OR (OSZTALYCSOPORTID IN (SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@pOsztalyId, @pTanevId, DEFAULT))))
AND (@idoszakEleje IS NULL OR DATUM >= @idoszakEleje)
AND (@idoszakVege IS NULL OR DATUM <= @idoszakVege)
GROUP BY TIPUS_CHAR, TIPUS, IGAZOLT, TanuloMulasztas.TANULOID, GYAKORLATI
DROP TABLE IF EXISTS #OsztalyHozottMulasztas
CREATE TABLE #OsztalyHozottMulasztas (OsztalyID INT, HozottIgazolt INT, HozottIgazolatlan INT)
INSERT INTO #OsztalyHozottMulasztas (OsztalyID, HozottIgazolt, HozottIgazolatlan)
SELECT
o.ID
,SUM(IIF( tcs.C_BELEPESDATUM < @idoszakVege,ISNULL(tta.C_HOZOTTIGAZOLTHIANYZAS,0),0))
,SUM(IIF( tcs.C_BELEPESDATUM < @idoszakVege,ISNULL(tta.C_HOZOTTIGAZOLATLANHIANYZAS,0),0))
FROM T_OSZTALY_OSSZES o
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID= o.ID AND ocs.TOROLT = 'F'
LEFT JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND ocs.C_TANEVID = @pTanevId AND tcs.TOROLT = 'F'
LEFT JOIN T_TANULOTANUGYIADATOK tta ON tta.C_TANULOCSOPORTID = tcs.ID AND tta.C_TANEVID = @pTanevId AND tta.TOROLT = 'F'
WHERE C_ALTANEVID = @pTanevId AND o.TOROLT = 'F'
GROUP BY o.ID
IF @pElmeletgyakorlat=0
BEGIN
INSERT INTO #osztalyokMulasztas (OSZTALYID, TIPUS_CHAR, C_TIPUS, C_IGAZOLT, MULASZTASOK_SZAMA, C_GYAKORLATI, DESCR)
SELECT @pOsztalyId AS OSZTALYID, TIPUS_CHAR, C_TIPUS, C_IGAZOLT, CASE WHEN TIPUS_CHAR = 'K' THEN SUM(KESESORA) ELSE SUM(MULASZTASOK_SZAMA) END MULASZTASOK_SZAMA, 'F' AS C_GYAKORLATI, TIPUS_CHAR + C_IGAZOLT + 'F' AS DESCR
FROM (
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, SUM(KESESPERC) AS KESESPERC, SUM(KESESPERC)/45 AS KESESORA, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA
FROM #szurtMulasztas
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID
) AS T_SUM_MULASZTAS
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT
ORDER BY C_TIPUS DESC, C_IGAZOLT DESC;
END
ELSE
BEGIN
INSERT INTO #osztalyokMulasztas (OSZTALYID, TIPUS_CHAR, C_TIPUS, C_IGAZOLT, MULASZTASOK_SZAMA, C_GYAKORLATI, DESCR)
SELECT @pOsztalyId AS OSZTALYID, TIPUS_CHAR, C_TIPUS, C_IGAZOLT, CASE WHEN TIPUS_CHAR = 'K' THEN SUM(KESESORA) ELSE SUM(MULASZTASOK_SZAMA) END MULASZTASOK_SZAMA, C_GYAKORLATI, TIPUS_CHAR + C_IGAZOLT + C_GYAKORLATI
FROM (
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, KESESPERC, KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN 45 ELSE 45 END) AS KESESORA, MULASZTASOK_SZAMA, C_GYAKORLATI
FROM #szurtMulasztas
) AS T_SUM_MULASZTAS
GROUP BY TIPUS_CHAR, C_TIPUS, C_GYAKORLATI, C_IGAZOLT
ORDER BY C_TIPUS DESC, C_IGAZOLT DESC;
END
END
UPDATE om SET MULASZTASOK_SZAMA = MULASZTASOK_SZAMA + IIF(om.DESCR = 'HTF',hm.HozottIgazolt, IIF(om.DESCR = 'HFF',hm.HozottIgazolatlan,0)) FROM #osztalyokMulasztas om LEFT JOIN #OsztalyHozottMulasztas hm ON hm.OsztalyID = om.OSZTALYID
DROP TABLE IF EXISTS #OsztalyHozottMulasztas
DECLARE @cols AS NVARCHAR(MAX);
DECLARE @colsHeader AS NVARCHAR(MAX);
DECLARE @query AS NVARCHAR(MAX);
SELECT OSZTALYID, TANTARGYID, ATLAG
INTO #tempErtekeles
FROM #osztalyokErtekeles;
SELECT OSZTALYID, MAGATLAG, SZORGATLAG
INTO #tempMagSzorgErtekeles
FROM #osztalyokMagszorg;
SELECT OSZTALYID, TANULOKSZAMA
INTO #tempTanulokszama
FROM #osztalyokTanulokszama;
SELECT @colsHeader = ISNULL(@colsHeader + ', ', '') + QUOTENAME(TANTARGYAK.TANTARGYID) + ' AS ' + QUOTENAME(TANTARGYAK.TANTARGY_NEV),
@cols = ISNULL(@cols + ', ', '') + QUOTENAME(TANTARGYAK.TANTARGYID)
FROM (
SELECT DISTINCT TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_SORSZAM
FROM #tantargyak
) AS TANTARGYAK
ORDER BY TARGYKATEGORIA_SORSZAM, TANTARGY_NEV;
SET @query =
'SELECT NEV AS [Osztályok], TANULOILETSZAM.TANULOKSZAMA AS [Tanulók száma], MAGSZORGERTEKELES.MAGATLAG AS [Magatartás átlag], MAGSZORGERTEKELES.SZORGATLAG AS [Szorgalom átlag], ' + @colsHeader + '
FROM (SELECT OSZTALYID, NEV, Row# FROM #tempOsztalyok) AS OSZTALYOK
LEFT JOIN (
SELECT OSZTALYID AS E_OSZTALYID, TANTARGYID, ATLAG
FROM #tempErtekeles
) AS ERTEKELES ON ERTEKELES.E_OSZTALYID = OSZTALYOK.OSZTALYID
PIVOT (
MAX(ATLAG)
FOR TANTARGYID IN (' + @cols + ')
) AS PIVOTTABLE
LEFT JOIN #tempTanulokszama AS TANULOILETSZAM ON PIVOTTABLE.OSZTALYID = TANULOILETSZAM.OSZTALYID
LEFT JOIN (
SELECT OSZTALYID AS MSZE_OSZTALYID, MAGATLAG, SZORGATLAG
FROM #tempMagSzorgErtekeles
) AS MAGSZORGERTEKELES ON PIVOTTABLE.OSZTALYID = MAGSZORGERTEKELES.MSZE_OSZTALYID
ORDER BY Row#';
execute(@query);
SELECT * INTO #tempForPivotMulasztas
FROM #osztalyokMulasztas;
IF @pElmeletgyakorlat=0
BEGIN
SET @cols = 'HTF,KTF,HFF,KFF'
SET @colsHeader = 'HTF AS [Igazolt hiányzás],KTF AS [Igazolt késés (óra)],HFF AS [Igazolatlan hiányzás],KFF AS [Igazolatlan késés (óra)]'
END
ELSE
BEGIN
SET @cols = 'HTF,KTF,HFF,KFF,HTT,KTT,HFT,KFT'
SET @colsHeader = 'HTF AS [Elméleti igazolt hiányzás],KTF AS [Elméleti igazolt késés (óra)],HFF AS [Elméleti igazolatlan hiányzás],KFF AS [Elméleti igazolatlan késés (óra)],HTT AS [Gyakorlati igazolt hiányzás],KTT AS [Gyakorlati igazolt késés (óra)],HFT AS [Gyakorlati igazolatlan hiányzás],KFT AS [Gyakorlati igazolatlan késés (óra)]'
END
SET @query =
'SELECT ' + @colsHeader + '
FROM (SELECT OSZTALYID, NEV, Row# FROM #tempOsztalyok) AS OSZTALYOK
LEFT JOIN (
SELECT OSZTALYID AS M_OSZTALYID, MULASZTASOK_SZAMA, DESCR
FROM #tempForPivotMulasztas
) AS MULASZTAS ON MULASZTAS.M_OSZTALYID = OSZTALYOK.OSZTALYID
PIVOT (
MAX(MULASZTASOK_SZAMA)
FOR DESCR IN (' + @cols + ')
) AS PIVOTTABLE
ORDER BY Row#';
execute(@query);
select OSZTALYID AS OsztalyId
,EVFOLYAM AS EvfolyamTipusa
,FeladatEllatasiHelyId
,KepzesiForma
,OsztalyfonokId
,TantervId
,OJAranyJanosProgram
,OJCSJKeresztfeleves
,OJGyogypedagogiai
,OJKettannyelvu
,OJLogopediai
,OJNemzetisegi
,OJNyelviElokeszito
,OJSportOsztaly
,OJTechnikaiOsztaly
,SzakmaCsoport
,Agazat
,Szakkepesites
,Reszszakkepesites from #tempOsztalyok;
DROP TABLE IF EXISTS #tempOsztalyok
DROP TABLE IF EXISTS #tempTanulokszama
DROP TABLE IF EXISTS #tempErtekeles
DROP TABLE IF EXISTS #tempForPivotMulasztas
DROP TABLE IF EXISTS #tempOsztalyErtekelesek;
DROP TABLE IF EXISTS #tempMulasztas;
END
GO
@@ -0,0 +1,182 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_Nyomtatvany_Excel_OsztalyTanuloinakGyakorlatiOraMulasztasiSzazalekStatisztika]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_Nyomtatvany_Excel_OsztalyTanuloinakGyakorlatiOraMulasztasiSzazalekStatisztika]
END
GO
CREATE PROCEDURE [dbo].[sp_Nyomtatvany_Excel_OsztalyTanuloinakGyakorlatiOraMulasztasiSzazalekStatisztika]
@pTanevId INT,
@pOsztalyId INT,
@pMulasztasTipusIdKeses INT = 1499,
@pMulasztasTipusIdHianyzas INT = 1500,
@pTanevrendjeTanevKezdeteNaptipusId INT = 1394, --Tanévrendje első nap típus
@pMegtartottVagyMegtarthato INT = 1,
@pAtsoroltTanuloAdatok INT = 1,
@tanitasiHetekSzamaVegzos INT,
@tanitasiHetekSzamaNemVegzos INT,
@isAltantargyBeszamitasa BIT
AS
BEGIN
DECLARE @iskolaErdekuParam INT = 1683;
DECLARE @iskolaErdekuSzamit BIT = dbo.fnGetRendszerbeallitasEnumBool(@iskolaErdekuParam, (SELECT C_INTEZMENYID FROM T_TANEV_OSSZES WHERE ID = @pTanevId), @pTanevId);
DECLARE @idoszakEleje DATE = (
SELECT ISNULL(
(SELECT TOP 1 C_DATUM
FROM T_TANEVRENDJE_OSSZES
LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE ON T_TANEVRENDJE_OSSZES.ID = T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID
WHERE C_TANEVID = @pTanevId AND C_NAPTIPUSA = @pTanevrendjeTanevKezdeteNaptipusId AND TOROLT = 'F' AND (C_OSZTALYCSOPORTID IS NULL OR C_OSZTALYCSOPORTID = @pOsztalyId)
ORDER BY C_OSZTALYCSOPORTID DESC),
(SELECT TOP 1 C_ELSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @pTanevId))
);
DECLARE @idoszakVege DATE = GETDATE();
DECLARE @osztalyTanulok TABLE (TANULOID INT PRIMARY KEY, TANULONEV NVARCHAR(MAX), BELEPESDATUM DATE, KILEPESDATUM DATE, OKTATASIAZONOSITO NVARCHAR(20));
DECLARE @tantargyak TABLE(TANTARGYID INT, TANTARGY_NEV NVARCHAR(MAX), TARGYKATEGORIA_NEV NVARCHAR(MAX), TARGYKATEGORIA_SORSZAM INT, C_FOTARGYE CHAR(1), C_ALTANTARGYKENTNYOMTATVANYBAN CHAR(1));
INSERT INTO @osztalyTanulok (TANULOID, TANULONEV, BELEPESDATUM, KILEPESDATUM, OKTATASIAZONOSITO)
SELECT FELHASZNALO.ID AS TANULOID, C_NYOMTATASINEV, C_BELEPESDATUM, C_KILEPESDATUM, C_OKTATASIAZONOSITO
FROM T_FELHASZNALO_OSSZES AS FELHASZNALO
INNER JOIN (
SELECT C_TANULOID, C_OSZTALYCSOPORTID, C_BELEPESDATUM, C_KILEPESDATUM
FROM T_TANULOCSOPORT_OSSZES AS TANULOCSOPORT
WHERE TANULOCSOPORT.TOROLT = 'F' AND TANULOCSOPORT.C_OSZTALYCSOPORTID = @pOsztalyId AND TANULOCSOPORT.C_BELEPESDATUM < @idoszakVege
AND (TANULOCSOPORT.C_KILEPESDATUM IS NULL OR TANULOCSOPORT.C_KILEPESDATUM >= @idoszakVege)
) AS TANCSOPORT ON TANCSOPORT.C_TANULOID = FELHASZNALO.ID
WHERE FELHASZNALO.TOROLT = 'F' AND TANCSOPORT.C_OSZTALYCSOPORTID = @pOsztalyId AND FELHASZNALO.C_TANEVID = @pTanevId;
DECLARE @aktualisOsztalyCsoportok TABLE (OSZTALYCSOPORTID INT);
IF @pAtsoroltTanuloAdatok = 0
BEGIN
INSERT INTO @aktualisOsztalyCsoportok (OSZTALYCSOPORTID)
SELECT ID
FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@pOsztalyId, @pTanevId, DEFAULT)
END
ELSE IF @pAtsoroltTanuloAdatok = 1
BEGIN
INSERT INTO @aktualisOsztalyCsoportok (OSZTALYCSOPORTID)
SELECT ID
FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@pOsztalyId, @pTanevId, DEFAULT)
END
ELSE
BEGIN
INSERT INTO @aktualisOsztalyCsoportok (OSZTALYCSOPORTID)
SELECT ID
FROM fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyId, @idoszakEleje, @idoszakVege)
WHERE (ID IN (SELECT ID FROM T_OSZTALY_OSSZES) OR ID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@pTanevId))));
END
INSERT INTO @tantargyak (TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN)
SELECT DISTINCT TANTARGYAK.ID AS TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN
FROM (
SELECT DISTINCT C_TANTARGYID AS ID, COALESCE(TANTARGY.C_NEVNYOMTATVANYBAN, TANTARGY.C_NEV) AS TANTARGY_NEV, TARGYKATEG.C_NAME AS TARGYKATEGORIA_NEV, TARGYKATEG.C_VALUE AS TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN
FROM T_FOGLALKOZAS_OSSZES
INNER JOIN @aktualisOsztalyCsoportok AS OSZTALYCSOPORT ON OSZTALYCSOPORT.OSZTALYCSOPORTID = T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID
INNER JOIN T_TANTARGY_OSSZES AS TANTARGY ON TANTARGY.ID = T_FOGLALKOZAS_OSSZES.C_TANTARGYID AND TANTARGY.C_TANEVID = T_FOGLALKOZAS_OSSZES.C_TANEVID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS TARGYKATEG ON TARGYKATEG.ID = TANTARGY.C_TARGYKATEGORIA AND TARGYKATEG.C_TANEVID = @pTanevId
WHERE T_FOGLALKOZAS_OSSZES.TOROLT = 'F' AND TANTARGY.C_GYAKORLATI = 'T'
UNION
SELECT DISTINCT C_TANTARGYID AS ID, COALESCE(TANTARGY.C_NEVNYOMTATVANYBAN, TANTARGY.C_NEV) AS TANTARGY_NEV, TARGYKATEG.C_NAME AS TARGYKATEGORIA_NEV, TARGYKATEG.C_VALUE AS TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN
FROM T_TANITASIORA_OSSZES
INNER JOIN T_TANTARGY_OSSZES AS TANTARGY ON TANTARGY.ID = T_TANITASIORA_OSSZES.C_TANTARGYID AND TANTARGY.C_TANEVID = T_TANITASIORA_OSSZES.C_TANEVID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS TARGYKATEG ON TARGYKATEG.ID = TANTARGY.C_TARGYKATEGORIA AND TARGYKATEG.C_TANEVID = @pTanevId
WHERE T_TANITASIORA_OSSZES.TOROLT = 'F' AND C_OSZTALYCSOPORTID IN (SELECT OSZTALYCSOPORTID FROM @aktualisOsztalyCsoportok) AND TANTARGY.C_GYAKORLATI = 'T'
) AS TANTARGYAK
ORDER BY TARGYKATEGORIA_SORSZAM, TANTARGY_NEV;
SELECT DISTINCT TANULOID, TANULONEV, OKTATASIAZONOSITO
FROM @osztalyTanulok
ORDER BY TANULONEV;
SELECT DISTINCT TANTARGYID, TANTARGY_NEV
FROM @tantargyak;
SELECT * INTO #tempMulasztas FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes (@pTanevId, @pOsztalyId, @iskolaErdekuSzamit, DEFAULT, @pAtsoroltTanuloAdatok, DEFAULT, DEFAULT, DEFAULT) WHERE Tipusa IN (@pMulasztasTipusIdKeses, @pMulasztasTipusIdHianyzas)
CREATE TABLE #tempTanorak (Orakszama INT, TanuloId INT, TantargyId INT, TantargyNev NVARCHAR(MAX) COLLATE Hungarian_CI_AI, Fotargye CHAR(1) COLLATE Hungarian_CI_AI, Altargye CHAR(1) COLLATE Hungarian_CI_AI, Gyakorlati CHAR(1) COLLATE Hungarian_CI_AI)
IF @pMegtartottVagyMegtarthato = 1
BEGIN
INSERT INTO #tempTanorak
SELECT Orakszama, TanuloId, TantargyId, TantargyNev, Fotargye, Altargye, Gyakorlati
FROM fnGetDokumentumOsztalyTanuloinakMegtarthatoOrakTantargyankent (@pTanevId, @pOsztalyId, @pAtsoroltTanuloAdatok, @tanitasiHetekSzamaVegzos, @tanitasiHetekSzamaNemVegzos, @isAltantargyBeszamitasa)
END
ELSE
BEGIN
INSERT INTO #tempTanorak
SELECT Orakszama, TanuloId, TantargyId, TantargyNev, Fotargye, Altargye, Gyakorlati
FROM fnGetDokumentumOsztalyTanuloinakMegtartottOrakTantargyankent (@pTanevId, @pOsztalyId, @pAtsoroltTanuloAdatok)
END
SELECT MegtartottOrak.TanuloId, MegtartottOrak.TantargyId, MegtartottOrak.Gyakorlati,
CAST(Mulasztasokszam AS float) / Orakszama AS MulasztasArany, CAST(Mulasztasokszam AS float) / Orakszama * 100 AS MulasztasSzazalek,
CAST(Mulasztasokszam AS NVARCHAR) + '/' + CAST(Orakszama AS NVARCHAR) AS Info
FROM (
SELECT SUM(CAST(IIF(Tipusa = @pMulasztasTipusIdHianyzas, 1, IIF(Tipusa = @pMulasztasTipusIdKeses,CAST(KesesPercben AS FLOAT) / 45, 0)) AS FLOAT)) AS Mulasztasokszam, TanuloId, TantargyId, Gyakorlati
FROM #tempMulasztas
WHERE Gyakorlati = 'T'
GROUP BY TanuloId, TantargyId, Gyakorlati
) AS Mulasztasok
INNER JOIN (
SELECT Orakszama, Tanuloid, TantargyId, Gyakorlati, TantargyNev
FROM #tempTanorak
WHERE Gyakorlati = 'T'
) AS MegtartottOrak
ON MegtartottOrak.TantargyId = Mulasztasok.TantargyId
AND MegtartottOrak.TanuloId = Mulasztasok.TanuloId
AND MegtartottOrak.Gyakorlati = Mulasztasok.Gyakorlati
ORDER BY TanuloId, TantargyId
SELECT MegtartottOrak.TanuloId, MegtartottOrak.Gyakorlati,
CAST(Mulasztasokszam AS float) / Orakszama AS MulasztasArany, CAST(Mulasztasokszam AS float) / Orakszama * 100 AS MulasztasSzazalek,
CAST(Mulasztasokszam AS NVARCHAR) + '/' + CAST(Orakszama AS NVARCHAR) AS Info
FROM (
SELECT SUM(CAST(IIF(Tipusa = @pMulasztasTipusIdHianyzas, 1, IIF(Tipusa = @pMulasztasTipusIdKeses,CAST(KesesPercben AS FLOAT) / 45, 0)) AS FLOAT)) AS Mulasztasokszam, TanuloId, Gyakorlati
FROM #tempMulasztas
WHERE Gyakorlati = 'T'
GROUP BY TanuloId, Gyakorlati
) AS Mulasztasok
INNER JOIN (
SELECT Tanuloid, Gyakorlati, SUM(Orakszama) as Orakszama
FROM #tempTanorak
WHERE Gyakorlati = 'T'
GROUP BY Tanuloid, Gyakorlati
) AS MegtartottOrak
ON
MegtartottOrak.TanuloId = Mulasztasok.TanuloId
AND MegtartottOrak.Gyakorlati = Mulasztasok.Gyakorlati
ORDER BY TanuloId
IF OBJECT_ID('tempdb..#tempTanorak') IS NOT NULL DROP TABLE #tempTanorak
IF OBJECT_ID('tempdb..#tempMulasztas') IS NOT NULL DROP TABLE #tempMulasztas
-- Osztály adatok az iktatáshoz
SELECT
f.C_NYOMTATASINEV Osztalyfonok
,f.ID OsztalyfonokId
,ocs.C_NEV Osztalynev
,@pOsztalyId OsztalyId
,ocs.C_EVFOLYAMTIPUSA EvfolyamTipusa
,ocs.C_FELADATELLATASIHELYID FeladatEllatasiHelyId
,o.C_TANTERVID TantervId
,o.C_KEPZESIFORMA KepzesiForma
,o.C_AGAZAT Agazat
,o.C_SZAKMACSOPORT SzakmaCsoport
,o.C_SZAKKEPESITES Szakkepesites
,o.C_RESZSZAKKEPESITES Reszszakkepesites
,ocs.C_KERESZTFELEVES OJCSJKeresztfeleves
,ocs.C_VEGZOSEVFOLYAM CSJVegzosEvfolyamu
,o.C_TECHNIKAIOSZTALY OJTechnikaiOsztaly
,o.C_NEMZETISEGI OJNemzetisegi
,o.C_KETTANNYELVU OJKettannyelvu
,o.C_NYELVIELOKESZITO OJNyelviElokeszito
,o.C_LOGOPEDIAI OJLogopediai
,o.C_SPORT OJSportOsztaly
,o.C_AJPROGRAM OJAranyJanosProgram
,o.C_GYOGYPEDAGOGIAI OJGyogypedagogiai
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.id
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = o.C_OSZTALYFONOKID
WHERE
ocs.ID = @pOsztalyId AND ocs.C_TANEVID = @pTanevId AND ocs.TOROLT = 'F';
END;
GO
@@ -0,0 +1,160 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_Nyomtatvany_Excel_OsztalyTanuloinakMulasztasiSzazalekStatisztika]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_Nyomtatvany_Excel_OsztalyTanuloinakMulasztasiSzazalekStatisztika]
END
GO
CREATE PROCEDURE [dbo].[sp_Nyomtatvany_Excel_OsztalyTanuloinakMulasztasiSzazalekStatisztika]
@pTanevId INT,
@pOsztalyId INT,
@pMulasztasTipusIdKeses INT = 1499,
@pMulasztasTipusIdHianyzas INT = 1500,
@pTanevrendjeTanevKezdeteNaptipusId INT = 1394, --Tanévrendje első nap típus
@pMegtartottVagyMegtarthato INT = 1,
@pAtsoroltTanuloAdatok INT = 1,
@tanitasiHetekSzamaVegzos INT = 32,
@tanitasiHetekSzamaNemVegzos INT = 36,
@isAltantargyBeszamitasa BIT
AS
BEGIN
DECLARE @iskolaErdekuParam INT = 1683;
DECLARE @iskolaErdekuSzamit BIT = dbo.fnGetRendszerbeallitasEnumBool(@iskolaErdekuParam, (SELECT C_INTEZMENYID FROM T_TANEV_OSSZES WHERE ID = @pTanevId), @pTanevId);
DECLARE @idoszakEleje DATE = (
SELECT ISNULL(
(SELECT TOP 1 C_DATUM
FROM T_TANEVRENDJE_OSSZES
LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE ON T_TANEVRENDJE_OSSZES.ID = T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID
WHERE C_TANEVID = @pTanevId AND C_NAPTIPUSA = @pTanevrendjeTanevKezdeteNaptipusId AND TOROLT = 'F' AND (C_OSZTALYCSOPORTID IS NULL OR C_OSZTALYCSOPORTID = @pOsztalyId)
ORDER BY C_OSZTALYCSOPORTID DESC),
(SELECT TOP 1 C_ELSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @pTanevId))
);
DECLARE @idoszakVege DATE = GETDATE();
DECLARE @osztalyTanulok TABLE (TANULOID INT PRIMARY KEY, TANULONEV NVARCHAR(MAX), BELEPESDATUM DATE, KILEPESDATUM DATE, OKTATASIAZONOSITO NVARCHAR(20));
DECLARE @tantargyak TABLE(TANTARGYID INT, TANTARGY_NEV NVARCHAR(MAX), TARGYKATEGORIA_NEV NVARCHAR(MAX), TARGYKATEGORIA_SORSZAM INT, C_FOTARGYE CHAR(1), C_ALTANTARGYKENTNYOMTATVANYBAN CHAR(1));
INSERT INTO @osztalyTanulok (TANULOID, TANULONEV, BELEPESDATUM, KILEPESDATUM, OKTATASIAZONOSITO)
SELECT FELHASZNALO.ID AS TANULOID, C_NYOMTATASINEV, C_BELEPESDATUM, C_KILEPESDATUM, C_OKTATASIAZONOSITO
FROM T_FELHASZNALO_OSSZES AS FELHASZNALO
INNER JOIN (
SELECT C_TANULOID, C_OSZTALYCSOPORTID, C_BELEPESDATUM, C_KILEPESDATUM
FROM T_TANULOCSOPORT_OSSZES AS TANULOCSOPORT
WHERE TANULOCSOPORT.TOROLT = 'F' AND TANULOCSOPORT.C_OSZTALYCSOPORTID = @pOsztalyId AND TANULOCSOPORT.C_BELEPESDATUM < @idoszakVege
AND (TANULOCSOPORT.C_KILEPESDATUM IS NULL OR TANULOCSOPORT.C_KILEPESDATUM >= @idoszakVege)
) AS TANCSOPORT ON TANCSOPORT.C_TANULOID = FELHASZNALO.ID
WHERE FELHASZNALO.TOROLT = 'F' AND TANCSOPORT.C_OSZTALYCSOPORTID = @pOsztalyId AND FELHASZNALO.C_TANEVID = @pTanevId;
DECLARE @aktualisOsztalyCsoportok TABLE (OSZTALYCSOPORTID INT);
IF @pAtsoroltTanuloAdatok = 0
BEGIN
INSERT INTO @aktualisOsztalyCsoportok (OSZTALYCSOPORTID)
SELECT ID
FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@pOsztalyId, @pTanevId, DEFAULT)
END
ELSE IF @pAtsoroltTanuloAdatok = 1
BEGIN
INSERT INTO @aktualisOsztalyCsoportok (OSZTALYCSOPORTID)
SELECT ID
FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@pOsztalyId, @pTanevId, DEFAULT)
END
ELSE
BEGIN
INSERT INTO @aktualisOsztalyCsoportok (OSZTALYCSOPORTID)
SELECT ID
FROM fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyId, @idoszakEleje, @idoszakVege)
WHERE (ID IN (SELECT ID FROM T_OSZTALY_OSSZES) OR ID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@pTanevId))));
END
INSERT INTO @tantargyak (TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN)
SELECT DISTINCT TANTARGYAK.ID AS TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN
FROM (
SELECT DISTINCT C_TANTARGYID AS ID, COALESCE(TANTARGY.C_NEVNYOMTATVANYBAN, TANTARGY.C_NEV) AS TANTARGY_NEV, TARGYKATEG.C_NAME AS TARGYKATEGORIA_NEV, TARGYKATEG.C_VALUE AS TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN
FROM T_FOGLALKOZAS_OSSZES
INNER JOIN @aktualisOsztalyCsoportok AS OSZTALYCSOPORT ON OSZTALYCSOPORT.OSZTALYCSOPORTID = T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID
INNER JOIN T_TANTARGY_OSSZES AS TANTARGY ON TANTARGY.ID = T_FOGLALKOZAS_OSSZES.C_TANTARGYID AND TANTARGY.C_TANEVID = T_FOGLALKOZAS_OSSZES.C_TANEVID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS TARGYKATEG ON TARGYKATEG.ID = TANTARGY.C_TARGYKATEGORIA AND TARGYKATEG.C_TANEVID = @pTanevId
WHERE T_FOGLALKOZAS_OSSZES.TOROLT = 'F'
UNION
SELECT DISTINCT C_TANTARGYID AS ID, COALESCE(TANTARGY.C_NEVNYOMTATVANYBAN, TANTARGY.C_NEV) AS TANTARGY_NEV, TARGYKATEG.C_NAME AS TARGYKATEGORIA_NEV, TARGYKATEG.C_VALUE AS TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN
FROM T_TANITASIORA_OSSZES
INNER JOIN T_TANTARGY_OSSZES AS TANTARGY ON TANTARGY.ID = T_TANITASIORA_OSSZES.C_TANTARGYID AND TANTARGY.C_TANEVID = T_TANITASIORA_OSSZES.C_TANEVID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS TARGYKATEG ON TARGYKATEG.ID = TANTARGY.C_TARGYKATEGORIA AND TARGYKATEG.C_TANEVID = @pTanevId
WHERE T_TANITASIORA_OSSZES.TOROLT = 'F' AND C_OSZTALYCSOPORTID IN (SELECT OSZTALYCSOPORTID FROM @aktualisOsztalyCsoportok)
) AS TANTARGYAK
ORDER BY TARGYKATEGORIA_SORSZAM, TANTARGY_NEV;
SELECT DISTINCT TANULOID, TANULONEV, OKTATASIAZONOSITO
FROM @osztalyTanulok
ORDER BY TANULONEV;
SELECT DISTINCT TANTARGYID, TANTARGY_NEV
FROM @tantargyak;
SELECT * INTO #tempMulasztas FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes (@pTanevId, @pOsztalyId, @iskolaErdekuSzamit, DEFAULT, @pAtsoroltTanuloAdatok, DEFAULT, DEFAULT, DEFAULT) WHERE Tipusa IN (@pMulasztasTipusIdKeses, @pMulasztasTipusIdHianyzas)
CREATE TABLE #tempTanorak (Orakszama INT, TanuloId INT, TantargyId INT, TantargyNev NVARCHAR(MAX) COLLATE Hungarian_CI_AI, Fotargye CHAR(1) COLLATE Hungarian_CI_AI, Altargye CHAR(1) COLLATE Hungarian_CI_AI, Gyakorlati CHAR(1) COLLATE Hungarian_CI_AI)
IF @pMegtartottVagyMegtarthato = 1
BEGIN
INSERT INTO #tempTanorak
SELECT Orakszama, TanuloId, TantargyId, TantargyNev, Fotargye, Altargye, Gyakorlati
FROM fnGetDokumentumOsztalyTanuloinakMegtarthatoOrakTantargyankent (@pTanevId, @pOsztalyId, @pAtsoroltTanuloAdatok, @tanitasiHetekSzamaVegzos, @tanitasiHetekSzamaNemVegzos, @isAltantargyBeszamitasa)
END
ELSE
BEGIN
INSERT INTO #tempTanorak
SELECT Orakszama, TanuloId, TantargyId, TantargyNev, Fotargye, Altargye, Gyakorlati
FROM fnGetDokumentumOsztalyTanuloinakMegtartottOrakTantargyankent (@pTanevId, @pOsztalyId, @pAtsoroltTanuloAdatok)
END
SELECT MegtartottOrak.TanuloId, MegtartottOrak.TantargyId, MegtartottOrak.Gyakorlati,
IIF(ISNULL(Orakszama,0) = 0, 0, CAST(Mulasztasokszam AS float) / Orakszama) AS MulasztasArany,
IIF(ISNULL(Orakszama,0) = 0, 0 ,CAST(Mulasztasokszam AS float) / Orakszama * 100) AS MulasztasSzazalek,
CAST(Mulasztasokszam AS NVARCHAR) + '/' + CAST(Orakszama AS NVARCHAR) AS Info
FROM (
SELECT SUM(CAST(IIF(Tipusa = @pMulasztasTipusIdHianyzas, 1, IIF(Tipusa = @pMulasztasTipusIdKeses,CAST(KesesPercben AS FLOAT) / 45, 0)) AS FLOAT)) AS Mulasztasokszam, TanuloId, TantargyId, Gyakorlati
FROM #tempMulasztas
GROUP BY TanuloId, TantargyId, Gyakorlati
) AS Mulasztasok
INNER JOIN (
SELECT Orakszama, Tanuloid, TantargyId, Gyakorlati, TantargyNev
FROM #tempTanorak
) AS MegtartottOrak
ON MegtartottOrak.TantargyId = Mulasztasok.TantargyId
AND MegtartottOrak.TanuloId = Mulasztasok.TanuloId
AND MegtartottOrak.Gyakorlati = Mulasztasok.Gyakorlati
INNER JOIN T_FELHASZNALO ON T_FELHASZNALO.ID = MegtartottOrak.TanuloId
IF OBJECT_ID('tempdb..#tempTanorak') IS NOT NULL DROP TABLE #tempTanorak
IF OBJECT_ID('tempdb..#tempMulasztas') IS NOT NULL DROP TABLE #tempMulasztas
-- Osztály adatok az iktatáshoz
SELECT
f.C_NYOMTATASINEV Osztalyfonok
,f.ID OsztalyfonokId
,ocs.C_NEV Osztalynev
,@pOsztalyId OsztalyId
,ocs.C_EVFOLYAMTIPUSA EvfolyamTipusa
,ocs.C_FELADATELLATASIHELYID FeladatEllatasiHelyId
,o.C_TANTERVID TantervId
,o.C_KEPZESIFORMA KepzesiForma
,o.C_AGAZAT Agazat
,o.C_SZAKMACSOPORT SzakmaCsoport
,o.C_SZAKKEPESITES Szakkepesites
,o.C_RESZSZAKKEPESITES Reszszakkepesites
,ocs.C_KERESZTFELEVES OJCSJKeresztfeleves
,ocs.C_VEGZOSEVFOLYAM CSJVegzosEvfolyamu
,o.C_TECHNIKAIOSZTALY OJTechnikaiOsztaly
,o.C_NEMZETISEGI OJNemzetisegi
,o.C_KETTANNYELVU OJKettannyelvu
,o.C_NYELVIELOKESZITO OJNyelviElokeszito
,o.C_LOGOPEDIAI OJLogopediai
,o.C_SPORT OJSportOsztaly
,o.C_AJPROGRAM OJAranyJanosProgram
,o.C_GYOGYPEDAGOGIAI OJGyogypedagogiai
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.id
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = o.C_OSZTALYFONOKID
WHERE
ocs.ID = @pOsztalyId AND ocs.C_TANEVID = @pTanevId AND ocs.TOROLT = 'F';
END;
GO
@@ -0,0 +1,274 @@
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
INSERT INTO @OsztalyCsoport(Id)
SELECT Data FROM fnConvertXmlIntListToTable(@pOsztalyCsoportIdXML, 'a', 'b')
END
ELSE BEGIN
INSERT INTO @OsztalyCsoport
SELECT osztalyok.OsztalyId FROM fnGetDokumentumOsztalyokTanevenkent (@pTanevId) osztalyok
END
DECLARE ocsCur CURSOR FOR
SELECT DISTINCT k.ID FROM @OsztalyCsoport ocs
CROSS APPLY fnGetKapcsolodoOsztalycsoportok(ocs.Id) k
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))
CREATE TABLE #OsszErtekeles
(
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),
RogzitesDatum DATE
)
OPEN ocsCur
FETCH NEXT FROM ocsCur INTO @ocsId
WHILE @@FETCH_STATUS = 0
BEGIN
TRUNCATE TABLE #OsszErtekeles
INSERT INTO #OsszErtekeles
(
ErtekelesId
,Datum
,TipusId
,ErtekelesSzoveg
,ErtekelesSzovegRovidNev
,ErtekelesOsztalyzatId
,ErtekelesOsztalyzatValue
,ErtekelesOsztalyzatNev
,ErtekelesSzazalek
,MagatartasOsztalyzatId
,MagatartasOsztalyzatValue
,MagatartasOsztalyzatNev
,MagatartasSzoveg
,MagatartasSzovegRovidNev
,MagatartasErtekId
,MagatartasErtek
,MagatartasErtekOsztalyzatkent
,SzorgalomOsztalyzatId
,SzorgalomOsztalyzatValue
,SzorgalomOsztalyzatNev
,SzorgalomSzoveg
,SzorgalomSzovegRovidNev
,SzorgalomErtekId
,SzorgalomErtek
,SzorgalomErtekOsztalyzatkent
,TanuloId
,TanuloCsoportId
,OsztalyCsoportId
,TantargyId
,TantargyNevZarojellel
,TantargyNevNyomtatvanyban
,TantargyNev
,TantargyAngolNev
,TantargyNemetNev
,TargyKategoriaId
,FotargyE
,Altantargy
,FotargyId
,ErtekelesTema
,ErtekeloId
,ErtekelesModjaId
,IsMagatartasSzorgalom
,Jeloles
,JelolesAndErtekelesTema
,RogzitesDatum
)
SELECT
ErtekelesId
,Datum
,TipusId
,ErtekelesSzoveg
,ErtekelesSzovegRovidNev
,ErtekelesOsztalyzatId
,ErtekelesOsztalyzatValue
,ErtekelesOsztalyzatNev
,ErtekelesSzazalek
,MagatartasOsztalyzatId
,MagatartasOsztalyzatValue
,MagatartasOsztalyzatNev
,MagatartasSzoveg
,MagatartasSzovegRovidNev
,MagatartasErtekId
,MagatartasErtek
,MagatartasErtekOsztalyzatkent
,SzorgalomOsztalyzatId
,SzorgalomOsztalyzatValue
,SzorgalomOsztalyzatNev
,SzorgalomSzoveg
,SzorgalomSzovegRovidNev
,SzorgalomErtekId
,SzorgalomErtek
,SzorgalomErtekOsztalyzatkent
,TanuloId
,TanuloCsoportId
,OsztalyCsoportId
,TantargyId
,TantargyNevZarojellel
,TantargyNevNyomtatvanyban
,TantargyNev
,TantargyAngolNev
,TantargyNemetNev
,TargyKategoriaId
,FotargyE
,Altantargy
,FotargyId
,ErtekelesTema
,ErtekeloId
,ErtekelesModjaId
,IsMagatartasSzorgalom
,Jeloles
,JelolesAndErtekelesTema
,RogzitesDatum
FROM [fnGetDokumentumErtekelesekOsztalyonkent] (@pTanevId, @ocsId, 1518, DEFAULT, 1, DEFAULT, 1)
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
,STUFF((
SELECT DISTINCT ', ' + f.C_NYOMTATASINEV
FROM #OsszErtekeles
INNER JOIN T_FELHASZNALO_OSSZES AS f ON f.ID = #OsszErtekeles.ErtekeloId AND f.C_TANEVID = @pTanevId
WHERE (TantargyId = ertekeles.TantargyId) AND (TanuloId = ertekeles.TanuloId)
FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)'), 1, 2, '') AS TanarNeve
FROM
#OsszErtekeles ertekeles
LEFT 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
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
,ertekeles.TantargyId
,ertekeles.TanuloId
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
DROP TABLE #OsszErtekeles
END
GO
@@ -0,0 +1,268 @@
DROP PROCEDURE IF EXISTS uspGetDokumentumTantargyakErtekeleshez
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE uspGetDokumentumTantargyakErtekeleshez
@intezmenyId int,
@tanevId int,
@osztalyCsoportId int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @evfolyamTipusId INT = (SELECT C_EVFOLYAMTIPUSA FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId AND TOROLT = 'F')
CREATE TABLE #KapcsopodoTantargyak(
ID INT
,C_FOTARGYID INT
,C_NEV NVARCHAR(255)
,C_NEVNYOMTATVANYBAN NVARCHAR(255)
,C_TARGYKATEGORIA INT
,C_INTEZMENYID INT
,C_TANEVID INT
)
INSERT INTO
#KapcsopodoTantargyak
SELECT
kt.ID
,kt.C_FOTARGYID
,kt.C_NEV
,t.C_NEVNYOMTATVANYBAN
,kt.C_TARGYKATEGORIA
,kt.C_INTEZMENYID
,kt.C_TANEVID
FROM
dbo.fnGetKapcsolodoTantargyak(@intezmenyId, @tanevId, NULL) AS kt
INNER JOIN T_TANTARGY_OSSZES AS t ON t.ID = kt.ID
-- Összeszedjük az osztályhoz kapcsolódó csoportokat
CREATE TABLE #OsztalyCsoportIdList(
ID INT PRIMARY KEY
)
IF EXISTS (SELECT ID FROM T_OSZTALY_OSSZES WHERE ID = @osztalyCsoportId)
BEGIN
INSERT INTO
#OsztalyCsoportIdList (ID)
SELECT ID
FROM fnGetKapcsolodoOsztalycsoportok(@osztalyCsoportId)
-- Nem tanórai célú csoportok eltávolítása
DELETE ocsl
FROM #OsztalyCsoportIdList ocsl
LEFT JOIN T_CSOPORT_OSSZES cs
ON cs.ID = ocsl.ID
WHERE cs.C_TIPUSA NOT IN (SELECT ID from fnGetTanoraiCeluCsoportTipusok(@tanevId))
END
ELSE
BEGIN
-- Csoport esetén csak a keresett csoport kell legyen tagja
INSERT INTO #OsztalyCsoportIdList (ID)
SELECT @osztalyCsoportId
END;
-- Összeszedjük minden tanuló-tanulócsoporthoz a tárgyakat
WITH tantargy_CTE (C_TANTARGYID, C_FOTARGYID, C_TANULOID, C_TANULOCSOPORTID, C_INTEZMENYID, C_TANEVID)
AS (
-- TTF-es tárgyak
SELECT DISTINCT
Foglalkozas.C_TANTARGYID,
Tantargy.C_FOTARGYID,
f.ID as c_tanuloid,
tcsOsztaly.ID as c_tanulocsoportid,
Tantargy.C_INTEZMENYID,
Tantargy.C_TANEVID
FROM
T_FOGLALKOZAS_OSSZES Foglalkozas
INNER JOIN
T_TANTARGY_OSSZES Tantargy ON
Tantargy.C_INTEZMENYID = Foglalkozas.C_INTEZMENYID
AND Tantargy.C_TANEVID = Foglalkozas.C_TANEVID
AND Tantargy.TOROLT = 'F'
AND Tantargy.ID = Foglalkozas.C_TANTARGYID
INNER JOIN
#OsztalyCsoportIdList OsztalyCsoport ON
OsztalyCsoport.ID = Foglalkozas.C_OSZTALYCSOPORTID
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON
tcs.C_OSZTALYCSOPORTID = OsztalyCsoport.ID
AND tcs.TOROLT = 'F'
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
INNER JOIN
T_TANULOCSOPORT_OSSZES tcsOsztaly ON
tcsOsztaly.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND tcsOsztaly.C_TANULOID = f.ID
AND tcsOsztaly.TOROLT = 'F'
WHERE
Foglalkozas.C_INTEZMENYID = @intezmenyId
AND Foglalkozas.C_TANEVID = @tanevId
AND Foglalkozas.TOROLT = 'F'
UNION
-- ttf-ben nem szereplő tárgyak
SELECT DISTINCT
OrarendiOra.C_TANTARGYID,
Tantargy.C_FOTARGYID,
f.ID as c_tanuloid,
tcsOsztaly.ID as c_tanulocsoportid,
Tantargy.C_INTEZMENYID,
Tantargy.C_TANEVID
FROM
T_ORARENDIORA_OSSZES OrarendiOra
INNER JOIN
T_TANTARGY_OSSZES Tantargy ON
Tantargy.C_INTEZMENYID = OrarendiOra.C_INTEZMENYID
AND Tantargy.C_TANEVID = OrarendiOra.C_TANEVID
AND Tantargy.TOROLT = 'F'
AND Tantargy.ID = OrarendiOra.C_TANTARGYID
INNER JOIN
#OsztalyCsoportIdList OsztalyCsoport ON
OsztalyCsoport.ID = OrarendiOra.C_OSZTALYCSOPORTID
INNER JOIN
T_TANULOCSOPORT_OSSZES tcs ON
tcs.C_OSZTALYCSOPORTID = OsztalyCsoport.ID
AND (tcs.C_BELEPESDATUM < OrarendiOra.C_ORAERVENYESSEGVEGE AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= OrarendiOra.C_ORAERVENYESSEGKEZDETE))
AND tcs.TOROLT = 'F'
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
INNER JOIN
T_TANULOCSOPORT_OSSZES tcsOsztaly ON
tcsOsztaly.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND (tcsOsztaly.C_BELEPESDATUM < OrarendiOra.C_ORAERVENYESSEGVEGE AND (tcsOsztaly.C_KILEPESDATUM IS NULL OR tcsOsztaly.C_KILEPESDATUM >= OrarendiOra.C_ORAERVENYESSEGKEZDETE))
AND tcsOsztaly.C_TANULOID = f.ID
AND tcsOsztaly.TOROLT = 'F'
WHERE
OrarendiOra.C_INTEZMENYID = @intezmenyId
AND OrarendiOra.C_TANEVID = @tanevId
AND OrarendiOra.TOROLT = 'F'
UNION
-- Értékelést kapott tárgyak
SELECT DISTINCT
TanuloErtekeles.TantargyId,
TanuloErtekeles.FotargyId,
TanuloErtekeles.TanuloId,
TanuloErtekeles.TanuloCsoportId as C_TANULOCSOPORTID,
@intezmenyId,
@tanevId
FROM
fnGetDokumentumErtekelesekOsztalyonkent(@tanevId, @osztalyCsoportId, DEFAULT, DEFAULT, 1, DEFAULT, DEFAULT) AS TanuloErtekeles
-- UNION ALL
-- -- AMI-s értékelés
---- összevonható-e az alap értékeléssel
-- SELECT DISTINCT
-- TanuloErtekeles.C_TANTARGYID,
-- Tantargy.C_FOTARGYID,
-- TanuloErtekeles.C_TANULOID,
-- tcs.ID as C_TANULOCSOPORTID,
-- Tantargy.C_INTEZMENYID,
-- Tantargy.C_TANEVID
-- FROM
---- helyett az fnGetDokumentumErtekelesekOsztalyonkent
-- T_TANULOERTEKELES_OSSZES TanuloErtekeles
-- INNER JOIN
-- T_TANTARGY_OSSZES Tantargy ON
-- Tantargy.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID
-- AND Tantargy.C_TANEVID = TanuloErtekeles.C_TANEVID
-- AND Tantargy.TOROLT = 'F'
-- AND Tantargy.ID = TanuloErtekeles.C_TANTARGYID
-- INNER JOIN
-- T_OSZTALYCSOPORT_OSSZES Osztaly ON
-- Osztaly.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID
-- AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID
-- AND Osztaly.TOROLT = 'F'
-- AND Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
-- AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId
-- INNER JOIN
-- T_TANULOCSOPORT_OSSZES tcs ON
-- tcs.C_OSZTALYCSOPORTID = Osztaly.ID
-- AND tcs.C_TANULOID = TanuloErtekeles.C_TANULOID
---- and ertekels-datum between tcs.belépés and tcs. kilépés
-- WHERE
-- TanuloErtekeles.C_INTEZMENYID = @intezmenyId
-- AND TanuloErtekeles.C_TANEVID = @tanevId
-- AND TanuloErtekeles.TOROLT = 'F'
-- AND TanuloErtekeles.C_TANTARGYID IS NOT NULL
-- AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL
)
SELECT
NULL,
NULL,
'Magatartás',
'',
0,
f.ID,
tcs.ID
,0
,''
,0
,0
,''
,@intezmenyId
,@tanevId
FROM T_TANULOCSOPORT_OSSZES tcs
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId AND tcs.TOROLT = 'F'
UNION
SELECT
NULL,
NULL,
'Szorgalom',
'',
0,
f.ID,
tcs.ID
,1
,''
,0
,0
,''
,@intezmenyId
,@tanevId
FROM T_TANULOCSOPORT_OSSZES tcs
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId AND tcs.TOROLT = 'F'
UNION
SELECT DISTINCT
KapcsopodoTantargy.ID,
KapcsopodoTantargy.C_FOTARGYID,
KapcsopodoTantargy.C_NEV,
KapcsopodoTantargy.C_NEVNYOMTATVANYBAN,
KapcsopodoTantargy.C_TARGYKATEGORIA,
tantargy_CTE.c_tanuloId,
tantargy_CTE.c_tanulocsoportid
,CASE WHEN KapcsopodoTantargy.C_FOTARGYID IS NULL THEN ISNULL(TargyKategoriaDictionary.C_ORDER, 10000) ELSE ISNULL(FotargyKategoriaDictionary.C_ORDER, 10000) END
,ISNULL(ISNULL(Fotargy.C_NEVNYOMTATVANYBAN, Fotargy.C_NEV), ISNULL(KapcsopodoTantargy.C_NEVNYOMTATVANYBAN, KapcsopodoTantargy.C_NEV)) AS RENDEZ2
,ISNULL(KapcsopodoTantargy.C_FOTARGYID, KapcsopodoTantargy.ID) AS RENDEZ3
,KapcsopodoTantargy.C_FOTARGYID AS RENDEZ4
,ISNULL(KapcsopodoTantargy.C_NEVNYOMTATVANYBAN, KapcsopodoTantargy.C_NEV) AS RENDEZ5
,KapcsopodoTantargy.C_INTEZMENYID
,KapcsopodoTantargy.C_TANEVID
FROM tantargy_CTE
INNER JOIN
#KapcsopodoTantargyak KapcsopodoTantargy ON
tantargy_CTE.C_TANTARGYID = KapcsopodoTantargy.ID
OR tantargy_CTE.C_FOTARGYID = KapcsopodoTantargy.ID
LEFT JOIN
T_TANTARGY_OSSZES Fotargy ON
Fotargy.C_INTEZMENYID = tantargy_CTE.C_INTEZMENYID
AND Fotargy.C_TANEVID = tantargy_CTE.C_TANEVID
AND Fotargy.TOROLT = 'F'
AND Fotargy.ID = tantargy_CTE.C_FOTARGYID
LEFT JOIN
T_DICTIONARYITEMBASE_OSSZES TargyKategoriaDictionary ON
TargyKategoriaDictionary.Id = KapcsopodoTantargy.C_TARGYKATEGORIA
AND TargyKategoriaDictionary.TOROLT = 'F'
AND TargyKategoriaDictionary.C_TANEVID = @tanevId
LEFT JOIN
T_DICTIONARYITEMBASE_OSSZES FotargyKategoriaDictionary ON
FotargyKategoriaDictionary.ID = Fotargy.C_TARGYKATEGORIA
AND FotargyKategoriaDictionary.TOROLT = 'F'
AND FotargyKategoriaDictionary.C_TANEVID = Fotargy.C_TANEVID
END
GO
@@ -0,0 +1,96 @@
DROP PROCEDURE IF EXISTS uspGetDokumentumTanuloOrarendOsztalyonkent
GO
CREATE PROCEDURE uspGetDokumentumTanuloOrarendOsztalyonkent
@tanevId int
,@osztalyId int
,@aktivTanevId int
,@isEgyebFoglalkozasok bit
,@pTanuloId int = NULL
,@orarendErvenyessegiDatum date
AS BEGIN
SET NOCOUNT ON;
DECLARE
@feladatKategoriaId int
,@tanuloId int
DECLARE @tabla TABLE (
TanuloId int
,Ora int
,HetirendId int
,Hetfo nvarchar (max)
,Kedd nvarchar (max)
,Szerda nvarchar (max)
,Csutortok nvarchar (max)
,Pentek nvarchar (max)
,Szombat nvarchar (max)
,Hetirend nvarchar (max)
,TanuloNev nvarchar (max)
)
SELECT TOP 1
@feladatKategoriaId = o.C_FELADATKATEGORIAID
FROM T_OSZTALYCSOPORT_OSSZES o
WHERE o.ID = @osztalyId
SELECT
TanuloId
,C_NYOMTATASINEV AS TanuloNev
INTO #Tanulok
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') Tanulok
INNER JOIN T_FELHASZNALO_OSSZES Felhasznalo ON Felhasznalo.Id = Tanulok.TanuloId
WHERE @pTanuloId IS NULL
OR @pTanuloId = TanuloId
DECLARE kurzor CURSOR
FOR
SELECT
TanuloId
FROM #Tanulok
OPEN kurzor
FETCH NEXT FROM kurzor
INTO @tanuloId
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @tabla
EXEC sp_GetDokumentumTanuloOrarend
@tanevID
,@tanuloId
,@aktivTanevId
,@isEgyebFoglalkozasok
,@orarendErvenyessegiDatum
,@feladatKategoriaId
FETCH NEXT FROM kurzor INTO
@tanuloId
END
CLOSE kurzor
DEALLOCATE kurzor
SELECT
TanuloId
,TanuloNev
,Hetirend
FROM #Tanulok Tanulok
CROSS JOIN(
SELECT DISTINCT
Hetirend
FROM @tabla
) AS Hetirend(Hetirend)
ORDER BY
Hetirend
SELECT
OsztalyokOrarendje.*
FROM @tabla AS OsztalyokOrarendje
ORDER BY
Ora
END
GO
@@ -0,0 +1,232 @@
DROP PROCEDURE IF EXISTS uspGetHelyettesitesekListaja
GO
CREATE PROCEDURE uspGetHelyettesitesekListaja
@pKezdoDatum datetime = NULL
,@pVegDatum datetime = NULL
,@pHelyettesitesTipusId int = NULL
,@pHelyettesitettId int = NULL
,@pHelyettesitoId int = NULL
,@pIsNaplozott char(1) = NULL
,@pOsztalyCsoportId int = NULL
,@pTantargyId int = NULL
,@pKellKapcsolodoCsoportok char = 'F'
,@pTanevID int
,@pFeladatKategoriaId int
AS
BEGIN
SET NOCOUNT ON
DECLARE
@sql nvarchar(max)
,@whereString nvarchar(max) = ''
CREATE TABLE #NaptariNap (
Datum datetime
,OsztalyCsoportId int
,IsTanitasiNap char(1)
,PRIMARY KEY (Datum, OsztalyCsoportId, IsTanitasiNap)
)
DECLARE @DateFrom datetime, @DateTo datetime
SELECT @DateFrom = ISNULL(@pKezdoDatum,tv.C_KEZDONAP), @DateTo = ISNULL(@pVegDatum,tv.C_UTOLSONAP) FROM T_TANEV tv WHERE tv.ID = @pTanevID
INSERT INTO #NaptariNap
SELECT
tr.Datum
,tr.OsztalyId
,ISNULL(tro.IsTanitasiNap, tr.IsTanitasiNap) AS IsTanitasiNap
FROM (
SELECT
nn.C_NAPDATUMA AS Datum
,ocs.ID AS OsztalyId
,nn.C_ORARENDINAP AS IsTanitasiNap
,IIF(ocs.C_FELADATKATEGORIAID = 7553, 'T', 'F') AS IsAlapkepzeses
FROM T_NAPTARINAP_OSSZES nn
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.C_TANEVID = @pTanevID
WHERE nn.C_NAPDATUMA BETWEEN @DateFrom AND @DateTo AND nn.C_TANEVID = @pTanevID
AND nn.TOROLT = 'F'
) tr
LEFT JOIN (
SELECT
nn.C_NAPDATUMA AS Datum
,ocstr.C_OSZTALYCSOPORTID AS OsztalyId
,tr.C_ORARENDINAP AS IsTanitasiNap
,IIF(ocs.C_FELADATKATEGORIAID = 7553, 'T', 'F') AS IsAlapkepzeses
FROM T_NAPTARINAP_OSSZES nn
INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND tr.C_OSSZESCSOPORTRAVONATKOZIK = 'F' AND tr.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON ocstr.C_TANEVRENDJEID = tr.ID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = ocstr.C_OSZTALYCSOPORTID
INNER JOIN T_NAPTIPUS_OSSZES nt ON nt.ID = tr.C_NAPTIPUSA AND nt.C_ALTANEVID = tr.C_TANEVID AND nt.TOROLT = 'F'
WHERE nn.C_TANEVID = @pTanevID
AND nn.TOROLT = 'F'
) tro ON tr.Datum = tro.Datum AND tr.OsztalyId = tro.OsztalyId
WHERE (ISNULL(tro.IsTanitasiNap, tr.IsTanitasiNap) = 'T' OR ISNULL(tro.IsAlapkepzeses, tr.IsAlapkepzeses) = 'F')
IF @pKezdoDatum IS NOT NULL BEGIN
SET @whereString += N'
AND hisz.HelyettesitesDatum >= @pKezdoDatum'
END
IF @pVegDatum IS NOT NULL BEGIN
SET @whereString += N'
AND hisz.HelyettesitesDatum <= @pVegDatum'
END
IF @pHelyettesitesTipusId IS NOT NULL BEGIN
SET @whereString += N'
AND hisz.HelyettesitesTipusId = @pHelyettesitesTipusId'
END
ELSE BEGIN
SET @whereString += N'
AND hisz.HelyettesitesTipusId IS NOT NULL'
END
IF @pHelyettesitettId IS NOT NULL BEGIN
SET @whereString += N'
AND hisz.HelyettesitettId = @pHelyettesitettId'
END
IF @pHelyettesitoId IS NOT NULL BEGIN
SET @whereString += N'
AND hisz.HelyettesitoId = @pHelyettesitoId'
END
IF @pOsztalyCsoportId IS NOT NULL BEGIN
IF(@pKellKapcsolodoCsoportok = 'T')
BEGIN
SET @whereString += N'
AND hisz.OsztalyCsoportId IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@pOsztalyCsoportId))'
END
ELSE
BEGIN
SET @whereString += N'
AND hisz.OsztalyCsoportId = @pOsztalyCsoportId'
END
END
IF @pTantargyId IS NOT NULL BEGIN
SET @whereString += N'
AND hisz.TantargyId = @pTantargyId'
END
IF @pIsNaplozott = 0 BEGIN
SET @whereString+=N'
AND hisz.Naplozott = ''F'''
END
ELSE IF @pIsNaplozott = 1 BEGIN
SET @whereString += N'
AND hisz.Naplozott = ''T'''
END
ELSE BEGIN
SET @whereString += N'
AND hisz.Naplozott IS NOT NULL'
END
SET @sql = N'
SELECT
HelyettesitesDatum
,Ora
,Helyettesitett
,HelyettesitettElotagNelkul
,HelyettesitettId
,HelyettesitesTipusId
,HelyettesitesOka
,C_MEGJEGYZES AS Megjegyzes
,Helyettesito
,HelyettesitoElotagNelkul
,HelyettesitoId
,OsztalyCsoport
,OsztalyCsoportId
,Tantargy
,TantargyId
,Naplozott
,ID
FROM(
SELECT
hisz.C_HELYETTESITESNAPJA AS HelyettesitesDatum
,oo.C_ORASZAM AS Ora
,helyettesitett.C_NYOMTATASINEV AS Helyettesitett
,IIF(helyettesitett.C_NEVSORREND = ''T'',
helyettesitett.C_UTONEV + '' '' + helyettesitett.C_VEZETEKNEV,
helyettesitett.C_VEZETEKNEV + '' '' + helyettesitett.C_UTONEV) AS HelyettesitettElotagNelkul
,helyettesitett.ID AS HelyettesitettId
,hisz.C_HELYETTESITESTIPUS AS HelyettesitesTipusId
,hisz.C_HELYETTESITESOKA AS HelyettesitesOka
,'''' as C_MEGJEGYZES
,helyettesito.C_NYOMTATASINEV AS Helyettesito
,IIF(helyettesito.C_NEVSORREND = ''T'',
helyettesito.C_UTONEV + '' '' + helyettesito.C_VEZETEKNEV,
helyettesito.C_VEZETEKNEV + '' '' + helyettesito.C_UTONEV) AS HelyettesitoElotagNelkul
,helyettesito.ID AS HelyettesitoId
,ocs.C_NEV AS OsztalyCsoport
,ocs.ID AS OsztalyCsoportId
,tantargy.C_NEV AS Tantargy
,tantargy.ID AS TantargyId
,''F'' AS Naplozott
,hisz.ID as ID
FROM T_HELYETTESITESIIDOSZAK hisz
INNER JOIN T_ORARENDIORA oo ON oo.ID=hisz.C_HELYETTESITETTORARENDID
INNER JOIN T_TANTARGY tgy ON tgy.ID=oo.C_TANTARGYID
INNER JOIN T_FELHASZNALO helyettesitett ON oo.C_TANARID = helyettesitett.ID
INNER JOIN T_FELHASZNALO helyettesito ON hisz.C_HELYETTESTANAROKID= helyettesito.ID
INNER JOIN T_OSZTALYCSOPORT ocs ON oo.C_OSZTALYCSOPORTID = ocs.ID AND (ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL)
INNER JOIN T_TANTARGY tantargy ON oo.C_TANTARGYID = tantargy.ID
INNER JOIN #NaptariNap nn ON nn.OsztalyCsoportId = oo.C_OSZTALYCSOPORTID AND nn.Datum = hisz.C_HELYETTESITESNAPJA
WHERE NOT EXISTS(
SELECT 1 FROM T_TANITASIORA tao WHERE tao.C_DATUM=hisz.C_HELYETTESITESNAPJA AND tao.C_OSZTALYCSOPORTID=oo.C_OSZTALYCSOPORTID
AND tao.C_TANTARGYID=oo.C_TANTARGYID AND (tao.C_TANARID = hisz.C_HELYETTESTANAROKID OR tao.C_HELYETTESITOTANARID = hisz.C_HELYETTESTANAROKID) AND tao.C_HELYETTESITESTIPUSA IS NOT NULL
AND (oo.C_ORASZAM=tao.C_ORASZAM OR (oo.C_ORASZAM IS NULL AND tao.C_ORAKEZDETE=tao.C_DATUM+oo.C_ORAKEZDETE AND tao.C_ORAVEGE=tao.C_DATUM+oo.C_ORAVEGE)))
UNION ALL
SELECT
tao.C_DATUM AS HelyettesitesDatum
,tao.C_ORASZAM AS Ora
,helyettesitett.C_NYOMTATASINEV AS Helyettesitett
,IIF(helyettesitett.C_NEVSORREND = ''T'',
helyettesitett.C_UTONEV + '' '' + helyettesitett.C_VEZETEKNEV,
helyettesitett.C_VEZETEKNEV + '' '' + helyettesitett.C_UTONEV) AS HelyettesitettElotagNelkul
,helyettesitett.ID AS HelyettesitettId
,tao.C_HELYETTESITESTIPUSA AS HelyettesitesTipusId
,tao.C_HELYETTESITESOKA AS HelyettesitesOka
,tao.C_MEGJEGYZES as C_MEGJEGYZES
,helyettesito.C_NYOMTATASINEV AS Helyettesito
,IIF(helyettesito.C_NEVSORREND = ''T'',
helyettesito.C_UTONEV + '' '' + helyettesito.C_VEZETEKNEV,
helyettesito.C_VEZETEKNEV + '' '' + helyettesito.C_UTONEV) AS HelyettesitoElotagNelkul
,helyettesito.ID AS HelyettesitoId
,ocs.C_NEV AS OsztalyCsoport
,ocs.ID AS OsztalyCsoportId
,tantargy.C_NEV AS Tantargy
,tantargy.ID AS TantargyId
,''T'' AS Naplozott
,tao.ID
FROM T_TANITASIORA tao
INNER JOIN T_TANTARGY tgy ON tgy.ID=tao.C_TANTARGYID
INNER JOIN T_FELHASZNALO helyettesitett ON tao.C_TANARID= helyettesitett.ID
INNER JOIN T_FELHASZNALO helyettesito ON tao.C_HELYETTESITOTANARID= helyettesito.ID
INNER JOIN T_OSZTALYCSOPORT ocs ON tao.C_OSZTALYCSOPORTID = ocs.ID
INNER JOIN T_TANTARGY tantargy ON tao.C_TANTARGYID = tantargy.ID
WHERE C_HELYETTESITESTIPUSA IS NOT NULL AND tao.TOROLT=''F''
) hisz WHERE (1=1)
' +@whereString
EXEC sp_executesql @sql, N'
@pKezdoDatum datetime
,@pVegDatum datetime
,@pHelyettesitesTipusId int
,@pHelyettesitettId int
,@pHelyettesitoId int
,@pIsNaplozott char(1)
,@pOsztalyCsoportId int
,@pTantargyId int
,@pFeladatKategoriaId int'
,@pKezdoDatum = @pKezdoDatum
,@pVegDatum = @pVegDatum
,@pHelyettesitesTipusId = @pHelyettesitesTipusId
,@pHelyettesitettId = @pHelyettesitettId
,@pHelyettesitoId = @pHelyettesitoId
,@pIsNaplozott = @pIsNaplozott
,@pOsztalyCsoportId = @pOsztalyCsoportId
,@pTantargyId = @pTantargyId
,@pFeladatKategoriaId = @pFeladatKategoriaId
END
@@ -0,0 +1,694 @@
DROP PROCEDURE IF EXISTS uspGetNapkozisNaplo
GO
CREATE PROCEDURE uspGetNapkozisNaplo
@tanevId int
,@intezmenyId int
,@csoportId int
,@iskolaErdekuSzamit bit
AS BEGIN
SET NOCOUNT ON;
DECLARE
@elsonap date
,@utolsonap date
,@FelevVege date
,@datum date = GETDATE()
CREATE TABLE #OraSorszam (
TanitasioraId int PRIMARY KEY
,OraSorszam int
)
--Tanulók adatai, elérhetőségei
CREATE TABLE #tanulok (
Id int
,TanuloCsoportId int
,Nev nvarchar (max)
,Osztaly nvarchar (max)
,OsztalyId int
,Sorszam nvarchar (max)
,beirasiSorszam nvarchar (max)
,Torzslapszam nvarchar (max)
,Allampolgarsaga nvarchar (max)
,DiakIg nvarchar (max)
,SzulHely nvarchar (max)
,SzulIdo nvarchar (max)
,Anyja nvarchar (max)
,Taj nvarchar (max)
,OktAzon nvarchar (max)
,Kilepes nvarchar (max)
,Kepzes nvarchar (max)
,TanuloCimTipus nvarchar (max)
,TanuloCim nvarchar (max)
,TanuloEmail nvarchar (max)
,szoc nvarchar (max)
,BelepesDatum datetime
)
DECLARE @Mulasztasok TABLE (
IgazoltE nvarchar (1)
,Tanulo int
,Tipus int
)
DECLARE @GondViseloCimTable TABLE (
GondviseloId int
,Cim nvarchar (max)
,Cimtipusa nvarchar (max)
)
DECLARE @EmailCimTableTemp TABLE (
FelhasznaloId int
,EmailCim nvarchar (max)
,GondviseloId int
)
DECLARE @EmailCimGondviseloTable TABLE (
GondviseloId int
,EmailCim nvarchar (max)
)
DECLARE @TelefonTableTemp TABLE (
FelhasznaloId int
,Telefon nvarchar (max)
,GondviseloId int
)
DECLARE @GondviseloTelefonTable TABLE (
GondviseloId int
,Telefon nvarchar (max)
)
SELECT TOP 1
@FelevVege = tr.C_DATUM
FROM T_TANEVRENDJE_OSSZES tr
WHERE tr.C_NAPTIPUSA = 1400
AND tr.C_TANEVID = @tanevId
AND tr.TOROLT = 'F'
INSERT INTO #tanulok (
Id
,TanuloCsoportId
,Nev
,Osztaly
,OsztalyId
,Sorszam
,beirasiSorszam
,Torzslapszam
,Allampolgarsaga
,DiakIg
,SzulHely
,SzulIdo
,Anyja
,Taj
,OktAzon
,Kilepes
,Kepzes
,TanuloCimTipus
,TanuloCim
,TanuloEmail
,szoc
,BelepesDatum
)
SELECT DISTINCT
tanulok.TanuloId AS Id
,tanulok.TanuloCsoportId
,IIF(KilepesDatum IS NOT NULL, f.C_NYOMTATASINEV + ' (kilépett)', f.C_NYOMTATASINEV) AS Nev
,dbo.fnGetDokumentumTanuloAktualisOsztaly(t.Id) AS Osztaly
,dbo.fnGetDokumentumTanuloAktualisOsztalyId(t.Id) AS OsztalyId
,tta.C_NAPLOSORSZAM AS NaploSorszam
,tta.C_BEIRASINAPLOSORSZAM AS beirasiSorszam
,tta.C_TORZSLAPSZAM AS TorzsLapSzam
,Allampolgarsaga.C_NAME AS Allampolgarsag
,t.C_DIAKIGAZOLVANYSZAM AS DiakIg
,f.C_SZULETESIHELY AS SzulHely
,FORMAT(f.c_szuletesidatum, 'yyyy.MM.dd.') AS SzulIdo
,f.C_ANYJANEVE AS Anyja
,f.C_TAJSZAM AS Taj
,f.C_OKTATASIAZONOSITO AS OktAzon
,FORMAT(KilepesDatum, 'yyyy.MM.dd.') AS Kilepes
,tt.c_nev AS Kepzes
,cim.Tipus
,cim.cim
,email.c_emailcim AS TanuloEmail
,STUFF(
IIF(tta.C_MAGANTANULO = 'T', ', Magántanuló (' + ISNULL(MagantanulosagOka.C_NAME, '-') + ')', '')
+ IIF(tta.C_JOGVISZONYATSZUNETELTETO = 'T', ', Jogviszony szüneteltetve', '')
+ IIF(tta.C_SZAKMAIGYAKORLATON = 'T', ', Szakmai gyakorlat', '')
+ IIF(t.C_SZOCIALISTAMOGATAS = 'T', ', Szociális támogatás', ''), 1, 2, ''
) AS szoc
,tanulok.BelepesDatum AS BelepesDatum
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @csoportId, 'T') tanulok
INNER JOIN T_FELHASZNALO_OSSZES f ON f.id = tanulok.TanuloId
AND f.torolt = 'F'
INNER JOIN T_TANULO_OSSZES t ON t.ID = f.ID
INNER JOIN fnGetOsztalyCsoportTanuloinakTanugyiAdatai(@csoportId, DEFAULT) tta ON tta.TanuloId = t.ID
INNER JOIN T_TANTERV_OSSZES tt ON tt.ID = tta.C_TANTERVID
AND tt.TOROLT = 'F'
AND tt.C_TANEVID = @tanevId
INNER JOIN T_DICTIONARYITEMBASE_OSSZES Allampolgarsaga ON Allampolgarsaga.Id = f.c_allampolgarsaga
AND Allampolgarsaga.C_TANEVID = @tanevId
AND Allampolgarsaga.TOROLT = 'F'
LEFT JOIN (
SELECT DISTINCT
TanuloId AS TanuloId
,cimTipusa.C_NAME AS Tipus
,STUFF(
(
SELECT DISTINCT
CAST(Btemp.Cim AS nvarchar(max)) + char(13) + char(10)
FROM fnGetDokumentumTanuloOrGondviseloCim(0, @tanevId, @csoportid) btemp
WHERE temp.TanuloId = btemp.TanuloId
AND temp.CimTipusa = btemp.CimTipusa
FOR XML PATH(''), TYPE
).value
('.', 'NVARCHAR(MAX)'), 1, 0, ''
) AS Cim
FROM fnGetDokumentumTanuloOrGondviseloCim(0, @tanevId, @csoportid) temp
INNER JOIN T_DICTIONARYITEMBASE_OSSZES AS cimTipusa ON cimTipusa.Id = temp.CimTipusa
AND cimTipusa.C_TANEVID = @tanevId
AND cimTipusa.TOROLT = 'F'
WHERE temp.CimTipusa = 907
) AS cim ON cim.TanuloId = tanulok.TanuloId
LEFT JOIN T_TELEFON_OSSZES tel ON tel.c_felhasznaloid = f.id
AND tel.c_gondviseloid IS NULL
AND tel.torolt = 'F'
AND tel.c_alapertelmezett = 'T'
LEFT JOIN T_EMAIL_OSSZES email ON email.c_felhasznaloid = tanulok.TanuloId
AND email.c_gondviseloid IS NULL
AND email.torolt = 'F'
AND email.c_alapertelmezett = 'T'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS MagantanulosagOka ON MagantanulosagOka.ID = tta.C_MAGANTANULOSAGANAKOKAID
AND MagantanulosagOka.C_TANEVID = f.C_TANEVID
AND MagantanulosagOka.TOROLT = 'F'
--Kezdőoldal
SELECT
ia.c_nev AS IntezmenyNev
,dbo.fnGetDokumentumIntezmenyCime(@tanevId) AS IntezmenyCim
,ia.c_omkod AS OMKOD
,ia.c_igazgatoneve AS IntezmenyVezeto
,ocs.c_nev AS NapkozisCsoport
,IIF(LEN(ocs.c_nev) > 17, SUBSTRING(ocs.c_nev, 1, 17) + '...', ocs.c_nev) AS RovidNev
,ISNULL(f.c_nyomtatasinev, '-') AS CsoportVezeto
,ISNULL(cs.c_csoportnaploleiras, '-') AS CsoportNaploLeiras
,FORMAT(cs.c_csoportnaplomegnyitasa, 'yyyy.MM.dd.') AS Megnyitas
,ISNULL(FORMAT(cs.c_csoportnaplozarasa, 'yyyy.MM.dd.'), '-') AS Lezaras
,ocs.ID AS NapkozisCsoportId
,f.ID AS CsoportVezetoId
,ISNULL(ocs.C_EVFOLYAMTIPUSA,1296) AS EvfolyamTipusa -- 1296 = Na
,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
,ocs.C_KERESZTFELEVES AS OJCSJKeresztfeleves
,ocs.C_VEGZOSEVFOLYAM AS CSJVegzosEvfolyamu
,cs.C_TIPUSA AS CsoportTipusa
FROM T_INTEZMENY_OSSZES i
INNER JOIN T_INTEZMENYADATOK_OSSZES ia ON ia.c_intezmenyid = i.id
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.c_intezmenyid = i.id
AND ocs.c_tanevid = @tanevid
AND ocs.id = @csoportId
INNER JOIN T_CSOPORT_OSSZES cs ON cs.id = ocs.id
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.id = cs.c_csoportvezetoid
WHERE i.id = @intezmenyid
AND ia.c_tanevid = @tanevid
--Csoportot vezette
SELECT
ISNULL(f.c_nyomtatasinev, '-') AS CsoportVezeto
FROM T_CSOPORT_OSSZES cs
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.id = cs.c_csoportvezetoid
WHERE cs.id = @csoportId
AND cs.c_altanevid = @tanevid
AND cs.c_alintezmenyid = @intezmenyid
--Tanulók
SELECT DISTINCT
Nev
,Osztaly
,OktAzon
,OsztalyId
,BelepesDatum
FROM #tanulok
ORDER BY
Nev
--Naplóhetek
IF (
SELECT
c_osztalycsoportid
FROM T_OSZTALYCSOPORT_TANEVRENDJE otr
INNER JOIN t_tanevrendje_osszes tr ON tr.id = otr.c_tanevrendjeid
AND tr.c_naptipusa = 1394
WHERE c_osztalycsoportid = @csoportid
) IS NULL
SELECT TOP 1
@elsonap = tr.c_datum
FROM t_tanevrendje_osszes tr
WHERE c_naptipusa = 1394
AND c_tanevid = @tanevId
AND c_intezmenyid = @intezmenyId
AND torolt = 'F'
AND c_osszescsoportravonatkozik = 'T'
ELSE
SELECT TOP 1
@elsonap = tr.c_datum
FROM T_OSZTALYCSOPORT_TANEVRENDJE otr
INNER JOIN t_tanevrendje_osszes tr ON tr.id = otr.c_tanevrendjeid
AND tr.c_naptipusa = 1394
WHERE c_osztalycsoportid = @csoportid
IF (
SELECT
c_osztalycsoportid
FROM T_OSZTALYCSOPORT_TANEVRENDJE otr
INNER JOIN t_tanevrendje_osszes tr ON tr.id = otr.c_tanevrendjeid
AND tr.c_naptipusa = 1395
WHERE c_osztalycsoportid = @csoportid
) IS NULL
SELECT TOP 1
@utolsonap = tr.c_datum
FROM t_tanevrendje_osszes tr
WHERE c_naptipusa = 1395
AND c_tanevid = @tanevId
AND c_intezmenyid = @intezmenyId
AND torolt = 'F'
AND c_osszescsoportravonatkozik = 'T'
ELSE
SELECT TOP 1
@utolsonap = tr.c_datum
FROM T_OSZTALYCSOPORT_TANEVRENDJE otr
INNER JOIN t_tanevrendje_osszes tr ON tr.id = otr.c_tanevrendjeid
AND tr.c_naptipusa = 1395
WHERE c_osztalycsoportid = @csoportid
SELECT
nn.C_HETSORSZAMA AS Het
,FORMAT(MIN(nn.C_NAPDATUMA), 'yyyy.MM.dd.') AS HetEleje
,FORMAT(MAX(nn.C_NAPDATUMA), 'yyyy.MM.dd.') AS HetVege
FROM T_NAPTARINAP_OSSZES nn
WHERE nn.C_NAPDATUMA BETWEEN @elsoNap AND @utolsoNap
AND nn.C_HETNAPJA BETWEEN 1407 AND 1413
AND nn.TOROLT = 'F'
AND nn.c_tanevId = @tanevId
GROUP BY
nn.C_HETSORSZAMA
ORDER BY
MIN(nn.C_NAPDATUMA)
--Tanuló adatok
SELECT
*
FROM #tanulok
ORDER BY
Nev
SELECT
DATEPART(MONTH, Datum) AS Honap
,TantargyId AS Id
,Igazolt AS IgazoltE
,TanuloId AS TanuloId
,TanuloCsoportId AS TanuloCsoportId
,IgazolasTipusa AS IgazolasTipus
,Datum AS Datum
,Tipusa AS Tipus
,KesesPercben AS KesesPercben
,HetSorszama AS HetSorszama
,Oraszam AS Oraszam
,CAST(DATEPART(MONTH, Datum) AS nvarchar (10)) + IIF(C_GYAKORLATI = 'T', 'G', 'E') AS ElmeletGyakorlat
,C_GYAKORLATI AS isGyakorlat
INTO #mulasztasTmp
FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes(@tanevId, @csoportId, @iskolaErdekuSzamit, 1, 0, DEFAULT, DEFAULT, 0) TanulokMulasztasai
INNER JOIN T_TANTARGY_OSSZES AS Tantargy ON Tantargy.Id = TanulokMulasztasai.TantargyId
SELECT
ta.TanuloId AS Id
,ta.TanuloCsoportId
,ta.Sorszam
,ta.TorzslapSzam
,ta.OktAzon
,ta.TajSzam
,ta.AnyjaNeve
,ta.SzulHely
,ta.SzulIdo
,ta.SocAdat
,ta.Kepzes
,ta.TanuloNeve
,ta.Allampolgarsaga
,ta.DiakIgazolvanySzam
,ta.KilepesDatum
,ta.BeirasiNaploSorszam
,ta.AdottOsztaly AS Osztaly
,ta.AdottOsztalyId AS OsztalyId
,CONVERT(DATE, LEFT(ta.BelepesDatum, LEN(ta.BelepesDatum) - 1), 102) AS BelepesDatum
INTO #studentsWithTanuloCsoport
FROM fnGetDokumentumTanulokAdatai(@tanevId, @csoportId) ta
EXEC sp_GetDokumentumMulasztasokIdoszakonkent
@tanevId = @tanevId
,@osztalyCsoportId = @csoportId
,@iskolaErdekuSzamit = @iskolaErdekuSzamit
,@isReszletesMulasztasok = 0
--Napló
SELECT DISTINCT
nn.c_hetsorszama AS Het
,d.c_name AS Nap
,FORMAT(nn.c_napdatuma, 'yyyy. MMMM dd.', 'hu-hu') AS Datum
FROM T_NAPTARINAP_OSSZES nn
LEFT JOIN T_TANITASIORA_OSSZES tao ON tao.c_datum = nn.c_napdatuma
AND tao.c_osztalycsoportid = @csoportid
AND tao.torolt = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.id = nn.c_hetnapja
AND d.C_TANEVID = @tanevId
AND d.TOROLT = 'F'
LEFT JOIN T_FOGLALKOZAS_OSSZES fog ON fog.id = tao.c_foglalkozasid
AND fog.c_tanevid = @tanevid
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.id = fog.c_tanarid
AND f.torolt = 'F'
WHERE nn.c_napdatuma >= @elsonap
AND nn.c_napdatuma <= @utolsonap
ORDER BY
nn.c_hetsorszama
,FORMAT(nn.c_napdatuma, 'yyyy. MMMM dd.', 'hu-hu')
--Napló adatok
INSERT INTO #OraSorszam (
TanitasioraId
,OraSorszam
)
EXEC sp_GetOraSorszamByOsztaly
@osztalyCsoportId = @csoportId
,@datum = @datum
,@intezmenyId = @intezmenyId
,@tanevId = @tanevId
SELECT DISTINCT
tao.C_ORASZAM AS Oraszam
,tao.C_HETSORSZAMA AS Het
,FORMAT(tao.C_DATUM, 'yyyy. MMMM dd.', 'hu-hu') AS Datum
,CONVERT(varchar(5), tao.C_ORAKEZDETE, 108) + '-' + CONVERT(varchar(5), tao.C_ORAVEGE, 108) AS DatumKezdettel
,ISNULL('Helyettesítő: ' + helyettesito.C_NYOMTATASINEV, f.C_NYOMTATASINEV) AS Tanar
,IIF(tantargy.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN + ' (' + tantargy.C_NEV + ')', tantargy.C_NEV) AS TantargyNev
,tao.C_TANTARGYID AS TantargyId
,tao.C_MEGTARTOTT AS Megtartott
,tao.C_TEMA AS Tema
,OraSorszam
,C_ORAKEZDETE
INTO #megtartottOrak
FROM T_TANITASIORA_OSSZES tao
LEFT JOIN T_FOGLALKOZAS_OSSZES fog ON fog.id = tao.C_FOGLALKOZASID
AND fog.TOROLT = 'F'
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.id = tao.C_TANARID
AND f.TOROLT = 'F'
LEFT JOIN T_FELHASZNALO_OSSZES helyettesito ON helyettesito.ID = tao.C_HELYETTESITOTANARID
INNER JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = tao.C_TANTARGYID
LEFT JOIN (
SELECT DISTINCT
OraSorszam
,TanitasioraId
FROM #OraSorszam
) AS oraSorszam ON oraSorszam.TanitasioraId = tao.Id
WHERE tao.C_OSZTALYCSOPORTID = @csoportid
AND tao.TOROLT = 'F'
ORDER BY
tao.C_ORAKEZDETE
,tao.C_ORASZAM
SELECT
*
FROM #megtartottOrak
--Napló mulasztás
SELECT
C_HETSORSZAMA AS Het
,C_NYOMTATASINEV AS Tanulo
,MAX([1]) AS Hetfo
,MAX([2]) AS Kedd
,MAX([3]) AS Szerda
,MAX([4]) AS Csutortok
,MAX([5]) AS Pentek
,MAX([6]) AS Szombat
FROM (
SELECT
C_HETSORSZAMA
,C_NYOMTATASINEV
,[0]
,[1]
,[2]
,[3]
,[4]
,[5]
,[6]
FROM (
SELECT DISTINCT
n.C_NAPTARINAPID
,DATEPART(dw, n.C_DATUM) AS NAP
,t.C_NYOMTATASINEV
,n.C_HETSORSZAMA
,'[' + STUFF(
(
SELECT
', ' + CAST(OraSorszam AS varchar(3)) + IIF(tm.C_TIPUS = 1499, '(k)', '')
FROM T_TANULOMULASZTAS_OSSZES tm
INNER JOIN T_TANITASIORA_OSSZES o ON o.ID = tm.C_TANITASIORAKID
LEFT JOIN (
SELECT DISTINCT
OraSorszam
,TanitasioraId
FROM #OraSorszam
) AS oraSorszam ON oraSorszam.TanitasioraId = o.Id
WHERE n.C_NAPTARINAPID = o.C_NAPTARINAPID
AND m.C_ORATANULOIID = tm.C_ORATANULOIID
AND tm.C_TANEVID = @tanevId
AND tm.torolt = 'F'
AND tm.c_intezmenyId = @intezmenyId
AND o.c_tanevId = @tanevId
AND o.C_OSZTALYCSOPORTID = @csoportId
AND o.TOROLT = 'F'
ORDER BY
o.C_NAPTARINAPID
,o.C_ORASZAM
FOR XML PATH(''), TYPE
) .value
('.', 'varchar(max)'), 1, 2, ''
) + '] ' + CAST(SUM(IIF(m.C_IGAZOLT = 'T', 1, 0)) AS varchar(2)) + '/' + CAST(SUM(IIF(m.C_IGAZOLT = 'F', 1, 0)) AS varchar(2)) AS hianyzas
FROM T_TANITASIORA_OSSZES n
INNER JOIN T_TANULOMULASZTAS_OSSZES m ON m.C_TANITASIORAKID = n.ID
AND m.torolt = 'F'
INNER JOIN T_FELHASZNALO_OSSZES t ON t.ID = m.C_ORATANULOIID
WHERE n.C_TANEVID = @tanevId
AND m.C_TANEVID = @tanevId
AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
AND n.C_OSZTALYCSOPORTID = @csoportId
AND n.TOROLT = 'F'
GROUP BY
n.C_NAPTARINAPID
,C_ORATANULOIID
,C_NYOMTATASINEV
,n.C_HETSORSZAMA
,n.C_DATUM
) AS SUB PIVOT(MAX(HIANYZAS) FOR NAP IN(
[0]
,[1]
,[2]
,[3]
,[4]
,[5]
,[6])) AS PivotTable
) AS ASD
GROUP BY
C_HETSORSZAMA
,C_NYOMTATASINEV
ORDER BY
C_HETSORSZAMA
--Tanuló feljegyzései
SELECT
tte.C_TANULOID AS Tanulo
,FORMAT(tao.c_datum, 'yyyy.MM.dd.') AS Idopont
,d.C_NAME AS Tipus
,te.C_TARTALOM AS Feljegyzes
,f.C_NYOMTATASINEV AS Feljegyzo
FROM T_TANULO_TANULOESEMENY tte
INNER JOIN T_TANULOESEMENY_OSSZES te ON te.Id = tte.C_TANULOESEMENYID
INNER JOIN T_TANITASIORA_OSSZES tao ON tao.Id = te.C_TANITASIORAID
INNER JOIN T_FELHASZNALO_OSSZES f ON f.Id = te.C_FELJEGYZOID
INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.Id = te.C_TIPUS
AND d.C_TANEVID = @tanevId
AND d.TOROLT = 'F'
WHERE C_OSZTALYCSOPORTID = @csoportId
AND te.TOROLT = 'F'
AND C_TIPUS <> 1534
INSERT INTO @GondViseloCimTable (
GondviseloId
,Cim
,Cimtipusa
)
SELECT DISTINCT
GondviseloId
,STUFF(
(
SELECT DISTINCT
CAST(Btemp.Cim AS nvarchar (max)) + char(13) + char(10)
FROM fnGetDokumentumTanuloOrGondviseloCim (1, @tanevId, @csoportid) btemp
WHERE temp.GondviseloId = btemp.GondviseloId
AND temp.CimTipusa = btemp.CimTipusa
FOR XML PATH(''), TYPE
).value
('.', 'NVARCHAR(MAX)'), 1 ,0, ''
)
,cimTipusa.C_NAME
FROM fnGetDokumentumTanuloOrGondviseloCim (1, @tanevId, @csoportid) temp
INNER JOIN T_DICTIONARYITEMBASE_OSSZES cimTipusa ON cimTipusa.Id = temp.CimTipusa
AND cimTipusa.C_TANEVID = @tanevId
INSERT INTO @EmailCimTableTemp (
FelhasznaloId
,EmailCim
,GondviseloId
)
SELECT
TanuloId
,C_EMAILCIM
,C_GONDVISELOID
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @csoportid, 'T') tanulo
INNER JOIN T_EMAIL_OSSZES email ON email.C_FELHASZNALOID = TanuloId
WHERE email.TOROLT = 'F'
AND email.C_TANEVID = @tanevId
AND LEN(C_EMAILCIM) > 0
INSERT INTO @EmailCimGondviseloTable (
GondviseloId
,EmailCim
)
SELECT DISTINCT
GondviseloId
,STUFF(
(
SELECT DISTINCT
CAST(btemp.EmailCim AS nvarchar (max)) + char(13) + char(10)
FROM @EmailCimTableTemp btemp
WHERE temp.GondviseloId = btemp.GondviseloId
AND btemp.GondviseloId IS NOT NULL
FOR XML PATH(''), TYPE
).value
('.', 'NVARCHAR(MAX)'), 1 ,0, ''
) Email
FROM @EmailCimTableTemp temp
WHERE GondviseloId IS NOT NULL
INSERT INTO @TelefonTableTemp (
FelhasznaloId
,Telefon
,GondviseloId
)
SELECT
TanuloId
,C_TELEFONSZAM
,C_GONDVISELOID
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @csoportid, 'T') tanulo
INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_FELHASZNALOID = TanuloId
WHERE
telefon.TOROLT = 'F'
AND telefon.C_TANEVID = @tanevId
AND LEN(telefon.C_TELEFONSZAM) > 0
INSERT INTO @GondviseloTelefonTable (
GondviseloId
,Telefon
)
SELECT DISTINCT
GondviseloId
,STUFF(
(
SELECT DISTINCT
CAST(btemp.Telefon AS nvarchar (max)) + char(13) + char(10)
FROM @TelefonTableTemp btemp
WHERE temp.GondviseloId = btemp.GondviseloId
AND temp.FelhasznaloId = btemp.FelhasznaloId
AND GondviseloId IS NOT NULL
FOR XML PATH(''), TYPE
).value
('.', 'NVARCHAR(MAX)'), 1 ,0, ''
)
FROM @TelefonTableTemp temp
WHERE GondviseloId IS NOT NULL
/*gondviselő elérhetőségei */
SELECT DISTINCT
Gondviselok.TanuloId AS TanuloId
,Gondviselok.GondviseloNev + ' (' + RokonsagiFok.C_NAME + ')' AS C_NEV
,cim.Cimtipusa AS C_CIMTIPUSA
,cim.cim AS C_OSSZETETTCIM
,telefon.telefon AS C_TELEFONSZAM
,email.emailcim AS C_EMAILCIM
FROM fnGetDokumentumGondviselok (@csoportId, @tanevId, 'F', 'T') Gondviselok
INNER JOIN T_DICTIONARYITEMBASE_OSSZES RokonsagiFok ON RokonsagiFok.ID = Gondviselok.RokonsagifokId AND RokonsagiFok.C_TANEVID = @tanevId
LEFT JOIN @EmailCimGondviseloTable email ON email.GondviseloId = Gondviselok.GondviseloId
LEFT JOIN @GondviseloTelefonTable telefon ON telefon.GondviseloId = Gondviselok.GondviseloId
LEFT JOIN @GondViseloCimTable cim ON cim.GondviseloId = Gondviselok.GondviseloId
ORDER BY cim.Cimtipusa
--megtartott órák száma
SELECT
COUNT(mo.TantargyId) AS TantargyOraszam
,mo.Tantargynev AS TantargyNev
INTO #megtartottOrakSzama
FROM #megtartottOrak mo
WHERE mo.Megtartott = 'T'
GROUP BY
mo.TantargyId
,mo.TantargyNev
SELECT DISTINCT
SUM(tmp.TantargyOraszam) AS OsszesTantargySzam
,STUFF(
(
SELECT DISTINCT
', ' + btmp.TantargyNev + '(' + CAST(btmp.TantargyOraszam AS nvarchar (max)) + ')'
FROM #megtartottOrakSzama btmp
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'), 1 , 2, ''
) AS Tantargyak
FROM #megtartottOrakSzama tmp
-- Csoport tanárai
SELECT
targy.C_NEV AS TargyNev
,tanar.C_NYOMTATASINEV AS TanarNev
,targykategoria.C_ORDER
,tanar.ID TanarId
,tanar.C_OKTATASIAZONOSITO AS TanarOktAzon
FROM T_FELHASZNALO_OSSZES tanar
INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.C_TANARID = tanar.ID
AND f.TOROLT='F'
AND f.C_OSZTALYCSOPORTID = @csoportId
INNER JOIN T_TANTARGY_OSSZES targy ON targy.ID = f.C_TANTARGYID
AND targy.TOROLT='F'
INNER JOIN T_TARGYKATEGORIATIPUS_OSSZES ON T_TARGYKATEGORIATIPUS_OSSZES.ID = targy.C_TARGYKATEGORIA
INNER JOIN T_DICTIONARYITEMBASE_OSSZES targykategoria ON targykategoria.ID = T_TARGYKATEGORIATIPUS_OSSZES.ID
AND targykategoria.TOROLT = 'F'
AND targykategoria.C_TANEVID = @tanevId
WHERE tanar.TOROLT = 'F'
AND tanar.C_INTEZMENYID = @intezmenyid
AND tanar.c_tanevId = @tanevId
GROUP BY
C_ORDER
,targy.C_NEV
,tanar.C_NYOMTATASINEV
,tanar.ID
,tanar.C_OKTATASIAZONOSITO
ORDER BY
C_ORDER
,targy.C_NEV
,tanar.C_NYOMTATASINEV
END
GO
@@ -0,0 +1,336 @@
DROP PROCEDURE IF EXISTS uspGetNyomtatvanyokOrarendOsszes
GO
CREATE PROCEDURE uspGetNyomtatvanyokOrarendOsszes
@intezmenyId int
,@tanevID int
,@pIdoszakKezdete datetime
,@pIdoszakVege datetime
,@pTanarId int = NULL
,@pIsHelyettesitesNelkul bit = 0
,@pOsztalyCsoportId int = NULL
,@pTanuloId int = NULL
,@pTantargyId int = NULL
,@pTeremId int = NULL
,@pCsakOrarendiOrak bit = 0
,@pIsNapirend bit /* 0 csak orarendi ora, 1 csak napirend, NULL mindkettő */
,@pKapcsolodoCsoportokMegjelenitese bit = NULL
,@pOsztalyBontasokMegjelenitese bit = NULL
,@pFeladatKategoriaId int = NULL
AS BEGIN
SET NOCOUNT ON;
DECLARE
@intezmenyNev nvarchar(510)
CREATE TABLE #OrarendiOrak (
Id int
,ORARENDIID int
,Datum datetime
,Bontott char (1)
,Hetirend int
,HetNapja int
,HetSorszam int
,ErvenyessegKezdete datetime
,ErvenyessegVege datetime
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,TargyNev nvarchar (300)
,TargyNevForMobile nvarchar (300)
,TargykategoriaID int
,Megtartott char (1)
,CsengetesiRendOraID int
,CsengetesiRendID int
,MaxNapiOraszam int
,OsztalyNev nvarchar (255)
,TanevRendOsztalyCsoportId int
,MegjelenesOka nvarchar (300)
,TanarNev nvarchar (255)
,TeremNev nvarchar (255)
,TeremId int
,OraTipus nvarchar (200)
,Hianyzas char (1)
,Keses char (1)
,Ures char (1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar (255)
,HelyettesitesId int
,TanarID int
,AdminAltalKiirt char (1)
,GroupId int
,Tema nvarchar (max)
,TantargyId int
,OsztCsopId int
,INDEX IX1 CLUSTERED(Datum, HetNapja, Oraszam, TanevRendOsztalyCsoportId, TantargyId, TanarID)
)
CREATE TABLE #Oraszamok (
Oraszam int
,PRIMARY KEY(Oraszam)
)
SELECT TOP 1
@intezmenyNev = i.C_NEV
FROM T_INTEZMENYADATOK_OSSZES i
WHERE i.C_INTEZMENYID = @intezmenyId
AND i.C_TANEVID = @tanevID
AND i.TOROLT = 'F'
INSERT INTO #OrarendiOrak (
Id
,ORARENDIID
,Datum
,Bontott
,Hetirend
,HetNapja
,HetSorszam
,ErvenyessegKezdete
,ErvenyessegVege
,OraKezdete
,OraVege
,Oraszam
,TargyNev
,TargyNevForMobile
,TargykategoriaID
,Megtartott
,CsengetesiRendOraID
,CsengetesiRendID
,MaxNapiOraszam
,OsztalyNev
,TanevRendOsztalyCsoportId
,MegjelenesOka
,TanarNev
,TeremNev
,TeremId
,OraTipus
,Hianyzas
,Keses
,Ures
,HelyettesitoTanarID
,HelyettesitoTanarNev
,HelyettesitesId
,TanarID
,AdminAltalKiirt
,GroupId
,Tema
,TantargyId
,OsztCsopId
)
EXEC sp_GetOrarend
@pIntezmenyId = @intezmenyId
,@pTanevId = @tanevID
,@pIdoszakKezdete = @pIdoszakKezdete
,@pIdoszakVege = @pIdoszakVege
,@pTanarId = @pTanarId
,@pIsHelyettesitesNelkul = @pIsHelyettesitesNelkul
,@pOsztalyCsoportId = @pOsztalyCsoportId
,@pTanuloId = @pTanuloId
,@pTantargyId = @pTantargyId
,@pTeremId = @pTeremId
,@pCsakOrarendiOrak = @pCsakOrarendiOrak
,@pIsNapirend = @pIsNapirend
,@pFeladatKategoriaId = @pFeladatKategoriaId
-- a lekért órarendben a minden héten órákat átállítjuk a hétsorszámnak megfelelő hetirendre
UPDATE orak
SET orak.Hetirend = ISNULL(hr.Hetirend, orak.Hetirend)
FROM #OrarendiOrak orak
LEFT JOIN (
SELECT DISTINCT
o.Hetirend
,o.HetSorszam
FROM #OrarendiOrak o
WHERE Hetirend <> 1554
) hr ON hr.HetSorszam = orak.HetSorszam
WHERE orak.Hetirend = 1554
-- kapcsolódó csoportok óráinak törlése
IF @pKapcsolodoCsoportokMegjelenitese IS NOT NULL AND @pKapcsolodoCsoportokMegjelenitese = 0
DELETE orak
FROM #OrarendiOrak orak
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = orak.OsztCsopId
AND cs.C_OSZTALYBONTASID IS NULL
WHERE OsztCsopId != @pOsztalyCsoportId
-- osztálybontott csoportok óráinak törlése
IF @pOsztalyBontasokMegjelenitese IS NOT NULL AND @pOsztalyBontasokMegjelenitese = 0
DELETE orak
FROM #OrarendiOrak orak
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = orak.OsztCsopId
AND cs.C_OSZTALYBONTASID IS NOT NULL
WHERE orak.OsztCsopId != @pOsztalyCsoportId
INSERT INTO #Oraszamok (Oraszam)
SELECT DISTINCT
ora.C_ORASZAM AS Oraszam
FROM T_ORARENDIORA_OSSZES ora
WHERE ora.C_INTEZMENYID = @intezmenyId
AND ora.C_TANEVID = @tanevID
AND ora.C_ORASZAM IS NOT NULL
SELECT DISTINCT
COALESCE(@pTanarId, @pTeremId, @pOsztalyCsoportId) AS Id
,STUFF(
(
SELECT DISTINCT
', ' + IIF(@pTanarId IS NOT NULL, bo.TanarNev, IIF(@pTeremId IS NOT NULL, bo.TeremNev, IIF(@pOsztalyCsoportId IS NOT NULL, bo.OsztalyNev,'')))
FROM #OrarendiOrak bo
WHERE bo.Hetirend = o.Hetirend
FOR XML PATH(''), TYPE
).value
('.', 'NVARCHAR(MAX)') ,1 , 2, ''
) AS Nev
,@intezmenyNev AS IntezmenyNev
,STUFF(
(
SELECT DISTINCT
', ' + dic.C_NAME
FROM #OrarendiOrak qw
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dic ON dic.C_TANEVID = @tanevID
AND dic.TOROLT = 'F'
AND dic.ID = qw.Hetirend
WHERE o.Hetirend = qw.Hetirend
FOR XML PATH(''), TYPE
).value
('(./text())[1]', 'VARCHAR(MAX)'), 1, 2, ''
) AS Hetirend
FROM #OrarendiOrak o
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dic ON o.Hetirend = dic.ID
AND dic.C_TANEVID = @tanevID
AND dic.TOROLT = 'F'
SELECT
COALESCE(@pTanarId, @pTeremId, @pOsztalyCsoportId) AS Id
,IIF(@pIsNapirend = 0, CAST(t.Oraszam AS nvarchar(3)), ISNULL(t.OraKezdete + ' - ' + t.OraVege, '')) AS Ora
,t.Hetirend AS HetirendId
,[1408] AS Hetfo
,[1409] AS Kedd
,[1410] AS Szerda
,[1411] AS Csutortok
,[1412] AS Pentek
,[1413] AS Szombat
,t.HetirendNev AS HetirendNev
FROM (
SELECT
*
FROM (
SELECT
STUFF(
(
SELECT
CONVERT(nvarchar(max), bo.TargyNev + nchar(13) + nchar(10) + bo.OsztalyNev + nchar(13) + nchar(10) + bo.TeremNev + nchar(10) + nchar(10))
FROM #OrarendiOrak bo
WHERE bo.OraKezdete = o.OraKezdete
FOR XML PATH(''), TYPE
).value
('.', 'NVARCHAR(MAX)'), 1, 0, ''
) AS TargyNev
,o.HetNapja
,o.Oraszam
,CONVERT(char(5), o.OraKezdete, 108) AS OraKezdete
,CONVERT(char(5), o.OraVege, 108) AS OraVege
,dic.C_NAME AS HetirendNev
,o.Hetirend AS Hetirend
FROM #OrarendiOrak AS o
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS dic ON dic.C_TANEVID = @tanevID
AND dic.TOROLT = 'F'
AND dic.ID = o.Hetirend
) ot PIVOT(MAX(ot.TargyNev) FOR ot.HetNapja IN(
[1408]
,[1409]
,[1410]
,[1411]
,[1412]
,[1413])
) AS pv
) AS t
ORDER BY
HetirendNev
,CASE WHEN @pIsNapirend = 0 THEN t.Oraszam ELSE CAST(t.OraKezdete AS datetime) END
-- Iktatási adatok
IF @pOsztalyCsoportId IS NOT NULL
BEGIN
-- Osztály adatok
SELECT
@pOsztalyCsoportId AS OsztalyId
,ocs.C_EVFOLYAMTIPUSA AS Evfolyam
,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
,o.C_KEPZESIFORMA AS KepzesiForma
,o.C_OSZTALYFONOKID AS OsztalyFonokId
,o.C_TANTERVID AS TantervId
,o.C_SZAKMACSOPORT AS SzakmaCsoport
,o.C_AGAZAT AS Agazat
,o.C_SZAKKEPESITES AS Szakkepesites
,o.C_RESZSZAKKEPESITES AS Reszszakkepesites
,ocs.C_KERESZTFELEVES AS OJCSJKeresztfeleves
,o.C_TECHNIKAIOSZTALY AS OJTechnikaiOsztaly
,o.C_NEMZETISEGI AS OJNemzetisegi
,o.C_KETTANNYELVU AS OJKettannyelvu
,o.C_NYELVIELOKESZITO AS OJNyelviElokeszito
,o.C_LOGOPEDIAI AS OJLogopediai
,o.C_SPORT AS OJSportOsztaly
,o.C_AJPROGRAM AS OJAranyJanosProgram
,o.C_GYOGYPEDAGOGIAI AS OJGyogypedagogiai
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F'
AND o.C_ALTANEVID = ocs.C_TANEVID
AND o.C_ALINTEZMENYID = ocs.C_INTEZMENYID
WHERE ocs.ID = @pOsztalyCsoportId
AND ocs.TOROLT = 'F'
AND ocs.C_TANEVID = @tanevID
AND ocs.C_INTEZMENYID = @intezmenyId
-- Osztály csoportok
SELECT DISTINCT
ot.OsztCsopId AS CsoportId
FROM #OrarendiOrak ot
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = ot.OsztCsopId
AND cs.TOROLT = 'F'
-- Alkalmazottak
SELECT DISTINCT
ot.TanarID AS TanarId
,f.C_OKTATASIAZONOSITO AS TanarOktAzon
FROM #OrarendiOrak ot
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = ot.TanarID
AND f.TOROLT = 'F'
-- Tanulók
SELECT DISTINCT
f.ID AS TanuloId
,f.C_NYOMTATASINEV AS TanuloNeve
,f.C_OKTATASIAZONOSITO AS TanuloOktAzon
FROM #OrarendiOrak ot
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ot.OsztCsopId
AND tcs.C_TANEVID = @tanevID
AND tcs.TOROLT = 'F'
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID
AND f.TOROLT = 'F'
END
ELSE
IF @pTanarId IS NOT NULL
-- Alkalmazottak
SELECT DISTINCT
orak.TanarID AS TanarId
,f.C_OKTATASIAZONOSITO AS TanarOktAzon
,mua.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
FROM #OrarendiOrak orak
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = orak.TanarID
AND f.TOROLT = 'F'
INNER JOIN T_MUNKAUGYIADATOK_OSSZES mua ON mua.C_ALKALMAZOTTID = orak.TanarID
AND mua.TOROLT = 'F'
ELSE
IF @pTeremId IS NOT NULL
SELECT
t.ID AS TeremId
,t.C_MUKODESIHELYID AS FeladatEllatasiHelyId
FROM T_TEREM_OSSZES t
WHERE t.ID = @pTeremId
AND t.TOROLT = 'F'
END
GO
@@ -0,0 +1,110 @@
-- =============================================
-- Description: <Előszedjük a tanuló értékeléseket a megadott paraméterek alapján>
-- =============================================
DROP PROCEDURE IF EXISTS uspGetSzamonkeresElorejelzesDetailDataSet
GO
CREATE PROCEDURE uspGetSzamonkeresElorejelzesDetailDataSet
@IntezmenyId int
,@TanevId int
,@pDatum datetime
,@pOraGroupId int
,@pOsztalyCsoportId int
AS
BEGIN
DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @pOsztalyCsoportId)
CREATE TABLE #OsztalyCsoport (Id int PRIMARY KEY)
INSERT INTO #OsztalyCsoport (Id)
SELECT ID
FROM dbo.fnGetKapcsolodoOsztalycsoportokByDate (@pOsztalyCsoportId, @pDatum, @pDatum)
CREATE TABLE #Tanulo (Id int PRIMARY KEY)
INSERT INTO #Tanulo (Id)
SELECT tcs.C_TANULOID
FROM T_TANULOCSOPORT tcs
WHERE tcs.C_OSZTALYCSOPORTID = @pOsztalyCsoportId AND (tcs.C_BELEPESDATUM <= @pDatum AND (tcs.C_KILEPESDATUM > @pDatum OR tcs.C_KILEPESDATUM IS NULL))
CREATE TABLE #Szamonkeresek (SzamonkeresId int PRIMARY KEY, OsztalyCsoportId int, Letszam int, ErintettTanulokSzama int)
CREATE TABLE #NaptariNap (
Datum datetime
,OsztalyCsoportId int
,IsEgyediNap char(1) COLLATE database_default
,PRIMARY KEY (Datum, OsztalyCsoportId)
)
INSERT INTO #NaptariNap
SELECT
tr.Datum
,tr.OsztalyId
,ISNULL(tro.IsEgyediNap, tr.IsEgyediNap) AS IsEgyediNap
FROM (
SELECT
nn.C_NAPDATUMA AS Datum
,ocs.ID AS OsztalyId
,'F' as IsEgyediNap
FROM T_NAPTARINAP_OSSZES nn
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.C_TANEVID = @TanevId AND ocs.C_FELADATKATEGORIAID = @kategoriaId
WHERE nn.C_TANEVID = @TanevId
AND nn.TOROLT = 'F'
AND nn.C_ORARENDINAP = 'T'
) tr
LEFT JOIN (
SELECT
nn.C_NAPDATUMA AS Datum
,ocstr.C_OSZTALYCSOPORTID AS OsztalyId
,tr.C_EGYEDINAP AS IsEgyediNap
FROM T_NAPTARINAP_OSSZES nn
INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND tr.C_OSSZESCSOPORTRAVONATKOZIK = 'F' AND tr.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON ocstr.C_TANEVRENDJEID = tr.ID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = ocstr.C_OSZTALYCSOPORTID AND ocs.C_FELADATKATEGORIAID = @kategoriaId
INNER JOIN T_NAPTIPUS_OSSZES nt ON nt.ID = tr.C_NAPTIPUSA AND nt.C_ALTANEVID = tr.C_TANEVID AND nt.TOROLT = 'F'
WHERE nn.C_TANEVID = @TanevId
AND nn.TOROLT = 'F'
AND tr.C_ORARENDINAP = 'T'
) tro ON tr.Datum = tro.Datum AND tr.OsztalyId = tro.OsztalyId
INSERT INTO #Szamonkeresek (SzamonkeresId, OsztalyCsoportId, Letszam, ErintettTanulokSzama)
SELECT szk.ID AS SzamonkeresId, ocs.Id AS OsztalyCsoportId, COUNT(1) AS Letszam, COUNT(t.id) AS ErintettTanulokSzama
FROM T_SZAMONKERESELOREJELZES szk
INNER JOIN T_ORARENDIORA oo ON oo.C_ORARENDIORAGROUPID = szk.C_ORARENDIORAGROUPID AND szk.C_SZAMONKERESDATUMA >= oo.C_ORAERVENYESSEGKEZDETE AND szk.C_SZAMONKERESDATUMA <= oo.C_ORAERVENYESSEGVEGE AND oo.TOROLT = 'F'
INNER JOIN #NaptariNap nn ON nn.IsEgyediNap = oo.C_EGYEDINAP AND nn.OsztalyCsoportId = oo.C_OSZTALYCSOPORTID AND nn.Datum = szk.C_SZAMONKERESDATUMA
INNER JOIN #OsztalyCsoport ocs ON ocs.Id = oo.C_OSZTALYCSOPORTID
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = oo.C_OSZTALYCSOPORTID AND (tcs.C_BELEPESDATUM <= @pDatum AND (tcs.C_KILEPESDATUM > @pDatum OR tcs.C_KILEPESDATUM IS NULL))
LEFT JOIN #Tanulo t ON t.id = tcs.C_TANULOID
WHERE szk.C_SZAMONKERESDATUMA = @pDatum /* + szűrés*/
GROUP BY szk.ID, ocs.Id
SELECT
sze.ID AS ID
,oo.C_ORASZAM as Oraszam
,targy.C_NEV as Tantargy
,ISNULL(helyettestanar.C_NYOMTATASINEV, tanar.C_NYOMTATASINEV) as Tanar
,dib.C_NAME as SzamonkeresMod
,rogzito.C_NYOMTATASINEV as RogzitoTanar
,ocs.C_NEV as Osztaly
,sze.C_ROGZITESDATUMA as RogzitesDatum
,sze.C_SZAMONKERESMEGNEVEZES as SzamonkeresMegnevezes
,sze.C_SZAMONKERESDATUMA as SzamonkeresDatum
,CAST(temp.ErintettTanulokSzama AS nvarchar(20)) + ' / '+ CAST(temp.Letszam AS nvarchar(20)) + ' tanuló' as TanulokSzama
,IIF(@pOraGroupId = sze.C_ORARENDIORAGROUPID, 'T', 'F') as Torolheto
FROM #Szamonkeresek temp
INNER JOIN T_SZAMONKERESELOREJELZES sze ON sze.ID = temp.SzamonkeresId
INNER JOIN T_ORARENDIORA oo ON oo.C_ORARENDIORAGROUPID = sze.C_ORARENDIORAGROUPID AND sze.C_SZAMONKERESDATUMA between oo.C_ORAERVENYESSEGKEZDETE AND oo.C_ORAERVENYESSEGVEGE AND oo.TOROLT = 'F'
INNER JOIN #NaptariNap nn ON nn.IsEgyediNap = oo.C_EGYEDINAP AND nn.OsztalyCsoportId = oo.C_OSZTALYCSOPORTID AND nn.Datum = sze.C_SZAMONKERESDATUMA
INNER JOIN T_TANTARGY targy ON targy.ID = oo.C_TANTARGYID AND targy.TOROLT = 'F'
INNER JOIN T_FELHASZNALO tanar ON tanar.ID = oo.C_TANARID AND tanar.TOROLT = 'F'
INNER JOIN T_FELHASZNALO rogzito ON rogzito.ID = sze.C_ROGZITOID AND rogzito.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = oo.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
INNER JOIN T_DICTIONARYITEMBASE dib ON dib.ID = sze.C_SZAMONKERESMODID AND dib.C_INTEZMENYID = sze.C_INTEZMENYID AND dib.C_TANEVID = sze.C_TANEVID AND dib.C_TYPE = 'ErtekelesMod'
LEFT JOIN T_HELYETTESITESIIDOSZAK helyettes ON helyettes.C_HELYETTESITETTORARENDID = oo.ID AND helyettes.C_HELYETTESITESNAPJA = sze.C_SZAMONKERESDATUMA AND helyettes.TOROLT = 'F'
LEFT JOIN T_FELHASZNALO helyettestanar ON helyettestanar.ID = helyettes.C_HELYETTESTANAROKID AND helyettestanar.TOROLT = 'F'
WHERE sze.C_SZAMONKERESDATUMA = @pDatum AND sze.C_INTEZMENYID = @IntezmenyId AND sze.C_TANEVID = @TanevId
END
GO
@@ -0,0 +1,444 @@
DROP PROCEDURE IF EXISTS uspGetTanoranKivuliNaplo
GO
CREATE PROCEDURE uspGetTanoranKivuliNaplo
@tanevId int
,@intezmenyId int
,@csoportId int
,@iskolaErdekuSzamit bit
AS BEGIN
SET NOCOUNT ON;
DECLARE
@datum date = GETDATE()
,@letszam int
CREATE TABLE #students (
ID int
,Osztaly nvarchar (max)
,OsztalyId int
,BelepesDatum datetime
)
CREATE TABLE #OraSorszam (
TanitasioraId int
,OraSorszam nvarchar (100)
)
DECLARE @TanuloCimTable TABLE (
FelhasznaloId int
,Cim nvarchar (max)
,Cimtipusa nvarchar (max)
)
DECLARE @GondViseloCimTable TABLE (
GondviseloId int
,Cim nvarchar (max)
,Cimtipusa nvarchar (max)
)
DECLARE @EmailCimTableTemp TABLE (
FelhasznaloId int
,EmailCim nvarchar (max)
,GondviseloId int
)
DECLARE @EmailCimTanuloTable TABLE (
FelhasznaloId int
,EmailCim nvarchar (max)
)
DECLARE @EmailCimGondviseloTable TABLE (
GondviseloId int
,EmailCim nvarchar (max)
)
DECLARE @TelefonTableTemp TABLE (
FelhasznaloId int
,Telefon nvarchar (max)
,GondviseloId int
)
DECLARE @TanuloTelefonTable TABLE (
FelhasznaloId int
,Telefon nvarchar (max)
)
DECLARE @GondviseloTelefonTable TABLE (
GondviseloId int
,Telefon nvarchar (max)
)
SELECT
@letszam = COUNT(tcs.C_TANULOID)
FROM T_TANULOCSOPORT_OSSZES tcs
WHERE tcs.C_OSZTALYCSOPORTID = @csoportId
AND tcs.TOROLT='F'
--Fejlecoldal (Fejléc)
SELECT
ia.C_NEV AS IntezmenyNev
,dbo.fnGetDokumentumIntezmenyCime(@tanevId) AS IntezmenyCim
,ia.C_OMKOD AS OMKOD
,ia.C_IGAZGATONEVE AS IntezmenyVezeto
,ocs.C_NEV AS Csoport
,ocs.ID AS CsoportId
,ISNULL(f.C_NYOMTATASINEV,'-') AS CsoportVezeto
,ISNULL(cs.C_CSOPORTNAPLOLEIRAS,'-') AS CsoportNaploLeiras
,dbo.fnGetDokumentumDatumFormatum(cs.C_CSOPORTNAPLOMEGNYITASA) AS Megnyitas
,ISNULL(dbo.fnGetDokumentumDatumFormatum(cs.C_CSOPORTNAPLOZARASA),'-') AS Lezaras
,t.C_NEV AS Tanev
,cs.C_CSOPORTNAPLOLEIRAS AS Megjegyzes
,f.ID AS CsoportVezetoId
,ISNULL(ocs.C_EVFOLYAMTIPUSA, 1296) AS EvfolyamTipusa -- 1296 = Na
,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
,ocs.C_KERESZTFELEVES AS OJCSJKeresztfeleves
,ocs.C_VEGZOSEVFOLYAM AS CSJVegzosEvfolyamu
,cs.C_TIPUSA AS CsoportTipusa
FROM T_INTEZMENY_OSSZES i
INNER JOIN T_INTEZMENYADATOK_OSSZES ia ON ia.C_INTEZMENYID = i.ID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.C_INTEZMENYID = i.ID
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = ocs.ID
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = cs.C_CSOPORTVEZETOID
INNER JOIN T_TANEV_OSSZES t ON t.ID = ia.C_TANEVID
WHERE ia.C_TANEVID = @tanevid
AND ocs.ID = @csoportId
INSERT INTO #students (
ID
,Osztaly
,OsztalyId
,BelepesDatum
)
SELECT
TanuloId
,dbo.fnGetDokumentumTanuloAktualisOsztaly(TanuloId) AS Osztaly
,dbo.fnGetDokumentumTanuloAktualisOsztalyId(TanuloId) AS OsztalyId
,BelepesDatum AS BelepesDatum
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @csoportId, 'T')
--Osztaly (Csoport tanulóinak osztályai)
SELECT
COUNT(Id) AS Tanulo
,Osztaly
,OsztalyId
FROM #students
GROUP BY
Osztaly
,OsztalyId
--Napló
INSERT INTO #OraSorszam (
TanitasioraId
,OraSorszam
)
EXEC sp_GetOraSorszamByOsztaly
@osztalyCsoportId = @csoportId
,@datum = @datum
,@intezmenyId = @intezmenyId
,@tanevId = @tanevId
SELECT
dbo.fnGetDokumentumDatumFormatum(tao.C_ORAKEZDETE) + CONVERT(varchar(5), tao.C_ORAKEZDETE, 108) + '-' + CONVERT(varchar(5), tao.C_ORAVEGE, 108) AS Datum
,IIF(tantargy.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN
+ ' (' + tantargy.C_NEV + ')', tantargy.C_NEV) AS TantargyNev
,tao.C_TANTARGYID AS TantargyId
,tao.C_MEGTARTOTT AS Megtartott
,IIF(C_MEGTARTOTT = 'F', 'Elmaradt', tao.C_TEMA) AS Tema
,@letszam - ISNULL(hianyzo.Hianyzok, 0) AS Letszam
,IIF(C_MEGTARTOTT = 'F', '-', f.C_NYOMTATASINEV) AS Pedagogus
,Terem.C_NEV AS TeremNev
,ISNULL(Oraszam.OraSorszam + '.', '-') AS OraSorszam
,tao.C_ORAKEZDETE AS OraKezdete
INTO #megtartottOrak
FROM T_TANITASIORA_OSSZES tao
LEFT JOIN (
SELECT
tm.C_TANITASIORAKID AS Tanitasiora
,COUNT(tm.C_ORATANULOIID) AS Hianyzok
FROM T_TANULOMULASZTAS_OSSZES tm
WHERE tm.torolt = 'F'
AND C_TIPUS IN (1499, 1500)
GROUP BY tm.C_TANITASIORAKID
) hianyzo ON hianyzo.Tanitasiora = tao.ID
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.id = tao.C_ORATULAJDONOSID
INNER JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = tao.C_TANTARGYID
LEFT JOIN T_TEREM_OSSZES Terem ON Terem.Id = tao.C_TEREMID
LEFT JOIN #OraSorszam Oraszam ON Oraszam.TanitasioraId = tao.Id
WHERE tao.C_OSZTALYCSOPORTID = @csoportId
AND tao.TOROLT='F'
SELECT
Datum
,TantargyNev
,TantargyId
,Megtartott
,Tema
,Letszam
,Pedagogus
,TeremNev
,OraSorszam
,OraKezdete
FROM #megtartottOrak
ORDER BY OraKezdete
/*TANULÓ adatai*/
SELECT DISTINCT
ta.TanuloId
,ta.OktAzon
,ta.TajSzam
,ta.AnyjaNeve
,ta.SzulHely
,ta.SzulIdo
,ta.SocAdat
,ta.Kepzes
,ta.TanuloNeve
,ta.Allampolgarsaga
,ta.DiakIgazolvanySzam
,ta.AktualisOsztaly Osztalya
,ta.BelepesDatum
FROM fnGetDokumentumTanulokAdatai(@tanevId, @csoportId) ta
ORDER BY TanuloNeve
/*TANULÓ elérhetőségei */
INSERT INTO @TanuloCimTable (
FelhasznaloId
,Cim
,Cimtipusa
)
SELECT DISTINCT
TanuloId
,STUFF(
(
SELECT DISTINCT
CAST(Btemp.Cim AS nvarchar (max)) + char(13) + char(10)
FROM fnGetDokumentumTanuloOrGondviseloCim (0, @tanevId, @csoportid) btemp
WHERE temp.TanuloId = btemp.TanuloId
AND temp.CimTipusa = btemp.CimTipusa
FOR XML PATH(''), TYPE
).value
('.', 'NVARCHAR(MAX)'), 1, 0, ''
)
,cimTipusa.C_NAME
FROM fnGetDokumentumTanuloOrGondviseloCim (0, @tanevId, @csoportid) temp
INNER JOIN T_DICTIONARYITEMBASE_OSSZES cimTipusa ON cimTipusa.Id = temp.CimTipusa
AND cimTipusa.C_TANEVID = @tanevId
INSERT INTO @GondViseloCimTable (
GondviseloId
,Cim
,Cimtipusa
)
SELECT DISTINCT
GondviseloId
,STUFF(
(
SELECT DISTINCT
CAST(Btemp.Cim AS nvarchar (max)) + char(13) + char(10)
FROM fnGetDokumentumTanuloOrGondviseloCim (1, @tanevId, @csoportid) btemp
WHERE temp.GondviseloId = btemp.GondviseloId
AND temp.CimTipusa = btemp.CimTipusa
FOR XML PATH(''), TYPE
).value
('.', 'NVARCHAR(MAX)'), 1 ,0, ''
)
,cimTipusa.C_NAME
FROM fnGetDokumentumTanuloOrGondviseloCim (1, @tanevId, @csoportid) temp
INNER JOIN T_DICTIONARYITEMBASE_OSSZES cimTipusa ON cimTipusa.Id = temp.CimTipusa
AND cimTipusa.C_TANEVID = @tanevId
INSERT INTO @EmailCimTableTemp (
FelhasznaloId
,EmailCim
,GondviseloId
)
SELECT
TanuloId
,C_EMAILCIM
,C_GONDVISELOID
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @csoportid, 'T') tanulo
INNER JOIN T_EMAIL_OSSZES email ON email.C_FELHASZNALOID = TanuloId
WHERE email.TOROLT = 'F'
AND email.C_TANEVID = @tanevId
AND LEN(C_EMAILCIM) > 0
INSERT INTO @EmailCimTanuloTable (
FelhasznaloId
,EmailCim
)
SELECT DISTINCT
FelhasznaloId
,STUFF(
(
SELECT DISTINCT
CAST(btemp.EmailCim AS nvarchar (max)) + char(13) + char(10)
FROM @EmailCimTableTemp btemp
WHERE temp.FelhasznaloId = btemp.FelhasznaloId
AND btemp.GondviseloId IS NULL
FOR XML PATH(''), TYPE
).value
('.', 'NVARCHAR(MAX)'), 1 ,0, ''
) Email
FROM @EmailCimTableTemp temp
WHERE GondviseloId IS NULL
INSERT INTO @EmailCimGondviseloTable (
GondviseloId
,EmailCim
)
SELECT DISTINCT
GondviseloId
,STUFF(
(
SELECT DISTINCT
CAST(btemp.EmailCim AS nvarchar (max)) + char(13) + char(10)
FROM @EmailCimTableTemp btemp
WHERE temp.GondviseloId = btemp.GondviseloId
AND btemp.GondviseloId IS NOT NULL
FOR XML PATH(''), TYPE
).value
('.', 'NVARCHAR(MAX)'), 1 ,0, ''
) Email
FROM @EmailCimTableTemp temp
WHERE GondviseloId IS NOT NULL
INSERT INTO @TelefonTableTemp (
FelhasznaloId
,Telefon
,GondviseloId
)
SELECT
TanuloId
,C_TELEFONSZAM
,C_GONDVISELOID
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @csoportid, 'T') tanulo
INNER JOIN T_TELEFON_OSSZES telefon ON telefon.C_FELHASZNALOID = TanuloId
WHERE
telefon.TOROLT = 'F'
AND telefon.C_TANEVID = @tanevId
AND LEN(telefon.C_TELEFONSZAM) > 0
INSERT INTO @TanuloTelefonTable (
FelhasznaloId
,Telefon
)
SELECT DISTINCT
FelhasznaloId
,STUFF(
(
SELECT DISTINCT
CAST(btemp.Telefon AS nvarchar (max)) + char(13) + char(10)
FROM @TelefonTableTemp btemp
WHERE temp.FelhasznaloId = btemp.FelhasznaloId
AND GondviseloId IS NULL
FOR XML PATH(''), TYPE
).value
('.', 'NVARCHAR(MAX)'), 1 ,0, ''
)
FROM @TelefonTableTemp temp
WHERE GondviseloId IS NULL
INSERT INTO @GondviseloTelefonTable (
GondviseloId
,Telefon
)
SELECT DISTINCT
GondviseloId
,STUFF(
(
SELECT DISTINCT
CAST(btemp.Telefon AS nvarchar (max)) + char(13) + char(10)
FROM @TelefonTableTemp btemp
WHERE temp.GondviseloId = btemp.GondviseloId
AND temp.FelhasznaloId = btemp.FelhasznaloId
AND GondviseloId IS NOT NULL
FOR XML PATH(''), TYPE
).value
('.', 'NVARCHAR(MAX)'), 1 ,0, ''
)
FROM @TelefonTableTemp temp
WHERE GondviseloId IS NOT NULL
SELECT
s.Id AS tanuloid
,cim.Cimtipusa AS cimtipus
,cim.Cim
,email.EmailCim AS email
,telefon.Telefon AS telefonszam
FROM #students s
LEFT JOIN @TanuloCimTable cim ON cim.FelhasznaloId = s.Id
LEFT JOIN @EmailCimTanuloTable email ON email.FelhasznaloId = s.Id
LEFT JOIN @TanuloTelefonTable telefon ON telefon.FelhasznaloId = s.Id
ORDER BY Cimtipusa
/*gondviselő elérhetőségei */
SELECT DISTINCT
Gondviselok.TanuloId AS TanuloId
,Gondviselok.GondviseloNev + ' (' + RokonsagiFok.C_NAME + ')' AS C_NEV
,cim.Cimtipusa AS C_CIMTIPUSA
,cim.cim AS C_OSSZETETTCIM
,telefon.telefon AS C_TELEFONSZAM
,email.emailcim AS C_EMAILCIM
FROM fnGetDokumentumGondviselok (@csoportId, @tanevId, 'F', 'T') Gondviselok
INNER JOIN T_DICTIONARYITEMBASE_OSSZES RokonsagiFok ON RokonsagiFok.ID = Gondviselok.RokonsagifokId AND RokonsagiFok.C_TANEVID = @tanevId
LEFT JOIN @EmailCimGondviseloTable email ON email.GondviseloId = Gondviselok.GondviseloId
LEFT JOIN @GondviseloTelefonTable telefon ON telefon.GondviseloId = Gondviselok.GondviseloId
LEFT JOIN @GondViseloCimTable cim ON cim.GondviseloId = Gondviselok.GondviseloId
ORDER BY cim.Cimtipusa
--megtartott órák száma
SELECT
COUNT(mo.TantargyId) AS TantargyOraszam
,mo.Tantargynev AS TantargyNev
INTO #megtartottOrakSzama
FROM #megtartottOrak mo
WHERE mo.Megtartott = 'T'
GROUP BY
mo.TantargyId
,mo.TantargyNev
SELECT DISTINCT
SUM(tmp.TantargyOraszam) AS OsszesTantargySzam
,STUFF(
(
SELECT DISTINCT
', ' + btmp.TantargyNev + '(' + CAST(btmp.TantargyOraszam AS nvarchar (max)) + ')'
FROM #megtartottOrakSzama btmp
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'), 1 , 2, ''
) AS Tantargyak
FROM #megtartottOrakSzama tmp
-- Csoport tanárai
SELECT
targy.C_NEV AS TargyNev
,tanar.C_NYOMTATASINEV AS TanarNev
,targykategoria.C_ORDER
,tanar.ID TanarId
,tanar.C_OKTATASIAZONOSITO AS TanarOktAzon
FROM T_FELHASZNALO_OSSZES tanar
INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.C_TANARID = tanar.ID
AND f.TOROLT='F'
AND f.C_OSZTALYCSOPORTID = @csoportId
INNER JOIN T_TANTARGY_OSSZES targy ON targy.ID = f.C_TANTARGYID
AND targy.TOROLT='F'
INNER JOIN T_TARGYKATEGORIATIPUS_OSSZES ON T_TARGYKATEGORIATIPUS_OSSZES.ID = targy.C_TARGYKATEGORIA
INNER JOIN T_DICTIONARYITEMBASE_OSSZES targykategoria ON targykategoria.ID = T_TARGYKATEGORIATIPUS_OSSZES.ID
AND targykategoria.TOROLT = 'F'
AND targykategoria.C_TANEVID = @tanevId
WHERE tanar.TOROLT = 'F'
AND tanar.C_INTEZMENYID = @intezmenyid
AND tanar.c_tanevId = @tanevId
GROUP BY
C_ORDER
,targy.C_NEV
,tanar.C_NYOMTATASINEV
,tanar.ID
,tanar.C_OKTATASIAZONOSITO
ORDER BY
C_ORDER
,targy.C_NEV
,tanar.C_NYOMTATASINEV
END
GO
@@ -0,0 +1,336 @@
-- =============================================
-- Description: <Előszedjük a tanuló értékeléseket a megadott paraméterek alapján>
-- =============================================
DROP PROCEDURE IF EXISTS uspGetTanuloErtekelesListDataSet
GO
CREATE PROCEDURE uspGetTanuloErtekelesListDataSet
@pTanevId int
,@pId int = NULL
,@pTanuloId int = NULL
,@pOsztalyCsoportId int = NULL
,@pCsoportTipusId int = NULL
,@pTantargyId int = NULL
,@pErtekeloId int = NULL
,@pOsztalyzatId int = NULL
,@pErtekelesModId int = NULL
,@pTipusId int = NULL
,@pDatumTol datetime = NULL
,@pDatumIg datetime = NULL
,@pRogzitesDatumTol datetime = NULL
,@pRogzitesDatumIg datetime = NULL
,@pErtekelesSzoveg nvarchar(max) = NULL
,@pErtekelesTema nvarchar(255) = NULL
,@pKellKapcsolodoCsoportok char = 'F'
,@pFeladatKategoriaId int = NULL
,@pFeladatEllatasiHelyId int = NULL
,@pEgyszerAdhatoTanuloErtekelesTipusIdListString nvarchar(255) = NULL
,@pSpecialisErtekelesOsztalyzatEnumId int = NULL
,@pSpecialisErtekelesOsztalyzatSzoveg nvarchar(255) = NULL
,@pSpecialisErtekelesOsztalyzatSzovegRovidNev nvarchar(3) = NULL
,@pSpecialisErtekelesOsztalyzatId int = NULL
,@pSpecialisErtekelesOsztalyzatTema nvarchar(255) = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@sql nvarchar(max)
,@preSelectSql nvarchar(max) = ''
,@selectSql nvarchar(max)
,@joinSql nvarchar(max)
,@whereSql nvarchar(max)
,@postSelectSql nvarchar(max) = ''
SET @selectSql = N'
SELECT DISTINCT
ert.ID AS ID
,ert.C_DATUM AS Datum
,ert.C_ROGZITESDATUM AS RogzitesDatum
,ert.C_TIPUSID AS TipusId
,ert.C_ISERTESITESELKULDVE AS IsErtesitesElkuldve
,ert.C_ERTEKELESMODID AS ErtekelesModId
,ert.C_ERTEKELESTEMA AS ErtekelesTema
,ert.C_ERTEKELESOSZTALYZATID AS ErtekelesOsztalyzatId
,ert.C_ERTEKELESSZOVEG AS ErtekelesSzoveg
,ert.C_ERTEKELESSZAZALEK AS ErtekelesSzazalek
,ert.C_ISMAGATARTASSZORGALOM AS IsMagatartasSzorgalom
,ert.C_MAGATARTASOSZTALYZATID AS MagatartasOsztalyzatId
,ert.C_MAGATARTASSZOVEG AS MagatartasSzoveg
,ert.C_MAGATARTASERTEKID AS MagatartasErtekId
,ert.C_SZORGALOMOSZTALYZATID AS SzorgalomOsztalyzatId
,ert.C_SZORGALOMSZOVEG AS SzorgalomSzoveg
,ert.C_SZORGALOMERTEKID AS SzorgalomErtekId
,ert.CREATED AS Created
,ISNULL(suly.C_SULY, 100) AS ErtekelesSuly
,tantargy.ID AS TantargyId
,ISNULL(tantargy.C_NEV, ''Magatartás/Szorgalom'') AS TantargyNev
,tantargy.C_TARGYKATEGORIA AS TantargyKategoriaId
,fotargy.ID AS FotargyId
,fotargy.C_NEV AS FotargyNev
,fotargy.C_TARGYKATEGORIA AS FotargyTantargyKategoriaId
,tanulo.ID AS TanuloId
,tanulo.C_NYOMTATASINEV AS TanuloNev
,IIF(tanulo.C_NEVSORREND = ''T'', --
tanulo.C_UTONEV + '' '' + tanulo.C_VEZETEKNEV, --
tanulo.C_VEZETEKNEV + '' '' + tanulo.C_UTONEV
) AS TanuloNevElotagNelkul
,tanar.ID AS ErtekeloId
,tanar.C_NYOMTATASINEV AS ErtekeloNyomtatasiNev
,IIF(tanar.C_NEVSORREND = ''T'', --
tanar.C_UTONEV + '' '' + tanar.C_VEZETEKNEV, --
tanar.C_VEZETEKNEV + '' '' + tanar.C_UTONEV
) AS ErtekeloNyomtatasiNevElotagNelkul
,ocs.C_NEV AS OsztalyCsoportNev
,rogziteskoriTanuloOsztaly.ID AS RogziteskoriTanuloOsztalyId
,rogziteskoriTanuloOsztaly.C_EVFOLYAMTIPUSA AS RogziteskoriTanuloOsztalyEvfolyamTipusId
FROM T_TANULOERTEKELES_OSSZES ert'
SET @joinSql = N'
LEFT JOIN T_TANARIATLAGSULY_OSSZES suly ON suly.C_TANEVID = ert.C_TANEVID
AND suly.TOROLT = ''F''
AND suly.C_ERTEKELESMODID = ert.C_ERTEKELESMODID
LEFT JOIN T_TANTARGY_OSSZES tantargy ON tantargy.C_TANEVID = ert.C_TANEVID
AND tantargy.TOROLT = ''F''
AND tantargy.ID = ert.C_TANTARGYID
LEFT JOIN T_TANTARGY_OSSZES fotargy ON fotargy.C_TANEVID = ert.C_TANEVID
AND fotargy.TOROLT = ''F''
AND fotargy.ID = tantargy.C_FOTARGYID
LEFT JOIN T_OSZTALYCSOPORT_OSSZES rogziteskoriTanuloOsztaly ON rogziteskoriTanuloOsztaly.C_TANEVID = ert.C_TANEVID
AND rogziteskoriTanuloOsztaly.TOROLT = ''F''
AND rogziteskoriTanuloOsztaly.ID = ert.C_ROGZITESKORITANULOOSZTALYID
INNER JOIN T_FELHASZNALO_OSSZES tanulo ON tanulo.C_TANEVID = ert.C_TANEVID
AND tanulo.TOROLT = ''F''
AND tanulo.ID = ert.C_TANULOID
INNER JOIN T_FELHASZNALO_OSSZES tanar ON tanar.C_TANEVID = ert.C_TANEVID
AND tanar.TOROLT = ''F''
AND tanar.ID = ert.C_ERTEKELOID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.C_TANEVID = ert.C_TANEVID
AND ocs.TOROLT = ''F''
AND ocs.ID = ert.C_OSZTALYCSOPORTID'
SET @whereSql = N'
WHERE ert.C_TANEVID = @pTanevId
AND ert.TOROLT = ''F'''
IF @pId IS NOT NULL BEGIN
SET @whereSql += N'
AND ert.ID = @pId'
END
IF @pTanuloId IS NOT NULL BEGIN
SET @whereSql += N'
AND ert.C_TANULOID = @pTanuloId'
END
IF @pOsztalyCsoportId IS NOT NULL BEGIN
SET @preSelectSql += N'
CREATE TABLE #OsztalyCsoportIdList(
ID int PRIMARY KEY
)
INSERT INTO #OsztalyCsoportIdList (ID)'
IF(@pKellKapcsolodoCsoportok = 'T') BEGIN
SET @preSelectSql += N'
SELECT ID
FROM fnGetKapcsolodoOsztalycsoportok(@pOsztalyCsoportId)'
END
ELSE BEGIN
SET @preSelectSql += N'
VALUES (@pOsztalyCsoportId)
'
END
SET @joinSql += N'
LEFT JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANEVID = ert.C_TANEVID
AND tcs.TOROLT = ''F''
AND tcs.C_TANULOID = tanulo.ID
AND tcs.C_BELEPESDATUM <= GETDATE()
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= GETDATE())'
SET @whereSql += N'
AND ert.C_OSZTALYCSOPORTID IN (SELECT ID FROM #OsztalyCsoportIdList)
AND EXISTS (
SELECT 1
FROM
T_TANULOCSOPORT_OSSZES tcs
WHERE
tcs.C_TANEVID = ert.C_TANEVID
AND tcs.TOROLT = ''F''
AND tcs.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
AND tcs.C_TANULOID = ert.C_TANULOID
)'
SET @postSelectSql += N'
DROP TABLE IF EXISTS #OsztalyCsoportIdList'
END
IF @pCsoportTipusId IS NOT NULL BEGIN
SET @joinSql += N'
LEFT JOIN T_CSOPORT_OSSZES csoport ON csoport.C_ALTANEVID = ert.C_TANEVID
AND csoport.TOROLT = ''F''
AND csoport.ID = ocs.ID'
SET @whereSql += N'
AND csoport.C_TIPUSA = @pCsoportTipusId'
END
IF @pTantargyId IS NOT NULL BEGIN
SET @whereSql += N'
AND tantargy.ID = @pTantargyId'
END
IF @pErtekeloId IS NOT NULL BEGIN
SET @whereSql += N'
AND tanar.ID = @pErtekeloId'
END
IF @pOsztalyzatId IS NOT NULL BEGIN
SET @whereSql += N'
AND (ert.C_ERTEKELESOSZTALYZATID = @pOsztalyzatId OR
ert.C_MAGATARTASOSZTALYZATID = @pOsztalyzatId OR
ert.C_SZORGALOMOSZTALYZATID = @pOsztalyzatId)'
END
IF @pErtekelesModId IS NOT NULL BEGIN
SET @whereSql += N'
AND ert.C_ERTEKELESMODID = @pErtekelesModId'
END
IF @pTipusId IS NOT NULL BEGIN
SET @whereSql += N'
AND ert.C_TIPUSID = @pTipusId'
END
IF @pDatumTol IS NOT NULL BEGIN
--NOTE: Ide az adott nap 00:00:00 időponttal fog bejönni.
SET @whereSql += N'
AND ert.C_DATUM >= @pDatumTol'
END
IF @pDatumIg IS NOT NULL BEGIN
--NOTE: Ide az adott nap 23:59:59 időponttal fog bejönni.
SET @whereSql += N'
AND ert.C_DATUM <= @pDatumIg'
END
IF @pRogzitesDatumTol IS NOT NULL
BEGIN
--NOTE: Ide az adott nap 00:00:00 időponttal fog bejönni.
SET @whereSql += N'
AND ert.C_ROGZITESDATUM >= @pRogzitesDatumTol'
END
IF @pRogzitesDatumIg IS NOT NULL BEGIN
--NOTE: Ide az adott nap 23:59:59 időponttal fog bejönni.
SET @whereSql += N'
AND ert.C_ROGZITESDATUM <= @pRogzitesDatumIg'
END
IF @pErtekelesSzoveg IS NOT NULL BEGIN
SET @whereSql += N'
AND (ert.C_ERTEKELESSZOVEG LIKE ''%'' + @pErtekelesSzoveg + ''%'' OR
ert.C_MAGATARTASSZOVEG LIKE ''%'' + @pErtekelesSzoveg + ''%'' OR
ert.C_SZORGALOMSZOVEG LIKE ''%'' + @pErtekelesSzoveg + ''%'')'
END
IF @pErtekelesTema IS NOT NULL BEGIN
SET @whereSql += N'
AND ert.C_ERTEKELESTEMA LIKE ''%'' + @pErtekelesTema + ''%'''
END
IF @pFeladatKategoriaId IS NOT NULL BEGIN
SET @whereSql += N'
AND ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId'
END
IF @pFeladatEllatasiHelyId IS NOT NULL BEGIN
SET @whereSql += N'
AND ocs.C_FELADATELLATASIHELYID = @pFeladatEllatasiHelyId'
END
IF (@pSpecialisErtekelesOsztalyzatEnumId) IS NOT NULL BEGIN
IF (@pSpecialisErtekelesOsztalyzatEnumId = 1/*NOTE: NemIrt*/) BEGIN
SET @whereSql += N'
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
AND (ert.C_TIPUSID NOT IN (' + @pEgyszerAdhatoTanuloErtekelesTipusIdListString + ') AND
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ert.C_ERTEKELESSZOVEG),CHAR(160),CHAR(32)),CHAR(32),''(¤¤)''),''¤)(¤'',''''),''(¤¤)'',CHAR(32)))) = LOWER(@pSpecialisErtekelesOsztalyzatSzoveg) AND
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ert.C_ERTEKELESSZOVEGROVIDNEV),CHAR(160),CHAR(32)),CHAR(32),''(¤¤)''),''¤)(¤'',''''),''(¤¤)'',CHAR(32)))) = LOWER(@pSpecialisErtekelesOsztalyzatSzovegRovidNev))'
END
IF (@pSpecialisErtekelesOsztalyzatEnumId = 2/*NOTE: Dicseret*/ OR
@pSpecialisErtekelesOsztalyzatEnumId = 3/*NOTE: Kituno*/) BEGIN
SET @whereSql += N'
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
AND (ert.C_TIPUSID IN (' + @pEgyszerAdhatoTanuloErtekelesTipusIdListString + ') AND
ert.C_ERTEKELESOSZTALYZATID = @pSpecialisErtekelesOsztalyzatId AND
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ert.C_ERTEKELESTEMA),CHAR(160),CHAR(32)),CHAR(32),''(¤¤)''),''¤)(¤'',''''),''(¤¤)'',CHAR(32)))) = LOWER(@pSpecialisErtekelesOsztalyzatTema))'
END
IF (@pSpecialisErtekelesOsztalyzatEnumId = 4/*NOTE: Mentesitve*/) BEGIN
SET @whereSql += N'
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
AND (ert.C_TIPUSID IN (' + @pEgyszerAdhatoTanuloErtekelesTipusIdListString + ') AND
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ert.C_ERTEKELESSZOVEG),CHAR(160),CHAR(32)),CHAR(32),''(¤¤)''),''¤)(¤'',''''),''(¤¤)'',CHAR(32)))) = LOWER(@pSpecialisErtekelesOsztalyzatSzoveg) AND
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ert.C_ERTEKELESSZOVEGROVIDNEV),CHAR(160),CHAR(32)),CHAR(32),''(¤¤)''),''¤)(¤'',''''),''(¤¤)'',CHAR(32)))) = LOWER(@pSpecialisErtekelesOsztalyzatSzovegRovidNev))'
END
END
SET @sql = @preSelectSql + @selectSql + @joinSql + @whereSql + @postSelectSql
EXEC sp_executesql @sql, N'
@pTanevId int
,@pId int = NULL
,@pTanuloId int = NULL
,@pOsztalyCsoportId int = NULL
,@pCsoportTipusId int = NULL
,@pTantargyId int = NULL
,@pErtekeloId int = NULL
,@pOsztalyzatId int = NULL
,@pErtekelesModId int = NULL
,@pTipusId int = NULL
,@pDatumTol datetime = NULL
,@pDatumIg datetime = NULL
,@pRogzitesDatumTol datetime = NULL
,@pRogzitesDatumIg datetime = NULL
,@pErtekelesSzoveg nvarchar(max) = NULL
,@pErtekelesTema nvarchar(255) = NULL
,@pFeladatKategoriaId int = NULL
,@pFeladatEllatasiHelyId int = NULL
,@pSpecialisErtekelesOsztalyzatSzoveg nvarchar(255) = NULL
,@pSpecialisErtekelesOsztalyzatSzovegRovidNev nvarchar(3) = NULL
,@pSpecialisErtekelesOsztalyzatId int = NULL
,@pSpecialisErtekelesOsztalyzatTema nvarchar(255) = NULL'
,@pTanevId = @pTanevId
,@pId = @pId
,@pTanuloId = @pTanuloId
,@pOsztalyCsoportId = @pOsztalyCsoportId
,@pCsoportTipusId = @pCsoportTipusId
,@pTantargyId = @pTantargyId
,@pErtekeloId = @pErtekeloId
,@pOsztalyzatId = @pOsztalyzatId
,@pErtekelesModId = @pErtekelesModId
,@pTipusId = @pTipusId
,@pDatumTol = @pDatumTol
,@pDatumIg = @pDatumIg
,@pRogzitesDatumTol = @pRogzitesDatumTol
,@pRogzitesDatumIg = @pRogzitesDatumIg
,@pErtekelesSzoveg = @pErtekelesSzoveg
,@pErtekelesTema = @pErtekelesTema
,@pFeladatKategoriaId = @pFeladatKategoriaId
,@pFeladatEllatasiHelyId = @pFeladatEllatasiHelyId
,@pSpecialisErtekelesOsztalyzatSzoveg = @pSpecialisErtekelesOsztalyzatSzoveg
,@pSpecialisErtekelesOsztalyzatSzovegRovidNev = @pSpecialisErtekelesOsztalyzatSzovegRovidNev
,@pSpecialisErtekelesOsztalyzatId = @pSpecialisErtekelesOsztalyzatId
,@pSpecialisErtekelesOsztalyzatTema = @pSpecialisErtekelesOsztalyzatTema
END
GO
@@ -0,0 +1,200 @@
-- =============================================
-- Description: Lekérdezzük a részletes hiányzási adatokat egy osztályra nézve.
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS uspGetTanulokMulasztasaiKeseseiReszletes
GO
CREATE PROCEDURE uspGetTanulokMulasztasaiKeseseiReszletes
@intezmenyId INT,
@tanevId INT,
@osztalyId INT,
@elmeletGyakorlat BIT
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@elmeletiOraPercben INT = 45
,@gyakorlatiOraPercben INT = 45
,@osztalyNev NVARCHAR(200)
SELECT DISTINCT
@osztalyId OsztalyId
,ocs.C_NEV OsztalyNev
,o.C_OSZTALYNAPLOLEIRASA OsztalyMegjegyzes
,o.C_OSZTALYFONOKID PartnerID
,ofo.C_NYOMTATASINEV Osztalyfonok
,i.C_IGAZGATONEVE IntezmenyVezeto
,i.C_NEV IntezmenyNeve
,i.C_IRANYITOSZAM IntezmenyIranyitoszam
,i.C_VAROS IntezmenyVaros
,dbo.fnGetDokumentumIntezmenyCime(@tanevId) IntezmenyCime
,i.C_OMKOD IntezmenyOMKod
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID
LEFT JOIN T_FELHASZNALO_OSSZES ofo ON ofo.ID = o.C_OSZTALYFONOKID
INNER JOIN T_INTEZMENYADATOK_OSSZES i on i.C_INTEZMENYID=ocs.C_INTEZMENYID AND i.C_TANEVID = ocs.C_TANEVID
WHERE
o.TOROLT = 'F'
AND i.TOROLT = 'F'
AND ofo.TOROLT = 'F'
AND ocs.ID = @osztalyId
AND ocs.C_TANEVID = @tanevId
SELECT
@osztalyNev = C_NEV
FROM
T_OSZTALYCSOPORT_OSSZES ocs
WHERE
ID = @osztalyId
AND ocs.TOROLT = 'F'
AND ocs.C_TANEVID = @tanevId
DECLARE @sql NVARCHAR(MAX) = ''
SET @sql +=
'SELECT
tcs.C_TANULOID TanuloId
,C_SZULETESINEV TanuloNev
,@osztalyNev OsztalyNev
,@osztalyId OsztalyId'
IF @elmeletgyakorlat = 1
BEGIN
SET @sql +=
',SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''T'' THEN 1 ELSE 0 END) TanoraiHianyzasIgazolandoGyakorlati
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' THEN 1 ELSE 0 END) TanoraiHianyzasIgazoltGyakorlati
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' THEN 1 ELSE 0 END) TanoraiHianyzasIgazolatlanGyakorlati
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''F'' AND Gyakorlati = ''T'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolandoGyakorlati
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''F'' AND Gyakorlati = ''T'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazoltGyakorlati
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''F'' AND Gyakorlati = ''T'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolatlanGyakorlati
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazolandoGyakorlati
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazoltGyakorlati
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazolatlanGyakorlati
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazolandoGyakorlatiPerc
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazoltGyakorlatiPerc
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazolatlanGyakorlatiPerc
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@gyakorlatiOraPercben SzamitottKesesIgazolandoGyakorlati
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@gyakorlatiOraPercben SzamitottKesesIgazoltGyakorlati
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@gyakorlatiOraPercben SzamitottKesesIgazolatlanGyakorlati'
SET @sql +=
',SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''F'' THEN 1 ELSE 0 END) TanoraiHianyzasIgazolandoElmeleti
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' THEN 1 ELSE 0 END) TanoraiHianyzasIgazoltElmeleti
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' THEN 1 ELSE 0 END) TanoraiHianyzasIgazolatlanElmeleti
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''F'' AND Gyakorlati = ''F'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolandoElmeleti
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''F'' AND Gyakorlati = ''F'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazoltElmeleti
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''F'' AND Gyakorlati = ''F'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolatlanElmeleti
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazolandoElmeleti
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazoltElmeleti
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazolatlanElmeleti
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazolandoElmeletiPerc
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazoltElmeletiPerc
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazolatlanElmeletiPerc
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@elmeletiOraPercben SzamitottKesesIgazolandoElmeleti
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@elmeletiOraPercben SzamitottKesesIgazoltElmeleti
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@elmeletiOraPercben SzamitottKesesIgazolatlanElmeleti'
END
ELSE
BEGIN
SET @sql +=
',SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' THEN 1 ELSE 0 END) TanoraiHianyzasIgazolando
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' THEN 1 ELSE 0 END) + ISNULL(h.[hozottIgazoltHianyzas], 0) TanoraiHianyzasIgazolt
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' THEN 1 ELSE 0 END) + ISNULL(h.[hozottIgazolatlanHianyzas], 0) TanoraiHianyzasIgazolatlan
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''F'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolando
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''F'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolt
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''F'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolatlan
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazolando
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazolt
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazolatlan
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazolandoPerc
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazoltPerc
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazolatlanPerc
,(SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@gyakorlatiOraPercben)
+ (SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@elmeletiOraPercben) SzamitottKesesIgazolando
,(SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@gyakorlatiOraPercben)
+ (SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@elmeletiOraPercben) SzamitottKesesIgazolt
,(SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@gyakorlatiOraPercben)
+ SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@elmeletiOraPercben SzamitottKesesIgazolatlan
'
END
SET @sql +=
',ISNULL(h.[hozottIgazolatlanHianyzas], 0) HozottIgazolatlanHianyzas
,ISNULL(h.[hozottIgazolatlanKesesPerc], 0) HozottIgazolatlanKesesPerc
,ISNULL(h.[hozottIgazoltHianyzas], 0) HozottIgazoltHianyzas
,ISNULL(h.[hozottIgazoltHianyzasPerc], 0) HozottIgazoltHianyzasPerc
,SUM(CASE IgazolasTipusa WHEN 1530 THEN 1 ELSE 0 END) OrvosiIgazolas
,SUM(CASE IgazolasTipusa WHEN 1531 THEN 1 ELSE 0 END) SzuloiIgazolas
,SUM(CASE IgazolasTipusa WHEN 1532 THEN 1 ELSE 0 END) HivatalosTavolletIgazolas
,SUM(CASE IgazolasTipusa WHEN 1533 THEN 1 ELSE 0 END) IskolaerdekuTavolletIgazolas
,SUM(CASE IgazolasTipusa WHEN 6494 THEN 1 ELSE 0 END) SzolgaltatoiIgazolas
,SUM(CASE IgazolasTipusa WHEN 6495 THEN 1 ELSE 0 END) IskolaiEngedelyIgazolas
,SUM(CASE IgazolasTipusa WHEN 6967 THEN 1 ELSE 0 END) PalyavalasztasiCeluIgazolas
,SUM(CASE IgazolasTipusa WHEN 6834 THEN 1 ELSE 0 END) KikeroIgazolas
,SUM(CASE IgazolasTipusa WHEN 6853 THEN 1 ELSE 0 END) TappenzIgazolas
,SUM(CASE IgazolasTipusa WHEN 1529 THEN 1 ELSE 0 END) EgyebIgazolas
FROM dbo.fnGetDokumentumMulasztasokOsztalyonkentReszletes(@tanevId, @osztalyId, @intezmenyId, DEFAULT, 0, DEFAULT, DEFAULT, 0) TanulokMulasztasai
INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = TanulokMulasztasai.TantargyId
LEFT JOIN (
SELECT
C_TANULOID tanuloId
,[C_HOZOTTIGAZOLATLANHIANYZAS] hozottIgazolatlanHianyzas
,[C_HOZOTTIGAZOLATLANKESESPERCBE] hozottIgazolatlanKesesPerc
,[C_HOZOTTIGAZOLTHIANYZAS] hozottIgazoltHianyzas
,[C_HOZOTTIGAZOLTKESESPERCBEN] hozottIgazoltHianyzasPerc
FROM
T_TANULOTANUGYIADATOK_OSSZES ta
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = ta.C_TANULOCSOPORTID
WHERE
tcs.TOROLT = ''F''
AND ta.TOROLT = ''F''
AND ta.C_TANEVID = @tanevId
) h ON h.tanuloId = TanulokMulasztasai.TanuloId
RIGHT OUTER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = TanulokMulasztasai.TanuloId
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID
WHERE
tcs.C_TANEVID = @tanevId
AND tcs.C_OSZTALYCSOPORTID = @osztalyId
AND Tantargy.TOROLT = ''F''
AND tcs.TOROLT = ''F''
AND f.TOROLT = ''F''
GROUP BY
TanulokMulasztasai.TanuloId
,tcs.C_TANULOID
,C_SZULETESINEV
,ISNULL(h.[hozottIgazolatlanHianyzas], 0)
,ISNULL(h.[hozottIgazolatlanKesesPerc], 0)
,ISNULL(h.[hozottIgazoltHianyzas], 0)
,ISNULL(h.[hozottIgazoltHianyzasPerc], 0)
ORDER BY C_SZULETESINEV'
EXEC sp_executesql @sql, N'
@intezmenyId INT
,@tanevId INT
,@osztalyId INT
,@elmeletiOraPercben INT
,@gyakorlatiOraPercben INT
,@osztalyNev NVARCHAR(200)'
,@intezmenyId = @intezmenyId
,@tanevId = @tanevId
,@osztalyId = @osztalyId
,@elmeletiOraPercben = @elmeletiOraPercben
,@gyakorlatiOraPercben = @gyakorlatiOraPercben
,@osztalyNev = @osztalyNev
END
GO
@@ -0,0 +1,94 @@
-- =============================================
-- Description: <Előszedjük a tanuló értékeléseket a megadott paraméterek alapján>
-- =============================================
DROP PROCEDURE IF EXISTS uspGetTanulokSzamonkeresElorejelzesei
GO
CREATE PROCEDURE uspGetTanulokSzamonkeresElorejelzesei
@IntezmenyId int
,@TanevId int
,@pDatum datetime
,@pOraGroupId int
,@pOsztalyCsoportId int
,@pNapiSzamonkeresLimit int
,@pErtekelesModokLimithez nvarchar(max)
AS
BEGIN
DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @pOsztalyCsoportId)
CREATE TABLE #OsztalyCsoport (Id int PRIMARY KEY)
INSERT INTO #OsztalyCsoport (Id)
SELECT ID
FROM dbo.fnGetKapcsolodoOsztalycsoportokByDate (@pOsztalyCsoportId, @pDatum, @pDatum)
CREATE TABLE #Tanulo (Id int PRIMARY KEY, Nev nvarchar(300))
INSERT INTO #Tanulo (Id,Nev)
SELECT fh.ID, fh.C_NYOMTATASINEV
FROM T_TANULOCSOPORT tcs
INNER JOIN T_FELHASZNALO fh ON fh.ID = tcs.C_TANULOID AND fh.TOROLT = 'F'
WHERE tcs.C_OSZTALYCSOPORTID = @pOsztalyCsoportId AND (tcs.C_BELEPESDATUM <= @pDatum AND (tcs.C_KILEPESDATUM > @pDatum OR tcs.C_KILEPESDATUM IS NULL))
CREATE TABLE #TanuloSzamonkeresei (Id int PRIMARY KEY, Nev nvarchar(300), SzamonkeresekSzama int, OsztalyNev nvarchar(300))
CREATE TABLE #NaptariNap (
Datum datetime
,OsztalyCsoportId int
,IsEgyediNap char(1) COLLATE database_default
,PRIMARY KEY (Datum, OsztalyCsoportId)
)
INSERT INTO #NaptariNap
SELECT
tr.Datum
,tr.OsztalyId
,ISNULL(tro.IsEgyediNap, tr.IsEgyediNap) AS IsEgyediNap
FROM (
SELECT
nn.C_NAPDATUMA AS Datum
,ocs.ID AS OsztalyId
,'F' as IsEgyediNap
FROM T_NAPTARINAP_OSSZES nn
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.C_TANEVID = @TanevId AND ocs.C_FELADATKATEGORIAID = @kategoriaId
WHERE nn.C_TANEVID = @TanevId
AND nn.TOROLT = 'F'
AND nn.C_ORARENDINAP = 'T'
) tr
LEFT JOIN (
SELECT
nn.C_NAPDATUMA AS Datum
,ocstr.C_OSZTALYCSOPORTID AS OsztalyId
,tr.C_EGYEDINAP AS IsEgyediNap
FROM T_NAPTARINAP_OSSZES nn
INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND tr.C_OSSZESCSOPORTRAVONATKOZIK = 'F' AND tr.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON ocstr.C_TANEVRENDJEID = tr.ID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = ocstr.C_OSZTALYCSOPORTID AND ocs.C_FELADATKATEGORIAID = @kategoriaId
INNER JOIN T_NAPTIPUS_OSSZES nt ON nt.ID = tr.C_NAPTIPUSA AND nt.C_ALTANEVID = tr.C_TANEVID AND nt.TOROLT = 'F'
WHERE nn.C_TANEVID = @TanevId
AND nn.TOROLT = 'F'
AND tr.C_ORARENDINAP = 'T'
) tro ON tr.Datum = tro.Datum AND tr.OsztalyId = tro.OsztalyId
INSERT INTO #TanuloSzamonkeresei (Id,Nev,SzamonkeresekSzama,OsztalyNev)
SELECT t.id,t.Nev, COUNT(1) as SzamonkeresekSzama, ocso.C_NEV as OsztalyNev
FROM T_SZAMONKERESELOREJELZES szk
INNER JOIN T_ORARENDIORA oo ON oo.C_ORARENDIORAGROUPID = szk.C_ORARENDIORAGROUPID AND szk.C_SZAMONKERESDATUMA >= oo.C_ORAERVENYESSEGKEZDETE AND szk.C_SZAMONKERESDATUMA <= oo.C_ORAERVENYESSEGVEGE AND oo.TOROLT = 'F'
INNER JOIN #NaptariNap nn ON nn.IsEgyediNap = oo.C_EGYEDINAP AND nn.OsztalyCsoportId = oo.C_OSZTALYCSOPORTID AND nn.Datum = szk.C_SZAMONKERESDATUMA
INNER JOIN #OsztalyCsoport ocs ON ocs.Id = oo.C_OSZTALYCSOPORTID
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = oo.C_OSZTALYCSOPORTID
INNER JOIN #Tanulo t ON t.id = tcs.C_TANULOID
INNER JOIN T_TANULOCSOPORT tcs2 ON tcs2.C_TANULOID = t.ID AND (tcs2.C_BELEPESDATUM <= @pDatum AND (tcs2.C_KILEPESDATUM > @pDatum OR tcs2.C_KILEPESDATUM IS NULL))
INNER JOIN T_OSZTALYCSOPORT ocso ON tcs2.C_OSZTALYCSOPORTID = ocso.ID
INNER JOIN T_OSZTALY o ON o.ID = ocso.ID
WHERE szk.C_SZAMONKERESDATUMA = @pDatum AND szk.C_SZAMONKERESMODID IN (SELECT value FROM STRING_SPLIT(@pErtekelesModokLimithez ,','))
AND szk.C_INTEZMENYID = @IntezmenyId AND szk.C_TANEVID = @TanevId AND szk.TOROLT = 'F'
GROUP BY t.id, t.Nev,ocso.C_NEV
SELECT * FROM #TanuloSzamonkeresei WHERE SzamonkeresekSzama >= @pNapiSzamonkeresLimit
END
GO
@@ -0,0 +1,143 @@
DROP PROCEDURE IF EXISTS uspTanulokBejegyzesStatisztika;
GO
CREATE PROCEDURE uspTanulokBejegyzesStatisztika
@tanevId int
,@osztalyId int
AS BEGIN
SET NOCOUNT ON;
DECLARE
@FelevVege date
/*TANULÓ adatai*/
CREATE TABLE #TanuloAlapAdatok (
TanuloId int
,TanuloCsoportId int
,Sorszam int NULL
,TorzslapSzam nvarchar(500) NULL
,OktAzon nvarchar(20) NULL
,TajSzam nvarchar(9) NULL
,AnyjaNeve nvarchar(64)
,SzulHely nvarchar(50) NULL
,SzulIdo nvarchar(max) NULL
,SocAdat nvarchar(340) NULL
,Kepzes nvarchar(255)
,TanuloNeve nvarchar(255)
,Allampolgarsaga nvarchar(250)
,DiakIgazolvanySzam nvarchar(255) NULL
,KilepesDatum nvarchar(max) NULL
,BeirasiNaploSorszam nvarchar(50) NULL
,AktualisOsztaly nvarchar(max) NULL
,AktualisOsztalyId int NULL
,BelepesDatum nvarchar(max) NULL
)
SELECT TOP 1
@FelevVege = tr.C_DATUM
FROM T_TANEVRENDJE_OSSZES tr
WHERE tr.C_NAPTIPUSA = 1400
AND tr.C_TANEVID = @tanevId
AND tr.TOROLT = 'F'
SELECT DISTINCT
@osztalyId AS OsztalyId
,ocs.C_NEV AS OsztalyNev
,i.C_NEV AS IntezmenyNeve
,i.C_OMKOD AS IntezmenyOMKod
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID
AND o.torolt = 'F'
INNER JOIN T_INTEZMENYADATOK_OSSZES i ON i.C_INTEZMENYID = ocs.C_INTEZMENYID
AND i.C_TANEVID = ocs.C_TANEVID
AND i.Torolt = 'F'
WHERE ocs.ID = @osztalyId
INSERT INTO #TanuloAlapAdatok (
TanuloId
,TanuloCsoportId
,Sorszam
,TorzslapSzam
,OktAzon
,TajSzam
,AnyjaNeve
,SzulHely
,SzulIdo
,SocAdat
,Kepzes
,TanuloNeve
,Allampolgarsaga
,DiakIgazolvanySzam
,KilepesDatum
,BeirasiNaploSorszam
,AktualisOsztaly
,AktualisOsztalyId
,BelepesDatum
)
SELECT
ta.TanuloId
,ta.TanuloCsoportId
,ta.Sorszam
,ta.TorzslapSzam
,ta.OktAzon
,ta.TajSzam
,ta.AnyjaNeve
,ta.SzulHely
,ta.SzulIdo
,ta.SocAdat
,ta.Kepzes
,ta.TanuloNeve
,ta.Allampolgarsaga
,ta.DiakIgazolvanySzam
,ta.KilepesDatum
,ta.BeirasiNaploSorszam
,ta.AktualisOsztaly
,ta.AktualisOsztalyId
,ta.BelepesDatum
FROM fnGetDokumentumTanulokAdatai(@tanevId, @osztalyId) ta
SELECT
ta.TanuloId
,ta.TanuloCsoportId
,ta.Sorszam
,ta.TorzslapSzam
,ta.OktAzon
,ta.TajSzam
,ta.AnyjaNeve
,ta.SzulHely
,ta.SzulIdo
,ta.SocAdat
,ta.Kepzes
,ta.TanuloNeve
,ta.Allampolgarsaga
,ta.DiakIgazolvanySzam
,ta.KilepesDatum
,ta.BeirasiNaploSorszam
,ta.AktualisOsztaly
,ta.AktualisOsztalyId
,ta.BelepesDatum
FROM #TanuloAlapAdatok ta
ORDER BY ta.Sorszam
SELECT
a.TanuloId
,a.TanuloCsoportId
,feljegyzes.Tipus
,feljegyzes.Szeptember
,feljegyzes.Oktober
,feljegyzes.November
,feljegyzes.December
,feljegyzes.Januar
,feljegyzes.Februar
,feljegyzes.Marcius
,feljegyzes.Aprilis
,feljegyzes.Majus
,feljegyzes.Junius
,feljegyzes.Felev
,feljegyzes.Ossz
FROM #TanuloAlapAdatok AS a
CROSS APPLY fnGetDokumentumTanulokFeljegyzeseiHavibontasban(@tanevId, @osztalyId, @FelevVege, PARSE(a.BelepesDatum AS datetime), PARSE(a.KilepesDatum AS datetime)) feljegyzes
WHERE feljegyzes.TanuloId = a.TanuloId
END
GO
@@ -0,0 +1,207 @@
DROP PROCEDURE IF EXISTS uspTanulokGyorsBejegyzesStatisztika
GO
CREATE PROCEDURE uspTanulokGyorsBejegyzesStatisztika
@tanevId int
,@osztalyId int
AS BEGIN
SET NOCOUNT ON;
DECLARE
@FelevVege date
/*TANULÓ adatai*/
CREATE TABLE #TanuloAlapAdatok (
TanuloId int
,TanuloCsoportId int
,Sorszam int NULL
,TorzslapSzam nvarchar(500) NULL
,OktAzon nvarchar(20) NULL
,TajSzam nvarchar(9) NULL
,AnyjaNeve nvarchar(64)
,SzulHely nvarchar(50) NULL
,SzulIdo nvarchar(max) NULL
,SocAdat nvarchar(340) NULL
,Kepzes nvarchar(255)
,TanuloNeve nvarchar(255)
,Allampolgarsaga nvarchar(250)
,DiakIgazolvanySzam nvarchar(255) NULL
,KilepesDatum nvarchar(max) NULL
,BeirasiNaploSorszam nvarchar(50) NULL
,AktualisOsztaly nvarchar(max) NULL
,AktualisOsztalyId int NULL
,BelepesDatum nvarchar(max) NULL
)
SELECT TOP 1
@FelevVege = tr.C_DATUM
FROM T_TANEVRENDJE_OSSZES tr
WHERE tr.C_NAPTIPUSA = 1400
AND tr.C_TANEVID = @tanevId
AND tr.TOROLT = 'F'
SELECT DISTINCT
@osztalyId AS OsztalyId
,ocs.C_NEV AS OsztalyNev
,i.C_NEV AS IntezmenyNeve
,i.C_OMKOD AS IntezmenyOMKod
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID
AND o.torolt = 'F'
INNER JOIN T_INTEZMENYADATOK_OSSZES i ON i.C_INTEZMENYID = ocs.C_INTEZMENYID
AND i.C_TANEVID = ocs.C_TANEVID
AND i.Torolt = 'F'
WHERE ocs.ID = @osztalyId
INSERT INTO #TanuloAlapAdatok (
TanuloId
,TanuloCsoportId
,Sorszam
,TorzslapSzam
,OktAzon
,TajSzam
,AnyjaNeve
,SzulHely
,SzulIdo
,SocAdat
,Kepzes
,TanuloNeve
,Allampolgarsaga
,DiakIgazolvanySzam
,KilepesDatum
,BeirasiNaploSorszam
,AktualisOsztaly
,AktualisOsztalyId
,BelepesDatum
)
SELECT
ta.TanuloId
,ta.TanuloCsoportId
,ta.Sorszam
,ta.TorzslapSzam
,ta.OktAzon
,ta.TajSzam
,ta.AnyjaNeve
,ta.SzulHely
,ta.SzulIdo
,ta.SocAdat
,ta.Kepzes
,ta.TanuloNeve
,ta.Allampolgarsaga
,ta.DiakIgazolvanySzam
,ta.KilepesDatum
,ta.BeirasiNaploSorszam
,ta.AktualisOsztaly
,ta.AktualisOsztalyId
,ta.BelepesDatum
FROM fnGetDokumentumTanulokAdatai(@tanevId, @osztalyId) ta
SELECT
ta.TanuloId
,ta.TanuloCsoportId
,ta.Sorszam
,ta.TorzslapSzam
,ta.OktAzon
,ta.TajSzam
,ta.AnyjaNeve
,ta.SzulHely
,ta.SzulIdo
,ta.SocAdat
,ta.Kepzes
,ta.TanuloNeve
,ta.Allampolgarsaga
,ta.DiakIgazolvanySzam
,ta.KilepesDatum
,ta.BeirasiNaploSorszam
,ta.AktualisOsztaly
,ta.AktualisOsztalyId
,ta.BelepesDatum
FROM #TanuloAlapAdatok ta
ORDER BY ta.Sorszam
-- Házifeladat hiány
SELECT
a.TanuloId
,a.TanuloCsoportId
,feljegyzes.Tantargy
,feljegyzes.Szeptember
,feljegyzes.Oktober
,feljegyzes.November
,feljegyzes.December
,feljegyzes.Januar
,feljegyzes.Februar
,feljegyzes.Marcius
,feljegyzes.Aprilis
,feljegyzes.Majus
,feljegyzes.Junius
,feljegyzes.Felev
,feljegyzes.Ossz
FROM #TanuloAlapAdatok a
CROSS APPLY fnGetDokumentumTanulokGyorsFeljegyzeseiHavibontasban (@tanevId, @osztalyId, 6325, 0, @FelevVege, PARSE(a.BelepesDatum AS datetime), PARSE(a.KilepesDatum AS datetime)) feljegyzes
WHERE feljegyzes.TanuloId = a.TanuloId
-- Felszerelés hiány
SELECT
a.TanuloId
,a.TanuloCsoportId
,feljegyzes.Tantargy
,feljegyzes.Szeptember
,feljegyzes.Oktober
,feljegyzes.November
,feljegyzes.December
,feljegyzes.Januar
,feljegyzes.Februar
,feljegyzes.Marcius
,feljegyzes.Aprilis
,feljegyzes.Majus
,feljegyzes.Junius
,feljegyzes.Felev
,feljegyzes.Ossz
FROM #TanuloAlapAdatok a
CROSS APPLY fnGetDokumentumTanulokGyorsFeljegyzeseiHavibontasban(@tanevId, @osztalyId, 6324, 0, @FelevVege, PARSE(a.BelepesDatum AS datetime), PARSE(a.KilepesDatum AS datetime)) feljegyzes
WHERE feljegyzes.TanuloId = a.TanuloId
-- Felmentés
SELECT
a.TanuloId
,a.TanuloCsoportId
,feljegyzes.Tantargy
,feljegyzes.Szeptember
,feljegyzes.Oktober
,feljegyzes.November
,feljegyzes.December
,feljegyzes.Januar
,feljegyzes.Februar
,feljegyzes.Marcius
,feljegyzes.Aprilis
,feljegyzes.Majus
,feljegyzes.Junius
,feljegyzes.Felev
,feljegyzes.Ossz
FROM #TanuloAlapAdatok a
CROSS APPLY fnGetDokumentumTanulokGyorsFeljegyzeseiHavibontasban(@tanevId, @osztalyId, 1542, 0, @FelevVege, PARSE(a.BelepesDatum AS datetime), PARSE(a.KilepesDatum AS datetime)) feljegyzes
WHERE feljegyzes.TanuloId = a.TanuloId
--Dicséret
SELECT
a.TanuloId
,a.TanuloCsoportId
,feljegyzes.Tantargy
,feljegyzes.Szeptember
,feljegyzes.Oktober
,feljegyzes.November
,feljegyzes.December
,feljegyzes.Januar
,feljegyzes.Februar
,feljegyzes.Marcius
,feljegyzes.Aprilis
,feljegyzes.Majus
,feljegyzes.Junius
,feljegyzes.Felev
,feljegyzes.Ossz
FROM #TanuloAlapAdatok a
CROSS APPLY fnGetDokumentumTanulokGyorsFeljegyzeseiHavibontasban(@tanevId, @osztalyId, 1536, 1, @FelevVege, PARSE(a.BelepesDatum AS datetime), PARSE(a.KilepesDatum AS datetime)) feljegyzes
WHERE feljegyzes.TanuloId = a.TanuloId
END
GO