This commit is contained in:
2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View File

@@ -0,0 +1,101 @@
IF OBJECT_ID('[dbo].[sp_CheckTanarOra]') IS NOT NULL BEGIN
DROP PROCEDURE [dbo].[sp_CheckTanarOra]
END
GO
CREATE PROCEDURE [dbo].[sp_CheckTanarOra]
@tanarId int,
@start datetime,
@end datetime,
@IntezmenyId int,
@TanevId int,
@oraszam int = null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @CsakOrarendiOrak BIT = 0; --tan<EFBFBD>r<EFBFBD>k is
DECLARE @IsNapirend BIT = 0; --csak <EFBFBD>rarendi (csenget<EFBFBD>si rendhez k<EFBFBD>t<EFBFBD>tt) <EFBFBD>ra
DECLARE @IdoszakKezdete DATETIME = CAST(@start AS DATE);
DECLARE @IdoszakVege DATETIME = CAST(DATEADD(DAY, 1, @end) AS DATE);
CREATE TABLE #OrarendTable (
Id int
,ORARENDIID int
,Datum datetime
,Bontott char(1)
,Hetirend int
,HetNapja int
,HetSorszam int
,ErvenyessegKezdete datetime
,ErvenyessegVege datetime
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,TargyNev nvarchar(300)
,TargyNevForMobile nvarchar(300)
,TargykategoriaID int
,Megtartott char(1)
,CsengetesiRendOraID int
,CsengetesiRendID int
,MaxNapiOraszam int
,OsztalyNev nvarchar(255)
,TanevRendOsztalyCsoportId int
,MegjelenesOka nvarchar(300)
,TanarNev nvarchar(255)
,TeremNev nvarchar(255)
,TeremId int
,OraTipus nvarchar(200)
,Hianyzas char(1)
,Keses char(1)
,Ures char(1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar(255)
,HelyettesitesId int
,TanarID int
,AdminAltalKiirt char(1)
,GroupId int
,Tema nvarchar(max)
,TantargyId int
,OsztCsopId int
,INDEX IX01 CLUSTERED (OraTipus, OraKezdete, OraVege)
)
INSERT INTO #OrarendTable (
Id,ORARENDIID,Datum,Bontott,Hetirend,HetNapja,HetSorszam,ErvenyessegKezdete,ErvenyessegVege,OraKezdete,OraVege,Oraszam,
TargyNev,TargyNevForMobile,TargykategoriaID,Megtartott,CsengetesiRendOraID,CsengetesiRendID,MaxNapiOraszam,OsztalyNev,TanevRendOsztalyCsoportId,
MegjelenesOka,TanarNev,TeremNev,TeremId,OraTipus,Hianyzas,Keses,Ures,HelyettesitoTanarID,HelyettesitoTanarNev,HelyettesitesId,TanarID,AdminAltalKiirt,GroupId,Tema,TantargyId,OsztCsopId)
EXEC sp_GetOrarend
@pIntezmenyId = @IntezmenyId
,@pTanevId = @TanevId
,@pIdoszakKezdete = @IdoszakKezdete
,@pIdoszakVege = @IdoszakVege
,@pTanarId = @tanarId
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = NULL
,@pTanuloId = NULL
,@pTantargyId = NULL
,@pTeremId = NULL
,@pCsakOrarendiOrak = @CsakOrarendiOrak
,@pIsNapirend = @IsNapirend
IF(@oraszam IS NULL)
BEGIN
SELECT ORARENDIID AS C_ORARENDIORAID
FROM #OrarendTable
WHERE
OraTipus = 'OrarendiOra'
AND OraKezdete = @start
AND OraVege = @end
END
ELSE
BEGIN
SELECT ORARENDIID AS C_ORARENDIORAID
FROM #OrarendTable
WHERE
OraTipus = 'OrarendiOra'
AND Oraszam = @oraszam
END
END

View File

