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

View file

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

View file

@ -0,0 +1,56 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('fnGetDokumentumMulasztasokOsztalyonkentReszletes') IS NOT NULL
BEGIN
DROP FUNCTION fnGetDokumentumMulasztasokOsztalyonkentReszletes
END
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 TABLE
RETURN (
SELECT
C_ORATANULOIID TanuloId
,TanuloCsoportId
,TanitasiOra.C_OSZTALYCSOPORTID OsztalyCsoportId
,OsztalyCsoport.C_NEV OsztalyCsoportNev
,C_TIPUS Tipusa
,C_IGAZOLT Igazolt
,C_IGAZOLASTIPUSA IgazolasTipusa
,C_KESESPERCBEN KesesPercben
,C_DATUM Datum
,IIF(C_CSENGETESIRENDORAID IS NULL, dbo.fnGetDokumentumOrakezdetToOraszam(CONVERT(VARCHAR(5), C_ORAKEZDETE, 108), @tanevId), TanitasiOra.C_ORASZAM) Oraszam
,C_TANTARGYID TantargyId
,ISNULL(t.C_NEVNYOMTATVANYBAN, t.C_NEV) TantargyNev
,NaptariHetek.C_HETSORSZAMA HetSorszama
,C_GYAKORLATI Gyakorlati
FROM T_TANULOMULASZTAS_OSSZES TanuloMulasztas
INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyCsoportId, 'T') AS TANULO ON TANULO.TanuloId = TanuloMulasztas.C_ORATANULOIID
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_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = TanitasiOra.C_OSZTALYCSOPORTID
and OsztalyCsoport.C_FELADATKATEGORIAID = (SELECT tev.C_DEFAULTFELADATKATEGORIAID FROM T_TANEV_OSSZES tev WHERE tev.ID = OsztalyCsoport.C_TANEVID)
INNER JOIN T_TANTARGY_OSSZES t on t.ID = TanitasiOra.C_TANTARGYID
INNER JOIN T_NAPTARIHET_OSSZES NaptariHetek ON TanitasiOra.C_DATUM BETWEEN NaptariHetek.C_HETKEZDONAPJA AND NaptariHetek.C_HETUTOLSONAPJA
WHERE
TanuloMulasztas.C_TIPUS IN (1499, 1500)
AND TANULO.BelepesDatum <= TanitasiOra.C_DATUM
AND (TANULO.KilepesDatum IS NULL OR TANULO.KilepesDatum >= TanitasiOra.C_DATUM)
AND (@csakTanoraiCelu = 0 OR TanitasiOra.C_OSZTALYCSOPORTID IN (SELECT Id FROM fnGetDokumentumOsztalyVagyTanoraiCsoport(@tanevId)))
AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA IS NULL OR C_IGAZOLASTIPUSA <> 1533))
AND TanuloMulasztas.TOROLT = 'F'
AND NaptariHetek.C_TANEVID = @tanevId
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)
)
GO

View file

@ -0,0 +1,34 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('fnGetDokumentumOsztalyTanuloinakMegtartottOrakTantargyankent') IS NOT NULL
BEGIN
DROP FUNCTION fnGetDokumentumOsztalyTanuloinakMegtartottOrakTantargyankent
END
GO
CREATE FUNCTION fnGetDokumentumOsztalyTanuloinakMegtartottOrakTantargyankent (@tanevId INT, @osztalyCsoportId INT, @atsoroltTanuloOrak BIT = 1)
RETURNS TABLE
RETURN (
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 = (SELECT tev.C_DEFAULTFELADATKATEGORIAID FROM T_TANEV tev WHERE tev.ID = OSZTALYCSOPORT.C_TANEVID)
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
)
GO

View file

@ -0,0 +1,23 @@
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
and ocs.C_FELADATKATEGORIAID = (SELECT tev.C_DEFAULTFELADATKATEGORIAID FROM T_TANEV tev WHERE tev.ID = ocs.C_TANEVID)
WHERE
ocs.C_TANEVID = @tanevId
AND ocs.TOROLT = 'F'
)

View file

