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,108 @@
-- Az óra éves sorszáma tantárgy, osztálycsoport és tanár alapján
-- TELEK ÁKOS
-- 2017.03.03.
IF OBJECT_ID('dbo.fnGetEvesOraszam') IS NOT NULL BEGIN
DROP FUNCTION dbo.fnGetEvesOraszam
END
GO
CREATE FUNCTION dbo.fnGetEvesOraszam (
@tantargyId int
,@osztalycsoportId int
,@tanarId int
,@datum datetime
,@intezmenyId int
,@tanevId int
)
RETURNS int
AS
BEGIN
DECLARE
@tanarSzamit bit
,@osztalybontasEgybe bit
,@osztalybontasCsoport bit
,@cnt int
SET @tanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(3075, @intezmenyId, @tanevId)
SET @osztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(3078, @intezmenyId, @tanevId)
SET @osztalybontasCsoport = 0
IF EXISTS (SELECT 1 FROM T_CSOPORT WHERE (ID = @osztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL) OR C_OSZTALYBONTASID = @osztalyCsoportId) BEGIN
SET @osztalybontasCsoport = 1
END
IF @osztalybontasEgybe = 0 OR @osztalybontasCsoport = 0 BEGIN
IF @tanarSzamit = 1 BEGIN
SELECT @cnt = COUNT(1)
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND t.C_TANARID = @tanarId
AND t.C_ORAKEZDETE <= @datum
END
ELSE BEGIN
SELECT @cnt = COUNT(1)
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND t.C_ORAKEZDETE <= @datum
END
END
ELSE BEGIN
IF @tanarSzamit = 1 BEGIN
SELECT @cnt = COUNT(1)
FROM T_TANITASIORA_OSSZES t
WHERE t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID IN (
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId)
UNION
SELECT cs.C_OSZTALYBONTASID
FROM T_CSOPORT cs
WHERE cs.ID = @osztalyCsoportId
UNION
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId
UNION
SELECT @osztalyCsoportId
)
AND t.C_TANARID = @tanarId
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
END
ELSE BEGIN
SELECT @cnt = COUNT(1)
FROM T_TANITASIORA_OSSZES t
WHERE t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID IN (
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId)
UNION
SELECT cs.C_OSZTALYBONTASID
FROM T_CSOPORT cs
WHERE cs.ID = @osztalyCsoportId
UNION
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId
UNION
SELECT @osztalyCsoportId
)
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
END
END
RETURN @cnt
END
GO

View File

@@ -0,0 +1,37 @@
-- Visszaadja a T_TANITASIORA.ID-hoz tartozó éves sorszámot
-- TELEK ÁKOS
-- 2017.03.03.
IF OBJECT_ID('dbo.fnGetEvesOraszamByTanitasiOraId') IS NOT NULL BEGIN
DROP FUNCTION dbo.fnGetEvesOraszamByTanitasiOraId
END
GO
CREATE FUNCTION dbo.fnGetEvesOraszamByTanitasiOraId (
@tanitasiOraId int
)
RETURNS int
AS
BEGIN
DECLARE
@tantargyId int
,@osztalycsoportId int
,@tanarId int
,@datum datetime
,@intezmenyId int
,@tanevId int
SELECT
@tantargyId = tn.C_TANTARGYID
,@osztalycsoportId = tn.C_OSZTALYCSOPORTID
,@tanarId = tn.C_TANARID
,@datum = tn.C_ORAKEZDETE
,@intezmenyId = tn.C_INTEZMENYID
,@tanevId = tn.C_TANEVID
FROM T_TANITASIORA tn
WHERE ID = @tanitasiOraId
RETURN dbo.fnGetEvesOraszam(@tantargyId, @osztalycsoportId, @tanarId, @datum, @intezmenyId, @tanevId)
END
GO

View File

@@ -0,0 +1,132 @@
-- Az óra éves sorszáma tantárgy, osztálycsoport és tanár alapján a megelőző órák listájával
-- TELEK ÁKOS
-- 2017.03.03.
IF OBJECT_ID('dbo.fnGetEvesOraszamLista') IS NOT NULL BEGIN
DROP FUNCTION dbo.fnGetEvesOraszamLista
END
GO
CREATE FUNCTION dbo.fnGetEvesOraszamLista (
@tantargyId int
,@osztalycsoportId int
,@tanarId int
,@datum datetime
,@intezmenyId int
,@tanevId int
)
RETURNS @retTable TABLE (
Id int primary key
,EvesSorszam int
)
AS
BEGIN
DECLARE
@tanarSzamit bit,
@osztalybontasEgybe bit,
@osztalybontasCsoport bit
SET @tanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(3075, @intezmenyId, @tanevId)
SET @osztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(3078, @intezmenyId, @tanevId)
SET @osztalybontasCsoport = 0
IF EXISTS (SELECT 1 FROM T_CSOPORT WHERE (ID = @osztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL) OR C_OSZTALYBONTASID = @osztalyCsoportId) BEGIN
SET @osztalybontasCsoport = 1
END
IF @osztalybontasEgybe = 0 OR @osztalybontasCsoport = 0 BEGIN
IF @tanarSzamit = 1 BEGIN
INSERT INTO @retTable (Id, EvesSorszam)
SELECT
t.ID AS Id
,ROW_NUMBER() OVER (ORDER BY t.C_ORAKEZDETE) AS EvesSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_TANEVID = @tanevId
AND t.C_INTEZMENYID = @intezmenyId
AND t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND t.C_TANARID = @tanarId
AND t.C_ORAKEZDETE <= @datum
END
ELSE BEGIN
INSERT INTO @retTable (Id, EvesSorszam)
SELECT
t.ID AS Id
,ROW_NUMBER() OVER (ORDER BY t.C_ORAKEZDETE) AS EvesSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_TANEVID = @tanevId
AND t.C_INTEZMENYID = @intezmenyId
AND t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND t.C_ORAKEZDETE <= @datum
END
END
ELSE BEGIN
IF @tanarSzamit = 1 BEGIN
INSERT INTO @retTable (Id, EvesSorszam)
SELECT
t.ID AS Id
,ROW_NUMBER() OVER (ORDER BY t.C_ORAKEZDETE) AS EvesSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_TANEVID = @tanevId
AND t.C_INTEZMENYID = @intezmenyId
AND t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID IN (
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId)
UNION
SELECT cs.C_OSZTALYBONTASID
FROM T_CSOPORT cs
WHERE cs.ID = @osztalyCsoportId
UNION
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId
UNION
SELECT @osztalyCsoportId
)
AND t.C_TANARID = @tanarId
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
END
ELSE BEGIN
INSERT INTO @retTable (Id, EvesSorszam)
SELECT
t.ID AS Id
,ROW_NUMBER() OVER (ORDER BY t.C_ORAKEZDETE) AS EvesSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_TANEVID = @tanevId
AND t.C_INTEZMENYID = @intezmenyId
AND t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID IN (
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId)
UNION
SELECT cs.C_OSZTALYBONTASID
FROM T_CSOPORT cs
WHERE cs.ID = @osztalyCsoportId
UNION
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId
UNION
SELECT @osztalyCsoportId
)
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
END
END
RETURN
END
GO

View File

@@ -0,0 +1,44 @@
-- Visszaadja a T_TANITASIORA.ID-hoz tartozó összes megelőző T_TANITASIORA.ID-t és az éves sorszámukat
-- TELEK ÁKOS
-- 2017.03.03.
IF OBJECT_ID('dbo.fnGetEvesOraszamListaByTanitasiOraId') IS NOT NULL BEGIN
DROP FUNCTION dbo.fnGetEvesOraszamListaByTanitasiOraId
END
GO
CREATE FUNCTION dbo.fnGetEvesOraszamListaByTanitasiOraId (
@tanitasiOraId int
)
RETURNS @retTable TABLE (
Id int primary key
,EvesSorszam int
)
AS
BEGIN
DECLARE
@tantargyId int
,@osztalycsoportId int
,@tanarId int
,@datum datetime
,@intezmenyId int
,@tanevId int
SELECT
@tantargyId = tn.C_TANTARGYID
,@osztalycsoportId = tn.C_OSZTALYCSOPORTID
,@tanarId = tn.C_TANARID
,@datum = tn.C_ORAKEZDETE
,@intezmenyId = tn.C_INTEZMENYID
,@tanevId = tn.C_TANEVID
FROM T_TANITASIORA_OSSZES tn
WHERE tn.ID = @tanitasiOraId
INSERT INTO @retTable(Id, EvesSorszam)
SELECT Id, EvesSorszam
FROM fnGetEvesOraszamLista(@tantargyId, @osztalycsoportId, @tanarId, @datum, @intezmenyId, @tanevId)
RETURN
END
GO

View File

@@ -0,0 +1,97 @@
-- ==========================================================================================
-- Author: Telek <20>kos
-- Create date: 2016.05.31.
-- Description: T<>rli az alkalmazottakat (akikn<6B>l csak az alapadatok vannak kit<69>ltve)
-- ==========================================================================================
IF OBJECT_ID('sp_DeleteAlkalmazottak') IS NOT NULL BEGIN
DROP PROCEDURE sp_DeleteAlkalmazottak
END
GO
CREATE PROCEDURE sp_DeleteAlkalmazottak
@xml xml
AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
DECLARE @alkalmazottId TABLE (id int);
DECLARE @torlendoId TABLE (id int);
DECLARE @inputId TABLE (id int);
INSERT INTO @inputId
SELECT
sor.value('.', 'int') AS id
FROM @xml.nodes('/Alkalmazottak/IdLista/Id') as sorok(sor)
INSERT INTO @alkalmazottId (id)
SELECT a.ID
FROM T_ALKALMAZOTT a
WHERE EXISTS (SELECT 1 FROM @inputId WHERE id = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_CSOPORT WHERE C_CSOPORTVEZETOID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_ESZKOZ WHERE C_FELELOSID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_FALIUJSAGBEJEGYZES WHERE C_BEJEGYZOID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_FOGLALKOZAS WHERE C_TANARID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_HELYETTESITESIIDOSZAK WHERE C_HELYETTESTANAROKID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_IGAZOLAS WHERE C_ROGZITOID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_JOGYAKORLAT WHERE C_JOGYAKORLATTULAJDONOSID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_NAPLOELLENORZES WHERE C_ELLENORZOSZEMELYID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_ORALATOGATAS WHERE C_ERTEKELOID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_OSZTALY WHERE C_OFOHELYETTESID = a.ID OR C_OSZTALYFONOKID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_TANARITANTARGY WHERE C_ALKALMAZOTTID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_TANITASIORA WHERE C_HELYETTESITOTANARID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_TANITASIORA WHERE C_ORATULAJDONOSID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_TANMENET WHERE C_FELTOLTOID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_TANULOERTEKELES WHERE C_ERTEKELOID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_TANULOESEMENY WHERE C_FELJEGYZOID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_TANULOKOZOSSEGISZOLGALAT WHERE C_FELJEGYZOID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_TEREM WHERE C_TEREMFELELOSID = a.ID)
AND NOT EXISTS (SELECT 1 FROM T_TEVEKENYSEG WHERE C_ESEMENYTULAJDONOSID = a.ID)
INSERT INTO @torlendoId (id)
SELECT ID
FROM T_FELHASZNALO f
WHERE EXISTS (SELECT 1 FROM @alkalmazottId WHERE id = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_CIMTARCSOPORT WHERE C_TULAJDONOSID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_CIMZETT_FALIUJSAGBEJEGYZES WHERE C_CIMZETTID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_CSATOLTFELHASZNALOK_CSATOLTJ WHERE C_CSATOLTFELHASZNALOKID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_DIGESTMESSAGEQUEUE WHERE C_RECIPIENTID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_EMAILADATOK WHERE C_EMAILCIMZETTID = f.ID OR C_KULDOID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_FELHASZNALOBELEPESTORTENET WHERE C_FELHASZNALOID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_FELHASZNALOERTESITES WHERE C_FELHASZNALOID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_FELHASZNALOERTESITESBEALLITA WHERE C_FELHASZNALOID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_IKTATOTTDOKUMENTUMOK WHERE C_DOKUMENTUMPARTNEREID = f.ID OR C_FELTOLTOFELHASZNALOID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_IMPOSITION WHERE C_BEFIZETESREKOTELEZETTFELHASZ = f.ID OR C_LETREHOZOID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_JOGOSULTFELHASZNALOK_HOZZARE WHERE C_JOGOSULTFELHASZNALOKID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_JOGOSULTSAG_FELHASZNALO WHERE C_FELHASZNALOID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_MESSAGE WHERE C_SENDERID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_OLDALLATOGATOTTSAG WHERE C_FELHASZNALOID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_ONLINEUSER WHERE C_FELHASZNALOID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_PEDAGOGUSELETPALYAMODELL WHERE C_TANARID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_PERSONMESSAGE WHERE C_RECIPIENTID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_RESZTVEVOK_TEVEKENYSEGEK WHERE C_RESZTVEVOKID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_SMS WHERE C_FELHASZNALOID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_TRANSACTION WHERE C_BEFIZETOID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_USERNOTIFICATION WHERE C_FELHASZNALOID = f.ID)
AND NOT EXISTS (SELECT 1 FROM T_USERPROFILE WHERE C_FELHASZNALOID = f.ID)
BEGIN TRY
BEGIN TRANSACTION
DELETE FROM T_FELHASZNALO_SZEREPKOR WHERE C_FELHASZNALOID IN (SELECT ID FROM @torlendoId)
DELETE FROM T_FELHASZNALOBELEPES WHERE C_FELHASZNALOID IN (SELECT ID FROM @torlendoId)
DELETE FROM T_EMAIL WHERE C_FELHASZNALOID IN (SELECT ID FROM @torlendoId)
DELETE FROM T_CIM WHERE C_FELHASZNALOID IN (SELECT ID FROM @torlendoId)
DELETE FROM T_TELEFON WHERE C_FELHASZNALOID IN (SELECT ID FROM @torlendoId)
DELETE FROM T_MUNKAUGYIADATOK WHERE C_ALKALMAZOTTID IN (SELECT ID FROM @torlendoId)
DELETE FROM T_CIMTAR WHERE C_TAGOKID IN (SELECT ID FROM @torlendoId)
DELETE FROM T_ALKALMAZOTT WHERE ID IN (SELECT ID FROM @torlendoId)
DELETE FROM T_FELHASZNALO WHERE ID IN (SELECT ID FROM @torlendoId)
select count(1) from @torlendoId
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 AND XACT_STATE() <> 0
ROLLBACK TRAN;
THROW --RETHROW the ERROR
END CATCH
END
GO

View File

