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,111 @@
DROP PROCEDURE IF EXISTS sp_CheckTanarOra
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órák is
DECLARE @IsNapirend BIT = 0; --csak órarendi (csengetési rendhez kötött) ó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
,IsEgyediNap char(1)
,TeremTobbOratLehetTartani char(1)
,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,IsEgyediNap,TeremTobbOratLehetTartani)
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
,TargyNev
,OsztalyNev
,TanarNev
,TeremNev
FROM #OrarendTable
WHERE
OraTipus = 'OrarendiOra'
AND OraKezdete = @start
AND OraVege = @end
END
ELSE
BEGIN
SELECT
ORARENDIID AS C_ORARENDIORAID
,TargyNev
,OsztalyNev
,TanarNev
,TeremNev
FROM #OrarendTable
WHERE
OraTipus = 'OrarendiOra'
AND Oraszam = @oraszam
END
END

View File

@@ -0,0 +1,163 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS sp_GetDokumentumHelyettesitesekByDateInterval
GO
CREATE PROCEDURE sp_GetDokumentumHelyettesitesekByDateInterval
@tanevId INT
,@intezmenyId INT
,@helyettesitesListaFormatumId INT = 0 --0 helyettesitett, 1 helyettesito
,@idoszakKezdete DATE
,@idoszakVege DATE
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #OrarendAdatok (
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
,IsEgyediNap char(1)
,TeremTobbOratLehetTartani char(1)
)
INSERT INTO #OrarendAdatok (
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
,IsEgyediNap
,TeremTobbOratLehetTartani
)
EXEC dbo.sp_GetOrarend
@pIntezmenyId = @IntezmenyId
,@pTanevId = @TanevId
,@pIdoszakKezdete = @IdoszakKezdete
,@pIdoszakVege = @IdoszakVege
,@pTanarId = NULL
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = NULL
,@pTanuloId = NULL
,@pTantargyId = NULL
,@pTeremId = NULL
,@pCsakOrarendiOrak = 0
,@pIsNapirend = NULL
SELECT
hely.HelyettesitoTanarID AS HelyettesitoId
,hely.TanarID AS HelyettesitettId
,dbo.fnGetDokumentumDatumFormatum(hely.Datum) AS HetNapja
,IIF(hely.Oraszam IS NOT NULL,CONVERT(NVARCHAR(5), hely.Oraszam) + '.',
CONCAT(CONVERT(NVARCHAR(5), hely.OraKezdete, 108), '-', CONVERT(NVARCHAR(5), hely.OraVege, 108))) AS Oraszam
,IIF(hely.OraTipus = 'TanitasiOra' AND hely.Megtartott = 'F', 'Elmaradt óra', hely.HelyettesitoTanarNev) AS HelyettesitoNeve
,hely.TanarNev AS HelyettesitettNeve
,hely.OsztalyNev AS OsztalyCsoportNev
,tantargy.C_NEV AS TantargyNev
,hely.TeremNev AS TeremNev
,HelyettesitesTipusa.C_NAME AS HelyettesitesTipusa
,helyettesito.C_OKTATASIAZONOSITO AS HelyettesitoOktatasiAzon
,helyettesitesett.C_OKTATASIAZONOSITO AS HelyettesitettOktatasiAzon
,Rendez = CASE ISNUMERIC(hely.Oraszam)
WHEN 1 THEN CAST(hely.Oraszam AS INT)
ELSE 999999999999999 END
INTO #adatok
FROM #OrarendAdatok hely
LEFT JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = hely.TantargyId AND tantargy.TOROLT = 'F'
LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES hi ON hi.ID = hely.HelyettesitesId and hi.TOROLT = 'F'
LEFT JOIN T_FELHASZNALO_OSSZES helyettesito ON helyettesito.Id = hely.HelyettesitoTanarID AND helyettesito.TOROLT = 'F'
LEFT JOIN T_FELHASZNALO_OSSZES helyettesitesett ON helyettesitesett.ID = hely.TanarID AND helyettesitesett.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES HelyettesitesTipusa ON HelyettesitesTipusa.ID = hi.C_HELYETTESITESTIPUS AND HelyettesitesTipusa.C_TANEVID = @TanevId
WHERE (hely.OraTipus = 'TanitasiOra' AND (hely.HelyettesitoTanarID IS NOT NULL OR hely.Megtartott = 'F'))
OR (hely.OraTipus = 'OrarendiOra' AND hely.HelyettesitoTanarID IS NOT NULL)
ORDER BY hely.HetNapja, hely.Oraszam
SELECT DISTINCT HetNapja FROM #adatok
IF @helyettesitesListaFormatumId = 0
BEGIN
SELECT DISTINCT HelyettesitettId PedagogusId, HelyettesitettNeve PedagogusNev, HetNapja FROM #adatok ORDER BY HelyettesitettNeve
SELECT * FROM #adatok
ORDER BY HetNapja, Rendez, Oraszam
END
ELSE
BEGIN
SELECT DISTINCT HelyettesitoId PedagogusId, HelyettesitoNeve PedagogusNev, HetNapja FROM #adatok ORDER BY HelyettesitoNeve
SELECT * FROM #adatok
ORDER BY HetNapja, Rendez, Oraszam
END
END
GO

View File