@ -0,0 +1,91 @@
IF OBJECT_ID('sp_FoglalkozasArchiv') IS NOT NULL BEGIN
DROP PROCEDURE sp_FoglalkozasArchiv
END;
GO
CREATE PROCEDURE sp_FoglalkozasArchiv
@intezmenyId int,
@tanevId int
AS
BEGIN
INSERT INTO T_FOGLALKOZASARCHIV (
[C_ALKALMAZOTTID] -- INT NULL,
,[C_ELFOGADASDATUMA] -- DATETIME NULL,
,[C_FELADATELLATASIHELYID] -- INT NULL,
,[C_FELADATELLATASIHELYNEVE] -- NVARCHAR (255) NULL,
,[C_ORASZAM] -- NUMERIC (10, 2) NULL,
,[C_OSZTALYCSOPORTID] -- INT NULL,
,[C_OSZTALYCSOPORTNEVE] -- NVARCHAR (255) NULL,
,[C_TANARKOTELEZOORASZAMA] -- NUMERIC (10, 2) NULL,
,[C_TANARMUNKAIDOKEDVEZMENYE] -- INT NULL,
,[C_TANARMUNKAIDOKEDVEZMENYOKA] -- NVARCHAR (255) NULL,
,[C_TANARMUNKAIDOKEDVEZMENYOKAID]-- INT NULL,
,[C_TANARMUNKAKORE] -- NVARCHAR (255) NULL,
,[C_TANARMUNKAKOREID] -- INT NULL,
,[C_TANARNEVE] -- NVARCHAR (255) NULL,
,[C_TANARPEDAGOGIAIKEPESITESE] -- NVARCHAR (255) NULL,
,[C_TANARPEDAGOGIAIKEPESITESEID]-- INT NULL,
,[C_TANEVNEVE] -- NVARCHAR (255) NULL,
,[C_TANTARGYID] -- INT NULL,
,[C_TANTARGYNEVE] -- NVARCHAR (255) NULL,
,[C_INTEZMENYID] -- INT NOT NULL,
,[C_TANEVID] -- INT NOT NULL,
,[TOROLT] -- CHAR (1) NULL,
,[SERIAL] -- INT NULL,
,[LASTCHANGED] -- DATETIME NULL,
,[CREATED] -- DATETIME NULL,
,[MODIFIER] -- INT NULL,
,[CREATOR] -- INT NULL,
) SELECT
u.ID AS [C_ALKALMAZOTTID] -- INT NULL,
,GETDATE() AS [C_ELFOGADASDATUMA] -- DATETIME NULL,
,fh.ID AS [C_FELADATELLATASIHELYID] -- INT NULL,
,'' AS [C_FELADATELLATASIHELYNEVE] -- NVARCHAR (255) NULL,
,f.C_ORASZAM AS [C_ORASZAM] -- NUMERIC (10, 2) NULL,
,ocs.ID AS [C_OSZTALYCSOPORTID] -- INT NULL,
,ocs.C_NEV AS [C_OSZTALYCSOPORTNEVE] -- NVARCHAR (255) NULL,
,m.C_KOTELEZOORASZAM AS [C_TANARKOTELEZOORASZAMA] -- NUMERIC (10, 2) NULL,
,m.C_MUNKAIDOKEDVEZMENYORASZAM AS [C_TANARMUNKAIDOKEDVEZMENYE] -- INT NULL,
,mk.C_NAME AS [C_TANARMUNKAIDOKEDVEZMENYOKA] -- NVARCHAR (255) NULL,
,m.C_MUNKAIDOKEDVEZMENYOKA AS [C_TANARMUNKAIDOKEDVEZMENYOKAID]-- INT NULL,
,k.C_NAME AS [C_TANARMUNKAKORE] -- NVARCHAR (255) NULL,
,m.C_MUNKAKORTIPUSA AS [C_TANARMUNKAKOREID] -- INT NULL,
,u.C_NYOMTATASINEV AS [C_TANARNEVE] -- NVARCHAR (255) NULL,
,kp.C_NAME AS [C_TANARPEDAGOGIAIKEPESITESE] -- NVARCHAR (255) NULL,
,m.C_BESOROLASIFOKOZAT AS [C_TANARPEDAGOGIAIKEPESITESEID]-- INT NULL,
,te.C_NEV AS [C_TANEVNEVE] -- NVARCHAR (255) NULL,
,t.ID AS [C_TANTARGYID] -- INT NULL,
,t.C_NEV AS [C_TANTARGYNEVE] -- NVARCHAR (255) NULL,
,f.C_INTEZMENYID AS [C_INTEZMENYID] -- INT NOT NULL,
,f.C_TANEVID AS [C_TANEVID] -- INT NOT NULL,
,'F' AS [TOROLT] -- CHAR (1) NULL,
,0 AS [SERIAL] -- INT NULL,
,NULL AS [LASTCHANGED] -- DATETIME NULL,
,GETDATE() AS [CREATED] -- DATETIME NULL,
,NULL AS [MODIFIER] -- INT NULL,
,NULL AS [CREATOR] -- INT NULL,
-- select count(1)
FROM T_FOGLALKOZAS f
INNER JOIN T_FELHASZNALO u ON u.ID = f.C_TANARID
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = f.C_OSZTALYCSOPORTID and ocs.C_FELADATKATEGORIAID = (SELECT tev.C_DEFAULTFELADATKATEGORIAID FROM T_TANEV tev WHERE tev.ID = ocs.C_TANEVID)
INNER JOIN T_ALKALMAZOTT a ON a.ID = u.ID
INNER JOIN T_MUNKAUGYIADATOK m ON m.C_ALKALMAZOTTID = a.ID
INNER JOIN T_TANTARGY t ON f.C_TANTARGYID = t.ID
INNER JOIN T_TANEV te ON te.ID = f.C_TANEVID
LEFT JOIN T_DICTIONARYITEMBASE mk ON mk.ID = m.C_MUNKAIDOKEDVEZMENYOKA AND mk.C_TANEVID = f.C_TANEVID AND mk.C_INTEZMENYID = f.C_INTEZMENYID
LEFT JOIN T_DICTIONARYITEMBASE k ON k.ID = m.C_MUNKAKORTIPUSA AND k.C_TANEVID = f.C_TANEVID AND k.C_INTEZMENYID = f.C_INTEZMENYID
LEFT JOIN T_DICTIONARYITEMBASE kp ON kp.ID = m.C_BESOROLASIFOKOZAT AND kp.C_TANEVID = f.C_TANEVID AND kp.C_INTEZMENYID = f.C_INTEZMENYID
INNER JOIN T_FELADATELLATASIHELY fh ON fh.ID = m.C_FELADATELLATASIHELYID
WHERE f.TOROLT = 'F'
/*AND f.C_INTEZMENYID IN (
SELECT DISTINCT e.C_INTEZMENYID FROM T_ENTITYHISTORY e
INNER JOIN T_ENTITYATTRIBUTEHISTORY a ON a.C_ENTITYHISTORYID = e.ID
INNER JOIN T_INTEZMENYADATSZOLGALTATAS i ON i.C_INTEZMENYID = e.C_INTEZMENYID
WHERE e.C_ENTITYNAME IN ('T_INTEZMENYADATSZOLGALTATAS', 'INTEZMENYADATSZOLGALTATAS')
AND a.C_PROPERTYNAME = 'C_VEGLEGESTTF'
AND a.C_CURRENTVALUE = 'T'
AND i.C_VEGLEGESTTF = 'T'
)*/
AND f.C_INTEZMENYID = @intezmenyId AND f.C_TANEVID = @tanevId
END
GO

View file