@@ -0,0 +1,141 @@
-- Az el<65>z<EFBFBD> <20>ra adati tant<6E>rgy, oszt<7A>lycsoport <20>s tan<61>r alapj<70>n
-- SZEKERES ANDR<44>S (based on Telek <20>kos fn_GetOraEvesSorszamLista)
-- 2017.05.08.
IF OBJECT_ID('dbo.sp_GetElozoOraAdatai') IS NOT NULL BEGIN
DROP PROCEDURE dbo.sp_GetElozoOraAdatai
END
GO
CREATE PROCEDURE dbo.sp_GetElozoOraAdatai
@tantargyId int
,@osztalycsoportId int
,@tanarId int
,@datum datetime
,@intezmenyId int
,@tanevId int
AS
BEGIN
DECLARE
@tanarSzamit bit,
@osztalybontasEgybe bit,
@osztalybontasCsoport bit
SET @tanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(3075, @intezmenyId, @tanevId)
SET @osztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(3078, @intezmenyId, @tanevId)
SET @osztalybontasCsoport = 0
IF EXISTS (SELECT 1 FROM T_CSOPORT WHERE (ID = @osztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL) OR C_OSZTALYBONTASID = @osztalyCsoportId) BEGIN
SET @osztalybontasCsoport = 1
END
IF @osztalybontasEgybe = 0 OR @osztalybontasCsoport = 0 BEGIN
IF @tanarSzamit = 1 BEGIN
SELECT TOP 1
tanora.ID AS Id
,tanora.C_TEMA AS Tema
,tanora.C_DATUM AS Datum
,felhasznalo.C_NYOMTATASINEV AS HelyettesNev
,IIF(tanora.C_SORSZAMOZANDO = 'T', ROW_NUMBER() OVER (PARTITION BY tanora.C_SORSZAMOZANDO ORDER BY tanora.C_ORAKEZDETE), NULL) AS EvesSorszam
FROM T_TANITASIORA_OSSZES tanora
LEFT JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = tanora.C_HELYETTESITOTANARID
WHERE tanora.C_TANEVID = @tanevId
AND tanora.C_INTEZMENYID = @intezmenyId
AND tanora.C_MEGTARTOTT = 'T'
AND tanora.TOROLT = 'F'
AND tanora.C_TANTARGYID = @tantargyId
AND tanora.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND tanora.C_TANARID = @tanarId
AND tanora.C_ORAKEZDETE < @datum
ORDER BY tanora.C_ORAKEZDETE DESC
END
ELSE BEGIN
SELECT TOP 1
tanora.ID AS Id
,tanora.C_TEMA AS Tema
,tanora.C_DATUM AS Datum
,felhasznalo.C_NYOMTATASINEV AS HelyettesNev
,IIF(tanora.C_SORSZAMOZANDO = 'T', ROW_NUMBER() OVER (PARTITION BY tanora.C_SORSZAMOZANDO ORDER BY tanora.C_ORAKEZDETE), NULL) AS EvesSorszam
FROM T_TANITASIORA_OSSZES tanora
LEFT JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = tanora.C_HELYETTESITOTANARID
WHERE tanora.C_TANEVID = @tanevId
AND tanora.C_INTEZMENYID = @intezmenyId
AND tanora.C_MEGTARTOTT = 'T'
AND tanora.TOROLT = 'F'
AND tanora.C_TANTARGYID = @tantargyId
AND tanora.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND tanora.C_ORAKEZDETE < @datum
ORDER BY tanora.C_ORAKEZDETE DESC
END
END
ELSE BEGIN
IF @tanarSzamit = 1 BEGIN
SELECT TOP 1
tanora.ID AS Id
,tanora.C_TEMA AS Tema
,tanora.C_DATUM AS Datum
,felhasznalo.C_NYOMTATASINEV AS HelyettesNev
,IIF(tanora.C_SORSZAMOZANDO = 'T', ROW_NUMBER() OVER (PARTITION BY tanora.C_SORSZAMOZANDO ORDER BY tanora.C_ORAKEZDETE), NULL) AS EvesSorszam
FROM T_TANITASIORA_OSSZES tanora
LEFT JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = tanora.C_HELYETTESITOTANARID
WHERE tanora.C_TANEVID = @tanevId
AND tanora.C_INTEZMENYID = @intezmenyId
AND tanora.C_TANTARGYID = @tantargyId
AND tanora.C_OSZTALYCSOPORTID IN (
SELECT csoport.ID
FROM T_CSOPORT csoport
WHERE csoport.C_OSZTALYBONTASID = (SELECT subCsoport.C_OSZTALYBONTASID FROM T_CSOPORT subCsoport WHERE subCsoport.ID = @osztalyCsoportId)
UNION
SELECT csoport.C_OSZTALYBONTASID
FROM T_CSOPORT csoport
WHERE csoport.ID = @osztalyCsoportId
UNION
SELECT csoport.ID
FROM T_CSOPORT csoport
WHERE csoport.C_OSZTALYBONTASID = @osztalyCsoportId
UNION
SELECT @osztalyCsoportId
)
AND tanora.C_TANARID = @tanarId
AND tanora.C_ORAKEZDETE < @datum
AND tanora.TOROLT = 'F'
AND tanora.C_MEGTARTOTT = 'T'
ORDER BY tanora.C_ORAKEZDETE DESC
END
ELSE BEGIN
SELECT TOP 1
tanora.ID AS Id
,tanora.C_TEMA AS Tema
,tanora.C_DATUM AS Datum
,felhasznalo.C_NYOMTATASINEV AS HelyettesNev
,IIF(tanora.C_SORSZAMOZANDO = 'T', ROW_NUMBER() OVER (PARTITION BY tanora.C_SORSZAMOZANDO ORDER BY tanora.C_ORAKEZDETE), NULL) AS EvesSorszam
FROM T_TANITASIORA_OSSZES tanora
LEFT JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = tanora.C_HELYETTESITOTANARID
WHERE tanora.C_TANEVID = @tanevId
AND tanora.C_INTEZMENYID = @intezmenyId
AND tanora.C_TANTARGYID = @tantargyId
AND tanora.C_OSZTALYCSOPORTID IN (
SELECT csoport.ID
FROM T_CSOPORT csoport
WHERE csoport.C_OSZTALYBONTASID = (SELECT subCsoport.C_OSZTALYBONTASID FROM T_CSOPORT subCsoport WHERE subCsoport.ID = @osztalyCsoportId)
UNION
SELECT csoport.C_OSZTALYBONTASID
FROM T_CSOPORT csoport
WHERE csoport.ID = @osztalyCsoportId
UNION
SELECT csoport.ID
FROM T_CSOPORT csoport
WHERE csoport.C_OSZTALYBONTASID = @osztalyCsoportId
UNION
SELECT @osztalyCsoportId
)
AND tanora.C_ORAKEZDETE < @datum
AND tanora.TOROLT = 'F'
AND tanora.C_MEGTARTOTT = 'T'
ORDER BY tanora.C_ORAKEZDETE DESC
END
END
END
GO

View File

@@ -0,0 +1,113 @@
-- =============================================
-- Author: <Hoffmann Zsolt>
-- Create date: <2016. 07. 26.>
-- Description: <Haladási napló>
-- =============================================
IF OBJECT_ID('sp_GetHaladasiNaploAdatok') IS NOT NULL BEGIN
DROP PROCEDURE sp_GetHaladasiNaploAdatok
END
GO
CREATE PROCEDURE [dbo].[sp_GetHaladasiNaploAdatok]
@tanevID int,
@osztalyID int
AS
BEGIN
DECLARE @foglalkozasID INT = 0
DECLARE @foglalkozasNev VARCHAR(255)
SET NOCOUNT ON;
SELECT DISTINCT
f.id
,ocs.C_NEV + ' - ' + tt.C_NEV AS Nev
,f.C_TANTARGYID
,f.C_OSZTALYCSOPORTID
,f.C_INTEZMENYID
,f.C_TANARID AS C_TANARID
INTO #Foglalkozasok
FROM T_FOGLALKOZAS_OSSZES f
INNER JOIN T_OSZTALYCSOPORT_OSSZES OCS on OCS.ID = f.C_OSZTALYCSOPORTID and OCS.TOROLT = 'F'
LEFT JOIN T_CSOPORTOK_OSZTALYOK cso on cso.C_CSOPORTOKID = ocs.ID
INNER JOIN T_TANTARGY_OSSZES tt on tt.ID = f.C_TANTARGYID and tt.TOROLT = 'F'
WHERE f.TOROLT = 'F'
AND f.C_TANEVID = @tanevID
AND (ocs.ID = @osztalyID OR cso.C_OSZTALYOKID = @osztalyID)
SELECT
fog.ID
, Nev+' - '+felh.C_NYOMTATASINEV Nev
FROM #Foglalkozasok fog
INNER JOIN T_FELHASZNALO_OSSZES felh on fog.C_TANARID=felh.ID
DECLARE @sorszamTable TABLE (
tanitasiOraId int-- PRIMARY KEY
,evesOraszam int
,foglalkozasId int
)
INSERT INTO @sorszamTable (tanitasiOraId, evesOraszam, foglalkozasId)
SELECT s.Id, s.EvesSorszam, f.ID FROM #Foglalkozasok f
CROSS APPLY dbo.fnGetEvesOraszamLista(
f.C_TANTARGYID
,f.C_OSZTALYCSOPORTID
,f.C_TANARID
,GETDATE()
,f.C_INTEZMENYID
,@tanevID
) s
DECLARE foglalkozasCursor CURSOR FOR
SELECT ID FROM #Foglalkozasok
OPEN foglalkozasCursor
FETCH NEXT FROM foglalkozasCursor into @foglalkozasId
WHILE @@FETCH_STATUS = 0 BEGIN
SELECT DISTINCT
CASE
WHEN tn.C_MEGTARTOTT = 'T' THEN s.evesOraszam -- tn.C_ORAEVESSORSZAM
ELSE '-'
END AS OraSorszam
,fh.C_NYOMTATASINEV TanarNev
,tn.C_TEMA Tema
,CASE
WHEN tn.C_HELYETTESITOTANARID IS NULL THEN ''
ELSE 'H'
END AS Helyettesites
,FORMAT(tn.C_DATUM, 'yyyy.MM.dd.') Datum
,tn.C_ORASZAM OraSzam
,tn.C_MEGJEGYZES Megjegyzes
,tn.C_HAZIFELADAT HaziFeladat
,tn.C_TULORA TulOra
,tn.C_TAMOPORA TamopOra
,tn.C_NEMSZAKRENDSZERUORA NemszakrendszeruOra
,tn.C_IKTTANORA IktOra
,tn.C_NEMZETISEGIORA NemzetisegiOra
,tn.C_MINDENNAPOSTESTNEVELES TestnevelesOra
,tn.C_IPRTANORA IprOra
,tn.C_DIFFERENCIALT DifferencialtOra
,tn.C_KOOPERATIV KooperativOra
,tn.C_MERES MeresOra
,tn.C_DRAMA DramaOra
,tn.C_PARHUZAMOSORA ParhuzamosOra
,tn.C_TIOP12 TiopOra
FROM T_TANITASIORA_OSSZES tn
INNER JOIN T_FELHASZNALO fh ON fh.ID = tn.C_TANARID
LEFT JOIN @sorszamTable s ON s.tanitasiOraId = tn.ID
WHERE tn.TOROLT = 'F'
AND tn.C_TANEVID = @tanevID
AND tn.C_FOGLALKOZASID = @foglalkozasID
ORDER BY FORMAT(tn.C_DATUM, 'yyyy.MM.dd.')
FETCH NEXT FROM foglalkozasCursor
INTO @foglalkozasId
END
CLOSE foglalkozasCursor
DEALLOCATE foglalkozasCursor
DROP TABLE #Foglalkozasok
END
GO

View File

