203 lines
7.7 KiB
Transact-SQL
203 lines
7.7 KiB
Transact-SQL
DROP PROCEDURE IF EXISTS sp_GetOraSorszamByOsztaly
|
|
GO
|
|
|
|
CREATE PROCEDURE sp_GetOraSorszamByOsztaly
|
|
@osztalyCsoportId int
|
|
,@datum date
|
|
,@intezmenyId int
|
|
,@tanevId int
|
|
AS
|
|
BEGIN
|
|
|
|
SET NOCOUNT ON;
|
|
DECLARE
|
|
@tanarSzamit bit
|
|
,@osztalybontasEgybe bit
|
|
,@osztalybontasCsoport bit
|
|
,@osszerendelesId int
|
|
,@kezdoErtek int
|
|
|
|
SET @tanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(3075, @intezmenyId, @tanevId)
|
|
SET @osztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(3078, @intezmenyId, @tanevId)
|
|
SET @osztalybontasCsoport = 0
|
|
|
|
IF EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES WHERE TOROLT='F' AND ((ID = @osztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL) OR C_OSZTALYBONTASID = @osztalyCsoportId))
|
|
BEGIN
|
|
SET @osztalybontasCsoport = 1
|
|
END
|
|
|
|
IF (@osztalybontasEgybe = 1 AND @osztalybontasCsoport = 1)
|
|
BEGIN
|
|
CREATE TABLE #kapcsolodoOsztalyCsoportok (OsztalyCsoportId int)
|
|
INSERT INTO #kapcsolodoOsztalyCsoportok (OsztalyCsoportId)
|
|
SELECT cs.ID
|
|
FROM T_CSOPORT_OSSZES cs
|
|
WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId) AND cs.TOROLT='F'
|
|
UNION
|
|
SELECT cs.C_OSZTALYBONTASID
|
|
FROM T_CSOPORT_OSSZES cs
|
|
WHERE cs.ID = @osztalyCsoportId AND cs.TOROLT='F'
|
|
UNION
|
|
SELECT cs.ID
|
|
FROM T_CSOPORT_OSSZES cs
|
|
WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId AND cs.TOROLT='F'
|
|
UNION
|
|
SELECT @osztalyCsoportId
|
|
END
|
|
|
|
SELECT
|
|
@osszerendelesId = h.ID
|
|
FROM T_ORASORSZAMOZASHALMAZ_OSSZES h
|
|
INNER JOIN T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES oh ON h.ID = oh.C_ORASORSZAMOZASHALMAZID
|
|
AND oh.C_OSZTALYCSOPORTID = @osztalycsoportId
|
|
AND oh.TOROLT='F'
|
|
WHERE h.TOROLT='F'
|
|
--Van összerendelés
|
|
IF @osszerendelesId IS NOT NULL BEGIN
|
|
SELECT
|
|
@tanarSzamit = IIF(C_KOZOSORASORSZAMOZASELTEROTAN = 'T',1,0)
|
|
,@kezdoErtek = ISNULL(C_KEZDOERTEK-1,0)
|
|
FROM T_ORASORSZAMOZASHALMAZ_OSSZES
|
|
WHERE ID = @osszerendelesId AND TOROLT='F'
|
|
|
|
IF @tanarSzamit = 1 BEGIN
|
|
SELECT
|
|
ID
|
|
,ROW_NUMBER() OVER(PARTITION BY C_TANARID,C_TANTARGYID ORDER BY C_ORAKEZDETE,C_NEV)+IIF(C_TANTARGYID = -1, @kezdoErtek, 0) OraSorszam
|
|
FROM(
|
|
SELECT
|
|
tao.ID
|
|
,tao.C_ORAKEZDETE
|
|
,tao.C_TANTARGYID
|
|
,ocs.C_NEV
|
|
,tao.C_TANARID
|
|
FROM T_TANITASIORA_OSSZES tao
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT='F'
|
|
WHERE tao.C_OSZTALYCSOPORTID = @osztalyCsoportId
|
|
AND tao.C_DATUM <= @datum
|
|
AND tao.C_SORSZAMOZANDO = 'T'
|
|
AND tao.TOROLT='F'
|
|
AND tao.C_MEGTARTOTT = 'T'
|
|
AND NOT EXISTS (
|
|
SELECT 1
|
|
FROM T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES
|
|
WHERE C_ORASORSZAMOZASHALMAZID = @osszerendelesId
|
|
AND C_TANTARGYID = tao.C_TANTARGYID
|
|
AND C_OSZTALYCSOPORTID = tao.C_OSZTALYCSOPORTID
|
|
AND TOROLT='F'
|
|
)
|
|
UNION ALL
|
|
SELECT
|
|
tao.ID
|
|
,tao.C_ORAKEZDETE
|
|
,-1 as C_TANTARGYID
|
|
,ocs.C_NEV
|
|
,tao.C_TANARID
|
|
FROM T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES oh
|
|
INNER JOIN T_TANITASIORA_OSSZES tao ON tao.C_TANTARGYID = oh.C_TANTARGYID AND tao.C_OSZTALYCSOPORTID = oh.C_OSZTALYCSOPORTID
|
|
AND tao.C_SORSZAMOZANDO = 'T' AND tao.C_MEGTARTOTT ='T' AND tao.TOROLT='F' AND tao.C_DATUM <= @datum
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.TOROLT='F' AND ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT='F'
|
|
WHERE oh.C_ORASORSZAMOZASHALMAZID = @osszerendelesId
|
|
AND oh.TOROLT='F'
|
|
) MindenOra
|
|
END
|
|
ELSE BEGIN
|
|
SELECT
|
|
ID
|
|
,ROW_NUMBER() OVER(PARTITION BY C_TANTARGYID ORDER BY C_ORAKEZDETE,C_NEV)+IIF(C_TANTARGYID = -1, @kezdoErtek, 0) OraSorszam
|
|
FROM(
|
|
SELECT
|
|
tao.ID
|
|
,tao.C_ORAKEZDETE
|
|
,tao.C_TANTARGYID
|
|
,ocs.C_NEV
|
|
FROM T_TANITASIORA_OSSZES tao
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT='F'
|
|
WHERE tao.C_OSZTALYCSOPORTID = @osztalycsoportId
|
|
AND tao.C_DATUM <= @datum
|
|
AND tao.C_SORSZAMOZANDO = 'T'
|
|
AND tao.C_MEGTARTOTT = 'T'
|
|
AND tao.TOROLT='F'
|
|
AND NOT EXISTS (
|
|
SELECT 1
|
|
FROM T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES
|
|
WHERE C_ORASORSZAMOZASHALMAZID = @osszerendelesId
|
|
AND C_TANTARGYID = tao.C_TANTARGYID
|
|
AND C_OSZTALYCSOPORTID = tao.C_OSZTALYCSOPORTID
|
|
AND TOROLT='F'
|
|
)
|
|
UNION ALL
|
|
SELECT
|
|
tao.ID
|
|
,tao.C_ORAKEZDETE
|
|
,-1 as C_TANTARGYID
|
|
,ocs.C_NEV
|
|
FROM T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES oh
|
|
INNER JOIN T_TANITASIORA_OSSZES tao ON tao.C_TANTARGYID = oh.C_TANTARGYID AND tao.C_OSZTALYCSOPORTID = oh.C_OSZTALYCSOPORTID
|
|
AND tao.C_SORSZAMOZANDO = 'T' AND tao.C_MEGTARTOTT ='T' AND tao.TOROLT='F' AND tao.C_DATUM <= @datum
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.TOROLT='F' AND ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT='F'
|
|
WHERE oh.C_ORASORSZAMOZASHALMAZID = @osszerendelesId AND oh.TOROLT='F'
|
|
) MindenOra
|
|
END
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
IF @osztalybontasEgybe = 0 OR @osztalybontasCsoport = 0 BEGIN
|
|
IF @tanarSzamit = 1 BEGIN
|
|
SELECT
|
|
t.ID AS TanitasiOraId
|
|
,ROW_NUMBER() OVER (PARTITION BY t.C_TANARID, t.C_TANTARGYID ORDER BY t.C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraSorszam
|
|
FROM T_TANITASIORA_OSSZES t
|
|
WHERE t.C_MEGTARTOTT = 'T'
|
|
AND t.C_SORSZAMOZANDO = 'T'
|
|
AND t.C_DATUM <= @datum
|
|
AND t.TOROLT = 'F'
|
|
AND t.C_INTEZMENYID = @intezmenyid
|
|
AND t.C_TANEVID = @tanevId
|
|
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
|
|
END
|
|
ELSE BEGIN
|
|
SELECT
|
|
t.ID AS TanitasiOraId
|
|
,ROW_NUMBER() OVER (PARTITION BY t.C_TANTARGYID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraSorszam
|
|
FROM T_TANITASIORA_OSSZES t
|
|
WHERE t.C_MEGTARTOTT = 'T'
|
|
AND t.C_SORSZAMOZANDO = 'T'
|
|
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
|
|
AND t.C_DATUM <= @datum
|
|
AND t.TOROLT = 'F'
|
|
AND t.C_INTEZMENYID = @intezmenyid
|
|
AND t.C_TANEVID = @tanevId
|
|
END
|
|
END
|
|
ELSE BEGIN
|
|
IF @tanarSzamit = 1 BEGIN
|
|
SELECT
|
|
t.ID AS TanitasiOraId
|
|
,ROW_NUMBER() OVER (PARTITION BY t.C_TANTARGYID,t.C_TANARID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraSorszam
|
|
FROM T_TANITASIORA_OSSZES t
|
|
WHERE t.C_OSZTALYCSOPORTID IN (SELECT ID FROM #kapcsolodoOsztalyCsoportok)
|
|
AND t.C_DATUM <= @datum
|
|
AND t.C_SORSZAMOZANDO = 'T'
|
|
AND t.C_MEGTARTOTT = 'T'
|
|
AND t.TOROLT = 'F'
|
|
AND t.C_INTEZMENYID = @intezmenyid
|
|
AND t.C_TANEVID = @tanevId
|
|
END
|
|
ELSE BEGIN
|
|
SELECT
|
|
t.ID AS TanitasiOraId
|
|
,ROW_NUMBER() OVER (PARTITION BY t.C_TANTARGYID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraSorszam
|
|
FROM T_TANITASIORA_OSSZES t
|
|
WHERE t.C_OSZTALYCSOPORTID IN (SELECT ID FROM #kapcsolodoOsztalyCsoportok)
|
|
AND t.C_DATUM <= @datum
|
|
AND t.C_SORSZAMOZANDO = 'T'
|
|
AND t.C_MEGTARTOTT = 'T'
|
|
AND t.TOROLT = 'F'
|
|
AND t.C_INTEZMENYID = @intezmenyid
|
|
AND t.C_TANEVID = @tanevId
|
|
END
|
|
END
|
|
END
|
|
END
|
|
GO
|