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

View file

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