Files
kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20190808154347_KRETA2_46_2/fnGetDokumentumMulasztasokOsztalyonkentReszletes.sql
2024-03-13 00:33:46 +01:00

86 lines
3.7 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)
)
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