@@ -0,0 +1,173 @@
IF OBJECT_ID('dbo.sp_GetHelyettesitesekAjanlasa') IS NOT NULL BEGIN
DROP PROCEDURE dbo.sp_GetHelyettesitesekAjanlasa
END
GO
CREATE PROCEDURE [dbo].[sp_GetHelyettesitesekAjanlasa]
@intezmenyId int,
@tanevId int,
@pHelyettesitettOrarendiOraId int,
@pHelyettesitesDatuma date
AS
BEGIN
SET NOCOUNT ON;
DECLARE @tantargyId int
,@osztalyCsoportId int
,@helyettesitettTanarId int
,@aktualisHetirend int
SELECT @aktualisHetirend = C_HETIREND FROM T_NAPTARINAP WHERE C_NAPDATUMA = CAST(@pHelyettesitesDatuma AS DATE) AND C_TANEVID = @tanevId
SELECT
@tantargyId = C_TANTARGYID,
@osztalyCsoportId = C_OSZTALYCSOPORTID,
@helyettesitettTanarId = C_TANARID
FROM T_ORARENDIORA
WHERE ID = @pHelyettesitettOrarendiOraId
DECLARE @Helyettesitesek TABLE (Sorrend int, TanarId int, HelyettesitesTipusId int, TantargyId int, OsztalyCsoportId int, OsszevontOrarendiOraId int)
DECLARE @KapcsolodoOsztalyCsoportok TABLE (Id int, Oka nvarchar(100))
INSERT INTO @KapcsolodoOsztalyCsoportok
SELECT * FROM fnGetKapcsolodoOsztalycsoportok(@osztalyCsoportId)
DECLARE @UtkozoOrak TABLE (TanarId int, OrarendiOraId int, TantargyId int, HelyettesitettTanarId int)
INSERT INTO @UtkozoOrak
SELECT
ISNULL(hisz.C_HELYETTESTANAROKID, oo.c_TANARID),
oo.ID, oo.C_TANTARGYID,
IIF(hisz.C_HELYETTESTANAROKID IS NOT NULL, oo.C_TANARID, NULL)
FROM T_ORARENDIORA oo
LEFT JOIN T_HELYETTESITESIIDOSZAK hisz ON
oo.ID = hisz.C_HELYETTESITETTORARENDID AND
hisz.C_HELYETTESITESNAPJA = @pHelyettesitesDatuma
INNER JOIN (SELECT * FROM T_ORARENDIORA WHERE ID = @pHelyettesitettOrarendiOraId) helyettesitettOra ON
(
oo.C_HETIREND = helyettesitettOra.C_HETIREND OR
oo.C_HETIREND = 1554 OR (helyettesitettOra.C_HETIREND = 1554 AND oo.C_HETIREND = @aktualisHetirend)
)
AND oo.C_HETNAPJA = helyettesitettOra.C_HETNAPJA
AND CAST(helyettesitettOra.C_ORAVEGE AS time) > CAST(oo.C_ORAKEZDETE AS time)
AND CAST(helyettesitettOra.C_ORAKEZDETE AS time) < CAST(oo.C_ORAVEGE AS time)
WHERE
(
(oo.C_ORAERVENYESSEGKEZDETE <= @pHelyettesitesDatuma AND oo.C_ORAERVENYESSEGVEGE > @pHelyettesitesDatuma) OR
(oo.C_ORAERVENYESSEGKEZDETE = oo.C_ORAERVENYESSEGVEGE AND oo.C_ORAERVENYESSEGKEZDETE = @pHelyettesitesDatuma)
) AND
oo.TOROLT = 'F' AND
oo.C_INTEZMENYID = @intezmenyId AND
oo.C_TANEVID = @tanevId
--nincs órája, tanítja a tárgyat, tanítja az ocs-t
INSERT INTO @Helyettesitesek (Sorrend, TanarId, HelyettesitesTipusId, TantargyId, OsztalyCsoportId, OsszevontOrarendiOraId)
SELECT DISTINCT
1,
f.C_TANARID,
1494,
null,
null,
null --szakszerű
FROM T_FOGLALKOZAS f
WHERE NOT EXISTS (SELECT 1 FROM @UtkozoOrak u WHERE u.TanarId = f.C_TANARID)
AND f.C_TANTARGYID = @tantargyId
AND EXISTS (SELECT 1 FROM @KapcsolodoOsztalyCsoportok kocs WHERE kocs.ID = f.C_OSZTALYCSOPORTID)
AND f.TOROLT = 'F' AND f.C_INTEZMENYID = @intezmenyId AND f.C_TANEVID = @tanevId
--nincs órája, tanítja a tárgyat
INSERT INTO @Helyettesitesek (Sorrend, TanarId, HelyettesitesTipusId, TantargyId, OsztalyCsoportId, OsszevontOrarendiOraId)
SELECT DISTINCT 2, f.C_TANARID, 1494, null, null, null --szakszerű
FROM T_FOGLALKOZAS f
WHERE NOT EXISTS (SELECT 1 FROM @UtkozoOrak u WHERE u.TanarId = f.C_TANARID)
AND f.C_TANTARGYID = @tantargyId
AND NOT EXISTS (SELECT 1 FROM @KapcsolodoOsztalyCsoportok kocs WHERE kocs.ID = f.C_OSZTALYCSOPORTID)
AND NOT EXISTS (SELECT 1 FROM @Helyettesitesek h WHERE h.TanarId = f.C_TANARID)
AND f.TOROLT = 'F' AND f.C_INTEZMENYID = @intezmenyId AND f.C_TANEVID = @tanevId
--nincs órája, ofő
INSERT INTO @Helyettesitesek (Sorrend, TanarId, HelyettesitesTipusId, TantargyId, OsztalyCsoportId, OsszevontOrarendiOraId)
SELECT 3, o.C_OSZTALYFONOKID, 1495, null, null, null --nem szakszerű
FROM T_OSZTALY o
INNER JOIN @KapcsolodoOsztalyCsoportok kocs ON o.ID = kocs.Id
WHERE NOT EXISTS (SELECT 1 FROM @Helyettesitesek h WHERE h.TanarId = o.C_OSZTALYFONOKID)
AND NOT EXISTS (SELECT 1 FROM @UtkozoOrak u WHERE u.TanarId = o.C_OSZTALYFONOKID)
AND o.TOROLT = 'F' AND o.C_ALINTEZMENYID = @intezmenyId AND o.C_ALTANEVID = @tanevId
--nincs órája, tanítja az ocs-t
INSERT INTO @Helyettesitesek (Sorrend, TanarId, HelyettesitesTipusId, TantargyId, OsztalyCsoportId, OsszevontOrarendiOraId)
SELECT DISTINCT 4, f.C_TANARID, 1495, null, null, null --nem szakszerű
FROM T_FOGLALKOZAS f
WHERE EXISTS (SELECT 1 FROM @KapcsolodoOsztalyCsoportok kocs WHERE kocs.Id = f.C_OSZTALYCSOPORTID)
AND NOT EXISTS (SELECT 1 FROM @Helyettesitesek h WHERE h.TanarId = f.C_TANARID)
AND NOT EXISTS (SELECT 1 FROM @UtkozoOrak u WHERE u.TanarId = f.C_TANARID)
AND f.TOROLT = 'F' AND f.C_INTEZMENYID = @intezmenyId AND f.C_TANEVID = @tanevId
--nincs órája
INSERT INTO @Helyettesitesek (Sorrend, TanarId, HelyettesitesTipusId, TantargyId, OsztalyCsoportId, OsszevontOrarendiOraId)
SELECT DISTINCT 5, a.ID, 1495, null, null, null --nem szakszerű
FROM T_ALKALMAZOTT a
WHERE NOT EXISTS (SELECT 1 FROM @Helyettesitesek h WHERE h.TanarId = a.ID)
AND NOT EXISTS (SELECT 1 FROM @UtkozoOrak u WHERE u.TanarId = a.ID)
AND a.TOROLT = 'F' AND a.C_ALINTEZMENYID = @intezmenyId AND a.C_ALTANEVID = @tanevId
--6: van órája, tanít kapcsolódó ocs-t, óráján ugyan az a tantárgy, óráján ugyaz az az évfolyam
--7: van órája, tanít kapcsolódó ocs-t, óráján ugyan az a tantárgy
--8: van órája, tanít kapcsolódó ocs-t
INSERT INTO @Helyettesitesek (Sorrend, TanarId, HelyettesitesTipusId, TantargyId, OsztalyCsoportId, OsszevontOrarendiOraId)
SELECT DISTINCT
CASE
WHEN u.TANTARGYID = @tantargyId
THEN CASE WHEN ocs.C_EVFOLYAMTIPUSA = (SELECT C_EVFOLYAMTIPUSA FROM T_OSZTALYCSOPORT WHERE ID = @osztalyCsoportId) THEN 6 ELSE 7 END
ELSE 8
END, a.ID, 1496, oo.C_TANTARGYID, oo.C_OSZTALYCSOPORTID, u.OrarendiOraId --óraösszevonás
FROM T_ALKALMAZOTT a
INNER JOIN @UtkozoOrak u ON u.TanarId = a.ID
INNER JOIN T_ORARENDIORA oo ON oo.ID = u.OrarendiOraId
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = oo.C_OSZTALYCSOPORTID
WHERE NOT EXISTS (SELECT 1 FROM @Helyettesitesek h WHERE h.TanarId = a.ID)
AND EXISTS (SELECT 1 FROM T_FOGLALKOZAS f WHERE f.C_TANARID = a.ID AND EXISTS (SELECT 1 FROM @KapcsolodoOsztalyCsoportok kocs WHERE kocs.Id = f.C_OSZTALYCSOPORTID))
AND a.TOROLT = 'F' AND a.C_ALINTEZMENYID = @intezmenyId AND a.C_ALTANEVID = @tanevId
--van órája
INSERT INTO @Helyettesitesek (Sorrend, TanarId, HelyettesitesTipusId, TantargyId, OsztalyCsoportId, OsszevontOrarendiOraId)
SELECT DISTINCT 9, a.ID, 1496, oo.C_TANTARGYID, oo.C_OSZTALYCSOPORTID, u.OrarendiOraId --óraösszevonás
FROM T_ALKALMAZOTT a
INNER JOIN @UtkozoOrak u ON u.TanarId = a.ID
INNER JOIN T_ORARENDIORA oo ON oo.ID = u.OrarendiOraId
WHERE
NOT EXISTS (SELECT 1 FROM @Helyettesitesek h WHERE h.TanarId = a.ID) AND
a.TOROLT = 'F' AND
a.C_ALINTEZMENYID = @intezmenyId AND
a.C_ALTANEVID = @tanevId
SELECT DISTINCT
NULL AS ID
,h.Sorrend AS Sorrend
,h.TanarId AS TanarId
,h.HelyettesitesTipusId AS HelyettesitesTipusId
,h.TantargyId AS TantargyId
,h.OsztalyCsoportId AS OsztalyCsoportId
,f.C_NYOMTATASINEV AS TanarNev
,t.C_NEV AS TantargyNev
,ocs.C_NEV AS OsztalycsoportNev
,@pHelyettesitettOrarendiOraId AS HelyettesitettOrarendiOraId
,@pHelyettesitesDatuma AS HelyettesitesDatuma
FROM @Helyettesitesek h
INNER JOIN T_FELHASZNALO f ON
f.ID = h.TanarId
INNER JOIN T_MUNKAUGYIADATOK ma ON
ma.C_ALKALMAZOTTID = h.TanarId AND
ma.C_BETOLTETLENALLASHELY = 'F' AND
ma.C_TARTOSHELYETTESITES = 'F' AND
@pHelyettesitesDatuma BETWEEN C_ALKALMAZASKEZDETE AND ISNULL(C_ALKALMAZASMEGSZUNESE,GETDATE())
LEFT JOIN T_TANTARGY t ON
t.ID = h.TantargyId
LEFT JOIN T_OSZTALYCSOPORT ocs ON
ocs.ID = h.OsztalyCsoportId
WHERE
NOT EXISTS (SELECT 1 FROM @UtkozoOrak u WHERE u.HelyettesitettTanarId = h.TanarId) AND
h.TanarId <> @helyettesitettTanarId
ORDER BY Sorrend, TanarNev ASC
END
GO

View File

@@ -0,0 +1,104 @@
IF OBJECT_ID('sp_GetNemMegtartottOrakSzamaByHet') IS NOT NULL BEGIN
DROP PROCEDURE sp_GetNemMegtartottOrakSzamaByHet
END
GO
CREATE PROCEDURE sp_GetNemMegtartottOrakSzamaByHet
@intezmenyId int,
@tanevId int,
@osztalyId int,
@hetSorszam int
AS
BEGIN
DECLARE @CsakOrarendiOrak bit = 0;
DECLARE @IdoszakKezdete datetime;
DECLARE @IdoszakVege datetime;
CREATE TABLE #OrarendTable (
Id int
,ORARENDIID int
,Datum datetime
,Bontott char(1)
,Hetirend int
,HetNapja int
,HetSorszam int
,ErvenyessegKezdete datetime
,ErvenyessegVege datetime
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,TargyNev nvarchar(300)
,TargyNevForMobile nvarchar(300)
,TargykategoriaID int
,Megtartott char(1)
,CsengetesiRendOraID int
,CsengetesiRendID int
,MaxNapiOraszam int
,OsztalyNev nvarchar(255)
,TanevRendOsztalyCsoportId int
,MegjelenesOka nvarchar(300)
,TanarNev nvarchar(255)
,TeremNev nvarchar(255)
,TeremId int
,OraTipus nvarchar(200)
,Hianyzas char(1)
,Keses char(1)
,Ures char(1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar(255)
,HelyettesitesId int
,TanarID int
,AdminAltalKiirt char(1)
,GroupId int
,Tema nvarchar(max)
,TantargyId int
,OsztCsopId int
)
SELECT
@IdoszakKezdete = nh.C_HETKEZDONAPJA
,@IdoszakVege = nh.C_HETUTOLSONAPJA
FROM T_NAPTARIHET nh
WHERE nh.C_INTEZMENYID = @intezmenyId
AND nh.C_TANEVID = @tanevId
AND nh.TOROLT = 'F'
AND nh.C_HETSORSZAMA = @hetSorszam
INSERT INTO #OrarendTable (
Id,ORARENDIID,Datum,Bontott,Hetirend,HetNapja,HetSorszam,ErvenyessegKezdete,ErvenyessegVege,OraKezdete,OraVege,Oraszam,
TargyNev,TargyNevForMobile,TargykategoriaID,Megtartott,CsengetesiRendOraID,CsengetesiRendID,MaxNapiOraszam,OsztalyNev,TanevRendOsztalyCsoportId,
MegjelenesOka,TanarNev,TeremNev,TeremId,OraTipus,Hianyzas,Keses,Ures,HelyettesitoTanarID,HelyettesitoTanarNev,HelyettesitesId,TanarID,AdminAltalKiirt,GroupId,Tema,TantargyId,OsztCsopId)
EXEC sp_GetOrarend
@pIntezmenyId = @IntezmenyId
,@pTanevId = @TanevId
,@pIdoszakKezdete = @IdoszakKezdete
,@pIdoszakVege = @IdoszakVege
,@pTanarId = NULL
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = @osztalyId
,@pTanuloId = NULL
,@pTantargyId = NULL
,@pTeremId = NULL
,@pCsakOrarendiOrak = @CsakOrarendiOrak
,@pIsNapirend = NULL
SELECT DISTINCT
tmp.Id AS Id
,tmp.HetSorszam AS HetSzama
,tmp.Datum AS Datum
,tmp.HetNapja AS HetNapja
,tmp.Oraszam AS Oraszam
,tmp.OsztalyNev AS OsztalyNev
,tmp.TargyNev AS TargyNev
,ISNULL(tmp.HelyettesitoTanarNev, tmp.TanarNev) AS TanarNev
,tmp.OraKezdete AS OraKezdete
,tmp.OraVege AS OraVege
,tmp.CsengetesiRendID AS CsengetesiRend
FROM #OrarendTable tmp
WHERE tmp.OraTipus = 'OrarendiOra'
AND tmp.HetSorszam = @hetSorszam
AND tmp.OraVege < GETDATE()
ORDER BY tmp.Datum ASC,tmp.Oraszam ASC
END
GO

