135 lines
5.2 KiB
Transact-SQL
135 lines
5.2 KiB
Transact-SQL
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)
|
|
,RENDEZ0 int
|
|
,RENDEZ1 int
|
|
,RENDEZ2 nvarchar(255)
|
|
,RENDEZ3 int
|
|
,RENDEZ4 int
|
|
,RENDEZ5 nvarchar(255)
|
|
)
|
|
AS BEGIN
|
|
|
|
DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId)
|
|
DECLARE @defaultCsengetesiRendId int
|
|
|
|
DECLARE @tanoraiCsoportok TABLE(
|
|
OsztalyCsoportId int
|
|
)
|
|
|
|
SELECT @defaultCsengetesiRendId = ID
|
|
FROM T_CSENGETESIREND_OSSZES csr
|
|
WHERE csr.TOROLT='F'
|
|
AND csr.C_AKTIV = 'T'
|
|
AND csr.C_TANEVID = @tanevId
|
|
|
|
IF @kategoriaId <> 7555 -- NEM AMI-s osztályoknál
|
|
BEGIN
|
|
INSERT INTO @tanoraiCsoportok(OsztalyCsoportId)
|
|
SELECT
|
|
ID
|
|
FROM fnGetDokumentumOsztalyVagyTanoraiCsoport(@tanevId)
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
-- AMI törzslapoknál ezekhez az osztálycsoportokhoz szedjük össze a mulasztásokat
|
|
INSERT INTO @tanoraiCsoportok(OsztalyCsoportId)
|
|
SELECT ID
|
|
FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId, 0, DEFAULT)
|
|
END
|
|
|
|
INSERT INTO @result
|
|
SELECT
|
|
tm.C_ORATANULOIID AS TanuloId
|
|
,tcs2.ID AS TanuloCsoportId
|
|
,tao.C_OSZTALYCSOPORTID AS OsztalyCsoportId
|
|
,ocs.C_NEV AS OsztalyCsoportNev
|
|
,tm.C_TIPUS AS Tipusa
|
|
,tm.C_IGAZOLT AS Igazolt
|
|
,tm.C_IGAZOLASTIPUSA AS IgazolasTipusa
|
|
,tm.C_KESESPERCBEN AS KesesPercben
|
|
,tao.C_DATUM AS Datum
|
|
,IIF(tao.C_CSENGETESIRENDORAID IS NULL,
|
|
(SELECT
|
|
ISNULL(MAX(csro.C_ORASZAM), 0)
|
|
FROM T_CSENGETESIRENDORA_OSSZES csro
|
|
WHERE csro.TOROLT = 'F'
|
|
AND csro.C_CSENGETESIRENDID = @defaultCsengetesiRendId
|
|
AND CONVERT(nvarchar(5), C_KEZDETE, 108) <= CONVERT(nvarchar(5), C_ORAKEZDETE, 108)
|
|
),tao.C_ORASZAM) as Oraszam
|
|
,IIF(tao.C_CSENGETESIRENDORAID IS NULL, CONCAT(CONVERT(nvarchar(5), tao.C_ORAKEZDETE, 108), '-',
|
|
CONVERT(nvarchar(5), tao.C_ORAVEGE, 108)), CAST(tao.C_ORASZAM AS nvarchar(5))) AS OraszamWithOrakezdeteVege
|
|
,tao.C_TANTARGYID AS TantargyId
|
|
,ISNULL(tgy.C_NEVNYOMTATVANYBAN, tgy.C_NEV) AS TantargyNev
|
|
,tao.C_HETSORSZAMA AS HetSorszama
|
|
,tgy.C_GYAKORLATI AS Gyakorlati
|
|
,IIF(tanorai.OsztalyCsoportId IS NULL, 'F', 'T') AS Tanorai
|
|
,tgy.C_SORSZAM AS RENDEZ0
|
|
,IIF(tgy.C_FOTARGYID IS NULL,ISNULL(dibtgykat.C_ORDER, 10000),ISNULL(dibftgykat.C_ORDER, 10000)) AS RENDEZ1
|
|
,COALESCE(ftgy.C_NEVNYOMTATVANYBAN, ftgy.C_NEV, tgy.C_NEV) AS RENDEZ2
|
|
,ISNULL(tgy.C_FOTARGYID, tgy.ID) AS RENDEZ3
|
|
,tgy.C_FOTARGYID AS RENDEZ4
|
|
,ISNULL(tgy.C_NEVNYOMTATVANYBAN, tgy.C_NEV) AS RENDEZ5
|
|
FROM T_TANULOMULASZTAS_OSSZES tm
|
|
INNER JOIN T_TANITASIORA_OSSZES tao ON tao.ID = tm.C_TANITASIORAKID
|
|
AND tao.TOROLT='F'
|
|
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = tm.C_ORATANULOIID
|
|
AND tcs.TOROLT = 'F'
|
|
AND tao.C_DATUM >= tcs.C_BELEPESDATUM
|
|
AND tao.C_DATUM <= ISNULL(tcs.C_KILEPESDATUM, GETDATE())
|
|
AND tcs.C_OSZTALYCSOPORTID= tao.C_OSZTALYCSOPORTID
|
|
INNER JOIN T_TANULOCSOPORT_OSSZES tcs2 ON tcs2.C_TANULOID = tm.C_ORATANULOIID
|
|
AND tcs2.TOROLT = 'F'
|
|
AND tao.C_DATUM >= tcs2.C_BELEPESDATUM
|
|
AND tao.C_DATUM < ISNULL(tcs2.C_KILEPESDATUM, GETDATE())
|
|
AND tcs2.C_OSZTALYCSOPORTID= @osztalyCsoportId
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID
|
|
AND ocs.C_FELADATKATEGORIAID = @kategoriaId
|
|
INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ID = tao.C_TANTARGYID
|
|
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dibtgykat ON dibtgykat.Id = tgy.C_TARGYKATEGORIA
|
|
AND dibtgykat.TOROLT = 'F'
|
|
AND dibtgykat.C_TANEVID = @tanevId
|
|
LEFT JOIN T_TANTARGY_OSSZES ftgy ON tgy.C_FOTARGYID = ftgy.ID
|
|
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dibftgykat ON dibftgykat.ID = ftgy.C_TARGYKATEGORIA
|
|
AND dibftgykat.TOROLT = 'F'
|
|
AND dibftgykat.C_TANEVID = ftgy.C_TANEVID
|
|
LEFT JOIN @tanoraiCsoportok tanorai ON tanorai.OsztalyCsoportId = ocs.ID
|
|
WHERE tm.C_TIPUS BETWEEN 1499 AND 1500
|
|
AND tm.TOROLT = 'F'
|
|
AND (@csakTanoraiCelu = 0 OR tanorai.OsztalyCsoportId IS NOT NULL)
|
|
AND (@iskolaErdekuSzamit = 1 OR (tm.C_IGAZOLASTIPUSA IS NULL OR tm.C_IGAZOLASTIPUSA <> 1533))
|
|
AND (@atsoroltTanuloMulasztas = 1 OR (tao.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId, @csakTanoraiCelu, DEFAULT))))
|
|
AND (@csakKivlasztottOsztalyCsoport = 0 OR tao.C_OSZTALYCSOPORTID = @osztalyCsoportId)
|
|
AND (@idoszakEleje IS NULL OR tao.C_DATUM >= @idoszakEleje)
|
|
AND (@idoszakVege IS NULL OR tao.C_DATUM <= @idoszakVege)
|
|
|
|
RETURN
|
|
END
|
|
GO
|