@@ -0,0 +1,257 @@
-- =============================================
-- Author: Dőrr Tamás
-- Create date: 2017.12.14.
-- Description: -
-- =============================================
IF OBJECT_ID('dbo.sp_GetHazifeladatOrarend') IS NOT NULL BEGIN
DROP PROCEDURE dbo.sp_GetHazifeladatOrarend
END
GO
CREATE PROCEDURE [dbo].[sp_GetHazifeladatOrarend]
@IntezmenyId int,
@TanevId int,
@IdoszakKezdete datetime,
@IdoszakVege datetime,
@TanarId int
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #HaziFeladatok (
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)
,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
,HaziFeladatSzoveg nvarchar(max)
)
INSERT INTO #HaziFeladatok (
Id
,ORARENDIID
,Datum
,Bontott
,Hetirend
,HetNapja
,HetSorszam
,ErvenyessegKezdete
,ErvenyessegVege
,OraKezdete
,OraVege
,Oraszam
,TargyNev
,TargyNevForMobile
,TargykategoriaID
,Megtartott
,CsengetesiRendOraID
,CsengetesiRendID
,MaxNapiOraszam
,OsztalyNev
,TanevRendOsztalyCsoportId
,MegjelenesOka
,TanarNev
,TeremNev
,OraTipus
,Hianyzas
,Keses
,Ures
,HelyettesitoTanarID
,HelyettesitoTanarNev
,HelyettesitesId
,TanarID
,AdminAltalKiirt
,GroupId
,Tema
,TantargyId
,OsztCsopId
,HaziFeladatSzoveg
) SELECT h.ID Id
,null ORARENDIID
,h.C_FELADASDATUMA Datum
,'F' Bontott
,null Hetirend --minden héten?
,null HetNapja
,NULL HetSorszam
,h.C_FELADASDATUMA ErvenyessegKezdete
,h.C_HATARIDO ErvenyessegVege
,h.C_FELADASDATUMA OraKezdete
,h.C_FELADASDATUMA OraVege
,h.C_ORASZAM Oraszam
,ISNULL(t.C_ROVIDNEV, t.C_NEV) TargyNev
,COALESCE(t.C_ROVIDNEV, t.C_NEV) TargyNevForMobile
,NULL TargykategoriaID
,NULL Megtartott
,NULL CsengetesiRendOraID
,NULL CsengetesiRendID
,NULL MaxNapiOraszam
,ocs.C_NEV OsztalyNev
,NULL TanevRendOsztalyCsoportId
,NULL MegjelenesOka
,f.C_NYOMTATASINEV TanarNev
,NULL TeremNev
,'HaziFeladat' OraTipus
,NULL Hianyzas
,NULL Keses
,NULL Ures
,NULL HelyettesitoTanarID
,NULL HelyettesitoTanarNev
,NULL HelyettesitesId
,f.ID TanarID
,NULL AdminAltalKiirt
,NULL GroupId
,NULL Tema
,h.C_TANTARGYID TantargyId
,h.C_OSZTALYCSOPORTID OsztCsopId
,h.C_FELADATSZOVEGE HaziFeladatSzoveg
FROM T_HAZIFELADATOK h
INNER JOIN T_TANTARGY t ON t.id = h.C_TANTARGYID
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.id = h.C_OSZTALYCSOPORTID
INNER JOIN T_FELHASZNALO f ON f.id = h.C_ROGZITOID
WHERE f.id = @TanarId
CREATE TABLE #OrarendiOrakTanorak (
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)
,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
,IsEgyediNap char(1)
,TeremTobbOratLehetTartani char(1)
)
INSERT INTO #orarendiOrakTanorak (
Id
,ORARENDIID
,Datum
,Bontott
,Hetirend
,HetNapja
,HetSorszam
,ErvenyessegKezdete
,ErvenyessegVege
,OraKezdete
,OraVege
,Oraszam
,TargyNev
,TargyNevForMobile
,TargykategoriaID
,Megtartott
,CsengetesiRendOraID
,CsengetesiRendID
,MaxNapiOraszam
,OsztalyNev
,TanevRendOsztalyCsoportId
,MegjelenesOka
,TanarNev
,TeremNev
,OraTipus
,Hianyzas
,Keses
,Ures
,HelyettesitoTanarID
,HelyettesitoTanarNev
,HelyettesitesId
,TanarID
,AdminAltalKiirt
,GroupId
,Tema
,TantargyId
,OsztCsopId
,IsEgyediNap
,TeremTobbOratLehetTartani
)
EXEC dbo.sp_GetOrarend
@pIntezmenyId = @IntezmenyId
,@pTanevId = @TanevId
,@pIdoszakKezdete = @IdoszakKezdete
,@pIdoszakVege = @IdoszakVege
,@pTanarId = @TanarId
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = NULL
,@pTanuloId = NULL
,@pTantargyId = NULL
,@pTeremId = NULL
,@pCsakOrarendiOrak = 0
,@pIsNapirend = 0 --utolsó paraméter: egyelőre csak órarendi (csengetési rendhez kötött) órák
INSERT INTO #HaziFeladatok
SELECT * ,NULL HaziFeladatSzoveg
FROM #orarendiOrakTanorak oot
WHERE NOT EXISTS (
SELECT 1
FROM #HaziFeladatok h
WHERE h.TanarID = oot.TanarID
AND h.TantargyId = oot.TantargyId
AND h.OsztCsopId = oot.OsztCsopId
AND h.Oraszam = oot.Oraszam)
SELECT * FROM #HaziFeladatok
END

View File

