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,159 @@
IF OBJECT_ID('[dbo].[sp_GetNaplozasMulasztasList]') IS NOT NULL BEGIN
DROP PROCEDURE [dbo].[sp_GetNaplozasMulasztasList]
END
GO
CREATE PROCEDURE [dbo].[sp_GetNaplozasMulasztasList]
@date datetime
,@oraId int
,@targyId int
,@osztalyCsoportId int
,@pCsakMegtartott bit
,@tanevElsoNapja datetime
,@tanevUtolsoNapja datetime
,@pTanevid int
,@pIntezmenyId int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @hetekSzama int = 36
DECLARE @tmpTanuloCsoport TABLE (C_TANULOID int PRIMARY KEY, C_OSZTALYCSOPORTID int, C_BELEPESDATUM datetime, C_KILEPESDATUM datetime)
DECLARE @tmpTanuloRelevansCsoportjai TABLE (C_TANULOID int, C_OSZTALYCSOPORTID int)
IF (SELECT C_VEGZOSEVFOLYAM FROM T_OSZTALYCSOPORT WHERE ID = @osztalyCsoportId) = 'T' BEGIN
SELECT @tanevUtolsoNapja = C_DATUM, @hetekSzama = 32
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_NAPTIPUSA = 1402
END
INSERT INTO @tmpTanuloCsoport (C_TANULOID, C_OSZTALYCSOPORTID, C_BELEPESDATUM, C_KILEPESDATUM)
SELECT DISTINCT tcs.C_TANULOID, tcs.C_OSZTALYCSOPORTID, tcs.C_BELEPESDATUM, ISNULL(tcs.C_KILEPESDATUM, @tanevUtolsoNapja) AS C_KILEPESDATUM
FROM T_TANULOCSOPORT tcs
WHERE tcs.torolt = 'F'
AND tcs.C_BELEPESDATUM <= @date AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @date)
AND tcs.c_osztalycsoportid = @osztalyCsoportId
INSERT INTO @tmpTanuloRelevansCsoportjai (C_TANULOID, C_OSZTALYCSOPORTID)
SELECT DISTINCT tcs.C_TANULOID, tcs.C_OSZTALYCSOPORTID
FROM T_TANULOCSOPORT tcs
INNER JOIN T_FOGLALKOZAS fog ON fog.C_TANTARGYID = @targyId AND fog.TOROLT = 'F' AND fog.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID
WHERE tcs.torolt = 'F'
AND tcs.C_BELEPESDATUM <= @date AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @date)
AND tcs.C_TANULOID IN (SELECT ttcs.C_TANULOID FROM @tmpTanuloCsoport ttcs)
DECLARE @tmpFeljegyzes TABLE (tanuloid int, tipus int, id int)
INSERT INTO @tmpFeljegyzes
SELECT tte.C_TANULOID, te.C_TIPUS, te.ID
FROM T_TANULOESEMENY te
INNER JOIN T_TANULO_TANULOESEMENY tte on tte.C_TANULOESEMENYID = te.ID
WHERE te.C_TANITASIORAID = @oraId
AND te.TOROLT = 'F'
CREATE TABLE #Result (
TanuloId int PRIMARY KEY
,Mulasztas int
,MegtartottOra int
,HatralevoOra int
)
EXEC [uspGetOsztalycsoportTantargyiMulasztasai] @osztalyCsoportId,@targyId,@pTanevid,@pIntezmenyId,@pCsakMegtartott
SELECT
ID
,MulasztasId
,TanuloNev
,MulasztasTipus
,KesesIdo
,Oka
,MAX(ErtkelesMentesseg) ErtkelesMentesseg
,MAX(OraMentesseg) OraMentesseg
,MAX(SzovegesenErtekelheto) SzovegesenErtekelheto
,IsMagantanulo
,GondviseloNev
,GondviseloTelSzam
,MAX(Igazolt) Igazolt
,ISNULL(tmpHianyCnt, 0) as MulasztasHianyCnt
,ISNULL(tmpOsszCnt, 0) as MulasztasOsszCnt
,ISNULL(tmpMegtartottOraCnt, 0) as MulasztasMegtartottCnt
,ISNULL(tmpHatralevoOraCnt, 0) as MulasztasMegtarthatoCnt
,IIF(tmpOsszCnt = 0,0, ISNULL(CAST((CAST(tmpHianyCnt AS FLOAT) / CAST(tmpOsszCnt AS FLOAT)) * 100 as int), 0)) as MulasztasSzazalek
,IIF(Hazifeladat IS NOT NULL,'T','F') as HaziFeladatHiany
,Hazifeladat as HaziFeladatHianyId
,IIF(Felszereles IS NOT NULL,'T','F') as FelszerelesHiany
,Felszereles as FelszerelesHianyId
,IIF(Felment IS NOT NULL,'T','F') as Felmentes
,Felment as FelmentesId
,IIF(Dicseret IS NOT NULL,'T','F') as TanoraiDicseret
,Dicseret as TanoraiDicseretId
,RogzitettIgazolas as RogzitettIgazolas
FROM (
SELECT
T_FELHASZNALO.ID AS ID
,T_TANULOMULASZTAS.ID MulasztasId
,T_FELHASZNALO.C_NYOMTATASINEV + ' (' + CONVERT(nvarchar(50),T_FELHASZNALO.C_SZULETESIDATUM,102) + ')' TanuloNev
,isnull(T_TANULOMULASZTAS.C_TIPUS, 1498) MulasztasTipus
,T_TANULOMULASZTAS.C_KESESPERCBEN KesesIdo
,STUFF((
SELECT DISTINCT ' | ' + tm2.C_MENTESSEGOKA
FROM T_TANULOMENTESSEG tm2
WHERE tm2.C_TANULOID = T_TANULO.ID
AND tm2.C_TANTARGYID = tm.C_TANTARGYID
FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,3,''
) AS Oka
,tm.C_ERTEKELESMENTESITES ErtkelesMentesseg
,tm.C_ORAMENTESITES OraMentesseg
,tm.C_SZOVEGESENERTEKELHETO SzovegesenErtekelheto
,T_TANULO.C_MAGANTANULO IsMagantanulo
,ISNULL(gondviselo.C_NEV,'-') as GondviseloNev
,ISNULL(telefon.C_TELEFONSZAM,'-') as GondviseloTelSzam
,T_TANULOMULASZTAS.C_IGAZOLT as Igazolt
,ISNULL(r.MegtartottOra,0) + ISNULL(r.HatralevoOra,0) as tmpOsszCnt
,r.Mulasztas as tmpHianyCnt
,r.MegtartottOra as tmpMegtartottOraCnt
,r.HatralevoOra as tmpHatralevoOraCnt
,tmpFeljegyzesHazifeladat.id as Hazifeladat
,tmpFeljegyzesFelszereles.id as Felszereles
,tmpFeljegyzesFelment.id as Felment
,tmpFeljegyzesDicseret.id as Dicseret
,IIF(i.ID IS NOT NULL, 'T', 'F') as RogzitettIgazolas
FROM @tmpTanuloCsoport tcs
INNER JOIN T_FELHASZNALO on T_FELHASZNALO.ID = tcs.C_TANULOID
INNER JOIN T_TANULO on T_TANULO.id = tcs.C_TANULOID and ( T_TANULO.C_SZAKMAIGYAKORLATON <> 'T' OR T_TANULO.C_SZAKMAIGYAKORLATON IS NULL) AND ( T_TANULO.C_JOGVISZONYATSZUNETELTETO <> 'T' OR T_TANULO.C_JOGVISZONYATSZUNETELTETO IS NULL)
LEFT JOIN T_GONDVISELO gondviselo ON gondviselo.ID = (SELECT MIN(ID) FROM T_GONDVISELO WHERE C_TANULOID = T_TANULO.ID)
OUTER APPLY (SELECT TOP 1 t.C_TELEFONSZAM FROM T_TELEFON t WHERE t.C_GONDVISELOID = gondviselo.ID ORDER BY C_ALAPERTELMEZETT DESC) telefon
LEFT JOIN T_TANULOMULASZTAS on T_TANULOMULASZTAS.C_ORATANULOIID = T_FELHASZNALO.ID and T_TANULOMULASZTAS.C_TANITASIORAKID = @oraId AND T_TANULOMULASZTAS.TOROLT = 'F'
LEFT JOIN T_TANULOMENTESSEG tm on T_FELHASZNALO.ID = tm.C_TANULOID and tm.TOROLT = 'F' and tm.C_TANTARGYID = @targyId and (@date between isnull(tm.C_KEZDETE, @date) and isnull(tm.C_VEGE, @date))
LEFT JOIN T_IGAZOLAS i ON T_FELHASZNALO.ID = i.C_TANULOID AND i.TOROLT = 'F' AND (@date between isnull(i.C_KEZDETE, @date) and isnull(i.C_VEGE, @date))
LEFT JOIN #Result r ON r.TanuloId = T_FELHASZNALO.ID
LEFT JOIN @tmpFeljegyzes tmpFeljegyzesHazifeladat ON tmpFeljegyzesHazifeladat.tanuloId = T_FELHASZNALO.ID AND tmpFeljegyzesHazifeladat.tipus = 6325
LEFT JOIN @tmpFeljegyzes tmpFeljegyzesFelszereles ON tmpFeljegyzesFelszereles.tanuloId = T_FELHASZNALO.ID AND tmpFeljegyzesFelszereles.tipus = 6324
LEFT JOIN @tmpFeljegyzes tmpFeljegyzesFelment ON tmpFeljegyzesFelment.tanuloId = T_FELHASZNALO.ID AND tmpFeljegyzesFelment.tipus = 1542
LEFT JOIN @tmpFeljegyzes tmpFeljegyzesDicseret ON tmpFeljegyzesDicseret.tanuloId = T_FELHASZNALO.ID AND tmpFeljegyzesDicseret.tipus = 1536
) AS x
GROUP BY
ID,
MulasztasId,
TanuloNev,
MulasztasTipus,
IsMagantanulo,
Oka,
KesesIdo,
GondviseloNev,
GondviseloTelSzam,
tmpOsszCnt,
tmpHianyCnt,
tmpMegtartottOraCnt,
tmpHatralevoOraCnt,
Hazifeladat,
Felszereles,
Felment,
Dicseret,
RogzitettIgazolas
ORDER BY x.TanuloNev
IF OBJECT_ID('tempdb..#Result') IS NOT NULL BEGIN
DROP TABLE #Result
END
END

View file

@ -0,0 +1,178 @@
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 @createTmpTable bit = 0;
IF OBJECT_ID('tempdb..#OsztalyTanuloi') IS NOT NULL BEGIN
DROP TABLE #OsztalyTanuloi
END
CREATE TABLE #OsztalyTanuloi (
TanuloId int PRIMARY KEY
,Belepes datetime
,Kilepes datetime
--,CONSTRAINT PK_OsztalyTanuloi PRIMARY KEY (TanuloId)
)
INSERT INTO #OsztalyTanuloi (TanuloId/*, Belepes, Kilepes*/)
SELECT DISTINCT C_TANULOID--, C_BELEPESDATUM, ISNULL(C_KILEPESDATUM, '21000101')
FROM T_TANULOCSOPORT_OSSZES
WHERE C_OSZTALYCSOPORTID = @pOsztalyId
AND C_TANEVID = @pTanevId
AND TOROLT = 'F'
IF OBJECT_ID('tempdb..#Result') IS NULL BEGIN
SET @createTmpTable = 1;
CREATE TABLE #Result (
TanuloId int PRIMARY KEY
,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)) / 45) AS Mulasztas
,COUNT(DISTINCT tn.ID) AS MegtartottOra
,NULL 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(@createTmpTable = 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
,@pOsztalyCsoportId = @pOsztalyId
,@pTanuloId = 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')
WHERE oo.TantargyId = @pTantargyId
GROUP BY ot.TanuloId
) o ON o.TanuloId = r.TanuloId
IF(@createTmpTable = 1)
BEGIN
SELECT
TanuloId
,Mulasztas
,MegtartottOra
,HatralevoOra
FROM #Result
END
END
IF OBJECT_ID('tempdb..#OsztalyTanuloi') IS NOT NULL BEGIN
DROP TABLE #OsztalyTanuloi
END
IF OBJECT_ID('tempdb..#OrarendTable') IS NOT NULL BEGIN
DROP TABLE #OrarendTable
END
END
GO