@ -0,0 +1,142 @@
DROP PROCEDURE IF EXISTS [dbo].[sp_GetHaladasiNaploAdatok]
GO
CREATE PROCEDURE [dbo].[sp_GetHaladasiNaploAdatok]
@tanevID int,
@osztalyID int = null,
@tanarID int = null
AS
BEGIN
DECLARE @foglalkozasID INT = 0
DECLARE @foglalkozasNev VARCHAR(255)
SET NOCOUNT ON;
SELECT DISTINCT
f.id
,ocs.C_NEV + ' - ' + tt.C_NEV AS Nev
,f.C_TANTARGYID
,f.C_OSZTALYCSOPORTID
,f.C_INTEZMENYID
,f.C_TANARID AS C_TANARID
INTO #Foglalkozasok
FROM T_FOGLALKOZAS_OSSZES f
INNER JOIN T_OSZTALYCSOPORT_OSSZES OCS on OCS.ID = f.C_OSZTALYCSOPORTID and OCS.TOROLT = 'F' AND OCS.C_FELADATKATEGORIAID = (SELECT t.C_DEFAULTFELADATKATEGORIAID FROM T_TANEV_OSSZES t WHERE t.ID = OCS.C_TANEVID)
LEFT JOIN T_CSOPORTOK_OSZTALYOK cso on cso.C_CSOPORTOKID = ocs.ID
INNER JOIN T_TANTARGY_OSSZES tt on tt.ID = f.C_TANTARGYID and tt.TOROLT = 'F'
WHERE f.TOROLT = 'F'
AND f.C_TANEVID = @tanevID
AND (
((@osztalyID IS NOT NULL) AND (ocs.ID = @osztalyID OR cso.C_OSZTALYOKID = @osztalyID))
OR
((@tanarID IS NOT NULL) AND f.C_TANARID = @tanarID)
)
SELECT
fog.ID
, Nev+' - '+felh.C_NYOMTATASINEV Nev
FROM #Foglalkozasok fog
INNER JOIN T_FELHASZNALO_OSSZES felh on fog.C_TANARID=felh.ID
DECLARE @sorszamTable TABLE (
tanitasiOraId int-- PRIMARY KEY
,evesOraszam int
,foglalkozasId int
)
INSERT INTO @sorszamTable (tanitasiOraId, evesOraszam, foglalkozasId)
SELECT s.Id, s.EvesSorszam, f.ID FROM #Foglalkozasok f
CROSS APPLY dbo.fnGetEvesOraszamLista(
f.C_TANTARGYID
,f.C_OSZTALYCSOPORTID
,f.C_TANARID
,GETDATE()
,f.C_INTEZMENYID
,@tanevID
) s
DECLARE foglalkozasCursor CURSOR FOR
SELECT ID FROM #Foglalkozasok
OPEN foglalkozasCursor
FETCH NEXT FROM foglalkozasCursor into @foglalkozasId
WHILE @@FETCH_STATUS = 0 BEGIN
SELECT DISTINCT
CASE
WHEN tn.C_MEGTARTOTT = 'T' THEN s.evesOraszam -- tn.C_ORAEVESSORSZAM
ELSE '-'
END AS OraSorszam
,fh.C_NYOMTATASINEV TanarNev
,tn.C_TEMA Tema
,CASE
WHEN tn.C_HELYETTESITOTANARID IS NULL THEN ''
ELSE 'H'
END AS Helyettesites
,FORMAT(tn.C_DATUM, 'yyyy.MM.dd.') Datum
,tn.C_ORASZAM OraSzam
,tn.C_MEGJEGYZES Megjegyzes
,tn.C_HAZIFELADAT HaziFeladat
,tn.C_TULORA TulOra
,tn.C_TAMOPORA TamopOra
,tn.C_NEMSZAKRENDSZERUORA NemszakrendszeruOra
,tn.C_IKTTANORA IktOra
,tn.C_NEMZETISEGIORA NemzetisegiOra
,tn.C_MINDENNAPOSTESTNEVELES TestnevelesOra
,tn.C_IPRTANORA IprOra
,tn.C_DIFFERENCIALT DifferencialtOra
,tn.C_KOOPERATIV KooperativOra
,tn.C_MERES MeresOra
,tn.C_DRAMA DramaOra
,tn.C_PARHUZAMOSORA ParhuzamosOra
,tn.C_TIOP12 TiopOra
,tn.C_KIPORA KIPOra
,tn.C_VEKOP73317 VEKOP73317
,tn.C_KAPORA KAPOra
FROM T_TANITASIORA_OSSZES tn
INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = tn.C_TANARID
LEFT JOIN @sorszamTable s ON s.tanitasiOraId = tn.ID
WHERE tn.TOROLT = 'F'
AND tn.C_TANEVID = @tanevID
AND tn.C_FOGLALKOZASID = @foglalkozasID
ORDER BY FORMAT(tn.C_DATUM, 'yyyy.MM.dd.')
FETCH NEXT FROM foglalkozasCursor
INTO @foglalkozasId
END
CLOSE foglalkozasCursor
DEALLOCATE foglalkozasCursor
IF (SELECT COUNT(ID) FROM #Foglalkozasok) = 0 BEGIN
DECLARE @nincsAdat TABLE (
OraSorszam int,
TanarNev nvarchar(1),
Tema nvarchar(1),
Helyettesites int,
Datum datetime,
OraSzam int,
Megjegyzes nvarchar(1),
HaziFeladat nvarchar(1),
TulOra char,
TamopOra char,
NemszakrendszeruOra char,
IktOra char,
NemzetisegiOra char,
TestnevelesOra char,
IprOra char,
DifferencialtOra char,
KooperativOra char,
MeresOra char,
DramaOra char,
ParhuzamosOra char,
TiopOra char,
KIPOra char,
VEKOP73317 char,
KAPOra char
)
SELECT * FROM @nincsAdat;
END
DROP TABLE #Foglalkozasok
END
GO

View file

@ -0,0 +1,268 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('sp_GetPedagogusOrarend') IS NOT NULL
BEGIN
DROP PROCEDURE sp_GetPedagogusOrarend
END
GO
CREATE PROCEDURE sp_GetPedagogusOrarend
@intezmenyId INT,
@tanevId INT,
@pedagogusId 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
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 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
and ocs.C_FELADATKATEGORIAID = (SELECT tev.C_DEFAULTFELADATKATEGORIAID FROM T_TANEV_OSSZES tev WHERE tev.ID = ocs.C_TANEVID)
LEFT JOIN T_CSENGETESIRENDORA_OSSZES CsengetesiRendOra ON CsengetesiRendOra.Id = OrarendiOra.C_CSENGETESIRENDORAID
LEFT JOIN T_CSOPORT_OSSZES Csoport ON OrarendiOra.C_OSZTALYCSOPORTID = Csoport.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))
AND Orarendiora.C_TANARID = @pedagogusId
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)) 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), '')
+ bveg.OsztalyCsoportNev + 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 @pedagogusId
, 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
@pedagogusId PedagogusId
,pv.Ora Ora
,Hetirend
,(SELECT C_NYOMTATASINEV FROM T_FELHASZNALO_OSSZES WHERE Id = @pedagogusId) PedagogusNev
,[1408] 'Hetfo'
,[1409] 'Kedd'
,[1410] 'Szerda'
,[1411] 'Csutortok'
,[1412] 'Pentek'
,[1413] 'Szombat'
, dic.C_NAME HETIREND_DNAME
FROM @Orarend
PIVOT (MAX(Foglalkozas) FOR Nap in([1408],[1409],[1410],[1411],[1412],[1413]))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 Hetirend, Ora
END
DROP TABLE #CsengetesiRendAdatok
DROP TABLE #Orarend
DROP TABLE #OrarendiOrak
GO