@@ -0,0 +1,157 @@
DROP PROCEDURE IF EXISTS sp_GetHelyettesitesekAjanlasa
GO
CREATE PROCEDURE [dbo].[sp_GetHelyettesitesekAjanlasa]
@intezmenyId int,
@tanevId int,
@pHelyettesitettOrarendiOraId int,
@pHelyettesitesDatuma DATE,
@pSzakszeruId int = 1494,
@pNemSzakszeruId int = 1495,
@pOsszevonas int = 1496,
@pFokozatNa int = 3040
AS
BEGIN
SET NOCOUNT ON;
DECLARE @OraKezdet DATETIME; DECLARE @Oraveg DATETIME;
DECLARE @helyettesitettTanarId INT;
SELECT @OraKezdet = C_ORAKEZDETE, @Oraveg = C_ORAVEGE , @helyettesitettTanarId = C_TANARID FROM T_ORARENDIORA WHERE ID = @pHelyettesitettOrarendiOraId
DECLARE @Datum DATETIME = (SELECT CAST(@pHelyettesitesDatuma AS date))
DECLARE @DatumVeg DATETIME = (SELECT DATEADD(DAY, 1, (SELECT CAST(@pHelyettesitesDatuma AS date))))
DECLARE @KezdoDateTime DATETIME = (SELECT (@OraKezdet + CAST(@pHelyettesitesDatuma AS datetime)))
DECLARE @VegeDateTime DATETIME = (SELECT (@Oraveg + CAST(@pHelyettesitesDatuma AS 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
,IsEgyediNap char(1)
,TeremTobbOratLehetTartani char(1)
,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,IsEgyediNap,TeremTobbOratLehetTartani)
EXEC sp_GetOrarend
@pIntezmenyId = @IntezmenyId
,@pTanevId = @TanevId
,@pIdoszakKezdete = @Datum
,@pIdoszakVege = @DatumVeg
,@pTanarId = NULL
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = NULL
,@pTanuloId = NULL
,@pTantargyId = NULL
,@pTeremId = NULL
,@pCsakOrarendiOrak = 0
,@pIsNapirend = NULL
SELECT
NULL as ID
,f.ID as TanarId
,CASE
MAX(CASE
WHEN ot.OraKezdete < @VegeDateTime AND ot.OraVege > @KezdoDateTime THEN '3'
WHEN ot.ID IS NULL AND ma.C_BESOROLASIFOKOZAT = @pFokozatNa THEN '2'
WHEN ot.ID IS NULL AND ma.C_BESOROLASIFOKOZAT != @pFokozatNa THEN '1'
WHEN ot.ID IS NOT NULL AND ot.ID = ot.ORARENDIID AND ot.HelyettesitesId IS NULL THEN '3'
WHEN ot.ID IS NOT NULL AND ot.ID != ot.ORARENDIID AND ot.Megtartott = 'T' THEN '3'
WHEN ot.ID IS NOT NULL AND ot.ID != ot.ORARENDIID AND ot.Megtartott = 'F' AND ma.C_BESOROLASIFOKOZAT = @pFokozatNa THEN '2'
WHEN ot.ID IS NOT NULL AND ot.ID != ot.ORARENDIID AND ot.Megtartott = 'F' AND ma.C_BESOROLASIFOKOZAT != @pFokozatNa THEN '1'
WHEN ot.ID IS NOT NULL AND ot.ID = ot.ORARENDIID AND ot.HelyettesitesId IS NOT NULL AND a.ID = ot.TanarID AND ma.C_BESOROLASIFOKOZAT = @pFokozatNa THEN '2'
WHEN ot.ID IS NOT NULL AND ot.ID = ot.ORARENDIID AND ot.HelyettesitesId IS NOT NULL AND a.ID = ot.TanarID AND ma.C_BESOROLASIFOKOZAT != @pFokozatNa THEN '1'
WHEN ot.ID IS NOT NULL AND ot.ID = ot.ORARENDIID AND ot.HelyettesitesId IS NOT NULL AND a.ID = ot.HelyettesitoTanarID THEN '3'
END)
WHEN 1 THEN @pSzakszeruId
WHEN 2 THEN @pNemSzakszeruId
WHEN 3 THEN @pOsszevonas
END as HelyettesitesTipusId
,ot.TantargyId as TantargyId
,ot.OsztCsopId as OsztalyCsoportId
,f.C_NYOMTATASINEV as TanarNev
,t.C_NEV as TantargyNev
,ot.OsztalyNev AS OsztalycsoportNev
,@pHelyettesitettOrarendiOraId AS HelyettesitettOrarendiOraId
,@pHelyettesitesDatuma AS HelyettesitesDatuma
INTO #HelyettesitoTanarok
FROM T_ALKALMAZOTT a
INNER JOIN T_FELHASZNALO f on f.ID = a.ID AND f.TOROLT = 'F'
INNER JOIN T_MUNKAUGYIADATOK ma ON ma.C_ALKALMAZOTTID = a.ID AND ma.C_BETOLTETLENALLASHELY = 'F' AND ma.C_TARTOSHELYETTESITES = 'F' AND (C_ALKALMAZASKEZDETE <= @Datum AND (C_ALKALMAZASMEGSZUNESE >= @Datum OR C_ALKALMAZASMEGSZUNESE IS NULL))
LEFT JOIN #OrarendTable ot on (ot.TanarID = a.ID or ot.HelyettesitoTanarID = a.ID)
LEFT JOIN T_TANTARGY t on t.ID = ot.TantargyId AND t.TOROLT = 'F'
WHERE a.TOROLT = 'F' AND a.C_ALTANEVID = @tanevId
AND (TanarID <> @helyettesitettTanarId OR TanarID IS NULL)
AND (ot.TantargyId IS NULL OR (ot.OraKezdete <= @VegeDateTime AND ot.OraVege >= @KezdoDateTime))
GROUP BY f.ID, ot.TantargyId, ot.OsztCsopId,f.C_NYOMTATASINEV,t.C_NEV,ot.OsztalyNev, ot.Id
CREATE TABLE #nincsOraja(AlkalmazottId int,TanarNev nvarchar(128),HelyettesitesTipusa int)
INSERT INTO #HelyettesitoTanarok
SELECT
NULL
,a.ID
,CASE
WHEN ma.C_BESOROLASIFOKOZAT = @pFokozatNa THEN @pNemSzakszeruId
WHEN ma.C_BESOROLASIFOKOZAT != @pFokozatNa THEN @pSzakszeruId
END HelyettesitesTipusId
,NULL
,NULL
,fh.C_NYOMTATASINEV
,NULL
,NULL
,@pHelyettesitettOrarendiOraId
,@pHelyettesitesDatuma
FROM T_ALKALMAZOTT a
INNER JOIN T_FELHASZNALO fh ON fh.ID = a.ID
INNER JOIN T_MUNKAUGYIADATOK ma ON ma.C_ALKALMAZOTTID = a.ID AND ma.C_BETOLTETLENALLASHELY = 'F' AND ma.C_TARTOSHELYETTESITES = 'F' AND (C_ALKALMAZASKEZDETE <= @Datum AND (C_ALKALMAZASMEGSZUNESE >= @Datum OR C_ALKALMAZASMEGSZUNESE IS NULL))
WHERE a.ID NOT IN(
SELECT TanarId FROM #HelyettesitoTanarok
UNION
SELECT @helyettesitettTanarId
)
SELECT * FROM #HelyettesitoTanarok
ORDER BY HelyettesitesTipusId,TanarNev
END
GO

View File

@@ -0,0 +1,153 @@
DROP PROCEDURE IF EXISTS sp_GetNemMegtartottOrakSzamaByHet
GO
CREATE PROCEDURE sp_GetNemMegtartottOrakSzamaByHet
@pFeladatKategoriaId INT = NULL,
@pIntezmenyId INT,
@pTanevId INT,
@pOsztalyId INT,
@pHetSorszam INT,
@pFeladatEllatasiHelyId INT = NULL
AS
BEGIN
DECLARE @pCsakOrarendiOrak bit = 0;
DECLARE @pIdoszakKezdete datetime;
DECLARE @pIdoszakVege datetime;
DECLARE
@sql nvarchar(max)
,@OrarendSql nvarchar(max)
,@selectSql nvarchar(max)
,@whereSql nvarchar(max)
,@orderSql nvarchar(max) = ''
SET @OrarendSql = N'
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
,IsEgyediNap char(1)
,TeremTobbOratLehetTartani char(1)
)
SELECT
@pIdoszakKezdete = nh.C_HETKEZDONAPJA
,@pIdoszakVege = nh.C_HETUTOLSONAPJA
FROM T_NAPTARIHET nh
WHERE nh.C_INTEZMENYID = @pIntezmenyId
AND nh.C_TANEVID = @pTanevId
AND nh.TOROLT = ''F''
AND nh.C_HETSORSZAMA = @pHetSorszam
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,IsEgyediNap,TeremTobbOratLehetTartani)
EXEC sp_GetOrarend
@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pIdoszakKezdete = @pIdoszakKezdete
,@pIdoszakVege = @pIdoszakVege
,@pTanarId = NULL
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = @pOsztalyId
,@pTanuloId = NULL
,@pTantargyId = NULL
,@pTeremId = NULL
,@pCsakOrarendiOrak = @pCsakOrarendiOrak
,@pIsNapirend = NULL'
SET @selectSql = N'
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
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON tmp.OsztCsopId = ocs.ID'
SET @whereSql = N'
WHERE tmp.OraTipus = ''OrarendiOra''
AND tmp.HetSorszam = @pHetSorszam
AND tmp.OraVege < GETDATE()'
IF @pFeladatKategoriaId IS NOT NULL BEGIN
SET @whereSql += N'
AND ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId'
END
IF @pFeladatEllatasiHelyId IS NOT NULL BEGIN
SET @whereSql += N'
AND ocs.C_FELADATELLATASIHELYID = @pFeladatEllatasiHelyId'
END
SET @orderSql = N'
ORDER BY tmp.Datum ASC,tmp.Oraszam ASC'
SET @sql = @OrarendSql + @selectSql + @whereSql + @orderSql
EXEC sp_executesql @sql, N'
@pIntezmenyId INT
,@pTanevId INT
,@pIdoszakKezdete DATETIME
,@pIdoszakVege DATETIME
,@pOsztalyId INT
,@pCsakOrarendiOrak BIT
,@pHetSorszam INT
,@pFeladatKategoriaId INT
,@pFeladatEllatasiHelyId INT'
,@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pIdoszakKezdete = @pIdoszakKezdete
,@pIdoszakVege = @pIdoszakVege
,@pOsztalyId = @pOsztalyId
,@pCsakOrarendiOrak = @pCsakOrarendiOrak
,@pHetSorszam = @pHetSorszam
,@pFeladatKategoriaId = @pFeladatKategoriaId
,@pFeladatEllatasiHelyId = @pFeladatEllatasiHelyId
END
GO