@@ -0,0 +1,224 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('dbo.sp_GetHelyettesitesekOrarend') IS NOT NULL BEGIN
DROP PROCEDURE dbo.sp_GetHelyettesitesekOrarend
END
GO
CREATE PROCEDURE [dbo].[sp_GetHelyettesitesekOrarend]
@IntezmenyId int,
@TanevId int,
@IdoszakKezdete datetime,
@IdoszakVege datetime,
@TanarId int,
@CsakOrarendiOrak bit
AS
BEGIN
SET NOCOUNT ON;
DECLARE @KezdoHet int = DATEPART( ISO_WEEK, @IdoszakKezdete);
DECLARE @ZaroHet int = DATEPART( ISO_WEEK, @IdoszakVege);
SELECT Distinct
Datum,
ISNULL(TanevHetirend, NapHetirend) Hetirend,
ISNULL(TanevHetNapja, NapHetNapja) HetNapja,
OsztalyCsoportId
INTO #TEMPORARENDINAPOK
FROM (
SELECT
NAPTARINAP.Datum Datum,
NAPTARINAP.NapHetirend,
NAPTARINAP.NapHetNapja,
NAPTARINAP.TanevHetirend,
NAPTARINAP.TanevHetNapja,
NAPTARINAP.OsztalyCsoportId
FROM (
(
SELECT
C_NAPDATUMA Datum,
C_HETIREND NapHetirend,
IIF(C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_NAPDATUMA), C_HETNAPJA) NapHetNapja,
null TanevHetirend,
null TanevHetNapja,
null OsztalyCsoportId
FROM T_NAPTARINAP_OSSZES
WHERE (TOROLT = 'F' AND C_NAPDATUMA >= @IdoszakKezdete AND C_NAPDATUMA < @IdoszakVege AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId)
)
union
(
SELECT
NAPTARINAP.C_NAPDATUMA Datum,
NAPTARINAP.C_HETIREND NapHetirend,
IIF(NAPTARINAP.C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_NAPDATUMA), NAPTARINAP.C_HETNAPJA) NapHetNapja,
tanevRendHetirend.C_HETIREND TanevHetirend,
tanevRendHetirend.C_HETNAPJA TanevHetNapja,
tanevRendHetirend.C_OSZTALYCSOPORTID OsztalyCsoportId
FROM T_NAPTARINAP_OSSZES NAPTARINAP
inner JOIN (
SELECT
C_DATUM,
C_HETIREND,
T_OSZTALYCSOPORT_TANEVRENDJE.C_OSZTALYCSOPORTID,
IIF(C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_DATUM), C_HETNAPJA) AS C_HETNAPJA
from T_TANEVRENDJE_OSSZES
inner Join T_OSZTALYCSOPORT_TANEVRENDJE on T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID = T_TANEVRENDJE_OSSZES.ID
WHERE TOROLT = 'F' AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId And TOROLT = 'F') tanevRendHetirend on tanevRendHetirend.C_DATUM = NAPTARINAP.C_NAPDATUMA
WHERE (TOROLT = 'F' AND NAPTARINAP.C_NAPDATUMA >= @IdoszakKezdete AND NAPTARINAP.C_NAPDATUMA < @IdoszakVege AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId)
)
union
(
SELECT
NAPTARINAP.C_NAPDATUMA Datum,
NAPTARINAP.C_HETIREND NapHetirend,
IIF(NAPTARINAP.C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_NAPDATUMA), NAPTARINAP.C_HETNAPJA) NapHetNapja,
NAPTARINAP.C_HETIREND TanevHetirend,
tanevRendHetirend.C_HETNAPJA TanevHetNapja,
tanevRendHetirend.C_OSZTALYCSOPORTID OsztalyCsoportId
FROM T_NAPTARINAP_OSSZES NAPTARINAP
inner JOIN (
SELECT
C_DATUM,
C_HETIREND,
T_OSZTALYCSOPORT_TANEVRENDJE.C_OSZTALYCSOPORTID,
IIF(C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_DATUM), C_HETNAPJA) AS C_HETNAPJA
from T_TANEVRENDJE_OSSZES
inner Join T_OSZTALYCSOPORT_TANEVRENDJE on T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID = T_TANEVRENDJE_OSSZES.ID
WHERE TOROLT = 'F' AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId And TOROLT = 'F') tanevRendHetirend on tanevRendHetirend.C_DATUM = NAPTARINAP.C_NAPDATUMA
WHERE (TOROLT = 'F' AND NAPTARINAP.C_NAPDATUMA >= @IdoszakKezdete AND NAPTARINAP.C_NAPDATUMA < @IdoszakVege AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId)
)
) NAPTARINAP
) result
DECLARE @VegzosUtolsoTanitasiNap_spGetOrarend DATETIME;
SELECT
@VegzosUtolsoTanitasiNap_spGetOrarend = C_DATUM
FROM
T_TANEVRENDJE
WHERE
TOROLT = 'F'
AND C_TANEVID = (SELECT ID FROM T_TANEV WHERE TOROLT = 'F' AND C_AKTIV = 'T' AND C_INTEZMENYID = @IntezmenyId)
AND C_NAPTIPUSA = 1402 AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId
/*Tanítási órák*/
SELECT
TANITASIORA.ID Id,
oo.ID ORARENDIID,
TANITASIORA.C_BONTOTT Bontott,
(SELECT T_NAPTARINAP.C_HETIREND FROM T_NAPTARINAP WHERE T_NAPTARINAP.ID = TANITASIORA.C_NAPTARINAPID) Hetirend,
TANITASIORA.C_HETNAPJA HetNapja,
'' ErvenyessegKezdete,
'' ErvenyessegVege,
TANITASIORA.C_ORAKEZDETE OraKezdete,
TANITASIORA.C_ORAVEGE OraVege,
TANITASIORA.C_ORASZAM Oraszam,
ISNULL(TARGY.C_ROVIDNEV, TARGY.C_NEV) TargyNev,
TANITASIORA.C_MEGTARTOTT Megtartott,
TANITASIORA.C_CSENGETESIRENDORAID CsengetesiRendOraID,
null as MaxNapiOraszam,
OSZTALY.C_NEV OsztalyNev,
CAST(null AS int) TanevRendOsztalyCsoportId,
TANAR.C_NYOMTATASINEV TanarNev,
TEREM.C_NEV TeremNev,
'TanitasiOra' OraTipus,
''Hianyzas,
'' Keses,
TANITASIORA.C_HELYETTESITOTANARID HelyettesitoTanarID,
TANAR.ID TanarID,
TANITASIORA.C_ADMINALTALKIIRT AdminAltalKiirt,
HELYETTESTANAR.C_NYOMTATASINEV HelyettesitoTanarNev,
TANITASIORA.C_ORARENDIORAGROUPID GroupId,
null as HelyettesitesId
INTO #TEMPORAK
FROM T_TANITASIORA TANITASIORA
LEFT JOIN T_TANTARGY TARGY ON (TARGY.ID = TANITASIORA.C_TANTARGYID AND TARGY.C_INTEZMENYID = @IntezmenyId AND TARGY.C_TANEVID=@TanevId)
LEFT JOIN T_FELHASZNALO TANAR ON TANITASIORA.C_TANARID = TANAR.ID
LEFT JOIN T_OSZTALYCSOPORT OSZTALY ON (TANITASIORA.C_OSZTALYCSOPORTID = OSZTALY.ID AND OSZTALY.C_INTEZMENYID = @IntezmenyId AND OSZTALY.C_TANEVID=@TanevId)
LEFT JOIN T_TEREM TEREM ON (TEREM.id = TANITASIORA.C_TEREMID AND TEREM.C_INTEZMENYID = @IntezmenyId AND TEREM.C_TANEVID=@TanevId)
LEFT JOIN T_FELHASZNALO HELYETTESTANAR on TANITASIORA.C_HELYETTESITOTANARID = HELYETTESTANAR.ID
LEFT JOIN T_ORARENDIORA oo ON TANITASIORA.C_ORARENDIORAGROUPID = oo.C_ORARENDIORAGROUPID AND TANITASIORA.C_DATUM BETWEEN oo.C_ORAERVENYESSEGKEZDETE AND oo.C_ORAERVENYESSEGVEGE
WHERE
@CsakOrarendiOrak = 0 AND TANITASIORA.TOROLT='F' AND TANITASIORA.C_INTEZMENYID = @IntezmenyId AND TANITASIORA.C_TANEVID=@TanevId
AND TANITASIORA.C_CSENGETESIRENDORAID IS NOT NULL
AND (TANITASIORA.C_ORAKEZDETE >= @IdoszakKezdete
AND TANITASIORA.C_ORAVEGE <= (CASE WHEN OSZTALY.C_VEGZOSEVFOLYAM = 'T' AND @VegzosUtolsoTanitasiNap_spGetOrarend IS NOT NULL AND @IdoszakVege > @VegzosUtolsoTanitasiNap_spGetOrarend THEN @VegzosUtolsoTanitasiNap_spGetOrarend ELSE @IdoszakVege END))
AND (@TanarId IS NULL OR ( TANITASIORA.C_HELYETTESITOTANARID = @TanarId OR TANITASIORA.C_ORATULAJDONOSID = @TanarId OR TANITASIORA.C_TANARID = @TanarId))
/*Órarendi órák*/
INSERT INTO #TEMPORAK
SELECT DISTINCT
OrarendiOrak.Id, ORARENDIID, Bontott, Hetirend, HetNapja, ErvenyessegKezdete, ErvenyessegVege, OraKezdete, OraVege,
Oraszam, TargyNev, Megtartott, CsengetesiRendOraID, MaxNapiOraszam, OsztalyNev, TanevRendOsztalyCsoportId,TanarNev, TeremNev, OraTipus, Hianyzas, Keses,
T_HELYETTESITESIIDOSZAK.C_HELYETTESTANAROKID HelyettesitoTanarID, TanarID,AdminAltalKiirt,HELYETTESTANAR.C_NYOMTATASINEV as HelyettesitoTanarNev,GroupId, T_HELYETTESITESIIDOSZAK.ID as HelyettesitesId
FROM (
SELECT
T_ORARENDIORA.ID Id,
T_ORARENDIORA.ID ORARENDIID,
T_ORARENDIORA.C_BONTOTT Bontott,
T_ORARENDIORA.C_HETIREND Hetirend,
T_ORARENDIORA.C_HETNAPJA HetNapja,
T_ORARENDIORA.C_ORAERVENYESSEGKEZDETE ErvenyessegKezdete,
T_ORARENDIORA.C_ORAERVENYESSEGVEGE ErvenyessegVege,
DATEADD(HOUR, DATEPART(HOUR, T_ORARENDIORA.C_ORAKEZDETE), DATEADD(MINUTE, DATEPART(MINUTE, T_ORARENDIORA.C_ORAKEZDETE), ORARENDINAPOK.DATUM)) OraKezdete,
DATEADD(HOUR, DATEPART(HOUR, T_ORARENDIORA.C_ORAVEGE), DATEADD(MINUTE, DATEPART(MINUTE, T_ORARENDIORA.C_ORAVEGE), ORARENDINAPOK.DATUM)) OraVege,
T_ORARENDIORA.C_ORASZAM Oraszam,
ISNULL(TARGY.C_ROVIDNEV, TARGY.C_NEV) TargyNev,
'F' Megtartott,
T_ORARENDIORA.C_CSENGETESIRENDORAID CsengetesiRendOraID,
(select max(csro.C_ORASZAM) from T_CSENGETESIRENDORA csro where csro.C_CSENGETESIRENDID =
(select C_CSENGETESIRENDID from T_TANEVRENDJE where CAST(C_DATUM as date) = CAST(ORARENDINAPOK.DATUM as date))) as MaxNapiOraszam,
OSZTALY.C_NEV OsztalyNev,
ORARENDINAPOK.OsztalyCsoportId TanevRendOsztalyCsoportId,
TANAR.C_NYOMTATASINEV TanarNev,
TEREM.C_NEV TeremNev,
'OrarendiOra' OraTipus,
'F' Hianyzas,
'F' Keses,
TANAR.ID TanarID,
C_ORARENDIORAGROUPID GroupId,
'F' AdminAltalKiirt
FROM
T_ORARENDIORA
INNER JOIN #TEMPORARENDINAPOK ORARENDINAPOK ON (( T_ORARENDIORA.C_HETIREND = 1554 OR ORARENDINAPOK.HETIREND = T_ORARENDIORA.C_HETIREND ) AND ORARENDINAPOK.HETNAPJA = T_ORARENDIORA.C_HETNAPJA And (T_ORARENDIORA.C_OSZTALYCSOPORTID = ORARENDINAPOK.OsztalyCsoportId or ORARENDINAPOK.OsztalyCsoportId is null) )
LEFT JOIN T_TANTARGY TARGY ON TARGY.ID = T_ORARENDIORA.C_TANTARGYID AND TARGY.TOROLT = 'F' AND TARGY.C_INTEZMENYID = @IntezmenyId AND TARGY.C_TANEVID=@TanevId
LEFT JOIN T_FELHASZNALO TANAR ON TANAR.ID = T_ORARENDIORA.C_TANARID AND TANAR.TOROLT= 'F'
LEFT JOIN T_OSZTALYCSOPORT OSZTALY ON T_ORARENDIORA.C_OSZTALYCSOPORTID = OSZTALY.ID AND OSZTALY.C_INTEZMENYID = @IntezmenyId AND OSZTALY.C_TANEVID=@TanevId
LEFT JOIN T_TEREM TEREM ON (TEREM.id = T_ORARENDIORA.C_TEREMID AND TEREM.C_INTEZMENYID = @IntezmenyId AND TEREM.C_TANEVID=@TanevId)
WHERE
T_ORARENDIORA.TOROLT='F'
AND T_ORARENDIORA.C_CSENGETESIRENDORAID IS NOT NULL
AND T_ORARENDIORA.C_INTEZMENYID = @IntezmenyId
AND T_ORARENDIORA.C_TANEVID=@TanevId
AND T_ORARENDIORA.C_ORAERVENYESSEGVEGE >= @IdoszakKezdete
AND T_ORARENDIORA.C_ORAERVENYESSEGKEZDETE <= (CASE WHEN OSZTALY.C_VEGZOSEVFOLYAM = 'T' AND @VegzosUtolsoTanitasiNap_spGetOrarend IS NOT NULL AND @IdoszakVege > @VegzosUtolsoTanitasiNap_spGetOrarend THEN @VegzosUtolsoTanitasiNap_spGetOrarend ELSE @IdoszakVege END)
AND ORARENDINAPOK.DATUM BETWEEN @IdoszakKezdete AND (CASE WHEN OSZTALY.C_VEGZOSEVFOLYAM = 'T' AND @VegzosUtolsoTanitasiNap_spGetOrarend IS NOT NULL AND @IdoszakVege > @VegzosUtolsoTanitasiNap_spGetOrarend THEN @VegzosUtolsoTanitasiNap_spGetOrarend ELSE @IdoszakVege END)
AND (
(ORARENDINAPOK.DATUM >= T_ORARENDIORA.C_ORAERVENYESSEGKEZDETE AND ORARENDINAPOK.DATUM < T_ORARENDIORA.C_ORAERVENYESSEGVEGE)
OR
(ORARENDINAPOK.DATUM = T_ORARENDIORA.C_ORAERVENYESSEGKEZDETE AND ORARENDINAPOK.DATUM = T_ORARENDIORA.C_ORAERVENYESSEGVEGE)
)
) OrarendiOrak
LEFT JOIN T_HELYETTESITESIIDOSZAK ON (OrarendiOrak.ID = T_HELYETTESITESIIDOSZAK.C_HELYETTESITETTORARENDID
And T_HELYETTESITESIIDOSZAK.C_HETSORSZAMA >= @KezdoHet
AND (T_HELYETTESITESIIDOSZAK.C_HETSORSZAMA <= @ZaroHet)
And T_HELYETTESITESIIDOSZAK.TOROLT = 'F' AND DATEDIFF(DAY, OrarendiOrak.OraKezdete, T_HELYETTESITESIIDOSZAK.C_HELYETTESITESNAPJA) = 0)
LEFT JOIN T_FELHASZNALO HELYETTESTANAR ON HELYETTESTANAR.ID = T_HELYETTESITESIIDOSZAK.C_HELYETTESTANAROKID
WHERE (@TanarId IS NULL OR OrarendiOrak.TanarID = @TanarId OR T_HELYETTESITESIIDOSZAK.C_HELYETTESTANAROKID = @TanarId)
AND NOT EXISTS (
SELECT 1 FROM #TEMPORAK TANORAK
WHERE TANORAK.GroupId = OrarendiOrak.GroupId
AND DATEDIFF(DAY, TANORAK.OraKezdete, OrarendiOrak.OraKezdete) = 0
AND DATEDIFF(DAY, TANORAK.OraVege, OrarendiOrak.OraVege) = 0
)
SELECT DISTINCT * FROM #TEMPORAK order by orakezdete
DROP TABLE #TEMPORAK
DROP TABLE #TEMPORARENDINAPOK
END

View File

