168 lines
No EOL
7 KiB
Transact-SQL
168 lines
No EOL
7 KiB
Transact-SQL
IF OBJECT_ID('sp_GetNemMegtartottOrakSzamaByHet') IS NOT NULL BEGIN
|
|
DROP PROCEDURE sp_GetNemMegtartottOrakSzamaByHet
|
|
END
|
|
GO
|
|
|
|
CREATE PROCEDURE sp_GetNemMegtartottOrakSzamaByHet
|
|
@osztalyId INT
|
|
,@intezmenyId INT
|
|
,@tanevId INT
|
|
,@hetSorszam INT
|
|
AS
|
|
BEGIN
|
|
|
|
DECLARE @vegzosUtolsoNapDatuma DATE = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_TANEVID = @tanevId AND TOROLT = 'F' AND C_NAPTIPUSA = 1402)
|
|
|
|
DECLARE @vegzosOsztalyokCsoportok TABLE (osztalyId INT)
|
|
INSERT INTO @vegzosOsztalyokCsoportok
|
|
SELECT ID FROM T_OSZTALYCSOPORT_OSSZES WHERE C_VEGZOSEVFOLYAM = 'T' AND C_TANEVID = @tanevID AND TOROLT = 'F'
|
|
|
|
DECLARE @aktualisHetHetirendje INT = (SELECT C_HETIREND FROM T_NAPTARIHET_OSSZES WHERE C_HETSORSZAMA=@hetSorszam AND TOROLT='F' AND C_TANEVID=@tanevId)
|
|
|
|
DECLARE @OsszesNap TABLE (Datum DATE, Hetirend INT, OrarendiNap NVARCHAR(1), OsztalyCsoportId INT)
|
|
INSERT INTO @OsszesNap
|
|
SELECT DISTINCT
|
|
C_NAPDATUMA
|
|
,C_HETIREND
|
|
,C_ORARENDINAP
|
|
,kapcsolodo.Id
|
|
FROM T_NAPTARINAP_OSSZES
|
|
CROSS JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyId) kapcsolodo
|
|
WHERE
|
|
C_TANEVID = @tanevId
|
|
AND TOROLT = 'F'
|
|
|
|
DECLARE @TanevRendje TABLE (Datum DATE, Hetirend INT, OsztalyCsoportId INT, OrarendiNap NVARCHAR(1))
|
|
INSERT INTO @TanevRendje
|
|
SELECT
|
|
C_DATUM
|
|
,C_HETIREND
|
|
,kapcsolodo.Id
|
|
,C_ORARENDINAP
|
|
FROM T_TANEVRENDJE_OSSZES
|
|
CROSS JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyId) kapcsolodo
|
|
WHERE
|
|
C_TANEVID = @tanevId
|
|
AND TOROLT = 'F'
|
|
AND C_OSSZESCSOPORTRAVONATKOZIK = 'T'
|
|
|
|
DECLARE @TanevRendjeOsztalyCsoportonkent TABLE (Datum DATE, Hetirend INT, OsztalyCsoportId INT, OrarendiNap NVARCHAR(1))
|
|
INSERT INTO @TanevRendjeOsztalyCsoportonkent
|
|
SELECT
|
|
C_DATUM
|
|
,C_HETIREND
|
|
,C_OSZTALYCSOPORTID
|
|
,C_ORARENDINAP
|
|
FROM T_OSZTALYCSOPORT_TANEVRENDJE ocstr
|
|
INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.ID = ocstr.C_TANEVRENDJEID
|
|
INNER JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyId) kapcsolodo ON kapcsolodo.Id = C_OSZTALYCSOPORTID
|
|
WHERE
|
|
TOROLT = 'F'
|
|
|
|
DECLARE @OrarendiNapok TABLE (Datum DATE, OsztalyCsoportId INT, Hetirend INT)
|
|
INSERT INTO @OrarendiNapok
|
|
SELECT
|
|
Datum
|
|
,OsztalyCsoportId
|
|
,Hetirend
|
|
FROM
|
|
(SELECT
|
|
OsszesNap.Datum
|
|
,OsszesNap.OsztalyCsoportId
|
|
,COALESCE(trocs.OrarendiNap, tr.OrarendiNap, OsszesNap.OrarendiNap) OrarendiNap
|
|
,COALESCE(trocs.Hetirend, tr.Hetirend, OsszesNap.Hetirend) Hetirend
|
|
FROM @OsszesNap OsszesNap
|
|
LEFT JOIN @TanevRendje tr ON tr.Datum = OsszesNap.Datum AND tr.OsztalyCsoportId = OsszesNap.OsztalyCsoportId
|
|
LEFT JOIN @TanevRendjeOsztalyCsoportonkent trocs ON trocs.Datum = OsszesNap.Datum AND trocs.OsztalyCsoportId = OsszesNap.OsztalyCsoportId
|
|
WHERE
|
|
OsszesNap.OrarendiNap = 'T' OR tr.OrarendiNap = 'T' OR trocs.OrarendiNap = 'T'
|
|
) a
|
|
WHERE OrarendiNap ='T'
|
|
|
|
SELECT
|
|
Id AS Id
|
|
,@hetSorszam AS HetSzama
|
|
,C_NAPDATUMA AS Datum
|
|
,C_HETNAPJA AS Hetnapja
|
|
,C_ORASZAM AS Oraszam
|
|
,C_NEV AS OsztalyNev
|
|
,tant AS TargyNev
|
|
,Nev AS TanarNev
|
|
FROM
|
|
(
|
|
SELECT DISTINCT
|
|
oo.id
|
|
,naptar.C_NAPDATUMA
|
|
,naptar.C_HETNAPJA
|
|
,oo.C_ORASZAM
|
|
,ocs.C_NEV
|
|
,t.C_NEV tant
|
|
,ISNULL(fh.C_NYOMTATASINEV, f.C_NYOMTATASINEV) Nev
|
|
FROM T_ORARENDIORA_OSSZES oo
|
|
INNER JOIN T_NAPTARINAP_OSSZES naptar ON
|
|
((naptar.C_NAPDATUMA >=oo.C_ORAERVENYESSEGKEZDETE AND naptar.C_NAPDATUMA < oo.C_ORAERVENYESSEGVEGE)
|
|
OR
|
|
(naptar.C_NAPDATUMA = oo.C_ORAERVENYESSEGKEZDETE AND naptar.C_NAPDATUMA = oo.C_ORAERVENYESSEGVEGE))
|
|
AND oo.C_HETNAPJA=naptar.C_HETNAPJA
|
|
AND (naptar.C_NAPTIPUSA NOT IN (1386,1387,1389,1391,1392,1396,1397,1398,1399,1401))
|
|
INNER JOIN @OrarendiNapok OrarendiNapok ON OrarendiNapok.OsztalyCsoportId = oo.C_OSZTALYCSOPORTID AND OrarendiNapok.Datum = naptar.C_NAPDATUMA AND (OrarendiNapok.Hetirend = oo.C_HETIREND OR oo.C_HETIREND = 1554)
|
|
LEFT JOIN T_TANITASIORA_OSSZES tao ON
|
|
naptar.C_NAPDATUMA = tao.C_DATUM
|
|
AND tao.C_ORARENDIORAGROUPID = oo.C_ORARENDIORAGROUPID
|
|
AND tao.C_DATUM BETWEEN oo.C_ORAERVENYESSEGKEZDETE AND oo.C_ORAERVENYESSEGVEGE
|
|
AND tao.TOROLT='F'
|
|
LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES hely ON hely.C_HELYETTESITETTORARENDID=oo.ID AND CAST(hely.C_HELYETTESITESNAPJA AS DATE) = naptar.C_NAPDATUMA
|
|
LEFT JOIN T_FELHASZNALO_OSSZES f ON oo.C_TANARID = f.ID
|
|
LEFT JOIN T_FELHASZNALO_OSSZES fh ON hely.C_HELYETTESTANAROKID = f.ID
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID=oo.C_OSZTALYCSOPORTID
|
|
INNER JOIN T_TANTARGY_OSSZES t ON t.ID=oo.C_TANTARGYID
|
|
INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID=oo.C_HETIREND AND d.C_TANEVID=oo.C_TANEVID AND d.C_INTEZMENYID=oo.C_INTEZMENYID
|
|
WHERE
|
|
oo.TOROLT='F'
|
|
AND oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztalyId))
|
|
AND naptar.C_NAPDATUMA <= IIF(@osztalyId IN (SELECT osztalyId FROM @vegzosOsztalyokCsoportok) AND GETDATE() >= @vegzosUtolsoNapDatuma, @vegzosUtolsoNapDatuma, GETDATE())
|
|
AND tao.ID IS NULL
|
|
AND hely.ID IS NULL
|
|
AND (oo.C_TANORANKIVULIFOGLALKOZAS = 'F' OR oo.C_TANORANKIVULIFOGLALKOZAS IS NULL)
|
|
AND oo.C_CSENGETESIRENDORAID IS NOT NULL
|
|
AND naptar.C_TANEVID = @tanevId
|
|
AND naptar.C_HETSORSZAMA = @hetSorszam
|
|
|
|
UNION
|
|
|
|
SELECT
|
|
oo.id
|
|
,naptar.C_NAPDATUMA
|
|
,naptar.C_HETNAPJA
|
|
,oo.C_ORASZAM
|
|
,ocs.C_NEV
|
|
,t.C_NEV
|
|
,f.C_NYOMTATASINEV +' (' + fh.C_NYOMTATASINEV +')'
|
|
FROM T_HELYETTESITESIIDOSZAK_OSSZES hi
|
|
INNER JOIN T_ORARENDIORA_OSSZES oo on oo.Id=hi.C_HELYETTESITETTORARENDID
|
|
INNER JOIN T_NAPTARINAP_OSSZES naptar on naptar.C_NAPDATUMA = CAST(hi.C_HELYETTESITESNAPJA AS DATE) AND naptar.C_TANEVID=hi.C_TANEVID AND naptar.C_INTEZMENYID=hi.C_INTEZMENYID
|
|
LEFT JOIN T_FELHASZNALO_OSSZES f ON oo.C_TANARID = f.ID
|
|
LEFT JOIN T_FELHASZNALO_OSSZES fh ON hi.C_HELYETTESTANAROKID = fH.ID
|
|
LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID=oo.C_OSZTALYCSOPORTID
|
|
LEFT JOIN T_TANTARGY_OSSZES t ON t.ID=oo.C_TANTARGYID
|
|
LEFT JOIN T_TEREM_OSSZES ter ON ter.ID=oo.C_TEREMID
|
|
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d on d.id=oo.C_HETIREND AND d.C_TANEVID=oo.C_TANEVID AND d.C_INTEZMENYID=oo.C_INTEZMENYID
|
|
WHERE
|
|
oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztalyId))
|
|
AND (oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_TIPUSA=1034) OR oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM T_OSZTALY_OSSZES))
|
|
AND hi.TOROLT='F'
|
|
AND naptar.C_HETSORSZAMA = @hetSorszam
|
|
AND (oo.C_TANORANKIVULIFOGLALKOZAS = 'F' OR oo.C_TANORANKIVULIFOGLALKOZAS IS NULL)
|
|
AND oo.C_CSENGETESIRENDORAID IS NOT NULL
|
|
AND oo.TOROLT='F'
|
|
AND hi.C_HELYETTESITESNAPJA <= IIF(oo.C_OSZTALYCSOPORTID IN (SELECT osztalyId FROM @vegzosOsztalyokCsoportok) AND GETDATE() >= @vegzosUtolsoNapDatuma, @vegzosUtolsoNapDatuma, GETDATE())
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM T_ORARENDIORA_OSSZES ooo
|
|
JOIN T_TANITASIORA_OSSZES tao ON tao.C_ORARENDIORAGROUPID = ooo.C_ORARENDIORAGROUPID AND tao.C_DATUM BETWEEN ooo.C_ORAERVENYESSEGKEZDETE AND ooo.C_ORAERVENYESSEGVEGE
|
|
WHERE tao.C_DATUM = CAST(hi.C_HELYETTESITESNAPJA AS DATE) AND ooo.ID=hi.C_HELYETTESITETTORARENDID AND tao.TOROLT='F')
|
|
)a
|
|
ORDER BY Datum, Oraszam
|
|
|
|
END
|
|
|
|
GO |