View File

@@ -0,0 +1,147 @@
DROP PROCEDURE IF EXISTS sp_GetNemMegtartottOrakSzamaPerHet
GO
CREATE PROCEDURE [sp_GetNemMegtartottOrakSzamaPerHet]
@pFeladatKategoriaId INT = NULL,
@pOsztalyId INT,
@pFeladatEllatasiHelyId INT = NULL,
@pIntezmenyId INT,
@pTanevId INT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @pCsakOrarendiOrak BIT = 0;
DECLARE @pIdoszakKezdete DATETIME;
DECLARE @pIdoszakVege DATETIME = GETDATE()
DECLARE
@sql nvarchar(max)
,@OrarendSql nvarchar(max)
,@selectSql nvarchar(max)
,@whereSql nvarchar(max)
,@orderSql nvarchar(max) = ''
SET @OrarendSql = N'
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
,IsEgyediNap char(1)
,TeremTobbOratLehetTartani char(1)
)
SELECT
@pIdoszakKezdete = nh.C_HETKEZDONAPJA
FROM T_NAPTARIHET nh
WHERE
nh.C_INTEZMENYID = @pIntezmenyId AND nh.C_TANEVID = @pTanevId 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,IsEgyediNap,TeremTobbOratLehetTartani)
EXEC sp_GetOrarend
@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pIdoszakKezdete = @pIdoszakKezdete
,@pIdoszakVege = @pIdoszakVege
,@pTanarId = NULL
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = @pOsztalyId
,@pTanuloId = NULL
,@pTantargyId = NULL
,@pTeremId = NULL
,@pCsakOrarendiOrak = @pCsakOrarendiOrak
,@pIsNapirend = NULL'
SET @selectSql = N'
SELECT DISTINCT
tmp.HetSorszam AS HetSorszam
,COUNT(tmp.id) AS NemNaplozottOrakSzama
,@pOsztalyId AS OsztalyID
,ISNULL(@pFeladatKategoriaId, '''') as feladatKategoriaId
,ISNULL(@pFeladatEllatasiHelyId, '''') as feladatEllatasiHelyId
FROM #OrarendTable tmp
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON tmp.OsztCsopId = ocs.ID'
SET @whereSql = N'
WHERE tmp.OraTipus = ''OrarendiOra''
AND tmp.OraVege < GETDATE()'
IF @pFeladatKategoriaId IS NOT NULL BEGIN
SET @whereSql += N'
AND ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId'
END
IF @pFeladatEllatasiHelyId IS NOT NULL BEGIN
SET @whereSql += N'
AND ocs.C_FELADATELLATASIHELYID = @pFeladatEllatasiHelyId'
END
SET @orderSql = N'
GROUP BY tmp.HetSorszam
ORDER BY tmp.HetSorszam'
SET @sql = @OrarendSql + @selectSql + @whereSql + @orderSql
EXEC sp_executesql @sql, N'
@pIntezmenyId INT
,@pTanevId INT
,@pIdoszakKezdete DATETIME
,@pIdoszakVege DATETIME
,@pOsztalyId INT
,@pCsakOrarendiOrak BIT
,@pFeladatKategoriaId INT
,@pFeladatEllatasiHelyId INT'
,@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pIdoszakKezdete = @pIdoszakKezdete
,@pIdoszakVege = @pIdoszakVege
,@pOsztalyId = @pOsztalyId
,@pCsakOrarendiOrak = @pCsakOrarendiOrak
,@pFeladatKategoriaId = @pFeladatKategoriaId
,@pFeladatEllatasiHelyId = @pFeladatEllatasiHelyId
END
GO

View File

@@ -0,0 +1,546 @@
DROP PROCEDURE IF EXISTS sp_GetOrarend
GO
CREATE PROCEDURE [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ő*/
,@pFeladatKategoriaId int = NULL
,@pOrakezdete datetime = NULL
,@pOravege datetime = NULL
,@pHetnapja int = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@sql nvarchar(max) = N''
,@sqlOrarendiora nvarchar(max) = N''
SET @pOrakezdete = CONVERT(datetime,CONVERT(TIME, @pOrakezdete))
SET @pOravege = CONVERT(datetime,CONVERT(TIME, @pOravege))
SET @sql += N'
CREATE TABLE #OsztalyCsoportok (
Id int
,Nev nvarchar(255)
,Oka nvarchar(50)
,IsVegzos char(1)
,IdoszakKezdete datetime
,IdoszakVege datetime
,INDEX IX1 CLUSTERED(Id, IdoszakKezdete, IdoszakVege)
);
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 (OsztalyCsoportId, Datum, HetNapjaId, HetirendId)
);
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
,IsEgyediNap char(1)
,TeremTobbOratLehetTartani char(1)
,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 = MIN(C_DATUM)
FROM T_TANEVRENDJE_OSSZES
WHERE TOROLT = ''F''
AND C_TANEVID = @pTanevId
AND C_NAPTIPUSA IN (1402, 7600, 7601, 7602, 7603, 1395) --
AND C_OSSZESCSOPORTRAVONATKOZIK = ''T''
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
,'''' AS 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 fnGetKapcsolodoOsztalyCsoportokByDateRange(@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+1
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)
' + IIF(@pFeladatKategoriaId IS NULL, '', 'AND ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId') + '
END'
SET @sql += N'
--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
' + IIF(@pFeladatKategoriaId IS NULL, '', 'WHERE ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId') + '
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 ocs
WHERE ocs.C_TANEVID = @pTanevId
AND ocs.TOROLT = ''F''
' + IIF(@pFeladatKategoriaId IS NULL, '', 'AND ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId') + '
END
END'
SET @sql += N'
UPDATE ocs SET
ocs.IdoszakVege = NewVegeDatum
FROM #OsztalyCsoportok ocs
INNER JOIN (
SELECT MIN(tr.C_DATUM) + 1 AS NewVegeDatum, ocstr.C_OSZTALYCSOPORTID
FROM T_TANEVRENDJE_OSSZES tr
INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON ocstr.C_TANEVRENDJEID = tr.ID
WHERE tr.C_OSSZESCSOPORTRAVONATKOZIK = ''F''
AND tr.TOROLT = ''F''
AND tr.C_NAPTIPUSA IN (1402, 7600, 7601, 7602, 7603)
AND tr.C_TANEVID = @pTanevId
GROUP BY ocstr.C_OSZTALYCSOPORTID
) x ON x.C_OSZTALYCSOPORTID = ocs.Id
WHERE ocs.IsVegzos = ''T''
'
/* 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''
-- SELECT * FROM #NaptariNapok
'
/* Órarend lekérdezés */
IF @pCsakOrarendiOrak = 0 BEGIN
SET @sql += N'
INSERT INTO #OrarendTable
'
END
SET @sqlOrarendiora += 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
,oo.C_EGYEDINAP as IsEgyediNap
,ISNULL(terem.C_TOBBORATLEHETTARTANI,''F'') as TeremTobbOratLehetTartani
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''
INNER 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(@pTantargyId IS NULL, N'', N'AND oo.C_TANTARGYID = @pTantargyId') + N'
' + IIF(@pOravege IS NOT NULL AND @pOrakezdete IS NOT NULL, N'AND oo.C_ORAVEGE > @pOrakezdete AND oo.C_ORAKEZDETE < @pOravege', N'') + N'
' + IIF(@pHetnapja IS NULL, N'', N'AND oo.C_HETNAPJA = @pHetnapja') + N'
' + IIF(@pTeremId IS NULL, N'', 'AND oo.C_TEREMID = @pTeremId')
SET @sql += @sqlOrarendiOra + N'
' + IIF(@pTanarId IS NULL, N'', 'AND oo.C_TANARID = @pTanarId')
IF @pTanarId IS NOT NULL AND @pIsHelyettesitesNelkul = 0 BEGIN
SET @sql += N'
UNION ALL
' + @sqlOrarendiOra + '
AND hisz.C_HELYETTESTANAROKID = @pTanarId
AND hisz.C_HELYETTESITESNAPJA >= @pIdoszakKezdete AND hisz.C_HELYETTESITESNAPJA < ocs.IdoszakVege
'
END
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
,ISNULL(tn.IsEgyediNap, oo.IsEgyediNap) as IsEgyediNap
,ISNULL(tn.TeremTobbOratLehetTartani, oo.TeremTobbOratLehetTartani) as TeremTobbOratLehetTartani
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
,1554 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
,oo.Nev AS OsztalyNev
,tao.C_OSZTALYCSOPORTID AS TanevRendOsztalyCsoportId
,'''' 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
,tao.C_EGYEDINAP as IsEgyediNap
,ISNULL(terem.C_TOBBORATLEHETTARTANI,''F'') as TeremTobbOratLehetTartani
FROM T_TANITASIORA_OSSZES tao
INNER JOIN #OsztalyCsoportok oo ON tao.C_OSZTALYCSOPORTID = oo.Id AND tao.C_DATUM >= oo.IdoszakKezdete AND tao.C_DATUM < oo.IdoszakVege
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'' AND tao.C_TANEVID = @pTanevId
--AND tao.C_DATUM >= @pIdoszakKezdete AND tao.C_DATUM < @pIdoszakVege
' + 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(@pOravege IS NOT NULL AND @pOrakezdete IS NOT NULL, N'AND tao.C_ORAVEGE > @pOrakezdete AND tao.C_ORAKEZDETE < @pOravege', N'') + N'
' + IIF(@pHetnapja IS NULL, N'', N'AND tao.C_HETNAPJA = @pHetnapja') + N'
' + 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
'
END
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
,@pFeladatKategoriaId int
,@pOrakezdete datetime
,@pOravege datetime
,@pHetnapja int'
,@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pIdoszakKezdete = @pIdoszakKezdete
,@pIdoszakVege = @pIdoszakVege
,@pTanarId = @pTanarId
,@pIsHelyettesitesNelkul = @pIsHelyettesitesNelkul
,@pOsztalyCsoportId = @pOsztalyCsoportId
,@pTanuloId = @pTanuloId
,@pTantargyId = @pTantargyId
,@pTeremId = @pTeremId
,@pCsakOrarendiOrak = @pCsakOrarendiOrak
,@pIsNapirend = @pIsNapirend
,@pFeladatKategoriaId = @pFeladatKategoriaId
,@pOrakezdete = @pOrakezdete
,@pOravege = @pOravege
,@pHetnapja = @pHetnapja
END
GO

