162 lines
6 KiB
Transact-SQL
162 lines
6 KiB
Transact-SQL
DROP PROCEDURE IF EXISTS dbo.uspGetHelyettesitesekAjanlasa
|
|
GO
|
|
|
|
CREATE PROCEDURE [dbo].[uspGetHelyettesitesekAjanlasa]
|
|
@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; DECLARE @Tulora CHAR(1);
|
|
SELECT @OraKezdet = C_ORAKEZDETE, @Oraveg = C_ORAVEGE , @helyettesitettTanarId = C_TANARID, @Tulora = C_TULORA 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
|
|
,OraKezdete datetime
|
|
,OraVege datetime
|
|
,Megtartott char(1)
|
|
,OsztalyNev nvarchar(255)
|
|
,HelyettesitoTanarID int
|
|
,HelyettesitesId int
|
|
,TanarID int
|
|
,TantargyId int
|
|
,OsztCsopId int
|
|
)
|
|
|
|
CREATE TABLE #HelyettesitoTanarok (
|
|
ID int
|
|
,TanarId int
|
|
,HelyettesitesTipusId int
|
|
,TantargyId int
|
|
,OsztalyCsoportId int
|
|
,TanarNev nvarchar(550)
|
|
,TanarOktatasiAzonosito nvarchar(40)
|
|
,TantargyNev nvarchar(510)
|
|
,OsztalycsoportNev nvarchar(255)
|
|
,HelyettesitettOrarendiOraId int
|
|
,HelyettesitesDatuma datetime
|
|
,Tulora char(1)
|
|
)
|
|
|
|
INSERT INTO #OrarendTable (
|
|
Id
|
|
,ORARENDIID
|
|
,OraKezdete
|
|
,OraVege
|
|
,Megtartott
|
|
,OsztalyNev
|
|
,HelyettesitoTanarID
|
|
,HelyettesitesId
|
|
,TanarID
|
|
,TantargyId
|
|
,OsztCsopId
|
|
)
|
|
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
|
|
,@pOszlopok = N'Id,ORARENDIID,OraKezdete,OraVege,Megtartott,OsztalyNev,HelyettesitoTanarID,HelyettesitesId,TanarID,TantargyId,OsztCsopId'
|
|
|
|
INSERT INTO #HelyettesitoTanarok
|
|
SELECT
|
|
NULL
|
|
,f.ID
|
|
,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 AND ma.C_BESOROLASIFOKOZAT = @pFokozatNa THEN '2'
|
|
WHEN ot.ID IS NOT NULL AND ot.ID = ot.ORARENDIID AND ot.HelyettesitesId IS NULL AND ma.C_BESOROLASIFOKOZAT != @pFokozatNa THEN '1'
|
|
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
|
|
,ot.TantargyId
|
|
,ot.OsztCsopId
|
|
,f.C_NYOMTATASINEV
|
|
,ISNULL(f.C_OKTATASIAZONOSITO, '-')
|
|
,t.C_NEV
|
|
,ot.OsztalyNev
|
|
,@pHelyettesitettOrarendiOraId
|
|
,@pHelyettesitesDatuma
|
|
,@Tulora
|
|
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 OR C_ALKALMAZASKEZDETE IS NULL) 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,f.C_OKTATASIAZONOSITO,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
|
|
,ISNULL(fh.C_OKTATASIAZONOSITO, '-')
|
|
,NULL
|
|
,NULL
|
|
,@pHelyettesitettOrarendiOraId
|
|
,@pHelyettesitesDatuma
|
|
,@Tulora AS Tulora
|
|
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 OR C_ALKALMAZASKEZDETE IS NULL) 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, TanarOktatasiAzonosito
|
|
|
|
END
|
|
GO
|