View file

@ -0,0 +1,109 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetStatPedagogusTanuloinakTantargyiMulasztasaiMegtartott]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetStatPedagogusTanuloinakTantargyiMulasztasaiMegtartott]
END
GO
CREATE PROCEDURE [dbo].[sp_GetStatPedagogusTanuloinakTantargyiMulasztasaiMegtartott]
@tanarId INT,
@tanevId INT,
@iskolaErekeduTavolletId INT
AS
BEGIN
SET NOCOUNT ON;
--Tanár
DECLARE @osztalyCsoportTantargy TABLE (osztalyCsoport INT, Tantargy INT)
INSERT INTO @osztalyCsoportTantargy
SELECT DISTINCT
C_OSZTALYCSOPORTID
,C_TANTARGYID
FROM T_ORARENDIORA_OSSZES
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON T_ORARENDIORA_OSSZES.C_OSZTALYCSOPORTID = ocs.ID AND ocs.C_FELADATKATEGORIAID = (SELECT tev.C_DEFAULTFELADATKATEGORIAID FROM T_TANEV_OSSZES tev WHERE tev.ID = ocs.C_TANEVID)
WHERE
T_ORARENDIORA_OSSZES.C_TANARID=@tanarId
AND T_ORARENDIORA_OSSZES.TOROLT = 'F'
--Tanulók
CREATE TABLE #students (TanuloId INT)
INSERT INTO #students
SELECT DISTINCT
C_TANULOID
FROM T_TANULOCSOPORT_OSSZES
WHERE C_OSZTALYCSOPORTID IN (SELECT osztalyCsoport FROM @osztalyCsoportTantargy)
AND TOROLT = 'F'
--Taulók mulasztásai
CREATE TABLE #mulasztas (Ossz INT, Tanulo INT, Tantargy INT, OsztalyCsoport INT)
INSERT INTO #mulasztas
SELECT
COUNT(tm.ID)
, tm.C_ORATANULOIID
, t.ID
, tao.C_OSZTALYCSOPORTID
FROM T_TANULOMULASZTAS_OSSZES tm
INNER JOIN T_TANITASIORA_OSSZES tao on tao.ID = tm.C_TANITASIORAKID
INNER JOIN T_TANTARGY_OSSZES t on t.ID = tao.C_TANTARGYID
INNER JOIN #students s on s.TanuloID = tm.C_ORATANULOIID
INNER JOIN @osztalyCsoportTantargy ocst on ocst.osztalyCsoport=tao.C_OSZTALYCSOPORTID and ocst.Tantargy=tao.C_TANTARGYID
WHERE
tm.Torolt = 'F'
AND tm.C_TIPUS = 1500
AND ((tao.C_OSZTALYCSOPORTID IN (SELECT ID FROM T_OSZTALY_OSSZES)) OR (tao.C_OSZTALYCSOPORTID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId)))))
AND tm.C_IGAZOLASTIPUSA <> @iskolaErekeduTavolletId
GROUP BY tm.C_ORATANULOIID, t.ID, tao.C_OSZTALYCSOPORTID
--Naplózott óra tanulónként
CREATE TABLE #naplozott (Tanulo INT, Tantargy INT, OsztalyCsoport INT, Ossz INT)
INSERT INTO #naplozott
SELECT
m.Tanulo
, m.Tantargy
, m.OsztalyCsoport
, COUNT(DISTINCT tao.ID)
FROM #mulasztas m
INNER JOIN T_TANITASIORA_OSSZES tao ON tao.C_OSZTALYCSOPORTID=m.OsztalyCsoport AND tao.C_TANTARGYID=m.Tantargy AND tao.C_MEGTARTOTT='T'
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID=m.Tanulo AND tcs.C_OSZTALYCSOPORTID=m.OsztalyCsoport
AND ((tao.C_OSZTALYCSOPORTID IN (SELECT ID FROM T_OSZTALY_OSSZES)) OR (tao.C_OSZTALYCSOPORTID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId)))))
INNER JOIN @osztalyCsoportTantargy ocst on ocst.osztalyCsoport=tao.C_OSZTALYCSOPORTID and ocst.Tantargy=tao.C_TANTARGYID
WHERE
tao.TOROLT='F'
AND tao.C_DATUM >= tcs.C_BELEPESDATUM
GROUP BY m.Tanulo, m.Tantargy, m.OsztalyCsoport
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX),
@colsIn AS NVARCHAR(MAX)
SELECT @cols= ISNULL(@cols + ',','') + QUOTENAME(Tantargy) FROM (SELECT DISTINCT m.Tantargy Tantargy FROM #mulasztas m) Tantargy
SELECT @colsIn= ISNULL(@colsIn + ',','') +'CONVERT(NVARCHAR(MAX),'+QUOTENAME(Tantargy) + ')+''%'' as ' + QUOTENAME(nev) FROM (SELECT DISTINCT m.Tantargy AS Tantargy, t.c_nev nev FROM #mulasztas m
INNER JOIN T_TANTARGY_OSSZES t ON t.id=m.Tantargy) TantargyCols
set @query='
SELECT
fel.C_NYOMTATASINEV Tanulo
, '+@colsIn+'
FROM (SELECT
mulasztas.Tanulo
, ROUND(CONVERT(FLOAT, mulasztas.Ossz)/CONVERT(FLOAT, naplozott.Ossz)*100, 0) Osszes
, mulasztas.Tantargy
FROM #students s
INNER JOIN #mulasztas mulasztas on mulasztas.Tanulo=s.TanuloId
INNER JOIN #naplozott naplozott on naplozott.Tantargy=mulasztas.Tantargy and naplozott.OsztalyCsoport=mulasztas.OsztalyCsoport and naplozott.Tanulo=mulasztas.Tanulo
)a
PIVOT (MAX(Osszes) FOR Tantargy IN ('+@cols+'))pv
INNER JOIN T_FELHASZNALO_OSSZES fel on fel.ID=Tanulo
ORDER BY fel.C_NYOMTATASINEV
'
EXEC sp_executesql @query
DROP TABLE #students
DROP TABLE #mulasztas
DROP TABLE #naplozott
END

View file

@ -0,0 +1,62 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetTanevKozbenKilepettTanulok]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetTanevKozbenKilepettTanulok]
END
GO
-- =============================================
-- Author: Rudlof Kristóf
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[sp_GetTanevKozbenKilepettTanulok]
@tanevID int
AS
BEGIN
SELECT
c_nev OsztalyNev
FROM T_OSZTALY_OSSZES o
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on ocs.ID=o.ID AND ocs.C_FELADATKATEGORIAID = (select C_DEFAULTFELADATKATEGORIAID from T_TANEV_OSSZES where ID = ocs.C_TANEVID)
WHERE o.TOROLT='F' AND o.C_ALTANEVID=@tanevId
DECLARE osztalyKurzor CURSOR FOR
SELECT ID
FROM T_OSZTALY_OSSZES
WHERE TOROLT='F'
AND C_ALTANEVID=@tanevId
DECLARE @Osztaly int
OPEN osztalyKurzor
FETCH NEXT FROM osztalyKurzor INTO @Osztaly
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT ocs.C_NEV COLUMN379
, f.C_NYOMTATASINEV COLUMN20
, FORMAT(tcs.C_BELEPESDATUM, 'yyyy.MM.dd.') COLUMN3784
, FORMAT(tcs.C_KILEPESDATUM, 'yyyy.MM.dd.') COLUMN1
,tcs.C_ZARADEK COLUMN1557
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_OSZTALY_OSSZES o on tcs.C_OSZTALYCSOPORTID=o.ID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on o.ID=ocs.ID
INNER JOIN T_FELHASZNALO_OSSZES f on f.ID=tcs.C_TANULOID
WHERE
tcs.C_KILEPESDATUM IS NOT NULL
and tcs.C_TANEVID=@tanevId
and o.ID=@Osztaly
and tcs.TOROLT='F'
ORDER BY f.C_NYOMTATASINEV
FETCH NEXT FROM osztalyKurzor INTO @Osztaly
END
CLOSE osztalyKurzor
DEALLOCATE osztalyKurzor
END
GO