View File

@@ -0,0 +1,95 @@
IF OBJECT_ID('sp_GetNemMegtartottOrakSzamaPerHet') IS NOT NULL
BEGIN
DROP PROCEDURE sp_GetNemMegtartottOrakSzamaPerHet
END
GO
CREATE PROCEDURE [sp_GetNemMegtartottOrakSzamaPerHet]
@osztalyId INT,
@intezmenyId INT,
@tanevId INT
AS
BEGIN
DECLARE @CsakOrarendiOrak BIT = 0;
DECLARE @IdoszakKezdete DATETIME;
DECLARE @IdoszakVege DATETIME = GETDATE()
CREATE TABLE #OrarendTable (
Id int
,ORARENDIID int
,Datum datetime
,Bontott char(1)
,Hetirend int
,HetNapja int
,HetSorszam int
,ErvenyessegKezdete datetime
,ErvenyessegVege datetime
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,TargyNev nvarchar(300)
,TargyNevForMobile nvarchar(300)
,TargykategoriaID int
,Megtartott char(1)
,CsengetesiRendOraID int
,CsengetesiRendID int
,MaxNapiOraszam int
,OsztalyNev nvarchar(255)
,TanevRendOsztalyCsoportId int
,MegjelenesOka nvarchar(300)
,TanarNev nvarchar(255)
,TeremNev nvarchar(255)
,TeremId int
,OraTipus nvarchar(200)
,Hianyzas char(1)
,Keses char(1)
,Ures char(1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar(255)
,HelyettesitesId int
,TanarID int
,AdminAltalKiirt char(1)
,GroupId int
,Tema nvarchar(max)
,TantargyId int
,OsztCsopId int
)
SELECT
@IdoszakKezdete = nh.C_HETKEZDONAPJA
FROM T_NAPTARIHET nh
WHERE
nh.C_INTEZMENYID = @intezmenyId AND nh.C_TANEVID = @tanevId AND nh.TOROLT = 'F'
AND nh.C_HETSORSZAMA = 1
INSERT INTO #OrarendTable (
Id,ORARENDIID,Datum,Bontott,Hetirend,HetNapja,HetSorszam,ErvenyessegKezdete,ErvenyessegVege,OraKezdete,OraVege,Oraszam,
TargyNev,TargyNevForMobile,TargykategoriaID,Megtartott,CsengetesiRendOraID,CsengetesiRendID,MaxNapiOraszam,OsztalyNev,TanevRendOsztalyCsoportId,
MegjelenesOka,TanarNev,TeremNev,TeremId,OraTipus,Hianyzas,Keses,Ures,HelyettesitoTanarID,HelyettesitoTanarNev,HelyettesitesId,TanarID,AdminAltalKiirt,GroupId,Tema,TantargyId,OsztCsopId)
EXEC sp_GetOrarend
@pIntezmenyId = @IntezmenyId
,@pTanevId = @TanevId
,@pIdoszakKezdete = @IdoszakKezdete
,@pIdoszakVege = @IdoszakVege
,@pTanarId = NULL
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = @osztalyId
,@pTanuloId = NULL
,@pTantargyId = NULL
,@pTeremId = NULL
,@pCsakOrarendiOrak = @CsakOrarendiOrak
,@pIsNapirend = NULL
SELECT DISTINCT
tmp.HetSorszam AS HetSorszam
,COUNT(id) AS NemNaplozottOrakSzama
,@osztalyId AS OsztalyID
FROM #OrarendTable tmp
WHERE tmp.OraTipus = 'OrarendiOra'
AND tmp.OraVege < GETDATE()
GROUP BY tmp.HetSorszam
ORDER BY tmp.HetSorszam
END
GO

View File

