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