View file

@ -0,0 +1,321 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetTanoranKivuliNaplo]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetTanoranKivuliNaplo]
END
GO
CREATE PROCEDURE [dbo].[sp_GetTanoranKivuliNaplo]
@tanevId INT,
@intezmenyId INT,
@csoportId INT,
@iskolaErdekuSzamit BIT
AS
BEGIN
SET NOCOUNT ON;
--Fejlecoldal (Fejléc)
SELECT
ia.C_NEV IntezmenyNev
,dbo.fnGetDokumentumIntezmenyCime(@tanevId) as IntezmenyCim
,ia.C_OMKOD OMKOD
,ia.C_IGAZGATONEVE IntezmenyVezeto
,ocs.C_NEV Csoport
,ISNULL(f.C_NYOMTATASINEV,'-') CsoportVezeto
,ISNULL(cs.C_CSOPORTNAPLOLEIRAS,'-') CsoportNaploLeiras
,dbo.fnGetDokumentumDatumFormatum(cs.C_CSOPORTNAPLOMEGNYITASA) Megnyitas
,ISNULL(dbo.fnGetDokumentumDatumFormatum(cs.C_CSOPORTNAPLOZARASA),'-') Lezaras
,t.C_NEV as Tanev
,cs.C_CSOPORTNAPLOLEIRAS Megjegyzes
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
CREATE TABLE #students (ID INT, Osztaly NVARCHAR(MAX))
INSERT INTO #students
SELECT
TanuloId
,dbo.fnGetDokumentumTanuloAktualisOsztaly(TanuloId) Osztaly /*TODO:Tobb Osztaly*//*OM-1650*/
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @csoportId, 'T')
--Osztaly (Csoport tanulóinak osztályai)
SELECT
COUNT(Id) Tanulo
,Osztaly
FROM #students
GROUP BY Osztaly
--Napló
DECLARE @datum DATE = GETDATE()
CREATE TABLE #OraSorszam (TanitasioraId INT, OraSorszam NVARCHAR(100))
INSERT INTO #OraSorszam
EXEC sp_GetOraSorszamByOsztaly
@osztalyCsoportId = @csoportId,
@datum = @datum,
@intezmenyId = @intezmenyId,
@tanevId = @tanevId
DECLARE @letszam INT=(SELECT COUNT(tcs.C_TANULOID) FROM T_TANULOCSOPORT_OSSZES tcs WHERE tcs.C_OSZTALYCSOPORTID=@csoportId AND tcs.TOROLT='F')
SELECT
dbo.fnGetDokumentumDatumFormatum(tao.C_ORAKEZDETE) + CONVERT(VARCHAR(5), tao.C_ORAKEZDETE, 108) + '-' + CONVERT(VARCHAR(5), tao.C_ORAVEGE, 108) Datum
,IIF(tantargy.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN --
+ ' (' + tantargy.C_NEV + ')', tantargy.C_NEV) TantargyNev
,tao.C_TANTARGYID TantargyId
,tao.C_MEGTARTOTT Megtartott
,IIF(C_MEGTARTOTT = 'F', 'Elmaradt', tao.C_TEMA) Tema
,@letszam-isnull(hianyzo.Hianyzok,0) Letszam
,IIF(C_MEGTARTOTT = 'F', '-', f.C_NYOMTATASINEV) Pedagogus
,Terem.C_NEV TeremNev
,isnull(Oraszam.OraSorszam + '.'
, '-') OraSorszam
INTO #megtartottOrak
FROM T_TANITASIORA_OSSZES tao
LEFT JOIN (SELECT tm.C_TANITASIORAKID Tanitasiora, COUNT(tm.C_ORATANULOIID) 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'
ORDER BY tao.C_ORAKEZDETE
SELECT * FROM #megtartottOrak
/*TANULÓ adatai*/
SELECT DISTINCT
TanuloId
,OktAzon
,TajSzam
,AnyjaNeve
,SzulHely
,SzulIdo
,SocAdat
,Kepzes
,TanuloNeve
,Allampolgarsaga
,DiakIgazolvanySzam
,AktualisOsztaly Osztalya
FROM fnGetDokumentumTanulokAdatai(@tanevId, @csoportId)
ORDER BY TanuloNeve
/*TANULÓ elérhetőségei */
DECLARE @Gondviselok TABLE (TanuloId INT, GondviseloId INT)
INSERT INTO @Gondviselok
SELECT
TanuloId
,GondviseloId
FROM fnGetDokumentumGondviselok (@csoportId, @tanevId, 'F', 'T')
DECLARE @TanuloCimTable TABLE (FelhasznaloId INT, Cim NVARCHAR(MAX), Cimtipusa NVARCHAR(MAX))
INSERT INTO @TanuloCimTable
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
DECLARE @GondViseloCimTable TABLE (GondviseloId INT, Cim NVARCHAR(MAX), Cimtipusa NVARCHAR(MAX))
INSERT INTO @GondViseloCimTable
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
DECLARE @EmailCimTableTemp TABLE (FelhasznaloId INT, EmailCim NVARCHAR(MAX), GondviseloId INT)
INSERT INTO @EmailCimTableTemp
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
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 = @tanevId
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 (GondviseloId INT, EmailCim NVARCHAR(MAX))
INSERT INTO @EmailCimGondviseloTable
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
DECLARE @TelefonTableTemp TABLE (FelhasznaloId INT, Telefon NVARCHAR(MAX), GondviseloId INT)
INSERT INTO @TelefonTableTemp
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
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 = @tanevId
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 (GondviseloId INT, Telefon NVARCHAR(MAX))
INSERT INTO @GondviseloTelefonTable
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 tanuloid
,cim.Cimtipusa cimtipus
,cim.Cim
,email.EmailCim email
,telefon.Telefon 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
,Gondviselok.GondviseloNev + ' (' + RokonsagiFok.C_NAME + ')' C_NEV
,cim.Cimtipusa C_CIMTIPUSA
,cim.cim C_OSSZETETTCIM
,telefon.telefon C_TELEFONSZAM
,email.emailcim 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
--Megtartott órák száma
SELECT
COUNT(TantargyId) TantargyOraszam
,Tantargynev TantargyNev
INTO #MegtartottOrakSzama
FROM #megtartottOrak
WHERE Megtartott = 'T'
GROUP BY TantargyId, TantargyNev
SELECT DISTINCT
SUM(tmp.TantargyOraszam) OsszesTantargySzam
,STUFF((
SELECT DISTINCT ', ' + btmp.TantargyNev + '(' + CAST(btmp.TantargyOraszam AS NVARCHAR(MAX)) + ')'
FROM #MegtartottOrakSzama btmp
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,'') Tantargyak
FROM #MegtartottOrakSzama tmp
END
GO

View file

@ -0,0 +1,336 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_Nyomtatvany_Excel_IdoszakiOsztalyokTantargyiStatisztika]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_Nyomtatvany_Excel_IdoszakiOsztalyokTantargyiStatisztika]
END
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 = (SELECT tev.C_DEFAULTFELADATKATEGORIAID FROM T_TANEV_OSSZES tev WHERE C_AKTIV = 'T' and tev.ID = @pTanevId)
DECLARE @osztalyoktanoraicsoportok TABLE (OSZTALYCSOPORTID INT PRIMARY KEY, C_TIPUSA INT, C_VEGZOSEVFOLYAM CHAR(1));
DECLARE @osztalycsoportok TABLE (OSZTALYCSOPORTID INT PRIMARY KEY);
DECLARE @aktualisOsztalyCsoportok TABLE (OSZTALYCSOPORTID INT);
DECLARE @osztalyTanulok TABLE (TANULOID INT PRIMARY KEY, BELEPESDATUM DATE, KILEPESDATUM DATE);
DECLARE @szurtMulasztas TABLE (TIPUS_CHAR CHAR(1), C_TIPUS INT , C_IGAZOLT CHAR(1), C_TANULOID INT, C_GYAKORLATI CHAR(1), KESESPERC INT, MULASZTASOK_SZAMA INT);
DECLARE @tantargyak TABLE(TANTARGYID INT, TANTARGY_NEV NVARCHAR(MAX), TARGYKATEGORIA_NEV NVARCHAR(MAX), TARGYKATEGORIA_SORSZAM INT, C_FOTARGYE CHAR(1), C_ALTANTARGYKENTNYOMTATVANYBAN CHAR(1));
DECLARE @osztalyok TABLE(OSZTALYID INT, NEV NVARCHAR(MAX), EVFOLYAM INT, SORREND INT);
DECLARE @osztalyokTanulokszama TABLE (OSZTALYID INT, TANULOKSZAMA INT);
DECLARE @osztalyokErtekeles TABLE (OSZTALYID INT, TANTARGYID INT, ATLAG FLOAT);
DECLARE @osztalyokMagszorg TABLE (OSZTALYID INT, MAGATLAG FLOAT, SZORGATLAG FLOAT);
DECLARE @osztalyokMulasztas TABLE (OSZTALYID INT, TIPUS_CHAR CHAR(1), C_TIPUS INT, C_IGAZOLT CHAR(1), MULASZTASOK_SZAMA INT, C_GYAKORLATI CHAR(1), DESCR CHAR(3));
-- 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#
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
DELETE FROM @szurtMulasztas;
DELETE FROM @osztalycsoportok;
DELETE FROM @aktualisOsztalyCsoportok;
DELETE FROM @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) 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
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
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);
IF OBJECT_ID('tempdb..#tempOsztalyok') IS NOT NULL DROP TABLE #tempOsztalyok
IF OBJECT_ID('tempdb..#tempTanulokszama') IS NOT NULL DROP TABLE #tempTanulokszama
IF OBJECT_ID('tempdb..#tempErtekeles') IS NOT NULL DROP TABLE #tempErtekeles
IF OBJECT_ID('tempdb..#tempForPivotMulasztas') IS NOT NULL DROP TABLE #tempForPivotMulasztas
IF OBJECT_ID('tempdb..#tempOsztalyErtekelesek') IS NOT NULL DROP TABLE #tempOsztalyErtekelesek;
IF OBJECT_ID('tempdb..#tempMulasztas') IS NOT NULL DROP TABLE #tempMulasztas;
END
GO