@@ -0,0 +1,89 @@
DROP PROCEDURE IF EXISTS sp_GetNemNaplozottOrarendiOrak
GO
CREATE PROCEDURE sp_GetNemNaplozottOrarendiOrak
@IntezmenyId int
,@TanevId int
,@IdoszakKezdete datetime
,@IdoszakVege datetime
,@TanarId int = NULL
,@OsztalyCsoportId int = NULL
,@TantargyId int = NULL
AS
BEGIN
SET NOCOUNT ON;
SET DATEFIRST 1
DECLARE @CsakOrarendiOrak bit = 0;
DECLARE @OrarendTable TABLE (
Id int
,ORARENDIID INT
,Datum datetime
,Bontott char(1)
,Hetirend int
,HetNapja int
,HetSorszam int
,ErvenyessegKezdete datetime
,ErvenyessegVege datetime
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,TargyNev nvarchar(300)
,TargyNevForMobile nvarchar(300)
,TargykategoriaID int
,Megtartott char(1)
,CsengetesiRendOraID int
,CsengetesiRendID int
,MaxNapiOraszam int
,OsztalyNev nvarchar(255)
,TanevRendOsztalyCsoportId int
,MegjelenesOka nvarchar(300)
,TanarNev nvarchar(255)
,TeremNev nvarchar(255)
,TeremId int
,OraTipus nvarchar(200)
,Hianyzas char(1)
,Keses char(1)
,Ures char(1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar(255)
,HelyettesitesId int
,TanarID int
,AdminAltalKiirt char(1)
,GroupId int
,Tema nvarchar(max)
,TantargyId int
,OsztCsopId int
)
INSERT INTO @OrarendTable (
Id,ORARENDIID,Datum,Bontott,Hetirend,HetNapja,HetSorszam,ErvenyessegKezdete,ErvenyessegVege,OraKezdete,OraVege,Oraszam,
TargyNev,TargyNevForMobile,TargykategoriaID,Megtartott,CsengetesiRendOraID,CsengetesiRendID,MaxNapiOraszam,OsztalyNev,TanevRendOsztalyCsoportId,
MegjelenesOka,TanarNev,TeremNev,TeremId,OraTipus,Hianyzas,Keses,Ures,HelyettesitoTanarID,HelyettesitoTanarNev,HelyettesitesId,TanarID,AdminAltalKiirt,GroupId,Tema,TantargyId,OsztCsopId)
EXEC sp_GetOrarend
@pIntezmenyId = @IntezmenyId
,@pTanevId = @TanevId
,@pIdoszakKezdete = @IdoszakKezdete
,@pIdoszakVege = @IdoszakVege
,@pTanarId = @TanarId
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = @OsztalyCsoportId
,@pTanuloId = NULL
,@pTantargyId = @TantargyId
,@pTeremId = NULL
,@pCsakOrarendiOrak = @CsakOrarendiOrak
,@pIsNapirend = NULL
SELECT DISTINCT
Id, ORARENDIID, Bontott, Hetirend, HetNapja,HetSorszam, ErvenyessegKezdete, ErvenyessegVege, OraKezdete, CONVERT(date, OraKezdete) as OraKezdeteDate, CONVERT(varchar(5), OraKezdete, 108) as OraKezdeteTimeText, OraVege, IIF(tmp.CsengetesiRendID IS NOT NULL, tmp.Oraszam, NULL) as Oraszam,
TargyNev, TargyNevForMobile,
TargykategoriaID, Megtartott, CsengetesiRendOraID, CsengetesiRendID,MaxNapiOraszam, OsztalyNev, MegjelenesOka, TanarNev, TeremNev,
OraTipus, Hianyzas, Keses, Ures, HelyettesitoTanarID, HelyettesitoTanarNev, HelyettesitesId, TanarID, AdminAltalKiirt, GroupId, Tema, TantargyId,
OsztCsopId, IIF(tmp.HelyettesitoTanarID IS NOT NULL, tmp.TanarNev, NULL) as HelyettesitettPedagogusNev, CONVERT(nvarchar(25), OraKezdete, 102) as OraKezdeteDateST,
DATEPART(w, OraKezdete) + 1407 AS HetNapjaValos
FROM @OrarendTable tmp
WHERE tmp.OraTipus = 'OrarendiOra'
END
GO

View File

@@ -0,0 +1,518 @@
-- =============================================
-- Author: Telek Ákos
-- Create date: 2018.01.15.
-- Description: Órarend lekérdezése
-- =============================================
DROP PROCEDURE IF EXISTS [dbo].[sp_GetOrarend]
GO
CREATE PROCEDURE [dbo].[sp_GetOrarend]
@pIntezmenyId int
,@pTanevId int
,@pIdoszakKezdete datetime
,@pIdoszakVege datetime
,@pTanarId int = NULL
,@pIsHelyettesitesNelkul bit = 0
,@pOsztalyCsoportId int = NULL
,@pTanuloId int = NULL
,@pTantargyId int = NULL
,@pTeremId int = NULL
,@pCsakOrarendiOrak bit
,@pIsNapirend bit = 0 /*0 csak orarendi ora, 1 csak napirend, NULL mindkettő*/
AS
BEGIN /*TODO:Tobb Osztaly*//*OM-1575*/
SET NOCOUNT ON;
DECLARE @sql nvarchar(max) = ''
CREATE TABLE #OsztalyCsoportok (
Id int
,Nev nvarchar(255)
,Oka nvarchar(50)
,IsVegzos char(1)
,IdoszakKezdete datetime
,IdoszakVege datetime
,INDEX IX1 CLUSTERED(Id, Nev, IsVegzos)
);
CREATE TABLE #NaptariNapok (
Datum datetime
,HetirendId int
,HetNapjaId int
,OrarendiNap char(1)
,OsztalyCsoportId int
,HetSorszam int
,CsengetesiRendId int
,Nev nvarchar(255)
,Oka nvarchar(50)
,IsVegzos char(1)
,IdoszakKezdete datetime
,IdoszakVege datetime
,IsEgyediNap char(1) COLLATE DATABASE_DEFAULT
,PRIMARY KEY CLUSTERED (Datum, OsztalyCsoportId, HetirendId, HetNapjaId)
);
CREATE TABLE #OrarendTable (
Id int
,ORARENDIID int
,Datum datetime
,Bontott char(1)
,Hetirend int
,HetNapja int
,HetSorszam int
,ErvenyessegKezdete datetime
,ErvenyessegVege datetime
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,TargyNev nvarchar(300)
,TargyNevForMobile nvarchar(300)
,TargykategoriaID int
,Megtartott char(1)
,CsengetesiRendOraID int
,CsengetesiRendID int
,MaxNapiOraszam int
,OsztalyNev nvarchar(255)
,TanevRendOsztalyCsoportId int
,MegjelenesOka nvarchar(300)
,TanarNev nvarchar(255)
,TeremNev nvarchar(255)
,TeremId int
,OraTipus nvarchar(200)
,Hianyzas char(1)
,Keses char(1)
,Ures char(1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar(255)
,HelyettesitesId int
,TanarID int
,AdminAltalKiirt char(1)
,GroupId int
,Tema nvarchar(max)
,TantargyId int
,OsztCsopId int
,INDEX IX1 CLUSTERED(Datum, HetNapja, Oraszam, TanevRendOsztalyCsoportId, TantargyId, TanarID)
);
/* Változók deklarálása */
SET @sql += N'
DECLARE
@KezdoHet int = DATEPART( ISO_WEEK, @pIdoszakKezdete)
,@ZaroHet int = DATEPART( ISO_WEEK, @pIdoszakVege);
DECLARE @VegzosUtolsoTanitasiNap datetime;
SELECT @VegzosUtolsoTanitasiNap = C_DATUM
FROM T_TANEVRENDJE_OSSZES
WHERE TOROLT = ''F''
AND C_TANEVID = @pTanevId
AND C_NAPTIPUSA = 1402
DECLARE @IsVegzosEvfolyam char(1)
'
/* A kapcsolódó osztálycsoportok összegyűjtése */
SET @sql += N'
IF @pOsztalyCsoportId IS NOT NULL BEGIN
SELECT @IsVegzosEvfolyam = C_VEGZOSEVFOLYAM
FROM T_OSZTALYCSOPORT_OSSZES
WHERE ID = @pOsztalyCsoportId
INSERT INTO #OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakKezdete, IdoszakVege)
SELECT
kocs.ID, ocs.C_NEV,
kocs.OKA, ocs.C_VEGZOSEVFOLYAM, kocs.Kezdete,
CASE
WHEN ocs.C_VEGZOSEVFOLYAM = ''T'' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND kocs.Vege > @VegzosUtolsoTanitasiNap THEN @VegzosUtolsoTanitasiNap + 1
WHEN kocs.Vege < @pIdoszakVege THEN kocs.Vege
ELSE @pIdoszakVege
END
FROM dbo.fnGetKopcsolodoOsztalyCsoportokByDateRange(@pOsztalyCsoportId, @pIdoszakKezdete, @pIdoszakVege, @pIntezmenyId, @pTanevId) kocs
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = kocs.ID AND ocs.TOROLT = ''F''
END
ELSE BEGIN
IF @pTanuloId IS NOT NULL BEGIN
SELECT @IsVegzosEvfolyam = ocs.C_VEGZOSEVFOLYAM
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
WHERE EXISTS (SELECT 1 FROM T_OSZTALY_OSSZES o WHERE o.ID = ocs.ID)
AND tcs.C_TANULOID = @pTanuloId AND tcs.TOROLT = ''F''
AND tcs.C_BELEPESDATUM <= @pIdoszakVege
AND (tcs.C_KILEPESDATUM > @pIdoszakKezdete OR tcs.C_KILEPESDATUM IS NULL)
INSERT INTO #OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakKezdete, IdoszakVege)
SELECT
tcs.C_OSZTALYCSOPORTID
,ocs.C_NEV
,'''' AS Oka
,@IsVegzosEvfolyam
,IIF(tcs.C_BELEPESDATUM < @pIdoszakKezdete, @pIdoszakKezdete, tcs.C_BELEPESDATUM)
,CASE
WHEN @pIdoszakVege <= @VegzosUtolsoTanitasiNap AND @pIdoszakVege <= ISNULL(tcs.C_KILEPESDATUM, @pIdoszakVege)
THEN @pIdoszakVege
WHEN @IsVegzosEvfolyam = ''T'' AND @VegzosUtolsoTanitasiNap <= @pIdoszakVege AND @VegzosUtolsoTanitasiNap <= ISNULL(tcs.C_KILEPESDATUM, @pIdoszakVege)
THEN @VegzosUtolsoTanitasiNap
ELSE ISNULL(tcs.C_KILEPESDATUM, @pIdoszakVege)
END
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND ocs.TOROLT = ''F''
WHERE tcs.C_TANULOID = @pTanuloId AND tcs.TOROLT = ''F''
AND tcs.C_BELEPESDATUM <= @pIdoszakVege
AND (tcs.C_KILEPESDATUM > @pIdoszakKezdete OR tcs.C_KILEPESDATUM IS NULL)
END
--Performancia noveles miatt
ELSE IF @pTanarId IS NOT NULL BEGIN
INSERT INTO #OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakKezdete, IdoszakVege)
SELECT
ID
,ocs.C_NEV
,''''
,ocs.C_VEGZOSEVFOLYAM
,@pIdoszakKezdete
,IIF(ocs.C_VEGZOSEVFOLYAM = ''T'' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND @pIdoszakVege > @VegzosUtolsoTanitasiNap, @VegzosUtolsoTanitasiNap + 1, @pIdoszakVege)
FROM (
SELECT
oo.C_OSZTALYCSOPORTID
FROM T_ORARENDIORA_OSSZES oo
WHERE oo.C_TANARID = @pTanarId
AND oo.C_ORAERVENYESSEGKEZDETE <= @pIdoszakVege
AND oo.C_ORAERVENYESSEGVEGE >= @pIdoszakKezdete
AND oo.TOROLT = ''F''
UNION
SELECT
oo.C_OSZTALYCSOPORTID
FROM T_HELYETTESITESIIDOSZAK_OSSZES hi
INNER JOIN T_ORARENDIORA_OSSZES oo ON oo.ID = hi.C_HELYETTESITETTORARENDID AND oo.TOROLT = ''F''
WHERE hi.C_HELYETTESTANAROKID = @pTanarId
AND hi.C_HELYETTESITESNAPJA >= @pIdoszakKezdete
AND hi.C_HELYETTESITESNAPJA <= @pIdoszakVege
AND hi.TOROLT = ''F''
UNION
SELECT
tno.C_OSZTALYCSOPORTID
FROM T_TANITASIORA_OSSZES tno
WHERE tno.C_HELYETTESITOTANARID = @pTanarId
AND tno.C_DATUM <= @pIdoszakVege
AND tno.C_DATUM >= @pIdoszakKezdete
AND tno.TOROLT = ''F''
UNION
SELECT
tno.C_OSZTALYCSOPORTID
FROM T_TANITASIORA_OSSZES tno
WHERE tno.C_TANARID = @pTanarId
AND tno.C_DATUM <= @pIdoszakVege
AND tno.C_DATUM >= @pIdoszakKezdete
AND tno.TOROLT = ''F''
) x
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = x.C_OSZTALYCSOPORTID
END
--Performancia noveles miatt
ELSE BEGIN
INSERT INTO #OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakKezdete, IdoszakVege)
SELECT ID, C_NEV, '''' AS Oka, C_VEGZOSEVFOLYAM, @pIdoszakKezdete, IIF(C_VEGZOSEVFOLYAM = ''T'' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND @pIdoszakVege > @VegzosUtolsoTanitasiNap, @VegzosUtolsoTanitasiNap + 1, @pIdoszakVege)
FROM T_OSZTALYCSOPORT_OSSZES
WHERE C_TANEVID = @pTanevId AND TOROLT = ''F''
END
END
'
/* A naptári napok összegyűjtése tanév rendje alapján */
SET @sql += N'
INSERT INTO #NaptariNapok (
Datum
,HetirendId
,HetNapjaId
,OrarendiNap
,OsztalyCsoportId
,HetSorszam
,CsengetesiRendId
,Nev
,Oka
,IsVegzos
,IdoszakKezdete
,IdoszakVege
,IsEgyediNap
) SELECT
nn.Datum
,ISNULL(tr.HetirendId, nn.HetirendId) AS HetirendId
,ISNULL(tr.HetNapjaId, nn.HetNapjaId) AS HetNapjaId
,ISNULL(tr.OrarendiNap, nn.OrarendiNap) AS OrarendiNap
,nn.OsztalyCsoportId
,ISNULL(tr.HetSorszam, nn.HetSorszam) AS HetSorszam
,ISNULL(tr.CsengetesiRendId, nn.CsengetesiRendId) AS CsengetesiRendId
,ISNULL(tr.Nev, nn.Nev)
,ISNULL(tr.Oka, nn.Oka)
,ISNULL(tr.IsVegzos, nn.IsVegzos)
,ISNULL(tr.IdoszakKezdete, nn.IdoszakKezdete)
,ISNULL(tr.IdoszakVege, nn.IdoszakVege)
,COALESCE(tr.IsEgyediNap, nn.IsEgyediNap, ''F'')
FROM (
SELECT
nn.C_NAPDATUMA AS Datum
,nn.C_HETIREND AS HetirendId
,nn.C_HETNAPJA AS HetNapjaId
,nn.C_ORARENDINAP AS OrarendiNap
,ocs.ID AS OsztalyCsoportId
,nn.C_HETSORSZAMA AS HetSorszam
,tr.C_CSENGETESIRENDID AS CsengetesiRendId
,ocs.Nev
,ocs.Oka
,ocs.IsVegzos
,ocs.IdoszakKezdete
,ocs.IdoszakVege
,tr.C_EGYEDINAP AS IsEgyediNap
FROM T_NAPTARINAP_OSSZES nn
INNER JOIN #OsztalyCsoportok ocs ON ocs.IdoszakKezdete <= nn.C_NAPDATUMA AND ocs.IdoszakVege > nn.C_NAPDATUMA
LEFT JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND nn.C_INTEZMENYID = tr.C_INTEZMENYID AND nn.C_TANEVID = tr.C_TANEVID AND tr.TOROLT = ''F'' AND tr.C_OSSZESCSOPORTRAVONATKOZIK = ''T''
WHERE nn.TOROLT = ''F''
AND nn.C_INTEZMENYID = @pIntezmenyId AND nn.C_TANEVID = @pTanevId
) nn
LEFT JOIN (
SELECT
nn.C_NAPDATUMA AS Datum
,tr.C_HETIREND AS HetirendId
,tr.C_HETNAPJA AS HetNapjaId
,tr.C_ORARENDINAP AS OrarendiNap
,ocstr.C_OSZTALYCSOPORTID AS OsztalyCsoportId
,nn.C_HETSORSZAMA AS HetSorszam
,tr.C_CSENGETESIRENDID AS CsengetesiRendId
,ocs.Nev
,ocs.Oka
,ocs.IsVegzos
,ocs.IdoszakKezdete
,ocs.IdoszakVege
,tr.C_EGYEDINAP AS IsEgyediNap
FROM T_NAPTARINAP_OSSZES nn
INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND nn.C_INTEZMENYID = tr.C_INTEZMENYID AND nn.C_TANEVID = tr.C_TANEVID AND tr.TOROLT = ''F'' AND tr.C_OSSZESCSOPORTRAVONATKOZIK = ''F''
INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID
INNER JOIN #OsztalyCsoportok ocs ON ocs.Id = ocstr.C_OSZTALYCSOPORTID AND ocs.IdoszakKezdete <= nn.C_NAPDATUMA AND ocs.IdoszakVege > nn.C_NAPDATUMA
WHERE nn.TOROLT = ''F''
AND nn.C_INTEZMENYID = @pIntezmenyId AND nn.C_TANEVID = @pTanevId
AND nn.C_NAPDATUMA >= @pIdoszakKezdete AND nn.C_NAPDATUMA < ocs.IdoszakVege
) tr ON nn.Datum = tr.datum AND nn.OsztalyCsoportId = tr.OsztalyCsoportId
WHERE ISNULL(tr.OrarendiNap, nn.OrarendiNap) = ''T''
'
/* Órarend lekérdezés */
IF @pCsakOrarendiOrak = 0 BEGIN
SET @sql += N'
INSERT INTO #OrarendTable
'
END
SET @sql += N'
SELECT DISTINCT
oo.ID AS Id
,oo.ID AS ORARENDIID
,nn.Datum AS Datum
,oo.C_BONTOTT AS Bontott
,oo.C_HETIREND AS Hetirend
,oo.C_HETNAPJA AS HetNapja
,nn.HetSorszam AS HetSorszam
,oo.C_ORAERVENYESSEGKEZDETE AS ErvenyessegKezdete
,oo.C_ORAERVENYESSEGVEGE AS ErvenyessegVege
,nn.Datum + oo.C_ORAKEZDETE AS OraKezdete
,nn.Datum + oo.C_ORAVEGE AS OraVege
,oo.C_ORASZAM AS Oraszam
,ISNULL(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNev
,COALESCE(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNevForMobile
,tt.C_TARGYKATEGORIA AS TargykategoriaID
,''F'' AS Megtartott
,csro.ID AS CsengetesiRendOraID
,csro.C_CSENGETESIRENDID AS CsengetesiRendID
,MAX(oo.C_ORASZAM) OVER() AS MaxNapiOraszam
,nn.Nev AS OsztalyNev
,nn.OsztalyCsoportId AS TanevRendOsztalyCsoportId
,nn.OKA AS MegjelenesOka
,tanar.C_NYOMTATASINEV AS TanarNev
,terem.C_NEV AS TeremNev
,terem.ID AS TeremId
,''OrarendiOra'' AS OraTipus
,''F'' AS Hianyzas
,''F'' AS Keses
,''F'' AS Ures
,hisz.C_HELYETTESTANAROKID AS HelyettesitoTanarID
,helyettes.C_NYOMTATASINEV AS HelyettesitoTanarNev
,hisz.Id AS HelyettesitesId
,tanar.ID AS TanarID
,NULL AS AdminAltalKiirt
,oo.C_ORARENDIORAGROUPID AS GroupId
,NULL AS Tema
,oo.C_TANTARGYID AS TantargyId
,oo.C_OSZTALYCSOPORTID AS OsztCsopId
FROM T_ORARENDIORA_OSSZES oo
INNER JOIN #OsztalyCsoportok ocs ON ocs.ID = oo.C_OSZTALYCSOPORTID
INNER JOIN #NaptariNapok nn
ON nn.HetnapjaId = oo.C_HETNAPJA
AND ocs.ID = nn.OsztalyCsoportId
AND nn.Datum >= oo.C_ORAERVENYESSEGKEZDETE
AND ((nn.Datum < oo.C_ORAERVENYESSEGVEGE) OR (oo.C_ORAERVENYESSEGKEZDETE = oo.C_ORAERVENYESSEGVEGE AND nn.Datum = oo.C_ORAERVENYESSEGKEZDETE))
AND (oo.C_HETIREND = 1554 OR nn.HetirendId = oo.C_HETIREND)
AND C_TANEVID = @pTanevId
AND oo.C_EGYEDINAP = nn.IsEgyediNap
INNER JOIN T_TANTARGY_OSSZES tt ON tt.ID = oo.C_TANTARGYID AND tt.TOROLT = ''F''
LEFT JOIN T_FELHASZNALO_OSSZES tanar ON tanar.ID = oo.C_TANARID AND tanar.TOROLT = ''F''
LEFT JOIN T_TEREM_OSSZES terem ON terem.id = oo.C_TEREMID AND terem.TOROLT = ''F''
LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES hisz ON oo.ID = hisz.C_HELYETTESITETTORARENDID AND hisz.C_HELYETTESITESNAPJA = nn.Datum AND hisz.TOROLT = ''F''
LEFT JOIN T_FELHASZNALO_OSSZES helyettes ON hisz.C_HELYETTESTANAROKID = helyettes.ID AND helyettes.TOROLT = ''F''
' + IIF(@pIsNapirend = 0, 'INNER', 'LEFT') + ' JOIN T_CSENGETESIRENDORA_OSSZES csro ON csro.C_CSENGETESIRENDID = ISNULL(nn.CsengetesiRendId, oo.C_CSENGETESIRENDID) AND csro.C_ORASZAM = oo.C_ORASZAM AND csro.TOROLT = ''F''
WHERE oo.TOROLT = ''F''
' + CASE WHEN @pIsNapirend = 1 THEN N'AND oo.C_CSENGETESIRENDID IS NULL ' WHEN @pIsNapirend IS NULL THEN N'AND ((oo.C_CSENGETESIRENDID IS NOT NULL AND csro.C_CSENGETESIRENDID IS NOT NULL) OR (oo.C_CSENGETESIRENDID IS NULL AND csro.C_CSENGETESIRENDID IS NULL))' ELSE '' END + '
AND oo.C_TANEVID = @pTanevId
' + IIF(@pTanarId IS NULL, N'', IIF(@pIsHelyettesitesNelkul = 0, N'AND (oo.C_TANARID = @pTanarId OR hisz.C_HELYETTESTANAROKID = @pTanarId)', 'AND oo.C_TANARID = @pTanarId')) + N'
' + IIF(@pTantargyId IS NULL, N'', N'AND oo.C_TANTARGYID = @pTantargyId') + N'
' + IIF(@pTeremId IS NULL, N'', 'AND oo.C_TEREMID = @pTeremId')
SET @sql += N'
' + IIF(@pCsakOrarendiOrak = 0, N'', N'ORDER BY OraKezdete') + N'
'
IF @pCsakOrarendiOrak = 0 BEGIN
/* TanításiÓra lekérdezés */
SET @sql += N'
SELECT
ISNULL(tn.Id, oo.Id) AS Id
,ISNULL(tn.ORARENDIID, oo.ORARENDIID) AS ORARENDIID
,ISNULL(tn.Datum, oo.Datum) AS Datum
,ISNULL(tn.Bontott, oo.Bontott) AS Bontott
,ISNULL(tn.Hetirend, oo.Hetirend) AS Hetirend
,ISNULL(tn.HetNapja, oo.HetNapja) AS HetNapja
,ISNULL(tn.HetSorszam, oo.HetSorszam) AS HetSorszam
,IIF(tn.Id IS NOT NULL, NULL, oo.ErvenyessegKezdete) AS ErvenyessegKezdete
,IIF(tn.Id IS NOT NULL, NULL, oo.ErvenyessegVege) AS ErvenyessegVege
,ISNULL(tn.OraKezdete, oo.OraKezdete) AS OraKezdete
,ISNULL(tn.OraVege, oo.OraVege) AS OraVege
,ISNULL(tn.Oraszam, oo.Oraszam) AS Oraszam
,ISNULL(tn.TargyNev, oo.TargyNev) AS TargyNev
,ISNULL(tn.TargyNevForMobile, oo.TargyNevForMobile) AS TargyNevForMobile
,ISNULL(tn.TargykategoriaID, oo.TargykategoriaID) AS TargykategoriaID
,ISNULL(tn.Megtartott, oo.Megtartott) AS Megtartott
,ISNULL(tn.CsengetesiRendOraID, oo.CsengetesiRendOraID) AS CsengetesiRendOraID
,ISNULL(tn.CsengetesiRendID, oo.CsengetesiRendID) AS CsengetesiRendID
,ISNULL(tn.MaxNapiOraszam, oo.MaxNapiOraszam) AS MaxNapiOraszam
,ISNULL(tn.OsztalyNev, oo.OsztalyNev) AS OsztalyNev
,ISNULL(tn.TanevRendOsztalyCsoportId, oo.TanevRendOsztalyCsoportId) AS TanevRendOsztalyCsoportId
,ISNULL(tn.MegjelenesOka, oo.MegjelenesOka) AS MegjelenesOka
,ISNULL(tn.TanarNev, oo.TanarNev) AS TanarNev
,ISNULL(tn.TeremNev, oo.TeremNev) AS TeremNev
,ISNULL(tn.TeremId, oo.TeremId) AS TeremId
,ISNULL(tn.OraTipus, oo.OraTipus) AS OraTipus
,ISNULL(tn.Hianyzas, oo.Hianyzas) AS Hianyzas
,ISNULL(tn.Keses, oo.Keses) AS Keses
,ISNULL(tn.Ures, oo.Ures) AS Ures
,ISNULL(tn.HelyettesitoTanarID, oo.HelyettesitoTanarID) AS HelyettesitoTanarID
,ISNULL(tn.HelyettesitoTanarNev, oo.HelyettesitoTanarNev) AS HelyettesitoTanarNev
,oo.HelyettesitesId AS HelyettesitesId
,ISNULL(tn.TanarID, oo.TanarID) AS TanarID
,ISNULL(tn.AdminAltalKiirt, oo.AdminAltalKiirt) AS AdminAltalKiirt
,ISNULL(tn.GroupId, oo.GroupId) AS GroupId
,tn.Tema AS Tema
,ISNULL(tn.TantargyId, oo.TantargyId) AS TantargyId
,ISNULL(tn.OsztCsopId, oo.OsztCsopId) AS OsztCsopId
FROM #OrarendTable oo
'
SET @sql += N'
FULL JOIN (
SELECT
tao.ID AS Id
,NULL AS ORARENDIID
,tao.C_DATUM AS Datum
,tao.C_BONTOTT AS Bontott
,nn.HetirendId AS Hetirend
,tao.C_HETNAPJA AS HetNapja
,tao.C_HETSORSZAMA AS HetSorszam
,tao.C_ORAKEZDETE AS OraKezdete
,tao.C_ORAVEGE AS OraVege
,tao.C_ORASZAM AS Oraszam
,ISNULL(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNev
,COALESCE(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNevForMobile
,tt.C_TARGYKATEGORIA AS TargykategoriaID
,tao.C_MEGTARTOTT AS Megtartott
,tao.C_CSENGETESIRENDORAID AS CsengetesiRendOraID
,tao.C_CSENGETESIRENDID AS CsengetesiRendID
,MAX(tao.C_ORASZAM) OVER() AS MaxNapiOraszam
,nn.Nev AS OsztalyNev
,tao.C_OSZTALYCSOPORTID AS TanevRendOsztalyCsoportId
,nn.OKA AS MegjelenesOka
,tanar.C_NYOMTATASINEV AS TanarNev
,terem.C_NEV AS TeremNev
,terem.ID as TeremId
,''TanitasiOra'' AS OraTipus
,' + IIF(@pTanuloId IS NULL, N'''F''', N'IIF(mh.ID IS NULL, ''F'', ''T'')') + N' AS Hianyzas
,' + IIF(@pTanuloId IS NULL, N'''F''', N'IIF(mk.ID IS NULL, ''F'', ''T'')') + N' AS Keses
,' + IIF(@pTanuloId IS NULL, N'''F''', N'IIF(mu.ID IS NULL, ''F'', ''T'')') + N' AS Ures
,helyettes.ID HelyettesitoTanarID
,helyettes.C_NYOMTATASINEV HelyettesitoTanarNev
,tanar.ID AS TanarID
,tao.C_ADMINALTALKIIRT AS AdminAltalKiirt
,tao.C_ORARENDIORAGROUPID AS GroupId
,tao.C_TEMA AS Tema
,tao.C_TANTARGYID AS TantargyId
,tao.C_OSZTALYCSOPORTID AS OsztCsopId
FROM #NaptariNapok nn
INNER JOIN T_TANITASIORA_OSSZES tao ON tao.C_OSZTALYCSOPORTID = nn.OsztalyCsoportId AND nn.Datum = tao.C_DATUM AND tao.C_TANEVID = @pTanevId
INNER JOIN T_TANTARGY_OSSZES tt ON tao.C_TANTARGYID = tt.ID
INNER JOIN T_FELHASZNALO_OSSZES tanar ON tao.C_TANARID = tanar.ID
LEFT JOIN T_FELHASZNALO_OSSZES helyettes ON helyettes.ID = tao.C_HELYETTESITOTANARID
INNER JOIN T_TEREM_OSSZES terem ON terem.ID = tao.C_TEREMID
'
IF @pTanuloId IS NOT NULL BEGIN
SET @sql += N'
LEFT JOIN T_TANULOMULASZTAS_OSSZES mh ON mh.C_TANITASIORAKID = tao.ID AND mh.C_ORATANULOIID = @pTanuloId AND mh.C_TIPUS = 1500 AND mh.TOROLT = ''F''
LEFT JOIN T_TANULOMULASZTAS_OSSZES mk ON mk.C_TANITASIORAKID = tao.ID AND mk.C_ORATANULOIID = @pTanuloId AND mk.C_TIPUS = 1499 AND mk.TOROLT = ''F''
LEFT JOIN T_TANULOMULASZTAS_OSSZES mu ON mu.C_TANITASIORAKID = tao.ID AND mu.C_ORATANULOIID = @pTanuloId AND mu.C_TIPUS = 1817 AND mu.TOROLT = ''F''
'
END
SET @sql += N'
WHERE tao.TOROLT = ''F''
' + CASE @pIsNapirend WHEN 1 THEN N'AND tao.C_CSENGETESIRENDID IS NULL ' WHEN 0 THEN 'AND tao.C_CSENGETESIRENDID IS NOT NULL ' ELSE '' END + '
' + IIF(@pTanarId IS NULL, N'', IIF(@pIsHelyettesitesNelkul = 0, 'AND (tao.C_TANARID = @pTanarId OR tao.C_HELYETTESITOTANARID = @pTanarId)', 'AND tao.C_TANARID = @pTanarId')) + '
' + IIF(@pTantargyId IS NULL, N'', 'AND tao.C_TANTARGYID = @pTantargyId') + '
' + IIF(@pTeremId IS NULL, N'', 'AND tao.C_TEREMID = @pTeremId') + '
) tn ON tn.Datum = oo.Datum
AND tn.HetNapja = oo.HetNapja
' + CASE @pIsNapirend WHEN 1 THEN N'AND tn.OraKezdete = oo.OraKezdete AND tn.OraVege = oo.OraVege ' WHEN 0 THEN N'AND tn.Oraszam = oo.Oraszam ' ELSE N'AND ((tn.CsengetesiRendID IS NULL AND tn.OraKezdete = oo.OraKezdete AND tn.OraVege = oo.OraVege) OR (tn.CsengetesiRendID IS NOT NULL AND tn.Oraszam = oo.Oraszam)) ' END + '
AND tn.TanevRendOsztalyCsoportId = oo.TanevRendOsztalyCsoportId
AND tn.TantargyId = oo.TantargyId
AND tn.TanarID = oo.TanarID
'
SET @sql += N'
--ORDER BY OraKezdete
'
END
--SELECT @sql
EXEC sp_executesql @sql, N'
@pIntezmenyId int
,@pTanevId int
,@pIdoszakKezdete datetime
,@pIdoszakVege datetime
,@pTanarId int
,@pIsHelyettesitesNelkul bit
,@pOsztalyCsoportId int
,@pTanuloId int
,@pTantargyId int
,@pTeremId int
,@pCsakOrarendiOrak bit
,@pIsNapirend bit'
,@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pIdoszakKezdete = @pIdoszakKezdete
,@pIdoszakVege = @pIdoszakVege
,@pTanarId = @pTanarId
,@pIsHelyettesitesNelkul = @pIsHelyettesitesNelkul
,@pOsztalyCsoportId = @pOsztalyCsoportId
,@pTanuloId = @pTanuloId
,@pTantargyId = @pTantargyId
,@pTeremId = @pTeremId
,@pCsakOrarendiOrak = @pCsakOrarendiOrak
,@pIsNapirend = @pIsNapirend
END
GO
EXEC[dbo].[sp_Global_CreateSchemaStoredProcedures]
@pSchemaName = NULL, --esetén az összes sémán végigmegy
@pStoredProcedureNames = N'<StoredProcedureNames><StoredProcedureName>sp_GetOrarend</StoredProcedureName></StoredProcedureNames>' --| NULL esetén az összes nem globális tárolt eljáráson végigmegy

View File

@@ -0,0 +1,103 @@
IF OBJECT_ID('dbo.sp_HelyettesitesekKeresese') IS NOT NULL BEGIN
DROP PROCEDURE dbo.sp_HelyettesitesekKeresese
END
GO
CREATE PROCEDURE [dbo].[sp_HelyettesitesekKeresese]
@IntezmenyId int,
@TanevId int,
@pHelyettesitettTanarId int,
@pHelyettesitesKezdete datetime,
@pHelyettesitesVege datetime
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #OrarendTable (
Id int
,ORARENDIID int
,Datum datetime
,Bontott char(1)
,Hetirend int
,HetNapja int
,HetSorszam int
,ErvenyessegKezdete datetime
,ErvenyessegVege datetime
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,TargyNev nvarchar(300)
,TargyNevForMobile nvarchar(300)
,TargykategoriaID int
,Megtartott char(1)
,CsengetesiRendOraID int
,CsengetesiRendID int
,MaxNapiOraszam int
,OsztalyNev nvarchar(255)
,TanevRendOsztalyCsoportId int
,MegjelenesOka nvarchar(300)
,TanarNev nvarchar(255)
,TeremNev nvarchar(255)
,TeremId int
,OraTipus nvarchar(200)
,Hianyzas char(1)
,Keses char(1)
,Ures char(1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar(255)
,HelyettesitesId int
,TanarID int
,AdminAltalKiirt char(1)
,GroupId int
,Tema nvarchar(max)
,TantargyId int
,OsztCsopId int
,INDEX IX01 CLUSTERED (OraTipus, OraKezdete, OraVege)
)
INSERT INTO #OrarendTable (
Id,ORARENDIID,Datum,Bontott,Hetirend,HetNapja,HetSorszam,ErvenyessegKezdete,ErvenyessegVege,OraKezdete,OraVege,Oraszam,
TargyNev,TargyNevForMobile,TargykategoriaID,Megtartott,CsengetesiRendOraID,CsengetesiRendID,MaxNapiOraszam,OsztalyNev,TanevRendOsztalyCsoportId,
MegjelenesOka,TanarNev,TeremNev,TeremId,OraTipus,Hianyzas,Keses,Ures,HelyettesitoTanarID,HelyettesitoTanarNev,HelyettesitesId,TanarID,AdminAltalKiirt,GroupId,Tema,TantargyId,OsztCsopId)
EXEC sp_GetOrarend
@pIntezmenyId = @IntezmenyId
,@pTanevId = @TanevId
,@pIdoszakKezdete = @pHelyettesitesKezdete
,@pIdoszakVege = @pHelyettesitesVege
,@pTanarId = @pHelyettesitettTanarId
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = NULL
,@pTanuloId = NULL
,@pTantargyId = NULL
,@pTeremId = NULL
,@pCsakOrarendiOrak = 0
,@pIsNapirend = NULL
SELECT
NEWID() as ID
,Datum as HelyettesitettDatum
,ORARENDIID as HelyettesitettOrarendiOraId
,IIF(Oraszam = 0 AND CsengetesiRendOraID IS NULL, NULL, Oraszam) as HelyettesitettOraszam
,CsengetesiRendOraID as HelyettesitettCsengetesiRendOraId
,TantargyId as HelyettesitettTantargyID
,Datum + CAST(CAST(OraKezdete AS time) AS datetime) AS HelyettesitettOraKezdete
,Datum + CAST(CAST(OraVege AS time) AS datetime) AS HelyettesitettOraVege
,TargyNev as HelyettesitettTantargy
,ocs.C_NEV as HelyettesitettOsztaly
,OsztCsopId as HelyettesitettOsztalyId
,ocs.C_EVFOLYAMTIPUSA as HelyettesitettEvFolyamId
,TeremNev as HelyettesitettTerem
,TeremId as HelyettesitettTeremId
,HelyettesitesId as HelyettesitesId
,IIF(Megtartott = 'F' AND ot.Id != ot.ORARENDIID, 'Elmaradt óra', HelyettesitoTanarNev) as HelyettesitoTanarNev
,hi.C_HELYETTESITESTIPUS as HelyettesitesTipusId
,NULLIF(ot.Id, ot.ORARENDIID) AS TanoraId
FROM #OrarendTable ot
JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = OsztCsopId AND ocs.TOROLT = 'F'
LEFT JOIN T_HELYETTESITESIIDOSZAK hi ON hi.ID = HelyettesitesId AND hi.TOROLT = 'F'
ORDER BY
HelyettesitettDatum, HelyettesitettOraszam
DROP TABLE #OrarendTable
END

View File

@@ -0,0 +1,145 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS uspGetNyomtatvanyokOrarendOsszes
GO
CREATE PROCEDURE uspGetNyomtatvanyokOrarendOsszes
@intezmenyId int
,@tanevID int
,@pIdoszakKezdete datetime
,@pIdoszakVege datetime
,@pTanarId int = NULL
,@pIsHelyettesitesNelkul bit = 0
,@pOsztalyCsoportId int = NULL
,@pTanuloId int = NULL
,@pTantargyId int = NULL
,@pTeremId int = NULL
,@pCsakOrarendiOrak bit = 0
,@pIsNapirend bit /*0 csak orarendi ora, 1 csak napirend, NULL mindkett?*/
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #OrarendTable (
Id int
,ORARENDIID int
,Datum datetime
,Bontott char(1)
,Hetirend int
,HetNapja int
,HetSorszam int
,ErvenyessegKezdete datetime
,ErvenyessegVege datetime
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,TargyNev nvarchar(300)
,TargyNevForMobile nvarchar(300)
,TargykategoriaID int
,Megtartott char(1)
,CsengetesiRendOraID int
,CsengetesiRendID int
,MaxNapiOraszam int
,OsztalyNev nvarchar(255)
,TanevRendOsztalyCsoportId int
,MegjelenesOka nvarchar(300)
,TanarNev nvarchar(255)
,TeremNev nvarchar(255)
,TeremId int
,OraTipus nvarchar(200)
,Hianyzas char(1)
,Keses char(1)
,Ures char(1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar(255)
,HelyettesitesId int
,TanarID int
,AdminAltalKiirt char(1)
,GroupId int
,Tema nvarchar(max)
,TantargyId int
,OsztCsopId int
);
INSERT INTO #OrarendTable
EXEC sp_GetOrarend
@pIntezmenyId = @intezmenyId
,@pTanevId = @tanevID
,@pIdoszakKezdete = @pIdoszakKezdete
,@pIdoszakVege = @pIdoszakVege
,@pTanarId = @pTanarId
,@pIsHelyettesitesNelkul = @pIsHelyettesitesNelkul
,@pOsztalyCsoportId = @pOsztalyCsoportId
,@pTanuloId = @pTanuloId
,@pTantargyId = @pTantargyId
,@pTeremId = @pTeremId
,@pCsakOrarendiOrak = @pCsakOrarendiOrak
,@pIsNapirend = @pIsNapirend
declare @intezmenyNev NVARCHAR(510) = (SELECT C_NEV FROM T_INTEZMENYADATOK_OSSZES WHERE C_INTEZMENYID = @intezmenyId AND C_TANEVID = @tanevID and TOROLT = 'F')
CREATE TABLE #Oraszamok (Oraszam int, HetirendId int, PRIMARY KEY(Oraszam, HetirendId))
INSERT INTO #Oraszamok
SELECT DISTINCT
C_ORASZAM
,C_HETIREND
FROM T_ORARENDIORA_OSSZES
WHERE C_INTEZMENYID = @intezmenyId
AND C_TANEVID = @tanevID
AND C_ORASZAM IS NOT NULL
SELECT DISTINCT
COALESCE(@pTanarId, @pTeremId, @pOsztalyCsoportId) as Id
,STUFF((SELECT DISTINCT
', ' + IIF(@pTanarId IS NOT NULL, bo.TanarNev, IIF(@pTeremId IS NOT NULL, bo.TeremNev, IIF(@pOsztalyCsoportId IS NOT NULL, bo.OsztalyNev,'')))
FROM #OrarendTable bo
WHERE bo.Hetirend = o.Hetirend
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,'') as Nev
,@intezmenyNev as IntezmenyNev
,dic.C_NAME as Hetirend
FROM #OrarendTable o
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dic on o.Hetirend = dic.ID and dic.C_TANEVID = @tanevID
SELECT
COALESCE(@pTanarId, @pTeremId, @pOsztalyCsoportId) as Id
,IIF(@pIsNapirend = 0, CAST(osz.Oraszam as NVARCHAR(3)), ISNULL(t.OraKezdete + ' - ' + t.OraVege, '')) as Ora
,IIF(@pIsNapirend = 0, osz.HetirendId, t.Hetirend) as HetirendId
,[1408] AS Hetfo
,[1409] AS Kedd
,[1410] AS Szerda
,[1411] AS Csutortok
,[1412] AS Pentek
,[1413] AS Szombat
,dic.C_NAME as HetirendNev
FROM ( SELECT *
FROM
( SELECT
STUFF(( SELECT
CONVERT(NVARCHAR(MAX),bo.TargyNev + NCHAR(13) + NCHAR(10) + bo.OsztalyNev + NCHAR(13) + NCHAR(10) + bo.TeremNev + NCHAR(10) + NCHAR(10))
FROM #OrarendTable bo
WHERE bo.OraKezdete = o.OraKezdete
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,0,'') as TargyNev
,HetNapja
,Oraszam
,CONVERT(CHAR(5), OraKezdete, 108) OraKezdete
,CONVERT(CHAR(5), OraVege, 108) OraVege
,Hetirend
FROM #OrarendTable o
) as ot
PIVOT (MAX(ot.TargyNev) FOR ot.HetNapja in([1408],[1409],[1410],[1411],[1412],[1413])) as pv
) as t
FULL JOIN #Oraszamok osz ON osz.Oraszam = t.Oraszam and t.Hetirend = osz.HetirendId
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dic ON dic.C_TANEVID = @tanevID and dic.TOROLT = 'F'
WHERE (@pIsNapirend = 0 AND osz.HetirendId = dic.ID) OR t.Hetirend = dic.ID
ORDER BY IIF(@pIsNapirend = 0, osz.HetirendId, t.Hetirend)
,CASE WHEN @pIsNapirend = 0 then osz.Oraszam else CAST(t.OraKezdete AS DATETIME) END
END
GO

View File

@@ -0,0 +1,199 @@
IF OBJECT_ID('dbo.uspGetOsztalycsoportTantargyiMulasztasai') IS NOT NULL BEGIN
DROP PROCEDURE dbo.uspGetOsztalycsoportTantargyiMulasztasai
END
GO
CREATE PROCEDURE dbo.uspGetOsztalycsoportTantargyiMulasztasai
@pOsztalyId int
,@pTantargyId int
,@pTanevid int
,@pIntezmenyId int
,@pCsakMegtartott bit /*0 - nem, 1 - igen */
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@isResultTableDeclered bit = 0
,@oraPerc int
,@isIskolaiErdekuSzamit bit
,@sql nvarchar(max)
SET @isIskolaiErdekuSzamit = dbo.fnGetRendszerbeallitasEnumBool(1683, @pIntezmenyId, @pTanevid)
SET @oraPerc = (
SELECT ISNULL(csp.C_ORAPERC, 45)
FROM T_OSZTALYCSOPORT ocs
LEFT JOIN T_CSOPORT cs on cs.ID = ocs.ID AND cs.TOROLT = 'F'
LEFT JOIN T_CSOPORTTIPUS csp ON csp.ID = cs.C_TIPUSA AND cs.TOROLT = 'F'
WHERE ocs.ID = @pOsztalyId AND ocs.TOROLT = 'F')
IF OBJECT_ID('tempdb..#OsztalyTanuloi') IS NOT NULL BEGIN
DROP TABLE #OsztalyTanuloi
END
CREATE TABLE #OsztalyTanuloi (
TanuloId int
,Belepes datetime
,Kilepes datetime
,PRIMARY KEY CLUSTERED (TanuloId)
)
INSERT INTO #OsztalyTanuloi (TanuloId)
SELECT DISTINCT C_TANULOID
FROM T_TANULOCSOPORT_OSSZES
WHERE C_OSZTALYCSOPORTID = @pOsztalyId
AND C_TANEVID = @pTanevId
AND TOROLT = 'F'
IF OBJECT_ID('tempdb..#Result') IS NULL BEGIN
SET @isResultTableDeclered = 1;
CREATE TABLE #Result (
TanuloId int
,TantargyId int
,Mulasztas int
,MegtartottOra int
,HatralevoOra int
,PRIMARY KEY CLUSTERED (TanuloId, TantargyId)
)
END
SET @sql = N'
INSERT INTO #Result (
TanuloId
,TantargyId
,Mulasztas
,MegtartottOra
,HatralevoOra
) SELECT
ot.TanuloId
,tn.C_TANTARGYID AS TantargyId
,SUM(IIF(C_TIPUS = 1500, 1, 0)) + (SUM(IIF(C_TIPUS = 1499, C_KESESPERCBEN, 0)) / @pOraPerc) AS Mulasztas
,COUNT(DISTINCT tn.ID) AS MegtartottOra
,IIF(@pCsakMegtartott = 1, NULL, 0) AS HatralevoOra
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN #OsztalyTanuloi ot ON tcs.C_TANULOID = ot.TanuloId
INNER JOIN T_TANITASIORA_OSSZES tn
ON tn.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID
AND tn.C_BEJEGYZESIDEJE >= tcs.C_BELEPESDATUM
AND tn.C_BEJEGYZESIDEJE < ISNULL(tcs.C_KILEPESDATUM, ''21000101'')
AND tn.C_MEGTARTOTT = ''T'' AND tn.TOROLT = ''F''
LEFT JOIN T_TANULOMULASZTAS_OSSZES tm
ON tm.C_TANITASIORAKID = tn.ID
AND tm.C_ORATANULOIID = ot.TanuloId
AND tm.C_TIPUS BETWEEN 1499 AND 1500
AND tm.TOROLT = ''F''
' + IIF(@isIskolaiErdekuSzamit = 0, 'AND ISNULL(tm.C_IGAZOLASTIPUSA,-1) <> 1533', '') + '
WHERE tcs.TOROLT = ''F''
' + IIF(@pTantargyId IS NULL, '', 'AND tn.C_TANTARGYID = @pTantargyId') + '
GROUP BY ot.TanuloId, tn.C_TANTARGYID
'
EXEC sys.sp_executesql @sql, N'
@pTantargyId int
,@pOraPerc int
,@pCsakMegtartott bit'
,@pTantargyId = @pTantargyId
,@pOraPerc = @oraPerc
,@pCsakMegtartott = @pCsakMegtartott
IF @pCsakMegtartott = 0 BEGIN
CREATE TABLE #OrarendTable (
Id int
,ORARENDIID INT
,Datum datetime
,Bontott char(1)
,Hetirend int
,HetNapja int
,HetSorszam int
,ErvenyessegKezdete datetime
,ErvenyessegVege datetime
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,TargyNev nvarchar(300)
,TargyNevForMobile nvarchar(300)
,TargykategoriaID int
,Megtartott char(1)
,CsengetesiRendOraID int
,CsengetesiRendID int
,MaxNapiOraszam int
,OsztalyNev nvarchar(255)
,TanevRendOsztalyCsoportId int
,MegjelenesOka nvarchar(300)
,TanarNev nvarchar(255)
,TeremNev nvarchar(255)
,TeremId int
,OraTipus nvarchar(200)
,Hianyzas char(1)
,Keses char(1)
,Ures char(1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar(255)
,HelyettesitesId int
,TanarID int
,AdminAltalKiirt char(1)
,GroupId int
,Tema nvarchar(max)
,TantargyId int
,OsztCsopId int
,INDEX IX_TanevRendOsztalyCsoportId CLUSTERED (TanevRendOsztalyCsoportId)
)
DECLARE @idoszakKezdete datetime = GETDATE()
DECLARE @idoszakVege datetime
SELECT @idoszakVege = C_NAPDATUMA
FROM T_NAPTARINAP
WHERE C_NAPTIPUSA = 1395
AND C_TANEVID = @pTanevId
IF @idoszakVege IS NULL SET @idoszakVege = (
SELECT C_UTOLSOTANITASINAP
FROM T_TANEV
WHERE ID = @pTanevid
AND TOROLT = 'F')
INSERT INTO #OrarendTable (
Id,ORARENDIID,Datum,Bontott,Hetirend,HetNapja,HetSorszam,ErvenyessegKezdete,ErvenyessegVege,OraKezdete,OraVege,Oraszam,
TargyNev,TargyNevForMobile,TargykategoriaID,Megtartott,CsengetesiRendOraID,CsengetesiRendID,MaxNapiOraszam,OsztalyNev,TanevRendOsztalyCsoportId,
MegjelenesOka,TanarNev,TeremNev,TeremId,OraTipus,Hianyzas,Keses,Ures,HelyettesitoTanarID,HelyettesitoTanarNev,HelyettesitesId,TanarID,AdminAltalKiirt,GroupId,Tema,TantargyId,OsztCsopId)
EXEC sp_GetOrarend
@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pIdoszakKezdete = @idoszakKezdete
,@pIdoszakVege = @idoszakVege
,@pTanarId = NULL
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = @pOsztalyId
,@pTanuloId = NULL
,@pTantargyId = @pTantargyId
,@pTeremId = NULL
,@pCsakOrarendiOrak = 0
,@pIsNapirend = 0
UPDATE r
SET
r.HatralevoOra = ISNULL(o.HatralevoOra, 0)
FROM #Result r
LEFT JOIN (
SELECT
ot.TanuloId, COUNT(1) AS HatralevoOra
FROM T_TANULOCSOPORT tcs
INNER JOIN #OrarendTable oo ON tcs.C_OSZTALYCSOPORTID = oo.TanevRendOsztalyCsoportId
INNER JOIN #OsztalyTanuloi ot ON tcs.C_TANULOID = ot.TanuloId AND oo.Datum >= tcs.C_BELEPESDATUM AND oo.Datum < ISNULL(tcs.C_KILEPESDATUM, '21000101')
GROUP BY ot.TanuloId
) o ON o.TanuloId = r.TanuloId
END
IF @isResultTableDeclered = 1 BEGIN
SELECT
TanuloId
,TantargyId
,Mulasztas
,MegtartottOra
,HatralevoOra
FROM #Result
END
END
GO