View File

@@ -0,0 +1,140 @@
DROP PROCEDURE IF EXISTS [dbo].[sp_HelyettesitesekKeresese]
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
,IsEgyediNap char(1)
,TeremTobbOratLehetTartani char(1)
,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
,IsEgyediNap
,TeremTobbOratLehetTartani
)
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
,Megtartott as IsMegtartott
,hi.C_HELYETTESITESTIPUS as HelyettesitesTipusId
,IIF (ot.Id != ot.ORARENDIID, ot.Id, NULL) 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'
WHERE ot.Id = ot.ORARENDIID OR (ot.Megtartott ='F' AND ot.Id != ot.ORARENDIID)
ORDER BY HelyettesitettDatum, HelyettesitettOraszam
DROP TABLE #OrarendTable
END

View File

@@ -0,0 +1,138 @@
DROP PROCEDURE IF EXISTS uspGetKiirtHelyettesitesek
GO
CREATE PROCEDURE uspGetKiirtHelyettesitesek
@pIntezmenyId int
,@pTanevId int
,@pTanarId int
,@pDarab int
AS BEGIN
SET NOCOUNT ON;
DECLARE
@pIdoszakKezdete datetime
,@pIdoszakVege datetime
CREATE TABLE #OrarendiOrak (
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
,IsEgyediNap char(1)
,TeremTobbOratLehetTartani char(1)
,INDEX IX1 CLUSTERED(Datum, HetNapja, Oraszam, TanevRendOsztalyCsoportId, TantargyId, TanarID)
)
SELECT
@pIdoszakKezdete = (CASE WHEN tanev.C_AKTIV = 'T' THEN GETDATE() ELSE tanev.C_KEZDONAP END)
,@pIdoszakVege = tanev.C_UTOLSOTANITASINAP
FROM T_TANEV_OSSZES tanev
WHERE tanev.TOROLT = 'F'
AND tanev.ID = @pTanevId
AND tanev.C_INTEZMENYID = @pIntezmenyId
INSERT INTO #OrarendiOrak (
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
,IsEgyediNap
,TeremTobbOratLehetTartani
)
EXEC sp_GetOrarend
@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pIdoszakKezdete = @pIdoszakKezdete
,@pIdoszakVege = @pIdoszakVege
,@pTanarId = @pTanarId
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = NULL
,@pTanuloId = NULL
,@pTantargyId = NULL
,@pTeremId = NULL
,@pCsakOrarendiOrak = 0
,@pIsNapirend = NULL
SELECT TOP (@pDarab)
orak.Id AS Id
,orak.OraKezdete AS Datum
,IIF(orak.CsengetesiRendID IS NOT NULL, orak.Oraszam, N'-') AS Oraszam
,orak.OsztalyNev AS OsztalyCsoport
,orak.TargyNev AS Tantargy
FROM #OrarendiOrak orak
WHERE orak.OraTipus = N'OrarendiOra'
AND orak.OraKezdete <= @pIdoszakVege
AND orak.OraVege >= @pIdoszakKezdete
AND orak.HelyettesitoTanarID = @pTanarId
ORDER BY orak.OraKezdete ASC
END
GO