@@ -0,0 +1,144 @@
IF OBJECT_ID('[dbo].[sp_GetHelyettesitesiNaplo]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetHelyettesitesiNaplo]
END
GO
-- ===================================================================
-- Author: Tóth Imre Attila
-- Create date: 2016. 08. 01.
-- Description: Lekérdezések a helyettesítési naplóhoz
-- ===================================================================
CREATE PROCEDURE [dbo].[sp_GetHelyettesitesiNaplo]
@tanarID int,
@tanevID int,
@intezmenyid int
AS
BEGIN
SET NOCOUNT ON;
-- ===================================
-- FEJLÉC
-- ===================================
DECLARE @table TABLE (
EvHonap nvarchar(10),
Helyettesito nvarchar(100)
)
INSERT INTO @table
SELECT DISTINCT
format(C_DATUM, 'yyyy.MM') AS EvHonap,
felhHelyettes.C_NYOMTATASINEV AS Helyettesito
FROM T_TANITASIORA_OSSZES tOra
LEFT JOIN T_FELHASZNALO_OSSZES felhHelyettes on felhHelyettes.ID = tOra.C_HELYETTESITOTANARID
WHERE tOra.C_HELYETTESITOTANARID = @tanarID
AND tOra.C_TANEVID = @tanevID
AND tOra.Torolt='F'
SELECT * FROM @table
SELECT
format(C_NAPDATUMA, 'yyyy.MM') AS EvHonap,
C_HETNAPJA AS Nap
FROM T_NAPTARINAP_OSSZES
WHERE format(C_NAPDATUMA, 'yyyy.MM') IN (SELECT EvHonap FROM @table)
-- ===================================
-- HELYETTESÍTÉSEK (SOROK)
-- ===================================
DECLARE @oraSorszam TABLE (Id int, EvesSorszam int)
INSERT INTO @oraSorszam
SELECT DISTINCT
s.Id
, s.EvesSorszam
FROM (
SELECT DISTINCT
tn.C_TANTARGYID
, tn.C_OSZTALYCSOPORTID
, tn.C_TANARID
, tn.C_INTEZMENYID
FROM T_TANITASIORA_OSSZES tn
WHERE C_HELYETTESITOTANARID = @tanarID
AND C_TANEVID = @tanevID
) x
CROSS APPLY dbo.fnGetEvesOraszamLista (
x.C_TANTARGYID
,x.C_OSZTALYCSOPORTID
,x.C_TANARID
,GETDATE()
,x.C_INTEZMENYID
,@tanevID
) s
SELECT DISTINCT
ROW_NUMBER() over(PARTITION BY FORMAT(C_DATUM, 'yyyy.MM') ORDER BY C_DATUM) Sorsz
,tOra.C_ORASZAM AS Oraszam
,DicItemBase.C_NAME AS HelyettesitesTipusa
,FORMAT(C_DATUM, 'yyyy.MM.dd.') AS Datum
,FORMAT(C_DATUM, 'yyyy.MM') AS EvHonap
,felhOraTul.C_NYOMTATASINEV AS Helyettesitett
,osztcsop.C_NEV AS OsztalyCsoport
,tant.C_NEV AS Tantargy
,tOra.C_TEMA AS Tema
,s.EvesSorszam AS EvesSorszam
FROM T_TANITASIORA_OSSZES tOra
LEFT JOIN @oraSorszam s ON s.ID = tOra.ID
LEFT JOIN T_ORARENDIORA_OSSZES oo ON oo.ID = tOra.C_ORARENDIORAID
LEFT JOIN T_FELHASZNALO_OSSZES felhOraTul ON felhOraTul.ID = oo.C_TANARID
LEFT JOIN T_FELHASZNALO_OSSZES helyettesito ON helyettesito.ID = tOra.C_HELYETTESITOTANARID
LEFT JOIN (SELECT DISTINCT ID, C_NAME FROM T_DICTIONARYITEMBASE_OSSZES) DicItemBase on DicItemBase.ID = tOra.C_HELYETTESITESTIPUSA
LEFT JOIN T_OSZTALYCSOPORT_OSSZES osztcsop ON osztcsop.ID = tOra.C_OSZTALYCSOPORTID
LEFT JOIN T_TANTARGY_OSSZES tant ON tant.ID = tOra.C_TANTARGYID
WHERE helyettesito.ID = @tanarID
AND tOra.C_TANEVID = @tanevID
AND TOra.Torolt = 'F'
ORDER BY Sorsz ASC
-- ===================================
-- HELYETTESÍTÉSEK NAPIBONTÁSBAN
-- ===================================
SELECT
EvHonap,
OsztalyCsoport = TantargyN + ' - ' + OsztCsopN,
ISNULL([1], 0) AS [1], ISNULL([2], 0) AS [2], ISNULL([3], 0) AS [3], ISNULL([4], 0) AS [4], ISNULL([5], 0) AS [5], ISNULL([6], 0) AS [6], ISNULL([7], 0) AS [7], ISNULL([8], 0) AS [8], ISNULL([9], 0) AS [9], ISNULL([10], 0) AS [10],
ISNULL([11], 0) AS [11], ISNULL([12], 0) AS [12], ISNULL([13], 0) AS [13], ISNULL([14], 0) AS [14], ISNULL([15], 0) AS [15], ISNULL([16], 0) AS [16], ISNULL([17], 0) AS [17], ISNULL([18], 0) AS [18], ISNULL([19], 0) AS [19], ISNULL([20], 0) AS [20],
ISNULL([21], 0) AS [21], ISNULL([22], 0) AS [22], ISNULL([23], 0) AS [23], ISNULL([24], 0) AS [24], ISNULL([25], 0) AS [25], ISNULL([26], 0) AS [26], ISNULL([27], 0) AS [27], ISNULL([28], 0) AS [28], ISNULL([29], 0) AS [29], ISNULL([30], 0) AS [30],
ISNULL([31], 0) AS [31],
ISNULL([1], 0) + ISNULL([2], 0) + ISNULL([3], 0) + ISNULL([4], 0) + ISNULL([5], 0) + ISNULL([6], 0) + ISNULL([7], 0) + ISNULL([8], 0) + ISNULL([9], 0) + ISNULL([10], 0) +
ISNULL([11], 0) + ISNULL([12], 0) + ISNULL([13], 0) + ISNULL([14], 0) + ISNULL([15], 0) + ISNULL([16], 0) + ISNULL([17], 0) + ISNULL([18], 0) + ISNULL([19], 0) + ISNULL([20], 0) +
ISNULL([21], 0) + ISNULL([22], 0) + ISNULL([23], 0) + ISNULL([24], 0) + ISNULL([25], 0) + ISNULL([26], 0) + ISNULL([27], 0) + ISNULL([28], 0) + ISNULL([29], 0) + ISNULL([30], 0) +
ISNULL([31], 0) AS Ossz
FROM (
SELECT
CASE (tOra.c_helyettesitestipusa)
WHEN '1496' THEN COUNT(tant.C_NEV)
WHEN '1494' THEN COUNT(tant.C_NEV)
WHEN '1495' THEN COUNT(tant.C_NEV)
END AS Tant,
osztCsop.C_NEV AS osztcsopN,
tant.C_NEV AS TantargyN,
DATEPART(DAY, C_DATUM) AS Nap,
FORMAT(C_DATUM, 'yyyy.MM') AS EvHonap
FROM T_TANITASIORA_OSSZES tOra
INNER JOIN T_TANTARGY_OSSZES tant on tant.ID = tOra.C_TANTARGYID
INNER JOIN T_OSZTALYCSOPORT_OSSZES osztCsop on osztCsop.ID = tOra.C_OSZTALYCSOPORTID
WHERE
tOra.C_HELYETTESITOTANARID = @tanarID
AND tOra.C_TANEVID = @tanevID
AND TOra.TOROLT='F'
GROUP BY
osztCsop.C_NEV, tant.C_NEV, C_DATUM, tOra.c_helyettesitestipusa
) T
PIVOT (
max(Tant)
FOR Nap IN (
[1], [2], [3], [4], [5], [6], [7], [8], [9], [10],
[11], [12], [13], [14], [15], [16], [17], [18], [19], [20],
[21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31]
)
) Helyettesitesek
END
GO

View File

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

View File

@@ -0,0 +1,103 @@
IF OBJECT_ID('sp_GetOraEvesSorszama') IS NOT NULL BEGIN
DROP PROCEDURE sp_GetOraEvesSorszama
END
GO
CREATE PROCEDURE sp_GetOraEvesSorszama
@tantargyId int,
@osztalyCsoportId int,
@datum datetime,
@tanarId int,
@intezmenyId int,
@tanevId int
AS
BEGIN
DECLARE @tanarSzamit bit,
@osztalybontasEgybe bit,
@osztalybontasCsoport bit
SET @tanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(3075, @intezmenyId, @tanevId)
SET @osztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(3078, @intezmenyId, @tanevId)
SET @osztalybontasCsoport = 0
IF EXISTS (SELECT 1 FROM T_CSOPORT WHERE (ID = @osztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL) OR C_OSZTALYBONTASID = @osztalyCsoportId) BEGIN
SET @osztalybontasCsoport = 1
END
IF @osztalybontasEgybe = 0 OR @osztalybontasCsoport = 0 BEGIN
IF @tanarSzamit = 1 BEGIN
SELECT COUNT(1) AS cnt
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND t.C_TANARID = @tanarId
AND t.C_ORAKEZDETE <= @datum
AND t.TOROLT = 'F'
END
ELSE BEGIN
SELECT COUNT(1) AS cnt
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND t.C_ORAKEZDETE <= @datum
AND t.TOROLT = 'F'
END
END
ELSE BEGIN
IF @tanarSzamit = 1 BEGIN
SELECT COUNT(1) AS cnt
FROM T_TANITASIORA_OSSZES t
WHERE t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID IN (
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId)
UNION
SELECT cs.C_OSZTALYBONTASID
FROM T_CSOPORT cs
WHERE cs.ID = @osztalyCsoportId
UNION
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId
UNION
SELECT @osztalyCsoportId
)
AND t.C_TANARID = @tanarId
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
AND t.TOROLT = 'F'
END
ELSE BEGIN
SELECT COUNT(1) AS cnt
FROM T_TANITASIORA_OSSZES t
WHERE t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID IN (
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId)
UNION
SELECT cs.C_OSZTALYBONTASID
FROM T_CSOPORT cs
WHERE cs.ID = @osztalyCsoportId
UNION
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId
UNION
SELECT @osztalyCsoportId
)
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
AND t.TOROLT = 'F'
END
END
END
GO

View File