View file

@ -0,0 +1,261 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_Nyomtatvany_Excel_IdoszakiTanuloStatisztika]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_Nyomtatvany_Excel_IdoszakiTanuloStatisztika]
END
GO
CREATE PROCEDURE [dbo].[sp_Nyomtatvany_Excel_IdoszakiTanuloStatisztika]
@pTanevId INT,
@pIntezmenyId INT,
@pErtekelestipusaId INT,
@pLezaroNaptipusId INT,
@pTanevrendjeTanevKezdeteNaptipusId INT = 1394,
@pMulasztasTipusIdKeses INT = 1499,
@pMulasztasTipusIdHianyzas INT = 1500,
@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 @oid int, @onev nvarchar(50), @okf char(1), @ovegz char(1)
DECLARE osztaly_cursor CURSOR FOR
SELECT T_OSZTALYCSOPORT_OSSZES.ID AS OSZTALYID, T_OSZTALYCSOPORT_OSSZES.C_NEV AS NEV, C_KERESZTFELEVES AS KERESZTFELEVES, C_VEGZOSEVFOLYAM AS VEGZOSEVFOLYAM
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 ON T_DICTIONARYITEMBASE_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA AND T_DICTIONARYITEMBASE_OSSZES.TOROLT = 'F' AND T_DICTIONARYITEMBASE_OSSZES.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 = (select C_DEFAULTFELADATKATEGORIAID from T_TANEV_OSSZES where ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID)
ORDER BY T_DICTIONARYITEMBASE_OSSZES.C_ORDER ASC, T_OSZTALYCSOPORT_OSSZES.C_NEV ASC;
DECLARE @osztalyTanulok TABLE (TANULOID NVARCHAR(20) PRIMARY KEY, OSZTALYID INT, TANULONEV NVARCHAR(MAX), OSZTALYNEV NVARCHAR(MAX), BELEPESDATUM DATE, KILEPESDATUM DATE);
DECLARE @tantargyak TABLE(TANTARGYID INT, TANTARGY_NEV NVARCHAR(MAX), TARGYKATEGORIA_NEV NVARCHAR(MAX), TARGYKATEGORIA_SORSZAM INT, C_FOTARGYE CHAR(1), C_ALTANTARGYKENTNYOMTATVANYBAN CHAR(1));
DECLARE @szurtMulasztas TABLE (TIPUS_CHAR CHAR(1), C_TIPUS INT , C_IGAZOLT CHAR(1), TANULOID NVARCHAR(20), C_GYAKORLATI CHAR(1), KESESPERC INT, MULASZTASOK_SZAMA INT);
DECLARE @szurtErtekeles TABLE (
T_TANULOERTEKELES_ID INT, TANULOID NVARCHAR(20), ERTEKELES NVARCHAR(MAX), ERTEKELES_SZOVEG_MEGJEGYZES NVARCHAR(MAX), C_ERTEKELESDATUM DATETIME,
TANTARGYID INT, TANTARGY_NEV NVARCHAR(255), TARGYKATEGORIA_NEV NVARCHAR(255), TARGYKATEGORIA_SORSZAM INT, T_TANTARGY_C_FOTARGYE CHAR(1), T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN CHAR(1), C_OSZTALYCSOPORTID INT
);
DECLARE @szurtMagszorg TABLE (T_TANULOERTEKELES_ID INT, TANULOID NVARCHAR(20), MagatartasOsztalyzat NVARCHAR(MAX), MagatartasErtek NVARCHAR(MAX), SzorgalomOsztalyzat NVARCHAR(MAX), SzorgalomErtek NVARCHAR(MAX), ERTEKELESSZOVEG NVARCHAR(MAX), ERTEKELESDATUM DATETIME, TOROLT CHAR(1));
DECLARE @szurtMulasztasRes TABLE (TIPUS_CHAR CHAR(1), C_TIPUS INT , C_IGAZOLT CHAR(1), TANULOID NVARCHAR(20), KESESPERC INT, KESESORA INT, MULASZTASOK_SZAMA INT, C_GYAKORLATI CHAR(1));
DECLARE @szurtMulasztasOsszesRes TABLE (C_IGAZOLT CHAR(1), TANULOID NVARCHAR(20), MULASZTASOK_SZAMA INT, C_GYAKORLATI CHAR(1));
INSERT INTO @tantargyak (TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN)
SELECT TANTARGYAK.ID AS TANTARGYID, COALESCE(TANTARGYAK.C_NEVNYOMTATVANYBAN, TANTARGYAK.C_NEV) AS TANTARGY_NEV, TARGYKATEG.C_NAME AS TARGYKATEGORIA_NEV, TARGYKATEG.C_VALUE AS TARGYKATEGORIA_SORSZAM, TANTARGYAK.C_FOTARGYE, TANTARGYAK.C_ALTANTARGYKENTNYOMTATVANYBAN
FROM T_TANTARGY_OSSZES AS TANTARGYAK
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS TARGYKATEG ON TARGYKATEG.ID = TANTARGYAK.C_TARGYKATEGORIA AND TARGYKATEG.C_TANEVID = TANTARGYAK.C_TANEVID
WHERE TANTARGYAK.TOROLT = 'F' AND TANTARGYAK.C_TANEVID = @pTanevId
ORDER BY TARGYKATEGORIA_SORSZAM, TANTARGY_NEV;
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
OPEN osztaly_cursor
FETCH NEXT FROM osztaly_cursor
INTO @oid, @onev, @okf, @ovegz
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @keresztFeleves BIT = (SELECT IIF(@okf = 'T', 1, 0))
DECLARE @vegzosEvfolyamu BIT = (SELECT IIF(@ovegz = 'T', 1, 0))
--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 = @oid)
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 = @oid)
ORDER BY C_OSZTALYCSOPORTID DESC),
GETDATE())
);
INSERT INTO @osztalyTanulok (TANULOID, OSZTALYID, TANULONEV, OSZTALYNEV, BELEPESDATUM, KILEPESDATUM)
SELECT DISTINCT CAST(TANCSOPORT.C_OSZTALYCSOPORTID AS NVARCHAR) + '_' + CAST(FELHASZNALO.ID AS NVARCHAR) /*AS OSZTALYTANULOID, FELHASZNALO.ID*/ AS TANULOID, TANCSOPORT.C_OSZTALYCSOPORTID AS OSZTALYID, C_NYOMTATASINEV, C_NEV, C_BELEPESDATUM, C_KILEPESDATUM
FROM T_FELHASZNALO_OSSZES AS FELHASZNALO
INNER JOIN (
SELECT C_TANULOID, C_OSZTALYCSOPORTID, C_NEV, C_BELEPESDATUM, C_KILEPESDATUM
FROM T_TANULOCSOPORT_OSSZES AS TANULOCSOPORT
INNER JOIN T_OSZTALYCSOPORT_OSSZES AS OSZTALYCSOPORT ON OSZTALYCSOPORT.ID = TANULOCSOPORT.C_OSZTALYCSOPORTID
WHERE TANULOCSOPORT.TOROLT = 'F' AND TANULOCSOPORT.C_OSZTALYCSOPORTID = @oid AND TANULOCSOPORT.C_BELEPESDATUM < @idoszakVege AND (@keresztFeleves = 0 OR TANULOCSOPORT.C_BELEPESDATUM >= @idoszakEleje)
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 = @oid AND FELHASZNALO.C_TANEVID = @pTanevId;
IF OBJECT_ID('tempdb..#tempOsztalyErtekelesek') IS NOT NULL
DROP TABLE #tempOsztalyErtekelesek;
SELECT * INTO #tempOsztalyErtekelesek FROM fnGetDokumentumErtekelesekOsztalyonkent (@pTanevId, @oid, @pErtekelestipusaId, DEFAULT, DEFAULT, @pAtsoroltTanuloAdatok) AS ERTEKELESEK
INSERT INTO @szurtErtekeles (T_TANULOERTEKELES_ID, TANULOID, ERTEKELES, ERTEKELES_SZOVEG_MEGJEGYZES, C_ERTEKELESDATUM, TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, T_TANTARGY_C_FOTARGYE, T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN, C_OSZTALYCSOPORTID)
SELECT ROW_NUMBER() OVER (ORDER BY TanuloId), CAST(@oid AS NVARCHAR) + '_' + CAST(TanuloId AS NVARCHAR), COALESCE(CAST(ErtekelesOsztalyzatValue AS NVARCHAR(MAX)), IIF(ErtekelesSzoveg IS NOT NULL, ISNULL(ErtekelesSzovegRovidNev, NULL), NULL), ErtekelesSzazalek), COALESCE(ErtekelesSzoveg, ErtekelesTema, ''), Datum,
TantargyId, TantargyNevZarojellel, TARGYKATEG.C_NAME, TARGYKATEG.C_VALUE, FotargyE, Altantargy, OsztalyCsoportId
FROM #tempOsztalyErtekelesek 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')
--MAGATARTÁS-SZORGALOM
INSERT INTO @szurtMagszorg (T_TANULOERTEKELES_ID, TANULOID, MagatartasOsztalyzat, MagatartasErtek, SzorgalomOsztalyzat, SzorgalomErtek, ERTEKELESSZOVEG, ERTEKELESDATUM, TOROLT)
SELECT ROW_NUMBER() OVER (ORDER BY TanuloId) AS ID, CAST(@oid AS NVARCHAR) + '_' + CAST(TanuloId AS NVARCHAR) AS 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 #tempOsztalyErtekelesek AS ERTEKELESEK
WHERE TantargyId IS NULL;
--MULASZTÁS
INSERT INTO @szurtMulasztas (TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, C_GYAKORLATI, KESESPERC, MULASZTASOK_SZAMA)
SELECT TIPUS_CHAR, TIPUS, IGAZOLT, CAST(@oid AS NVARCHAR) + '_' + CAST(TanuloMulasztas.TANULOID AS NVARCHAR), GYAKORLATI, SUM(KESESPERC), SUM(MULASZTASOK_SZAMA)
FROM #tempMulasztas AS TanuloMulasztas
INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @oid, 'T') AS TANULO ON TANULO.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(@oid, @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
IF @pElmeletgyakorlat=0
BEGIN
INSERT INTO @szurtMulasztasRes
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, SUM(KESESPERC) AS KESESPERC, SUM(KESESPERC)/45 AS KESESORA, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA, 'F'
FROM @szurtMulasztas
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID
ORDER BY TANULOID, C_TIPUS DESC, C_IGAZOLT DESC;
INSERT INTO @szurtMulasztasOsszesRes
SELECT C_IGAZOLT, TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA, 'F'
FROM (
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, SUM(KESESPERC)/45 AS MULASZTASOK_SZAMA
FROM @szurtMulasztas
WHERE TIPUS_CHAR = 'K'
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID
UNION ALL
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA
FROM @szurtMulasztas
WHERE TIPUS_CHAR = 'H'
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID
) AS KM
GROUP BY C_IGAZOLT, TANULOID
ORDER BY TANULOID, C_IGAZOLT DESC;
END
ELSE
BEGIN
INSERT INTO @szurtMulasztasRes
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, KESESPERC, KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN 45 ELSE 45 END) AS KESESORA, MULASZTASOK_SZAMA, C_GYAKORLATI
FROM @szurtMulasztas
ORDER BY TANULOID, C_TIPUS DESC, C_IGAZOLT DESC;
INSERT INTO @szurtMulasztasOsszesRes
SELECT C_IGAZOLT, TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA, C_GYAKORLATI
FROM (
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN 45 ELSE 45 END) AS MULASZTASOK_SZAMA, C_GYAKORLATI
FROM @szurtMulasztas
WHERE TIPUS_CHAR = 'K'
UNION ALL
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, MULASZTASOK_SZAMA, C_GYAKORLATI
FROM @szurtMulasztas
WHERE TIPUS_CHAR = 'H'
) AS KM
GROUP BY C_IGAZOLT, TANULOID, C_GYAKORLATI
ORDER BY TANULOID, C_IGAZOLT DESC;
END
FETCH NEXT FROM osztaly_cursor
INTO @oid, @onev, @okf, @ovegz
END
CLOSE osztaly_cursor;
DEALLOCATE osztaly_cursor;
SELECT DISTINCT TANULOID, TANULONEV, OSZTALYNEV, FORMAT(BELEPESDATUM, 'yyyy.MM.dd', 'hu-HU') + ' - ' + ISNULL (FORMAT(KILEPESDATUM, 'yyyy.MM.dd', 'hu-HU'), '') AS BESOROLASA
FROM @osztalyTanulok
ORDER BY OSZTALYNEV, TANULONEV;
SELECT DISTINCT TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_SORSZAM
FROM @tantargyak
ORDER BY TARGYKATEGORIA_SORSZAM, TANTARGY_NEV;
SELECT * FROM @szurtErtekeles
SELECT * FROM @szurtMagszorg
SELECT * FROM @szurtMulasztasRes
SELECT * FROM @szurtMulasztasOsszesRes
IF OBJECT_ID('tempdb..#tempOsztalyErtekelesek') IS NOT NULL
DROP TABLE #tempOsztalyErtekelesek;
IF OBJECT_ID('tempdb..#tempMulasztas') IS NOT NULL
DROP TABLE #tempMulasztas;
END
GO