View File

@@ -0,0 +1,240 @@
DROP PROCEDURE IF EXISTS uspGetNemNaplozottOrarendiOrak_Core
GO
CREATE PROCEDURE uspGetNemNaplozottOrarendiOrak_Core
@IntezmenyId int
,@TanevId int
,@IdoszakKezdete datetime
,@IdoszakVege datetime
,@TanarId int = NULL
,@OsztalyCsoportId int = NULL
,@TantargyId int = NULL
,@CsakHelyettesitesreKiirtTanorak bit = 0
,@pFeladatKategoriaId int = NULL
,@pDatum datetime = NULL
,@pOraszam int = NULL
,@pIdopont datetime = NULL
AS BEGIN
SET NOCOUNT ON;
SET DATEFIRST 1;
DECLARE
@CsakOrarendiOrak bit = 0
CREATE TABLE #OrarendiOrak (
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
,IsEgyediNap char(1)
,TeremTobbOratLehetTartani char(1)
,INDEX IX1 CLUSTERED(Datum, HetNapja, Oraszam, TanevRendOsztalyCsoportId, TantargyId, TanarID)
)
INSERT INTO #OrarendiOrak (
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
,IsEgyediNap
,TeremTobbOratLehetTartani
)
EXEC sp_GetOrarend
@pIntezmenyId = @IntezmenyId
,@pTanevId = @TanevId
,@pIdoszakKezdete = @IdoszakKezdete
,@pIdoszakVege = @IdoszakVege
,@pTanarId = @TanarId
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = @OsztalyCsoportId
,@pTanuloId = NULL
,@pTantargyId = @TantargyId
,@pTeremId = NULL
,@pCsakOrarendiOrak = 0
,@pIsNapirend = NULL
,@pFeladatKategoriaId = @pFeladatKategoriaId
INSERT INTO #NemNaplozottOrak (
Id
,ORARENDIID
,Bontott
,Hetirend
,HetNapja
,HetSorszam
,ErvenyessegKezdete
,ErvenyessegVege
,OraKezdete
,OraKezdeteDate
,OraKezdeteTimeText
,OraVege
,Oraszam
,TargyNev
,TargyNevForMobile
,TargykategoriaID
,Megtartott
,CsengetesiRendOraID
,CsengetesiRendID
,MaxNapiOraszam
,OsztalyNev
,MegjelenesOka
,TanarNev
,TanarOktAzon
,TeremNev
,OraTipus
,Hianyzas
,Keses
,Ures
,HelyettesitoTanarID
,HelyettesitoTanarNev
,HelyettesitesId
,TanarID
,AdminAltalKiirt
,GroupId
,Tema
,TantargyId
,OsztCsopId
,HelyettesitettPedagogusNev
,OraKezdeteDateST
,HetNapjaValos
,Datum
,HelyettesitoTanarOktAzon
)
SELECT
orak.Id
,orak.ORARENDIID
,orak.Bontott
,orak.Hetirend
,orak.HetNapja
,orak.HetSorszam
,orak.ErvenyessegKezdete
,orak.ErvenyessegVege
,orak.OraKezdete
,CONVERT(date, orak.OraKezdete) AS OraKezdeteDate
,CONVERT(varchar (5), orak.OraKezdete, 108) AS OraKezdeteTimeText
,orak.OraVege
,IIF(orak.CsengetesiRendID IS NOT NULL, orak.Oraszam, NULL) AS Oraszam
,t.C_NEV as TargyNev
,orak.TargyNevForMobile
,orak.TargykategoriaID
,orak.Megtartott
,orak.CsengetesiRendOraID
,orak.CsengetesiRendID
,orak.MaxNapiOraszam
,orak.OsztalyNev
,orak.MegjelenesOka
,orak.TanarNev
,f.C_OKTATASIAZONOSITO TanarOktAzon
,orak.TeremNev
,orak.OraTipus
,orak.Hianyzas
,orak.Keses
,orak.Ures
,orak.HelyettesitoTanarID
,orak.HelyettesitoTanarNev
,orak.HelyettesitesId
,orak.TanarID
,orak.AdminAltalKiirt
,orak.GroupId
,orak.Tema
,orak.TantargyId
,orak.OsztCsopId
,IIF(orak.HelyettesitoTanarID IS NOT NULL, orak.TanarNev, NULL) AS HelyettesitettPedagogusNev
,CONVERT(nvarchar (25), orak.OraKezdete, 102) AS OraKezdeteDateST
,DATEPART(w, orak.OraKezdete) + 1407 AS HetNapjaValos
,orak.Datum
,fh.C_OKTATASIAZONOSITO HelyettesitoTanarOktAzon
FROM #OrarendiOrak orak
INNER JOIN T_FELHASZNALO_OSSZES f ON orak.TanarID = f.ID
AND f.TOROLT ='F'
AND f.C_TANEVID = @TanevId
INNER JOIN T_TANTARGY_OSSZES t on t.ID = orak.TantargyId
AND t.TOROLT ='F'
AND t.C_TANEVID = @TanevId
LEFT JOIN T_FELHASZNALO_OSSZES fh ON orak.HelyettesitoTanarID = fh.ID
AND fh.TOROLT ='F'
AND fh.C_TANEVID = @TanevId
WHERE orak.OraTipus = 'OrarendiOra'
AND orak.OraKezdete <= @IdoszakVege
AND orak.OraVege >= @IdoszakKezdete
AND (@CsakHelyettesitesreKiirtTanorak = 0 OR orak.HelyettesitoTanarNev IS NOT NULL)
AND (ISNULL(@pDatum, CAST(OraKezdete as date)) = CAST(OraKezdete as date))
AND ((ISNULL(@pOraszam, Oraszam) = Oraszam) OR Oraszam IS NULL)
AND (
IIF(
@pIdopont IS NOT NULL,
CONVERT(varchar (5), @pIdopont, 108),
CONVERT(varchar (5), orak.OraKezdete, 108)
) = CONVERT(varchar (5), orak.OraKezdete, 108))
END
GO