@@ -0,0 +1,111 @@
IF OBJECT_ID('sp_GetOraEvesSorszamaLista') IS NOT NULL BEGIN
DROP PROCEDURE sp_GetOraEvesSorszamaLista
END
GO
CREATE PROCEDURE sp_GetOraEvesSorszamaLista
@tantargyId int,
@osztalyCsoportId int,
@datum datetime,
@tanarId int,
@intezmenyId int,
@tanevId int
AS
BEGIN
DECLARE @tanarSzamit bit,
@osztalybontasEgybe bit,
@osztalybontasCsoport bit
SET @tanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(3075, @intezmenyId, @tanevId)
SET @osztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(3078, @intezmenyId, @tanevId)
SET @osztalybontasCsoport = 0
IF EXISTS (SELECT 1 FROM T_CSOPORT WHERE (ID = @osztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL) OR C_OSZTALYBONTASID = @osztalyCsoportId) BEGIN
SET @osztalybontasCsoport = 1
END
IF @osztalybontasEgybe = 0 OR @osztalybontasCsoport = 0 BEGIN
IF @tanarSzamit = 1 BEGIN
SELECT
t.ID AS TanitasiOraId
,ROW_NUMBER() OVER (ORDER BY t.C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraEvesSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND t.C_TANARID = @tanarId
AND t.C_ORAKEZDETE <= @datum
AND t.TOROLT = 'F'
END
ELSE BEGIN
SELECT
t.ID AS TanitasiOraId
,ROW_NUMBER() OVER (ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraEvesSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND t.C_ORAKEZDETE <= @datum
AND t.TOROLT = 'F'
END
END
ELSE BEGIN
IF @tanarSzamit = 1 BEGIN
SELECT
t.ID AS TanitasiOraId
,ROW_NUMBER() OVER (ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraEvesSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID IN (
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId)
UNION
SELECT cs.C_OSZTALYBONTASID
FROM T_CSOPORT cs
WHERE cs.ID = @osztalyCsoportId
UNION
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId
UNION
SELECT @osztalyCsoportId
)
AND t.C_TANARID = @tanarId
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
AND t.TOROLT = 'F'
END
ELSE BEGIN
SELECT
t.ID AS TanitasiOraId
,ROW_NUMBER() OVER (ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraEvesSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_TANTARGYID = @tantargyId
AND t.C_OSZTALYCSOPORTID IN (
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId)
UNION
SELECT cs.C_OSZTALYBONTASID
FROM T_CSOPORT cs
WHERE cs.ID = @osztalyCsoportId
UNION
SELECT cs.ID
FROM T_CSOPORT cs
WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId
UNION
SELECT @osztalyCsoportId
)
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
AND t.TOROLT = 'F'
END
END
END
GO

View File

@@ -0,0 +1,102 @@
IF OBJECT_ID('sp_GetOraSorszamByOsztaly') IS NOT NULL BEGIN
DROP PROCEDURE sp_GetOraSorszamByOsztaly
END
GO
CREATE PROCEDURE sp_GetOraSorszamByOsztaly
@osztalyCsoportId INT,
@datum DATETIME,
@intezmenyId INT,
@tanevId INT
AS
BEGIN
DECLARE @tanarSzamit bit,
@osztalybontasEgybe bit,
@osztalybontasCsoport bit
SET @tanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(3075, @intezmenyId, @tanevId)
SET @osztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(3078, @intezmenyId, @tanevId)
SET @osztalybontasCsoport = 0
IF EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES WHERE (ID = @osztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL) OR C_OSZTALYBONTASID = @osztalyCsoportId) BEGIN
SET @osztalybontasCsoport = 1
END
IF @osztalybontasEgybe = 0 OR @osztalybontasCsoport = 0 BEGIN
IF @tanarSzamit = 1 BEGIN
SELECT
t.ID AS TanitasiOraId
,ROW_NUMBER() OVER (PARTITION BY t.C_OSZTALYCSOPORTID, t.C_TANARID, t.C_TANTARGYID ORDER BY t.C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_ORAKEZDETE <= @datum
AND t.TOROLT = 'F'
AND t.C_INTEZMENYID = @intezmenyid
AND t.C_TANEVID = @tanevId
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
END
ELSE BEGIN
SELECT
t.ID AS TanitasiOraId
,ROW_NUMBER() OVER (PARTITION BY t.C_OSZTALYCSOPORTID, t.C_TANTARGYID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND t.C_ORAKEZDETE <= @datum
AND t.TOROLT = 'F'
AND t.C_INTEZMENYID = @intezmenyid
AND t.C_TANEVID = @tanevId
END
END
ELSE BEGIN
DECLARE @osztalyId int, @csoportId int
IF EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES WHERE ID = @osztalyCsoportId) BEGIN
SET @csoportId = @osztalyCsoportId
SELECT @osztalyId = C_OSZTALYBONTASID FROM T_CSOPORT_OSSZES WHERE ID = @osztalyCsoportId
END
ELSE BEGIN
SET @osztalyId = @osztalyCsoportId
SELECT TOP(1) @csoportId = csoport
FROM (
SELECT
t.C_OSZTALYCSOPORTID as csoport
,COUNT(1) AS cnt
FROM T_TANITASIORA_OSSZES t
WHERE t.C_OSZTALYCSOPORTID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_OSZTALYBONTASID = @osztalyCsoportId)
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
AND t.TOROLT = 'F'
AND t.C_INTEZMENYID = @intezmenyid
AND t.C_TANEVID = @tanevId
GROUP BY t.C_OSZTALYCSOPORTID
) x
ORDER BY cnt DESC
END
SELECT TanitasiOraId, OraSorszam
FROM (
SELECT
t.ID AS TanitasiOraId
,ROW_NUMBER() OVER (PARTITION BY t.C_TANTARGYID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraSorszam
,t.C_OSZTALYCSOPORTID AS ocsId
FROM T_TANITASIORA_OSSZES t
WHERE t.C_OSZTALYCSOPORTID IN (@osztalyId, @csoportId)
AND t.C_ORAKEZDETE <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
AND t.TOROLT = 'F'
AND t.C_INTEZMENYID = @intezmenyid
AND t.C_TANEVID = @tanevId
) x
WHERE x.ocsId = @osztalyCsoportId
END
END
GO

View File

@@ -0,0 +1,136 @@
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('sp_GetOralatogatasok') IS NOT NULL BEGIN
DROP PROCEDURE sp_GetOralatogatasok
END
GO
CREATE PROCEDURE [dbo].[sp_GetOralatogatasok]
@IntezmenyId int,
@TanevId int,
@IdoszakKezdete datetime,
@IdoszakVege datetime,
@TanarId int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @KezdoHet int = DATEPART( ISO_WEEK, @IdoszakKezdete);
DECLARE @ZaroHet int = DATEPART( ISO_WEEK, @IdoszakVege);
SELECT
Datum,
CASE
WHEN TanevHetirend is null THEN NapHetirend
ELSE TanevHetirend
END Hetirend,
CASE
WHEN TanevHetNapja is null THEN NapHetNapja
ELSE TanevHetNapja
END HetNapja
INTO
#TEMPORARENDINAPOK
from(
SELECT
NAPTARINAP.Datum Datum,
napHetirend.C_HETIREND NapHetirend,
napHetirend.C_HETNAPJA NapHetNapja,
tanevRendHetirend.C_HETIREND TanevHetirend,
tanevRendHetirend.C_HETNAPJA TanevHetNapja
FROM /*ÁTÍRANDÓÓÓ*/
(
/*Minden naptári nap, ami az időintervallumba beleesik.*/
(SELECT C_NAPDATUMA Datum FROM T_NAPTARINAP_OSSZES NAPTARINAP WHERE (TOROLT = 'F' AND C_NAPDATUMA BETWEEN @IdoszakKezdete AND @IdoszakVege AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId))
EXCEPT /*Kivéve, ha van aznap kiemelt típusú tanévrendje esemény, vagy olyan esemény, aminél C_ORARENDINAP = 'F'.*/
(SELECT C_DATUM Datum FROM T_TANEVRENDJE_OSSZES TANEVRENDJE WHERE (TOROLT = 'F' AND (C_NAPTIPUSA IN (1386,1387,1389,1391,1392,1396,1397,1398,1399,1401) OR C_ORARENDINAP = 'F') AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId))
UNION /*Azokat a dátumokat vegyük hozzá, amely napokon van C_ORARENDINAP = 'T' és C_ORARENDINAP = 'F' esemény is felvéve.*/
(
SELECT
Datum
FROM
(
SELECT
C_DATUM Datum,
COUNT (C_DATUM) DatumCounter
FROM
(SELECT C_DATUM, C_ORARENDINAP FROM T_TANEVRENDJE_OSSZES TANEVRENDJE WHERE (TOROLT = 'F') AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId) TANEVRENDJE1
GROUP BY
C_ORARENDINAP,
C_DATUM
) TANEVRENDJE2
GROUP BY
Datum
HAVING
COUNT(Datum) = 2
)
) NAPTARINAP
left join (select C_NAPDATUMA, C_HETIREND, C_HETNAPJA from T_NAPTARINAP_OSSZES WHERE TOROLT = 'F') napHetirend on napHetirend.C_NAPDATUMA = NAPTARINAP.Datum
left join (select C_DATUM, C_HETIREND, C_HETNAPJA from T_TANEVRENDJE_OSSZES WHERE TOROLT = 'F') tanevRendHetirend on tanevRendHetirend.C_DATUM = NAPTARINAP.Datum
) NapokHetirenddel
-- Vegzosok utolso tanitasi napja
DECLARE @VegzosUtolsoTanitasiNap_spGetOrarend DATETIME;
SELECT
@VegzosUtolsoTanitasiNap_spGetOrarend = C_DATUM
FROM
T_TANEVRENDJE_OSSZES
WHERE
TOROLT = 'F'
AND C_TANEVID = (SELECT ID FROM T_TANEV_OSSZES WHERE TOROLT = 'F' AND C_AKTIV = 'T' AND C_INTEZMENYID = @IntezmenyId)
AND C_NAPTIPUSA = 1402 AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId
-- Tanítási órák
SELECT
TANITASIORA.ID Id,
oo.ID ORARENDIID,
TANITASIORA.C_BONTOTT Bontott,
( SELECT
T_NAPTARINAP_OSSZES.C_HETIREND
FROM
T_NAPTARINAP_OSSZES
WHERE
T_NAPTARINAP_OSSZES.ID = TANITASIORA.C_NAPTARINAPID
) Hetirend,
TANITASIORA.C_HETNAPJA HetNapja,
'' ErvenyessegKezdete,
'' ErvenyessegVege,
TANITASIORA.C_ORAKEZDETE OraKezdete,
TANITASIORA.C_ORAVEGE OraVege,
TANITASIORA.C_ORASZAM Oraszam,
TARGY.C_ROVIDNEV TargyNev,
TANITASIORA.C_MEGTARTOTT Megtartott,
TANITASIORA.C_CSENGETESIRENDORAID CsengetesiRendOraID,
OSZTALY.C_NEV OsztalyNev,
TANAR.C_NYOMTATASINEV TanarNev,
TEREM.C_NEV TeremNev,
'TanitasiOra' OraTipus,
TANITASIORA.C_HELYETTESITOTANARID HelyettesitoTanarID,
TANAR.ID TanarID
INTO #TEMPORAK
FROM
T_TANITASIORA_OSSZES TANITASIORA
LEFT JOIN T_TANTARGY_OSSZES TARGY ON (TARGY.ID = TANITASIORA.C_TANTARGYID AND TARGY.C_INTEZMENYID = @IntezmenyId AND TARGY.C_TANEVID=@TanevId)
LEFT JOIN T_FELHASZNALO_OSSZES TANAR on TANITASIORA.C_TANARID = TANAR.ID
LEFT JOIN T_OSZTALYCSOPORT_OSSZES OSZTALY on (TANITASIORA.C_OSZTALYCSOPORTID = OSZTALY.ID AND OSZTALY.C_INTEZMENYID = @IntezmenyId AND OSZTALY.C_TANEVID=@TanevId)
LEFT JOIN T_TEREM_OSSZES TEREM on (TEREM.id = TANITASIORA.C_TEREMID AND TEREM.C_INTEZMENYID = @IntezmenyId AND TEREM.C_TANEVID=@TanevId)
LEFT JOIN T_ORARENDIORA oo ON TANITASIORA.C_ORARENDIORAGROUPID = oo.C_ORARENDIORAGROUPID AND TANITASIORA.C_DATUM BETWEEN oo.C_ORAERVENYESSEGKEZDETE AND oo.C_ORAERVENYESSEGVEGE
WHERE
TANITASIORA.TOROLT='F' AND TANITASIORA.C_INTEZMENYID = @IntezmenyId AND TANITASIORA.C_TANEVID=@TanevId
AND TANITASIORA.C_CSENGETESIRENDORAID IS NOT NULL
AND TANITASIORA.C_MEGTARTOTT = 'T'
AND (TANITASIORA.C_ORAKEZDETE >= @IdoszakKezdete
AND TANITASIORA.C_ORAVEGE <= (CASE WHEN OSZTALY.C_VEGZOSEVFOLYAM = 'T' AND @VegzosUtolsoTanitasiNap_spGetOrarend IS NOT NULL AND @IdoszakVege > @VegzosUtolsoTanitasiNap_spGetOrarend THEN @VegzosUtolsoTanitasiNap_spGetOrarend ELSE @IdoszakVege END))
AND (@TanarId IS NULL OR ( TANITASIORA.C_HELYETTESITOTANARID = @TanarId OR TANITASIORA.C_ORATULAJDONOSID = @TanarId OR TANITASIORA.C_TANARID = @TanarId ))
SELECT * FROM #TEMPORAK order by orakezdete
DROP TABLE #TEMPORAK
DROP TABLE #TEMPORARENDINAPOK
END

View File

@@ -0,0 +1,300 @@
-- =============================================
-- Author: Sólyom Péter
-- Create date: 2016.02.16.
-- Description: Órarend lekérdezése.
-- =============================================
IF OBJECT_ID('dbo.sp_GetOrarend') IS NOT NULL BEGIN
DROP PROCEDURE dbo.sp_GetOrarend
END
GO
CREATE PROCEDURE [dbo].[sp_GetOrarend]
@IntezmenyId int,
@TanevId int,
@IdoszakKezdete datetime,
@IdoszakVege datetime,
@TanarId int,
@OsztalyCsoportId int,
@TanuloId int,
@CsakOrarendiOrak bit
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE
@KezdoHet int = DATEPART( ISO_WEEK, @IdoszakKezdete),
@ZaroHet int = DATEPART( ISO_WEEK, @IdoszakVege);
SELECT Distinct
Datum,
ISNULL(TanevHetirend, NapHetirend) Hetirend,
ISNULL(TanevHetNapja, NapHetNapja) HetNapja,
OsztalyCsoportId
INTO #TEMPORARENDINAPOK
FROM (
SELECT
NAPTARINAP.Datum Datum,
NAPTARINAP.NapHetirend,
NAPTARINAP.NapHetNapja,
NAPTARINAP.TanevHetirend,
NAPTARINAP.TanevHetNapja,
NAPTARINAP.OsztalyCsoportId
FROM (
(
SELECT
C_NAPDATUMA Datum,
C_HETIREND NapHetirend,
IIF(C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_NAPDATUMA), C_HETNAPJA) NapHetNapja,
null TanevHetirend,
null TanevHetNapja,
null OsztalyCsoportId
FROM T_NAPTARINAP_OSSZES
WHERE (TOROLT = 'F' AND C_NAPDATUMA >= @IdoszakKezdete AND C_NAPDATUMA < @IdoszakVege AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId)
)
union
(
SELECT
NAPTARINAP.C_NAPDATUMA Datum,
NAPTARINAP.C_HETIREND NapHetirend,
IIF(NAPTARINAP.C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_NAPDATUMA), NAPTARINAP.C_HETNAPJA) NapHetNapja,
tanevRendHetirend.C_HETIREND TanevHetirend,
tanevRendHetirend.C_HETNAPJA TanevHetNapja,
tanevRendHetirend.C_OSZTALYCSOPORTID OsztalyCsoportId
FROM T_NAPTARINAP_OSSZES NAPTARINAP
inner JOIN (
SELECT
C_DATUM,
C_HETIREND,
T_OSZTALYCSOPORT_TANEVRENDJE.C_OSZTALYCSOPORTID,
IIF(C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_DATUM), C_HETNAPJA) AS C_HETNAPJA
from T_TANEVRENDJE_OSSZES
inner Join T_OSZTALYCSOPORT_TANEVRENDJE on T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID = T_TANEVRENDJE_OSSZES.ID
WHERE TOROLT = 'F' AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId And TOROLT = 'F') tanevRendHetirend on tanevRendHetirend.C_DATUM = NAPTARINAP.C_NAPDATUMA
WHERE (TOROLT = 'F' AND NAPTARINAP.C_NAPDATUMA >= @IdoszakKezdete AND NAPTARINAP.C_NAPDATUMA < @IdoszakVege AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId)
)
union
(
SELECT
NAPTARINAP.C_NAPDATUMA Datum,
NAPTARINAP.C_HETIREND NapHetirend,
IIF(NAPTARINAP.C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_NAPDATUMA), NAPTARINAP.C_HETNAPJA) NapHetNapja,
NAPTARINAP.C_HETIREND TanevHetirend,
tanevRendHetirend.C_HETNAPJA TanevHetNapja,
tanevRendHetirend.C_OSZTALYCSOPORTID OsztalyCsoportId
FROM T_NAPTARINAP_OSSZES NAPTARINAP
inner JOIN (
SELECT
C_DATUM,
C_HETIREND,
T_OSZTALYCSOPORT_TANEVRENDJE.C_OSZTALYCSOPORTID,
IIF(C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_DATUM), C_HETNAPJA) AS C_HETNAPJA
from T_TANEVRENDJE_OSSZES
inner Join T_OSZTALYCSOPORT_TANEVRENDJE on T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID = T_TANEVRENDJE_OSSZES.ID
WHERE TOROLT = 'F' AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId And TOROLT = 'F') tanevRendHetirend on tanevRendHetirend.C_DATUM = NAPTARINAP.C_NAPDATUMA
WHERE (TOROLT = 'F' AND NAPTARINAP.C_NAPDATUMA >= @IdoszakKezdete AND NAPTARINAP.C_NAPDATUMA < @IdoszakVege AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId)
)
) NAPTARINAP
) result
-- Vegzosok utolso tanitasi napja
DECLARE @VegzosUtolsoTanitasiNap_spGetOrarend DATETIME;
SELECT
@VegzosUtolsoTanitasiNap_spGetOrarend = C_DATUM
FROM T_TANEVRENDJE_OSSZES
WHERE
TOROLT = 'F'
AND C_TANEVID = (SELECT ID FROM T_TANEV_OSSZES WHERE TOROLT = 'F' AND C_AKTIV = 'T' AND C_INTEZMENYID = @IntezmenyId)
AND C_NAPTIPUSA = 1402 AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId
DECLARE @tempCsoportok TABLE (CsoportID int PRIMARY KEY, Oka nvarchar(20))
IF @OsztalyCsoportId IS NOT NULL
BEGIN
INSERT INTO @tempCsoportok (CsoportID, Oka)
SELECT ID as CsoportID, OKA AS Oka
FROM dbo.fnGetKapcsolodoOsztalycsoportokByDate(@OsztalyCsoportId,@IdoszakKezdete,@IdoszakVege)
END
ELSE
BEGIN
INSERT INTO @tempCsoportok (CsoportID, Oka)
SELECT ID as CsoportID, '' AS Oka
FROM T_OSZTALYCSOPORT_OSSZES WHERE C_TANEVID = @TanevId
END
-- Tanítási órák
SELECT
TANITASIORA.ID Id,
oo.ID ORARENDIID,
TANITASIORA.C_BONTOTT Bontott,
(
SELECT T_NAPTARINAP_OSSZES.C_HETIREND
FROM T_NAPTARINAP_OSSZES
WHERE T_NAPTARINAP_OSSZES.ID = TANITASIORA.C_NAPTARINAPID
) Hetirend,
TANITASIORA.C_HETNAPJA HetNapja,
CAST(null AS datetime) ErvenyessegKezdete,
CAST(null AS datetime) ErvenyessegVege,
TANITASIORA.C_ORAKEZDETE OraKezdete,
TANITASIORA.C_ORAVEGE OraVege,
TANITASIORA.C_ORASZAM Oraszam,
ISNULL(TARGY.C_ROVIDNEV, targy.C_NEV) TargyNev,
COALESCE(TARGY.C_ROVIDNEV, targy.C_NEV) TargyNevForMobile,
TARGY.C_TARGYKATEGORIA TargykategoriaID,
TANITASIORA.C_MEGTARTOTT Megtartott,
TANITASIORA.C_CSENGETESIRENDORAID CsengetesiRendOraID,
null as MaxNapiOraszam,
OSZTALY.C_NEV OsztalyNev,
CAST(null AS int) TanevRendOsztalyCsoportId,
tcs.OKA AS MegjelenesOka,
TANAR.C_NYOMTATASINEV TanarNev,
TEREM.C_NEV TeremNev,
'TanitasiOra' OraTipus,
CASE WHEN (@TanuloId IS NOT NULL AND
(SELECT COUNT(1)
FROM T_TANULOMULASZTAS_OSSZES MULASZTAS
WHERE MULASZTAS.C_ORATANULOIID = @TanuloId
AND MULASZTAS.C_TANITASIORAKID = TANITASIORA.ID AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId
AND MULASZTAS.C_TIPUS = 1500 AND MULASZTAS.TOROLT = 'F') > 0) --Kreta.Enums.MulasztasTipusEnum.hianyzas
THEN 'T'
ELSE 'F'
END AS Hianyzas,
CASE WHEN (@TanuloId IS NOT NULL AND
(SELECT COUNT(1)
FROM T_TANULOMULASZTAS_OSSZES MULASZTAS
WHERE MULASZTAS.C_ORATANULOIID = @TanuloId
AND MULASZTAS.C_TANITASIORAKID = TANITASIORA.ID AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId
AND MULASZTAS.C_TIPUS = 1499 AND MULASZTAS.TOROLT = 'F') > 0) --Kreta.Enums.MulasztasTipusEnum.keses
THEN 'T'
ELSE 'F'
END AS Keses,
CASE WHEN (@TanuloId IS NOT NULL AND
(SELECT COUNT(1)
FROM T_TANULOMULASZTAS_OSSZES MULASZTAS
WHERE MULASZTAS.C_ORATANULOIID = @TanuloId
AND MULASZTAS.C_TANITASIORAKID = TANITASIORA.ID AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId
AND MULASZTAS.C_TIPUS = 1817 AND MULASZTAS.TOROLT = 'F') > 0) --Kreta.Enums.MulasztasTipusEnum.ures
THEN 'T'
ELSE 'F'
END AS Ures,
TANITASIORA.C_HELYETTESITOTANARID HelyettesitoTanarID,
HELYETTESTANAR.C_NYOMTATASINEV HelyettesitoTanarNev,
TANAR.ID TanarID,
TANITASIORA.C_ADMINALTALKIIRT AdminAltalKiirt,
TANITASIORA.C_ORARENDIORAGROUPID GroupId,
TANITASIORA.C_TEMA as Tema
INTO #TEMPORAK
FROM T_TANITASIORA_OSSZES TANITASIORA
INNER JOIN @tempCsoportok tcs ON tcs.CsoportID = TANITASIORA.C_OSZTALYCSOPORTID
LEFT JOIN T_TANTARGY_OSSZES TARGY ON (TARGY.ID = TANITASIORA.C_TANTARGYID AND TARGY.C_INTEZMENYID = @IntezmenyId AND TARGY.C_TANEVID=@TanevId)
LEFT JOIN T_FELHASZNALO_OSSZES TANAR on TANITASIORA.C_TANARID = TANAR.ID
LEFT JOIN T_OSZTALYCSOPORT_OSSZES OSZTALY on (TANITASIORA.C_OSZTALYCSOPORTID = OSZTALY.ID AND OSZTALY.C_INTEZMENYID = @IntezmenyId AND OSZTALY.C_TANEVID=@TanevId)
LEFT JOIN T_TEREM_OSSZES TEREM on (TEREM.id = TANITASIORA.C_TEREMID AND TEREM.C_INTEZMENYID = @IntezmenyId AND TEREM.C_TANEVID=@TanevId)
LEFT JOIN T_FELHASZNALO_OSSZES HELYETTESTANAR on TANITASIORA.C_HELYETTESITOTANARID = HELYETTESTANAR.ID
LEFT JOIN T_ORARENDIORA_OSSZES oo ON TANITASIORA.C_ORARENDIORAGROUPID = oo.C_ORARENDIORAGROUPID AND TANITASIORA.C_DATUM BETWEEN oo.C_ORAERVENYESSEGKEZDETE AND oo.C_ORAERVENYESSEGVEGE
WHERE @CsakOrarendiOrak = 0
AND TANITASIORA.TOROLT='F' AND TANITASIORA.C_INTEZMENYID = @IntezmenyId AND TANITASIORA.C_TANEVID=@TanevId
AND TANITASIORA.C_CSENGETESIRENDORAID IS NOT NULL
AND (TANITASIORA.C_ORAKEZDETE >= @IdoszakKezdete
AND TANITASIORA.C_ORAVEGE <= (CASE WHEN OSZTALY.C_VEGZOSEVFOLYAM = 'T' AND @VegzosUtolsoTanitasiNap_spGetOrarend IS NOT NULL AND @IdoszakVege > @VegzosUtolsoTanitasiNap_spGetOrarend THEN DATEADD(DAY, 1, @VegzosUtolsoTanitasiNap_spGetOrarend) ELSE @IdoszakVege END))
AND (@TanarId IS NULL OR ( TANITASIORA.C_HELYETTESITOTANARID = @TanarId OR TANITASIORA.C_ORATULAJDONOSID = @TanarId OR TANITASIORA.C_TANARID = @TanarId ))
AND ( @TanuloId IS NULL OR EXISTS (
SELECT 1 FROM T_TANULOCSOPORT_OSSZES TANCSOP
WHERE
TANCSOP.C_OSZTALYCSOPORTID = TANITASIORA.C_OSZTALYCSOPORTID
AND TANCSOP.TOROLT = 'F' AND TANCSOP.C_INTEZMENYID = @IntezmenyId AND TANCSOP.C_TANEVID=@TanevId
AND TANCSOP.C_BELEPESDATUM < GETDATE()
AND (TANCSOP.C_KILEPESDATUM IS NULL OR TANCSOP.C_KILEPESDATUM >= GETDATE())
AND TANCSOP.C_TANULOID = @TanuloId
)
)
-- Órarendi órák
INSERT INTO #TEMPORAK
SELECT
OrarendiOrak.Id, ORARENDIID, Bontott, Hetirend, HetNapja, ErvenyessegKezdete, ErvenyessegVege, OraKezdete, OraVege,
Oraszam, TargyNev, TargyNevForMobile, TargykategoriaID, Megtartott, CsengetesiRendOraID, MaxNapiOraszam, OsztalyNev,TanevRendOsztalyCsoportId, MegjelenesOka, TanarNev, TeremNev, OraTipus, Hianyzas, Keses, Ures,
T_HELYETTESITESIIDOSZAK_OSSZES.C_HELYETTESTANAROKID HelyettesitoTanarID, HELYETTESTANAR.C_NYOMTATASINEV HelyettesitoTanarNev, TanarID,AdminAltalKiirt,GroupId, Tema
FROM (
SELECT
T_ORARENDIORA_OSSZES.ID Id,
T_ORARENDIORA_OSSZES.ID ORARENDIID,
T_ORARENDIORA_OSSZES.C_BONTOTT Bontott,
T_ORARENDIORA_OSSZES.C_HETIREND Hetirend,
T_ORARENDIORA_OSSZES.C_HETNAPJA HetNapja,
T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGKEZDETE ErvenyessegKezdete,
T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGVEGE ErvenyessegVege,
DATEADD(HOUR, DATEPART(HOUR, T_ORARENDIORA_OSSZES.C_ORAKEZDETE), DATEADD(MINUTE, DATEPART(MINUTE, T_ORARENDIORA_OSSZES.C_ORAKEZDETE), ORARENDINAPOK.DATUM)) OraKezdete,
DATEADD(HOUR, DATEPART(HOUR, T_ORARENDIORA_OSSZES.C_ORAVEGE), DATEADD(MINUTE, DATEPART(MINUTE, T_ORARENDIORA_OSSZES.C_ORAVEGE), ORARENDINAPOK.DATUM)) OraVege,
T_ORARENDIORA_OSSZES.C_ORASZAM Oraszam,
ISNULL(TARGY.C_ROVIDNEV, targy.C_NEV) TargyNev,
COALESCE(TARGY.C_ROVIDNEV, targy.C_NEV) TargyNevForMobile,
TARGY.C_TARGYKATEGORIA TargykategoriaID,
'F' Megtartott,
T_ORARENDIORA_OSSZES.C_CSENGETESIRENDORAID CsengetesiRendOraID,
(select max(csro.C_ORASZAM) from T_CSENGETESIRENDORA csro where csro.C_CSENGETESIRENDID IN
(select C_CSENGETESIRENDID from T_TANEVRENDJE where CAST(C_DATUM as date) = CAST(ORARENDINAPOK.DATUM as date))) as MaxNapiOraszam,
OSZTALY.C_NEV AS OsztalyNev,
ORARENDINAPOK.OsztalyCsoportId TanevRendOsztalyCsoportId,
tcs.OKA AS MegjelenesOka,
TANAR.C_NYOMTATASINEV TanarNev,
TEREM.C_NEV TeremNev,
'OrarendiOra' OraTipus,
'F' Hianyzas,
'F' Keses,
'F' Ures,
TANAR.ID TanarID,
'F' AdminAltalKiirt,
C_ORARENDIORAGROUPID GroupId,
NULL AS Tema
FROM T_ORARENDIORA_OSSZES
INNER JOIN @tempCsoportok tcs ON tcs.CsoportID = T_ORARENDIORA_OSSZES.C_OSZTALYCSOPORTID
INNER JOIN #TEMPORARENDINAPOK ORARENDINAPOK ON (( T_ORARENDIORA_OSSZES.C_HETIREND = 1554 OR ORARENDINAPOK.HETIREND = T_ORARENDIORA_OSSZES.C_HETIREND ) AND ORARENDINAPOK.HETNAPJA = T_ORARENDIORA_OSSZES.C_HETNAPJA And (T_ORARENDIORA_OSSZES.C_OSZTALYCSOPORTID = ORARENDINAPOK.OsztalyCsoportId or ORARENDINAPOK.OsztalyCsoportId is null) )
LEFT JOIN T_TANTARGY_OSSZES TARGY ON TARGY.ID = T_ORARENDIORA_OSSZES.C_TANTARGYID
LEFT JOIN T_FELHASZNALO_OSSZES TANAR ON TANAR.ID = T_ORARENDIORA_OSSZES.C_TANARID
LEFT JOIN T_OSZTALYCSOPORT_OSSZES OSZTALY ON T_ORARENDIORA_OSSZES.C_OSZTALYCSOPORTID = OSZTALY.ID
LEFT JOIN T_TEREM_OSSZES TEREM on (TEREM.id = T_ORARENDIORA_OSSZES.C_TEREMID AND TEREM.C_INTEZMENYID = @IntezmenyId AND TEREM.C_TANEVID=@TanevId)
WHERE
T_ORARENDIORA_OSSZES.TOROLT='F'
AND T_ORARENDIORA_OSSZES.C_CSENGETESIRENDORAID IS NOT NULL
AND T_ORARENDIORA_OSSZES.C_INTEZMENYID = @IntezmenyId
AND T_ORARENDIORA_OSSZES.C_TANEVID = @TanevId
AND T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGVEGE >= @IdoszakKezdete
AND T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGKEZDETE <= (CASE WHEN OSZTALY.C_VEGZOSEVFOLYAM = 'T' AND @VegzosUtolsoTanitasiNap_spGetOrarend IS NOT NULL AND @IdoszakVege > @VegzosUtolsoTanitasiNap_spGetOrarend THEN @VegzosUtolsoTanitasiNap_spGetOrarend ELSE @IdoszakVege END)
AND ORARENDINAPOK.DATUM BETWEEN @IdoszakKezdete AND (CASE WHEN OSZTALY.C_VEGZOSEVFOLYAM = 'T' AND @VegzosUtolsoTanitasiNap_spGetOrarend IS NOT NULL AND @IdoszakVege > @VegzosUtolsoTanitasiNap_spGetOrarend THEN @VegzosUtolsoTanitasiNap_spGetOrarend ELSE @IdoszakVege END)
AND (
(ORARENDINAPOK.DATUM >= T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGKEZDETE AND ORARENDINAPOK.DATUM < T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGVEGE)
OR
(ORARENDINAPOK.DATUM = T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGKEZDETE AND ORARENDINAPOK.DATUM = T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGVEGE)
)
AND (@TanuloId IS NULL OR EXISTS (
SELECT 1 FROM T_TANULOCSOPORT_OSSZES TANCSOP
WHERE
TANCSOP.C_OSZTALYCSOPORTID = T_ORARENDIORA_OSSZES.C_OSZTALYCSOPORTID
AND TANCSOP.TOROLT = 'F' AND TANCSOP.C_INTEZMENYID = @IntezmenyId AND TANCSOP.C_TANEVID=@TanevId
AND TANCSOP.C_BELEPESDATUM < GETDATE()
AND (TANCSOP.C_KILEPESDATUM IS NULL OR TANCSOP.C_KILEPESDATUM >= GETDATE())
AND TANCSOP.C_TANULOID = @TanuloId )
)
) OrarendiOrak
LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES on (OrarendiOrak.ID = T_HELYETTESITESIIDOSZAK_OSSZES.C_HELYETTESITETTORARENDID
And T_HELYETTESITESIIDOSZAK_OSSZES.C_HETSORSZAMA >= @KezdoHet
And (T_HELYETTESITESIIDOSZAK_OSSZES.C_HETSORSZAMA <= @ZaroHet) And T_HELYETTESITESIIDOSZAK_OSSZES.TOROLT = 'F' AND DATEDIFF(DAY, OrarendiOrak.OraKezdete, T_HELYETTESITESIIDOSZAK_OSSZES.C_HELYETTESITESNAPJA) = 0
)
LEFT JOIN T_FELHASZNALO_OSSZES HELYETTESTANAR ON HELYETTESTANAR.ID = T_HELYETTESITESIIDOSZAK_OSSZES.C_HELYETTESTANAROKID
WHERE (@TanarId IS NULL OR OrarendiOrak.TanarID = @TanarId Or T_HELYETTESITESIIDOSZAK_OSSZES.C_HELYETTESTANAROKID = @TanarId)
AND NOT EXISTS (
SELECT 1 FROM #TEMPORAK TANORAK
WHERE TANORAK.GroupId = OrarendiOrak.GroupId
AND DATEDIFF(DAY, TANORAK.OraKezdete, OrarendiOrak.OraKezdete) = 0
AND DATEDIFF(DAY, TANORAK.OraVege, OrarendiOrak.OraVege) = 0
)
SELECT DISTINCT * FROM #TEMPORAK order by orakezdete
DROP TABLE #TEMPORAK
DROP TABLE #TEMPORARENDINAPOK
END

