kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Functions/fnGetDokumentumMulasztasokOsztalyonkentReszletes.sql
2024-03-13 00:33:46 +01:00

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