View File

@@ -0,0 +1,349 @@
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ő */
,@pKapcsolodoCsoportokMegjelenitese bit = NULL
,@pOsztalyBontasokMegjelenitese bit = NULL
,@pFeladatKategoriaId int = NULL
AS BEGIN
SET NOCOUNT ON;
DECLARE
@intezmenyNev nvarchar(510)
CREATE TABLE #OrarendiOrak (
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
,IsEgyediNap char(1)
,TeremTobbOratLehetTartani char(1)
,INDEX IX1 CLUSTERED(Datum, HetNapja, Oraszam, TanevRendOsztalyCsoportId, TantargyId, TanarID)
)
CREATE TABLE #Oraszamok (
Oraszam int
,PRIMARY KEY(Oraszam)
)
SELECT TOP 1
@intezmenyNev = i.C_NEV
FROM T_INTEZMENYADATOK_OSSZES i
WHERE i.C_INTEZMENYID = @intezmenyId
AND i.C_TANEVID = @tanevID
AND i.TOROLT = 'F'
INSERT INTO #OrarendiOrak (
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
,IsEgyediNap
,TeremTobbOratLehetTartani
)
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
,@pFeladatKategoriaId = @pFeladatKategoriaId
-- a lekért órarendben a minden héten órákat átállítjuk a hétsorszámnak megfelelő hetirendre
UPDATE orak
SET orak.Hetirend = ISNULL(hr.Hetirend, orak.Hetirend)
FROM #OrarendiOrak orak
LEFT JOIN (
SELECT DISTINCT
o.Hetirend
,o.HetSorszam
FROM #OrarendiOrak o
WHERE Hetirend <> 1554
) hr ON hr.HetSorszam = orak.HetSorszam
WHERE orak.Hetirend = 1554
-- kapcsolódó csoportok óráinak törlése
IF @pKapcsolodoCsoportokMegjelenitese IS NOT NULL AND @pKapcsolodoCsoportokMegjelenitese = 0
DELETE orak
FROM #OrarendiOrak orak
INNER JOIN T_CSOPORT_OSSZES cs ON cs.TOROLT = 'F'
AND cs.ID = orak.OsztCsopId
AND cs.C_OSZTALYBONTASID IS NULL
INNER JOIN T_CSOPORTTIPUS_OSSZES cst ON cst.C_ALTANEVID = cs.C_ALTANEVID AND cst.TOROLT = 'F'
AND cst.ID = cs.C_TIPUSA
AND cst.C_ISTANORAICELU = 'F'
WHERE OsztCsopId != @pOsztalyCsoportId
-- osztálybontott csoportok óráinak törlése
IF @pOsztalyBontasokMegjelenitese IS NOT NULL AND @pOsztalyBontasokMegjelenitese = 0
DELETE orak
FROM #OrarendiOrak orak
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = orak.OsztCsopId
AND cs.C_OSZTALYBONTASID IS NOT NULL
WHERE orak.OsztCsopId != @pOsztalyCsoportId
INSERT INTO #Oraszamok (Oraszam)
SELECT DISTINCT
ora.C_ORASZAM AS Oraszam
FROM T_ORARENDIORA_OSSZES ora
WHERE ora.C_INTEZMENYID = @intezmenyId
AND ora.C_TANEVID = @tanevID
AND ora.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 #OrarendiOrak bo
WHERE bo.Hetirend = o.Hetirend
FOR XML PATH(''), TYPE
).value
('.', 'NVARCHAR(MAX)') ,1 , 2, ''
) AS Nev
,@intezmenyNev AS IntezmenyNev
,STUFF(
(
SELECT DISTINCT
', ' + dic.C_NAME
FROM #OrarendiOrak qw
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dic ON dic.C_TANEVID = @tanevID
AND dic.TOROLT = 'F'
AND dic.ID = qw.Hetirend
WHERE o.Hetirend = qw.Hetirend
FOR XML PATH(''), TYPE
).value
('(./text())[1]', 'VARCHAR(MAX)'), 1, 2, ''
) AS Hetirend
FROM #OrarendiOrak o
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dic ON o.Hetirend = dic.ID
AND dic.C_TANEVID = @tanevID
AND dic.TOROLT = 'F'
SELECT
COALESCE(@pTanarId, @pTeremId, @pOsztalyCsoportId) AS Id
,IIF(@pIsNapirend = 0, CAST(t.Oraszam AS nvarchar(3)), ISNULL(t.OraKezdete + ' - ' + t.OraVege, '')) AS Ora
,t.Hetirend AS HetirendId
,[1408] AS Hetfo
,[1409] AS Kedd
,[1410] AS Szerda
,[1411] AS Csutortok
,[1412] AS Pentek
,[1413] AS Szombat
,[1414] AS Vasarnap
,t.HetirendNev AS HetirendNev
FROM (
SELECT
*
FROM (
SELECT
STUFF(
(
SELECT
CONVERT(nvarchar(max),
'--------------------' + nchar(13) + nchar(10)
+ bo.TargyNev + nchar(13) + nchar(10) + bo.OsztalyNev +
IIF(@pTeremId IS NOT NULL OR @pOsztalyCsoportId IS NOT NULL, nchar(13) + nchar(10) + bo.TanarNev, '') + nchar(13) + nchar(10) + bo.TeremNev + nchar(13) + nchar(10))
FROM #OrarendiOrak bo
WHERE bo.OraKezdete = o.OraKezdete AND bo.OraVege = o.OraVege
FOR XML PATH(''), TYPE
).value
('.', 'NVARCHAR(MAX)'), 1, 22, ''
) AS TargyNev
,o.HetNapja
,o.Oraszam
,CONVERT(char(5), o.OraKezdete, 108) AS OraKezdete
,CONVERT(char(5), o.OraVege, 108) AS OraVege
,dic.C_NAME AS HetirendNev
,o.Hetirend AS Hetirend
FROM #OrarendiOrak AS o
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS dic ON dic.C_TANEVID = @tanevID
AND dic.TOROLT = 'F'
AND dic.ID = o.Hetirend
) ot PIVOT(MAX(ot.TargyNev) FOR ot.HetNapja IN(
[1408]
,[1409]
,[1410]
,[1411]
,[1412]
,[1413]
,[1414])
) AS pv
) AS t
ORDER BY
HetirendNev
,CASE WHEN @pIsNapirend = 0 THEN t.Oraszam ELSE CAST(t.OraKezdete AS datetime) END
-- Iktatási adatok
IF @pOsztalyCsoportId IS NOT NULL
BEGIN
-- Osztály adatok
SELECT
@pOsztalyCsoportId AS OsztalyId
,ocs.C_EVFOLYAMTIPUSA AS Evfolyam
,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
,ocs.C_KEPZESIFORMA AS KepzesiForma
,o.C_OSZTALYFONOKID AS OsztalyFonokId
,o.C_TANTERVID AS TantervId
,o.C_SZAKMACSOPORT AS SzakmaCsoport
,o.C_AGAZAT AS Agazat
,o.C_SZAKKEPESITES AS Szakkepesites
,o.C_RESZSZAKKEPESITES AS Reszszakkepesites
,ocs.C_KERESZTFELEVES AS OJCSJKeresztfeleves
,ocs.C_VEGZOSEVFOLYAM AS CSJVegzosEvfolyamu
,o.C_TECHNIKAIOSZTALY AS OJTechnikaiOsztaly
,o.C_NEMZETISEGI AS OJNemzetisegi
,o.C_KETTANNYELVU AS OJKettannyelvu
,o.C_NYELVIELOKESZITO AS OJNyelviElokeszito
,ocs.C_ISGYOGYPEDAGOGIAILOGOPEDIAI AS OJIsGyogypedagogiaiLogopediai
,o.C_SPORT AS OJSportOsztaly
,o.C_AJPROGRAM AS OJAranyJanosProgram
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F'
AND o.C_ALTANEVID = ocs.C_TANEVID
AND o.C_ALINTEZMENYID = ocs.C_INTEZMENYID
WHERE ocs.ID = @pOsztalyCsoportId
AND ocs.TOROLT = 'F'
AND ocs.C_TANEVID = @tanevID
AND ocs.C_INTEZMENYID = @intezmenyId
-- Osztály csoportok
SELECT DISTINCT
ot.OsztCsopId AS CsoportId
FROM #OrarendiOrak ot
INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = ot.OsztCsopId
AND cs.TOROLT = 'F'
-- Alkalmazottak
SELECT DISTINCT
ot.TanarID AS TanarId
,f.C_OKTATASIAZONOSITO AS TanarOktAzon
FROM #OrarendiOrak ot
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = ot.TanarID
AND f.TOROLT = 'F'
-- Tanulók
SELECT DISTINCT
f.ID AS TanuloId
,f.C_NYOMTATASINEV AS TanuloNeve
,f.C_OKTATASIAZONOSITO AS TanuloOktAzon
FROM #OrarendiOrak ot
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ot.OsztCsopId
AND tcs.C_TANEVID = @tanevID
AND tcs.TOROLT = 'F'
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID
AND f.TOROLT = 'F'
END
ELSE
IF @pTanarId IS NOT NULL
-- Alkalmazottak
SELECT DISTINCT
orak.TanarID AS TanarId
,f.C_OKTATASIAZONOSITO AS TanarOktAzon
,mua.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
FROM #OrarendiOrak orak
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = orak.TanarID
AND f.TOROLT = 'F'
INNER JOIN T_MUNKAUGYIADATOK_OSSZES mua ON mua.C_ALKALMAZOTTID = orak.TanarID
AND mua.TOROLT = 'F'
ELSE
IF @pTeremId IS NOT NULL
SELECT
t.ID AS TeremId
,t.C_MUKODESIHELYID AS FeladatEllatasiHelyId
FROM T_TEREM_OSSZES t
WHERE t.ID = @pTeremId
AND t.TOROLT = 'F'
END
GO