View File

@@ -0,0 +1,292 @@
-- =============================================
-- Author: Sólyom Péter
-- Create date: 2016.02.16.
-- Description: Órarend lekérdezése.
-- =============================================
IF OBJECT_ID('sp_GetOrarendTanoranKivuli') IS NOT NULL BEGIN
DROP PROCEDURE sp_GetOrarendTanoranKivuli
END
GO
CREATE PROCEDURE [sp_GetOrarendTanoranKivuli]
@IntezmenyId int,
@TanevId int,
@IdoszakKezdete datetime,
@IdoszakVege datetime,
@TanarId int,
@OsztalyCsoportId int,
@TanuloId int,
@CsakOrarendiOrak bit
AS
BEGIN
SET NOCOUNT ON;
DECLARE @KezdoHet int = DATEPART( ISO_WEEK, @IdoszakKezdete);
DECLARE @ZaroHet int = DATEPART( ISO_WEEK, @IdoszakVege);
SELECT Distinct
Datum,
ISNULL(TanevHetirend, NapHetirend) Hetirend,
ISNULL(TanevHetNapja, NapHetNapja) HetNapja,
OsztalyCsoportId
INTO #TEMPORARENDINAPOK
FROM (
SELECT
NAPTARINAP.Datum Datum,
NAPTARINAP.NapHetirend,
NAPTARINAP.NapHetNapja,
NAPTARINAP.TanevHetirend,
NAPTARINAP.TanevHetNapja,
NAPTARINAP.OsztalyCsoportId
FROM (
(
SELECT
C_NAPDATUMA Datum,
C_HETIREND NapHetirend,
IIF(C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_NAPDATUMA), C_HETNAPJA) NapHetNapja,
null TanevHetirend,
null TanevHetNapja,
null OsztalyCsoportId
FROM T_NAPTARINAP_OSSZES
WHERE (TOROLT = 'F' AND C_NAPDATUMA >= @IdoszakKezdete AND C_NAPDATUMA < @IdoszakVege AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId)
)
union
(
SELECT
NAPTARINAP.C_NAPDATUMA Datum,
NAPTARINAP.C_HETIREND NapHetirend,
IIF(NAPTARINAP.C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_NAPDATUMA), NAPTARINAP.C_HETNAPJA) NapHetNapja,
tanevRendHetirend.C_HETIREND TanevHetirend,
tanevRendHetirend.C_HETNAPJA TanevHetNapja,
tanevRendHetirend.C_OSZTALYCSOPORTID OsztalyCsoportId
FROM T_NAPTARINAP_OSSZES NAPTARINAP
inner JOIN (
SELECT
C_DATUM,
C_HETIREND,
T_OSZTALYCSOPORT_TANEVRENDJE.C_OSZTALYCSOPORTID,
IIF(C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_DATUM), C_HETNAPJA) AS C_HETNAPJA
from T_TANEVRENDJE_OSSZES
inner Join T_OSZTALYCSOPORT_TANEVRENDJE on T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID = T_TANEVRENDJE_OSSZES.ID
WHERE TOROLT = 'F' AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId And TOROLT = 'F') tanevRendHetirend on tanevRendHetirend.C_DATUM = NAPTARINAP.C_NAPDATUMA
WHERE (TOROLT = 'F' AND NAPTARINAP.C_NAPDATUMA >= @IdoszakKezdete AND NAPTARINAP.C_NAPDATUMA < @IdoszakVege AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId)
)
union
(
SELECT
NAPTARINAP.C_NAPDATUMA Datum,
NAPTARINAP.C_HETIREND NapHetirend,
IIF(NAPTARINAP.C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_NAPDATUMA), NAPTARINAP.C_HETNAPJA) NapHetNapja,
NAPTARINAP.C_HETIREND TanevHetirend,
tanevRendHetirend.C_HETNAPJA TanevHetNapja,
tanevRendHetirend.C_OSZTALYCSOPORTID OsztalyCsoportId
FROM T_NAPTARINAP_OSSZES NAPTARINAP
inner JOIN (
SELECT
C_DATUM,
C_HETIREND,
T_OSZTALYCSOPORT_TANEVRENDJE.C_OSZTALYCSOPORTID,
IIF(C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_DATUM), C_HETNAPJA) AS C_HETNAPJA
from T_TANEVRENDJE_OSSZES
inner Join T_OSZTALYCSOPORT_TANEVRENDJE on T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID = T_TANEVRENDJE_OSSZES.ID
WHERE TOROLT = 'F' AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId And TOROLT = 'F') tanevRendHetirend on tanevRendHetirend.C_DATUM = NAPTARINAP.C_NAPDATUMA
WHERE (TOROLT = 'F' AND NAPTARINAP.C_NAPDATUMA >= @IdoszakKezdete AND NAPTARINAP.C_NAPDATUMA < @IdoszakVege AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId)
)
) NAPTARINAP
) result
-- Vegzosok utolso tanitasi napja
DECLARE @VegzosUtolsoTanitasiNap DATETIME;
SELECT
@VegzosUtolsoTanitasiNap = C_DATUM
FROM
T_TANEVRENDJE_OSSZES
WHERE
TOROLT = 'F'
AND C_TANEVID = (SELECT ID FROM T_TANEV_OSSZES WHERE TOROLT = 'F' AND C_AKTIV = 'T' AND C_INTEZMENYID = @IntezmenyId)
AND C_NAPTIPUSA = 1402 AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId
DECLARE @TEMPCSOPORTOK TABLE (CsoportID int PRIMARY KEY, Oka nvarchar(20))
IF @OsztalyCsoportId IS NOT NULL
BEGIN
INSERT INTO @tempCsoportok (CsoportID, Oka)
SELECT ID as CsoportID, OKA AS Oka
FROM dbo.fnGetKapcsolodoOsztalycsoportokByDate(@OsztalyCsoportId,@IdoszakKezdete,@IdoszakVege)
END
ELSE
BEGIN
INSERT INTO @tempCsoportok (CsoportID, Oka)
SELECT ID as CsoportID, '' AS Oka
FROM T_OSZTALYCSOPORT_OSSZES WHERE C_TANEVID = @TanevId
END
-- Tanítási órák
SELECT
TANITASIORA.ID Id,
oo.ID ORARENDIID,
TANITASIORA.C_BONTOTT Bontott,
( SELECT
T_NAPTARINAP_OSSZES.C_HETIREND
FROM
T_NAPTARINAP_OSSZES
WHERE
T_NAPTARINAP_OSSZES.ID = TANITASIORA.C_NAPTARINAPID
) Hetirend,
TANITASIORA.C_HETNAPJA HetNapja,
CAST('19000101' AS DATETIME) ErvenyessegKezdete,
CAST('19000101' AS DATETIME) ErvenyessegVege,
TANITASIORA.C_ORAKEZDETE OraKezdete,
TANITASIORA.C_ORAVEGE OraVege,
ISNULL(TARGY.C_ROVIDNEV, targy.C_NEV) TargyNev,
TANITASIORA.C_MEGTARTOTT Megtartott,
OSZTALY.C_NEV OsztalyNev,
CAST(null AS int) TanevRendOsztalyCsoportId,
fh.C_NYOMTATASINEV TanarNev,
TEREM.C_NEV TeremNev,
'TanitasiOra' OraTipus,
CASE WHEN (@TanuloId IS NOT NULL AND
(SELECT COUNT(1)
FROM T_TANULOMULASZTAS_OSSZES MULASZTAS
WHERE MULASZTAS.C_ORATANULOIID = @TanuloId
AND MULASZTAS.C_TANITASIORAKID = TANITASIORA.ID AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId
AND MULASZTAS.C_TIPUS = 1500 AND MULASZTAS.TOROLT = 'F') > 0) --Kreta.Enums.MulasztasTipusEnum.hianyzas
THEN 'T'
ELSE 'F'
END AS Hianyzas,
CASE WHEN (@TanuloId IS NOT NULL AND
(SELECT COUNT(1)
FROM T_TANULOMULASZTAS_OSSZES MULASZTAS
WHERE MULASZTAS.C_ORATANULOIID = @TanuloId
AND MULASZTAS.C_TANITASIORAKID = TANITASIORA.ID AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId
AND MULASZTAS.C_TIPUS = 1499 AND MULASZTAS.TOROLT = 'F') > 0) --Kreta.Enums.MulasztasTipusEnum.keses
THEN 'T'
ELSE 'F'
END AS Keses,
CASE WHEN (@TanuloId IS NOT NULL AND
(SELECT COUNT(1)
FROM T_TANULOMULASZTAS_OSSZES MULASZTAS
WHERE MULASZTAS.C_ORATANULOIID = @TanuloId
AND MULASZTAS.C_TANITASIORAKID = TANITASIORA.ID AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId
AND MULASZTAS.C_TIPUS = 1817 AND MULASZTAS.TOROLT = 'F') > 0) --Kreta.Enums.MulasztasTipusEnum.ures
THEN 'T'
ELSE 'F'
END AS Ures,
TANITASIORA.C_HELYETTESITOTANARID HelyettesitoTanarID,
HELYETTESTANAR.C_NYOMTATASINEV HelyettesitoTanarNev,
fh.ID TanarID,
null as HelyettesitesId,
TANITASIORA.C_ADMINALTALKIIRT AdminAltalKiirt,
TANITASIORA.C_ORARENDIORAGROUPID GroupId,
TANITASIORA.C_TEMA as Tema
INTO #TEMPORAK
FROM T_TANITASIORA_OSSZES TANITASIORA
INNER JOIN @TEMPCSOPORTOK tcs ON tcs.CsoportID = TANITASIORA.C_OSZTALYCSOPORTID
LEFT JOIN T_TANTARGY_OSSZES TARGY ON (TARGY.ID = TANITASIORA.C_TANTARGYID)
LEFT JOIN T_FELHASZNALO_OSSZES fh on TANITASIORA.C_TANARID = fh.ID
LEFT JOIN T_OSZTALYCSOPORT_OSSZES OSZTALY on (TANITASIORA.C_OSZTALYCSOPORTID = OSZTALY.ID )
LEFT JOIN T_TEREM_OSSZES TEREM on (TEREM.id = TANITASIORA.C_TEREMID )
LEFT JOIN T_FELHASZNALO_OSSZES HELYETTESTANAR on TANITASIORA.C_HELYETTESITOTANARID = HELYETTESTANAR.ID
LEFT JOIN T_ORARENDIORA_OSSZES oo ON TANITASIORA.C_ORARENDIORAGROUPID = oo.C_ORARENDIORAGROUPID AND TANITASIORA.C_DATUM BETWEEN oo.C_ORAERVENYESSEGKEZDETE AND oo.C_ORAERVENYESSEGVEGE
WHERE @CsakOrarendiOrak = 0 -- TANÓRA IS
AND TANITASIORA.TOROLT='F' AND TANITASIORA.C_INTEZMENYID = @IntezmenyId AND TANITASIORA.C_TANEVID=@TanevId
AND TANITASIORA.C_CSENGETESIRENDORAID IS NULL
AND (TANITASIORA.C_ORAKEZDETE >= @IdoszakKezdete
AND TANITASIORA.C_ORAVEGE <= (CASE WHEN OSZTALY.C_VEGZOSEVFOLYAM = 'T' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND @IdoszakVege > @VegzosUtolsoTanitasiNap THEN DATEADD(DAY, 1, @VegzosUtolsoTanitasiNap) ELSE @IdoszakVege END))
AND (@TanarId IS NULL OR ( TANITASIORA.C_HELYETTESITOTANARID = @TanarId OR TANITASIORA.C_ORATULAJDONOSID = @TanarId OR TANITASIORA.C_TANARID = @TanarId))
AND ( @TanuloId IS NULL
OR EXISTS (SELECT 1
FROM T_TANULOCSOPORT_OSSZES TANCSOP
WHERE TANCSOP.C_OSZTALYCSOPORTID = TANITASIORA.C_OSZTALYCSOPORTID
AND TANCSOP.TOROLT = 'F' AND TANCSOP.C_INTEZMENYID = @IntezmenyId AND TANCSOP.C_TANEVID=@TanevId
AND TANCSOP.C_BELEPESDATUM < GETDATE()
AND (TANCSOP.C_KILEPESDATUM IS NULL OR TANCSOP.C_KILEPESDATUM >= GETDATE()) -- TÖRÖLT
AND TANCSOP.C_TANULOID = @TanuloId )
)
-- Órarendi órák
INSERT INTO #TEMPORAK
Select
OrarendiOrak.Id, ORARENDIID, Bontott, Hetirend, HetNapja, ErvenyessegKezdete, ErvenyessegVege, OraKezdete, OraVege,
TargyNev, Megtartott, OsztalyNev,TanevRendOsztalyCsoportId, TanarNev, TeremNev, OraTipus, Hianyzas, Keses, Ures,
C_HELYETTESTANAROKID HelyettesitoTanarID, HELYETTESTANAR.C_NYOMTATASINEV HelyettesitoTanarNev, TanarID, T_HELYETTESITESIIDOSZAK_OSSZES.ID,AdminAltalKiirt,GroupId, Tema
FROM (
SELECT
T_ORARENDIORA_OSSZES.ID Id,
T_ORARENDIORA_OSSZES.ID ORARENDIID,
T_ORARENDIORA_OSSZES.C_BONTOTT Bontott,
T_ORARENDIORA_OSSZES.C_HETIREND Hetirend,
T_ORARENDIORA_OSSZES.C_HETNAPJA HetNapja,
T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGKEZDETE ErvenyessegKezdete,
T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGVEGE ErvenyessegVege,
DATEADD(HOUR, DATEPART(HOUR, T_ORARENDIORA_OSSZES.C_ORAKEZDETE), DATEADD(MINUTE, DATEPART(MINUTE, T_ORARENDIORA_OSSZES.C_ORAKEZDETE), ORARENDINAPOK.DATUM)) OraKezdete,
DATEADD(HOUR, DATEPART(HOUR, T_ORARENDIORA_OSSZES.C_ORAVEGE), DATEADD(MINUTE, DATEPART(MINUTE, T_ORARENDIORA_OSSZES.C_ORAVEGE), ORARENDINAPOK.DATUM)) OraVege,
ISNULL(TARGY.C_ROVIDNEV, targy.C_NEV) TargyNev,
'F' Megtartott,
OSZTALY.C_NEV OsztalyNev,
ORARENDINAPOK.OsztalyCsoportId TanevRendOsztalyCsoportId,
fh.C_NYOMTATASINEV TanarNev,
TEREM.C_NEV TeremNev,
'OrarendiOra' OraTipus,
'F' Hianyzas,
'F' Keses,
'F' Ures,
fh.ID TanarID,
'F' AdminAltalKiirt,
C_ORARENDIORAGROUPID GroupId,
NULL AS Tema
FROM T_ORARENDIORA_OSSZES
INNER JOIN @TEMPCSOPORTOK tcs ON tcs.CsoportID = T_ORARENDIORA_OSSZES.C_OSZTALYCSOPORTID
INNER JOIN #TEMPORARENDINAPOK ORARENDINAPOK ON (( T_ORARENDIORA_OSSZES.C_HETIREND = 1554 OR ORARENDINAPOK.HETIREND = T_ORARENDIORA_OSSZES.C_HETIREND ) AND ORARENDINAPOK.HETNAPJA = T_ORARENDIORA_OSSZES.C_HETNAPJA And (T_ORARENDIORA_OSSZES.C_OSZTALYCSOPORTID = ORARENDINAPOK.OsztalyCsoportId or ORARENDINAPOK.OsztalyCsoportId is null) )
LEFT JOIN T_TANTARGY_OSSZES TARGY ON TARGY.ID = T_ORARENDIORA_OSSZES.C_TANTARGYID
LEFT JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = T_ORARENDIORA_OSSZES.C_TANARID
LEFT JOIN T_OSZTALYCSOPORT_OSSZES OSZTALY ON T_ORARENDIORA_OSSZES.C_OSZTALYCSOPORTID = OSZTALY.ID
LEFT JOIN T_TEREM_OSSZES TEREM on (TEREM.id = T_ORARENDIORA_OSSZES.C_TEREMID )
WHERE
T_ORARENDIORA_OSSZES.TOROLT= 'F'
AND T_ORARENDIORA_OSSZES.C_CSENGETESIRENDORAID IS NULL
AND T_ORARENDIORA_OSSZES.C_INTEZMENYID = @IntezmenyId
AND T_ORARENDIORA_OSSZES.C_TANEVID = @TanevId
AND T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGVEGE >= @IdoszakKezdete
AND T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGKEZDETE <= (CASE WHEN OSZTALY.C_VEGZOSEVFOLYAM = 'T' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND @IdoszakVege > @VegzosUtolsoTanitasiNap THEN @VegzosUtolsoTanitasiNap ELSE @IdoszakVege END)
AND ORARENDINAPOK.DATUM BETWEEN @IdoszakKezdete AND (CASE WHEN OSZTALY.C_VEGZOSEVFOLYAM = 'T' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND @IdoszakVege > @VegzosUtolsoTanitasiNap THEN @VegzosUtolsoTanitasiNap ELSE @IdoszakVege END)
AND TEREM.C_TANEVID = @TanevId
AND (
(ORARENDINAPOK.DATUM >= T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGKEZDETE AND ORARENDINAPOK.DATUM < T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGVEGE)
OR
(ORARENDINAPOK.DATUM = T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGKEZDETE AND ORARENDINAPOK.DATUM = T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGVEGE)
)
AND ( @TanuloId IS NULL
OR EXISTS (
SELECT 1
FROM T_TANULOCSOPORT_OSSZES TANCSOP
WHERE TANCSOP.C_OSZTALYCSOPORTID = T_ORARENDIORA_OSSZES.C_OSZTALYCSOPORTID
AND TANCSOP.TOROLT = 'F'
AND TANCSOP.C_INTEZMENYID = @IntezmenyId
AND TANCSOP.C_TANEVID = @TanevId
AND TANCSOP.C_BELEPESDATUM < GETDATE()
AND (TANCSOP.C_KILEPESDATUM IS NULL OR TANCSOP.C_KILEPESDATUM >= GETDATE()) -- TÖRÖLT
AND TANCSOP.C_TANULOID = @TanuloId )
)
) OrarendiOrak
LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES on (OrarendiOrak.ID = T_HELYETTESITESIIDOSZAK_OSSZES.C_HELYETTESITETTORARENDID
And T_HELYETTESITESIIDOSZAK_OSSZES.C_HETSORSZAMA >= @KezdoHet
And (T_HELYETTESITESIIDOSZAK_OSSZES.C_HETSORSZAMA <= @ZaroHet) And T_HELYETTESITESIIDOSZAK_OSSZES.TOROLT = 'F' AND DATEDIFF(DAY, OrarendiOrak.OraKezdete, T_HELYETTESITESIIDOSZAK_OSSZES.C_HELYETTESITESNAPJA) = 0
)
LEFT JOIN T_FELHASZNALO_OSSZES HELYETTESTANAR ON HELYETTESTANAR.ID = T_HELYETTESITESIIDOSZAK_OSSZES.C_HELYETTESTANAROKID
WHERE (@TanarId IS NULL OR OrarendiOrak.TanarID = @TanarId Or T_HELYETTESITESIIDOSZAK_OSSZES.C_HELYETTESTANAROKID = @TanarId)
AND NOT EXISTS (
SELECT 1
FROM #TEMPORAK TANORAK
WHERE TANORAK.GroupId = OrarendiOrak.GroupId
AND DATEDIFF(DAY, TANORAK.OraKezdete, OrarendiOrak.OraKezdete) = 0
AND DATEDIFF(DAY, TANORAK.OraVege, OrarendiOrak.OraVege) = 0
) -- HA MÁR VAN TANÍTÁSI ÓRA, AMELYIK VALAMELYIK ÓRARENDI ÓRÁBÓL JÖN, AKKOR NEM KELL AHHOZ AZ ÓRARENDI ÓRA IS
SELECT DISTINCT * FROM #TEMPORAK order by orakezdete
DROP TABLE #TEMPORAK
DROP TABLE #TEMPORARENDINAPOK
END
GO