View File

@@ -0,0 +1,180 @@
DROP PROCEDURE IF EXISTS dbo.uspGetOsztalycsoportTantargyiMulasztasai
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
@oraPerc int
,@isIskolaiErdekuSzamit bit = dbo.fnGetRendszerbeallitasEnumBool(1683, @pIntezmenyId, @pTanevid)
,@sql nvarchar(max) =N''
SET @sql +=N'
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'')
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''
'
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)) / @oraPerc) 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
'
SET @sql +=N'
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
,IsEgyediNap char(1)
,TeremTobbOratLehetTartani char(1)
,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,IsEgyediNap,TeremTobbOratLehetTartani)
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'
EXEC sys.sp_executesql @sql, N'
@pTantargyId int
,@oraPerc int
,@pCsakMegtartott bit
,@pTanevId int
,@pIntezmenyId int
,@isIskolaiErdekuSzamit int
,@pOsztalyId int'
,@pTantargyId = @pTantargyId
,@oraPerc = @oraPerc
,@pCsakMegtartott = @pCsakMegtartott
,@pTanevid = @pTanevid
,@pIntezmenyId = @pIntezmenyId
,@isIskolaiErdekuSzamit = @isIskolaiErdekuSzamit
,@pOsztalyId = @pOsztalyId
END
GO

View File

@@ -0,0 +1,137 @@
DROP PROCEDURE IF EXISTS uspGetUtolsoBeNemIrtOrak
GO
CREATE PROCEDURE uspGetUtolsoBeNemIrtOrak
@pIntezmenyId int
,@pTanevId int
,@pTanarId int
,@pDarab int
AS BEGIN
SET NOCOUNT ON;
DECLARE
@pIdoszakKezdete datetime
,@pIdoszakVege datetime
CREATE TABLE #OrarendiOrak (
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
,IsEgyediNap char(1)
,TeremTobbOratLehetTartani char(1)
,INDEX IX1 CLUSTERED(Datum, HetNapja, Oraszam, TanevRendOsztalyCsoportId, TantargyId, TanarID)
)
SELECT
@pIdoszakKezdete = tanev.C_KEZDONAP
,@pIdoszakVege = (CASE WHEN tanev.C_AKTIV = 'T' THEN GETDATE() ELSE tanev.C_UTOLSOTANITASINAP END)
FROM T_TANEV_OSSZES tanev
WHERE tanev.TOROLT = 'F'
AND tanev.ID = @pTanevId
AND tanev.C_INTEZMENYID = @pIntezmenyId
INSERT INTO #OrarendiOrak (
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
,IsEgyediNap
,TeremTobbOratLehetTartani
)
EXEC sp_GetOrarend
@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pIdoszakKezdete = @pIdoszakKezdete
,@pIdoszakVege = @pIdoszakVege
,@pTanarId = @pTanarId
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = NULL
,@pTanuloId = NULL
,@pTantargyId = NULL
,@pTeremId = NULL
,@pCsakOrarendiOrak = 0
,@pIsNapirend = NULL
SELECT TOP (@pDarab)
orak.Id AS Id
,orak.OraKezdete AS Datum
,IIF(orak.CsengetesiRendID IS NOT NULL, orak.Oraszam, N'-') AS Oraszam
,orak.OsztalyNev AS OsztalyCsoport
,orak.TargyNev AS Tantargy
FROM #OrarendiOrak orak
WHERE orak.OraTipus = N'OrarendiOra'
AND orak.OraKezdete <= @pIdoszakVege
AND orak.OraVege >= @pIdoszakKezdete
ORDER BY orak.OraKezdete ASC
END
GO