View File

@@ -0,0 +1,126 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_PedagogusNemBejegyzettOrai]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_PedagogusNemBejegyzettOrai]
END
GO
CREATE PROCEDURE [dbo].[sp_PedagogusNemBejegyzettOrai]
@tanevID INT,
@mindenHeten INT,
@tanarID INT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @vegzosUtolsoNapDatuma DATE = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_TANEVID = @tanevId AND TOROLT = 'F' AND C_NAPTIPUSA = 1402)
DECLARE @OsztalyCsoportokTanevRendje TABLE (OsztalyCsoportId INT, Datum DATE, isOrarendiNap NVARCHAR(1))
INSERT INTO @OsztalyCsoportokTanevRendje
SELECT
C_OSZTALYCSOPORTID
,C_DATUM
,C_ORARENDINAP
FROM T_OSZTALYCSOPORT_TANEVRENDJE ocstr
INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.Id = ocstr.C_TANEVRENDJEID
WHERE
TOROLT = 'F'
AND tr.C_OSSZESCSOPORTRAVONATKOZIK = 'F'
AND tr.C_ORARENDINAP = 'F'
SELECT
CONVERT(NVARCHAR(10),ROW_NUMBER() OVER (ORDER BY Napdatuma ))+'.' COLUMN440
,FORMAT(Napdatuma, 'yyyy.MM.dd.') COLUMN273
,Oraszam COLUMN274
,OsztalyNev COLUMN673
,TanarNev COLUMN456
,TantargyNev COLUMN252
,TeremNev COLUMN2477
,Hetirend COLUMN4252
FROM (
SELECT
naptar.C_NAPDATUMA Napdatuma
,oo.C_ORASZAM Oraszam
,ocs.C_NEV OsztalyNev
,f.C_NYOMTATASINEV TanarNev
,t.C_NEV TantargyNev
,ter.C_NEV TeremNev
,d.C_NAME Hetirend
FROM T_ORARENDIORA_OSSZES oo
INNER JOIN T_NAPTARINAP_OSSZES naptar ON ((naptar.C_NAPDATUMA >= oo.C_ORAERVENYESSEGKEZDETE
AND oo.C_ORAERVENYESSEGVEGE> naptar.C_NAPDATUMA) OR (naptar.C_NAPDATUMA=oo.C_ORAERVENYESSEGKEZDETE AND naptar.C_NAPDATUMA=oo.C_ORAERVENYESSEGVEGE))
AND (naptar.C_HETIREND = oo.C_HETIREND OR oo.C_HETIREND = @mindenHeten)
AND oo.C_HETNAPJA=naptar.C_HETNAPJA
AND (naptar.C_NAPTIPUSA NOT IN (1386,1387,1389,1391,1392,1396,1397,1398,1399,1401))
LEFT JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = naptar.C_NAPDATUMA AND tr.C_TANEVID = naptar.C_TANEVID AND tr.TOROLT = 'F' AND tr.C_OSSZESCSOPORTRAVONATKOZIK = 'T'
LEFT JOIN @OsztalyCsoportokTanevRendje OsztalyCsoportokTanevRendje ON OsztalyCsoportokTanevRendje.Datum = naptar.C_NAPDATUMA AND OsztalyCsoportokTanevRendje.OsztalyCsoportId = oo.C_OSZTALYCSOPORTID
LEFT JOIN T_TANITASIORA_OSSZES tao ON
naptar.C_NAPDATUMA=tao.C_DATUM
AND tao.C_OSZTALYCSOPORTID = oo.C_OSZTALYCSOPORTID
AND tao.C_TANTARGYID = oo.C_TANTARGYID
AND oo.C_TANARID IN (tao.C_TANARID, tao.C_HELYETTESITOTANARID, tao.C_ORATULAJDONOSID)
AND tao.C_HETNAPJA = oo.C_HETNAPJA
AND tao.C_ORASZAM = oo.C_ORASZAM
AND tao.C_DATUM BETWEEN oo.C_ORAERVENYESSEGKEZDETE AND oo.C_ORAERVENYESSEGVEGE
AND tao.TOROLT='F'
LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES hely ON hely.C_HELYETTESITETTORARENDID = oo.ID AND CAST(hely.C_HELYETTESITESNAPJA AS DATE) = naptar.C_NAPDATUMA
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = oo.C_TANARID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = oo.C_OSZTALYCSOPORTID
INNER JOIN T_TANTARGY_OSSZES t ON t.ID = oo.C_TANTARGYID
INNER JOIN T_TEREM_OSSZES ter ON ter.ID = oo.C_TEREMID
INNER JOIN (SELECT DISTINCT ID, C_NAME FROM T_DICTIONARYITEMBASE_OSSZES) d ON d.ID = oo.C_HETIREND
WHERE
oo.C_TANEVID=@tanevId
AND oo.TOROLT='F'
AND oo.C_TANARID = @tanarID
AND naptar.C_NAPDATUMA <= IIF(C_VEGZOSEVFOLYAM = 'T' AND @vegzosUtolsoNapDatuma < GETDATE(), @vegzosUtolsoNapDatuma, GETDATE())
AND tao.ID IS NULL
AND hely.ID IS NULL
AND oo.TOROLT='F'
AND (oo.C_TANORANKIVULIFOGLALKOZAS = 'F' OR oo.C_TANORANKIVULIFOGLALKOZAS IS NULL)
AND oo.C_CSENGETESIRENDORAID IS NOT NULL
AND naptar.C_TANEVID = @tanevID
AND (tr.C_ORARENDINAP = 'T' OR tr.C_ORARENDINAP IS NULL)
AND (OsztalyCsoportokTanevRendje.isOrarendiNap = 'T' OR OsztalyCsoportokTanevRendje.isOrarendiNap IS NULL)
UNION
SELECT
naptar.C_NAPDATUMA
,oo.C_ORASZAM
,ocs.C_NEV
,f.C_NYOMTATASINEV
,t.C_NEV
,ter.C_NEV
,d.C_NAME
FROM T_HELYETTESITESIIDOSZAK_OSSZES hi
INNER JOIN T_ORARENDIORA_OSSZES oo on oo.Id=hi.C_HELYETTESITETTORARENDID
INNER JOIN T_NAPTARINAP_OSSZES naptar on naptar.C_NAPDATUMA = CAST(hi.C_HELYETTESITESNAPJA AS DATE) AND naptar.C_TANEVID=hi.C_TANEVID AND naptar.C_INTEZMENYID=hi.C_INTEZMENYID
LEFT JOIN T_FELHASZNALO_OSSZES f ON oo.C_TANARID = f.ID
LEFT JOIN T_FELHASZNALO_OSSZES fh ON hi.C_HELYETTESTANAROKID = f.ID
LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID=oo.C_OSZTALYCSOPORTID
LEFT JOIN T_TANTARGY_OSSZES t ON t.ID=oo.C_TANTARGYID
LEFT JOIN T_TEREM_OSSZES ter ON ter.ID=oo.C_TEREMID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d on d.id=oo.C_HETIREND AND d.C_TANEVID=oo.C_TANEVID AND d.C_INTEZMENYID=oo.C_INTEZMENYID
WHERE
hi.C_HELYETTESITESNAPJA <= IIF(C_VEGZOSEVFOLYAM = 'T', @vegzosUtolsoNapDatuma, GETDATE())
AND hi.TOROLT='F'
AND (oo.C_TANORANKIVULIFOGLALKOZAS = 'F' OR oo.C_TANORANKIVULIFOGLALKOZAS IS NULL)
AND oo.C_CSENGETESIRENDORAID IS NOT NULL
AND oo.TOROLT='F'
AND hi.C_HELYETTESTANAROKID = @tanarID
AND NOT EXISTS (
SELECT 1 FROM T_ORARENDIORA ooo
JOIN T_TANITASIORA tao ON tao.C_ORARENDIORAGROUPID = ooo.C_ORARENDIORAGROUPID AND tao.C_DATUM BETWEEN ooo.C_ORAERVENYESSEGKEZDETE AND ooo.C_ORAERVENYESSEGVEGE
WHERE tao.C_DATUM = CAST(hi.C_HELYETTESITESNAPJA AS DATE) AND ooo.ID=hi.C_HELYETTESITETTORARENDID AND tao.TOROLT='F'
)
) orak
ORDER BY Napdatuma, Oraszam
END
GO